fix: decode Quantus block headers, which is what was actually broken
The console rendered nothing against Quantus and I had reported tier 3 as
working on the strength of a unit-level test. It was not working. This is the
fault.
`qp_header::Header` is not `sp_runtime::generic::Header`. `number` is a plain
u32 where Substrate writes a Compact, and a `zk_tree_root: H256` sits between
`extrinsics_root` and `digest` — deliberately, so the ZK root has a fixed offset
in the header preimage that miners cannot shift by manipulating the digest.
Reading a Quantus header as a Substrate one consumes 2 bytes where 4 were
written. Every field after shifts, and the digest vector eventually reads a byte
that is not a known DigestItem index, which surfaces three layers away as
`TypeError: innerDecoder is not a function`. papi retried the subfollow forever,
`runtime$` never emitted, and the page stayed blank.
The patched codec carries both layouts and picks by **round trip**: a layout is
right only if decoding and re-encoding reproduces the input byte for byte, which
also catches a short read, trailing bytes and a non-canonical compact. Trying
them in a fixed order and taking the first that survives is deterministic;
choosing by inspecting a byte would not be.
Pinned per version rather than by bare package name, unlike the signers-common
patch: four copies of substrate-bindings resolve in this tree and blockHeader.js
is not identical across majors — a bare-name key fails the whole install trying
to patch 0.19.0 and 0.6.0.
Two things this cost, both recorded because they are the kind that recur:
- My first attempt replaced the codec with a bare [enc, dec] pair, which
dropped scale-ts's `inner`. This console's own block.state.ts does
`blockHeader.inner.digests.inner`, so that module threw while evaluating,
`createRoot().render()` never ran, and the page was blank with nothing in
the UI — the same symptom as the bug, from the opposite cause. The patch now
copies the original codec and overrides only the decoder.
- The Poseidon block hash is NOT a second blocker, which I had claimed on #1
and #4 without checking. `getHasherFromHeader` returns a function that
throws rather than throwing, and only the extrinsic Analyzer page consumes
`hasher$`. Everything else works without it.
Verified in a browser this time, not by unit test: against mainnet the console
renders live data — Finalized 53,989, Best 54,089, block time — advancing, and
matching what the node reports. Polkadot still decodes through the same patched
codec, and garbage is refused rather than mis-read.
Residual: four "fetch header failed TypeError: e is not an object" on first load,
from the per-block detail fetch, not recurring since. Not diagnosed.
Refs #1, #4
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012uDUodEcRbBwNRi3UCmw8f
This commit is contained in:
99
patches/@polkadot-api__substrate-bindings@0.21.0.patch
Normal file
99
patches/@polkadot-api__substrate-bindings@0.21.0.patch
Normal file
@@ -0,0 +1,99 @@
|
||||
diff --git a/dist/codecs/blockHeader.js b/dist/codecs/blockHeader.js
|
||||
index 0675e59633a14c34148e90aa8c32bcfbc437330c..691ac4ede3c816bad444a6054860ed0bb3fcd37d 100644
|
||||
--- a/dist/codecs/blockHeader.js
|
||||
+++ b/dist/codecs/blockHeader.js
|
||||
@@ -1,4 +1,4 @@
|
||||
-import { enhanceCodec, Bytes, _void } from 'scale-ts';
|
||||
+import { enhanceCodec, Bytes, _void, u32 } from 'scale-ts';
|
||||
import '../utils/ss58-util.js';
|
||||
import './scale/Binary.js';
|
||||
import './scale/bitSequence.js';
|
||||
@@ -33,7 +33,23 @@ const diggest = Variant(
|
||||
[0, 4, 5, 6, 8]
|
||||
);
|
||||
const hex32 = Hex(32);
|
||||
-const blockHeader = Struct({
|
||||
+
|
||||
+// Quantus patch: this console serves two header layouts.
|
||||
+//
|
||||
+// `sp_runtime::generic::Header` encodes `number` with #[codec(compact)] and has
|
||||
+// no field between `extrinsics_root` and `digest`. Quantus's `qp_header::Header`
|
||||
+// does neither: `number` is a plain u32, and a `zk_tree_root: H256` sits before
|
||||
+// the digest — deliberately, so the ZK root has a fixed offset in the header
|
||||
+// preimage that miners cannot shift by manipulating the digest.
|
||||
+//
|
||||
+// Reading a Quantus header as a Substrate one consumes 2 bytes where 4 were
|
||||
+// written; every field after shifts, and the digest vector eventually reads a
|
||||
+// byte that is not a known DigestItem index. That surfaces three layers away as
|
||||
+// `TypeError: innerDecoder is not a function`, papi retries the subfollow
|
||||
+// forever, `runtime$` never emits, and the page renders nothing at all.
|
||||
+//
|
||||
+// See quantus/papi-console#4.
|
||||
+const substrateHeader = Struct({
|
||||
parentHash: hex32,
|
||||
number: compactNumber,
|
||||
stateRoot: hex32,
|
||||
@@ -41,5 +57,63 @@ const blockHeader = Struct({
|
||||
digests: Vector(diggest)
|
||||
});
|
||||
|
||||
+const quantusHeader = Struct({
|
||||
+ parentHash: hex32,
|
||||
+ number: u32,
|
||||
+ stateRoot: hex32,
|
||||
+ extrinsicRoot: hex32,
|
||||
+ zkTreeRoot: hex32,
|
||||
+ digests: Vector(diggest)
|
||||
+});
|
||||
+
|
||||
+const asBytes = (input) =>
|
||||
+ typeof input === "string"
|
||||
+ ? Uint8Array.from(
|
||||
+ input
|
||||
+ .slice(2)
|
||||
+ .match(/../g)
|
||||
+ ?.map((b) => parseInt(b, 16)) ?? []
|
||||
+ )
|
||||
+ : input;
|
||||
+
|
||||
+const sameBytes = (a, b) =>
|
||||
+ a.length === b.length && a.every((x, i) => x === b[i]);
|
||||
+
|
||||
+// Decide by round trip, not by guessing. A layout is right only if decoding and
|
||||
+// re-encoding reproduces the input byte for byte — which also catches a short
|
||||
+// read, trailing bytes, and a non-canonical compact. Trying the layouts in a
|
||||
+// fixed order and taking the first that survives that check is deterministic;
|
||||
+// picking one by inspecting a byte would not be.
|
||||
+const decodeEitherLayout = (input) => {
|
||||
+ const bytes = asBytes(input);
|
||||
+ let firstError;
|
||||
+
|
||||
+ for (const codec of [substrateHeader, quantusHeader]) {
|
||||
+ try {
|
||||
+ const value = codec.dec(bytes);
|
||||
+
|
||||
+ if (sameBytes(codec.enc(value), bytes)) return value;
|
||||
+ } catch (error) {
|
||||
+ firstError ??= error;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ throw firstError ?? new Error("block header matches no known layout");
|
||||
+};
|
||||
+
|
||||
+// Keep every property the original codec carried and override only the decoder.
|
||||
+// A scale-ts Struct exposes `inner` — its field codecs — and consumers reach for
|
||||
+// it: this console's own block.state.ts does `blockHeader.inner.digests.inner`.
|
||||
+// Replacing the codec with a bare [enc, dec] pair drops that, block.state.ts
|
||||
+// throws while its module is evaluating, `createRoot().render()` never runs, and
|
||||
+// the page is blank with no error on screen — the same symptom as the bug this
|
||||
+// patch exists to fix, from the opposite cause.
|
||||
+const blockHeader = Object.assign([], substrateHeader, {
|
||||
+ 0: substrateHeader.enc,
|
||||
+ 1: decodeEitherLayout,
|
||||
+ enc: substrateHeader.enc,
|
||||
+ dec: decodeEitherLayout
|
||||
+});
|
||||
+
|
||||
export { blockHeader };
|
||||
//# sourceMappingURL=blockHeader.js.map
|
||||
99
patches/@polkadot-api__substrate-bindings@0.21.1.patch
Normal file
99
patches/@polkadot-api__substrate-bindings@0.21.1.patch
Normal file
@@ -0,0 +1,99 @@
|
||||
diff --git a/dist/codecs/blockHeader.js b/dist/codecs/blockHeader.js
|
||||
index 0675e59633a14c34148e90aa8c32bcfbc437330c..691ac4ede3c816bad444a6054860ed0bb3fcd37d 100644
|
||||
--- a/dist/codecs/blockHeader.js
|
||||
+++ b/dist/codecs/blockHeader.js
|
||||
@@ -1,4 +1,4 @@
|
||||
-import { enhanceCodec, Bytes, _void } from 'scale-ts';
|
||||
+import { enhanceCodec, Bytes, _void, u32 } from 'scale-ts';
|
||||
import '../utils/ss58-util.js';
|
||||
import './scale/Binary.js';
|
||||
import './scale/bitSequence.js';
|
||||
@@ -33,7 +33,23 @@ const diggest = Variant(
|
||||
[0, 4, 5, 6, 8]
|
||||
);
|
||||
const hex32 = Hex(32);
|
||||
-const blockHeader = Struct({
|
||||
+
|
||||
+// Quantus patch: this console serves two header layouts.
|
||||
+//
|
||||
+// `sp_runtime::generic::Header` encodes `number` with #[codec(compact)] and has
|
||||
+// no field between `extrinsics_root` and `digest`. Quantus's `qp_header::Header`
|
||||
+// does neither: `number` is a plain u32, and a `zk_tree_root: H256` sits before
|
||||
+// the digest — deliberately, so the ZK root has a fixed offset in the header
|
||||
+// preimage that miners cannot shift by manipulating the digest.
|
||||
+//
|
||||
+// Reading a Quantus header as a Substrate one consumes 2 bytes where 4 were
|
||||
+// written; every field after shifts, and the digest vector eventually reads a
|
||||
+// byte that is not a known DigestItem index. That surfaces three layers away as
|
||||
+// `TypeError: innerDecoder is not a function`, papi retries the subfollow
|
||||
+// forever, `runtime$` never emits, and the page renders nothing at all.
|
||||
+//
|
||||
+// See quantus/papi-console#4.
|
||||
+const substrateHeader = Struct({
|
||||
parentHash: hex32,
|
||||
number: compactNumber,
|
||||
stateRoot: hex32,
|
||||
@@ -41,5 +57,63 @@ const blockHeader = Struct({
|
||||
digests: Vector(diggest)
|
||||
});
|
||||
|
||||
+const quantusHeader = Struct({
|
||||
+ parentHash: hex32,
|
||||
+ number: u32,
|
||||
+ stateRoot: hex32,
|
||||
+ extrinsicRoot: hex32,
|
||||
+ zkTreeRoot: hex32,
|
||||
+ digests: Vector(diggest)
|
||||
+});
|
||||
+
|
||||
+const asBytes = (input) =>
|
||||
+ typeof input === "string"
|
||||
+ ? Uint8Array.from(
|
||||
+ input
|
||||
+ .slice(2)
|
||||
+ .match(/../g)
|
||||
+ ?.map((b) => parseInt(b, 16)) ?? []
|
||||
+ )
|
||||
+ : input;
|
||||
+
|
||||
+const sameBytes = (a, b) =>
|
||||
+ a.length === b.length && a.every((x, i) => x === b[i]);
|
||||
+
|
||||
+// Decide by round trip, not by guessing. A layout is right only if decoding and
|
||||
+// re-encoding reproduces the input byte for byte — which also catches a short
|
||||
+// read, trailing bytes, and a non-canonical compact. Trying the layouts in a
|
||||
+// fixed order and taking the first that survives that check is deterministic;
|
||||
+// picking one by inspecting a byte would not be.
|
||||
+const decodeEitherLayout = (input) => {
|
||||
+ const bytes = asBytes(input);
|
||||
+ let firstError;
|
||||
+
|
||||
+ for (const codec of [substrateHeader, quantusHeader]) {
|
||||
+ try {
|
||||
+ const value = codec.dec(bytes);
|
||||
+
|
||||
+ if (sameBytes(codec.enc(value), bytes)) return value;
|
||||
+ } catch (error) {
|
||||
+ firstError ??= error;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ throw firstError ?? new Error("block header matches no known layout");
|
||||
+};
|
||||
+
|
||||
+// Keep every property the original codec carried and override only the decoder.
|
||||
+// A scale-ts Struct exposes `inner` — its field codecs — and consumers reach for
|
||||
+// it: this console's own block.state.ts does `blockHeader.inner.digests.inner`.
|
||||
+// Replacing the codec with a bare [enc, dec] pair drops that, block.state.ts
|
||||
+// throws while its module is evaluating, `createRoot().render()` never runs, and
|
||||
+// the page is blank with no error on screen — the same symptom as the bug this
|
||||
+// patch exists to fix, from the opposite cause.
|
||||
+const blockHeader = Object.assign([], substrateHeader, {
|
||||
+ 0: substrateHeader.enc,
|
||||
+ 1: decodeEitherLayout,
|
||||
+ enc: substrateHeader.enc,
|
||||
+ dec: decodeEitherLayout
|
||||
+});
|
||||
+
|
||||
export { blockHeader };
|
||||
//# sourceMappingURL=blockHeader.js.map
|
||||
82
pnpm-lock.yaml
generated
82
pnpm-lock.yaml
generated
@@ -6,6 +6,8 @@ settings:
|
||||
|
||||
patchedDependencies:
|
||||
'@polkadot-api/signers-common': 365a34617de2ae3ad2f7e009f7f3e20e0078448fbfc93c395d323f0e21b75d37
|
||||
'@polkadot-api/substrate-bindings@0.21.0': 316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0
|
||||
'@polkadot-api/substrate-bindings@0.21.1': 316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0
|
||||
react18-json-view: 962696fac5fe7ad3e94fd36dad07521c6c3eafd52f219ab335d52438387f6b66
|
||||
|
||||
importers:
|
||||
@@ -50,7 +52,7 @@ importers:
|
||||
version: 0.3.1(patch_hash=365a34617de2ae3ad2f7e009f7f3e20e0078448fbfc93c395d323f0e21b75d37)(rxjs@7.8.2)
|
||||
'@polkadot-api/substrate-bindings':
|
||||
specifier: ^0.21.1
|
||||
version: 0.21.1
|
||||
version: 0.21.1(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkadot-api/tx-creator':
|
||||
specifier: ^0.2.0
|
||||
version: 0.2.0(rxjs@7.8.2)
|
||||
@@ -5024,7 +5026,7 @@ snapshots:
|
||||
'@paraspell/descriptors': 14.3.4(polkadot-api@3.1.0(esbuild@0.28.1)(rxjs@7.8.2))
|
||||
'@paraspell/sdk-core': 14.3.4(typescript@7.0.2)(zod@3.25.76)
|
||||
'@polkadot-api/signers-common': 0.3.1(patch_hash=365a34617de2ae3ad2f7e009f7f3e20e0078448fbfc93c395d323f0e21b75d37)(rxjs@7.8.2)
|
||||
'@polkadot-api/substrate-bindings': 0.21.1
|
||||
'@polkadot-api/substrate-bindings': 0.21.1(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkadot-labs/hdkd': 0.0.31
|
||||
'@polkadot-labs/hdkd-helpers': 0.0.33
|
||||
polkadot-api: 3.1.0(esbuild@0.28.1)(rxjs@7.8.2)
|
||||
@@ -5053,7 +5055,7 @@ snapshots:
|
||||
'@polkadot-api/observable-client': 0.19.0(rxjs@7.8.2)
|
||||
'@polkadot-api/sm-provider': 0.3.8(@polkadot-api/smoldot@0.4.7)
|
||||
'@polkadot-api/smoldot': 0.4.7
|
||||
'@polkadot-api/substrate-bindings': 0.21.0
|
||||
'@polkadot-api/substrate-bindings': 0.21.0(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkadot-api/substrate-client': 0.7.0
|
||||
'@polkadot-api/utils': 0.4.0
|
||||
'@polkadot-api/wasm-executor': 0.2.3
|
||||
@@ -5088,7 +5090,7 @@ snapshots:
|
||||
'@polkadot-api/observable-client': 0.19.1(rxjs@7.8.2)
|
||||
'@polkadot-api/sm-provider': 0.3.8(@polkadot-api/smoldot@0.4.7)
|
||||
'@polkadot-api/smoldot': 0.4.7
|
||||
'@polkadot-api/substrate-bindings': 0.21.1
|
||||
'@polkadot-api/substrate-bindings': 0.21.1(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkadot-api/substrate-client': 0.7.0
|
||||
'@polkadot-api/utils': 0.4.0
|
||||
'@polkadot-api/wasm-executor': 0.2.3
|
||||
@@ -5117,7 +5119,7 @@ snapshots:
|
||||
'@polkadot-api/ink-contracts': 0.7.0
|
||||
'@polkadot-api/metadata-builders': 0.15.0
|
||||
'@polkadot-api/metadata-compatibility': 0.7.0
|
||||
'@polkadot-api/substrate-bindings': 0.21.0
|
||||
'@polkadot-api/substrate-bindings': 0.21.0(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkadot-api/utils': 0.4.0
|
||||
|
||||
'@polkadot-api/codegen@0.23.1':
|
||||
@@ -5125,7 +5127,7 @@ snapshots:
|
||||
'@polkadot-api/ink-contracts': 0.7.1
|
||||
'@polkadot-api/metadata-builders': 0.15.1
|
||||
'@polkadot-api/metadata-compatibility': 0.7.1
|
||||
'@polkadot-api/substrate-bindings': 0.21.1
|
||||
'@polkadot-api/substrate-bindings': 0.21.1(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkadot-api/utils': 0.4.0
|
||||
|
||||
'@polkadot-api/descriptors@file:.papi/descriptors(polkadot-api@3.1.0(esbuild@0.28.1)(rxjs@7.8.2))':
|
||||
@@ -5137,7 +5139,7 @@ snapshots:
|
||||
'@acala-network/chopsticks-executor': 1.5.1
|
||||
'@polkadot-api/metadata-builders': 0.15.0
|
||||
'@polkadot-api/observable-client': 0.19.0(rxjs@7.8.2)
|
||||
'@polkadot-api/substrate-bindings': 0.21.0
|
||||
'@polkadot-api/substrate-bindings': 0.21.0(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkadot-api/substrate-client': 0.7.0
|
||||
'@polkadot-api/tx-utils': 0.6.0(rxjs@7.8.2)
|
||||
'@polkadot-api/ws-middleware': 0.4.0(rxjs@7.8.2)
|
||||
@@ -5164,13 +5166,13 @@ snapshots:
|
||||
'@polkadot-api/ink-contracts@0.7.0':
|
||||
dependencies:
|
||||
'@polkadot-api/metadata-builders': 0.15.0
|
||||
'@polkadot-api/substrate-bindings': 0.21.0
|
||||
'@polkadot-api/substrate-bindings': 0.21.0(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkadot-api/utils': 0.4.0
|
||||
|
||||
'@polkadot-api/ink-contracts@0.7.1':
|
||||
dependencies:
|
||||
'@polkadot-api/metadata-builders': 0.15.1
|
||||
'@polkadot-api/substrate-bindings': 0.21.1
|
||||
'@polkadot-api/substrate-bindings': 0.21.1(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkadot-api/utils': 0.4.0
|
||||
|
||||
'@polkadot-api/json-rpc-provider-proxy@0.1.0':
|
||||
@@ -5192,7 +5194,7 @@ snapshots:
|
||||
'@ledgerhq/hw-transport': 6.35.5
|
||||
'@polkadot-api/merkleize-metadata': 1.3.0
|
||||
'@polkadot-api/signers-common': 0.3.0(patch_hash=365a34617de2ae3ad2f7e009f7f3e20e0078448fbfc93c395d323f0e21b75d37)(rxjs@7.8.2)
|
||||
'@polkadot-api/substrate-bindings': 0.21.0
|
||||
'@polkadot-api/substrate-bindings': 0.21.0(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkadot-api/tx-creator': 0.2.0(rxjs@7.8.2)
|
||||
'@polkadot-api/utils': 0.4.0
|
||||
transitivePeerDependencies:
|
||||
@@ -5205,32 +5207,32 @@ snapshots:
|
||||
'@polkadot-api/merkleize-metadata@1.3.0':
|
||||
dependencies:
|
||||
'@polkadot-api/metadata-builders': 0.15.0
|
||||
'@polkadot-api/substrate-bindings': 0.21.0
|
||||
'@polkadot-api/substrate-bindings': 0.21.0(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkadot-api/utils': 0.4.0
|
||||
|
||||
'@polkadot-api/merkleize-metadata@1.3.1':
|
||||
dependencies:
|
||||
'@polkadot-api/metadata-builders': 0.15.1
|
||||
'@polkadot-api/substrate-bindings': 0.21.1
|
||||
'@polkadot-api/substrate-bindings': 0.21.1(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkadot-api/utils': 0.4.0
|
||||
|
||||
'@polkadot-api/meta-signers@0.3.0':
|
||||
dependencies:
|
||||
'@polkadot-api/metadata-builders': 0.15.0
|
||||
'@polkadot-api/signers-common': 0.3.0(patch_hash=365a34617de2ae3ad2f7e009f7f3e20e0078448fbfc93c395d323f0e21b75d37)(rxjs@7.8.2)
|
||||
'@polkadot-api/substrate-bindings': 0.21.0
|
||||
'@polkadot-api/substrate-bindings': 0.21.0(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkadot-api/tx-creator': 0.2.0(rxjs@7.8.2)
|
||||
'@polkadot-api/utils': 0.4.0
|
||||
rxjs: 7.8.2
|
||||
|
||||
'@polkadot-api/metadata-builders@0.15.0':
|
||||
dependencies:
|
||||
'@polkadot-api/substrate-bindings': 0.21.0
|
||||
'@polkadot-api/substrate-bindings': 0.21.0(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkadot-api/utils': 0.4.0
|
||||
|
||||
'@polkadot-api/metadata-builders@0.15.1':
|
||||
dependencies:
|
||||
'@polkadot-api/substrate-bindings': 0.21.1
|
||||
'@polkadot-api/substrate-bindings': 0.21.1(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkadot-api/utils': 0.4.0
|
||||
|
||||
'@polkadot-api/metadata-builders@0.3.2':
|
||||
@@ -5242,17 +5244,17 @@ snapshots:
|
||||
'@polkadot-api/metadata-compatibility@0.7.0':
|
||||
dependencies:
|
||||
'@polkadot-api/metadata-builders': 0.15.0
|
||||
'@polkadot-api/substrate-bindings': 0.21.0
|
||||
'@polkadot-api/substrate-bindings': 0.21.0(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
|
||||
'@polkadot-api/metadata-compatibility@0.7.1':
|
||||
dependencies:
|
||||
'@polkadot-api/metadata-builders': 0.15.1
|
||||
'@polkadot-api/substrate-bindings': 0.21.1
|
||||
'@polkadot-api/substrate-bindings': 0.21.1(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
|
||||
'@polkadot-api/observable-client@0.19.0(rxjs@7.8.2)':
|
||||
dependencies:
|
||||
'@polkadot-api/metadata-builders': 0.15.0
|
||||
'@polkadot-api/substrate-bindings': 0.21.0
|
||||
'@polkadot-api/substrate-bindings': 0.21.0(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkadot-api/substrate-client': 0.7.0
|
||||
'@polkadot-api/utils': 0.4.0
|
||||
rxjs: 7.8.2
|
||||
@@ -5260,7 +5262,7 @@ snapshots:
|
||||
'@polkadot-api/observable-client@0.19.1(rxjs@7.8.2)':
|
||||
dependencies:
|
||||
'@polkadot-api/metadata-builders': 0.15.1
|
||||
'@polkadot-api/substrate-bindings': 0.21.1
|
||||
'@polkadot-api/substrate-bindings': 0.21.1(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkadot-api/substrate-client': 0.7.0
|
||||
'@polkadot-api/utils': 0.4.0
|
||||
rxjs: 7.8.2
|
||||
@@ -5278,7 +5280,7 @@ snapshots:
|
||||
dependencies:
|
||||
'@polkadot-api/metadata-builders': 0.15.0
|
||||
'@polkadot-api/signers-common': 0.3.0(patch_hash=365a34617de2ae3ad2f7e009f7f3e20e0078448fbfc93c395d323f0e21b75d37)(rxjs@7.8.2)
|
||||
'@polkadot-api/substrate-bindings': 0.21.0
|
||||
'@polkadot-api/substrate-bindings': 0.21.0(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkadot-api/tx-creator': 0.2.0(rxjs@7.8.2)
|
||||
'@polkadot-api/utils': 0.4.0
|
||||
transitivePeerDependencies:
|
||||
@@ -5288,7 +5290,7 @@ snapshots:
|
||||
dependencies:
|
||||
'@polkadot-api/metadata-builders': 0.15.1
|
||||
'@polkadot-api/signers-common': 0.3.1(patch_hash=365a34617de2ae3ad2f7e009f7f3e20e0078448fbfc93c395d323f0e21b75d37)(rxjs@7.8.2)
|
||||
'@polkadot-api/substrate-bindings': 0.21.1
|
||||
'@polkadot-api/substrate-bindings': 0.21.1(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkadot-api/tx-creator': 0.2.0(rxjs@7.8.2)
|
||||
'@polkadot-api/utils': 0.4.0
|
||||
transitivePeerDependencies:
|
||||
@@ -5304,7 +5306,7 @@ snapshots:
|
||||
'@polkadot-api/merkleize-metadata': 1.3.0
|
||||
'@polkadot-api/metadata-builders': 0.15.0
|
||||
'@polkadot-api/signers-common': 0.3.0(patch_hash=365a34617de2ae3ad2f7e009f7f3e20e0078448fbfc93c395d323f0e21b75d37)(rxjs@7.8.2)
|
||||
'@polkadot-api/substrate-bindings': 0.21.0
|
||||
'@polkadot-api/substrate-bindings': 0.21.0(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkadot-api/tx-creator': 0.2.0(rxjs@7.8.2)
|
||||
'@polkadot-api/utils': 0.4.0
|
||||
rxjs: 7.8.2
|
||||
@@ -5315,7 +5317,7 @@ snapshots:
|
||||
'@polkadot-api/merkleize-metadata': 1.3.1
|
||||
'@polkadot-api/metadata-builders': 0.15.1
|
||||
'@polkadot-api/signers-common': 0.3.1(patch_hash=365a34617de2ae3ad2f7e009f7f3e20e0078448fbfc93c395d323f0e21b75d37)(rxjs@7.8.2)
|
||||
'@polkadot-api/substrate-bindings': 0.21.1
|
||||
'@polkadot-api/substrate-bindings': 0.21.1(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkadot-api/tx-creator': 0.2.0(rxjs@7.8.2)
|
||||
'@polkadot-api/utils': 0.4.0
|
||||
rxjs: 7.8.2
|
||||
@@ -5323,7 +5325,7 @@ snapshots:
|
||||
'@polkadot-api/react-builder@0.6.1(react@19.2.8)':
|
||||
dependencies:
|
||||
'@polkadot-api/metadata-builders': 0.15.1
|
||||
'@polkadot-api/substrate-bindings': 0.21.1
|
||||
'@polkadot-api/substrate-bindings': 0.21.1(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkadot-api/utils': 0.4.0
|
||||
react: 19.2.8
|
||||
|
||||
@@ -5339,7 +5341,7 @@ snapshots:
|
||||
'@polkadot-api/signers-common@0.3.0(patch_hash=365a34617de2ae3ad2f7e009f7f3e20e0078448fbfc93c395d323f0e21b75d37)(rxjs@7.8.2)':
|
||||
dependencies:
|
||||
'@polkadot-api/metadata-builders': 0.15.0
|
||||
'@polkadot-api/substrate-bindings': 0.21.0
|
||||
'@polkadot-api/substrate-bindings': 0.21.0(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkadot-api/tx-creator': 0.2.0(rxjs@7.8.2)
|
||||
'@polkadot-api/utils': 0.4.0
|
||||
rxjs: 7.8.2
|
||||
@@ -5347,7 +5349,7 @@ snapshots:
|
||||
'@polkadot-api/signers-common@0.3.1(patch_hash=365a34617de2ae3ad2f7e009f7f3e20e0078448fbfc93c395d323f0e21b75d37)(rxjs@7.8.2)':
|
||||
dependencies:
|
||||
'@polkadot-api/metadata-builders': 0.15.1
|
||||
'@polkadot-api/substrate-bindings': 0.21.1
|
||||
'@polkadot-api/substrate-bindings': 0.21.1(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkadot-api/tx-creator': 0.2.0(rxjs@7.8.2)
|
||||
'@polkadot-api/utils': 0.4.0
|
||||
rxjs: 7.8.2
|
||||
@@ -5373,14 +5375,14 @@ snapshots:
|
||||
'@scure/base': 2.4.0
|
||||
scale-ts: 1.6.1
|
||||
|
||||
'@polkadot-api/substrate-bindings@0.21.0':
|
||||
'@polkadot-api/substrate-bindings@0.21.0(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)':
|
||||
dependencies:
|
||||
'@noble/hashes': 2.4.0
|
||||
'@polkadot-api/utils': 0.4.0
|
||||
'@scure/base': 2.4.0
|
||||
scale-ts: 1.6.1
|
||||
|
||||
'@polkadot-api/substrate-bindings@0.21.1':
|
||||
'@polkadot-api/substrate-bindings@0.21.1(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)':
|
||||
dependencies:
|
||||
'@noble/hashes': 2.4.0
|
||||
'@polkadot-api/utils': 0.4.0
|
||||
@@ -5416,7 +5418,7 @@ snapshots:
|
||||
'@polkadot-api/merkleize-metadata': 1.3.0
|
||||
'@polkadot-api/metadata-builders': 0.15.0
|
||||
'@polkadot-api/signers-common': 0.3.0(patch_hash=365a34617de2ae3ad2f7e009f7f3e20e0078448fbfc93c395d323f0e21b75d37)(rxjs@7.8.2)
|
||||
'@polkadot-api/substrate-bindings': 0.21.0
|
||||
'@polkadot-api/substrate-bindings': 0.21.0(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkadot-api/utils': 0.4.0
|
||||
transitivePeerDependencies:
|
||||
- rxjs
|
||||
@@ -5426,7 +5428,7 @@ snapshots:
|
||||
'@polkadot-api/merkleize-metadata': 1.3.1
|
||||
'@polkadot-api/metadata-builders': 0.15.1
|
||||
'@polkadot-api/signers-common': 0.3.1(patch_hash=365a34617de2ae3ad2f7e009f7f3e20e0078448fbfc93c395d323f0e21b75d37)(rxjs@7.8.2)
|
||||
'@polkadot-api/substrate-bindings': 0.21.1
|
||||
'@polkadot-api/substrate-bindings': 0.21.1(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkadot-api/utils': 0.4.0
|
||||
transitivePeerDependencies:
|
||||
- rxjs
|
||||
@@ -5445,7 +5447,7 @@ snapshots:
|
||||
'@polkadot-api/json-rpc-provider': 0.2.0
|
||||
'@polkadot-api/json-rpc-provider-proxy': 0.4.1
|
||||
'@polkadot-api/raw-client': 0.3.0
|
||||
'@polkadot-api/substrate-bindings': 0.21.0
|
||||
'@polkadot-api/substrate-bindings': 0.21.0(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkadot-api/utils': 0.4.0
|
||||
rxjs: 7.8.2
|
||||
|
||||
@@ -5454,7 +5456,7 @@ snapshots:
|
||||
'@polkadot-api/json-rpc-provider': 0.2.0
|
||||
'@polkadot-api/json-rpc-provider-proxy': 0.4.1
|
||||
'@polkadot-api/raw-client': 0.3.0
|
||||
'@polkadot-api/substrate-bindings': 0.21.1
|
||||
'@polkadot-api/substrate-bindings': 0.21.1(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkadot-api/utils': 0.4.0
|
||||
rxjs: 7.8.2
|
||||
|
||||
@@ -5718,7 +5720,7 @@ snapshots:
|
||||
dependencies:
|
||||
'@polkadot-api/meta-signers': 0.3.0
|
||||
'@polkadot-api/metadata-builders': 0.15.0
|
||||
'@polkadot-api/substrate-bindings': 0.21.0
|
||||
'@polkadot-api/substrate-bindings': 0.21.0(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkahub/context': 0.9.1(@types/react@19.2.18)(esbuild@0.28.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
|
||||
'@polkahub/plugin': 0.9.1(@react-rxjs/core@0.10.8(react@19.2.8)(rxjs@7.8.2))(esbuild@0.28.1)(react@19.2.8)
|
||||
'@polkahub/proxy': 0.9.1(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(esbuild@0.28.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
|
||||
@@ -5800,7 +5802,7 @@ snapshots:
|
||||
|
||||
'@polkahub/read-only@0.9.1(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(esbuild@0.28.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)':
|
||||
dependencies:
|
||||
'@polkadot-api/substrate-bindings': 0.21.0
|
||||
'@polkadot-api/substrate-bindings': 0.21.0(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkahub/context': 0.9.1(@types/react@19.2.18)(esbuild@0.28.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
|
||||
'@polkahub/plugin': 0.9.1(@react-rxjs/core@0.10.8(react@19.2.8)(rxjs@7.8.2))(esbuild@0.28.1)(react@19.2.8)
|
||||
'@polkahub/select-account': 0.9.1(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(esbuild@0.28.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
|
||||
@@ -5823,7 +5825,7 @@ snapshots:
|
||||
'@polkahub/select-account@0.9.1(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(esbuild@0.28.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)':
|
||||
dependencies:
|
||||
'@polkadot-api/react-components': 0.4.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
|
||||
'@polkadot-api/substrate-bindings': 0.21.0
|
||||
'@polkadot-api/substrate-bindings': 0.21.0(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkahub/context': 0.9.1(@types/react@19.2.18)(esbuild@0.28.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
|
||||
'@polkahub/plugin': 0.9.1(@react-rxjs/core@0.10.8(react@19.2.8)(rxjs@7.8.2))(esbuild@0.28.1)(react@19.2.8)
|
||||
'@polkahub/ui-components': 0.9.1(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
|
||||
@@ -5860,7 +5862,7 @@ snapshots:
|
||||
'@polkahub/ui-components@0.9.1(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)':
|
||||
dependencies:
|
||||
'@polkadot-api/react-components': 0.4.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
|
||||
'@polkadot-api/substrate-bindings': 0.21.0
|
||||
'@polkadot-api/substrate-bindings': 0.21.0(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkadot-api/utils': 0.4.0
|
||||
'@radix-ui/primitive': 1.1.7
|
||||
'@radix-ui/react-checkbox': 1.3.11(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
|
||||
@@ -5894,7 +5896,7 @@ snapshots:
|
||||
dependencies:
|
||||
'@polkadot-api/merkleize-metadata': 1.3.1
|
||||
'@polkadot-api/signers-common': 0.3.0(patch_hash=365a34617de2ae3ad2f7e009f7f3e20e0078448fbfc93c395d323f0e21b75d37)(rxjs@7.8.2)
|
||||
'@polkadot-api/substrate-bindings': 0.21.0
|
||||
'@polkadot-api/substrate-bindings': 0.21.0(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkahub/context': 0.9.1(@types/react@19.2.18)(esbuild@0.28.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
|
||||
'@polkahub/plugin': 0.9.1(@react-rxjs/core@0.10.8(react@19.2.8)(rxjs@7.8.2))(esbuild@0.28.1)(react@19.2.8)
|
||||
'@polkahub/select-account': 0.9.1(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(esbuild@0.28.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
|
||||
@@ -5916,7 +5918,7 @@ snapshots:
|
||||
|
||||
'@polkahub/wallet-connect@0.9.1(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(debug@4.4.3)(esbuild@0.28.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@7.0.2)(use-sync-external-store@1.6.0(react@19.2.8))(zod@3.25.76)':
|
||||
dependencies:
|
||||
'@polkadot-api/substrate-bindings': 0.21.0
|
||||
'@polkadot-api/substrate-bindings': 0.21.0(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkahub/context': 0.9.1(@types/react@19.2.18)(esbuild@0.28.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
|
||||
'@polkahub/plugin': 0.9.1(@react-rxjs/core@0.10.8(react@19.2.8)(rxjs@7.8.2))(esbuild@0.28.1)(react@19.2.8)
|
||||
'@polkahub/select-account': 0.9.1(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(esbuild@0.28.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
|
||||
@@ -9238,7 +9240,7 @@ snapshots:
|
||||
'@polkadot-api/signers-common': 0.3.0(patch_hash=365a34617de2ae3ad2f7e009f7f3e20e0078448fbfc93c395d323f0e21b75d37)(rxjs@7.8.2)
|
||||
'@polkadot-api/sm-provider': 0.3.8(@polkadot-api/smoldot@0.4.7)
|
||||
'@polkadot-api/smoldot': 0.4.7
|
||||
'@polkadot-api/substrate-bindings': 0.21.0
|
||||
'@polkadot-api/substrate-bindings': 0.21.0(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkadot-api/substrate-client': 0.7.0
|
||||
'@polkadot-api/tx-creator': 0.2.0(rxjs@7.8.2)
|
||||
'@polkadot-api/utils': 0.4.0
|
||||
@@ -9267,7 +9269,7 @@ snapshots:
|
||||
'@polkadot-api/signers-common': 0.3.1(patch_hash=365a34617de2ae3ad2f7e009f7f3e20e0078448fbfc93c395d323f0e21b75d37)(rxjs@7.8.2)
|
||||
'@polkadot-api/sm-provider': 0.3.8(@polkadot-api/smoldot@0.4.7)
|
||||
'@polkadot-api/smoldot': 0.4.7
|
||||
'@polkadot-api/substrate-bindings': 0.21.1
|
||||
'@polkadot-api/substrate-bindings': 0.21.1(patch_hash=316e7a04d1ebfc3309d37bb12dd3529b35193506be4cef0b0468842dcb8d56c0)
|
||||
'@polkadot-api/substrate-client': 0.7.0
|
||||
'@polkadot-api/tx-creator': 0.2.0(rxjs@7.8.2)
|
||||
'@polkadot-api/utils': 0.4.0
|
||||
|
||||
@@ -10,4 +10,12 @@ minimumReleaseAgeExclude:
|
||||
- '@paraspell/sdk@14.3.0 || 14.3.4'
|
||||
patchedDependencies:
|
||||
'@polkadot-api/signers-common': patches/@polkadot-api__signers-common.patch
|
||||
# Pinned per version, unlike the signers-common patch which is keyed on the
|
||||
# bare name. Four copies of substrate-bindings resolve in this tree and their
|
||||
# blockHeader.js is NOT identical across majors — 0.19.0 and 0.6.0 differ, and
|
||||
# a bare-name key fails the whole install trying to patch them. 0.21.1 is what
|
||||
# the console and observable-client actually import; 0.21.0 is byte-identical
|
||||
# and patched too so a minor bump does not silently drop the fix.
|
||||
'@polkadot-api/substrate-bindings@0.21.0': patches/@polkadot-api__substrate-bindings@0.21.0.patch
|
||||
'@polkadot-api/substrate-bindings@0.21.1': patches/@polkadot-api__substrate-bindings@0.21.1.patch
|
||||
react18-json-view: patches/react18-json-view.patch
|
||||
|
||||
Reference in New Issue
Block a user