git.delta.rocks / unique-network / refs/commits / 7f428c48e2d7

difftreelog

ci give money to alice on fork

Yaroslav Bolyukin2022-08-18parent: #b38709b.patch.diff
in: master

2 files changed

modified.docker/forkless-config/fork.jsonnetdiffbeforeafterboth
before · .docker/forkless-config/fork.jsonnet
12function(rawSpec, forkFrom)3local sourceChain = cql.chain(forkFrom).latest;45local raw = local sourceRaw = sourceChain._raw._preloadKeys; {6  [key]: cql.toHex(sourceRaw[key])7  for key in std.objectFields(sourceRaw)8  if sourceRaw[key] != null9};1011local12auraKeys = [13	// AuraExt.Authorities, we don't have aura pallet enabled for some reason, to refer using cql api14	'0x3c311d57d4daf52904616cf69648081e5e0621c4869aa60c02be9adcc98a0d1d',15	// Aura.Authorities16	'0x57f8dc2f5ab09467896f47300f0424385e0621c4869aa60c02be9adcc98a0d1d',17],1819// Keys, which should be migrated from passed spec, rather than from forked chain20wantedKeys = [21	sourceChain.ParachainInfo._key.ParachainId,22	sourceChain.Sudo._key.Key,23	sourceChain.System.BlockHash._key['0'],24	sourceChain.System._key.ParentHash,25] + auraKeys,2627// Keys to remove from original chain28unwantedPrefixes = [29	// Aura.CurrentSlot30	'0x57f8dc2f5ab09467896f47300f04243806155b3cd9a8c9e5e9a23fd5dc13a5ed',31	// Ensure there will be no panics caused by unexpected kept state32	sourceChain.ParachainSystem._key.ValidationData,33	sourceChain.ParachainSystem._key.RelayStateProof,34	sourceChain.ParachainSystem._key.HostConfiguration,35	sourceChain.ParachainSystem._key.LastDmqMqcHead,36	// Part of head37	sourceChain.System._key.BlockHash,38	sourceChain.System._key.Number,39	sourceChain.System._key.Digest,40] + auraKeys,4142cleanupRaw(raw) = {43	[key]: raw[key]44	for key in std.objectFields(raw)45	if std.all(std.map(function(prefix) !std.startsWith(key, prefix), unwantedPrefixes))46};4748local originalRaw = rawSpec.genesis.raw.top;49local outSpec = rawSpec {50	genesis+: {51		raw+: {52			top: cleanupRaw(raw) {53				[key]: originalRaw[key]54				for key in wantedKeys55			},56		},57	},58};59outSpec
after · .docker/forkless-config/fork.jsonnet
12function(rawSpec, forkFrom)3local sourceChain = cql.chain(forkFrom).latest;45local raw = local sourceRaw = sourceChain._raw._preloadKeys; {6  [key]: cql.toHex(sourceRaw[key])7  for key in std.objectFields(sourceRaw)8  if sourceRaw[key] != null9};1011local typeNames = (import './typeNames.jsonnet')(sourceChain);1213local14auraKeys = [15	// AuraExt.Authorities, we don't have aura pallet enabled for some reason, to refer using cql api16	'0x3c311d57d4daf52904616cf69648081e5e0621c4869aa60c02be9adcc98a0d1d',17	// Aura.Authorities18	'0x57f8dc2f5ab09467896f47300f0424385e0621c4869aa60c02be9adcc98a0d1d',19],2021// Keys, which should be migrated from passed spec, rather than from forked chain22wantedKeys = [23	sourceChain.ParachainInfo._key.ParachainId,24	sourceChain.Sudo._key.Key,25	sourceChain.System.BlockHash._key['0'],26	sourceChain.System._key.ParentHash,27] + auraKeys,2829// Keys to remove from original chain30unwantedPrefixes = [31	// Aura.CurrentSlot32	'0x57f8dc2f5ab09467896f47300f04243806155b3cd9a8c9e5e9a23fd5dc13a5ed',33	// Ensure there will be no panics caused by unexpected kept state34	sourceChain.ParachainSystem._key.ValidationData,35	sourceChain.ParachainSystem._key.RelayStateProof,36	sourceChain.ParachainSystem._key.HostConfiguration,37	sourceChain.ParachainSystem._key.LastDmqMqcHead,38	// Part of head39	sourceChain.System._key.BlockHash,40	sourceChain.System._key.Number,41	sourceChain.System._key.Digest,42] + auraKeys,4344cleanupRaw(raw) = {45	[key]: raw[key]46	for key in std.objectFields(raw)47	if std.all(std.map(function(prefix) !std.startsWith(key, prefix), unwantedPrefixes))48};495051local originalRaw = rawSpec.genesis.raw.top;52local outSpec = rawSpec {53	genesis+: {54		raw+: {55			top: cleanupRaw(raw) {56				[key]: originalRaw[key]57				for key in wantedKeys58				if std.objectHas(originalRaw, key)59			},60		},61	},62};6364local65	aliceAccount = sourceChain.System._encodeKey.Account(['0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d']),66	totalIssuance = sourceChain.Balances._encodeKey.TotalIssuance([]),67 	unique = cql.calc(["10", "18", "**"]),68 	Munique = cql.calc([unique, "10", "6", "**", "*"]),69;7071outSpec {72	genesis+: {73		raw+: {74			top+: {75				[totalIssuance]: cql.calc([76					Munique,77					if std.objectHas(super, totalIssuance) then sourceChain._decode(typeNames.u128, super[totalIssuance]) else '0',78					if std.objectHas(super, aliceAccount) then sourceChain._decode(typeNames.AccountInfo, super[aliceAccount]).data.free else '0',79					'-', '+',80				]),81				[aliceAccount]: sourceChain._encode(typeNames.AccountInfo, {82					nonce: 0,83					consumers: 3,84					providers: 1,85					sufficients: 0,86					data: {87						free: Munique,88						reserved: "0",89						misc_frozen: "0",90						fee_frozen: "0",91					},92				},)93			},94		},95	},96}
added.docker/forkless-config/typeNames.jsonnetdiffbeforeafterboth
--- /dev/null
+++ b/.docker/forkless-config/typeNames.jsonnet
@@ -0,0 +1,51 @@
+function(chain)
+local
+	typeName(id) = local
+		ty = chain._meta.types.types[id],
+		name = if std.objectHas(ty.type, "path") then
+			std.join('::', ty.type.path)
+		else if std.objectHas(ty.type.def, "primitive") then ty.type.def.primitive
+		else if std.objectHas(ty.type.def, "tuple") then "(" + std.join(', ', std.map(typeName, ty.type.def.tuple)) + ")"
+		else if std.objectHas(ty.type.def, "sequence") then "Vec<" + typeName(ty.type.def.sequence.type) + ">"
+		else if std.objectHas(ty.type.def, "array") then "[" + typeName(ty.type.def.array.type) + "; " + ty.type.def.array.len + "]"
+		else if std.objectHas(ty.type.def, "compact") then "Compact<" + typeName(ty.type.def.compact.type) + ">"
+		else error "Can't generate useable name for " + ty.type,
+		generics = if std.objectHas(ty.type, "params") then
+			'<' + std.join(', ', std.map(function(p) if p.type == null then 'Spec#'+id else typeName(p.type), ty.type.params)) + '>'
+		else ''
+	; name + generics,
+	shortenPrefix(obj, prefix, short) = {
+		[short]: obj[field]
+		for field in std.objectFields(obj)
+		// There should be at most one element with this prefix
+		if std.startsWith(field, prefix)
+	},
+;
+
+local typesRaw = {
+	[typeName(id)]: id
+	for id in std.range(0, std.length(chain._meta.types.types)-1)
+};
+
+local types = typesRaw + shortenPrefix(typesRaw, 'frame_system::AccountInfo<', 'AccountInfo');
+
+types
+// local
+// ;
+
+// local encoded = chain._encode(types['AccountInfo'], {
+// 	nonce: 0,
+// 	consumers: 3,
+// 	providers: 1,
+// 	sufficients: 0,
+// 	data: {
+// 		free: Munique,
+// 		reserved: "0",
+// 		misc_frozen: "0",
+// 		fee_frozen: "0",
+// 	},
+// });
+
+// local systemAccount = chain._decode(types['AccountInfo'], encoded);
+
+// chain.System._encodeKey.Account(['0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d'])