@polkadot-api/merkleize-metadata 1.1.1 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -3
- package/dist/esm/get-metadata.mjs +4 -26
- package/dist/esm/get-metadata.mjs.map +1 -1
- package/dist/esm/main.mjs +35 -3
- package/dist/esm/main.mjs.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +38 -28
- package/dist/index.js.map +1 -1
- package/package.json +5 -3
package/README.md
CHANGED
|
@@ -11,9 +11,6 @@ import { merkleizeMetadata } from "@polkadot-api/merkleized-metadata"
|
|
|
11
11
|
const ksmMetadata = new Uint8Array(await readFile("ksm.bin"))
|
|
12
12
|
const merkleizedMetadata = merkleizeMetadata(ksmMetadata, {
|
|
13
13
|
decimals: 12,
|
|
14
|
-
specName: "kusama",
|
|
15
|
-
base58Prefix: 2,
|
|
16
|
-
specVersion: 1_002_006,
|
|
17
14
|
tokenSymbol: "KSM",
|
|
18
15
|
})
|
|
19
16
|
|
|
@@ -1,32 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { decAnyMetadata } from '@polkadot-api/substrate-bindings';
|
|
2
2
|
|
|
3
|
-
const opaqueBytes = Bytes();
|
|
4
|
-
const optionOpaque = Option(opaqueBytes);
|
|
5
|
-
const opaqueOpaqueBytes = Tuple(compact, opaqueBytes);
|
|
6
|
-
const getAnyMetadata = (input) => {
|
|
7
|
-
try {
|
|
8
|
-
return metadata.dec(input);
|
|
9
|
-
} catch (_) {
|
|
10
|
-
}
|
|
11
|
-
try {
|
|
12
|
-
return metadata.dec(optionOpaque.dec(input));
|
|
13
|
-
} catch (_) {
|
|
14
|
-
}
|
|
15
|
-
try {
|
|
16
|
-
return metadata.dec(opaqueBytes.dec(input));
|
|
17
|
-
} catch (_) {
|
|
18
|
-
}
|
|
19
|
-
try {
|
|
20
|
-
return metadata.dec(opaqueOpaqueBytes.dec(input)[1]);
|
|
21
|
-
} catch (_) {
|
|
22
|
-
}
|
|
23
|
-
throw null;
|
|
24
|
-
};
|
|
25
3
|
const getMetadata = (input) => {
|
|
26
4
|
try {
|
|
27
|
-
const { metadata
|
|
28
|
-
if (
|
|
29
|
-
return
|
|
5
|
+
const { metadata } = decAnyMetadata(input);
|
|
6
|
+
if (metadata.tag !== "v15") throw new Error("Wrong metadata version");
|
|
7
|
+
return metadata.value;
|
|
30
8
|
} catch (e) {
|
|
31
9
|
throw e || new Error("Unable to decode metadata");
|
|
32
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-metadata.mjs","sources":["../../src/get-metadata.ts"],"sourcesContent":["import {\n
|
|
1
|
+
{"version":3,"file":"get-metadata.mjs","sources":["../../src/get-metadata.ts"],"sourcesContent":["import {\n decAnyMetadata,\n type HexString,\n type V15,\n} from \"@polkadot-api/substrate-bindings\"\n\nexport const getMetadata = (input: Uint8Array | HexString): V15 => {\n try {\n const { metadata } = decAnyMetadata(input)\n if (metadata.tag !== \"v15\") throw new Error(\"Wrong metadata version\")\n return metadata.value\n } catch (e) {\n throw e || new Error(\"Unable to decode metadata\")\n }\n}\n"],"names":[],"mappings":";;AAMa,MAAA,WAAA,GAAc,CAAC,KAAuC,KAAA;AACjE,EAAI,IAAA;AACF,IAAA,MAAM,EAAE,QAAA,EAAa,GAAA,cAAA,CAAe,KAAK,CAAA,CAAA;AACzC,IAAA,IAAI,SAAS,GAAQ,KAAA,KAAA,EAAa,MAAA,IAAI,MAAM,wBAAwB,CAAA,CAAA;AACpE,IAAA,OAAO,QAAS,CAAA,KAAA,CAAA;AAAA,WACT,CAAG,EAAA;AACV,IAAM,MAAA,CAAA,IAAK,IAAI,KAAA,CAAM,2BAA2B,CAAA,CAAA;AAAA,GAClD;AACF;;;;"}
|
package/dist/esm/main.mjs
CHANGED
|
@@ -6,9 +6,41 @@ import { getMetadata } from './get-metadata.mjs';
|
|
|
6
6
|
import { compactTypeRefs, mergeUint8, toBytes } from './utils.mjs';
|
|
7
7
|
import { decodeAndCollectKnownLeafs } from './decode-and-collect.mjs';
|
|
8
8
|
import { getProofData } from './proof.mjs';
|
|
9
|
+
import { getDynamicBuilder, getLookupFn } from '@polkadot-api/metadata-builders';
|
|
9
10
|
|
|
10
|
-
const
|
|
11
|
+
const assertExpected = (name, expected, received) => {
|
|
12
|
+
if (received != null && received !== expected)
|
|
13
|
+
throw new Error(
|
|
14
|
+
`${name} not expected. Received ${received} expected ${expected}`
|
|
15
|
+
);
|
|
16
|
+
};
|
|
17
|
+
const merkleizeMetadata = (metadataBytes, {
|
|
18
|
+
decimals,
|
|
19
|
+
tokenSymbol,
|
|
20
|
+
...hinted
|
|
21
|
+
}) => {
|
|
11
22
|
const metadata = getMetadata(metadataBytes);
|
|
23
|
+
const { ss58Prefix, buildDefinition } = getDynamicBuilder(
|
|
24
|
+
getLookupFn(metadata)
|
|
25
|
+
);
|
|
26
|
+
if (ss58Prefix == null) throw new Error("SS58 prefix not found in metadata");
|
|
27
|
+
assertExpected("SS58 prefix", ss58Prefix, hinted.base58Prefix);
|
|
28
|
+
const version = metadata.pallets.find((x) => x.name === "System")?.constants.find((x) => x.name === "Version");
|
|
29
|
+
if (version == null) throw new Error("System.Version constant not found");
|
|
30
|
+
const { spec_name: specName, spec_version: specVersion } = buildDefinition(
|
|
31
|
+
version.type
|
|
32
|
+
).dec(version.value);
|
|
33
|
+
if (typeof specName !== "string" || typeof specVersion !== "number")
|
|
34
|
+
throw new Error("Spec name or spec version not found");
|
|
35
|
+
assertExpected("Spec name", specName, hinted.specName);
|
|
36
|
+
assertExpected("Spec version", specVersion, hinted.specVersion);
|
|
37
|
+
const info = {
|
|
38
|
+
decimals,
|
|
39
|
+
tokenSymbol,
|
|
40
|
+
specVersion,
|
|
41
|
+
specName,
|
|
42
|
+
base58Prefix: ss58Prefix
|
|
43
|
+
};
|
|
12
44
|
const definitions = new Map(
|
|
13
45
|
metadata.lookup.map((value) => [value.id, value])
|
|
14
46
|
);
|
|
@@ -111,8 +143,8 @@ const merkleizeMetadata = (metadataBytes, info) => {
|
|
|
111
143
|
return getProofForExtrinsicPayload(bytes);
|
|
112
144
|
};
|
|
113
145
|
const getProofForExtrinsic = (transaction, txAdditionalSigned) => {
|
|
114
|
-
let [, { version, signed }, bytes] = extrinsicDec(transaction);
|
|
115
|
-
if (
|
|
146
|
+
let [, { version: version2, signed }, bytes] = extrinsicDec(transaction);
|
|
147
|
+
if (version2 !== extrinsic.version)
|
|
116
148
|
throw new Error("Incorrect extrinsic version");
|
|
117
149
|
const typeRefs = signed ? [
|
|
118
150
|
extrinsic.addressTy,
|
package/dist/esm/main.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.mjs","sources":["../../src/main.ts"],"sourcesContent":["import {\n Blake3256,\n HexString,\n compact,\n u32,\n} from \"@polkadot-api/substrate-bindings\"\nimport {\n ExtraInfo,\n ExtrinsicMetadata,\n LookupValue,\n MetadataDigest,\n ScalePrimitive,\n TypeRef,\n extraInfo,\n extrinsicMetadata,\n lookupType,\n metadataDigest,\n extrinsicDec,\n} from \"./codecs\"\nimport { getAccessibleTypes } from \"./get-accessible-types\"\nimport { getLookup } from \"./get-lookup\"\nimport { getMetadata } from \"./get-metadata\"\nimport { compactTypeRefs, mergeUint8, toBytes } from \"./utils\"\nimport { decodeAndCollectKnownLeafs } from \"./decode-and-collect\"\nimport { getProofData } from \"./proof\"\n\nexport interface MetadataMerkleizer {\n /**\n * @returns Digest value of the metadata (aka its merkleized root-hash)\n */\n digest: () => Uint8Array\n\n /**\n * Get proof for an `Extrinsic`.\n *\n * @param transaction Encoded `Extrinsic`, both signed or unsigned.\n * @param txAdditionalSigned Optionally collect types for given\n * `additionalSigned` part of signedExtensions.\n * @returns Encoded `Proof`\n */\n getProofForExtrinsic: (\n transaction: Uint8Array | HexString,\n txAdditionalSigned?: Uint8Array | HexString,\n ) => Uint8Array\n\n /**\n * Get proof for `ExtrinsicPayload` parts.\n *\n * @param callData Call data of the transaction. It has to be\n * bare; i.e.\n * without prepended compact length.\n * @param includedInExtrinsic Extra part of the signed extensions, all of\n * them concatenated.\n * @param includedInSignedData Additional signed part of the signed\n * extensions, all of them concatenated.\n * @returns Encoded `Proof`\n */\n getProofForExtrinsicParts: (\n callData: Uint8Array | HexString,\n includedInExtrinsic: Uint8Array | HexString,\n includedInSignedData: Uint8Array | HexString,\n ) => Uint8Array\n\n /**\n * Get proof for `ExtrinsicPayload`.\n *\n * @param extrinsicPayload Call data, extra part of signedExtensions and\n * additional signed part of signedExtensions\n * concatenated. It has to be bare; i.e. without\n * prepended compact length.\n * @returns Encoded `Proof`\n */\n getProofForExtrinsicPayload: (\n extrinsicPayload: Uint8Array | HexString,\n ) => Uint8Array\n}\n\nexport const merkleizeMetadata = (\n metadataBytes: Uint8Array | HexString,\n info: ExtraInfo,\n): MetadataMerkleizer => {\n const metadata = getMetadata(metadataBytes)\n\n const definitions = new Map<number, LookupValue>(\n metadata.lookup.map((value) => [value.id, value]),\n )\n const accessibleTypes = getAccessibleTypes(metadata, definitions)\n const getPrimitive = (frameId: number): ScalePrimitive[\"tag\"] | null => {\n const {\n def: { tag, value },\n } = definitions.get(frameId)!\n\n if (tag === \"primitive\") return value.tag\n\n if ((tag !== \"composite\" && tag !== \"tuple\") || value.length > 1)\n throw new Error(\"The provided definition doesn't map to a primitive\")\n\n return value.length === 0\n ? null // signals `void`\n : getPrimitive(tag === \"tuple\" ? value[0] : value[0].type)\n }\n\n const getTypeRef = (frameId: number): TypeRef => {\n const { def } = definitions.get(frameId)!\n\n if (def.tag === \"primitive\") return { tag: def.value.tag, value: undefined }\n\n if (def.tag === \"compact\") {\n const primitive = getPrimitive(def.value)\n const tag = compactTypeRefs[primitive as \"u8\"]\n if (!tag) throw new Error(\"Invalid primitive for Compact\")\n return { tag, value: undefined }\n }\n\n return accessibleTypes.has(frameId)\n ? { tag: \"perId\", value: accessibleTypes.get(frameId)! }\n : { tag: \"void\", value: undefined }\n }\n\n const extrinsic: ExtrinsicMetadata = {\n version: metadata.extrinsic.version,\n addressTy: getTypeRef(metadata.extrinsic.address),\n callTy: getTypeRef(metadata.extrinsic.call),\n signatureTy: getTypeRef(metadata.extrinsic.signature),\n signedExtensions: metadata.extrinsic.signedExtensions.map((se) => ({\n identifier: se.identifier,\n includedInExtrinsic: getTypeRef(se.type),\n includedInSignedData: getTypeRef(se.additionalSigned),\n })),\n }\n\n const lookup = getLookup(\n definitions,\n accessibleTypes,\n getTypeRef,\n getPrimitive,\n )\n const lookupEncoded = lookup.map(lookupType.enc)\n\n let hashTree: Array<Uint8Array> | undefined\n const getHashTree = (): Array<Uint8Array> => {\n if (hashTree) return hashTree\n\n if (!lookupEncoded.length) return (hashTree = [new Uint8Array(32).fill(0)])\n\n hashTree = new Array(lookupEncoded.length * 2 - 1)\n\n let leavesStartIdx = lookupEncoded.length - 1\n for (let i = 0; i < lookupEncoded.length; i++)\n hashTree[leavesStartIdx + i] = Blake3256(lookupEncoded[i])\n\n for (let i = hashTree.length - 2; i > 0; i -= 2)\n hashTree[(i - 1) / 2] = Blake3256(\n mergeUint8([hashTree[i], hashTree[i + 1]]),\n )\n\n return hashTree\n }\n\n let digested: undefined | Uint8Array\n const digest = () => {\n if (digested) return digested\n const rootLookupHash = getHashTree()[0]\n\n const digest: MetadataDigest = {\n tag: \"V1\",\n value: {\n typeInformationTreeRoot: rootLookupHash,\n extrinsicMetadataHash: Blake3256(extrinsicMetadata.enc(extrinsic)),\n ...info,\n },\n }\n\n return (digested = Blake3256(metadataDigest.enc(digest)))\n }\n\n const generateProof = (knownIndexes: number[]) => {\n const proofData = getProofData(lookupEncoded, knownIndexes)\n\n const hashTree = getHashTree()\n const proofs = proofData.proofIdxs.map((idx) => hashTree[idx])\n\n return mergeUint8([\n compact.enc(proofData.leaves.length),\n ...proofData.leaves,\n compact.enc(proofData.leafIdxs.length),\n ...proofData.leafIdxs.map((x) => u32.enc(x)),\n compact.enc(proofs.length),\n ...proofs,\n extrinsicMetadata.enc(extrinsic),\n extraInfo.enc(info),\n ])\n }\n\n const getProofForExtrinsicPayload = (\n extrinsicPayload: Uint8Array | HexString,\n ) => {\n const typeRefs: Array<TypeRef> = [\n extrinsic.callTy,\n ...extrinsic.signedExtensions.map((x) => x.includedInExtrinsic),\n ...extrinsic.signedExtensions.map((x) => x.includedInSignedData),\n ]\n return generateProof(\n decodeAndCollectKnownLeafs(extrinsicPayload, typeRefs, lookup),\n )\n }\n\n const getProofForExtrinsicParts = (\n callData: Uint8Array | HexString,\n includedInExtrinsic: Uint8Array | HexString,\n includedInSignedData: Uint8Array | HexString,\n ) => {\n const bytes = mergeUint8(\n [callData, includedInExtrinsic, includedInSignedData].map(toBytes),\n )\n return getProofForExtrinsicPayload(bytes)\n }\n\n const getProofForExtrinsic = (\n transaction: Uint8Array | HexString,\n txAdditionalSigned?: Uint8Array | HexString,\n ) => {\n let [, { version, signed }, bytes] = extrinsicDec(transaction)\n\n if (version !== extrinsic.version)\n throw new Error(\"Incorrect extrinsic version\")\n\n const typeRefs: TypeRef[] = signed\n ? [\n extrinsic.addressTy,\n extrinsic.signatureTy,\n ...extrinsic.signedExtensions.map((x) => x.includedInExtrinsic),\n extrinsic.callTy,\n ]\n : [extrinsic.callTy]\n\n if (txAdditionalSigned) {\n bytes = mergeUint8([bytes, toBytes(txAdditionalSigned)])\n typeRefs.push(\n ...extrinsic.signedExtensions.map((x) => x.includedInSignedData),\n )\n }\n\n return generateProof(decodeAndCollectKnownLeafs(bytes, typeRefs, lookup))\n }\n\n return {\n digest,\n getProofForExtrinsic,\n getProofForExtrinsicParts,\n getProofForExtrinsicPayload,\n }\n}\n"],"names":["digest","hashTree"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"main.mjs","sources":["../../src/main.ts"],"sourcesContent":["import {\n Blake3256,\n HexString,\n compact,\n u32,\n} from \"@polkadot-api/substrate-bindings\"\nimport {\n ExtraInfo,\n ExtrinsicMetadata,\n LookupValue,\n MetadataDigest,\n ScalePrimitive,\n TypeRef,\n extraInfo,\n extrinsicMetadata,\n lookupType,\n metadataDigest,\n extrinsicDec,\n} from \"./codecs\"\nimport { getAccessibleTypes } from \"./get-accessible-types\"\nimport { getLookup } from \"./get-lookup\"\nimport { getMetadata } from \"./get-metadata\"\nimport { compactTypeRefs, mergeUint8, toBytes } from \"./utils\"\nimport { decodeAndCollectKnownLeafs } from \"./decode-and-collect\"\nimport { getProofData } from \"./proof\"\nimport { getDynamicBuilder, getLookupFn } from \"@polkadot-api/metadata-builders\"\n\nexport interface MetadataMerkleizer {\n /**\n * @returns Digest value of the metadata (aka its merkleized root-hash)\n */\n digest: () => Uint8Array\n\n /**\n * Get proof for an `Extrinsic`.\n *\n * @param transaction Encoded `Extrinsic`, both signed or unsigned.\n * @param txAdditionalSigned Optionally collect types for given\n * `additionalSigned` part of signedExtensions.\n * @returns Encoded `Proof`\n */\n getProofForExtrinsic: (\n transaction: Uint8Array | HexString,\n txAdditionalSigned?: Uint8Array | HexString,\n ) => Uint8Array\n\n /**\n * Get proof for `ExtrinsicPayload` parts.\n *\n * @param callData Call data of the transaction. It has to be\n * bare; i.e.\n * without prepended compact length.\n * @param includedInExtrinsic Extra part of the signed extensions, all of\n * them concatenated.\n * @param includedInSignedData Additional signed part of the signed\n * extensions, all of them concatenated.\n * @returns Encoded `Proof`\n */\n getProofForExtrinsicParts: (\n callData: Uint8Array | HexString,\n includedInExtrinsic: Uint8Array | HexString,\n includedInSignedData: Uint8Array | HexString,\n ) => Uint8Array\n\n /**\n * Get proof for `ExtrinsicPayload`.\n *\n * @param extrinsicPayload Call data, extra part of signedExtensions and\n * additional signed part of signedExtensions\n * concatenated. It has to be bare; i.e. without\n * prepended compact length.\n * @returns Encoded `Proof`\n */\n getProofForExtrinsicPayload: (\n extrinsicPayload: Uint8Array | HexString,\n ) => Uint8Array\n}\n\nconst assertExpected = <T>(name: string, expected: T, received?: T): void => {\n if (received != null && received !== expected)\n throw new Error(\n `${name} not expected. Received ${received} expected ${expected}`,\n )\n}\n\nexport const merkleizeMetadata = (\n metadataBytes: Uint8Array | HexString,\n {\n decimals,\n tokenSymbol,\n ...hinted\n }: { decimals: number; tokenSymbol: string } & Partial<ExtraInfo>,\n): MetadataMerkleizer => {\n const metadata = getMetadata(metadataBytes)\n const { ss58Prefix, buildDefinition } = getDynamicBuilder(\n getLookupFn(metadata),\n )\n if (ss58Prefix == null) throw new Error(\"SS58 prefix not found in metadata\")\n assertExpected(\"SS58 prefix\", ss58Prefix, hinted.base58Prefix)\n const version = metadata.pallets\n .find((x) => x.name === \"System\")\n ?.constants.find((x) => x.name === \"Version\")\n if (version == null) throw new Error(\"System.Version constant not found\")\n const { spec_name: specName, spec_version: specVersion } = buildDefinition(\n version.type,\n ).dec(version.value)\n if (typeof specName !== \"string\" || typeof specVersion !== \"number\")\n throw new Error(\"Spec name or spec version not found\")\n assertExpected(\"Spec name\", specName, hinted.specName)\n assertExpected(\"Spec version\", specVersion, hinted.specVersion)\n\n const info: ExtraInfo = {\n decimals,\n tokenSymbol,\n specVersion,\n specName,\n base58Prefix: ss58Prefix,\n }\n const definitions = new Map<number, LookupValue>(\n metadata.lookup.map((value) => [value.id, value]),\n )\n const accessibleTypes = getAccessibleTypes(metadata, definitions)\n const getPrimitive = (frameId: number): ScalePrimitive[\"tag\"] | null => {\n const {\n def: { tag, value },\n } = definitions.get(frameId)!\n\n if (tag === \"primitive\") return value.tag\n\n if ((tag !== \"composite\" && tag !== \"tuple\") || value.length > 1)\n throw new Error(\"The provided definition doesn't map to a primitive\")\n\n return value.length === 0\n ? null // signals `void`\n : getPrimitive(tag === \"tuple\" ? value[0] : value[0].type)\n }\n\n const getTypeRef = (frameId: number): TypeRef => {\n const { def } = definitions.get(frameId)!\n\n if (def.tag === \"primitive\") return { tag: def.value.tag, value: undefined }\n\n if (def.tag === \"compact\") {\n const primitive = getPrimitive(def.value)\n const tag = compactTypeRefs[primitive as \"u8\"]\n if (!tag) throw new Error(\"Invalid primitive for Compact\")\n return { tag, value: undefined }\n }\n\n return accessibleTypes.has(frameId)\n ? { tag: \"perId\", value: accessibleTypes.get(frameId)! }\n : { tag: \"void\", value: undefined }\n }\n\n const extrinsic: ExtrinsicMetadata = {\n version: metadata.extrinsic.version,\n addressTy: getTypeRef(metadata.extrinsic.address),\n callTy: getTypeRef(metadata.extrinsic.call),\n signatureTy: getTypeRef(metadata.extrinsic.signature),\n signedExtensions: metadata.extrinsic.signedExtensions.map((se) => ({\n identifier: se.identifier,\n includedInExtrinsic: getTypeRef(se.type),\n includedInSignedData: getTypeRef(se.additionalSigned),\n })),\n }\n\n const lookup = getLookup(\n definitions,\n accessibleTypes,\n getTypeRef,\n getPrimitive,\n )\n const lookupEncoded = lookup.map(lookupType.enc)\n\n let hashTree: Array<Uint8Array> | undefined\n const getHashTree = (): Array<Uint8Array> => {\n if (hashTree) return hashTree\n\n if (!lookupEncoded.length) return (hashTree = [new Uint8Array(32).fill(0)])\n\n hashTree = new Array(lookupEncoded.length * 2 - 1)\n\n let leavesStartIdx = lookupEncoded.length - 1\n for (let i = 0; i < lookupEncoded.length; i++)\n hashTree[leavesStartIdx + i] = Blake3256(lookupEncoded[i])\n\n for (let i = hashTree.length - 2; i > 0; i -= 2)\n hashTree[(i - 1) / 2] = Blake3256(\n mergeUint8([hashTree[i], hashTree[i + 1]]),\n )\n\n return hashTree\n }\n\n let digested: undefined | Uint8Array\n const digest = () => {\n if (digested) return digested\n const rootLookupHash = getHashTree()[0]\n\n const digest: MetadataDigest = {\n tag: \"V1\",\n value: {\n typeInformationTreeRoot: rootLookupHash,\n extrinsicMetadataHash: Blake3256(extrinsicMetadata.enc(extrinsic)),\n ...info,\n },\n }\n\n return (digested = Blake3256(metadataDigest.enc(digest)))\n }\n\n const generateProof = (knownIndexes: number[]) => {\n const proofData = getProofData(lookupEncoded, knownIndexes)\n\n const hashTree = getHashTree()\n const proofs = proofData.proofIdxs.map((idx) => hashTree[idx])\n\n return mergeUint8([\n compact.enc(proofData.leaves.length),\n ...proofData.leaves,\n compact.enc(proofData.leafIdxs.length),\n ...proofData.leafIdxs.map((x) => u32.enc(x)),\n compact.enc(proofs.length),\n ...proofs,\n extrinsicMetadata.enc(extrinsic),\n extraInfo.enc(info),\n ])\n }\n\n const getProofForExtrinsicPayload = (\n extrinsicPayload: Uint8Array | HexString,\n ) => {\n const typeRefs: Array<TypeRef> = [\n extrinsic.callTy,\n ...extrinsic.signedExtensions.map((x) => x.includedInExtrinsic),\n ...extrinsic.signedExtensions.map((x) => x.includedInSignedData),\n ]\n return generateProof(\n decodeAndCollectKnownLeafs(extrinsicPayload, typeRefs, lookup),\n )\n }\n\n const getProofForExtrinsicParts = (\n callData: Uint8Array | HexString,\n includedInExtrinsic: Uint8Array | HexString,\n includedInSignedData: Uint8Array | HexString,\n ) => {\n const bytes = mergeUint8(\n [callData, includedInExtrinsic, includedInSignedData].map(toBytes),\n )\n return getProofForExtrinsicPayload(bytes)\n }\n\n const getProofForExtrinsic = (\n transaction: Uint8Array | HexString,\n txAdditionalSigned?: Uint8Array | HexString,\n ) => {\n let [, { version, signed }, bytes] = extrinsicDec(transaction)\n\n if (version !== extrinsic.version)\n throw new Error(\"Incorrect extrinsic version\")\n\n const typeRefs: TypeRef[] = signed\n ? [\n extrinsic.addressTy,\n extrinsic.signatureTy,\n ...extrinsic.signedExtensions.map((x) => x.includedInExtrinsic),\n extrinsic.callTy,\n ]\n : [extrinsic.callTy]\n\n if (txAdditionalSigned) {\n bytes = mergeUint8([bytes, toBytes(txAdditionalSigned)])\n typeRefs.push(\n ...extrinsic.signedExtensions.map((x) => x.includedInSignedData),\n )\n }\n\n return generateProof(decodeAndCollectKnownLeafs(bytes, typeRefs, lookup))\n }\n\n return {\n digest,\n getProofForExtrinsic,\n getProofForExtrinsicParts,\n getProofForExtrinsicPayload,\n }\n}\n"],"names":["digest","hashTree","version"],"mappings":";;;;;;;;;;AA8EA,MAAM,cAAiB,GAAA,CAAI,IAAc,EAAA,QAAA,EAAa,QAAuB,KAAA;AAC3E,EAAI,IAAA,QAAA,IAAY,QAAQ,QAAa,KAAA,QAAA;AACnC,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,CAAG,EAAA,IAAI,CAA2B,wBAAA,EAAA,QAAQ,aAAa,QAAQ,CAAA,CAAA;AAAA,KACjE,CAAA;AACJ,CAAA,CAAA;AAEa,MAAA,iBAAA,GAAoB,CAC/B,aACA,EAAA;AAAA,EACE,QAAA;AAAA,EACA,WAAA;AAAA,EACA,GAAG,MAAA;AACL,CACuB,KAAA;AACvB,EAAM,MAAA,QAAA,GAAW,YAAY,aAAa,CAAA,CAAA;AAC1C,EAAM,MAAA,EAAE,UAAY,EAAA,eAAA,EAAoB,GAAA,iBAAA;AAAA,IACtC,YAAY,QAAQ,CAAA;AAAA,GACtB,CAAA;AACA,EAAA,IAAI,UAAc,IAAA,IAAA,EAAY,MAAA,IAAI,MAAM,mCAAmC,CAAA,CAAA;AAC3E,EAAe,cAAA,CAAA,aAAA,EAAe,UAAY,EAAA,MAAA,CAAO,YAAY,CAAA,CAAA;AAC7D,EAAA,MAAM,UAAU,QAAS,CAAA,OAAA,CACtB,IAAK,CAAA,CAAC,MAAM,CAAE,CAAA,IAAA,KAAS,QAAQ,CAAA,EAC9B,UAAU,IAAK,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,SAAS,SAAS,CAAA,CAAA;AAC9C,EAAA,IAAI,OAAW,IAAA,IAAA,EAAY,MAAA,IAAI,MAAM,mCAAmC,CAAA,CAAA;AACxE,EAAA,MAAM,EAAE,SAAA,EAAW,QAAU,EAAA,YAAA,EAAc,aAAgB,GAAA,eAAA;AAAA,IACzD,OAAQ,CAAA,IAAA;AAAA,GACV,CAAE,GAAI,CAAA,OAAA,CAAQ,KAAK,CAAA,CAAA;AACnB,EAAA,IAAI,OAAO,QAAA,KAAa,QAAY,IAAA,OAAO,WAAgB,KAAA,QAAA;AACzD,IAAM,MAAA,IAAI,MAAM,qCAAqC,CAAA,CAAA;AACvD,EAAe,cAAA,CAAA,WAAA,EAAa,QAAU,EAAA,MAAA,CAAO,QAAQ,CAAA,CAAA;AACrD,EAAe,cAAA,CAAA,cAAA,EAAgB,WAAa,EAAA,MAAA,CAAO,WAAW,CAAA,CAAA;AAE9D,EAAA,MAAM,IAAkB,GAAA;AAAA,IACtB,QAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,YAAc,EAAA,UAAA;AAAA,GAChB,CAAA;AACA,EAAA,MAAM,cAAc,IAAI,GAAA;AAAA,IACtB,QAAA,CAAS,OAAO,GAAI,CAAA,CAAC,UAAU,CAAC,KAAA,CAAM,EAAI,EAAA,KAAK,CAAC,CAAA;AAAA,GAClD,CAAA;AACA,EAAM,MAAA,eAAA,GAAkB,kBAAmB,CAAA,QAAA,EAAU,WAAW,CAAA,CAAA;AAChE,EAAM,MAAA,YAAA,GAAe,CAAC,OAAkD,KAAA;AACtE,IAAM,MAAA;AAAA,MACJ,GAAA,EAAK,EAAE,GAAA,EAAK,KAAM,EAAA;AAAA,KACpB,GAAI,WAAY,CAAA,GAAA,CAAI,OAAO,CAAA,CAAA;AAE3B,IAAI,IAAA,GAAA,KAAQ,WAAa,EAAA,OAAO,KAAM,CAAA,GAAA,CAAA;AAEtC,IAAA,IAAK,GAAQ,KAAA,WAAA,IAAe,GAAQ,KAAA,OAAA,IAAY,MAAM,MAAS,GAAA,CAAA;AAC7D,MAAM,MAAA,IAAI,MAAM,oDAAoD,CAAA,CAAA;AAEtE,IAAA,OAAO,KAAM,CAAA,MAAA,KAAW,CACpB,GAAA,IAAA,GACA,YAAa,CAAA,GAAA,KAAQ,OAAU,GAAA,KAAA,CAAM,CAAC,CAAA,GAAI,KAAM,CAAA,CAAC,EAAE,IAAI,CAAA,CAAA;AAAA,GAC7D,CAAA;AAEA,EAAM,MAAA,UAAA,GAAa,CAAC,OAA6B,KAAA;AAC/C,IAAA,MAAM,EAAE,GAAA,EAAQ,GAAA,WAAA,CAAY,IAAI,OAAO,CAAA,CAAA;AAEvC,IAAI,IAAA,GAAA,CAAI,GAAQ,KAAA,WAAA,EAAoB,OAAA,EAAE,KAAK,GAAI,CAAA,KAAA,CAAM,GAAK,EAAA,KAAA,EAAO,KAAU,CAAA,EAAA,CAAA;AAE3E,IAAI,IAAA,GAAA,CAAI,QAAQ,SAAW,EAAA;AACzB,MAAM,MAAA,SAAA,GAAY,YAAa,CAAA,GAAA,CAAI,KAAK,CAAA,CAAA;AACxC,MAAM,MAAA,GAAA,GAAM,gBAAgB,SAAiB,CAAA,CAAA;AAC7C,MAAA,IAAI,CAAC,GAAA,EAAW,MAAA,IAAI,MAAM,+BAA+B,CAAA,CAAA;AACzD,MAAO,OAAA,EAAE,GAAK,EAAA,KAAA,EAAO,KAAU,CAAA,EAAA,CAAA;AAAA,KACjC;AAEA,IAAA,OAAO,gBAAgB,GAAI,CAAA,OAAO,CAC9B,GAAA,EAAE,KAAK,OAAS,EAAA,KAAA,EAAO,eAAgB,CAAA,GAAA,CAAI,OAAO,CAAG,EAAA,GACrD,EAAE,GAAK,EAAA,MAAA,EAAQ,OAAO,KAAU,CAAA,EAAA,CAAA;AAAA,GACtC,CAAA;AAEA,EAAA,MAAM,SAA+B,GAAA;AAAA,IACnC,OAAA,EAAS,SAAS,SAAU,CAAA,OAAA;AAAA,IAC5B,SAAW,EAAA,UAAA,CAAW,QAAS,CAAA,SAAA,CAAU,OAAO,CAAA;AAAA,IAChD,MAAQ,EAAA,UAAA,CAAW,QAAS,CAAA,SAAA,CAAU,IAAI,CAAA;AAAA,IAC1C,WAAa,EAAA,UAAA,CAAW,QAAS,CAAA,SAAA,CAAU,SAAS,CAAA;AAAA,IACpD,kBAAkB,QAAS,CAAA,SAAA,CAAU,gBAAiB,CAAA,GAAA,CAAI,CAAC,EAAQ,MAAA;AAAA,MACjE,YAAY,EAAG,CAAA,UAAA;AAAA,MACf,mBAAA,EAAqB,UAAW,CAAA,EAAA,CAAG,IAAI,CAAA;AAAA,MACvC,oBAAA,EAAsB,UAAW,CAAA,EAAA,CAAG,gBAAgB,CAAA;AAAA,KACpD,CAAA,CAAA;AAAA,GACJ,CAAA;AAEA,EAAA,MAAM,MAAS,GAAA,SAAA;AAAA,IACb,WAAA;AAAA,IACA,eAAA;AAAA,IACA,UAAA;AAAA,IACA,YAAA;AAAA,GACF,CAAA;AACA,EAAA,MAAM,aAAgB,GAAA,MAAA,CAAO,GAAI,CAAA,UAAA,CAAW,GAAG,CAAA,CAAA;AAE/C,EAAI,IAAA,QAAA,CAAA;AACJ,EAAA,MAAM,cAAc,MAAyB;AAC3C,IAAA,IAAI,UAAiB,OAAA,QAAA,CAAA;AAErB,IAAA,IAAI,CAAC,aAAA,CAAc,MAAQ,EAAA,OAAQ,QAAW,GAAA,CAAC,IAAI,UAAA,CAAW,EAAE,CAAA,CAAE,IAAK,CAAA,CAAC,CAAC,CAAA,CAAA;AAEzE,IAAA,QAAA,GAAW,IAAI,KAAA,CAAM,aAAc,CAAA,MAAA,GAAS,IAAI,CAAC,CAAA,CAAA;AAEjD,IAAI,IAAA,cAAA,GAAiB,cAAc,MAAS,GAAA,CAAA,CAAA;AAC5C,IAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,aAAA,CAAc,MAAQ,EAAA,CAAA,EAAA;AACxC,MAAA,QAAA,CAAS,iBAAiB,CAAC,CAAA,GAAI,SAAU,CAAA,aAAA,CAAc,CAAC,CAAC,CAAA,CAAA;AAE3D,IAAA,KAAA,IAAS,IAAI,QAAS,CAAA,MAAA,GAAS,CAAG,EAAA,CAAA,GAAI,GAAG,CAAK,IAAA,CAAA;AAC5C,MAAU,QAAA,CAAA,CAAA,CAAA,GAAI,CAAK,IAAA,CAAC,CAAI,GAAA,SAAA;AAAA,QACtB,UAAA,CAAW,CAAC,QAAS,CAAA,CAAC,GAAG,QAAS,CAAA,CAAA,GAAI,CAAC,CAAC,CAAC,CAAA;AAAA,OAC3C,CAAA;AAEF,IAAO,OAAA,QAAA,CAAA;AAAA,GACT,CAAA;AAEA,EAAI,IAAA,QAAA,CAAA;AACJ,EAAA,MAAM,SAAS,MAAM;AACnB,IAAA,IAAI,UAAiB,OAAA,QAAA,CAAA;AACrB,IAAM,MAAA,cAAA,GAAiB,WAAY,EAAA,CAAE,CAAC,CAAA,CAAA;AAEtC,IAAA,MAAMA,OAAyB,GAAA;AAAA,MAC7B,GAAK,EAAA,IAAA;AAAA,MACL,KAAO,EAAA;AAAA,QACL,uBAAyB,EAAA,cAAA;AAAA,QACzB,qBAAuB,EAAA,SAAA,CAAU,iBAAkB,CAAA,GAAA,CAAI,SAAS,CAAC,CAAA;AAAA,QACjE,GAAG,IAAA;AAAA,OACL;AAAA,KACF,CAAA;AAEA,IAAA,OAAQ,QAAW,GAAA,SAAA,CAAU,cAAe,CAAA,GAAA,CAAIA,OAAM,CAAC,CAAA,CAAA;AAAA,GACzD,CAAA;AAEA,EAAM,MAAA,aAAA,GAAgB,CAAC,YAA2B,KAAA;AAChD,IAAM,MAAA,SAAA,GAAY,YAAa,CAAA,aAAA,EAAe,YAAY,CAAA,CAAA;AAE1D,IAAA,MAAMC,YAAW,WAAY,EAAA,CAAA;AAC7B,IAAM,MAAA,MAAA,GAAS,UAAU,SAAU,CAAA,GAAA,CAAI,CAAC,GAAQA,KAAAA,SAAAA,CAAS,GAAG,CAAC,CAAA,CAAA;AAE7D,IAAA,OAAO,UAAW,CAAA;AAAA,MAChB,OAAQ,CAAA,GAAA,CAAI,SAAU,CAAA,MAAA,CAAO,MAAM,CAAA;AAAA,MACnC,GAAG,SAAU,CAAA,MAAA;AAAA,MACb,OAAQ,CAAA,GAAA,CAAI,SAAU,CAAA,QAAA,CAAS,MAAM,CAAA;AAAA,MACrC,GAAG,UAAU,QAAS,CAAA,GAAA,CAAI,CAAC,CAAM,KAAA,GAAA,CAAI,GAAI,CAAA,CAAC,CAAC,CAAA;AAAA,MAC3C,OAAA,CAAQ,GAAI,CAAA,MAAA,CAAO,MAAM,CAAA;AAAA,MACzB,GAAG,MAAA;AAAA,MACH,iBAAA,CAAkB,IAAI,SAAS,CAAA;AAAA,MAC/B,SAAA,CAAU,IAAI,IAAI,CAAA;AAAA,KACnB,CAAA,CAAA;AAAA,GACH,CAAA;AAEA,EAAM,MAAA,2BAAA,GAA8B,CAClC,gBACG,KAAA;AACH,IAAA,MAAM,QAA2B,GAAA;AAAA,MAC/B,SAAU,CAAA,MAAA;AAAA,MACV,GAAG,SAAU,CAAA,gBAAA,CAAiB,IAAI,CAAC,CAAA,KAAM,EAAE,mBAAmB,CAAA;AAAA,MAC9D,GAAG,SAAU,CAAA,gBAAA,CAAiB,IAAI,CAAC,CAAA,KAAM,EAAE,oBAAoB,CAAA;AAAA,KACjE,CAAA;AACA,IAAO,OAAA,aAAA;AAAA,MACL,0BAAA,CAA2B,gBAAkB,EAAA,QAAA,EAAU,MAAM,CAAA;AAAA,KAC/D,CAAA;AAAA,GACF,CAAA;AAEA,EAAA,MAAM,yBAA4B,GAAA,CAChC,QACA,EAAA,mBAAA,EACA,oBACG,KAAA;AACH,IAAA,MAAM,KAAQ,GAAA,UAAA;AAAA,MACZ,CAAC,QAAU,EAAA,mBAAA,EAAqB,oBAAoB,CAAA,CAAE,IAAI,OAAO,CAAA;AAAA,KACnE,CAAA;AACA,IAAA,OAAO,4BAA4B,KAAK,CAAA,CAAA;AAAA,GAC1C,CAAA;AAEA,EAAM,MAAA,oBAAA,GAAuB,CAC3B,WAAA,EACA,kBACG,KAAA;AACH,IAAI,IAAA,GAAG,EAAE,OAAAC,EAAAA,QAAAA,EAAS,QAAU,EAAA,KAAK,CAAI,GAAA,YAAA,CAAa,WAAW,CAAA,CAAA;AAE7D,IAAA,IAAIA,aAAY,SAAU,CAAA,OAAA;AACxB,MAAM,MAAA,IAAI,MAAM,6BAA6B,CAAA,CAAA;AAE/C,IAAA,MAAM,WAAsB,MACxB,GAAA;AAAA,MACE,SAAU,CAAA,SAAA;AAAA,MACV,SAAU,CAAA,WAAA;AAAA,MACV,GAAG,SAAU,CAAA,gBAAA,CAAiB,IAAI,CAAC,CAAA,KAAM,EAAE,mBAAmB,CAAA;AAAA,MAC9D,SAAU,CAAA,MAAA;AAAA,KACZ,GACA,CAAC,SAAA,CAAU,MAAM,CAAA,CAAA;AAErB,IAAA,IAAI,kBAAoB,EAAA;AACtB,MAAA,KAAA,GAAQ,WAAW,CAAC,KAAA,EAAO,OAAQ,CAAA,kBAAkB,CAAC,CAAC,CAAA,CAAA;AACvD,MAAS,QAAA,CAAA,IAAA;AAAA,QACP,GAAG,SAAU,CAAA,gBAAA,CAAiB,IAAI,CAAC,CAAA,KAAM,EAAE,oBAAoB,CAAA;AAAA,OACjE,CAAA;AAAA,KACF;AAEA,IAAA,OAAO,aAAc,CAAA,0BAAA,CAA2B,KAAO,EAAA,QAAA,EAAU,MAAM,CAAC,CAAA,CAAA;AAAA,GAC1E,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA,oBAAA;AAAA,IACA,yBAAA;AAAA,IACA,2BAAA;AAAA,GACF,CAAA;AACF;;;;"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1234,6 +1234,9 @@ interface MetadataMerkleizer {
|
|
|
1234
1234
|
*/
|
|
1235
1235
|
getProofForExtrinsicPayload: (extrinsicPayload: Uint8Array | HexString) => Uint8Array;
|
|
1236
1236
|
}
|
|
1237
|
-
declare const merkleizeMetadata: (metadataBytes: Uint8Array | HexString,
|
|
1237
|
+
declare const merkleizeMetadata: (metadataBytes: Uint8Array | HexString, { decimals, tokenSymbol, ...hinted }: {
|
|
1238
|
+
decimals: number;
|
|
1239
|
+
tokenSymbol: string;
|
|
1240
|
+
} & Partial<ExtraInfo>) => MetadataMerkleizer;
|
|
1238
1241
|
|
|
1239
1242
|
export { type ExtraInfo, type ExtrinsicMetadata, type Lookup, type LookupEntry, type MetadataMerkleizer, type Proof, type TypeRef, extraInfo, extrinsicMetadata, hash, lookup, lookupType, merkleizeMetadata, proof };
|
package/dist/index.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var substrateBindings = require('@polkadot-api/substrate-bindings');
|
|
4
4
|
var utils = require('@polkadot-api/utils');
|
|
5
|
+
var metadataBuilders = require('@polkadot-api/metadata-builders');
|
|
5
6
|
|
|
6
7
|
const extraInfoInner = {
|
|
7
8
|
specVersion: substrateBindings.u32,
|
|
@@ -272,33 +273,11 @@ const getLookup = (definitions, accessibleTypes, getTypeRef, getPrimitive) => {
|
|
|
272
273
|
return typeTree;
|
|
273
274
|
};
|
|
274
275
|
|
|
275
|
-
const opaqueBytes = substrateBindings.Bytes();
|
|
276
|
-
const optionOpaque = substrateBindings.Option(opaqueBytes);
|
|
277
|
-
const opaqueOpaqueBytes = substrateBindings.Tuple(substrateBindings.compact, opaqueBytes);
|
|
278
|
-
const getAnyMetadata = (input) => {
|
|
279
|
-
try {
|
|
280
|
-
return substrateBindings.metadata.dec(input);
|
|
281
|
-
} catch (_) {
|
|
282
|
-
}
|
|
283
|
-
try {
|
|
284
|
-
return substrateBindings.metadata.dec(optionOpaque.dec(input));
|
|
285
|
-
} catch (_) {
|
|
286
|
-
}
|
|
287
|
-
try {
|
|
288
|
-
return substrateBindings.metadata.dec(opaqueBytes.dec(input));
|
|
289
|
-
} catch (_) {
|
|
290
|
-
}
|
|
291
|
-
try {
|
|
292
|
-
return substrateBindings.metadata.dec(opaqueOpaqueBytes.dec(input)[1]);
|
|
293
|
-
} catch (_) {
|
|
294
|
-
}
|
|
295
|
-
throw null;
|
|
296
|
-
};
|
|
297
276
|
const getMetadata = (input) => {
|
|
298
277
|
try {
|
|
299
|
-
const { metadata
|
|
300
|
-
if (
|
|
301
|
-
return
|
|
278
|
+
const { metadata } = substrateBindings.decAnyMetadata(input);
|
|
279
|
+
if (metadata.tag !== "v15") throw new Error("Wrong metadata version");
|
|
280
|
+
return metadata.value;
|
|
302
281
|
} catch (e) {
|
|
303
282
|
throw e || new Error("Unable to decode metadata");
|
|
304
283
|
}
|
|
@@ -462,8 +441,39 @@ function getProofData(leaves, knownLeavesIdxs) {
|
|
|
462
441
|
};
|
|
463
442
|
}
|
|
464
443
|
|
|
465
|
-
const
|
|
444
|
+
const assertExpected = (name, expected, received) => {
|
|
445
|
+
if (received != null && received !== expected)
|
|
446
|
+
throw new Error(
|
|
447
|
+
`${name} not expected. Received ${received} expected ${expected}`
|
|
448
|
+
);
|
|
449
|
+
};
|
|
450
|
+
const merkleizeMetadata = (metadataBytes, {
|
|
451
|
+
decimals,
|
|
452
|
+
tokenSymbol,
|
|
453
|
+
...hinted
|
|
454
|
+
}) => {
|
|
466
455
|
const metadata = getMetadata(metadataBytes);
|
|
456
|
+
const { ss58Prefix, buildDefinition } = metadataBuilders.getDynamicBuilder(
|
|
457
|
+
metadataBuilders.getLookupFn(metadata)
|
|
458
|
+
);
|
|
459
|
+
if (ss58Prefix == null) throw new Error("SS58 prefix not found in metadata");
|
|
460
|
+
assertExpected("SS58 prefix", ss58Prefix, hinted.base58Prefix);
|
|
461
|
+
const version = metadata.pallets.find((x) => x.name === "System")?.constants.find((x) => x.name === "Version");
|
|
462
|
+
if (version == null) throw new Error("System.Version constant not found");
|
|
463
|
+
const { spec_name: specName, spec_version: specVersion } = buildDefinition(
|
|
464
|
+
version.type
|
|
465
|
+
).dec(version.value);
|
|
466
|
+
if (typeof specName !== "string" || typeof specVersion !== "number")
|
|
467
|
+
throw new Error("Spec name or spec version not found");
|
|
468
|
+
assertExpected("Spec name", specName, hinted.specName);
|
|
469
|
+
assertExpected("Spec version", specVersion, hinted.specVersion);
|
|
470
|
+
const info = {
|
|
471
|
+
decimals,
|
|
472
|
+
tokenSymbol,
|
|
473
|
+
specVersion,
|
|
474
|
+
specName,
|
|
475
|
+
base58Prefix: ss58Prefix
|
|
476
|
+
};
|
|
467
477
|
const definitions = new Map(
|
|
468
478
|
metadata.lookup.map((value) => [value.id, value])
|
|
469
479
|
);
|
|
@@ -566,8 +576,8 @@ const merkleizeMetadata = (metadataBytes, info) => {
|
|
|
566
576
|
return getProofForExtrinsicPayload(bytes);
|
|
567
577
|
};
|
|
568
578
|
const getProofForExtrinsic = (transaction, txAdditionalSigned) => {
|
|
569
|
-
let [, { version, signed }, bytes] = extrinsicDec(transaction);
|
|
570
|
-
if (
|
|
579
|
+
let [, { version: version2, signed }, bytes] = extrinsicDec(transaction);
|
|
580
|
+
if (version2 !== extrinsic.version)
|
|
571
581
|
throw new Error("Incorrect extrinsic version");
|
|
572
582
|
const typeRefs = signed ? [
|
|
573
583
|
extrinsic.addressTy,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/codecs.ts","../src/get-accessible-types.ts","../src/get-lookup.ts","../src/get-metadata.ts","../src/utils.ts","../src/decode-and-collect.ts","../src/proof.ts","../src/main.ts"],"sourcesContent":["import {\n Bytes,\n Codec,\n CodecType,\n Option,\n ScaleEnum,\n Struct,\n Tuple,\n V15,\n Vector,\n _void,\n bool,\n compact,\n compactNumber,\n enhanceDecoder,\n str,\n u16,\n u32,\n u8,\n} from \"@polkadot-api/substrate-bindings\"\n\nconst extraInfoInner = {\n specVersion: u32,\n specName: str,\n base58Prefix: u16,\n decimals: u8,\n tokenSymbol: str,\n}\nexport const extraInfo = Struct(extraInfoInner)\nexport type ExtraInfo = CodecType<typeof extraInfo>\n\nexport const hash = Bytes(32)\nexport const metadataDigest = ScaleEnum({\n V0: _void,\n V1: Struct({\n typeInformationTreeRoot: hash,\n extrinsicMetadataHash: hash,\n ...extraInfoInner,\n }),\n})\nexport type MetadataDigest = CodecType<typeof metadataDigest>\n\nexport const scalePrimitive = ScaleEnum({\n bool: _void,\n char: _void,\n str: _void,\n u8: _void,\n u16: _void,\n u32: _void,\n u64: _void,\n u128: _void,\n u256: _void,\n i8: _void,\n i16: _void,\n i32: _void,\n i64: _void,\n i128: _void,\n i256: _void,\n})\nexport type ScalePrimitive = CodecType<typeof scalePrimitive>\n\nexport const typeRef = ScaleEnum({\n bool: _void,\n char: _void,\n str: _void,\n u8: _void,\n u16: _void,\n u32: _void,\n u64: _void,\n u128: _void,\n u256: _void,\n i8: _void,\n i16: _void,\n i32: _void,\n i64: _void,\n i128: _void,\n i256: _void,\n compactU8: _void,\n compactU16: _void,\n compactU32: _void,\n compactU64: _void,\n compactU128: _void,\n compactU256: _void,\n void: _void,\n perId: compactNumber,\n})\nexport type TypeRef = CodecType<typeof typeRef>\n\nconst field = Struct({\n name: Option(str),\n ty: typeRef,\n typeName: Option(str),\n})\nexport const typeDef = ScaleEnum({\n composite: Vector(field),\n enumeration: Struct({\n name: str,\n fields: Vector(field),\n index: compactNumber,\n }),\n sequence: typeRef,\n array: Struct({\n len: u32,\n typeParam: typeRef,\n }),\n tuple: Vector(typeRef),\n bitSequence: Struct({\n numBytes: u8,\n leastSignificantBitFirst: bool,\n }),\n})\nexport type TypeDef = CodecType<typeof typeDef>\n\nexport const lookupType = Struct({\n path: Vector(str),\n typeDef: typeDef,\n typeId: compactNumber,\n})\nexport type LookupEntry = CodecType<typeof lookupType>\nexport type Lookup = Array<LookupEntry>\nexport const lookup: Codec<Lookup> = Vector(lookupType)\n\nexport const extrinsicMetadata = Struct({\n version: u8,\n addressTy: typeRef,\n callTy: typeRef,\n signatureTy: typeRef,\n signedExtensions: Vector(\n Struct({\n identifier: str,\n includedInExtrinsic: typeRef,\n includedInSignedData: typeRef,\n }),\n ),\n})\nexport type ExtrinsicMetadata = CodecType<typeof extrinsicMetadata>\nexport type LookupValue = V15[\"lookup\"] extends Array<infer T> ? T : never\n\nconst versionDecoder = enhanceDecoder(u8[1], (value) => ({\n version: value & ~(1 << 7),\n signed: !!(value & (1 << 7)),\n}))\n\nexport const extrinsicDec = Tuple.dec(\n compact[1],\n versionDecoder,\n Bytes(Infinity)[1],\n)\n\nexport const proof = Struct({\n leaves: lookup,\n leafIdxs: Vector(u32),\n proofs: Vector(hash),\n extrinsic: extrinsicMetadata,\n info: extraInfo,\n})\nexport type Proof = CodecType<typeof proof>\n","import { V15 } from \"@polkadot-api/substrate-bindings\"\nimport { LookupValue } from \"./codecs\"\n\nexport const getAccessibleTypes = (\n metadata: V15,\n definitions: Map<number, LookupValue>,\n): Map<number, number> => {\n const types = new Set<number>()\n\n const collectTypesFromId = (id: number) => {\n if (types.has(id)) return\n\n const { tag, value } = definitions.get(id)!.def\n switch (tag) {\n case \"composite\":\n if (!value.length) break\n types.add(id)\n value.forEach(({ type }) => {\n collectTypesFromId(type)\n })\n break\n case \"variant\":\n if (!value.length) break\n types.add(id)\n value.forEach(({ fields }) => {\n fields.forEach(({ type }) => {\n collectTypesFromId(type)\n })\n })\n break\n case \"tuple\":\n if (!value.length) break\n types.add(id)\n value.forEach(collectTypesFromId)\n break\n case \"sequence\":\n types.add(id)\n collectTypesFromId(value)\n break\n case \"array\":\n types.add(id)\n collectTypesFromId(value.type)\n break\n case \"bitSequence\": // bitSequence inner types are not stored\n types.add(id)\n // primitive and compact are not stored\n }\n }\n\n collectTypesFromId(metadata.extrinsic.call)\n collectTypesFromId(metadata.extrinsic.address)\n collectTypesFromId(metadata.extrinsic.signature)\n metadata.extrinsic.signedExtensions.forEach(({ type, additionalSigned }) => {\n collectTypesFromId(type)\n collectTypesFromId(additionalSigned)\n })\n\n const sortedTypes = [...types].sort((a, b) => a - b)\n return new Map(sortedTypes.map((value, idx) => [value, idx]))\n}\n","import { Lookup, LookupValue, ScalePrimitive, TypeDef, TypeRef } from \"./codecs\"\n\nconst bitSequenceBytes = {\n u8: 1,\n u16: 2,\n u32: 4,\n u64: 8,\n}\n\nconst constructTypeDef = (\n definitions: Map<number, LookupValue>,\n getTypeRef: (frameId: number) => TypeRef,\n getPrimitive: (frameId: number) => ScalePrimitive[\"tag\"] | null,\n frameId: number,\n): TypeDef[] => {\n const {\n def: { tag, value },\n } = definitions.get(frameId)!\n switch (tag) {\n case \"composite\":\n return [\n {\n tag,\n value: value.map((f) => ({\n name: f.name,\n typeName: f.typeName,\n ty: getTypeRef(f.type),\n })),\n },\n ]\n case \"variant\": {\n return value.map((v) => ({\n tag: \"enumeration\",\n value: {\n name: v.name,\n index: v.index,\n fields: v.fields.map((f) => ({\n name: f.name,\n typeName: f.typeName,\n ty: getTypeRef(f.type),\n })),\n },\n }))\n }\n case \"sequence\":\n return [\n {\n tag,\n value: getTypeRef(value),\n },\n ]\n case \"array\":\n return [\n {\n tag,\n value: {\n len: value.len,\n typeParam: getTypeRef(value.type),\n },\n },\n ]\n case \"tuple\":\n return [\n {\n tag,\n value: value.map(getTypeRef),\n },\n ]\n case \"bitSequence\": {\n const primitive = getPrimitive(value.bitStoreType)\n const numBytes = bitSequenceBytes[primitive as \"u8\"]\n if (!numBytes) throw new Error(\"Invalid primitive for BitSequence\")\n\n const storeOrderPath = definitions.get(value.bitOrderType)!.path\n const leastSignificantBitFirst = storeOrderPath.includes(\"Lsb0\")\n if (!leastSignificantBitFirst && !storeOrderPath.includes(\"Msb0\"))\n throw new Error(\"BitOrderType not recognized\")\n\n return [\n {\n tag: \"bitSequence\",\n value: { numBytes, leastSignificantBitFirst },\n },\n ]\n }\n }\n\n throw new Error(`FrameId(${frameId}) should have been filtered out`)\n}\n\nexport const getLookup = (\n definitions: Map<number, LookupValue>,\n accessibleTypes: Map<number, number>,\n getTypeRef: (frameId: number) => TypeRef,\n getPrimitive: (frameId: number) => ScalePrimitive[\"tag\"] | null,\n) => {\n const typeTree: Lookup = []\n ;[...accessibleTypes.entries()].forEach(([frameId, typeId]) => {\n const { path } = definitions.get(frameId)!\n constructTypeDef(definitions, getTypeRef, getPrimitive, frameId).forEach(\n (typeDef) => {\n typeTree.push({\n path,\n typeId,\n typeDef,\n })\n },\n )\n })\n\n typeTree.sort((a, b) => {\n if (a.typeId !== b.typeId) return a.typeId - b.typeId // in general\n // should only happen for variants\n if (a.typeDef.tag !== \"enumeration\" || b.typeDef.tag !== \"enumeration\")\n throw new Error(\"Found two types with same id\")\n return a.typeDef.value.index - b.typeDef.value.index\n })\n return typeTree\n}\n","import {\n Option,\n Bytes,\n metadata,\n compact,\n Tuple,\n V15,\n} from \"@polkadot-api/substrate-bindings\"\nimport { HexString } from \"@polkadot-api/substrate-bindings\"\n\nconst opaqueBytes = Bytes()\nconst optionOpaque = Option(opaqueBytes)\nconst opaqueOpaqueBytes = Tuple(compact, opaqueBytes)\n\nconst getAnyMetadata = (input: Uint8Array | HexString) => {\n try {\n return metadata.dec(input)\n } catch (_) {}\n\n // comes from metadata.metadata_at_version\n try {\n return metadata.dec(optionOpaque.dec(input)!)\n } catch (_) {}\n\n // comes from state.getMetadata\n try {\n return metadata.dec(opaqueBytes.dec(input))\n } catch (_) {}\n\n // comes from metadata.metadata\n try {\n return metadata.dec(opaqueOpaqueBytes.dec(input)[1])\n } catch (_) {}\n\n throw null\n}\n\nexport const getMetadata = (input: Uint8Array | HexString): V15 => {\n try {\n const { metadata } = getAnyMetadata(input)\n if (metadata.tag !== \"v15\") throw new Error(\"Wrong metadata version\")\n return metadata.value\n } catch (e) {\n throw e || new Error(\"Unable to decode metadata\")\n }\n}\n","import { type HexString } from \"@polkadot-api/substrate-bindings\"\nimport { fromHex } from \"@polkadot-api/utils\"\n\nexport const mergeUint8 = (inputs: Array<Uint8Array>): Uint8Array => {\n const len = inputs.length\n let totalLen = 0\n for (let i = 0; i < len; i++) totalLen += inputs[i].byteLength\n const result = new Uint8Array(totalLen)\n\n for (let idx = 0, at = 0; idx < len; idx++) {\n const current = inputs[idx]\n result.set(current, at)\n at += current.byteLength\n }\n\n return result\n}\n\nexport const toBytes = (input: Uint8Array | HexString) =>\n typeof input === \"string\" ? fromHex(input) : input\n\nexport const compactTypeRefs = {\n null: \"void\" as const,\n u8: \"compactU8\" as const,\n u16: \"compactU16\" as const,\n u32: \"compactU32\" as const,\n u64: \"compactU64\" as const,\n u128: \"compactU128\" as const,\n u256: \"compactU256\" as const,\n}\n","import {\n HexString,\n _void,\n compact,\n createDecoder,\n i128,\n i16,\n i256,\n i32,\n i64,\n i8,\n str,\n u128,\n u16,\n u256,\n u32,\n u64,\n u8,\n} from \"@polkadot-api/substrate-bindings\"\nimport { Lookup, TypeDef, TypeRef } from \"./codecs\"\n\nconst typeRefDecoders = {\n bool: u8,\n char: u8,\n str,\n u8,\n u16,\n u32,\n u64,\n u128,\n u256,\n i8,\n i16,\n i32,\n i64,\n i128,\n i256,\n void: _void,\n compactU8: compact,\n compactU16: compact,\n compactU32: compact,\n compactU64: compact,\n compactU128: compact,\n compactU256: compact,\n}\n\nconst innerDecodeAndCollect = (\n input: Uint8Array,\n typeRef: TypeRef,\n idToLookups: Map<number, Array<number>>,\n lookup: Lookup,\n collected: Set<number>,\n) => {\n if (typeRef.tag !== \"perId\") {\n typeRefDecoders[typeRef.tag][1](input)\n return\n }\n\n const handleTypeRef = (typeRef: TypeRef) => {\n innerDecodeAndCollect(input, typeRef, idToLookups, lookup, collected)\n }\n\n const lookupIdxs = idToLookups.get(typeRef.value)!\n const [currentIdx] = lookupIdxs\n const current = lookup[currentIdx]\n\n if (lookupIdxs.length === 1) collected.add(currentIdx)\n\n switch (current.typeDef.tag) {\n case \"enumeration\": {\n const selectedIdx = u8.dec(input)\n const [selected, collectedIdx] = lookupIdxs\n .map(\n (lookupIdx) =>\n [lookup[lookupIdx].typeDef, lookupIdx] as [\n TypeDef & { tag: \"enumeration\" },\n number,\n ],\n )\n .find(([x]) => x.value.index === selectedIdx)!\n collected.add(collectedIdx)\n selected.value.fields.forEach(({ ty }) => {\n handleTypeRef(ty)\n })\n break\n }\n case \"sequence\": {\n const len = compact.dec(input)\n for (let i = 0; i < len; i++) handleTypeRef(current.typeDef.value)\n break\n }\n case \"array\": {\n for (let i = 0; i < current.typeDef.value.len; i++)\n handleTypeRef(current.typeDef.value.typeParam)\n break\n }\n case \"composite\": {\n current.typeDef.value.forEach((x) => {\n handleTypeRef(x.ty)\n })\n break\n }\n case \"tuple\": {\n current.typeDef.value.forEach(handleTypeRef)\n break\n }\n case \"bitSequence\":\n throw new Error(\"bitSequence is not supported\")\n }\n}\n\nexport const decodeAndCollectKnownLeafs = (\n data: Uint8Array | HexString,\n typeRefs: Array<TypeRef>,\n lookup: Lookup,\n): Array<number> => {\n let input = new Uint8Array()\n createDecoder((_input) => {\n input = _input\n })(data)\n\n const idToLookups = new Map<number, number[]>()\n lookup.forEach((lookup, idx) => {\n const arr = idToLookups.get(lookup.typeId)\n if (arr) arr.push(idx)\n else idToLookups.set(lookup.typeId, [idx])\n })\n\n const result = new Set<number>()\n typeRefs.forEach((typeRef) => {\n innerDecodeAndCollect(input, typeRef, idToLookups, lookup, result)\n })\n\n return [...result].sort((a, b) => a - b)\n}\n","const getLevelFromIdx = (idx: number) => Math.log2(idx + 1) | 0\nconst getAncestorIdx = (from: number, nLevels: number) =>\n ((from + 1) >> nLevels) - 1\n\nexport function getProofData(\n leaves: Array<Uint8Array>,\n knownLeavesIdxs: Array<number>,\n) {\n const knownLeaves = knownLeavesIdxs.map((idx) => leaves[idx])\n\n const startingIdx = leaves.length - 1\n const leafIdxs = knownLeavesIdxs.map((idx) => startingIdx + idx)\n\n const proofIdxs: Array<number> = []\n if (leafIdxs.length) {\n const nLevels = getLevelFromIdx(leafIdxs.at(-1)!)\n const splitPosition = Math.pow(2, nLevels) - 1\n const splitIdx = leafIdxs.findIndex((x) => x >= splitPosition)\n if (splitIdx > 0) {\n leafIdxs.unshift(...leafIdxs.splice(splitIdx))\n knownLeaves.unshift(...knownLeaves.splice(splitIdx))\n }\n }\n\n let targetIdx = 0\n const traverse = (nodeIdx: number): void => {\n if (targetIdx === leafIdxs.length) {\n proofIdxs.push(nodeIdx)\n return\n }\n\n const target = leafIdxs[targetIdx]\n if (target === nodeIdx) {\n ++targetIdx\n return\n }\n\n const currentLevel = getLevelFromIdx(nodeIdx)\n const targetLevel = getLevelFromIdx(target)\n\n if (nodeIdx !== getAncestorIdx(target, targetLevel - currentLevel)) {\n proofIdxs.push(nodeIdx)\n return\n }\n\n const leftSon = 2 * nodeIdx + 1\n traverse(leftSon)\n traverse(leftSon + 1)\n }\n traverse(0)\n\n return {\n leaves: knownLeaves,\n leafIdxs,\n proofIdxs,\n }\n}\n","import {\n Blake3256,\n HexString,\n compact,\n u32,\n} from \"@polkadot-api/substrate-bindings\"\nimport {\n ExtraInfo,\n ExtrinsicMetadata,\n LookupValue,\n MetadataDigest,\n ScalePrimitive,\n TypeRef,\n extraInfo,\n extrinsicMetadata,\n lookupType,\n metadataDigest,\n extrinsicDec,\n} from \"./codecs\"\nimport { getAccessibleTypes } from \"./get-accessible-types\"\nimport { getLookup } from \"./get-lookup\"\nimport { getMetadata } from \"./get-metadata\"\nimport { compactTypeRefs, mergeUint8, toBytes } from \"./utils\"\nimport { decodeAndCollectKnownLeafs } from \"./decode-and-collect\"\nimport { getProofData } from \"./proof\"\n\nexport interface MetadataMerkleizer {\n /**\n * @returns Digest value of the metadata (aka its merkleized root-hash)\n */\n digest: () => Uint8Array\n\n /**\n * Get proof for an `Extrinsic`.\n *\n * @param transaction Encoded `Extrinsic`, both signed or unsigned.\n * @param txAdditionalSigned Optionally collect types for given\n * `additionalSigned` part of signedExtensions.\n * @returns Encoded `Proof`\n */\n getProofForExtrinsic: (\n transaction: Uint8Array | HexString,\n txAdditionalSigned?: Uint8Array | HexString,\n ) => Uint8Array\n\n /**\n * Get proof for `ExtrinsicPayload` parts.\n *\n * @param callData Call data of the transaction. It has to be\n * bare; i.e.\n * without prepended compact length.\n * @param includedInExtrinsic Extra part of the signed extensions, all of\n * them concatenated.\n * @param includedInSignedData Additional signed part of the signed\n * extensions, all of them concatenated.\n * @returns Encoded `Proof`\n */\n getProofForExtrinsicParts: (\n callData: Uint8Array | HexString,\n includedInExtrinsic: Uint8Array | HexString,\n includedInSignedData: Uint8Array | HexString,\n ) => Uint8Array\n\n /**\n * Get proof for `ExtrinsicPayload`.\n *\n * @param extrinsicPayload Call data, extra part of signedExtensions and\n * additional signed part of signedExtensions\n * concatenated. It has to be bare; i.e. without\n * prepended compact length.\n * @returns Encoded `Proof`\n */\n getProofForExtrinsicPayload: (\n extrinsicPayload: Uint8Array | HexString,\n ) => Uint8Array\n}\n\nexport const merkleizeMetadata = (\n metadataBytes: Uint8Array | HexString,\n info: ExtraInfo,\n): MetadataMerkleizer => {\n const metadata = getMetadata(metadataBytes)\n\n const definitions = new Map<number, LookupValue>(\n metadata.lookup.map((value) => [value.id, value]),\n )\n const accessibleTypes = getAccessibleTypes(metadata, definitions)\n const getPrimitive = (frameId: number): ScalePrimitive[\"tag\"] | null => {\n const {\n def: { tag, value },\n } = definitions.get(frameId)!\n\n if (tag === \"primitive\") return value.tag\n\n if ((tag !== \"composite\" && tag !== \"tuple\") || value.length > 1)\n throw new Error(\"The provided definition doesn't map to a primitive\")\n\n return value.length === 0\n ? null // signals `void`\n : getPrimitive(tag === \"tuple\" ? value[0] : value[0].type)\n }\n\n const getTypeRef = (frameId: number): TypeRef => {\n const { def } = definitions.get(frameId)!\n\n if (def.tag === \"primitive\") return { tag: def.value.tag, value: undefined }\n\n if (def.tag === \"compact\") {\n const primitive = getPrimitive(def.value)\n const tag = compactTypeRefs[primitive as \"u8\"]\n if (!tag) throw new Error(\"Invalid primitive for Compact\")\n return { tag, value: undefined }\n }\n\n return accessibleTypes.has(frameId)\n ? { tag: \"perId\", value: accessibleTypes.get(frameId)! }\n : { tag: \"void\", value: undefined }\n }\n\n const extrinsic: ExtrinsicMetadata = {\n version: metadata.extrinsic.version,\n addressTy: getTypeRef(metadata.extrinsic.address),\n callTy: getTypeRef(metadata.extrinsic.call),\n signatureTy: getTypeRef(metadata.extrinsic.signature),\n signedExtensions: metadata.extrinsic.signedExtensions.map((se) => ({\n identifier: se.identifier,\n includedInExtrinsic: getTypeRef(se.type),\n includedInSignedData: getTypeRef(se.additionalSigned),\n })),\n }\n\n const lookup = getLookup(\n definitions,\n accessibleTypes,\n getTypeRef,\n getPrimitive,\n )\n const lookupEncoded = lookup.map(lookupType.enc)\n\n let hashTree: Array<Uint8Array> | undefined\n const getHashTree = (): Array<Uint8Array> => {\n if (hashTree) return hashTree\n\n if (!lookupEncoded.length) return (hashTree = [new Uint8Array(32).fill(0)])\n\n hashTree = new Array(lookupEncoded.length * 2 - 1)\n\n let leavesStartIdx = lookupEncoded.length - 1\n for (let i = 0; i < lookupEncoded.length; i++)\n hashTree[leavesStartIdx + i] = Blake3256(lookupEncoded[i])\n\n for (let i = hashTree.length - 2; i > 0; i -= 2)\n hashTree[(i - 1) / 2] = Blake3256(\n mergeUint8([hashTree[i], hashTree[i + 1]]),\n )\n\n return hashTree\n }\n\n let digested: undefined | Uint8Array\n const digest = () => {\n if (digested) return digested\n const rootLookupHash = getHashTree()[0]\n\n const digest: MetadataDigest = {\n tag: \"V1\",\n value: {\n typeInformationTreeRoot: rootLookupHash,\n extrinsicMetadataHash: Blake3256(extrinsicMetadata.enc(extrinsic)),\n ...info,\n },\n }\n\n return (digested = Blake3256(metadataDigest.enc(digest)))\n }\n\n const generateProof = (knownIndexes: number[]) => {\n const proofData = getProofData(lookupEncoded, knownIndexes)\n\n const hashTree = getHashTree()\n const proofs = proofData.proofIdxs.map((idx) => hashTree[idx])\n\n return mergeUint8([\n compact.enc(proofData.leaves.length),\n ...proofData.leaves,\n compact.enc(proofData.leafIdxs.length),\n ...proofData.leafIdxs.map((x) => u32.enc(x)),\n compact.enc(proofs.length),\n ...proofs,\n extrinsicMetadata.enc(extrinsic),\n extraInfo.enc(info),\n ])\n }\n\n const getProofForExtrinsicPayload = (\n extrinsicPayload: Uint8Array | HexString,\n ) => {\n const typeRefs: Array<TypeRef> = [\n extrinsic.callTy,\n ...extrinsic.signedExtensions.map((x) => x.includedInExtrinsic),\n ...extrinsic.signedExtensions.map((x) => x.includedInSignedData),\n ]\n return generateProof(\n decodeAndCollectKnownLeafs(extrinsicPayload, typeRefs, lookup),\n )\n }\n\n const getProofForExtrinsicParts = (\n callData: Uint8Array | HexString,\n includedInExtrinsic: Uint8Array | HexString,\n includedInSignedData: Uint8Array | HexString,\n ) => {\n const bytes = mergeUint8(\n [callData, includedInExtrinsic, includedInSignedData].map(toBytes),\n )\n return getProofForExtrinsicPayload(bytes)\n }\n\n const getProofForExtrinsic = (\n transaction: Uint8Array | HexString,\n txAdditionalSigned?: Uint8Array | HexString,\n ) => {\n let [, { version, signed }, bytes] = extrinsicDec(transaction)\n\n if (version !== extrinsic.version)\n throw new Error(\"Incorrect extrinsic version\")\n\n const typeRefs: TypeRef[] = signed\n ? [\n extrinsic.addressTy,\n extrinsic.signatureTy,\n ...extrinsic.signedExtensions.map((x) => x.includedInExtrinsic),\n extrinsic.callTy,\n ]\n : [extrinsic.callTy]\n\n if (txAdditionalSigned) {\n bytes = mergeUint8([bytes, toBytes(txAdditionalSigned)])\n typeRefs.push(\n ...extrinsic.signedExtensions.map((x) => x.includedInSignedData),\n )\n }\n\n return generateProof(decodeAndCollectKnownLeafs(bytes, typeRefs, lookup))\n }\n\n return {\n digest,\n getProofForExtrinsic,\n getProofForExtrinsicParts,\n getProofForExtrinsicPayload,\n }\n}\n"],"names":["u32","str","u16","u8","Struct","Bytes","ScaleEnum","_void","compactNumber","Option","Vector","bool","enhanceDecoder","Tuple","compact","metadata","fromHex","u64","u128","u256","i8","i16","i32","i64","i128","i256","typeRef","createDecoder","lookup","Blake3256","digest","hashTree"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/codecs.ts","../src/get-accessible-types.ts","../src/get-lookup.ts","../src/get-metadata.ts","../src/utils.ts","../src/decode-and-collect.ts","../src/proof.ts","../src/main.ts"],"sourcesContent":["import {\n Bytes,\n Codec,\n CodecType,\n Option,\n ScaleEnum,\n Struct,\n Tuple,\n V15,\n Vector,\n _void,\n bool,\n compact,\n compactNumber,\n enhanceDecoder,\n str,\n u16,\n u32,\n u8,\n} from \"@polkadot-api/substrate-bindings\"\n\nconst extraInfoInner = {\n specVersion: u32,\n specName: str,\n base58Prefix: u16,\n decimals: u8,\n tokenSymbol: str,\n}\nexport const extraInfo = Struct(extraInfoInner)\nexport type ExtraInfo = CodecType<typeof extraInfo>\n\nexport const hash = Bytes(32)\nexport const metadataDigest = ScaleEnum({\n V0: _void,\n V1: Struct({\n typeInformationTreeRoot: hash,\n extrinsicMetadataHash: hash,\n ...extraInfoInner,\n }),\n})\nexport type MetadataDigest = CodecType<typeof metadataDigest>\n\nexport const scalePrimitive = ScaleEnum({\n bool: _void,\n char: _void,\n str: _void,\n u8: _void,\n u16: _void,\n u32: _void,\n u64: _void,\n u128: _void,\n u256: _void,\n i8: _void,\n i16: _void,\n i32: _void,\n i64: _void,\n i128: _void,\n i256: _void,\n})\nexport type ScalePrimitive = CodecType<typeof scalePrimitive>\n\nexport const typeRef = ScaleEnum({\n bool: _void,\n char: _void,\n str: _void,\n u8: _void,\n u16: _void,\n u32: _void,\n u64: _void,\n u128: _void,\n u256: _void,\n i8: _void,\n i16: _void,\n i32: _void,\n i64: _void,\n i128: _void,\n i256: _void,\n compactU8: _void,\n compactU16: _void,\n compactU32: _void,\n compactU64: _void,\n compactU128: _void,\n compactU256: _void,\n void: _void,\n perId: compactNumber,\n})\nexport type TypeRef = CodecType<typeof typeRef>\n\nconst field = Struct({\n name: Option(str),\n ty: typeRef,\n typeName: Option(str),\n})\nexport const typeDef = ScaleEnum({\n composite: Vector(field),\n enumeration: Struct({\n name: str,\n fields: Vector(field),\n index: compactNumber,\n }),\n sequence: typeRef,\n array: Struct({\n len: u32,\n typeParam: typeRef,\n }),\n tuple: Vector(typeRef),\n bitSequence: Struct({\n numBytes: u8,\n leastSignificantBitFirst: bool,\n }),\n})\nexport type TypeDef = CodecType<typeof typeDef>\n\nexport const lookupType = Struct({\n path: Vector(str),\n typeDef: typeDef,\n typeId: compactNumber,\n})\nexport type LookupEntry = CodecType<typeof lookupType>\nexport type Lookup = Array<LookupEntry>\nexport const lookup: Codec<Lookup> = Vector(lookupType)\n\nexport const extrinsicMetadata = Struct({\n version: u8,\n addressTy: typeRef,\n callTy: typeRef,\n signatureTy: typeRef,\n signedExtensions: Vector(\n Struct({\n identifier: str,\n includedInExtrinsic: typeRef,\n includedInSignedData: typeRef,\n }),\n ),\n})\nexport type ExtrinsicMetadata = CodecType<typeof extrinsicMetadata>\nexport type LookupValue = V15[\"lookup\"] extends Array<infer T> ? T : never\n\nconst versionDecoder = enhanceDecoder(u8[1], (value) => ({\n version: value & ~(1 << 7),\n signed: !!(value & (1 << 7)),\n}))\n\nexport const extrinsicDec = Tuple.dec(\n compact[1],\n versionDecoder,\n Bytes(Infinity)[1],\n)\n\nexport const proof = Struct({\n leaves: lookup,\n leafIdxs: Vector(u32),\n proofs: Vector(hash),\n extrinsic: extrinsicMetadata,\n info: extraInfo,\n})\nexport type Proof = CodecType<typeof proof>\n","import { V15 } from \"@polkadot-api/substrate-bindings\"\nimport { LookupValue } from \"./codecs\"\n\nexport const getAccessibleTypes = (\n metadata: V15,\n definitions: Map<number, LookupValue>,\n): Map<number, number> => {\n const types = new Set<number>()\n\n const collectTypesFromId = (id: number) => {\n if (types.has(id)) return\n\n const { tag, value } = definitions.get(id)!.def\n switch (tag) {\n case \"composite\":\n if (!value.length) break\n types.add(id)\n value.forEach(({ type }) => {\n collectTypesFromId(type)\n })\n break\n case \"variant\":\n if (!value.length) break\n types.add(id)\n value.forEach(({ fields }) => {\n fields.forEach(({ type }) => {\n collectTypesFromId(type)\n })\n })\n break\n case \"tuple\":\n if (!value.length) break\n types.add(id)\n value.forEach(collectTypesFromId)\n break\n case \"sequence\":\n types.add(id)\n collectTypesFromId(value)\n break\n case \"array\":\n types.add(id)\n collectTypesFromId(value.type)\n break\n case \"bitSequence\": // bitSequence inner types are not stored\n types.add(id)\n // primitive and compact are not stored\n }\n }\n\n collectTypesFromId(metadata.extrinsic.call)\n collectTypesFromId(metadata.extrinsic.address)\n collectTypesFromId(metadata.extrinsic.signature)\n metadata.extrinsic.signedExtensions.forEach(({ type, additionalSigned }) => {\n collectTypesFromId(type)\n collectTypesFromId(additionalSigned)\n })\n\n const sortedTypes = [...types].sort((a, b) => a - b)\n return new Map(sortedTypes.map((value, idx) => [value, idx]))\n}\n","import { Lookup, LookupValue, ScalePrimitive, TypeDef, TypeRef } from \"./codecs\"\n\nconst bitSequenceBytes = {\n u8: 1,\n u16: 2,\n u32: 4,\n u64: 8,\n}\n\nconst constructTypeDef = (\n definitions: Map<number, LookupValue>,\n getTypeRef: (frameId: number) => TypeRef,\n getPrimitive: (frameId: number) => ScalePrimitive[\"tag\"] | null,\n frameId: number,\n): TypeDef[] => {\n const {\n def: { tag, value },\n } = definitions.get(frameId)!\n switch (tag) {\n case \"composite\":\n return [\n {\n tag,\n value: value.map((f) => ({\n name: f.name,\n typeName: f.typeName,\n ty: getTypeRef(f.type),\n })),\n },\n ]\n case \"variant\": {\n return value.map((v) => ({\n tag: \"enumeration\",\n value: {\n name: v.name,\n index: v.index,\n fields: v.fields.map((f) => ({\n name: f.name,\n typeName: f.typeName,\n ty: getTypeRef(f.type),\n })),\n },\n }))\n }\n case \"sequence\":\n return [\n {\n tag,\n value: getTypeRef(value),\n },\n ]\n case \"array\":\n return [\n {\n tag,\n value: {\n len: value.len,\n typeParam: getTypeRef(value.type),\n },\n },\n ]\n case \"tuple\":\n return [\n {\n tag,\n value: value.map(getTypeRef),\n },\n ]\n case \"bitSequence\": {\n const primitive = getPrimitive(value.bitStoreType)\n const numBytes = bitSequenceBytes[primitive as \"u8\"]\n if (!numBytes) throw new Error(\"Invalid primitive for BitSequence\")\n\n const storeOrderPath = definitions.get(value.bitOrderType)!.path\n const leastSignificantBitFirst = storeOrderPath.includes(\"Lsb0\")\n if (!leastSignificantBitFirst && !storeOrderPath.includes(\"Msb0\"))\n throw new Error(\"BitOrderType not recognized\")\n\n return [\n {\n tag: \"bitSequence\",\n value: { numBytes, leastSignificantBitFirst },\n },\n ]\n }\n }\n\n throw new Error(`FrameId(${frameId}) should have been filtered out`)\n}\n\nexport const getLookup = (\n definitions: Map<number, LookupValue>,\n accessibleTypes: Map<number, number>,\n getTypeRef: (frameId: number) => TypeRef,\n getPrimitive: (frameId: number) => ScalePrimitive[\"tag\"] | null,\n) => {\n const typeTree: Lookup = []\n ;[...accessibleTypes.entries()].forEach(([frameId, typeId]) => {\n const { path } = definitions.get(frameId)!\n constructTypeDef(definitions, getTypeRef, getPrimitive, frameId).forEach(\n (typeDef) => {\n typeTree.push({\n path,\n typeId,\n typeDef,\n })\n },\n )\n })\n\n typeTree.sort((a, b) => {\n if (a.typeId !== b.typeId) return a.typeId - b.typeId // in general\n // should only happen for variants\n if (a.typeDef.tag !== \"enumeration\" || b.typeDef.tag !== \"enumeration\")\n throw new Error(\"Found two types with same id\")\n return a.typeDef.value.index - b.typeDef.value.index\n })\n return typeTree\n}\n","import {\n decAnyMetadata,\n type HexString,\n type V15,\n} from \"@polkadot-api/substrate-bindings\"\n\nexport const getMetadata = (input: Uint8Array | HexString): V15 => {\n try {\n const { metadata } = decAnyMetadata(input)\n if (metadata.tag !== \"v15\") throw new Error(\"Wrong metadata version\")\n return metadata.value\n } catch (e) {\n throw e || new Error(\"Unable to decode metadata\")\n }\n}\n","import { type HexString } from \"@polkadot-api/substrate-bindings\"\nimport { fromHex } from \"@polkadot-api/utils\"\n\nexport const mergeUint8 = (inputs: Array<Uint8Array>): Uint8Array => {\n const len = inputs.length\n let totalLen = 0\n for (let i = 0; i < len; i++) totalLen += inputs[i].byteLength\n const result = new Uint8Array(totalLen)\n\n for (let idx = 0, at = 0; idx < len; idx++) {\n const current = inputs[idx]\n result.set(current, at)\n at += current.byteLength\n }\n\n return result\n}\n\nexport const toBytes = (input: Uint8Array | HexString) =>\n typeof input === \"string\" ? fromHex(input) : input\n\nexport const compactTypeRefs = {\n null: \"void\" as const,\n u8: \"compactU8\" as const,\n u16: \"compactU16\" as const,\n u32: \"compactU32\" as const,\n u64: \"compactU64\" as const,\n u128: \"compactU128\" as const,\n u256: \"compactU256\" as const,\n}\n","import {\n HexString,\n _void,\n compact,\n createDecoder,\n i128,\n i16,\n i256,\n i32,\n i64,\n i8,\n str,\n u128,\n u16,\n u256,\n u32,\n u64,\n u8,\n} from \"@polkadot-api/substrate-bindings\"\nimport { Lookup, TypeDef, TypeRef } from \"./codecs\"\n\nconst typeRefDecoders = {\n bool: u8,\n char: u8,\n str,\n u8,\n u16,\n u32,\n u64,\n u128,\n u256,\n i8,\n i16,\n i32,\n i64,\n i128,\n i256,\n void: _void,\n compactU8: compact,\n compactU16: compact,\n compactU32: compact,\n compactU64: compact,\n compactU128: compact,\n compactU256: compact,\n}\n\nconst innerDecodeAndCollect = (\n input: Uint8Array,\n typeRef: TypeRef,\n idToLookups: Map<number, Array<number>>,\n lookup: Lookup,\n collected: Set<number>,\n) => {\n if (typeRef.tag !== \"perId\") {\n typeRefDecoders[typeRef.tag][1](input)\n return\n }\n\n const handleTypeRef = (typeRef: TypeRef) => {\n innerDecodeAndCollect(input, typeRef, idToLookups, lookup, collected)\n }\n\n const lookupIdxs = idToLookups.get(typeRef.value)!\n const [currentIdx] = lookupIdxs\n const current = lookup[currentIdx]\n\n if (lookupIdxs.length === 1) collected.add(currentIdx)\n\n switch (current.typeDef.tag) {\n case \"enumeration\": {\n const selectedIdx = u8.dec(input)\n const [selected, collectedIdx] = lookupIdxs\n .map(\n (lookupIdx) =>\n [lookup[lookupIdx].typeDef, lookupIdx] as [\n TypeDef & { tag: \"enumeration\" },\n number,\n ],\n )\n .find(([x]) => x.value.index === selectedIdx)!\n collected.add(collectedIdx)\n selected.value.fields.forEach(({ ty }) => {\n handleTypeRef(ty)\n })\n break\n }\n case \"sequence\": {\n const len = compact.dec(input)\n for (let i = 0; i < len; i++) handleTypeRef(current.typeDef.value)\n break\n }\n case \"array\": {\n for (let i = 0; i < current.typeDef.value.len; i++)\n handleTypeRef(current.typeDef.value.typeParam)\n break\n }\n case \"composite\": {\n current.typeDef.value.forEach((x) => {\n handleTypeRef(x.ty)\n })\n break\n }\n case \"tuple\": {\n current.typeDef.value.forEach(handleTypeRef)\n break\n }\n case \"bitSequence\":\n throw new Error(\"bitSequence is not supported\")\n }\n}\n\nexport const decodeAndCollectKnownLeafs = (\n data: Uint8Array | HexString,\n typeRefs: Array<TypeRef>,\n lookup: Lookup,\n): Array<number> => {\n let input = new Uint8Array()\n createDecoder((_input) => {\n input = _input\n })(data)\n\n const idToLookups = new Map<number, number[]>()\n lookup.forEach((lookup, idx) => {\n const arr = idToLookups.get(lookup.typeId)\n if (arr) arr.push(idx)\n else idToLookups.set(lookup.typeId, [idx])\n })\n\n const result = new Set<number>()\n typeRefs.forEach((typeRef) => {\n innerDecodeAndCollect(input, typeRef, idToLookups, lookup, result)\n })\n\n return [...result].sort((a, b) => a - b)\n}\n","const getLevelFromIdx = (idx: number) => Math.log2(idx + 1) | 0\nconst getAncestorIdx = (from: number, nLevels: number) =>\n ((from + 1) >> nLevels) - 1\n\nexport function getProofData(\n leaves: Array<Uint8Array>,\n knownLeavesIdxs: Array<number>,\n) {\n const knownLeaves = knownLeavesIdxs.map((idx) => leaves[idx])\n\n const startingIdx = leaves.length - 1\n const leafIdxs = knownLeavesIdxs.map((idx) => startingIdx + idx)\n\n const proofIdxs: Array<number> = []\n if (leafIdxs.length) {\n const nLevels = getLevelFromIdx(leafIdxs.at(-1)!)\n const splitPosition = Math.pow(2, nLevels) - 1\n const splitIdx = leafIdxs.findIndex((x) => x >= splitPosition)\n if (splitIdx > 0) {\n leafIdxs.unshift(...leafIdxs.splice(splitIdx))\n knownLeaves.unshift(...knownLeaves.splice(splitIdx))\n }\n }\n\n let targetIdx = 0\n const traverse = (nodeIdx: number): void => {\n if (targetIdx === leafIdxs.length) {\n proofIdxs.push(nodeIdx)\n return\n }\n\n const target = leafIdxs[targetIdx]\n if (target === nodeIdx) {\n ++targetIdx\n return\n }\n\n const currentLevel = getLevelFromIdx(nodeIdx)\n const targetLevel = getLevelFromIdx(target)\n\n if (nodeIdx !== getAncestorIdx(target, targetLevel - currentLevel)) {\n proofIdxs.push(nodeIdx)\n return\n }\n\n const leftSon = 2 * nodeIdx + 1\n traverse(leftSon)\n traverse(leftSon + 1)\n }\n traverse(0)\n\n return {\n leaves: knownLeaves,\n leafIdxs,\n proofIdxs,\n }\n}\n","import {\n Blake3256,\n HexString,\n compact,\n u32,\n} from \"@polkadot-api/substrate-bindings\"\nimport {\n ExtraInfo,\n ExtrinsicMetadata,\n LookupValue,\n MetadataDigest,\n ScalePrimitive,\n TypeRef,\n extraInfo,\n extrinsicMetadata,\n lookupType,\n metadataDigest,\n extrinsicDec,\n} from \"./codecs\"\nimport { getAccessibleTypes } from \"./get-accessible-types\"\nimport { getLookup } from \"./get-lookup\"\nimport { getMetadata } from \"./get-metadata\"\nimport { compactTypeRefs, mergeUint8, toBytes } from \"./utils\"\nimport { decodeAndCollectKnownLeafs } from \"./decode-and-collect\"\nimport { getProofData } from \"./proof\"\nimport { getDynamicBuilder, getLookupFn } from \"@polkadot-api/metadata-builders\"\n\nexport interface MetadataMerkleizer {\n /**\n * @returns Digest value of the metadata (aka its merkleized root-hash)\n */\n digest: () => Uint8Array\n\n /**\n * Get proof for an `Extrinsic`.\n *\n * @param transaction Encoded `Extrinsic`, both signed or unsigned.\n * @param txAdditionalSigned Optionally collect types for given\n * `additionalSigned` part of signedExtensions.\n * @returns Encoded `Proof`\n */\n getProofForExtrinsic: (\n transaction: Uint8Array | HexString,\n txAdditionalSigned?: Uint8Array | HexString,\n ) => Uint8Array\n\n /**\n * Get proof for `ExtrinsicPayload` parts.\n *\n * @param callData Call data of the transaction. It has to be\n * bare; i.e.\n * without prepended compact length.\n * @param includedInExtrinsic Extra part of the signed extensions, all of\n * them concatenated.\n * @param includedInSignedData Additional signed part of the signed\n * extensions, all of them concatenated.\n * @returns Encoded `Proof`\n */\n getProofForExtrinsicParts: (\n callData: Uint8Array | HexString,\n includedInExtrinsic: Uint8Array | HexString,\n includedInSignedData: Uint8Array | HexString,\n ) => Uint8Array\n\n /**\n * Get proof for `ExtrinsicPayload`.\n *\n * @param extrinsicPayload Call data, extra part of signedExtensions and\n * additional signed part of signedExtensions\n * concatenated. It has to be bare; i.e. without\n * prepended compact length.\n * @returns Encoded `Proof`\n */\n getProofForExtrinsicPayload: (\n extrinsicPayload: Uint8Array | HexString,\n ) => Uint8Array\n}\n\nconst assertExpected = <T>(name: string, expected: T, received?: T): void => {\n if (received != null && received !== expected)\n throw new Error(\n `${name} not expected. Received ${received} expected ${expected}`,\n )\n}\n\nexport const merkleizeMetadata = (\n metadataBytes: Uint8Array | HexString,\n {\n decimals,\n tokenSymbol,\n ...hinted\n }: { decimals: number; tokenSymbol: string } & Partial<ExtraInfo>,\n): MetadataMerkleizer => {\n const metadata = getMetadata(metadataBytes)\n const { ss58Prefix, buildDefinition } = getDynamicBuilder(\n getLookupFn(metadata),\n )\n if (ss58Prefix == null) throw new Error(\"SS58 prefix not found in metadata\")\n assertExpected(\"SS58 prefix\", ss58Prefix, hinted.base58Prefix)\n const version = metadata.pallets\n .find((x) => x.name === \"System\")\n ?.constants.find((x) => x.name === \"Version\")\n if (version == null) throw new Error(\"System.Version constant not found\")\n const { spec_name: specName, spec_version: specVersion } = buildDefinition(\n version.type,\n ).dec(version.value)\n if (typeof specName !== \"string\" || typeof specVersion !== \"number\")\n throw new Error(\"Spec name or spec version not found\")\n assertExpected(\"Spec name\", specName, hinted.specName)\n assertExpected(\"Spec version\", specVersion, hinted.specVersion)\n\n const info: ExtraInfo = {\n decimals,\n tokenSymbol,\n specVersion,\n specName,\n base58Prefix: ss58Prefix,\n }\n const definitions = new Map<number, LookupValue>(\n metadata.lookup.map((value) => [value.id, value]),\n )\n const accessibleTypes = getAccessibleTypes(metadata, definitions)\n const getPrimitive = (frameId: number): ScalePrimitive[\"tag\"] | null => {\n const {\n def: { tag, value },\n } = definitions.get(frameId)!\n\n if (tag === \"primitive\") return value.tag\n\n if ((tag !== \"composite\" && tag !== \"tuple\") || value.length > 1)\n throw new Error(\"The provided definition doesn't map to a primitive\")\n\n return value.length === 0\n ? null // signals `void`\n : getPrimitive(tag === \"tuple\" ? value[0] : value[0].type)\n }\n\n const getTypeRef = (frameId: number): TypeRef => {\n const { def } = definitions.get(frameId)!\n\n if (def.tag === \"primitive\") return { tag: def.value.tag, value: undefined }\n\n if (def.tag === \"compact\") {\n const primitive = getPrimitive(def.value)\n const tag = compactTypeRefs[primitive as \"u8\"]\n if (!tag) throw new Error(\"Invalid primitive for Compact\")\n return { tag, value: undefined }\n }\n\n return accessibleTypes.has(frameId)\n ? { tag: \"perId\", value: accessibleTypes.get(frameId)! }\n : { tag: \"void\", value: undefined }\n }\n\n const extrinsic: ExtrinsicMetadata = {\n version: metadata.extrinsic.version,\n addressTy: getTypeRef(metadata.extrinsic.address),\n callTy: getTypeRef(metadata.extrinsic.call),\n signatureTy: getTypeRef(metadata.extrinsic.signature),\n signedExtensions: metadata.extrinsic.signedExtensions.map((se) => ({\n identifier: se.identifier,\n includedInExtrinsic: getTypeRef(se.type),\n includedInSignedData: getTypeRef(se.additionalSigned),\n })),\n }\n\n const lookup = getLookup(\n definitions,\n accessibleTypes,\n getTypeRef,\n getPrimitive,\n )\n const lookupEncoded = lookup.map(lookupType.enc)\n\n let hashTree: Array<Uint8Array> | undefined\n const getHashTree = (): Array<Uint8Array> => {\n if (hashTree) return hashTree\n\n if (!lookupEncoded.length) return (hashTree = [new Uint8Array(32).fill(0)])\n\n hashTree = new Array(lookupEncoded.length * 2 - 1)\n\n let leavesStartIdx = lookupEncoded.length - 1\n for (let i = 0; i < lookupEncoded.length; i++)\n hashTree[leavesStartIdx + i] = Blake3256(lookupEncoded[i])\n\n for (let i = hashTree.length - 2; i > 0; i -= 2)\n hashTree[(i - 1) / 2] = Blake3256(\n mergeUint8([hashTree[i], hashTree[i + 1]]),\n )\n\n return hashTree\n }\n\n let digested: undefined | Uint8Array\n const digest = () => {\n if (digested) return digested\n const rootLookupHash = getHashTree()[0]\n\n const digest: MetadataDigest = {\n tag: \"V1\",\n value: {\n typeInformationTreeRoot: rootLookupHash,\n extrinsicMetadataHash: Blake3256(extrinsicMetadata.enc(extrinsic)),\n ...info,\n },\n }\n\n return (digested = Blake3256(metadataDigest.enc(digest)))\n }\n\n const generateProof = (knownIndexes: number[]) => {\n const proofData = getProofData(lookupEncoded, knownIndexes)\n\n const hashTree = getHashTree()\n const proofs = proofData.proofIdxs.map((idx) => hashTree[idx])\n\n return mergeUint8([\n compact.enc(proofData.leaves.length),\n ...proofData.leaves,\n compact.enc(proofData.leafIdxs.length),\n ...proofData.leafIdxs.map((x) => u32.enc(x)),\n compact.enc(proofs.length),\n ...proofs,\n extrinsicMetadata.enc(extrinsic),\n extraInfo.enc(info),\n ])\n }\n\n const getProofForExtrinsicPayload = (\n extrinsicPayload: Uint8Array | HexString,\n ) => {\n const typeRefs: Array<TypeRef> = [\n extrinsic.callTy,\n ...extrinsic.signedExtensions.map((x) => x.includedInExtrinsic),\n ...extrinsic.signedExtensions.map((x) => x.includedInSignedData),\n ]\n return generateProof(\n decodeAndCollectKnownLeafs(extrinsicPayload, typeRefs, lookup),\n )\n }\n\n const getProofForExtrinsicParts = (\n callData: Uint8Array | HexString,\n includedInExtrinsic: Uint8Array | HexString,\n includedInSignedData: Uint8Array | HexString,\n ) => {\n const bytes = mergeUint8(\n [callData, includedInExtrinsic, includedInSignedData].map(toBytes),\n )\n return getProofForExtrinsicPayload(bytes)\n }\n\n const getProofForExtrinsic = (\n transaction: Uint8Array | HexString,\n txAdditionalSigned?: Uint8Array | HexString,\n ) => {\n let [, { version, signed }, bytes] = extrinsicDec(transaction)\n\n if (version !== extrinsic.version)\n throw new Error(\"Incorrect extrinsic version\")\n\n const typeRefs: TypeRef[] = signed\n ? [\n extrinsic.addressTy,\n extrinsic.signatureTy,\n ...extrinsic.signedExtensions.map((x) => x.includedInExtrinsic),\n extrinsic.callTy,\n ]\n : [extrinsic.callTy]\n\n if (txAdditionalSigned) {\n bytes = mergeUint8([bytes, toBytes(txAdditionalSigned)])\n typeRefs.push(\n ...extrinsic.signedExtensions.map((x) => x.includedInSignedData),\n )\n }\n\n return generateProof(decodeAndCollectKnownLeafs(bytes, typeRefs, lookup))\n }\n\n return {\n digest,\n getProofForExtrinsic,\n getProofForExtrinsicParts,\n getProofForExtrinsicPayload,\n }\n}\n"],"names":["u32","str","u16","u8","Struct","Bytes","ScaleEnum","_void","compactNumber","Option","Vector","bool","enhanceDecoder","Tuple","compact","decAnyMetadata","fromHex","u64","u128","u256","i8","i16","i32","i64","i128","i256","typeRef","createDecoder","lookup","getDynamicBuilder","getLookupFn","Blake3256","digest","hashTree","version"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@polkadot-api/merkleize-metadata",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.3",
|
|
4
4
|
"author": "Carlo Sala (https://github.com/carlosala)",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -35,11 +35,13 @@
|
|
|
35
35
|
"dist"
|
|
36
36
|
],
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@polkadot-api/
|
|
38
|
+
"@polkadot-api/metadata-builders": "0.7.0",
|
|
39
|
+
"@polkadot-api/substrate-bindings": "0.8.0",
|
|
39
40
|
"@polkadot-api/utils": "0.1.1"
|
|
40
41
|
},
|
|
41
42
|
"scripts": {
|
|
42
|
-
"build": "tsc --noEmit && rollup -c ../../rollup.config.js",
|
|
43
|
+
"build-core": "tsc --noEmit && rollup -c ../../rollup.config.js",
|
|
44
|
+
"build": "pnpm build-core",
|
|
43
45
|
"test": "vitest",
|
|
44
46
|
"lint": "prettier --check README.md \"src/**/*.{js,jsx,ts,tsx,json,md}\"",
|
|
45
47
|
"format": "prettier --write README.md \"src/**/*.{js,jsx,ts,tsx,json,md}\""
|