From 42a706847d81d61794016ead0960c18fbcb39d02 Mon Sep 17 00:00:00 2001 From: Parth Desai Date: Fri, 8 Nov 2024 17:50:15 +0400 Subject: [PATCH 01/10] Initial commit --- Cargo.lock | 400 +++++++++++++++++- Cargo.toml | 5 + solo-chains/runtime/dancelight/Cargo.toml | 8 + .../src/bridge_to_ethereum_config.rs | 81 +++- solo-chains/runtime/dancelight/src/lib.rs | 2 + .../src/symbiotic_message_processor.rs | 73 ++++ .../inbound_queue_tests/integration_tests.rs | 98 +++++ .../message_processor_tests.rs | 121 ++++++ .../src/tests/inbound_queue_tests/mock.rs | 347 +++++++++++++++ .../src/tests/inbound_queue_tests/mod.rs | 3 + .../runtime/dancelight/src/tests/mod.rs | 1 + 11 files changed, 1110 insertions(+), 29 deletions(-) create mode 100644 solo-chains/runtime/dancelight/src/symbiotic_message_processor.rs create mode 100644 solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/integration_tests.rs create mode 100644 solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/message_processor_tests.rs create mode 100644 solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/mock.rs create mode 100644 solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/mod.rs diff --git a/Cargo.lock b/Cargo.lock index 3ec98727c..328198413 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -116,6 +116,65 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" +[[package]] +name = "alloy-primitives" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0628ec0ba5b98b3370bb6be17b12f23bfce8ee4ad83823325a20546d9b03b78" +dependencies = [ + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more", + "hex-literal 0.4.1", + "itoa", + "proptest", + "rand", + "ruint", + "serde", + "tiny-keccak", +] + +[[package]] +name = "alloy-rlp" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0822426598f95e45dd1ea32a738dac057529a709ee645fcc516ffa4cbde08f" +dependencies = [ + "arrayvec 0.7.4", + "bytes", +] + +[[package]] +name = "alloy-sol-macro" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a98ad1696a2e17f010ae8e43e9f2a1e930ed176a8e3ff77acfeff6dfb07b42c" +dependencies = [ + "const-hex", + "dunce", + "heck 0.4.1", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.87", + "syn-solidity", + "tiny-keccak", +] + +[[package]] +name = "alloy-sol-types" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98d7107bed88e8f09f0ddcc3335622d87bfb6821f3e0c7473329fb1cfad5e015" +dependencies = [ + "alloy-primitives", + "alloy-sol-macro", + "const-hex", + "serde", +] + [[package]] name = "always-assert" version = "0.1.3" @@ -221,8 +280,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb00293ba84f51ce3bd026bd0de55899c4e68f0a39a5728cebae3a73ffdc0a4f" dependencies = [ "ark-ec", - "ark-ff", - "ark-std", + "ark-ff 0.4.2", + "ark-std 0.4.0", ] [[package]] @@ -232,9 +291,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c775f0d12169cba7aae4caeb547bb6a50781c7449a8aa53793827c9ec4abf488" dependencies = [ "ark-ec", - "ark-ff", - "ark-serialize", - "ark-std", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", ] [[package]] @@ -243,10 +302,10 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" dependencies = [ - "ark-ff", + "ark-ff 0.4.2", "ark-poly", - "ark-serialize", - "ark-std", + "ark-serialize 0.4.2", + "ark-std 0.4.0", "derivative", "hashbrown 0.13.2", "itertools 0.10.5", @@ -254,26 +313,54 @@ dependencies = [ "zeroize", ] +[[package]] +name = "ark-ff" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" +dependencies = [ + "ark-ff-asm 0.3.0", + "ark-ff-macros 0.3.0", + "ark-serialize 0.3.0", + "ark-std 0.3.0", + "derivative", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.3.3", + "zeroize", +] + [[package]] name = "ark-ff" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" dependencies = [ - "ark-ff-asm", - "ark-ff-macros", - "ark-serialize", - "ark-std", + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", "derivative", "digest 0.10.7", "itertools 0.10.5", "num-bigint", "num-traits", "paste", - "rustc_version", + "rustc_version 0.4.0", "zeroize", ] +[[package]] +name = "ark-ff-asm" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" +dependencies = [ + "quote", + "syn 1.0.109", +] + [[package]] name = "ark-ff-asm" version = "0.4.2" @@ -284,6 +371,18 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-ff-macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" +dependencies = [ + "num-bigint", + "num-traits", + "quote", + "syn 1.0.109", +] + [[package]] name = "ark-ff-macros" version = "0.4.2" @@ -303,13 +402,23 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" dependencies = [ - "ark-ff", - "ark-serialize", - "ark-std", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", "derivative", "hashbrown 0.13.2", ] +[[package]] +name = "ark-serialize" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" +dependencies = [ + "ark-std 0.3.0", + "digest 0.9.0", +] + [[package]] name = "ark-serialize" version = "0.4.2" @@ -317,7 +426,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" dependencies = [ "ark-serialize-derive", - "ark-std", + "ark-std 0.4.0", "digest 0.10.7", "num-bigint", ] @@ -333,6 +442,16 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-std" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" +dependencies = [ + "num-traits", + "rand", +] + [[package]] name = "ark-std" version = "0.4.0" @@ -859,6 +978,21 @@ dependencies = [ "bitcoin_hashes 0.11.0", ] +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + [[package]] name = "bitcoin-internals" version = "0.2.0" @@ -1739,6 +1873,19 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "const-hex" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "487981fa1af147182687064d0a2c336586d337a606595ced9ffb0c685c250c73" +dependencies = [ + "cfg-if", + "cpufeatures", + "hex", + "proptest", + "serde", +] + [[package]] name = "const-oid" version = "0.9.6" @@ -3009,7 +3156,7 @@ dependencies = [ "curve25519-dalek-derive", "digest 0.10.7", "fiat-crypto", - "rustc_version", + "rustc_version 0.4.0", "subtle 2.5.0", "zeroize", ] @@ -3216,6 +3363,7 @@ dependencies = [ name = "dancelight-runtime" version = "0.1.0" dependencies = [ + "alloy-sol-types", "binary-merkle-tree", "bitvec", "cumulus-pallet-parachain-system", @@ -3308,8 +3456,10 @@ dependencies = [ "snowbridge-core", "snowbridge-milagro-bls", "snowbridge-pallet-ethereum-client", + "snowbridge-pallet-inbound-queue", "snowbridge-pallet-outbound-queue", "snowbridge-pallet-system", + "snowbridge-router-primitives", "sp-api", "sp-application-crypto", "sp-arithmetic", @@ -3515,7 +3665,7 @@ dependencies = [ "convert_case", "proc-macro2", "quote", - "rustc_version", + "rustc_version 0.4.0", "syn 1.0.109", ] @@ -3775,6 +3925,12 @@ version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + [[package]] name = "dyn-clonable" version = "0.9.0" @@ -4288,6 +4444,17 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" +[[package]] +name = "fastrlp" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" +dependencies = [ + "arrayvec 0.7.4", + "auto_impl", + "bytes", +] + [[package]] name = "fatality" version = "0.1.1" @@ -12658,6 +12825,26 @@ dependencies = [ "syn 2.0.87", ] +[[package]] +name = "proptest" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" +dependencies = [ + "bit-set", + "bit-vec", + "bitflags 2.6.0", + "lazy_static", + "num-traits", + "rand", + "rand_chacha", + "rand_xorshift", + "regex-syntax 0.8.2", + "rusty-fork", + "tempfile", + "unarray", +] + [[package]] name = "prost" version = "0.11.9" @@ -13008,6 +13195,15 @@ dependencies = [ "rand_core", ] +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core", +] + [[package]] name = "raw-cpuid" version = "11.0.2" @@ -13480,6 +13676,36 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "ruint" +version = "1.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c3cc4c2511671f327125da14133d0c5c5d137f006a1017a16f557bc85b16286" +dependencies = [ + "alloy-rlp", + "ark-ff 0.3.0", + "ark-ff 0.4.2", + "bytes", + "fastrlp", + "num-bigint", + "num-traits", + "parity-scale-codec", + "primitive-types", + "proptest", + "rand", + "rlp", + "ruint-macro", + "serde", + "valuable", + "zeroize", +] + +[[package]] +name = "ruint-macro" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" + [[package]] name = "rustc-demangle" version = "0.1.23" @@ -13504,6 +13730,15 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] + [[package]] name = "rustc_version" version = "0.4.0" @@ -13705,6 +13940,18 @@ version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" +[[package]] +name = "rusty-fork" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] + [[package]] name = "ruzstd" version = "0.4.0" @@ -15233,7 +15480,16 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a3186ec9e65071a2095434b1f5bb24838d4e8e130f584c790f6033c79943537" dependencies = [ - "semver-parser", + "semver-parser 0.7.0", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser 0.10.3", ] [[package]] @@ -15251,6 +15507,15 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" +[[package]] +name = "semver-parser" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" +dependencies = [ + "pest", +] + [[package]] name = "send_wrapper" version = "0.6.0" @@ -15727,7 +15992,7 @@ dependencies = [ "curve25519-dalek", "rand_core", "ring 0.17.7", - "rustc_version", + "rustc_version 0.4.0", "sha2 0.10.8", "subtle 2.5.0", ] @@ -15871,6 +16136,46 @@ dependencies = [ "sp-std", ] +[[package]] +name = "snowbridge-pallet-inbound-queue" +version = "0.10.0" +source = "git+https://github.com/moondance-labs/polkadot-sdk?branch=tanssi-polkadot-stable2409#3f3fb03a22eb3d4725bfb85792006675fa6ebbb7" +dependencies = [ + "alloy-primitives", + "alloy-sol-types", + "frame-benchmarking", + "frame-support", + "frame-system", + "hex-literal 0.4.1", + "log", + "pallet-balances", + "parity-scale-codec", + "scale-info", + "serde", + "snowbridge-beacon-primitives", + "snowbridge-core", + "snowbridge-pallet-inbound-queue-fixtures", + "snowbridge-router-primitives", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "staging-xcm", + "staging-xcm-executor", +] + +[[package]] +name = "snowbridge-pallet-inbound-queue-fixtures" +version = "0.18.0" +source = "git+https://github.com/moondance-labs/polkadot-sdk?branch=tanssi-polkadot-stable2409#3f3fb03a22eb3d4725bfb85792006675fa6ebbb7" +dependencies = [ + "hex-literal 0.4.1", + "snowbridge-beacon-primitives", + "snowbridge-core", + "sp-core", + "sp-std", +] + [[package]] name = "snowbridge-pallet-outbound-queue" version = "0.10.0" @@ -15913,6 +16218,28 @@ dependencies = [ "staging-xcm-executor", ] +[[package]] +name = "snowbridge-router-primitives" +version = "0.16.0" +source = "git+https://github.com/moondance-labs/polkadot-sdk?branch=tanssi-polkadot-stable2409#3f3fb03a22eb3d4725bfb85792006675fa6ebbb7" +dependencies = [ + "alloy-primitives", + "alloy-sol-types", + "frame-support", + "hex-literal 0.4.1", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "scale-info", + "snowbridge-core", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "staging-xcm", + "staging-xcm-executor", +] + [[package]] name = "socket2" version = "0.4.10" @@ -17387,6 +17714,18 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "syn-solidity" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b837ef12ab88835251726eb12237655e61ec8dc8a280085d1961cdc3dfd047" +dependencies = [ + "paste", + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "sync_wrapper" version = "0.1.2" @@ -18752,6 +19091,12 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + [[package]] name = "unicode-bidi" version = "0.3.15" @@ -18909,8 +19254,8 @@ dependencies = [ "ark-bls12-377", "ark-bls12-381", "ark-ec", - "ark-ff", - "ark-serialize", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", "ark-serialize-derive", "arrayref", "constcat", @@ -18924,6 +19269,15 @@ dependencies = [ "zeroize", ] +[[package]] +name = "wait-timeout" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +dependencies = [ + "libc", +] + [[package]] name = "waker-fn" version = "1.1.1" diff --git a/Cargo.toml b/Cargo.toml index cb69fb285..7ea93362e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -259,12 +259,17 @@ xcm-runtime-apis = { git = "https://github.com/moondance-labs/polkadot-sdk", bra # Bridges (wasm) +alloy-primitives = { version = "0.4.2", default-features = false } +alloy-sol-types = { version = "0.4.2", default-features = false } milagro-bls = { package = "snowbridge-milagro-bls", version = "1.5.4", default-features = false } snowbridge-beacon-primitives = { git = "https://github.com/moondance-labs/polkadot-sdk", branch = "tanssi-polkadot-stable2409", default-features = false } snowbridge-core = { git = "https://github.com/moondance-labs/polkadot-sdk", branch = "tanssi-polkadot-stable2409", default-features = false } snowbridge-pallet-ethereum-client = { git = "https://github.com/moondance-labs/polkadot-sdk", branch = "tanssi-polkadot-stable2409", default-features = false } +snowbridge-pallet-inbound-queue = { git = "https://github.com/moondance-labs/polkadot-sdk", branch = "tanssi-polkadot-stable2409", default-features = false } snowbridge-pallet-outbound-queue = { git = "https://github.com/moondance-labs/polkadot-sdk", branch = "tanssi-polkadot-stable2409", default-features = false } snowbridge-pallet-system = { git = "https://github.com/moondance-labs/polkadot-sdk", branch = "tanssi-polkadot-stable2409", default-features = false } +snowbridge-router-primitives = { git = "https://github.com/moondance-labs/polkadot-sdk", branch = "tanssi-polkadot-stable2409", default-features = false } + # Polkadot (client) polkadot-cli = { git = "https://github.com/moondance-labs/polkadot-sdk", branch = "tanssi-polkadot-stable2409" } diff --git a/solo-chains/runtime/dancelight/Cargo.toml b/solo-chains/runtime/dancelight/Cargo.toml index e591100e4..d310ab4d1 100644 --- a/solo-chains/runtime/dancelight/Cargo.toml +++ b/solo-chains/runtime/dancelight/Cargo.toml @@ -147,11 +147,14 @@ pallet-migrations = { workspace = true } snowbridge-beacon-primitives = { workspace = true } snowbridge-core = { workspace = true } snowbridge-pallet-ethereum-client = { workspace = true } +snowbridge-pallet-inbound-queue = { workspace = true } snowbridge-pallet-outbound-queue = { workspace = true } snowbridge-pallet-system = { workspace = true } +snowbridge-router-primitives = { workspace = true } tp-bridge = { workspace = true } [dev-dependencies] +alloy-sol-types = { workspace = true, default-features = true } finality-grandpa = { workspace = true, default-features = true, features = [ "derive-codec" ] } keyring = { workspace = true } milagro-bls = { workspace = true, features = [ "std" ] } @@ -267,8 +270,10 @@ std = [ "snowbridge-core/std", "snowbridge-pallet-ethereum-client/fuzzing", "snowbridge-pallet-ethereum-client/std", + "snowbridge-pallet-inbound-queue/std", "snowbridge-pallet-outbound-queue/std", "snowbridge-pallet-system/std", + "snowbridge-router-primitives/std", "sp-api/std", "sp-application-crypto/std", "sp-arithmetic/std", @@ -360,8 +365,10 @@ runtime-benchmarks = [ "runtime-parachains/runtime-benchmarks", "snowbridge-core/runtime-benchmarks", "snowbridge-pallet-ethereum-client/runtime-benchmarks", + "snowbridge-pallet-inbound-queue/runtime-benchmarks", "snowbridge-pallet-outbound-queue/runtime-benchmarks", "snowbridge-pallet-system/runtime-benchmarks", + "snowbridge-router-primitives/runtime-benchmarks", "sp-runtime/runtime-benchmarks", "sp-staking/runtime-benchmarks", "tanssi-runtime-common/runtime-benchmarks", @@ -433,6 +440,7 @@ try-runtime = [ "runtime-common/try-runtime", "runtime-parachains/try-runtime", "snowbridge-pallet-ethereum-client/try-runtime", + "snowbridge-pallet-inbound-queue/try-runtime", "snowbridge-pallet-outbound-queue/try-runtime", "snowbridge-pallet-system/try-runtime", "sp-runtime/try-runtime", diff --git a/solo-chains/runtime/dancelight/src/bridge_to_ethereum_config.rs b/solo-chains/runtime/dancelight/src/bridge_to_ethereum_config.rs index 490ae9d5f..a8105af47 100644 --- a/solo-chains/runtime/dancelight/src/bridge_to_ethereum_config.rs +++ b/solo-chains/runtime/dancelight/src/bridge_to_ethereum_config.rs @@ -18,19 +18,34 @@ pub const SLOTS_PER_EPOCH: u32 = snowbridge_pallet_ethereum_client::config::SLOTS_PER_EPOCH as u32; +use crate::symbiotic_message_processor::SymbioticMessageProcessor; +use crate::xcm_config::UniversalLocation; +use frame_support::weights::ConstantMultiplier; +use parity_scale_codec::Encode; +use snowbridge_router_primitives::inbound::{ + ConvertMessage, ConvertMessageError, VersionedXcmMessage, +}; +use sp_core::{ConstU32, ConstU8}; +use sp_core::{H160, H256}; +use xcm::latest::{Assets, Location, SendError, SendResult, SendXcm, Xcm, XcmHash}; use { crate::{ - parameter_types, weights, xcm_config::UniversalLocation, AggregateMessageOrigin, Balance, - Balances, EthereumOutboundQueue, EthereumSystem, FixedU128, GetAggregateMessageOrigin, - Keccak256, MessageQueue, Runtime, RuntimeEvent, TreasuryAccount, WeightToFee, UNITS, + parameter_types, weights, xcm_config, AccountId, AggregateMessageOrigin, Balance, Balances, + EthereumBeaconClient, EthereumInboundQueue, EthereumOutboundQueue, EthereumSystem, + FixedU128, GetAggregateMessageOrigin, Keccak256, MessageQueue, Runtime, RuntimeEvent, + TransactionByteFee, TreasuryAccount, WeightToFee, UNITS, }, dancelight_runtime_constants::snowbridge::EthereumLocation, pallet_xcm::EnsureXcm, snowbridge_beacon_primitives::{Fork, ForkVersions}, snowbridge_core::{gwei, meth, AllowSiblingsOnly, PricingParameters, Rewards}, - sp_core::{ConstU32, ConstU8}, }; +// Ethereum Bridge +parameter_types! { + pub storage EthereumGatewayAddress: H160 = H160(hex_literal::hex!("EDa338E4dC46038493b885327842fD3E301CaB39")); +} + parameter_types! { pub Parameters: PricingParameters = PricingParameters { exchange_rate: FixedU128::from_rational(1, 400), @@ -140,8 +155,7 @@ impl snowbridge_pallet_system::Config for Runtime { #[cfg(feature = "runtime-benchmarks")] type Helper = benchmark_helper::EthSystemBenchHelper; type DefaultPricingParameters = Parameters; - type InboundDeliveryCost = (); - //type InboundDeliveryCost = EthereumInboundQueue; + type InboundDeliveryCost = EthereumInboundQueue; type UniversalLocation = UniversalLocation; type EthereumLocation = EthereumLocation; type WeightInfo = crate::weights::snowbridge_pallet_system::SubstrateWeight; @@ -158,4 +172,59 @@ mod benchmark_helper { RuntimeOrigin::from(pallet_xcm::Origin::Xcm(location)) } } + + impl snowbridge_pallet_system::BenchmarkHelper for () { + fn make_xcm_origin(location: Location) -> RuntimeOrigin { + RuntimeOrigin::from(pallet_xcm::Origin::Xcm(location)) + } + } +} + +pub struct DoNothingRouter; +impl SendXcm for DoNothingRouter { + type Ticket = Xcm<()>; + + fn validate( + _dest: &mut Option, + xcm: &mut Option>, + ) -> SendResult { + Ok((xcm.clone().unwrap(), Assets::new())) + } + fn deliver(xcm: Xcm<()>) -> Result { + let hash = xcm.using_encoded(sp_io::hashing::blake2_256); + Ok(hash) + } +} + +pub struct DoNothingConvertMessage; + +impl ConvertMessage for DoNothingConvertMessage { + type Balance = Balance; + type AccountId = AccountId; + + fn convert( + _: H256, + _message: VersionedXcmMessage, + ) -> Result<(Xcm<()>, Self::Balance), ConvertMessageError> { + Err(ConvertMessageError::UnsupportedVersion) + } +} + +impl snowbridge_pallet_inbound_queue::Config for Runtime { + type RuntimeEvent = RuntimeEvent; + type Verifier = EthereumBeaconClient; + type Token = Balances; + type XcmSender = DoNothingRouter; + type GatewayAddress = EthereumGatewayAddress; + type MessageConverter = DoNothingConvertMessage; + type ChannelLookup = EthereumSystem; + type PricingParameters = EthereumSystem; + type WeightInfo = (); + #[cfg(feature = "runtime-benchmarks")] + type Helper = Runtime; + type WeightToFee = WeightToFee; + type LengthToFee = ConstantMultiplier; + type MaxMessageSize = ConstU32<2048>; + type AssetTransactor = ::AssetTransactor; + type MessageProcessor = (SymbioticMessageProcessor,); } diff --git a/solo-chains/runtime/dancelight/src/lib.rs b/solo-chains/runtime/dancelight/src/lib.rs index 2aa44c99a..72cea2761 100644 --- a/solo-chains/runtime/dancelight/src/lib.rs +++ b/solo-chains/runtime/dancelight/src/lib.rs @@ -148,6 +148,7 @@ use dancelight_runtime_constants::{currency::*, fee::*, time::*}; pub mod xcm_config; pub mod bridge_to_ethereum_config; +pub mod symbiotic_message_processor; // Weights mod weights; @@ -1740,6 +1741,7 @@ construct_runtime! { XcmPallet: pallet_xcm = 90, // Bridging stuff + EthereumInboundQueue: snowbridge_pallet_inbound_queue = 91, EthereumOutboundQueue: snowbridge_pallet_outbound_queue = 101, EthereumSystem: snowbridge_pallet_system = 103, diff --git a/solo-chains/runtime/dancelight/src/symbiotic_message_processor.rs b/solo-chains/runtime/dancelight/src/symbiotic_message_processor.rs new file mode 100644 index 000000000..aead5ac0d --- /dev/null +++ b/solo-chains/runtime/dancelight/src/symbiotic_message_processor.rs @@ -0,0 +1,73 @@ +use frame_support::pallet_prelude::*; +use parity_scale_codec::DecodeAll; +use snowbridge_core::Channel; +use snowbridge_router_primitives::inbound::envelope::Envelope; +use snowbridge_router_primitives::inbound::MessageProcessor; +use sp_runtime::DispatchError; +use sp_std::vec::Vec; + +/// Magic bytes are added in every payload intended for this processor to make sure +/// that we are the intended recipient of the message. Reason being scale encoding is not type aware. +/// So a same set of bytes can be decoded for two different data structures if their +/// total size is same. Magic bytes can be checked after decoding to make sure that the sender +/// indeed send a message intended for this processor. +pub const MAGIC_BYTES: [u8; 4] = [112, 21, 0, 56]; + +#[derive(Encode, Decode)] +pub struct Payload +where + T: pallet_external_validators::Config, +{ + pub magic_bytes: [u8; 4], + pub message: Message, +} + +#[derive(Encode, Decode)] +pub enum Message +where + T: pallet_external_validators::Config, +{ + V1(Command), +} + +#[derive(Encode, Decode)] +pub enum Command +where + T: pallet_external_validators::Config, +{ + ReceiveValidators { + validators: Vec<::ValidatorId>, + }, +} + +pub struct SymbioticMessageProcessor(PhantomData); + +impl MessageProcessor for SymbioticMessageProcessor +where + T: pallet_external_validators::Config, +{ + fn can_process_message(_channel: &Channel, envelope: &Envelope) -> bool { + let decode_result = Payload::::decode_all(&mut envelope.payload.as_slice()); + if let Ok(payload) = decode_result { + payload.magic_bytes == MAGIC_BYTES + } else { + false + } + } + + fn process_message(_channel: Channel, envelope: Envelope) -> Result<(), DispatchError> { + let decode_result = Payload::::decode_all(&mut envelope.payload.as_slice()); + let message = if let Ok(payload) = decode_result { + payload.message + } else { + return Err(DispatchError::Other("unable to parse the payload")); + }; + + match message { + Message::V1(Command::ReceiveValidators { validators }) => { + pallet_external_validators::Pallet::::set_external_validators(validators)?; + Ok(()) + } + } + } +} diff --git a/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/integration_tests.rs b/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/integration_tests.rs new file mode 100644 index 000000000..d2781e3ae --- /dev/null +++ b/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/integration_tests.rs @@ -0,0 +1,98 @@ +use crate::symbiotic_message_processor::{Command, Payload, MAGIC_BYTES}; +use crate::tests::inbound_queue_tests::mock::{ + mock_ext, AccountId, ExternalValidators as MockExternalValidators, InboundQueue, + Test as TestRuntime, MOCK_CHANNEL_ID, +}; +use alloy_sol_types::SolEvent; +use frame_system::pallet_prelude::OriginFor; +use keyring::AccountKeyring; +use parity_scale_codec::Encode; +use snowbridge_beacon_primitives::types::deneb; +use snowbridge_beacon_primitives::{ExecutionProof, VersionedExecutionPayloadHeader}; +use snowbridge_core::inbound::{Log, Message, Proof}; +use snowbridge_router_primitives::inbound::envelope::OutboundMessageAccepted; +use sp_core::H256; +use sp_runtime::DispatchError; + +#[test] +fn test_inbound_queue_message_passing() { + mock_ext().execute_with(|| { + let current_nonce = 1; + + let dummy_proof = Proof { receipt_proof: (vec![], vec![]), execution_proof: ExecutionProof { + header: Default::default(), + ancestry_proof: None, + execution_header: VersionedExecutionPayloadHeader::Deneb(deneb::ExecutionPayloadHeader { + parent_hash: Default::default(), + fee_recipient: Default::default(), + state_root: Default::default(), + receipts_root: Default::default(), + logs_bloom: vec![], + prev_randao: Default::default(), + block_number: 0, + gas_limit: 0, + gas_used: 0, + timestamp: 0, + extra_data: vec![], + base_fee_per_gas: Default::default(), + block_hash: Default::default(), + transactions_root: Default::default(), + withdrawals_root: Default::default(), + blob_gas_used: 0, + excess_blob_gas: 0, + }), + execution_branch: vec![], + } }; + + let event_with_empty_payload = OutboundMessageAccepted { + channel_id: MOCK_CHANNEL_ID.into(), + nonce: current_nonce, + message_id: Default::default(), + payload: vec![], + }; + + assert_eq!(InboundQueue::submit(OriginFor::::signed(AccountId::new([0; 32])), Message { + event_log: Log { + address: ::GatewayAddress::get(), + topics: event_with_empty_payload.encode_topics().into_iter().map(|word| H256::from(word.0.0)).collect(), + data: event_with_empty_payload.encode_data(), + }, + proof: dummy_proof.clone(), + }), Err(DispatchError::Other("No handler for message found"))); + + assert_eq!(MockExternalValidators::validators(), MockExternalValidators::whitelisted_validators()); + + let payload_validators = vec![ + AccountKeyring::Charlie.to_account_id(), + AccountKeyring::Ferdie.to_account_id(), + AccountKeyring::BobStash.to_account_id() + ]; + + let payload = Payload { + magic_bytes: MAGIC_BYTES, + message: crate::symbiotic_message_processor::Message::V1(Command::::ReceiveValidators { + validators: payload_validators.clone() + }), + }; + + let event_with_valid_payload = OutboundMessageAccepted { + channel_id: MOCK_CHANNEL_ID.into(), + nonce: current_nonce, + message_id: Default::default(), + payload: payload.encode(), + }; + + assert_eq!(InboundQueue::submit(OriginFor::::signed(AccountId::new([0; 32])), Message { + event_log: Log { + address: ::GatewayAddress::get(), + topics: event_with_valid_payload.encode_topics().into_iter().map(|word| H256::from(word.0.0)).collect(), + data: event_with_valid_payload.encode_data(), + }, + proof: dummy_proof.clone(), + }), Ok(())); + + + let expected_validators = [MockExternalValidators::whitelisted_validators(), payload_validators].concat(); + assert_eq!(MockExternalValidators::validators(), expected_validators); + }); +} diff --git a/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/message_processor_tests.rs b/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/message_processor_tests.rs new file mode 100644 index 000000000..b24fbbf71 --- /dev/null +++ b/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/message_processor_tests.rs @@ -0,0 +1,121 @@ +// Copyright (C) Moondance Labs Ltd. +// This file is part of Tanssi. + +// Tanssi is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Tanssi is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Tanssi. If not, see + +use crate::symbiotic_message_processor::{ + Command, Message, Payload, SymbioticMessageProcessor, MAGIC_BYTES, +}; +use crate::tests::common::ExtBuilder; +use crate::{ExternalValidators, Runtime}; +use frame_support::pallet_prelude::*; +use keyring::AccountKeyring; +use snowbridge_core::Channel; +use snowbridge_router_primitives::inbound::envelope::Envelope; +use snowbridge_router_primitives::inbound::MessageProcessor; +use sp_core::{H160, H256}; +use sp_runtime::DispatchError; + +#[test] +fn test_symbiotic_message_processor() { + ExtBuilder::default().build().execute_with(|| { + let default_channel = Channel { + agent_id: H256::default(), + para_id: 0.into(), + }; + + let envelope_with_invalid_payload = Envelope { + channel_id: H256::default().into(), + gateway: H160::default(), + message_id: Default::default(), + nonce: 0, + payload: vec![0, 1, 2], + }; + + assert_eq!( + SymbioticMessageProcessor::::can_process_message( + &default_channel, + &envelope_with_invalid_payload + ), + false + ); + assert_eq!( + SymbioticMessageProcessor::::process_message( + default_channel.clone(), + envelope_with_invalid_payload + ), + Err(DispatchError::Other("unable to parse the payload")) + ); + + let payload_with_incorrect_magic_bytes = Payload { + magic_bytes: [1, 2, 3, 4], + message: Message::V1(Command::::ReceiveValidators { validators: vec![] }), + }; + let envelope = Envelope { + channel_id: H256::default().into(), + gateway: H160::default(), + message_id: Default::default(), + nonce: 0, + payload: payload_with_incorrect_magic_bytes.encode(), + }; + assert_eq!( + SymbioticMessageProcessor::::can_process_message(&default_channel, &envelope), + false + ); + + // No external validators are set right now + assert_eq!( + ExternalValidators::validators(), + ExternalValidators::whitelisted_validators() + ); + + let payload_validators = vec![ + AccountKeyring::Alice.to_account_id(), + AccountKeyring::Charlie.to_account_id(), + AccountKeyring::Bob.to_account_id(), + ]; + + let payload_with_correct_magic_bytes = Payload { + magic_bytes: MAGIC_BYTES, + message: Message::V1(Command::::ReceiveValidators { + validators: payload_validators.clone(), + }), + }; + let envelope = Envelope { + channel_id: H256::default().into(), + gateway: H160::default(), + message_id: Default::default(), + nonce: 0, + payload: payload_with_correct_magic_bytes.encode(), + }; + assert_eq!( + SymbioticMessageProcessor::::can_process_message(&default_channel, &envelope), + true + ); + assert_eq!( + SymbioticMessageProcessor::::process_message( + default_channel.clone(), + envelope + ), + Ok(()) + ); + + let expected_validators = [ + ExternalValidators::whitelisted_validators(), + payload_validators, + ] + .concat(); + assert_eq!(ExternalValidators::validators(), expected_validators); + }); +} diff --git a/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/mock.rs b/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/mock.rs new file mode 100644 index 000000000..b6bbc5e63 --- /dev/null +++ b/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/mock.rs @@ -0,0 +1,347 @@ +// SPDX-License-Identifier: Apache-2.0 +// SPDX-FileCopyrightText: 2023 Snowfork + +use crate::symbiotic_message_processor::SymbioticMessageProcessor; +use frame_support::traits::fungible::Mutate; +use frame_support::traits::{UnixTime, ValidatorRegistration}; +use frame_support::{derive_impl, parameter_types, traits::ConstU32, weights::IdentityFee}; +use frame_system::EnsureRoot; +use hex_literal::hex; +use polkadot_parachain_primitives::primitives::Id as ParaId; +use snowbridge_beacon_primitives::{Fork, ForkVersions}; +use snowbridge_core::inbound::Verifier; +use snowbridge_core::sibling_sovereign_account; +use snowbridge_core::{ + gwei, + inbound::{Log, Proof, VerificationError}, + meth, Channel, ChannelId, PricingParameters, Rewards, StaticLookup, +}; +use snowbridge_pallet_inbound_queue::xcm_message_processor::XcmMessageProcessor; +use snowbridge_router_primitives::inbound::envelope::Envelope; +use snowbridge_router_primitives::inbound::{MessageProcessor, MessageToXcm}; +use sp_core::Encode; +use sp_core::{H160, H256}; +use sp_runtime::{ + traits::{IdentifyAccount, IdentityLookup, Verify}, + BuildStorage, DispatchError, FixedU128, MultiSignature, +}; +use sp_staking::SessionIndex; +use sp_std::{convert::From, default::Default}; +use std::time::Duration; +use xcm::latest::SendError as XcmpSendError; +use xcm::{latest::SendXcm, prelude::*}; +use xcm_executor::traits::TransactAsset; +use xcm_executor::AssetsInHolding; + +type Block = frame_system::mocking::MockBlock; + +frame_support::construct_runtime!( + pub enum Test + { + System: frame_system::{Pallet, Call, Storage, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, + EthereumBeaconClient: snowbridge_pallet_ethereum_client::{Pallet, Call, Storage, Event}, + InboundQueue: snowbridge_pallet_inbound_queue::{Pallet, Call, Storage, Event}, + ExternalValidators: pallet_external_validators::{Pallet, Call, Storage, Event} + } +); + +pub type Signature = MultiSignature; +pub type AccountId = <::Signer as IdentifyAccount>::AccountId; + +type Balance = u128; + +#[derive_impl(frame_system::config_preludes::TestDefaultConfig)] +impl frame_system::Config for Test { + type AccountId = AccountId; + type Lookup = IdentityLookup; + type AccountData = pallet_balances::AccountData; + type Block = Block; +} + +parameter_types! { + pub const ExistentialDeposit: u128 = 1; +} + +#[derive_impl(pallet_balances::config_preludes::TestDefaultConfig)] +impl pallet_balances::Config for Test { + type Balance = Balance; + type ExistentialDeposit = ExistentialDeposit; + type AccountStore = System; +} + +parameter_types! { + pub const ChainForkVersions: ForkVersions = ForkVersions{ + genesis: Fork { + version: [0, 0, 0, 1], // 0x00000001 + epoch: 0, + }, + altair: Fork { + version: [1, 0, 0, 1], // 0x01000001 + epoch: 0, + }, + bellatrix: Fork { + version: [2, 0, 0, 1], // 0x02000001 + epoch: 0, + }, + capella: Fork { + version: [3, 0, 0, 1], // 0x03000001 + epoch: 0, + }, + deneb: Fork { + version: [4, 0, 0, 1], // 0x04000001 + epoch: 4294967295, + } + }; +} + +impl snowbridge_pallet_ethereum_client::Config for Test { + type RuntimeEvent = RuntimeEvent; + type ForkVersions = ChainForkVersions; + type WeightInfo = (); +} + +// Mock verifier +pub struct MockVerifier; + +impl Verifier for MockVerifier { + fn verify(_: &Log, _: &Proof) -> Result<(), VerificationError> { + Ok(()) + } +} + +const GATEWAY_ADDRESS: [u8; 20] = hex!["eda338e4dc46038493b885327842fd3e301cab39"]; + +parameter_types! { + pub const EthereumNetwork: xcm::v3::NetworkId = xcm::v3::NetworkId::Ethereum { chain_id: 11155111 }; + pub const GatewayAddress: H160 = H160(GATEWAY_ADDRESS); + pub const CreateAssetCall: [u8;2] = [53, 0]; + pub const CreateAssetExecutionFee: u128 = 2_000_000_000; + pub const CreateAssetDeposit: u128 = 100_000_000_000; + pub const SendTokenExecutionFee: u128 = 1_000_000_000; + pub const InitialFund: u128 = 1_000_000_000_000; + pub const InboundQueuePalletInstance: u8 = 80; +} + +#[cfg(feature = "runtime-benchmarks")] +impl BenchmarkHelper for Test { + // not implemented since the MockVerifier is used for tests + fn initialize_storage(_: BeaconHeader, _: H256) {} +} + +// Mock XCM sender that always succeeds +pub struct MockXcmSender; + +impl SendXcm for MockXcmSender { + type Ticket = Xcm<()>; + + fn validate( + dest: &mut Option, + xcm: &mut Option>, + ) -> SendResult { + if let Some(location) = dest { + match location.unpack() { + (_, [Parachain(1001)]) => return Err(XcmpSendError::NotApplicable), + _ => Ok((xcm.clone().unwrap(), Assets::default())), + } + } else { + Ok((xcm.clone().unwrap(), Assets::default())) + } + } + + fn deliver(xcm: Self::Ticket) -> core::result::Result { + let hash = xcm.using_encoded(sp_io::hashing::blake2_256); + Ok(hash) + } +} + +parameter_types! { + pub const OwnParaId: ParaId = ParaId::new(1013); + pub Parameters: PricingParameters = PricingParameters { + exchange_rate: FixedU128::from_rational(1, 400), + fee_per_gas: gwei(20), + rewards: Rewards { local: DOT, remote: meth(1) }, + multiplier: FixedU128::from_rational(1, 1), + }; +} + +pub const DOT: u128 = 10_000_000_000; + +pub const MOCK_CHANNEL_ID: [u8; 32] = + hex!("c173fac324158e77fb5840738a1a541f633cbec8884c6a601c567d2b376a0539"); + +pub struct MockChannelLookup; +impl StaticLookup for MockChannelLookup { + type Source = ChannelId; + type Target = Channel; + + fn lookup(channel_id: Self::Source) -> Option { + if channel_id != MOCK_CHANNEL_ID.into() { + return None; + } + Some(Channel { + agent_id: H256::zero(), + para_id: ASSET_HUB_PARAID.into(), + }) + } +} + +pub struct SuccessfulTransactor; +impl TransactAsset for SuccessfulTransactor { + fn can_check_in(_origin: &Location, _what: &Asset, _context: &XcmContext) -> XcmResult { + Ok(()) + } + + fn can_check_out(_dest: &Location, _what: &Asset, _context: &XcmContext) -> XcmResult { + Ok(()) + } + + fn deposit_asset(_what: &Asset, _who: &Location, _context: Option<&XcmContext>) -> XcmResult { + Ok(()) + } + + fn withdraw_asset( + _what: &Asset, + _who: &Location, + _context: Option<&XcmContext>, + ) -> Result { + Ok(AssetsInHolding::default()) + } + + fn internal_transfer_asset( + _what: &Asset, + _from: &Location, + _to: &Location, + _context: &XcmContext, + ) -> Result { + Ok(AssetsInHolding::default()) + } +} + +pub struct DummyPrefix; + +impl MessageProcessor for DummyPrefix { + fn can_process_message(_channel: &Channel, _envelope: &Envelope) -> bool { + false + } + + fn process_message(_channel: Channel, _envelope: Envelope) -> Result<(), DispatchError> { + panic!("DummyPrefix::process_message shouldn't be called"); + } +} + +pub struct DummySuffix; + +impl MessageProcessor for DummySuffix { + fn can_process_message(_channel: &Channel, _envelope: &Envelope) -> bool { + true + } + + fn process_message(_channel: Channel, _envelope: Envelope) -> Result<(), DispatchError> { + panic!("DummySuffix::process_message shouldn't be called"); + } +} + +impl snowbridge_pallet_inbound_queue::Config for Test { + type RuntimeEvent = RuntimeEvent; + type Verifier = MockVerifier; + type Token = Balances; + type XcmSender = MockXcmSender; + type WeightInfo = (); + type GatewayAddress = GatewayAddress; + type MessageConverter = MessageToXcm< + CreateAssetCall, + CreateAssetDeposit, + InboundQueuePalletInstance, + AccountId, + Balance, + >; + type PricingParameters = Parameters; + type ChannelLookup = MockChannelLookup; + #[cfg(feature = "runtime-benchmarks")] + type Helper = Test; + type WeightToFee = IdentityFee; + type LengthToFee = IdentityFee; + type MaxMessageSize = ConstU32<1024>; + type AssetTransactor = SuccessfulTransactor; + type MessageProcessor = ( + DummyPrefix, + XcmMessageProcessor, + SymbioticMessageProcessor, + DummySuffix, + ); +} + +pub struct ValidatorIdOf; +impl sp_runtime::traits::Convert> for ValidatorIdOf { + fn convert(a: AccountId) -> Option { + Some(a) + } +} + +pub struct DummyValidatorRegistration; + +impl ValidatorRegistration for DummyValidatorRegistration { + fn is_registered(_id: &AccountId) -> bool { + true + } +} + +parameter_types! { + + pub const MaxWhitelistedValidators: u32 = 100; + pub const MaxExternalValidators: u32 = 100; + pub const SessionsPerEra: SessionIndex = runtime_common::prod_or_fast!(6, 3); +} + +pub struct DummyUnixTime; + +impl UnixTime for DummyUnixTime { + fn now() -> Duration { + Duration::default() + } +} + +impl pallet_external_validators::Config for Test { + type RuntimeEvent = RuntimeEvent; + type UpdateOrigin = EnsureRoot; + type HistoryDepth = ConstU32<84>; + type MaxWhitelistedValidators = MaxWhitelistedValidators; + type MaxExternalValidators = MaxExternalValidators; + type ValidatorId = AccountId; + type ValidatorIdOf = ValidatorIdOf; + type ValidatorRegistration = DummyValidatorRegistration; + type UnixTime = DummyUnixTime; + type SessionsPerEra = SessionsPerEra; + type OnEraStart = (); + type OnEraEnd = (); + type WeightInfo = (); + #[cfg(feature = "runtime-benchmarks")] + type Currency = Balances; +} + +pub fn setup() { + System::set_block_number(1); + Balances::mint_into( + &sibling_sovereign_account::(ASSET_HUB_PARAID.into()), + InitialFund::get(), + ) + .unwrap(); + Balances::mint_into( + &sibling_sovereign_account::(TEMPLATE_PARAID.into()), + InitialFund::get(), + ) + .unwrap(); +} + +pub fn mock_ext() -> sp_io::TestExternalities { + let storage = frame_system::GenesisConfig::::default() + .build_storage() + .unwrap(); + let mut ext: sp_io::TestExternalities = storage.into(); + ext.execute_with(setup); + ext +} + +pub const ASSET_HUB_PARAID: u32 = 1000u32; +pub const TEMPLATE_PARAID: u32 = 1001u32; diff --git a/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/mod.rs b/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/mod.rs new file mode 100644 index 000000000..bbd73548f --- /dev/null +++ b/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/mod.rs @@ -0,0 +1,3 @@ +mod integration_tests; +mod message_processor_tests; +mod mock; diff --git a/solo-chains/runtime/dancelight/src/tests/mod.rs b/solo-chains/runtime/dancelight/src/tests/mod.rs index a9c7af4ca..f131f2c4f 100644 --- a/solo-chains/runtime/dancelight/src/tests/mod.rs +++ b/solo-chains/runtime/dancelight/src/tests/mod.rs @@ -27,6 +27,7 @@ mod common; mod core_scheduling_tests; mod ethereum_client; mod external_validators_tests; +mod inbound_queue_tests; mod inflation_rewards; mod integration_test; mod migrations_test; From f05a191493ae8ae27f13443b0121f03b18f386c7 Mon Sep 17 00:00:00 2001 From: Parth Desai Date: Tue, 19 Nov 2024 19:39:47 +0400 Subject: [PATCH 02/10] fix runtime benchmark --- Cargo.lock | 1 + Cargo.toml | 1 + solo-chains/runtime/dancelight/Cargo.toml | 2 + .../src/bridge_to_ethereum_config.rs | 48 ++++++++++- solo-chains/runtime/dancelight/src/lib.rs | 1 + .../runtime/dancelight/src/weights/mod.rs | 1 + .../snowbridge_pallet_inbound_queue.rs | 82 +++++++++++++++++++ 7 files changed, 132 insertions(+), 4 deletions(-) create mode 100644 solo-chains/runtime/dancelight/src/weights/snowbridge_pallet_inbound_queue.rs diff --git a/Cargo.lock b/Cargo.lock index 328198413..718366472 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3457,6 +3457,7 @@ dependencies = [ "snowbridge-milagro-bls", "snowbridge-pallet-ethereum-client", "snowbridge-pallet-inbound-queue", + "snowbridge-pallet-inbound-queue-fixtures", "snowbridge-pallet-outbound-queue", "snowbridge-pallet-system", "snowbridge-router-primitives", diff --git a/Cargo.toml b/Cargo.toml index 7ea93362e..674aa123d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -266,6 +266,7 @@ snowbridge-beacon-primitives = { git = "https://github.com/moondance-labs/polkad snowbridge-core = { git = "https://github.com/moondance-labs/polkadot-sdk", branch = "tanssi-polkadot-stable2409", default-features = false } snowbridge-pallet-ethereum-client = { git = "https://github.com/moondance-labs/polkadot-sdk", branch = "tanssi-polkadot-stable2409", default-features = false } snowbridge-pallet-inbound-queue = { git = "https://github.com/moondance-labs/polkadot-sdk", branch = "tanssi-polkadot-stable2409", default-features = false } +snowbridge-pallet-inbound-queue-fixtures = { git = "https://github.com/moondance-labs/polkadot-sdk", branch = "tanssi-polkadot-stable2409", default-features = false } snowbridge-pallet-outbound-queue = { git = "https://github.com/moondance-labs/polkadot-sdk", branch = "tanssi-polkadot-stable2409", default-features = false } snowbridge-pallet-system = { git = "https://github.com/moondance-labs/polkadot-sdk", branch = "tanssi-polkadot-stable2409", default-features = false } snowbridge-router-primitives = { git = "https://github.com/moondance-labs/polkadot-sdk", branch = "tanssi-polkadot-stable2409", default-features = false } diff --git a/solo-chains/runtime/dancelight/Cargo.toml b/solo-chains/runtime/dancelight/Cargo.toml index d310ab4d1..0cd57a1af 100644 --- a/solo-chains/runtime/dancelight/Cargo.toml +++ b/solo-chains/runtime/dancelight/Cargo.toml @@ -148,6 +148,7 @@ snowbridge-beacon-primitives = { workspace = true } snowbridge-core = { workspace = true } snowbridge-pallet-ethereum-client = { workspace = true } snowbridge-pallet-inbound-queue = { workspace = true } +snowbridge-pallet-inbound-queue-fixtures = { workspace = true, optional = true } snowbridge-pallet-outbound-queue = { workspace = true } snowbridge-pallet-system = { workspace = true } snowbridge-router-primitives = { workspace = true } @@ -366,6 +367,7 @@ runtime-benchmarks = [ "snowbridge-core/runtime-benchmarks", "snowbridge-pallet-ethereum-client/runtime-benchmarks", "snowbridge-pallet-inbound-queue/runtime-benchmarks", + "snowbridge-pallet-inbound-queue-fixtures", "snowbridge-pallet-outbound-queue/runtime-benchmarks", "snowbridge-pallet-system/runtime-benchmarks", "snowbridge-router-primitives/runtime-benchmarks", diff --git a/solo-chains/runtime/dancelight/src/bridge_to_ethereum_config.rs b/solo-chains/runtime/dancelight/src/bridge_to_ethereum_config.rs index a8105af47..e47773e0b 100644 --- a/solo-chains/runtime/dancelight/src/bridge_to_ethereum_config.rs +++ b/solo-chains/runtime/dancelight/src/bridge_to_ethereum_config.rs @@ -17,7 +17,7 @@ //! The bridge to ethereum config pub const SLOTS_PER_EPOCH: u32 = snowbridge_pallet_ethereum_client::config::SLOTS_PER_EPOCH as u32; - +#[cfg(not(feature = "runtime-benchmarks"))] use crate::symbiotic_message_processor::SymbioticMessageProcessor; use crate::xcm_config::UniversalLocation; use frame_support::weights::ConstantMultiplier; @@ -163,7 +163,15 @@ impl snowbridge_pallet_system::Config for Runtime { #[cfg(feature = "runtime-benchmarks")] mod benchmark_helper { - use {crate::RuntimeOrigin, xcm::latest::Location}; + use snowbridge_beacon_primitives::BeaconHeader; + use snowbridge_core::Channel; + use snowbridge_pallet_system::Channels; + use snowbridge_router_primitives::inbound::envelope::Envelope; + use snowbridge_router_primitives::inbound::MessageProcessor; + use sp_core::H256; + use { + crate::EthereumBeaconClient, crate::Runtime, crate::RuntimeOrigin, xcm::latest::Location, + }; pub struct EthSystemBenchHelper; @@ -178,6 +186,35 @@ mod benchmark_helper { RuntimeOrigin::from(pallet_xcm::Origin::Xcm(location)) } } + + impl snowbridge_pallet_inbound_queue::BenchmarkHelper for EthSystemBenchHelper { + fn initialize_storage(beacon_header: BeaconHeader, block_roots_root: H256) { + let submit_message = snowbridge_pallet_inbound_queue_fixtures::register_token::make_register_token_message(); + let envelope: Envelope = Envelope::try_from(&submit_message.message.event_log).unwrap(); + + Channels::::set( + envelope.channel_id, + Some(Channel { + agent_id: Default::default(), + para_id: Default::default(), + }), + ); + + EthereumBeaconClient::store_finalized_header(beacon_header, block_roots_root).unwrap(); + } + } + + pub struct DoNothingMessageProcessor; + + impl MessageProcessor for DoNothingMessageProcessor { + fn can_process_message(_: &Channel, _: &Envelope) -> bool { + true + } + + fn process_message(_: Channel, _: Envelope) -> Result<(), sp_runtime::DispatchError> { + Ok(()) + } + } } pub struct DoNothingRouter; @@ -219,12 +256,15 @@ impl snowbridge_pallet_inbound_queue::Config for Runtime { type MessageConverter = DoNothingConvertMessage; type ChannelLookup = EthereumSystem; type PricingParameters = EthereumSystem; - type WeightInfo = (); + type WeightInfo = weights::snowbridge_pallet_inbound_queue::SubstrateWeight; #[cfg(feature = "runtime-benchmarks")] - type Helper = Runtime; + type Helper = benchmark_helper::EthSystemBenchHelper; type WeightToFee = WeightToFee; type LengthToFee = ConstantMultiplier; type MaxMessageSize = ConstU32<2048>; type AssetTransactor = ::AssetTransactor; + #[cfg(not(feature = "runtime-benchmarks"))] type MessageProcessor = (SymbioticMessageProcessor,); + #[cfg(feature = "runtime-benchmarks")] + type MessageProcessor = (benchmark_helper::DoNothingMessageProcessor,); } diff --git a/solo-chains/runtime/dancelight/src/lib.rs b/solo-chains/runtime/dancelight/src/lib.rs index 72cea2761..39b3c5bd6 100644 --- a/solo-chains/runtime/dancelight/src/lib.rs +++ b/solo-chains/runtime/dancelight/src/lib.rs @@ -2089,6 +2089,7 @@ mod benches { [snowbridge_pallet_ethereum_client, EthereumBeaconClient] [snowbridge_pallet_outbound_queue, EthereumOutboundQueue] [snowbridge_pallet_system, EthereumSystem] + [snowbridge_pallet_inbound_queue, EthereumInboundQueue] ); } diff --git a/solo-chains/runtime/dancelight/src/weights/mod.rs b/solo-chains/runtime/dancelight/src/weights/mod.rs index 7531272cb..9eec1d86d 100644 --- a/solo-chains/runtime/dancelight/src/weights/mod.rs +++ b/solo-chains/runtime/dancelight/src/weights/mod.rs @@ -50,5 +50,6 @@ pub mod runtime_parachains_initializer; pub mod runtime_parachains_paras; pub mod runtime_parachains_paras_inherent; pub mod snowbridge_pallet_ethereum_client; +pub mod snowbridge_pallet_inbound_queue; pub mod snowbridge_pallet_outbound_queue; pub mod snowbridge_pallet_system; diff --git a/solo-chains/runtime/dancelight/src/weights/snowbridge_pallet_inbound_queue.rs b/solo-chains/runtime/dancelight/src/weights/snowbridge_pallet_inbound_queue.rs new file mode 100644 index 000000000..ccf29844d --- /dev/null +++ b/solo-chains/runtime/dancelight/src/weights/snowbridge_pallet_inbound_queue.rs @@ -0,0 +1,82 @@ +// Copyright (C) Moondance Labs Ltd. +// This file is part of Tanssi. + +// Tanssi is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Tanssi is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Tanssi. If not, see + + +//! Autogenerated weights for snowbridge_pallet_inbound_queue +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 42.0.0 +//! DATE: 2024-11-19, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! WORST CASE MAP SIZE: `1000000` +//! HOSTNAME: `Parths-MacBook-Pro-Work.local`, CPU: `` +//! EXECUTION: , WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024 + +// Executed Command: +// target/release/tanssi-relay +// benchmark +// pallet +// --execution=wasm +// --wasm-execution=compiled +// --pallet +// snowbridge_pallet_inbound_queue +// --extrinsic +// * +// --chain=dev +// --steps +// 50 +// --repeat +// 20 +// --template=./benchmarking/frame-weight-runtime-template.hbs +// --json-file +// raw.json +// --output +// ./snowbridge_pallet_inbound_queue.rs + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}}; +use sp_std::marker::PhantomData; + +/// Weights for snowbridge_pallet_inbound_queue using the Substrate node and recommended hardware. +pub struct SubstrateWeight(PhantomData); +impl snowbridge_pallet_inbound_queue::WeightInfo for SubstrateWeight { + /// Storage: `EthereumInboundQueue::OperatingMode` (r:1 w:0) + /// Proof: `EthereumInboundQueue::OperatingMode` (`max_values`: Some(1), `max_size`: Some(1), added: 496, mode: `MaxEncodedLen`) + /// Storage: `EthereumBeaconClient::LatestFinalizedBlockRoot` (r:1 w:0) + /// Proof: `EthereumBeaconClient::LatestFinalizedBlockRoot` (`max_values`: Some(1), `max_size`: Some(32), added: 527, mode: `MaxEncodedLen`) + /// Storage: `EthereumBeaconClient::FinalizedBeaconState` (r:1 w:0) + /// Proof: `EthereumBeaconClient::FinalizedBeaconState` (`max_values`: None, `max_size`: Some(72), added: 2547, mode: `MaxEncodedLen`) + /// Storage: UNKNOWN KEY `0xaed97c7854d601808b98ae43079dafb3` (r:1 w:0) + /// Proof: UNKNOWN KEY `0xaed97c7854d601808b98ae43079dafb3` (r:1 w:0) + /// Storage: `EthereumSystem::Channels` (r:1 w:0) + /// Proof: `EthereumSystem::Channels` (`max_values`: None, `max_size`: Some(76), added: 2551, mode: `MaxEncodedLen`) + /// Storage: `EthereumInboundQueue::Nonce` (r:1 w:1) + /// Proof: `EthereumInboundQueue::Nonce` (`max_values`: None, `max_size`: Some(48), added: 2523, mode: `MaxEncodedLen`) + /// Storage: `EthereumSystem::PricingParameters` (r:1 w:0) + /// Proof: `EthereumSystem::PricingParameters` (`max_values`: Some(1), `max_size`: Some(112), added: 607, mode: `MaxEncodedLen`) + /// Storage: `System::Account` (r:1 w:0) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`) + fn submit() -> Weight { + // Proof Size summary in bytes: + // Measured: `740` + // Estimated: `4205` + // Minimum execution time: 54_000_000 picoseconds. + Weight::from_parts(54_000_000, 4205) + .saturating_add(T::DbWeight::get().reads(8_u64)) + .saturating_add(T::DbWeight::get().writes(1_u64)) + } +} \ No newline at end of file From 50727e24a1a8ab6521f88837cd866f9660fb5072 Mon Sep 17 00:00:00 2001 From: Parth Desai Date: Wed, 20 Nov 2024 12:17:11 +0400 Subject: [PATCH 03/10] remove mock runtime --- .../src/bridge_to_ethereum_config.rs | 28 +- .../inbound_queue_tests/integration_tests.rs | 36 +- .../src/tests/inbound_queue_tests/mock.rs | 347 ------------------ .../src/tests/inbound_queue_tests/mod.rs | 1 - 4 files changed, 45 insertions(+), 367 deletions(-) delete mode 100644 solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/mock.rs diff --git a/solo-chains/runtime/dancelight/src/bridge_to_ethereum_config.rs b/solo-chains/runtime/dancelight/src/bridge_to_ethereum_config.rs index e47773e0b..7540c0db0 100644 --- a/solo-chains/runtime/dancelight/src/bridge_to_ethereum_config.rs +++ b/solo-chains/runtime/dancelight/src/bridge_to_ethereum_config.rs @@ -17,9 +17,11 @@ //! The bridge to ethereum config pub const SLOTS_PER_EPOCH: u32 = snowbridge_pallet_ethereum_client::config::SLOTS_PER_EPOCH as u32; + #[cfg(not(feature = "runtime-benchmarks"))] use crate::symbiotic_message_processor::SymbioticMessageProcessor; -use crate::xcm_config::UniversalLocation; +#[cfg(not(test))] +use crate::EthereumBeaconClient; use frame_support::weights::ConstantMultiplier; use parity_scale_codec::Encode; use snowbridge_router_primitives::inbound::{ @@ -30,10 +32,10 @@ use sp_core::{H160, H256}; use xcm::latest::{Assets, Location, SendError, SendResult, SendXcm, Xcm, XcmHash}; use { crate::{ - parameter_types, weights, xcm_config, AccountId, AggregateMessageOrigin, Balance, Balances, - EthereumBeaconClient, EthereumInboundQueue, EthereumOutboundQueue, EthereumSystem, - FixedU128, GetAggregateMessageOrigin, Keccak256, MessageQueue, Runtime, RuntimeEvent, - TransactionByteFee, TreasuryAccount, WeightToFee, UNITS, + parameter_types, weights, xcm_config, xcm_config::UniversalLocation, AccountId, + AggregateMessageOrigin, Balance, Balances, EthereumInboundQueue, EthereumOutboundQueue, + EthereumSystem, FixedU128, GetAggregateMessageOrigin, Keccak256, MessageQueue, Runtime, + RuntimeEvent, TransactionByteFee, TreasuryAccount, WeightToFee, UNITS, }, dancelight_runtime_constants::snowbridge::EthereumLocation, pallet_xcm::EnsureXcm, @@ -217,6 +219,19 @@ mod benchmark_helper { } } +#[cfg(test)] +mod test_helpers { + use snowbridge_core::inbound::{Log, Proof, VerificationError, Verifier}; + + pub struct MockVerifier; + + impl Verifier for MockVerifier { + fn verify(_: &Log, _: &Proof) -> Result<(), VerificationError> { + Ok(()) + } + } +} + pub struct DoNothingRouter; impl SendXcm for DoNothingRouter { type Ticket = Xcm<()>; @@ -249,7 +264,10 @@ impl ConvertMessage for DoNothingConvertMessage { impl snowbridge_pallet_inbound_queue::Config for Runtime { type RuntimeEvent = RuntimeEvent; + #[cfg(not(test))] type Verifier = EthereumBeaconClient; + #[cfg(test)] + type Verifier = test_helpers::MockVerifier; type Token = Balances; type XcmSender = DoNothingRouter; type GatewayAddress = EthereumGatewayAddress; diff --git a/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/integration_tests.rs b/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/integration_tests.rs index d2781e3ae..7434f1efe 100644 --- a/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/integration_tests.rs +++ b/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/integration_tests.rs @@ -1,24 +1,32 @@ use crate::symbiotic_message_processor::{Command, Payload, MAGIC_BYTES}; -use crate::tests::inbound_queue_tests::mock::{ - mock_ext, AccountId, ExternalValidators as MockExternalValidators, InboundQueue, - Test as TestRuntime, MOCK_CHANNEL_ID, -}; +use crate::tests::common::ExtBuilder; +use crate::{AccountId, EthereumInboundQueue, ExternalValidators, Runtime}; use alloy_sol_types::SolEvent; use frame_system::pallet_prelude::OriginFor; use keyring::AccountKeyring; use parity_scale_codec::Encode; use snowbridge_beacon_primitives::types::deneb; use snowbridge_beacon_primitives::{ExecutionProof, VersionedExecutionPayloadHeader}; -use snowbridge_core::inbound::{Log, Message, Proof}; +use snowbridge_core::{ + inbound::{Log, Message, Proof}, + Channel, ChannelId, +}; use snowbridge_router_primitives::inbound::envelope::OutboundMessageAccepted; use sp_core::H256; use sp_runtime::DispatchError; +const MOCK_CHANNEL_ID: [u8; 32] = [0; 32]; + #[test] fn test_inbound_queue_message_passing() { - mock_ext().execute_with(|| { + ExtBuilder::default().build().execute_with(|| { let current_nonce = 1; + snowbridge_pallet_system::Channels::::set(ChannelId::from(MOCK_CHANNEL_ID), Some(Channel { + agent_id: Default::default(), + para_id: Default::default() + })); + let dummy_proof = Proof { receipt_proof: (vec![], vec![]), execution_proof: ExecutionProof { header: Default::default(), ancestry_proof: None, @@ -51,16 +59,16 @@ fn test_inbound_queue_message_passing() { payload: vec![], }; - assert_eq!(InboundQueue::submit(OriginFor::::signed(AccountId::new([0; 32])), Message { + assert_eq!(EthereumInboundQueue::submit(OriginFor::::signed(AccountId::new([0; 32])), Message { event_log: Log { - address: ::GatewayAddress::get(), + address: ::GatewayAddress::get(), topics: event_with_empty_payload.encode_topics().into_iter().map(|word| H256::from(word.0.0)).collect(), data: event_with_empty_payload.encode_data(), }, proof: dummy_proof.clone(), }), Err(DispatchError::Other("No handler for message found"))); - assert_eq!(MockExternalValidators::validators(), MockExternalValidators::whitelisted_validators()); + assert_eq!(ExternalValidators::validators(), ExternalValidators::whitelisted_validators()); let payload_validators = vec![ AccountKeyring::Charlie.to_account_id(), @@ -70,7 +78,7 @@ fn test_inbound_queue_message_passing() { let payload = Payload { magic_bytes: MAGIC_BYTES, - message: crate::symbiotic_message_processor::Message::V1(Command::::ReceiveValidators { + message: crate::symbiotic_message_processor::Message::V1(Command::::ReceiveValidators { validators: payload_validators.clone() }), }; @@ -82,9 +90,9 @@ fn test_inbound_queue_message_passing() { payload: payload.encode(), }; - assert_eq!(InboundQueue::submit(OriginFor::::signed(AccountId::new([0; 32])), Message { + assert_eq!(EthereumInboundQueue::submit(OriginFor::::signed(AccountId::new([0; 32])), Message { event_log: Log { - address: ::GatewayAddress::get(), + address: ::GatewayAddress::get(), topics: event_with_valid_payload.encode_topics().into_iter().map(|word| H256::from(word.0.0)).collect(), data: event_with_valid_payload.encode_data(), }, @@ -92,7 +100,7 @@ fn test_inbound_queue_message_passing() { }), Ok(())); - let expected_validators = [MockExternalValidators::whitelisted_validators(), payload_validators].concat(); - assert_eq!(MockExternalValidators::validators(), expected_validators); + let expected_validators = [ExternalValidators::whitelisted_validators(), payload_validators].concat(); + assert_eq!(ExternalValidators::validators(), expected_validators); }); } diff --git a/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/mock.rs b/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/mock.rs deleted file mode 100644 index b6bbc5e63..000000000 --- a/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/mock.rs +++ /dev/null @@ -1,347 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// SPDX-FileCopyrightText: 2023 Snowfork - -use crate::symbiotic_message_processor::SymbioticMessageProcessor; -use frame_support::traits::fungible::Mutate; -use frame_support::traits::{UnixTime, ValidatorRegistration}; -use frame_support::{derive_impl, parameter_types, traits::ConstU32, weights::IdentityFee}; -use frame_system::EnsureRoot; -use hex_literal::hex; -use polkadot_parachain_primitives::primitives::Id as ParaId; -use snowbridge_beacon_primitives::{Fork, ForkVersions}; -use snowbridge_core::inbound::Verifier; -use snowbridge_core::sibling_sovereign_account; -use snowbridge_core::{ - gwei, - inbound::{Log, Proof, VerificationError}, - meth, Channel, ChannelId, PricingParameters, Rewards, StaticLookup, -}; -use snowbridge_pallet_inbound_queue::xcm_message_processor::XcmMessageProcessor; -use snowbridge_router_primitives::inbound::envelope::Envelope; -use snowbridge_router_primitives::inbound::{MessageProcessor, MessageToXcm}; -use sp_core::Encode; -use sp_core::{H160, H256}; -use sp_runtime::{ - traits::{IdentifyAccount, IdentityLookup, Verify}, - BuildStorage, DispatchError, FixedU128, MultiSignature, -}; -use sp_staking::SessionIndex; -use sp_std::{convert::From, default::Default}; -use std::time::Duration; -use xcm::latest::SendError as XcmpSendError; -use xcm::{latest::SendXcm, prelude::*}; -use xcm_executor::traits::TransactAsset; -use xcm_executor::AssetsInHolding; - -type Block = frame_system::mocking::MockBlock; - -frame_support::construct_runtime!( - pub enum Test - { - System: frame_system::{Pallet, Call, Storage, Event}, - Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, - EthereumBeaconClient: snowbridge_pallet_ethereum_client::{Pallet, Call, Storage, Event}, - InboundQueue: snowbridge_pallet_inbound_queue::{Pallet, Call, Storage, Event}, - ExternalValidators: pallet_external_validators::{Pallet, Call, Storage, Event} - } -); - -pub type Signature = MultiSignature; -pub type AccountId = <::Signer as IdentifyAccount>::AccountId; - -type Balance = u128; - -#[derive_impl(frame_system::config_preludes::TestDefaultConfig)] -impl frame_system::Config for Test { - type AccountId = AccountId; - type Lookup = IdentityLookup; - type AccountData = pallet_balances::AccountData; - type Block = Block; -} - -parameter_types! { - pub const ExistentialDeposit: u128 = 1; -} - -#[derive_impl(pallet_balances::config_preludes::TestDefaultConfig)] -impl pallet_balances::Config for Test { - type Balance = Balance; - type ExistentialDeposit = ExistentialDeposit; - type AccountStore = System; -} - -parameter_types! { - pub const ChainForkVersions: ForkVersions = ForkVersions{ - genesis: Fork { - version: [0, 0, 0, 1], // 0x00000001 - epoch: 0, - }, - altair: Fork { - version: [1, 0, 0, 1], // 0x01000001 - epoch: 0, - }, - bellatrix: Fork { - version: [2, 0, 0, 1], // 0x02000001 - epoch: 0, - }, - capella: Fork { - version: [3, 0, 0, 1], // 0x03000001 - epoch: 0, - }, - deneb: Fork { - version: [4, 0, 0, 1], // 0x04000001 - epoch: 4294967295, - } - }; -} - -impl snowbridge_pallet_ethereum_client::Config for Test { - type RuntimeEvent = RuntimeEvent; - type ForkVersions = ChainForkVersions; - type WeightInfo = (); -} - -// Mock verifier -pub struct MockVerifier; - -impl Verifier for MockVerifier { - fn verify(_: &Log, _: &Proof) -> Result<(), VerificationError> { - Ok(()) - } -} - -const GATEWAY_ADDRESS: [u8; 20] = hex!["eda338e4dc46038493b885327842fd3e301cab39"]; - -parameter_types! { - pub const EthereumNetwork: xcm::v3::NetworkId = xcm::v3::NetworkId::Ethereum { chain_id: 11155111 }; - pub const GatewayAddress: H160 = H160(GATEWAY_ADDRESS); - pub const CreateAssetCall: [u8;2] = [53, 0]; - pub const CreateAssetExecutionFee: u128 = 2_000_000_000; - pub const CreateAssetDeposit: u128 = 100_000_000_000; - pub const SendTokenExecutionFee: u128 = 1_000_000_000; - pub const InitialFund: u128 = 1_000_000_000_000; - pub const InboundQueuePalletInstance: u8 = 80; -} - -#[cfg(feature = "runtime-benchmarks")] -impl BenchmarkHelper for Test { - // not implemented since the MockVerifier is used for tests - fn initialize_storage(_: BeaconHeader, _: H256) {} -} - -// Mock XCM sender that always succeeds -pub struct MockXcmSender; - -impl SendXcm for MockXcmSender { - type Ticket = Xcm<()>; - - fn validate( - dest: &mut Option, - xcm: &mut Option>, - ) -> SendResult { - if let Some(location) = dest { - match location.unpack() { - (_, [Parachain(1001)]) => return Err(XcmpSendError::NotApplicable), - _ => Ok((xcm.clone().unwrap(), Assets::default())), - } - } else { - Ok((xcm.clone().unwrap(), Assets::default())) - } - } - - fn deliver(xcm: Self::Ticket) -> core::result::Result { - let hash = xcm.using_encoded(sp_io::hashing::blake2_256); - Ok(hash) - } -} - -parameter_types! { - pub const OwnParaId: ParaId = ParaId::new(1013); - pub Parameters: PricingParameters = PricingParameters { - exchange_rate: FixedU128::from_rational(1, 400), - fee_per_gas: gwei(20), - rewards: Rewards { local: DOT, remote: meth(1) }, - multiplier: FixedU128::from_rational(1, 1), - }; -} - -pub const DOT: u128 = 10_000_000_000; - -pub const MOCK_CHANNEL_ID: [u8; 32] = - hex!("c173fac324158e77fb5840738a1a541f633cbec8884c6a601c567d2b376a0539"); - -pub struct MockChannelLookup; -impl StaticLookup for MockChannelLookup { - type Source = ChannelId; - type Target = Channel; - - fn lookup(channel_id: Self::Source) -> Option { - if channel_id != MOCK_CHANNEL_ID.into() { - return None; - } - Some(Channel { - agent_id: H256::zero(), - para_id: ASSET_HUB_PARAID.into(), - }) - } -} - -pub struct SuccessfulTransactor; -impl TransactAsset for SuccessfulTransactor { - fn can_check_in(_origin: &Location, _what: &Asset, _context: &XcmContext) -> XcmResult { - Ok(()) - } - - fn can_check_out(_dest: &Location, _what: &Asset, _context: &XcmContext) -> XcmResult { - Ok(()) - } - - fn deposit_asset(_what: &Asset, _who: &Location, _context: Option<&XcmContext>) -> XcmResult { - Ok(()) - } - - fn withdraw_asset( - _what: &Asset, - _who: &Location, - _context: Option<&XcmContext>, - ) -> Result { - Ok(AssetsInHolding::default()) - } - - fn internal_transfer_asset( - _what: &Asset, - _from: &Location, - _to: &Location, - _context: &XcmContext, - ) -> Result { - Ok(AssetsInHolding::default()) - } -} - -pub struct DummyPrefix; - -impl MessageProcessor for DummyPrefix { - fn can_process_message(_channel: &Channel, _envelope: &Envelope) -> bool { - false - } - - fn process_message(_channel: Channel, _envelope: Envelope) -> Result<(), DispatchError> { - panic!("DummyPrefix::process_message shouldn't be called"); - } -} - -pub struct DummySuffix; - -impl MessageProcessor for DummySuffix { - fn can_process_message(_channel: &Channel, _envelope: &Envelope) -> bool { - true - } - - fn process_message(_channel: Channel, _envelope: Envelope) -> Result<(), DispatchError> { - panic!("DummySuffix::process_message shouldn't be called"); - } -} - -impl snowbridge_pallet_inbound_queue::Config for Test { - type RuntimeEvent = RuntimeEvent; - type Verifier = MockVerifier; - type Token = Balances; - type XcmSender = MockXcmSender; - type WeightInfo = (); - type GatewayAddress = GatewayAddress; - type MessageConverter = MessageToXcm< - CreateAssetCall, - CreateAssetDeposit, - InboundQueuePalletInstance, - AccountId, - Balance, - >; - type PricingParameters = Parameters; - type ChannelLookup = MockChannelLookup; - #[cfg(feature = "runtime-benchmarks")] - type Helper = Test; - type WeightToFee = IdentityFee; - type LengthToFee = IdentityFee; - type MaxMessageSize = ConstU32<1024>; - type AssetTransactor = SuccessfulTransactor; - type MessageProcessor = ( - DummyPrefix, - XcmMessageProcessor, - SymbioticMessageProcessor, - DummySuffix, - ); -} - -pub struct ValidatorIdOf; -impl sp_runtime::traits::Convert> for ValidatorIdOf { - fn convert(a: AccountId) -> Option { - Some(a) - } -} - -pub struct DummyValidatorRegistration; - -impl ValidatorRegistration for DummyValidatorRegistration { - fn is_registered(_id: &AccountId) -> bool { - true - } -} - -parameter_types! { - - pub const MaxWhitelistedValidators: u32 = 100; - pub const MaxExternalValidators: u32 = 100; - pub const SessionsPerEra: SessionIndex = runtime_common::prod_or_fast!(6, 3); -} - -pub struct DummyUnixTime; - -impl UnixTime for DummyUnixTime { - fn now() -> Duration { - Duration::default() - } -} - -impl pallet_external_validators::Config for Test { - type RuntimeEvent = RuntimeEvent; - type UpdateOrigin = EnsureRoot; - type HistoryDepth = ConstU32<84>; - type MaxWhitelistedValidators = MaxWhitelistedValidators; - type MaxExternalValidators = MaxExternalValidators; - type ValidatorId = AccountId; - type ValidatorIdOf = ValidatorIdOf; - type ValidatorRegistration = DummyValidatorRegistration; - type UnixTime = DummyUnixTime; - type SessionsPerEra = SessionsPerEra; - type OnEraStart = (); - type OnEraEnd = (); - type WeightInfo = (); - #[cfg(feature = "runtime-benchmarks")] - type Currency = Balances; -} - -pub fn setup() { - System::set_block_number(1); - Balances::mint_into( - &sibling_sovereign_account::(ASSET_HUB_PARAID.into()), - InitialFund::get(), - ) - .unwrap(); - Balances::mint_into( - &sibling_sovereign_account::(TEMPLATE_PARAID.into()), - InitialFund::get(), - ) - .unwrap(); -} - -pub fn mock_ext() -> sp_io::TestExternalities { - let storage = frame_system::GenesisConfig::::default() - .build_storage() - .unwrap(); - let mut ext: sp_io::TestExternalities = storage.into(); - ext.execute_with(setup); - ext -} - -pub const ASSET_HUB_PARAID: u32 = 1000u32; -pub const TEMPLATE_PARAID: u32 = 1001u32; diff --git a/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/mod.rs b/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/mod.rs index bbd73548f..14f8f0186 100644 --- a/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/mod.rs +++ b/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/mod.rs @@ -1,3 +1,2 @@ mod integration_tests; mod message_processor_tests; -mod mock; From 42b9f0403811eb37cd9c4930ccd72a414e955f81 Mon Sep 17 00:00:00 2001 From: Parth Desai Date: Wed, 20 Nov 2024 19:50:06 +0400 Subject: [PATCH 04/10] move dummy data structures to primitives --- Cargo.lock | 1 + primitives/bridge/Cargo.toml | 3 ++ primitives/bridge/src/lib.rs | 40 ++++++++++++++++++ .../src/bridge_to_ethereum_config.rs | 41 ++----------------- 4 files changed, 48 insertions(+), 37 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 718366472..448535cf4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -18784,6 +18784,7 @@ dependencies = [ "snowbridge-beacon-primitives", "snowbridge-core", "snowbridge-pallet-outbound-queue", + "snowbridge-router-primitives", "sp-core", "sp-runtime", "sp-std", diff --git a/primitives/bridge/Cargo.toml b/primitives/bridge/Cargo.toml index 321afce04..3786ab144 100644 --- a/primitives/bridge/Cargo.toml +++ b/primitives/bridge/Cargo.toml @@ -23,6 +23,7 @@ serde = { workspace = true } snowbridge-beacon-primitives = { workspace = true } snowbridge-core = { workspace = true } snowbridge-pallet-outbound-queue = { workspace = true } +snowbridge-router-primitives = { workspace = true } sp-core = { workspace = true } sp-runtime = { workspace = true } sp-std = { workspace = true } @@ -45,6 +46,7 @@ std = [ "snowbridge-beacon-primitives/std", "snowbridge-core/std", "snowbridge-pallet-outbound-queue/std", + "snowbridge-router-primitives/std", "sp-core/std", "sp-runtime/std", "sp-std/std", @@ -55,5 +57,6 @@ runtime-benchmarks = [ "frame-system/runtime-benchmarks", "snowbridge-core/runtime-benchmarks", "snowbridge-pallet-outbound-queue/runtime-benchmarks", + "snowbridge-router-primitives/runtime-benchmarks", "sp-runtime/runtime-benchmarks", ] diff --git a/primitives/bridge/src/lib.rs b/primitives/bridge/src/lib.rs index 6af386177..4827a7a16 100644 --- a/primitives/bridge/src/lib.rs +++ b/primitives/bridge/src/lib.rs @@ -21,6 +21,10 @@ use { core::marker::PhantomData, + cumulus_primitives_core::{ + relay_chain::{AccountId, Balance}, + Assets, Location, SendResult, SendXcm, Xcm, XcmHash, + }, ethabi::Token, frame_support::{ ensure, @@ -34,6 +38,10 @@ use { ChannelId, }, snowbridge_pallet_outbound_queue::send_message_impl::Ticket, + snowbridge_router_primitives::inbound::{ + ConvertMessage, ConvertMessageError, VersionedXcmMessage, + }, + sp_core::hashing, sp_core::H256, sp_runtime::{app_crypto::sp_core, traits::Convert, RuntimeDebug}, sp_std::vec::Vec, @@ -210,3 +218,35 @@ pub trait DeliverMessage { fn deliver(ticket: Self::Ticket) -> Result; } + +/// Dummy router for xcm messages coming from ethereum +pub struct DoNothingRouter; +impl SendXcm for DoNothingRouter { + type Ticket = Xcm<()>; + + fn validate( + _dest: &mut Option, + xcm: &mut Option>, + ) -> SendResult { + Ok((xcm.clone().unwrap(), Assets::new())) + } + fn deliver(xcm: Xcm<()>) -> Result { + let hash = xcm.using_encoded(hashing::blake2_256); + Ok(hash) + } +} + +/// Dummy message converter to convert message to Xcm +pub struct DoNothingConvertMessage; + +impl ConvertMessage for DoNothingConvertMessage { + type Balance = Balance; + type AccountId = AccountId; + + fn convert( + _: H256, + _message: VersionedXcmMessage, + ) -> Result<(Xcm<()>, Self::Balance), ConvertMessageError> { + Err(ConvertMessageError::UnsupportedVersion) + } +} diff --git a/solo-chains/runtime/dancelight/src/bridge_to_ethereum_config.rs b/solo-chains/runtime/dancelight/src/bridge_to_ethereum_config.rs index 7540c0db0..b680b34e9 100644 --- a/solo-chains/runtime/dancelight/src/bridge_to_ethereum_config.rs +++ b/solo-chains/runtime/dancelight/src/bridge_to_ethereum_config.rs @@ -23,16 +23,12 @@ use crate::symbiotic_message_processor::SymbioticMessageProcessor; #[cfg(not(test))] use crate::EthereumBeaconClient; use frame_support::weights::ConstantMultiplier; -use parity_scale_codec::Encode; -use snowbridge_router_primitives::inbound::{ - ConvertMessage, ConvertMessageError, VersionedXcmMessage, -}; + +use sp_core::H160; use sp_core::{ConstU32, ConstU8}; -use sp_core::{H160, H256}; -use xcm::latest::{Assets, Location, SendError, SendResult, SendXcm, Xcm, XcmHash}; use { crate::{ - parameter_types, weights, xcm_config, xcm_config::UniversalLocation, AccountId, + parameter_types, weights, xcm_config, xcm_config::UniversalLocation, AggregateMessageOrigin, Balance, Balances, EthereumInboundQueue, EthereumOutboundQueue, EthereumSystem, FixedU128, GetAggregateMessageOrigin, Keccak256, MessageQueue, Runtime, RuntimeEvent, TransactionByteFee, TreasuryAccount, WeightToFee, UNITS, @@ -41,6 +37,7 @@ use { pallet_xcm::EnsureXcm, snowbridge_beacon_primitives::{Fork, ForkVersions}, snowbridge_core::{gwei, meth, AllowSiblingsOnly, PricingParameters, Rewards}, + tp_bridge::{DoNothingConvertMessage, DoNothingRouter}, }; // Ethereum Bridge @@ -232,36 +229,6 @@ mod test_helpers { } } -pub struct DoNothingRouter; -impl SendXcm for DoNothingRouter { - type Ticket = Xcm<()>; - - fn validate( - _dest: &mut Option, - xcm: &mut Option>, - ) -> SendResult { - Ok((xcm.clone().unwrap(), Assets::new())) - } - fn deliver(xcm: Xcm<()>) -> Result { - let hash = xcm.using_encoded(sp_io::hashing::blake2_256); - Ok(hash) - } -} - -pub struct DoNothingConvertMessage; - -impl ConvertMessage for DoNothingConvertMessage { - type Balance = Balance; - type AccountId = AccountId; - - fn convert( - _: H256, - _message: VersionedXcmMessage, - ) -> Result<(Xcm<()>, Self::Balance), ConvertMessageError> { - Err(ConvertMessageError::UnsupportedVersion) - } -} - impl snowbridge_pallet_inbound_queue::Config for Runtime { type RuntimeEvent = RuntimeEvent; #[cfg(not(test))] From ef7c34de51ca3706383667c3b602753ef56d15b8 Mon Sep 17 00:00:00 2001 From: Parth Desai Date: Thu, 21 Nov 2024 12:05:42 +0400 Subject: [PATCH 05/10] remove un-needed implementation --- .../runtime/dancelight/src/bridge_to_ethereum_config.rs | 6 ------ 1 file changed, 6 deletions(-) diff --git a/solo-chains/runtime/dancelight/src/bridge_to_ethereum_config.rs b/solo-chains/runtime/dancelight/src/bridge_to_ethereum_config.rs index b680b34e9..5cf998edf 100644 --- a/solo-chains/runtime/dancelight/src/bridge_to_ethereum_config.rs +++ b/solo-chains/runtime/dancelight/src/bridge_to_ethereum_config.rs @@ -180,12 +180,6 @@ mod benchmark_helper { } } - impl snowbridge_pallet_system::BenchmarkHelper for () { - fn make_xcm_origin(location: Location) -> RuntimeOrigin { - RuntimeOrigin::from(pallet_xcm::Origin::Xcm(location)) - } - } - impl snowbridge_pallet_inbound_queue::BenchmarkHelper for EthSystemBenchHelper { fn initialize_storage(beacon_header: BeaconHeader, block_roots_root: H256) { let submit_message = snowbridge_pallet_inbound_queue_fixtures::register_token::make_register_token_message(); From bba2ebb10769d6f121051f3aad2b1ddb38f70121 Mon Sep 17 00:00:00 2001 From: Parth Desai Date: Thu, 21 Nov 2024 13:02:33 +0400 Subject: [PATCH 06/10] move symbiotic_message_processor to primitives --- Cargo.lock | 1 + primitives/bridge/Cargo.toml | 3 +++ primitives/bridge/src/lib.rs | 2 ++ .../bridge}/src/symbiotic_message_processor.rs | 0 .../runtime/dancelight/src/bridge_to_ethereum_config.rs | 5 ++--- solo-chains/runtime/dancelight/src/lib.rs | 1 - 6 files changed, 8 insertions(+), 4 deletions(-) rename {solo-chains/runtime/dancelight => primitives/bridge}/src/symbiotic_message_processor.rs (100%) diff --git a/Cargo.lock b/Cargo.lock index 448535cf4..9cb239477 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -18778,6 +18778,7 @@ dependencies = [ "frame-system", "impl-trait-for-tuples", "macro_rules_attribute", + "pallet-external-validators", "parity-scale-codec", "scale-info", "serde", diff --git a/primitives/bridge/Cargo.toml b/primitives/bridge/Cargo.toml index 3786ab144..51b201022 100644 --- a/primitives/bridge/Cargo.toml +++ b/primitives/bridge/Cargo.toml @@ -17,6 +17,7 @@ frame-support = { workspace = true } frame-system = { workspace = true } impl-trait-for-tuples = { workspace = true } macro_rules_attribute = { workspace = true } +pallet-external-validators = { workspace = true } parity-scale-codec = { workspace = true } scale-info = { workspace = true } serde = { workspace = true } @@ -40,6 +41,7 @@ std = [ "ethabi/std", "frame-support/std", "frame-system/std", + "pallet-external-validators/std", "parity-scale-codec/std", "scale-info/std", "serde/std", @@ -55,6 +57,7 @@ runtime-benchmarks = [ "cumulus-primitives-core/runtime-benchmarks", "frame-support/runtime-benchmarks", "frame-system/runtime-benchmarks", + "pallet-external-validators/runtime-benchmarks", "snowbridge-core/runtime-benchmarks", "snowbridge-pallet-outbound-queue/runtime-benchmarks", "snowbridge-router-primitives/runtime-benchmarks", diff --git a/primitives/bridge/src/lib.rs b/primitives/bridge/src/lib.rs index 4827a7a16..cf80217f0 100644 --- a/primitives/bridge/src/lib.rs +++ b/primitives/bridge/src/lib.rs @@ -19,6 +19,8 @@ #![cfg_attr(not(feature = "std"), no_std)] +pub mod symbiotic_message_processor; + use { core::marker::PhantomData, cumulus_primitives_core::{ diff --git a/solo-chains/runtime/dancelight/src/symbiotic_message_processor.rs b/primitives/bridge/src/symbiotic_message_processor.rs similarity index 100% rename from solo-chains/runtime/dancelight/src/symbiotic_message_processor.rs rename to primitives/bridge/src/symbiotic_message_processor.rs diff --git a/solo-chains/runtime/dancelight/src/bridge_to_ethereum_config.rs b/solo-chains/runtime/dancelight/src/bridge_to_ethereum_config.rs index 5cf998edf..af52fdfbc 100644 --- a/solo-chains/runtime/dancelight/src/bridge_to_ethereum_config.rs +++ b/solo-chains/runtime/dancelight/src/bridge_to_ethereum_config.rs @@ -17,15 +17,14 @@ //! The bridge to ethereum config pub const SLOTS_PER_EPOCH: u32 = snowbridge_pallet_ethereum_client::config::SLOTS_PER_EPOCH as u32; - -#[cfg(not(feature = "runtime-benchmarks"))] -use crate::symbiotic_message_processor::SymbioticMessageProcessor; #[cfg(not(test))] use crate::EthereumBeaconClient; use frame_support::weights::ConstantMultiplier; use sp_core::H160; use sp_core::{ConstU32, ConstU8}; +#[cfg(not(feature = "runtime-benchmarks"))] +use tp_bridge::symbiotic_message_processor::SymbioticMessageProcessor; use { crate::{ parameter_types, weights, xcm_config, xcm_config::UniversalLocation, diff --git a/solo-chains/runtime/dancelight/src/lib.rs b/solo-chains/runtime/dancelight/src/lib.rs index 39b3c5bd6..ff39977df 100644 --- a/solo-chains/runtime/dancelight/src/lib.rs +++ b/solo-chains/runtime/dancelight/src/lib.rs @@ -148,7 +148,6 @@ use dancelight_runtime_constants::{currency::*, fee::*, time::*}; pub mod xcm_config; pub mod bridge_to_ethereum_config; -pub mod symbiotic_message_processor; // Weights mod weights; From de6076d74aa757a9b2273571be63bed1882f722b Mon Sep 17 00:00:00 2001 From: Parth Desai Date: Thu, 21 Nov 2024 20:16:02 +0400 Subject: [PATCH 07/10] fix CI --- .../bridge/src/symbiotic_message_processor.rs | 16 +++++++++++++++ .../inbound_queue_tests/integration_tests.rs | 20 +++++++++++++++++-- .../message_processor_tests.rs | 2 +- .../src/tests/inbound_queue_tests/mod.rs | 16 +++++++++++++++ 4 files changed, 51 insertions(+), 3 deletions(-) diff --git a/primitives/bridge/src/symbiotic_message_processor.rs b/primitives/bridge/src/symbiotic_message_processor.rs index aead5ac0d..8b48793d8 100644 --- a/primitives/bridge/src/symbiotic_message_processor.rs +++ b/primitives/bridge/src/symbiotic_message_processor.rs @@ -1,3 +1,19 @@ +// Copyright (C) Moondance Labs Ltd. +// This file is part of Tanssi. + +// Tanssi is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Tanssi is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Tanssi. If not, see + use frame_support::pallet_prelude::*; use parity_scale_codec::DecodeAll; use snowbridge_core::Channel; diff --git a/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/integration_tests.rs b/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/integration_tests.rs index 7434f1efe..0a7c1681a 100644 --- a/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/integration_tests.rs +++ b/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/integration_tests.rs @@ -1,4 +1,20 @@ -use crate::symbiotic_message_processor::{Command, Payload, MAGIC_BYTES}; +// Copyright (C) Moondance Labs Ltd. +// This file is part of Tanssi. + +// Tanssi is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Tanssi is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Tanssi. If not, see + +use tp_bridge::symbiotic_message_processor::{Message as SymbioticMessage, Command, Payload, MAGIC_BYTES}; use crate::tests::common::ExtBuilder; use crate::{AccountId, EthereumInboundQueue, ExternalValidators, Runtime}; use alloy_sol_types::SolEvent; @@ -78,7 +94,7 @@ fn test_inbound_queue_message_passing() { let payload = Payload { magic_bytes: MAGIC_BYTES, - message: crate::symbiotic_message_processor::Message::V1(Command::::ReceiveValidators { + message: SymbioticMessage::V1(Command::::ReceiveValidators { validators: payload_validators.clone() }), }; diff --git a/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/message_processor_tests.rs b/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/message_processor_tests.rs index b24fbbf71..0f7a8d259 100644 --- a/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/message_processor_tests.rs +++ b/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/message_processor_tests.rs @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Tanssi. If not, see -use crate::symbiotic_message_processor::{ +use tp_bridge::symbiotic_message_processor::{ Command, Message, Payload, SymbioticMessageProcessor, MAGIC_BYTES, }; use crate::tests::common::ExtBuilder; diff --git a/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/mod.rs b/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/mod.rs index 14f8f0186..1397115fa 100644 --- a/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/mod.rs +++ b/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/mod.rs @@ -1,2 +1,18 @@ +// Copyright (C) Moondance Labs Ltd. +// This file is part of Tanssi. + +// Tanssi is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Tanssi is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Tanssi. If not, see + mod integration_tests; mod message_processor_tests; From ec38f23ccf21d7673c639c859df493629b92553d Mon Sep 17 00:00:00 2001 From: Parth Desai Date: Wed, 27 Nov 2024 12:09:19 +0400 Subject: [PATCH 08/10] address review feedback --- Cargo.toml | 1 - .../bridge/src/symbiotic_message_processor.rs | 8 +- solo-chains/runtime/dancelight/Cargo.toml | 4 +- .../inbound_queue_tests/integration_tests.rs | 6 +- .../message_processor_tests.rs | 14 +- .../interfaces/augment-api-consts.ts | 7 +- .../interfaces/augment-api-errors.ts | 26 + .../interfaces/augment-api-events.ts | 16 + .../interfaces/augment-api-query.ts | 18 + .../dancelight/interfaces/augment-api-tx.ts | 19 + .../src/dancelight/interfaces/lookup.ts | 630 +++++++++------- .../src/dancelight/interfaces/registry.ts | 28 + .../src/dancelight/interfaces/types-lookup.ts | 683 +++++++++++------- 13 files changed, 948 insertions(+), 512 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 674aa123d..b36c2ea95 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -259,7 +259,6 @@ xcm-runtime-apis = { git = "https://github.com/moondance-labs/polkadot-sdk", bra # Bridges (wasm) -alloy-primitives = { version = "0.4.2", default-features = false } alloy-sol-types = { version = "0.4.2", default-features = false } milagro-bls = { package = "snowbridge-milagro-bls", version = "1.5.4", default-features = false } snowbridge-beacon-primitives = { git = "https://github.com/moondance-labs/polkadot-sdk", branch = "tanssi-polkadot-stable2409", default-features = false } diff --git a/primitives/bridge/src/symbiotic_message_processor.rs b/primitives/bridge/src/symbiotic_message_processor.rs index 8b48793d8..635e7e2f6 100644 --- a/primitives/bridge/src/symbiotic_message_processor.rs +++ b/primitives/bridge/src/symbiotic_message_processor.rs @@ -43,11 +43,11 @@ pub enum Message where T: pallet_external_validators::Config, { - V1(Command), + V1(InboundCommand), } #[derive(Encode, Decode)] -pub enum Command +pub enum InboundCommand where T: pallet_external_validators::Config, { @@ -76,11 +76,11 @@ where let message = if let Ok(payload) = decode_result { payload.message } else { - return Err(DispatchError::Other("unable to parse the payload")); + return Err(DispatchError::Other("unable to parse the envelope payload")); }; match message { - Message::V1(Command::ReceiveValidators { validators }) => { + Message::V1(InboundCommand::ReceiveValidators { validators }) => { pallet_external_validators::Pallet::::set_external_validators(validators)?; Ok(()) } diff --git a/solo-chains/runtime/dancelight/Cargo.toml b/solo-chains/runtime/dancelight/Cargo.toml index 0cd57a1af..01dd9bf7e 100644 --- a/solo-chains/runtime/dancelight/Cargo.toml +++ b/solo-chains/runtime/dancelight/Cargo.toml @@ -271,6 +271,7 @@ std = [ "snowbridge-core/std", "snowbridge-pallet-ethereum-client/fuzzing", "snowbridge-pallet-ethereum-client/std", + "snowbridge-pallet-inbound-queue-fixtures/std", "snowbridge-pallet-inbound-queue/std", "snowbridge-pallet-outbound-queue/std", "snowbridge-pallet-system/std", @@ -366,8 +367,9 @@ runtime-benchmarks = [ "runtime-parachains/runtime-benchmarks", "snowbridge-core/runtime-benchmarks", "snowbridge-pallet-ethereum-client/runtime-benchmarks", - "snowbridge-pallet-inbound-queue/runtime-benchmarks", "snowbridge-pallet-inbound-queue-fixtures", + "snowbridge-pallet-inbound-queue-fixtures/runtime-benchmarks", + "snowbridge-pallet-inbound-queue/runtime-benchmarks", "snowbridge-pallet-outbound-queue/runtime-benchmarks", "snowbridge-pallet-system/runtime-benchmarks", "snowbridge-router-primitives/runtime-benchmarks", diff --git a/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/integration_tests.rs b/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/integration_tests.rs index 0a7c1681a..a4da93526 100644 --- a/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/integration_tests.rs +++ b/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/integration_tests.rs @@ -14,7 +14,6 @@ // You should have received a copy of the GNU General Public License // along with Tanssi. If not, see -use tp_bridge::symbiotic_message_processor::{Message as SymbioticMessage, Command, Payload, MAGIC_BYTES}; use crate::tests::common::ExtBuilder; use crate::{AccountId, EthereumInboundQueue, ExternalValidators, Runtime}; use alloy_sol_types::SolEvent; @@ -30,6 +29,9 @@ use snowbridge_core::{ use snowbridge_router_primitives::inbound::envelope::OutboundMessageAccepted; use sp_core::H256; use sp_runtime::DispatchError; +use tp_bridge::symbiotic_message_processor::{ + InboundCommand, Message as SymbioticMessage, Payload, MAGIC_BYTES, +}; const MOCK_CHANNEL_ID: [u8; 32] = [0; 32]; @@ -94,7 +96,7 @@ fn test_inbound_queue_message_passing() { let payload = Payload { magic_bytes: MAGIC_BYTES, - message: SymbioticMessage::V1(Command::::ReceiveValidators { + message: SymbioticMessage::V1(InboundCommand::::ReceiveValidators { validators: payload_validators.clone() }), }; diff --git a/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/message_processor_tests.rs b/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/message_processor_tests.rs index 0f7a8d259..3a3e59c1d 100644 --- a/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/message_processor_tests.rs +++ b/solo-chains/runtime/dancelight/src/tests/inbound_queue_tests/message_processor_tests.rs @@ -14,9 +14,6 @@ // You should have received a copy of the GNU General Public License // along with Tanssi. If not, see -use tp_bridge::symbiotic_message_processor::{ - Command, Message, Payload, SymbioticMessageProcessor, MAGIC_BYTES, -}; use crate::tests::common::ExtBuilder; use crate::{ExternalValidators, Runtime}; use frame_support::pallet_prelude::*; @@ -26,6 +23,9 @@ use snowbridge_router_primitives::inbound::envelope::Envelope; use snowbridge_router_primitives::inbound::MessageProcessor; use sp_core::{H160, H256}; use sp_runtime::DispatchError; +use tp_bridge::symbiotic_message_processor::{ + InboundCommand, Message, Payload, SymbioticMessageProcessor, MAGIC_BYTES, +}; #[test] fn test_symbiotic_message_processor() { @@ -55,12 +55,14 @@ fn test_symbiotic_message_processor() { default_channel.clone(), envelope_with_invalid_payload ), - Err(DispatchError::Other("unable to parse the payload")) + Err(DispatchError::Other("unable to parse the envelope payload")) ); let payload_with_incorrect_magic_bytes = Payload { magic_bytes: [1, 2, 3, 4], - message: Message::V1(Command::::ReceiveValidators { validators: vec![] }), + message: Message::V1(InboundCommand::::ReceiveValidators { + validators: vec![], + }), }; let envelope = Envelope { channel_id: H256::default().into(), @@ -88,7 +90,7 @@ fn test_symbiotic_message_processor() { let payload_with_correct_magic_bytes = Payload { magic_bytes: MAGIC_BYTES, - message: Message::V1(Command::::ReceiveValidators { + message: Message::V1(InboundCommand::::ReceiveValidators { validators: payload_validators.clone(), }), }; diff --git a/typescript-api/src/dancelight/interfaces/augment-api-consts.ts b/typescript-api/src/dancelight/interfaces/augment-api-consts.ts index 0804e5587..ee8966278 100644 --- a/typescript-api/src/dancelight/interfaces/augment-api-consts.ts +++ b/typescript-api/src/dancelight/interfaces/augment-api-consts.ts @@ -8,7 +8,7 @@ import "@polkadot/api-base/types/consts"; import type { ApiTypes, AugmentedConst } from "@polkadot/api-base/types"; import type { Option, Vec, u128, u16, u32, u64, u8 } from "@polkadot/types-codec"; import type { Codec, ITuple } from "@polkadot/types-codec/types"; -import type { AccountId32, Perbill, Permill } from "@polkadot/types/interfaces/runtime"; +import type { AccountId32, H160, Perbill, Permill } from "@polkadot/types/interfaces/runtime"; import type { FrameSupportPalletId, FrameSystemLimitsBlockLength, @@ -135,6 +135,11 @@ declare module "@polkadot/api-base/types/consts" { /** Generic const */ [key: string]: Codec; }; + ethereumInboundQueue: { + gatewayAddress: H160 & AugmentedConst; + /** Generic const */ + [key: string]: Codec; + }; ethereumOutboundQueue: { /** Number of decimal places in native currency */ decimals: u8 & AugmentedConst; diff --git a/typescript-api/src/dancelight/interfaces/augment-api-errors.ts b/typescript-api/src/dancelight/interfaces/augment-api-errors.ts index edd980512..a15a81103 100644 --- a/typescript-api/src/dancelight/interfaces/augment-api-errors.ts +++ b/typescript-api/src/dancelight/interfaces/augment-api-errors.ts @@ -229,6 +229,32 @@ declare module "@polkadot/api-base/types/errors" { /** Generic error */ [key: string]: AugmentedError; }; + ethereumInboundQueue: { + /** Message conversion error */ + ConvertMessage: AugmentedError; + /** Pallet is halted */ + Halted: AugmentedError; + /** Cannot convert location */ + InvalidAccountConversion: AugmentedError; + /** Message channel is invalid */ + InvalidChannel: AugmentedError; + /** Message has an invalid envelope. */ + InvalidEnvelope: AugmentedError; + /** Message came from an invalid outbound channel on the Ethereum side. */ + InvalidGateway: AugmentedError; + /** Message has an unexpected nonce. */ + InvalidNonce: AugmentedError; + /** Message has an invalid payload. */ + InvalidPayload: AugmentedError; + /** The max nonce for the type has been reached */ + MaxNonceReached: AugmentedError; + /** XCMP send failure */ + Send: AugmentedError; + /** Message verification error, */ + Verification: AugmentedError; + /** Generic error */ + [key: string]: AugmentedError; + }; ethereumOutboundQueue: { /** The pallet is halted */ Halted: AugmentedError; diff --git a/typescript-api/src/dancelight/interfaces/augment-api-events.ts b/typescript-api/src/dancelight/interfaces/augment-api-events.ts index d410e8343..4baa55272 100644 --- a/typescript-api/src/dancelight/interfaces/augment-api-events.ts +++ b/typescript-api/src/dancelight/interfaces/augment-api-events.ts @@ -242,6 +242,22 @@ declare module "@polkadot/api-base/types/events" { /** Generic event */ [key: string]: AugmentedEvent; }; + ethereumInboundQueue: { + /** A message was received from Ethereum */ + MessageReceived: AugmentedEvent< + ApiType, + [channelId: SnowbridgeCoreChannelId, nonce: u64, messageId: U8aFixed, feeBurned: u128], + { channelId: SnowbridgeCoreChannelId; nonce: u64; messageId: U8aFixed; feeBurned: u128 } + >; + /** Set OperatingMode */ + OperatingModeChanged: AugmentedEvent< + ApiType, + [mode: SnowbridgeCoreOperatingModeBasicOperatingMode], + { mode: SnowbridgeCoreOperatingModeBasicOperatingMode } + >; + /** Generic event */ + [key: string]: AugmentedEvent; + }; ethereumOutboundQueue: { /** * Message will be committed at the end of current block. From now on, to track the progress the message, use the diff --git a/typescript-api/src/dancelight/interfaces/augment-api-query.ts b/typescript-api/src/dancelight/interfaces/augment-api-query.ts index a3c4176c3..5cd107e2c 100644 --- a/typescript-api/src/dancelight/interfaces/augment-api-query.ts +++ b/typescript-api/src/dancelight/interfaces/augment-api-query.ts @@ -685,6 +685,24 @@ declare module "@polkadot/api-base/types/storage" { /** Generic query */ [key: string]: QueryableStorageEntry; }; + ethereumInboundQueue: { + /** The current nonce for each channel */ + nonce: AugmentedQuery< + ApiType, + (arg: SnowbridgeCoreChannelId | string | Uint8Array) => Observable, + [SnowbridgeCoreChannelId] + > & + QueryableStorageEntry; + /** The current operating mode of the pallet. */ + operatingMode: AugmentedQuery< + ApiType, + () => Observable, + [] + > & + QueryableStorageEntry; + /** Generic query */ + [key: string]: QueryableStorageEntry; + }; ethereumOutboundQueue: { /** * Hashes of the ABI-encoded messages in the [`Messages`] storage value. Used to generate a merkle root during diff --git a/typescript-api/src/dancelight/interfaces/augment-api-tx.ts b/typescript-api/src/dancelight/interfaces/augment-api-tx.ts index 3e979e178..60a6b0622 100644 --- a/typescript-api/src/dancelight/interfaces/augment-api-tx.ts +++ b/typescript-api/src/dancelight/interfaces/augment-api-tx.ts @@ -64,6 +64,7 @@ import type { SnowbridgeBeaconPrimitivesUpdatesUpdate, SnowbridgeCoreAssetMetadata, SnowbridgeCoreChannelId, + SnowbridgeCoreInboundMessage, SnowbridgeCoreOperatingModeBasicOperatingMode, SnowbridgeCoreOutboundV1Initializer, SnowbridgeCoreOutboundV1OperatingMode, @@ -1294,6 +1295,24 @@ declare module "@polkadot/api-base/types/submittable" { /** Generic tx */ [key: string]: SubmittableExtrinsicFunction; }; + ethereumInboundQueue: { + /** Halt or resume all pallet operations. May only be called by root. */ + setOperatingMode: AugmentedSubmittable< + ( + mode: SnowbridgeCoreOperatingModeBasicOperatingMode | "Normal" | "Halted" | number | Uint8Array + ) => SubmittableExtrinsic, + [SnowbridgeCoreOperatingModeBasicOperatingMode] + >; + /** Submit an inbound message originating from the Gateway contract on Ethereum */ + submit: AugmentedSubmittable< + ( + message: SnowbridgeCoreInboundMessage | { eventLog?: any; proof?: any } | string | Uint8Array + ) => SubmittableExtrinsic, + [SnowbridgeCoreInboundMessage] + >; + /** Generic tx */ + [key: string]: SubmittableExtrinsicFunction; + }; ethereumOutboundQueue: { /** Halt or resume all pallet operations. May only be called by root. */ setOperatingMode: AugmentedSubmittable< diff --git a/typescript-api/src/dancelight/interfaces/lookup.ts b/typescript-api/src/dancelight/interfaces/lookup.ts index db8ad708b..595045a22 100644 --- a/typescript-api/src/dancelight/interfaces/lookup.ts +++ b/typescript-api/src/dancelight/interfaces/lookup.ts @@ -3747,19 +3747,111 @@ export default { V4: "StagingXcmV4AssetAssetId", }, }, - /** Lookup396: snowbridge_pallet_outbound_queue::pallet::Call */ - SnowbridgePalletOutboundQueueCall: { + /** Lookup396: snowbridge_pallet_inbound_queue::pallet::Call */ + SnowbridgePalletInboundQueueCall: { _enum: { + submit: { + message: "SnowbridgeCoreInboundMessage", + }, set_operating_mode: { mode: "SnowbridgeCoreOperatingModeBasicOperatingMode", }, }, }, - /** Lookup397: snowbridge_core::operating_mode::BasicOperatingMode */ + /** Lookup397: snowbridge_core::inbound::Message */ + SnowbridgeCoreInboundMessage: { + eventLog: "SnowbridgeCoreInboundLog", + proof: "SnowbridgeCoreInboundProof", + }, + /** Lookup398: snowbridge_core::inbound::Log */ + SnowbridgeCoreInboundLog: { + address: "H160", + topics: "Vec", + data: "Bytes", + }, + /** Lookup400: snowbridge_core::inbound::Proof */ + SnowbridgeCoreInboundProof: { + receiptProof: "(Vec,Vec)", + executionProof: "SnowbridgeBeaconPrimitivesExecutionProof", + }, + /** Lookup402: snowbridge_beacon_primitives::types::ExecutionProof */ + SnowbridgeBeaconPrimitivesExecutionProof: { + header: "SnowbridgeBeaconPrimitivesBeaconHeader", + ancestryProof: "Option", + executionHeader: "SnowbridgeBeaconPrimitivesVersionedExecutionPayloadHeader", + executionBranch: "Vec", + }, + /** Lookup403: snowbridge_beacon_primitives::types::BeaconHeader */ + SnowbridgeBeaconPrimitivesBeaconHeader: { + slot: "u64", + proposerIndex: "u64", + parentRoot: "H256", + stateRoot: "H256", + bodyRoot: "H256", + }, + /** Lookup405: snowbridge_beacon_primitives::types::AncestryProof */ + SnowbridgeBeaconPrimitivesAncestryProof: { + headerBranch: "Vec", + finalizedBlockRoot: "H256", + }, + /** Lookup406: snowbridge_beacon_primitives::types::VersionedExecutionPayloadHeader */ + SnowbridgeBeaconPrimitivesVersionedExecutionPayloadHeader: { + _enum: { + Capella: "SnowbridgeBeaconPrimitivesExecutionPayloadHeader", + Deneb: "SnowbridgeBeaconPrimitivesDenebExecutionPayloadHeader", + }, + }, + /** Lookup407: snowbridge_beacon_primitives::types::ExecutionPayloadHeader */ + SnowbridgeBeaconPrimitivesExecutionPayloadHeader: { + parentHash: "H256", + feeRecipient: "H160", + stateRoot: "H256", + receiptsRoot: "H256", + logsBloom: "Bytes", + prevRandao: "H256", + blockNumber: "u64", + gasLimit: "u64", + gasUsed: "u64", + timestamp: "u64", + extraData: "Bytes", + baseFeePerGas: "U256", + blockHash: "H256", + transactionsRoot: "H256", + withdrawalsRoot: "H256", + }, + /** Lookup410: snowbridge_beacon_primitives::types::deneb::ExecutionPayloadHeader */ + SnowbridgeBeaconPrimitivesDenebExecutionPayloadHeader: { + parentHash: "H256", + feeRecipient: "H160", + stateRoot: "H256", + receiptsRoot: "H256", + logsBloom: "Bytes", + prevRandao: "H256", + blockNumber: "u64", + gasLimit: "u64", + gasUsed: "u64", + timestamp: "u64", + extraData: "Bytes", + baseFeePerGas: "U256", + blockHash: "H256", + transactionsRoot: "H256", + withdrawalsRoot: "H256", + blobGasUsed: "u64", + excessBlobGas: "u64", + }, + /** Lookup411: snowbridge_core::operating_mode::BasicOperatingMode */ SnowbridgeCoreOperatingModeBasicOperatingMode: { _enum: ["Normal", "Halted"], }, - /** Lookup398: snowbridge_pallet_system::pallet::Call */ + /** Lookup412: snowbridge_pallet_outbound_queue::pallet::Call */ + SnowbridgePalletOutboundQueueCall: { + _enum: { + set_operating_mode: { + mode: "SnowbridgeCoreOperatingModeBasicOperatingMode", + }, + }, + }, + /** Lookup413: snowbridge_pallet_system::pallet::Call */ SnowbridgePalletSystemCall: { _enum: { upgrade: { @@ -3804,34 +3896,34 @@ export default { }, }, }, - /** Lookup401: snowbridge_core::outbound::v1::Initializer */ + /** Lookup415: snowbridge_core::outbound::v1::Initializer */ SnowbridgeCoreOutboundV1Initializer: { params: "Bytes", maximumRequiredGas: "u64", }, - /** Lookup402: snowbridge_core::outbound::v1::OperatingMode */ + /** Lookup416: snowbridge_core::outbound::v1::OperatingMode */ SnowbridgeCoreOutboundV1OperatingMode: { _enum: ["Normal", "RejectingOutboundMessages"], }, - /** Lookup403: snowbridge_core::pricing::PricingParameters */ + /** Lookup417: snowbridge_core::pricing::PricingParameters */ SnowbridgeCorePricingPricingParameters: { exchangeRate: "u128", rewards: "SnowbridgeCorePricingRewards", feePerGas: "U256", multiplier: "u128", }, - /** Lookup404: snowbridge_core::pricing::Rewards */ + /** Lookup418: snowbridge_core::pricing::Rewards */ SnowbridgeCorePricingRewards: { local: "u128", remote: "U256", }, - /** Lookup407: snowbridge_core::AssetMetadata */ + /** Lookup419: snowbridge_core::AssetMetadata */ SnowbridgeCoreAssetMetadata: { name: "Bytes", symbol: "Bytes", decimals: "u8", }, - /** Lookup408: pallet_migrations::pallet::Call */ + /** Lookup420: pallet_migrations::pallet::Call */ PalletMigrationsCall: { _enum: { force_set_cursor: { @@ -3848,20 +3940,20 @@ export default { }, }, }, - /** Lookup410: pallet_migrations::MigrationCursor, BlockNumber> */ + /** Lookup422: pallet_migrations::MigrationCursor, BlockNumber> */ PalletMigrationsMigrationCursor: { _enum: { Active: "PalletMigrationsActiveCursor", Stuck: "Null", }, }, - /** Lookup412: pallet_migrations::ActiveCursor, BlockNumber> */ + /** Lookup424: pallet_migrations::ActiveCursor, BlockNumber> */ PalletMigrationsActiveCursor: { index: "u32", innerCursor: "Option", startedAt: "u32", }, - /** Lookup414: pallet_migrations::HistoricCleanupSelector> */ + /** Lookup426: pallet_migrations::HistoricCleanupSelector> */ PalletMigrationsHistoricCleanupSelector: { _enum: { Specific: "Vec", @@ -3871,7 +3963,7 @@ export default { }, }, }, - /** Lookup417: pallet_beefy::pallet::Call */ + /** Lookup429: pallet_beefy::pallet::Call */ PalletBeefyCall: { _enum: { report_double_voting: { @@ -3904,17 +3996,17 @@ export default { }, }, /** - * Lookup418: sp_consensus_beefy::DoubleVotingProof */ SpConsensusBeefyDoubleVotingProof: { first: "SpConsensusBeefyVoteMessage", second: "SpConsensusBeefyVoteMessage", }, - /** Lookup419: sp_consensus_beefy::ecdsa_crypto::Signature */ + /** Lookup431: sp_consensus_beefy::ecdsa_crypto::Signature */ SpConsensusBeefyEcdsaCryptoSignature: "[u8;65]", /** - * Lookup420: sp_consensus_beefy::VoteMessage */ SpConsensusBeefyVoteMessage: { @@ -3922,16 +4014,16 @@ export default { id: "SpConsensusBeefyEcdsaCryptoPublic", signature: "SpConsensusBeefyEcdsaCryptoSignature", }, - /** Lookup421: sp_consensus_beefy::commitment::Commitment */ + /** Lookup433: sp_consensus_beefy::commitment::Commitment */ SpConsensusBeefyCommitment: { payload: "SpConsensusBeefyPayload", blockNumber: "u32", validatorSetId: "u64", }, - /** Lookup422: sp_consensus_beefy::payload::Payload */ + /** Lookup434: sp_consensus_beefy::payload::Payload */ SpConsensusBeefyPayload: "Vec<([u8;2],Bytes)>", /** - * Lookup425: sp_consensus_beefy::ForkVotingProof, + * Lookup437: sp_consensus_beefy::ForkVotingProof, * sp_consensus_beefy::ecdsa_crypto::Public, sp_mmr_primitives::AncestryProof> */ SpConsensusBeefyForkVotingProof: { @@ -3939,18 +4031,18 @@ export default { ancestryProof: "SpMmrPrimitivesAncestryProof", header: "SpRuntimeHeader", }, - /** Lookup426: sp_mmr_primitives::AncestryProof */ + /** Lookup438: sp_mmr_primitives::AncestryProof */ SpMmrPrimitivesAncestryProof: { prevPeaks: "Vec", prevLeafCount: "u64", leafCount: "u64", items: "Vec<(u64,H256)>", }, - /** Lookup429: sp_consensus_beefy::FutureBlockVotingProof */ + /** Lookup441: sp_consensus_beefy::FutureBlockVotingProof */ SpConsensusBeefyFutureBlockVotingProof: { vote: "SpConsensusBeefyVoteMessage", }, - /** Lookup430: snowbridge_pallet_ethereum_client::pallet::Call */ + /** Lookup442: snowbridge_pallet_ethereum_client::pallet::Call */ SnowbridgePalletEthereumClientCall: { _enum: { force_checkpoint: { @@ -3965,7 +4057,7 @@ export default { }, }, }, - /** Lookup431: snowbridge_beacon_primitives::updates::CheckpointUpdate */ + /** Lookup443: snowbridge_beacon_primitives::updates::CheckpointUpdate */ SnowbridgeBeaconPrimitivesUpdatesCheckpointUpdate: { header: "SnowbridgeBeaconPrimitivesBeaconHeader", currentSyncCommittee: "SnowbridgeBeaconPrimitivesSyncCommittee", @@ -3974,22 +4066,14 @@ export default { blockRootsRoot: "H256", blockRootsBranch: "Vec", }, - /** Lookup432: snowbridge_beacon_primitives::types::BeaconHeader */ - SnowbridgeBeaconPrimitivesBeaconHeader: { - slot: "u64", - proposerIndex: "u64", - parentRoot: "H256", - stateRoot: "H256", - bodyRoot: "H256", - }, - /** Lookup433: snowbridge_beacon_primitives::types::SyncCommittee */ + /** Lookup444: snowbridge_beacon_primitives::types::SyncCommittee */ SnowbridgeBeaconPrimitivesSyncCommittee: { pubkeys: "[[u8;48];512]", aggregatePubkey: "SnowbridgeBeaconPrimitivesPublicKey", }, - /** Lookup435: snowbridge_beacon_primitives::types::PublicKey */ + /** Lookup446: snowbridge_beacon_primitives::types::PublicKey */ SnowbridgeBeaconPrimitivesPublicKey: "[u8;48]", - /** Lookup437: snowbridge_beacon_primitives::updates::Update */ + /** Lookup448: snowbridge_beacon_primitives::updates::Update */ SnowbridgeBeaconPrimitivesUpdatesUpdate: { attestedHeader: "SnowbridgeBeaconPrimitivesBeaconHeader", syncAggregate: "SnowbridgeBeaconPrimitivesSyncAggregate", @@ -4000,19 +4084,19 @@ export default { blockRootsRoot: "H256", blockRootsBranch: "Vec", }, - /** Lookup438: snowbridge_beacon_primitives::types::SyncAggregate */ + /** Lookup449: snowbridge_beacon_primitives::types::SyncAggregate */ SnowbridgeBeaconPrimitivesSyncAggregate: { syncCommitteeBits: "[u8;64]", syncCommitteeSignature: "SnowbridgeBeaconPrimitivesSignature", }, - /** Lookup439: snowbridge_beacon_primitives::types::Signature */ + /** Lookup450: snowbridge_beacon_primitives::types::Signature */ SnowbridgeBeaconPrimitivesSignature: "[u8;96]", - /** Lookup442: snowbridge_beacon_primitives::updates::NextSyncCommitteeUpdate */ + /** Lookup453: snowbridge_beacon_primitives::updates::NextSyncCommitteeUpdate */ SnowbridgeBeaconPrimitivesUpdatesNextSyncCommitteeUpdate: { nextSyncCommittee: "SnowbridgeBeaconPrimitivesSyncCommittee", nextSyncCommitteeBranch: "Vec", }, - /** Lookup443: polkadot_runtime_common::paras_sudo_wrapper::pallet::Call */ + /** Lookup454: polkadot_runtime_common::paras_sudo_wrapper::pallet::Call */ PolkadotRuntimeCommonParasSudoWrapperPalletCall: { _enum: { sudo_schedule_para_initialize: { @@ -4040,13 +4124,13 @@ export default { }, }, }, - /** Lookup444: polkadot_runtime_parachains::paras::ParaGenesisArgs */ + /** Lookup455: polkadot_runtime_parachains::paras::ParaGenesisArgs */ PolkadotRuntimeParachainsParasParaGenesisArgs: { genesisHead: "Bytes", validationCode: "Bytes", paraKind: "bool", }, - /** Lookup445: pallet_root_testing::pallet::Call */ + /** Lookup456: pallet_root_testing::pallet::Call */ PalletRootTestingCall: { _enum: { fill_block: { @@ -4055,7 +4139,7 @@ export default { trigger_defensive: "Null", }, }, - /** Lookup446: pallet_sudo::pallet::Call */ + /** Lookup457: pallet_sudo::pallet::Call */ PalletSudoCall: { _enum: { sudo: { @@ -4078,15 +4162,15 @@ export default { remove_key: "Null", }, }, - /** Lookup447: sp_runtime::traits::BlakeTwo256 */ + /** Lookup458: sp_runtime::traits::BlakeTwo256 */ SpRuntimeBlakeTwo256: "Null", - /** Lookup449: pallet_conviction_voting::types::Tally */ + /** Lookup460: pallet_conviction_voting::types::Tally */ PalletConvictionVotingTally: { ayes: "u128", nays: "u128", support: "u128", }, - /** Lookup450: pallet_ranked_collective::pallet::Event */ + /** Lookup461: pallet_ranked_collective::pallet::Event */ PalletRankedCollectiveEvent: { _enum: { MemberAdded: { @@ -4112,20 +4196,20 @@ export default { }, }, }, - /** Lookup451: pallet_ranked_collective::VoteRecord */ + /** Lookup462: pallet_ranked_collective::VoteRecord */ PalletRankedCollectiveVoteRecord: { _enum: { Aye: "u32", Nay: "u32", }, }, - /** Lookup452: pallet_ranked_collective::Tally */ + /** Lookup463: pallet_ranked_collective::Tally */ PalletRankedCollectiveTally: { bareAyes: "u32", ayes: "u32", nays: "u32", }, - /** Lookup454: pallet_whitelist::pallet::Event */ + /** Lookup465: pallet_whitelist::pallet::Event */ PalletWhitelistEvent: { _enum: { CallWhitelisted: { @@ -4140,17 +4224,17 @@ export default { }, }, }, - /** Lookup456: frame_support::dispatch::PostDispatchInfo */ + /** Lookup467: frame_support::dispatch::PostDispatchInfo */ FrameSupportDispatchPostDispatchInfo: { actualWeight: "Option", paysFee: "FrameSupportDispatchPays", }, - /** Lookup458: sp_runtime::DispatchErrorWithPostInfo */ + /** Lookup469: sp_runtime::DispatchErrorWithPostInfo */ SpRuntimeDispatchErrorWithPostInfo: { postInfo: "FrameSupportDispatchPostDispatchInfo", error: "SpRuntimeDispatchError", }, - /** Lookup459: polkadot_runtime_parachains::inclusion::pallet::Event */ + /** Lookup470: polkadot_runtime_parachains::inclusion::pallet::Event */ PolkadotRuntimeParachainsInclusionPalletEvent: { _enum: { CandidateBacked: "(PolkadotPrimitivesV8CandidateReceipt,Bytes,u32,u32)", @@ -4162,12 +4246,12 @@ export default { }, }, }, - /** Lookup460: polkadot_primitives::v8::CandidateReceipt */ + /** Lookup471: polkadot_primitives::v8::CandidateReceipt */ PolkadotPrimitivesV8CandidateReceipt: { descriptor: "PolkadotPrimitivesV8CandidateDescriptor", commitmentsHash: "H256", }, - /** Lookup463: polkadot_runtime_parachains::paras::pallet::Event */ + /** Lookup474: polkadot_runtime_parachains::paras::pallet::Event */ PolkadotRuntimeParachainsParasPalletEvent: { _enum: { CurrentCodeUpdated: "u32", @@ -4180,7 +4264,7 @@ export default { PvfCheckRejected: "(H256,u32)", }, }, - /** Lookup464: polkadot_runtime_parachains::hrmp::pallet::Event */ + /** Lookup475: polkadot_runtime_parachains::hrmp::pallet::Event */ PolkadotRuntimeParachainsHrmpPalletEvent: { _enum: { OpenChannelRequested: { @@ -4219,7 +4303,7 @@ export default { }, }, }, - /** Lookup465: polkadot_runtime_parachains::disputes::pallet::Event */ + /** Lookup476: polkadot_runtime_parachains::disputes::pallet::Event */ PolkadotRuntimeParachainsDisputesPalletEvent: { _enum: { DisputeInitiated: "(H256,PolkadotRuntimeParachainsDisputesDisputeLocation)", @@ -4227,15 +4311,15 @@ export default { Revert: "u32", }, }, - /** Lookup466: polkadot_runtime_parachains::disputes::DisputeLocation */ + /** Lookup477: polkadot_runtime_parachains::disputes::DisputeLocation */ PolkadotRuntimeParachainsDisputesDisputeLocation: { _enum: ["Local", "Remote"], }, - /** Lookup467: polkadot_runtime_parachains::disputes::DisputeResult */ + /** Lookup478: polkadot_runtime_parachains::disputes::DisputeResult */ PolkadotRuntimeParachainsDisputesDisputeResult: { _enum: ["Valid", "Invalid"], }, - /** Lookup468: pallet_message_queue::pallet::Event */ + /** Lookup479: pallet_message_queue::pallet::Event */ PalletMessageQueueEvent: { _enum: { ProcessingFailed: { @@ -4261,7 +4345,7 @@ export default { }, }, }, - /** Lookup469: frame_support::traits::messages::ProcessMessageError */ + /** Lookup480: frame_support::traits::messages::ProcessMessageError */ FrameSupportMessagesProcessMessageError: { _enum: { BadFormat: "Null", @@ -4272,7 +4356,7 @@ export default { StackLimitReached: "Null", }, }, - /** Lookup470: polkadot_runtime_parachains::on_demand::pallet::Event */ + /** Lookup481: polkadot_runtime_parachains::on_demand::pallet::Event */ PolkadotRuntimeParachainsOnDemandPalletEvent: { _enum: { OnDemandOrderPlaced: { @@ -4285,7 +4369,7 @@ export default { }, }, }, - /** Lookup471: polkadot_runtime_common::paras_registrar::pallet::Event */ + /** Lookup482: polkadot_runtime_common::paras_registrar::pallet::Event */ PolkadotRuntimeCommonParasRegistrarPalletEvent: { _enum: { Registered: { @@ -4305,7 +4389,7 @@ export default { }, }, }, - /** Lookup472: pallet_utility::pallet::Event */ + /** Lookup483: pallet_utility::pallet::Event */ PalletUtilityEvent: { _enum: { BatchInterrupted: { @@ -4323,7 +4407,7 @@ export default { }, }, }, - /** Lookup474: pallet_identity::pallet::Event */ + /** Lookup485: pallet_identity::pallet::Event */ PalletIdentityEvent: { _enum: { IdentitySet: { @@ -4395,7 +4479,7 @@ export default { }, }, }, - /** Lookup475: pallet_scheduler::pallet::Event */ + /** Lookup486: pallet_scheduler::pallet::Event */ PalletSchedulerEvent: { _enum: { Scheduled: { @@ -4439,7 +4523,7 @@ export default { }, }, }, - /** Lookup477: pallet_proxy::pallet::Event */ + /** Lookup488: pallet_proxy::pallet::Event */ PalletProxyEvent: { _enum: { ProxyExecuted: { @@ -4470,7 +4554,7 @@ export default { }, }, }, - /** Lookup478: pallet_multisig::pallet::Event */ + /** Lookup489: pallet_multisig::pallet::Event */ PalletMultisigEvent: { _enum: { NewMultisig: { @@ -4499,7 +4583,7 @@ export default { }, }, }, - /** Lookup479: pallet_preimage::pallet::Event */ + /** Lookup490: pallet_preimage::pallet::Event */ PalletPreimageEvent: { _enum: { Noted: { @@ -4522,7 +4606,7 @@ export default { }, }, }, - /** Lookup480: pallet_asset_rate::pallet::Event */ + /** Lookup491: pallet_asset_rate::pallet::Event */ PalletAssetRateEvent: { _enum: { AssetRateCreated: { @@ -4542,7 +4626,7 @@ export default { }, }, }, - /** Lookup481: pallet_xcm::pallet::Event */ + /** Lookup492: pallet_xcm::pallet::Event */ PalletXcmEvent: { _enum: { Attempted: { @@ -4665,7 +4749,7 @@ export default { }, }, }, - /** Lookup482: staging_xcm::v4::traits::Outcome */ + /** Lookup493: staging_xcm::v4::traits::Outcome */ StagingXcmV4TraitsOutcome: { _enum: { Complete: { @@ -4680,7 +4764,21 @@ export default { }, }, }, - /** Lookup483: snowbridge_pallet_outbound_queue::pallet::Event */ + /** Lookup494: snowbridge_pallet_inbound_queue::pallet::Event */ + SnowbridgePalletInboundQueueEvent: { + _enum: { + MessageReceived: { + channelId: "SnowbridgeCoreChannelId", + nonce: "u64", + messageId: "[u8;32]", + feeBurned: "u128", + }, + OperatingModeChanged: { + mode: "SnowbridgeCoreOperatingModeBasicOperatingMode", + }, + }, + }, + /** Lookup495: snowbridge_pallet_outbound_queue::pallet::Event */ SnowbridgePalletOutboundQueueEvent: { _enum: { MessageQueued: { @@ -4699,7 +4797,7 @@ export default { }, }, }, - /** Lookup484: snowbridge_pallet_system::pallet::Event */ + /** Lookup496: snowbridge_pallet_system::pallet::Event */ SnowbridgePalletSystemEvent: { _enum: { Upgrade: { @@ -4741,7 +4839,7 @@ export default { }, }, }, - /** Lookup485: pallet_migrations::pallet::Event */ + /** Lookup497: pallet_migrations::pallet::Event */ PalletMigrationsEvent: { _enum: { RuntimeUpgradeStarted: "Null", @@ -4763,7 +4861,7 @@ export default { }, }, }, - /** Lookup487: snowbridge_pallet_ethereum_client::pallet::Event */ + /** Lookup499: snowbridge_pallet_ethereum_client::pallet::Event */ SnowbridgePalletEthereumClientEvent: { _enum: { BeaconHeaderImported: { @@ -4778,11 +4876,11 @@ export default { }, }, }, - /** Lookup488: pallet_root_testing::pallet::Event */ + /** Lookup500: pallet_root_testing::pallet::Event */ PalletRootTestingEvent: { _enum: ["DefensiveTestCall"], }, - /** Lookup489: pallet_sudo::pallet::Event */ + /** Lookup501: pallet_sudo::pallet::Event */ PalletSudoEvent: { _enum: { Sudid: { @@ -4801,7 +4899,7 @@ export default { }, }, }, - /** Lookup490: frame_system::Phase */ + /** Lookup502: frame_system::Phase */ FrameSystemPhase: { _enum: { ApplyExtrinsic: "u32", @@ -4809,51 +4907,51 @@ export default { Initialization: "Null", }, }, - /** Lookup492: frame_system::LastRuntimeUpgradeInfo */ + /** Lookup504: frame_system::LastRuntimeUpgradeInfo */ FrameSystemLastRuntimeUpgradeInfo: { specVersion: "Compact", specName: "Text", }, - /** Lookup494: frame_system::CodeUpgradeAuthorization */ + /** Lookup506: frame_system::CodeUpgradeAuthorization */ FrameSystemCodeUpgradeAuthorization: { codeHash: "H256", checkVersion: "bool", }, - /** Lookup495: frame_system::limits::BlockWeights */ + /** Lookup507: frame_system::limits::BlockWeights */ FrameSystemLimitsBlockWeights: { baseBlock: "SpWeightsWeightV2Weight", maxBlock: "SpWeightsWeightV2Weight", perClass: "FrameSupportDispatchPerDispatchClassWeightsPerClass", }, - /** Lookup496: frame_support::dispatch::PerDispatchClass */ + /** Lookup508: frame_support::dispatch::PerDispatchClass */ FrameSupportDispatchPerDispatchClassWeightsPerClass: { normal: "FrameSystemLimitsWeightsPerClass", operational: "FrameSystemLimitsWeightsPerClass", mandatory: "FrameSystemLimitsWeightsPerClass", }, - /** Lookup497: frame_system::limits::WeightsPerClass */ + /** Lookup509: frame_system::limits::WeightsPerClass */ FrameSystemLimitsWeightsPerClass: { baseExtrinsic: "SpWeightsWeightV2Weight", maxExtrinsic: "Option", maxTotal: "Option", reserved: "Option", }, - /** Lookup498: frame_system::limits::BlockLength */ + /** Lookup510: frame_system::limits::BlockLength */ FrameSystemLimitsBlockLength: { max: "FrameSupportDispatchPerDispatchClassU32", }, - /** Lookup499: frame_support::dispatch::PerDispatchClass */ + /** Lookup511: frame_support::dispatch::PerDispatchClass */ FrameSupportDispatchPerDispatchClassU32: { normal: "u32", operational: "u32", mandatory: "u32", }, - /** Lookup500: sp_weights::RuntimeDbWeight */ + /** Lookup512: sp_weights::RuntimeDbWeight */ SpWeightsRuntimeDbWeight: { read: "u64", write: "u64", }, - /** Lookup501: sp_version::RuntimeVersion */ + /** Lookup513: sp_version::RuntimeVersion */ SpVersionRuntimeVersion: { specName: "Text", implName: "Text", @@ -4864,7 +4962,7 @@ export default { transactionVersion: "u32", stateVersion: "u8", }, - /** Lookup505: frame_system::pallet::Error */ + /** Lookup517: frame_system::pallet::Error */ FrameSystemError: { _enum: [ "InvalidSpecName", @@ -4878,7 +4976,7 @@ export default { "Unauthorized", ], }, - /** Lookup512: sp_consensus_babe::digests::PreDigest */ + /** Lookup524: sp_consensus_babe::digests::PreDigest */ SpConsensusBabeDigestsPreDigest: { _enum: { __Unused0: "Null", @@ -4887,34 +4985,34 @@ export default { SecondaryVRF: "SpConsensusBabeDigestsSecondaryVRFPreDigest", }, }, - /** Lookup513: sp_consensus_babe::digests::PrimaryPreDigest */ + /** Lookup525: sp_consensus_babe::digests::PrimaryPreDigest */ SpConsensusBabeDigestsPrimaryPreDigest: { authorityIndex: "u32", slot: "u64", vrfSignature: "SpCoreSr25519VrfVrfSignature", }, - /** Lookup514: sp_core::sr25519::vrf::VrfSignature */ + /** Lookup526: sp_core::sr25519::vrf::VrfSignature */ SpCoreSr25519VrfVrfSignature: { preOutput: "[u8;32]", proof: "[u8;64]", }, - /** Lookup515: sp_consensus_babe::digests::SecondaryPlainPreDigest */ + /** Lookup527: sp_consensus_babe::digests::SecondaryPlainPreDigest */ SpConsensusBabeDigestsSecondaryPlainPreDigest: { authorityIndex: "u32", slot: "u64", }, - /** Lookup516: sp_consensus_babe::digests::SecondaryVRFPreDigest */ + /** Lookup528: sp_consensus_babe::digests::SecondaryVRFPreDigest */ SpConsensusBabeDigestsSecondaryVRFPreDigest: { authorityIndex: "u32", slot: "u64", vrfSignature: "SpCoreSr25519VrfVrfSignature", }, - /** Lookup517: sp_consensus_babe::BabeEpochConfiguration */ + /** Lookup529: sp_consensus_babe::BabeEpochConfiguration */ SpConsensusBabeBabeEpochConfiguration: { c: "(u64,u64)", allowedSlots: "SpConsensusBabeAllowedSlots", }, - /** Lookup521: pallet_babe::pallet::Error */ + /** Lookup533: pallet_babe::pallet::Error */ PalletBabeError: { _enum: [ "InvalidEquivocationProof", @@ -4923,22 +5021,22 @@ export default { "InvalidConfiguration", ], }, - /** Lookup523: pallet_balances::types::BalanceLock */ + /** Lookup535: pallet_balances::types::BalanceLock */ PalletBalancesBalanceLock: { id: "[u8;8]", amount: "u128", reasons: "PalletBalancesReasons", }, - /** Lookup524: pallet_balances::types::Reasons */ + /** Lookup536: pallet_balances::types::Reasons */ PalletBalancesReasons: { _enum: ["Fee", "Misc", "All"], }, - /** Lookup527: pallet_balances::types::ReserveData */ + /** Lookup539: pallet_balances::types::ReserveData */ PalletBalancesReserveData: { id: "[u8;8]", amount: "u128", }, - /** Lookup531: dancelight_runtime::RuntimeHoldReason */ + /** Lookup543: dancelight_runtime::RuntimeHoldReason */ DancelightRuntimeRuntimeHoldReason: { _enum: { __Unused0: "Null", @@ -5029,24 +5127,24 @@ export default { Preimage: "PalletPreimageHoldReason", }, }, - /** Lookup532: pallet_registrar::pallet::HoldReason */ + /** Lookup544: pallet_registrar::pallet::HoldReason */ PalletRegistrarHoldReason: { _enum: ["RegistrarDeposit"], }, - /** Lookup533: pallet_data_preservers::pallet::HoldReason */ + /** Lookup545: pallet_data_preservers::pallet::HoldReason */ PalletDataPreserversHoldReason: { _enum: ["ProfileDeposit"], }, - /** Lookup534: pallet_preimage::pallet::HoldReason */ + /** Lookup546: pallet_preimage::pallet::HoldReason */ PalletPreimageHoldReason: { _enum: ["Preimage"], }, - /** Lookup537: frame_support::traits::tokens::misc::IdAmount */ + /** Lookup549: frame_support::traits::tokens::misc::IdAmount */ FrameSupportTokensMiscIdAmount: { id: "Null", amount: "u128", }, - /** Lookup539: pallet_balances::pallet::Error */ + /** Lookup551: pallet_balances::pallet::Error */ PalletBalancesError: { _enum: [ "VestingBalance", @@ -5063,21 +5161,21 @@ export default { "DeltaZero", ], }, - /** Lookup540: pallet_transaction_payment::Releases */ + /** Lookup552: pallet_transaction_payment::Releases */ PalletTransactionPaymentReleases: { _enum: ["V1Ancient", "V2"], }, - /** Lookup541: sp_staking::offence::OffenceDetails */ + /** Lookup553: sp_staking::offence::OffenceDetails */ SpStakingOffenceOffenceDetails: { offender: "(AccountId32,Null)", reporters: "Vec", }, - /** Lookup553: pallet_registrar::pallet::DepositInfo */ + /** Lookup565: pallet_registrar::pallet::DepositInfo */ PalletRegistrarDepositInfo: { creator: "AccountId32", deposit: "u128", }, - /** Lookup554: pallet_registrar::pallet::Error */ + /** Lookup566: pallet_registrar::pallet::Error */ PalletRegistrarError: { _enum: [ "ParaIdAlreadyRegistered", @@ -5099,7 +5197,7 @@ export default { "WasmCodeNecessary", ], }, - /** Lookup555: pallet_configuration::HostConfiguration */ + /** Lookup567: pallet_configuration::HostConfiguration */ PalletConfigurationHostConfiguration: { maxCollators: "u32", minOrchestratorCollators: "u32", @@ -5111,11 +5209,11 @@ export default { targetContainerChainFullness: "Perbill", maxParachainCoresPercentage: "Option", }, - /** Lookup558: pallet_configuration::pallet::Error */ + /** Lookup570: pallet_configuration::pallet::Error */ PalletConfigurationError: { _enum: ["InvalidNewValue"], }, - /** Lookup560: pallet_invulnerables::pallet::Error */ + /** Lookup572: pallet_invulnerables::pallet::Error */ PalletInvulnerablesError: { _enum: [ "TooManyInvulnerables", @@ -5125,23 +5223,23 @@ export default { "UnableToDeriveCollatorId", ], }, - /** Lookup561: dp_collator_assignment::AssignedCollators */ + /** Lookup573: dp_collator_assignment::AssignedCollators */ DpCollatorAssignmentAssignedCollatorsAccountId32: { orchestratorChain: "Vec", containerChains: "BTreeMap>", }, - /** Lookup566: dp_collator_assignment::AssignedCollators */ + /** Lookup578: dp_collator_assignment::AssignedCollators */ DpCollatorAssignmentAssignedCollatorsPublic: { orchestratorChain: "Vec", containerChains: "BTreeMap>", }, - /** Lookup574: tp_traits::ContainerChainBlockInfo */ + /** Lookup586: tp_traits::ContainerChainBlockInfo */ TpTraitsContainerChainBlockInfo: { blockNumber: "u32", author: "AccountId32", latestSlotNumber: "u64", }, - /** Lookup575: pallet_author_noting::pallet::Error */ + /** Lookup587: pallet_author_noting::pallet::Error */ PalletAuthorNotingError: { _enum: [ "FailedReading", @@ -5153,18 +5251,18 @@ export default { "NonAuraDigest", ], }, - /** Lookup576: pallet_services_payment::pallet::Error */ + /** Lookup588: pallet_services_payment::pallet::Error */ PalletServicesPaymentError: { _enum: ["InsufficientFundsToPurchaseCredits", "InsufficientCredits", "CreditPriceTooExpensive"], }, - /** Lookup577: pallet_data_preservers::types::RegisteredProfile */ + /** Lookup589: pallet_data_preservers::types::RegisteredProfile */ PalletDataPreserversRegisteredProfile: { account: "AccountId32", deposit: "u128", profile: "PalletDataPreserversProfile", assignment: "Option<(u32,DancelightRuntimePreserversAssignmentPaymentWitness)>", }, - /** Lookup583: pallet_data_preservers::pallet::Error */ + /** Lookup595: pallet_data_preservers::pallet::Error */ PalletDataPreserversError: { _enum: [ "NoBootNodes", @@ -5179,12 +5277,12 @@ export default { "CantDeleteAssignedProfile", ], }, - /** Lookup586: tp_traits::ActiveEraInfo */ + /** Lookup598: tp_traits::ActiveEraInfo */ TpTraitsActiveEraInfo: { index: "u32", start: "Option", }, - /** Lookup588: pallet_external_validators::pallet::Error */ + /** Lookup600: pallet_external_validators::pallet::Error */ PalletExternalValidatorsError: { _enum: [ "TooManyWhitelisted", @@ -5194,7 +5292,7 @@ export default { "UnableToDeriveValidatorId", ], }, - /** Lookup591: pallet_external_validator_slashes::Slash */ + /** Lookup603: pallet_external_validator_slashes::Slash */ PalletExternalValidatorSlashesSlash: { validator: "AccountId32", reporters: "Vec", @@ -5202,7 +5300,7 @@ export default { percentage: "Perbill", confirmed: "bool", }, - /** Lookup592: pallet_external_validator_slashes::pallet::Error */ + /** Lookup604: pallet_external_validator_slashes::pallet::Error */ PalletExternalValidatorSlashesError: { _enum: [ "EmptyTargets", @@ -5216,18 +5314,18 @@ export default { "EthereumDeliverFail", ], }, - /** Lookup593: pallet_external_validators_rewards::pallet::EraRewardPoints */ + /** Lookup605: pallet_external_validators_rewards::pallet::EraRewardPoints */ PalletExternalValidatorsRewardsEraRewardPoints: { total: "u32", individual: "BTreeMap", }, - /** Lookup600: sp_core::crypto::KeyTypeId */ + /** Lookup612: sp_core::crypto::KeyTypeId */ SpCoreCryptoKeyTypeId: "[u8;4]", - /** Lookup601: pallet_session::pallet::Error */ + /** Lookup613: pallet_session::pallet::Error */ PalletSessionError: { _enum: ["InvalidProof", "NoAssociatedValidatorId", "DuplicatedKey", "NoKeys", "NoAccount"], }, - /** Lookup602: pallet_grandpa::StoredState */ + /** Lookup614: pallet_grandpa::StoredState */ PalletGrandpaStoredState: { _enum: { Live: "Null", @@ -5242,14 +5340,14 @@ export default { }, }, }, - /** Lookup603: pallet_grandpa::StoredPendingChange */ + /** Lookup615: pallet_grandpa::StoredPendingChange */ PalletGrandpaStoredPendingChange: { scheduledAt: "u32", delay: "u32", nextAuthorities: "Vec<(SpConsensusGrandpaAppPublic,u64)>", forced: "Option", }, - /** Lookup605: pallet_grandpa::pallet::Error */ + /** Lookup617: pallet_grandpa::pallet::Error */ PalletGrandpaError: { _enum: [ "PauseFailed", @@ -5261,12 +5359,12 @@ export default { "DuplicateOffenceReport", ], }, - /** Lookup608: pallet_inflation_rewards::pallet::ChainsToRewardValue */ + /** Lookup620: pallet_inflation_rewards::pallet::ChainsToRewardValue */ PalletInflationRewardsChainsToRewardValue: { paraIds: "Vec", rewardsPerChain: "u128", }, - /** Lookup609: pallet_treasury::Proposal */ + /** Lookup621: pallet_treasury::Proposal */ PalletTreasuryProposal: { proposer: "AccountId32", value: "u128", @@ -5274,7 +5372,7 @@ export default { bond: "u128", }, /** - * Lookup611: pallet_treasury::SpendStatus */ PalletTreasurySpendStatus: { @@ -5285,7 +5383,7 @@ export default { expireAt: "u32", status: "PalletTreasuryPaymentState", }, - /** Lookup612: pallet_treasury::PaymentState */ + /** Lookup624: pallet_treasury::PaymentState */ PalletTreasuryPaymentState: { _enum: { Pending: "Null", @@ -5295,9 +5393,9 @@ export default { Failed: "Null", }, }, - /** Lookup614: frame_support::PalletId */ + /** Lookup626: frame_support::PalletId */ FrameSupportPalletId: "[u8;8]", - /** Lookup615: pallet_treasury::pallet::Error */ + /** Lookup627: pallet_treasury::pallet::Error */ PalletTreasuryError: { _enum: [ "InvalidIndex", @@ -5314,7 +5412,7 @@ export default { ], }, /** - * Lookup617: pallet_conviction_voting::vote::Voting */ PalletConvictionVotingVoteVoting: { @@ -5323,20 +5421,20 @@ export default { Delegating: "PalletConvictionVotingVoteDelegating", }, }, - /** Lookup618: pallet_conviction_voting::vote::Casting */ + /** Lookup630: pallet_conviction_voting::vote::Casting */ PalletConvictionVotingVoteCasting: { votes: "Vec<(u32,PalletConvictionVotingVoteAccountVote)>", delegations: "PalletConvictionVotingDelegations", prior: "PalletConvictionVotingVotePriorLock", }, - /** Lookup622: pallet_conviction_voting::types::Delegations */ + /** Lookup634: pallet_conviction_voting::types::Delegations */ PalletConvictionVotingDelegations: { votes: "u128", capital: "u128", }, - /** Lookup623: pallet_conviction_voting::vote::PriorLock */ + /** Lookup635: pallet_conviction_voting::vote::PriorLock */ PalletConvictionVotingVotePriorLock: "(u32,u128)", - /** Lookup624: pallet_conviction_voting::vote::Delegating */ + /** Lookup636: pallet_conviction_voting::vote::Delegating */ PalletConvictionVotingVoteDelegating: { balance: "u128", target: "AccountId32", @@ -5344,7 +5442,7 @@ export default { delegations: "PalletConvictionVotingDelegations", prior: "PalletConvictionVotingVotePriorLock", }, - /** Lookup628: pallet_conviction_voting::pallet::Error */ + /** Lookup640: pallet_conviction_voting::pallet::Error */ PalletConvictionVotingError: { _enum: [ "NotOngoing", @@ -5362,7 +5460,7 @@ export default { ], }, /** - * Lookup629: pallet_referenda::types::ReferendumInfo, * Balance, pallet_conviction_voting::types::Tally, sp_core::crypto::AccountId32, ScheduleAddress> */ @@ -5377,7 +5475,7 @@ export default { }, }, /** - * Lookup630: pallet_referenda::types::ReferendumStatus, * Balance, pallet_conviction_voting::types::Tally, sp_core::crypto::AccountId32, ScheduleAddress> */ @@ -5394,17 +5492,17 @@ export default { inQueue: "bool", alarm: "Option<(u32,(u32,u32))>", }, - /** Lookup631: pallet_referenda::types::Deposit */ + /** Lookup643: pallet_referenda::types::Deposit */ PalletReferendaDeposit: { who: "AccountId32", amount: "u128", }, - /** Lookup634: pallet_referenda::types::DecidingStatus */ + /** Lookup646: pallet_referenda::types::DecidingStatus */ PalletReferendaDecidingStatus: { since: "u32", confirming: "Option", }, - /** Lookup642: pallet_referenda::types::TrackInfo */ + /** Lookup654: pallet_referenda::types::TrackInfo */ PalletReferendaTrackInfo: { name: "Text", maxDeciding: "u32", @@ -5416,7 +5514,7 @@ export default { minApproval: "PalletReferendaCurve", minSupport: "PalletReferendaCurve", }, - /** Lookup643: pallet_referenda::types::Curve */ + /** Lookup655: pallet_referenda::types::Curve */ PalletReferendaCurve: { _enum: { LinearDecreasing: { @@ -5437,7 +5535,7 @@ export default { }, }, }, - /** Lookup646: pallet_referenda::pallet::Error */ + /** Lookup658: pallet_referenda::pallet::Error */ PalletReferendaError: { _enum: [ "NotOngoing", @@ -5456,11 +5554,11 @@ export default { "PreimageStoredWithDifferentLength", ], }, - /** Lookup647: pallet_ranked_collective::MemberRecord */ + /** Lookup659: pallet_ranked_collective::MemberRecord */ PalletRankedCollectiveMemberRecord: { rank: "u16", }, - /** Lookup651: pallet_ranked_collective::pallet::Error */ + /** Lookup663: pallet_ranked_collective::pallet::Error */ PalletRankedCollectiveError: { _enum: [ "AlreadyMember", @@ -5477,7 +5575,7 @@ export default { ], }, /** - * Lookup652: pallet_referenda::types::ReferendumInfo, * Balance, pallet_ranked_collective::Tally, sp_core::crypto::AccountId32, ScheduleAddress> */ @@ -5492,7 +5590,7 @@ export default { }, }, /** - * Lookup653: pallet_referenda::types::ReferendumStatus, * Balance, pallet_ranked_collective::Tally, sp_core::crypto::AccountId32, ScheduleAddress> */ @@ -5509,7 +5607,7 @@ export default { inQueue: "bool", alarm: "Option<(u32,(u32,u32))>", }, - /** Lookup656: pallet_whitelist::pallet::Error */ + /** Lookup668: pallet_whitelist::pallet::Error */ PalletWhitelistError: { _enum: [ "UnavailablePreImage", @@ -5519,7 +5617,7 @@ export default { "CallAlreadyWhitelisted", ], }, - /** Lookup657: polkadot_runtime_parachains::configuration::HostConfiguration */ + /** Lookup669: polkadot_runtime_parachains::configuration::HostConfiguration */ PolkadotRuntimeParachainsConfigurationHostConfiguration: { maxCodeSize: "u32", maxHeadDataSize: "u32", @@ -5557,16 +5655,16 @@ export default { approvalVotingParams: "PolkadotPrimitivesV8ApprovalVotingParams", schedulerParams: "PolkadotPrimitivesV8SchedulerParams", }, - /** Lookup660: polkadot_runtime_parachains::configuration::pallet::Error */ + /** Lookup672: polkadot_runtime_parachains::configuration::pallet::Error */ PolkadotRuntimeParachainsConfigurationPalletError: { _enum: ["InvalidNewValue"], }, - /** Lookup663: polkadot_runtime_parachains::shared::AllowedRelayParentsTracker */ + /** Lookup675: polkadot_runtime_parachains::shared::AllowedRelayParentsTracker */ PolkadotRuntimeParachainsSharedAllowedRelayParentsTracker: { buffer: "Vec<(H256,H256)>", latestNumber: "u32", }, - /** Lookup667: polkadot_runtime_parachains::inclusion::CandidatePendingAvailability */ + /** Lookup679: polkadot_runtime_parachains::inclusion::CandidatePendingAvailability */ PolkadotRuntimeParachainsInclusionCandidatePendingAvailability: { _alias: { hash_: "hash", @@ -5581,7 +5679,7 @@ export default { backedInNumber: "u32", backingGroup: "u32", }, - /** Lookup668: polkadot_runtime_parachains::inclusion::pallet::Error */ + /** Lookup680: polkadot_runtime_parachains::inclusion::pallet::Error */ PolkadotRuntimeParachainsInclusionPalletError: { _enum: [ "ValidatorIndexOutOfBounds", @@ -5603,14 +5701,14 @@ export default { "ParaHeadMismatch", ], }, - /** Lookup669: polkadot_primitives::v8::ScrapedOnChainVotes */ + /** Lookup681: polkadot_primitives::v8::ScrapedOnChainVotes */ PolkadotPrimitivesV8ScrapedOnChainVotes: { session: "u32", backingValidatorsPerCandidate: "Vec<(PolkadotPrimitivesV8CandidateReceipt,Vec<(u32,PolkadotPrimitivesV8ValidityAttestation)>)>", disputes: "Vec", }, - /** Lookup674: polkadot_runtime_parachains::paras_inherent::pallet::Error */ + /** Lookup686: polkadot_runtime_parachains::paras_inherent::pallet::Error */ PolkadotRuntimeParachainsParasInherentPalletError: { _enum: [ "TooManyInclusionInherents", @@ -5620,20 +5718,20 @@ export default { "UnscheduledCandidate", ], }, - /** Lookup677: polkadot_runtime_parachains::scheduler::pallet::CoreOccupied */ + /** Lookup689: polkadot_runtime_parachains::scheduler::pallet::CoreOccupied */ PolkadotRuntimeParachainsSchedulerPalletCoreOccupied: { _enum: { Free: "Null", Paras: "PolkadotRuntimeParachainsSchedulerPalletParasEntry", }, }, - /** Lookup678: polkadot_runtime_parachains::scheduler::pallet::ParasEntry */ + /** Lookup690: polkadot_runtime_parachains::scheduler::pallet::ParasEntry */ PolkadotRuntimeParachainsSchedulerPalletParasEntry: { assignment: "PolkadotRuntimeParachainsSchedulerCommonAssignment", availabilityTimeouts: "u32", ttl: "u32", }, - /** Lookup679: polkadot_runtime_parachains::scheduler::common::Assignment */ + /** Lookup691: polkadot_runtime_parachains::scheduler::common::Assignment */ PolkadotRuntimeParachainsSchedulerCommonAssignment: { _enum: { Pool: { @@ -5643,7 +5741,7 @@ export default { Bulk: "u32", }, }, - /** Lookup684: polkadot_runtime_parachains::paras::PvfCheckActiveVoteState */ + /** Lookup696: polkadot_runtime_parachains::paras::PvfCheckActiveVoteState */ PolkadotRuntimeParachainsParasPvfCheckActiveVoteState: { votesAccept: "BitVec", votesReject: "BitVec", @@ -5651,7 +5749,7 @@ export default { createdAt: "u32", causes: "Vec", }, - /** Lookup686: polkadot_runtime_parachains::paras::PvfCheckCause */ + /** Lookup698: polkadot_runtime_parachains::paras::PvfCheckCause */ PolkadotRuntimeParachainsParasPvfCheckCause: { _enum: { Onboarding: "u32", @@ -5662,11 +5760,11 @@ export default { }, }, }, - /** Lookup687: polkadot_runtime_parachains::paras::UpgradeStrategy */ + /** Lookup699: polkadot_runtime_parachains::paras::UpgradeStrategy */ PolkadotRuntimeParachainsParasUpgradeStrategy: { _enum: ["SetGoAheadSignal", "ApplyAtExpectedBlock"], }, - /** Lookup689: polkadot_runtime_parachains::paras::ParaLifecycle */ + /** Lookup701: polkadot_runtime_parachains::paras::ParaLifecycle */ PolkadotRuntimeParachainsParasParaLifecycle: { _enum: [ "Onboarding", @@ -5678,25 +5776,25 @@ export default { "OffboardingParachain", ], }, - /** Lookup691: polkadot_runtime_parachains::paras::ParaPastCodeMeta */ + /** Lookup703: polkadot_runtime_parachains::paras::ParaPastCodeMeta */ PolkadotRuntimeParachainsParasParaPastCodeMeta: { upgradeTimes: "Vec", lastPruned: "Option", }, - /** Lookup693: polkadot_runtime_parachains::paras::ReplacementTimes */ + /** Lookup705: polkadot_runtime_parachains::paras::ReplacementTimes */ PolkadotRuntimeParachainsParasReplacementTimes: { expectedAt: "u32", activatedAt: "u32", }, - /** Lookup695: polkadot_primitives::v8::UpgradeGoAhead */ + /** Lookup707: polkadot_primitives::v8::UpgradeGoAhead */ PolkadotPrimitivesV8UpgradeGoAhead: { _enum: ["Abort", "GoAhead"], }, - /** Lookup696: polkadot_primitives::v8::UpgradeRestriction */ + /** Lookup708: polkadot_primitives::v8::UpgradeRestriction */ PolkadotPrimitivesV8UpgradeRestriction: { _enum: ["Present"], }, - /** Lookup697: polkadot_runtime_parachains::paras::pallet::Error */ + /** Lookup709: polkadot_runtime_parachains::paras::pallet::Error */ PolkadotRuntimeParachainsParasPalletError: { _enum: [ "NotRegistered", @@ -5714,18 +5812,18 @@ export default { "InvalidCode", ], }, - /** Lookup699: polkadot_runtime_parachains::initializer::BufferedSessionChange */ + /** Lookup711: polkadot_runtime_parachains::initializer::BufferedSessionChange */ PolkadotRuntimeParachainsInitializerBufferedSessionChange: { validators: "Vec", queued: "Vec", sessionIndex: "u32", }, - /** Lookup701: polkadot_core_primitives::InboundDownwardMessage */ + /** Lookup713: polkadot_core_primitives::InboundDownwardMessage */ PolkadotCorePrimitivesInboundDownwardMessage: { sentAt: "u32", msg: "Bytes", }, - /** Lookup702: polkadot_runtime_parachains::hrmp::HrmpOpenChannelRequest */ + /** Lookup714: polkadot_runtime_parachains::hrmp::HrmpOpenChannelRequest */ PolkadotRuntimeParachainsHrmpHrmpOpenChannelRequest: { confirmed: "bool", age: "u32", @@ -5734,7 +5832,7 @@ export default { maxCapacity: "u32", maxTotalSize: "u32", }, - /** Lookup704: polkadot_runtime_parachains::hrmp::HrmpChannel */ + /** Lookup716: polkadot_runtime_parachains::hrmp::HrmpChannel */ PolkadotRuntimeParachainsHrmpHrmpChannel: { maxCapacity: "u32", maxTotalSize: "u32", @@ -5745,12 +5843,12 @@ export default { senderDeposit: "u128", recipientDeposit: "u128", }, - /** Lookup706: polkadot_core_primitives::InboundHrmpMessage */ + /** Lookup718: polkadot_core_primitives::InboundHrmpMessage */ PolkadotCorePrimitivesInboundHrmpMessage: { sentAt: "u32", data: "Bytes", }, - /** Lookup709: polkadot_runtime_parachains::hrmp::pallet::Error */ + /** Lookup721: polkadot_runtime_parachains::hrmp::pallet::Error */ PolkadotRuntimeParachainsHrmpPalletError: { _enum: [ "OpenHrmpChannelToSelf", @@ -5775,7 +5873,7 @@ export default { "ChannelCreationNotAuthorized", ], }, - /** Lookup711: polkadot_primitives::v8::SessionInfo */ + /** Lookup723: polkadot_primitives::v8::SessionInfo */ PolkadotPrimitivesV8SessionInfo: { activeValidatorIndices: "Vec", randomSeed: "[u8;32]", @@ -5792,20 +5890,20 @@ export default { neededApprovals: "u32", }, /** - * Lookup712: polkadot_primitives::v8::IndexedVec */ PolkadotPrimitivesV8IndexedVecValidatorIndex: "Vec", - /** Lookup713: polkadot_primitives::v8::IndexedVec */ + /** Lookup725: polkadot_primitives::v8::IndexedVec */ PolkadotPrimitivesV8IndexedVecGroupIndex: "Vec>", - /** Lookup715: polkadot_primitives::v8::DisputeState */ + /** Lookup727: polkadot_primitives::v8::DisputeState */ PolkadotPrimitivesV8DisputeState: { validatorsFor: "BitVec", validatorsAgainst: "BitVec", start: "u32", concludedAt: "Option", }, - /** Lookup717: polkadot_runtime_parachains::disputes::pallet::Error */ + /** Lookup729: polkadot_runtime_parachains::disputes::pallet::Error */ PolkadotRuntimeParachainsDisputesPalletError: { _enum: [ "DuplicateDisputeStatementSets", @@ -5819,7 +5917,7 @@ export default { "UnconfirmedDispute", ], }, - /** Lookup718: polkadot_primitives::v8::slashing::PendingSlashes */ + /** Lookup730: polkadot_primitives::v8::slashing::PendingSlashes */ PolkadotPrimitivesV8SlashingPendingSlashes: { _alias: { keys_: "keys", @@ -5827,7 +5925,7 @@ export default { keys_: "BTreeMap", kind: "PolkadotPrimitivesV8SlashingSlashingOffenceKind", }, - /** Lookup722: polkadot_runtime_parachains::disputes::slashing::pallet::Error */ + /** Lookup734: polkadot_runtime_parachains::disputes::slashing::pallet::Error */ PolkadotRuntimeParachainsDisputesSlashingPalletError: { _enum: [ "InvalidKeyOwnershipProof", @@ -5838,7 +5936,7 @@ export default { "DuplicateSlashingReport", ], }, - /** Lookup723: pallet_message_queue::BookState */ + /** Lookup735: pallet_message_queue::BookState */ PalletMessageQueueBookState: { _alias: { size_: "size", @@ -5850,12 +5948,12 @@ export default { messageCount: "u64", size_: "u64", }, - /** Lookup725: pallet_message_queue::Neighbours */ + /** Lookup737: pallet_message_queue::Neighbours */ PalletMessageQueueNeighbours: { prev: "DancelightRuntimeAggregateMessageOrigin", next: "DancelightRuntimeAggregateMessageOrigin", }, - /** Lookup727: pallet_message_queue::Page */ + /** Lookup739: pallet_message_queue::Page */ PalletMessageQueuePage: { remaining: "u32", remainingSize: "u32", @@ -5864,7 +5962,7 @@ export default { last: "u32", heap: "Bytes", }, - /** Lookup729: pallet_message_queue::pallet::Error */ + /** Lookup741: pallet_message_queue::pallet::Error */ PalletMessageQueueError: { _enum: [ "NotReapable", @@ -5878,38 +5976,38 @@ export default { "RecursiveDisallowed", ], }, - /** Lookup730: polkadot_runtime_parachains::on_demand::types::CoreAffinityCount */ + /** Lookup742: polkadot_runtime_parachains::on_demand::types::CoreAffinityCount */ PolkadotRuntimeParachainsOnDemandTypesCoreAffinityCount: { coreIndex: "u32", count: "u32", }, - /** Lookup731: polkadot_runtime_parachains::on_demand::types::QueueStatusType */ + /** Lookup743: polkadot_runtime_parachains::on_demand::types::QueueStatusType */ PolkadotRuntimeParachainsOnDemandTypesQueueStatusType: { traffic: "u128", nextIndex: "u32", smallestIndex: "u32", freedIndices: "BinaryHeapReverseQueueIndex", }, - /** Lookup733: BinaryHeap */ + /** Lookup745: BinaryHeap */ BinaryHeapReverseQueueIndex: "Vec", - /** Lookup736: BinaryHeap */ + /** Lookup748: BinaryHeap */ BinaryHeapEnqueuedOrder: "Vec", - /** Lookup737: polkadot_runtime_parachains::on_demand::types::EnqueuedOrder */ + /** Lookup749: polkadot_runtime_parachains::on_demand::types::EnqueuedOrder */ PolkadotRuntimeParachainsOnDemandTypesEnqueuedOrder: { paraId: "u32", idx: "u32", }, - /** Lookup741: polkadot_runtime_parachains::on_demand::pallet::Error */ + /** Lookup753: polkadot_runtime_parachains::on_demand::pallet::Error */ PolkadotRuntimeParachainsOnDemandPalletError: { _enum: ["QueueFull", "SpotPriceHigherThanMaxAmount"], }, - /** Lookup742: polkadot_runtime_common::paras_registrar::ParaInfo */ + /** Lookup754: polkadot_runtime_common::paras_registrar::ParaInfo */ PolkadotRuntimeCommonParasRegistrarParaInfo: { manager: "AccountId32", deposit: "u128", locked: "Option", }, - /** Lookup744: polkadot_runtime_common::paras_registrar::pallet::Error */ + /** Lookup756: polkadot_runtime_common::paras_registrar::pallet::Error */ PolkadotRuntimeCommonParasRegistrarPalletError: { _enum: [ "NotRegistered", @@ -5928,12 +6026,12 @@ export default { "CannotSwap", ], }, - /** Lookup745: pallet_utility::pallet::Error */ + /** Lookup757: pallet_utility::pallet::Error */ PalletUtilityError: { _enum: ["TooManyCalls"], }, /** - * Lookup747: pallet_identity::types::Registration> */ PalletIdentityRegistration: { @@ -5941,18 +6039,18 @@ export default { deposit: "u128", info: "PalletIdentityLegacyIdentityInfo", }, - /** Lookup756: pallet_identity::types::RegistrarInfo */ + /** Lookup768: pallet_identity::types::RegistrarInfo */ PalletIdentityRegistrarInfo: { account: "AccountId32", fee: "u128", fields: "u64", }, - /** Lookup758: pallet_identity::types::AuthorityProperties> */ + /** Lookup770: pallet_identity::types::AuthorityProperties> */ PalletIdentityAuthorityProperties: { suffix: "Bytes", allocation: "u32", }, - /** Lookup760: pallet_identity::pallet::Error */ + /** Lookup772: pallet_identity::pallet::Error */ PalletIdentityError: { _enum: [ "TooManySubAccounts", @@ -5984,7 +6082,7 @@ export default { ], }, /** - * Lookup763: pallet_scheduler::Scheduled, * BlockNumber, dancelight_runtime::OriginCaller, sp_core::crypto::AccountId32> */ @@ -5995,29 +6093,29 @@ export default { maybePeriodic: "Option<(u32,u32)>", origin: "DancelightRuntimeOriginCaller", }, - /** Lookup765: pallet_scheduler::RetryConfig */ + /** Lookup777: pallet_scheduler::RetryConfig */ PalletSchedulerRetryConfig: { totalRetries: "u8", remaining: "u8", period: "u32", }, - /** Lookup766: pallet_scheduler::pallet::Error */ + /** Lookup778: pallet_scheduler::pallet::Error */ PalletSchedulerError: { _enum: ["FailedToSchedule", "NotFound", "TargetBlockNumberInPast", "RescheduleNoChange", "Named"], }, - /** Lookup769: pallet_proxy::ProxyDefinition */ + /** Lookup781: pallet_proxy::ProxyDefinition */ PalletProxyProxyDefinition: { delegate: "AccountId32", proxyType: "DancelightRuntimeProxyType", delay: "u32", }, - /** Lookup773: pallet_proxy::Announcement */ + /** Lookup785: pallet_proxy::Announcement */ PalletProxyAnnouncement: { real: "AccountId32", callHash: "H256", height: "u32", }, - /** Lookup775: pallet_proxy::pallet::Error */ + /** Lookup787: pallet_proxy::pallet::Error */ PalletProxyError: { _enum: [ "TooMany", @@ -6030,14 +6128,14 @@ export default { "NoSelfProxy", ], }, - /** Lookup777: pallet_multisig::Multisig */ + /** Lookup789: pallet_multisig::Multisig */ PalletMultisigMultisig: { when: "PalletMultisigTimepoint", deposit: "u128", depositor: "AccountId32", approvals: "Vec", }, - /** Lookup779: pallet_multisig::pallet::Error */ + /** Lookup791: pallet_multisig::pallet::Error */ PalletMultisigError: { _enum: [ "MinimumThreshold", @@ -6056,7 +6154,7 @@ export default { "AlreadyStored", ], }, - /** Lookup780: pallet_preimage::OldRequestStatus */ + /** Lookup792: pallet_preimage::OldRequestStatus */ PalletPreimageOldRequestStatus: { _enum: { Unrequested: { @@ -6071,7 +6169,7 @@ export default { }, }, /** - * Lookup783: pallet_preimage::RequestStatus> */ PalletPreimageRequestStatus: { @@ -6087,7 +6185,7 @@ export default { }, }, }, - /** Lookup788: pallet_preimage::pallet::Error */ + /** Lookup800: pallet_preimage::pallet::Error */ PalletPreimageError: { _enum: [ "TooBig", @@ -6100,11 +6198,11 @@ export default { "TooFew", ], }, - /** Lookup789: pallet_asset_rate::pallet::Error */ + /** Lookup801: pallet_asset_rate::pallet::Error */ PalletAssetRateError: { _enum: ["UnknownAssetKind", "AlreadyExists", "Overflow"], }, - /** Lookup790: pallet_xcm::pallet::QueryStatus */ + /** Lookup802: pallet_xcm::pallet::QueryStatus */ PalletXcmQueryStatus: { _enum: { Pending: { @@ -6123,7 +6221,7 @@ export default { }, }, }, - /** Lookup794: xcm::VersionedResponse */ + /** Lookup806: xcm::VersionedResponse */ XcmVersionedResponse: { _enum: { __Unused0: "Null", @@ -6133,7 +6231,7 @@ export default { V4: "StagingXcmV4Response", }, }, - /** Lookup800: pallet_xcm::pallet::VersionMigrationStage */ + /** Lookup812: pallet_xcm::pallet::VersionMigrationStage */ PalletXcmVersionMigrationStage: { _enum: { MigrateSupportedVersion: "Null", @@ -6142,14 +6240,14 @@ export default { MigrateAndNotifyOldTargets: "Null", }, }, - /** Lookup802: pallet_xcm::pallet::RemoteLockedFungibleRecord */ + /** Lookup814: pallet_xcm::pallet::RemoteLockedFungibleRecord */ PalletXcmRemoteLockedFungibleRecord: { amount: "u128", owner: "XcmVersionedLocation", locker: "XcmVersionedLocation", consumers: "Vec<(Null,u128)>", }, - /** Lookup809: pallet_xcm::pallet::Error */ + /** Lookup821: pallet_xcm::pallet::Error */ PalletXcmError: { _enum: [ "Unreachable", @@ -6179,7 +6277,43 @@ export default { "LocalExecutionIncomplete", ], }, - /** Lookup811: snowbridge_pallet_outbound_queue::types::CommittedMessage */ + /** Lookup822: snowbridge_pallet_inbound_queue::pallet::Error */ + SnowbridgePalletInboundQueueError: { + _enum: { + InvalidGateway: "Null", + InvalidEnvelope: "Null", + InvalidNonce: "Null", + InvalidPayload: "Null", + InvalidChannel: "Null", + MaxNonceReached: "Null", + InvalidAccountConversion: "Null", + Halted: "Null", + Verification: "SnowbridgeCoreInboundVerificationError", + Send: "SnowbridgePalletInboundQueueSendError", + ConvertMessage: "SnowbridgeRouterPrimitivesInboundConvertMessageError", + }, + }, + /** Lookup823: snowbridge_core::inbound::VerificationError */ + SnowbridgeCoreInboundVerificationError: { + _enum: ["HeaderNotFound", "LogNotFound", "InvalidLog", "InvalidProof", "InvalidExecutionProof"], + }, + /** Lookup824: snowbridge_pallet_inbound_queue::pallet::SendError */ + SnowbridgePalletInboundQueueSendError: { + _enum: [ + "NotApplicable", + "NotRoutable", + "Transport", + "DestinationUnsupported", + "ExceedsMaxMessageSize", + "MissingArgument", + "Fees", + ], + }, + /** Lookup825: snowbridge_router_primitives::inbound::ConvertMessageError */ + SnowbridgeRouterPrimitivesInboundConvertMessageError: { + _enum: ["UnsupportedVersion", "InvalidDestination", "InvalidToken", "UnsupportedFeeAsset", "CannotReanchor"], + }, + /** Lookup827: snowbridge_pallet_outbound_queue::types::CommittedMessage */ SnowbridgePalletOutboundQueueCommittedMessage: { channelId: "SnowbridgeCoreChannelId", nonce: "Compact", @@ -6190,16 +6324,16 @@ export default { reward: "Compact", id: "H256", }, - /** Lookup812: snowbridge_pallet_outbound_queue::pallet::Error */ + /** Lookup828: snowbridge_pallet_outbound_queue::pallet::Error */ SnowbridgePalletOutboundQueueError: { _enum: ["MessageTooLarge", "Halted", "InvalidChannel"], }, - /** Lookup813: snowbridge_core::Channel */ + /** Lookup829: snowbridge_core::Channel */ SnowbridgeCoreChannel: { agentId: "H256", paraId: "u32", }, - /** Lookup814: snowbridge_pallet_system::pallet::Error */ + /** Lookup830: snowbridge_pallet_system::pallet::Error */ SnowbridgePalletSystemError: { _enum: { LocationConversionFailed: "Null", @@ -6215,15 +6349,15 @@ export default { InvalidUpgradeParameters: "Null", }, }, - /** Lookup815: snowbridge_core::outbound::SendError */ + /** Lookup831: snowbridge_core::outbound::SendError */ SnowbridgeCoreOutboundSendError: { _enum: ["MessageTooLarge", "Halted", "InvalidChannel"], }, - /** Lookup816: pallet_migrations::pallet::Error */ + /** Lookup832: pallet_migrations::pallet::Error */ PalletMigrationsError: { _enum: ["PreimageMissing", "WrongUpperBound", "PreimageIsTooBig", "PreimageAlreadyExists"], }, - /** Lookup820: pallet_beefy::pallet::Error */ + /** Lookup836: pallet_beefy::pallet::Error */ PalletBeefyError: { _enum: [ "InvalidKeyOwnershipProof", @@ -6235,43 +6369,43 @@ export default { "InvalidConfiguration", ], }, - /** Lookup821: sp_consensus_beefy::mmr::BeefyAuthoritySet */ + /** Lookup837: sp_consensus_beefy::mmr::BeefyAuthoritySet */ SpConsensusBeefyMmrBeefyAuthoritySet: { id: "u64", len: "u32", keysetCommitment: "H256", }, - /** Lookup822: snowbridge_beacon_primitives::types::CompactBeaconState */ + /** Lookup838: snowbridge_beacon_primitives::types::CompactBeaconState */ SnowbridgeBeaconPrimitivesCompactBeaconState: { slot: "Compact", blockRootsRoot: "H256", }, - /** Lookup823: snowbridge_beacon_primitives::types::SyncCommitteePrepared */ + /** Lookup839: snowbridge_beacon_primitives::types::SyncCommitteePrepared */ SnowbridgeBeaconPrimitivesSyncCommitteePrepared: { root: "H256", - pubkeys: "[Lookup825;512]", + pubkeys: "[Lookup841;512]", aggregatePubkey: "SnowbridgeMilagroBlsKeysPublicKey", }, - /** Lookup825: snowbridge_milagro_bls::keys::PublicKey */ + /** Lookup841: snowbridge_milagro_bls::keys::PublicKey */ SnowbridgeMilagroBlsKeysPublicKey: { point: "SnowbridgeAmclBls381Ecp", }, - /** Lookup826: snowbridge_amcl::bls381::ecp::ECP */ + /** Lookup842: snowbridge_amcl::bls381::ecp::ECP */ SnowbridgeAmclBls381Ecp: { x: "SnowbridgeAmclBls381Fp", y: "SnowbridgeAmclBls381Fp", z: "SnowbridgeAmclBls381Fp", }, - /** Lookup827: snowbridge_amcl::bls381::fp::FP */ + /** Lookup843: snowbridge_amcl::bls381::fp::FP */ SnowbridgeAmclBls381Fp: { x: "SnowbridgeAmclBls381Big", xes: "i32", }, - /** Lookup828: snowbridge_amcl::bls381::big::Big */ + /** Lookup844: snowbridge_amcl::bls381::big::Big */ SnowbridgeAmclBls381Big: { w: "[i32;14]", }, - /** Lookup831: snowbridge_beacon_primitives::types::ForkVersions */ + /** Lookup847: snowbridge_beacon_primitives::types::ForkVersions */ SnowbridgeBeaconPrimitivesForkVersions: { genesis: "SnowbridgeBeaconPrimitivesFork", altair: "SnowbridgeBeaconPrimitivesFork", @@ -6279,12 +6413,12 @@ export default { capella: "SnowbridgeBeaconPrimitivesFork", deneb: "SnowbridgeBeaconPrimitivesFork", }, - /** Lookup832: snowbridge_beacon_primitives::types::Fork */ + /** Lookup848: snowbridge_beacon_primitives::types::Fork */ SnowbridgeBeaconPrimitivesFork: { version: "[u8;4]", epoch: "u64", }, - /** Lookup833: snowbridge_pallet_ethereum_client::pallet::Error */ + /** Lookup849: snowbridge_pallet_ethereum_client::pallet::Error */ SnowbridgePalletEthereumClientError: { _enum: { SkippedSyncCommitteePeriod: "Null", @@ -6314,11 +6448,11 @@ export default { Halted: "Null", }, }, - /** Lookup834: snowbridge_beacon_primitives::bls::BlsError */ + /** Lookup850: snowbridge_beacon_primitives::bls::BlsError */ SnowbridgeBeaconPrimitivesBlsBlsError: { _enum: ["InvalidSignature", "InvalidPublicKey", "InvalidAggregatePublicKeys", "SignatureVerificationFailed"], }, - /** Lookup835: polkadot_runtime_common::paras_sudo_wrapper::pallet::Error */ + /** Lookup851: polkadot_runtime_common::paras_sudo_wrapper::pallet::Error */ PolkadotRuntimeCommonParasSudoWrapperPalletError: { _enum: [ "ParaDoesntExist", @@ -6332,32 +6466,32 @@ export default { "TooManyCores", ], }, - /** Lookup836: pallet_sudo::pallet::Error */ + /** Lookup852: pallet_sudo::pallet::Error */ PalletSudoError: { _enum: ["RequireSudo"], }, - /** Lookup839: frame_system::extensions::check_non_zero_sender::CheckNonZeroSender */ + /** Lookup855: frame_system::extensions::check_non_zero_sender::CheckNonZeroSender */ FrameSystemExtensionsCheckNonZeroSender: "Null", - /** Lookup840: frame_system::extensions::check_spec_version::CheckSpecVersion */ + /** Lookup856: frame_system::extensions::check_spec_version::CheckSpecVersion */ FrameSystemExtensionsCheckSpecVersion: "Null", - /** Lookup841: frame_system::extensions::check_tx_version::CheckTxVersion */ + /** Lookup857: frame_system::extensions::check_tx_version::CheckTxVersion */ FrameSystemExtensionsCheckTxVersion: "Null", - /** Lookup842: frame_system::extensions::check_genesis::CheckGenesis */ + /** Lookup858: frame_system::extensions::check_genesis::CheckGenesis */ FrameSystemExtensionsCheckGenesis: "Null", - /** Lookup845: frame_system::extensions::check_nonce::CheckNonce */ + /** Lookup861: frame_system::extensions::check_nonce::CheckNonce */ FrameSystemExtensionsCheckNonce: "Compact", - /** Lookup846: frame_system::extensions::check_weight::CheckWeight */ + /** Lookup862: frame_system::extensions::check_weight::CheckWeight */ FrameSystemExtensionsCheckWeight: "Null", - /** Lookup847: pallet_transaction_payment::ChargeTransactionPayment */ + /** Lookup863: pallet_transaction_payment::ChargeTransactionPayment */ PalletTransactionPaymentChargeTransactionPayment: "Compact", - /** Lookup848: frame_metadata_hash_extension::CheckMetadataHash */ + /** Lookup864: frame_metadata_hash_extension::CheckMetadataHash */ FrameMetadataHashExtensionCheckMetadataHash: { mode: "FrameMetadataHashExtensionMode", }, - /** Lookup849: frame_metadata_hash_extension::Mode */ + /** Lookup865: frame_metadata_hash_extension::Mode */ FrameMetadataHashExtensionMode: { _enum: ["Disabled", "Enabled"], }, - /** Lookup850: dancelight_runtime::Runtime */ + /** Lookup866: dancelight_runtime::Runtime */ DancelightRuntimeRuntime: "Null", }; diff --git a/typescript-api/src/dancelight/interfaces/registry.ts b/typescript-api/src/dancelight/interfaces/registry.ts index dbc045bed..5b0e81a5f 100644 --- a/typescript-api/src/dancelight/interfaces/registry.ts +++ b/typescript-api/src/dancelight/interfaces/registry.ts @@ -328,9 +328,13 @@ import type { SnowbridgeAmclBls381Big, SnowbridgeAmclBls381Ecp, SnowbridgeAmclBls381Fp, + SnowbridgeBeaconPrimitivesAncestryProof, SnowbridgeBeaconPrimitivesBeaconHeader, SnowbridgeBeaconPrimitivesBlsBlsError, SnowbridgeBeaconPrimitivesCompactBeaconState, + SnowbridgeBeaconPrimitivesDenebExecutionPayloadHeader, + SnowbridgeBeaconPrimitivesExecutionPayloadHeader, + SnowbridgeBeaconPrimitivesExecutionProof, SnowbridgeBeaconPrimitivesFork, SnowbridgeBeaconPrimitivesForkVersions, SnowbridgeBeaconPrimitivesPublicKey, @@ -341,9 +345,14 @@ import type { SnowbridgeBeaconPrimitivesUpdatesCheckpointUpdate, SnowbridgeBeaconPrimitivesUpdatesNextSyncCommitteeUpdate, SnowbridgeBeaconPrimitivesUpdatesUpdate, + SnowbridgeBeaconPrimitivesVersionedExecutionPayloadHeader, SnowbridgeCoreAssetMetadata, SnowbridgeCoreChannel, SnowbridgeCoreChannelId, + SnowbridgeCoreInboundLog, + SnowbridgeCoreInboundMessage, + SnowbridgeCoreInboundProof, + SnowbridgeCoreInboundVerificationError, SnowbridgeCoreOperatingModeBasicOperatingMode, SnowbridgeCoreOutboundSendError, SnowbridgeCoreOutboundV1Initializer, @@ -354,6 +363,10 @@ import type { SnowbridgePalletEthereumClientCall, SnowbridgePalletEthereumClientError, SnowbridgePalletEthereumClientEvent, + SnowbridgePalletInboundQueueCall, + SnowbridgePalletInboundQueueError, + SnowbridgePalletInboundQueueEvent, + SnowbridgePalletInboundQueueSendError, SnowbridgePalletOutboundQueueCall, SnowbridgePalletOutboundQueueCommittedMessage, SnowbridgePalletOutboundQueueError, @@ -361,6 +374,7 @@ import type { SnowbridgePalletSystemCall, SnowbridgePalletSystemError, SnowbridgePalletSystemEvent, + SnowbridgeRouterPrimitivesInboundConvertMessageError, SpArithmeticArithmeticError, SpAuthorityDiscoveryAppPublic, SpConsensusBabeAllowedSlots, @@ -803,9 +817,13 @@ declare module "@polkadot/types/types/registry" { SnowbridgeAmclBls381Big: SnowbridgeAmclBls381Big; SnowbridgeAmclBls381Ecp: SnowbridgeAmclBls381Ecp; SnowbridgeAmclBls381Fp: SnowbridgeAmclBls381Fp; + SnowbridgeBeaconPrimitivesAncestryProof: SnowbridgeBeaconPrimitivesAncestryProof; SnowbridgeBeaconPrimitivesBeaconHeader: SnowbridgeBeaconPrimitivesBeaconHeader; SnowbridgeBeaconPrimitivesBlsBlsError: SnowbridgeBeaconPrimitivesBlsBlsError; SnowbridgeBeaconPrimitivesCompactBeaconState: SnowbridgeBeaconPrimitivesCompactBeaconState; + SnowbridgeBeaconPrimitivesDenebExecutionPayloadHeader: SnowbridgeBeaconPrimitivesDenebExecutionPayloadHeader; + SnowbridgeBeaconPrimitivesExecutionPayloadHeader: SnowbridgeBeaconPrimitivesExecutionPayloadHeader; + SnowbridgeBeaconPrimitivesExecutionProof: SnowbridgeBeaconPrimitivesExecutionProof; SnowbridgeBeaconPrimitivesFork: SnowbridgeBeaconPrimitivesFork; SnowbridgeBeaconPrimitivesForkVersions: SnowbridgeBeaconPrimitivesForkVersions; SnowbridgeBeaconPrimitivesPublicKey: SnowbridgeBeaconPrimitivesPublicKey; @@ -816,9 +834,14 @@ declare module "@polkadot/types/types/registry" { SnowbridgeBeaconPrimitivesUpdatesCheckpointUpdate: SnowbridgeBeaconPrimitivesUpdatesCheckpointUpdate; SnowbridgeBeaconPrimitivesUpdatesNextSyncCommitteeUpdate: SnowbridgeBeaconPrimitivesUpdatesNextSyncCommitteeUpdate; SnowbridgeBeaconPrimitivesUpdatesUpdate: SnowbridgeBeaconPrimitivesUpdatesUpdate; + SnowbridgeBeaconPrimitivesVersionedExecutionPayloadHeader: SnowbridgeBeaconPrimitivesVersionedExecutionPayloadHeader; SnowbridgeCoreAssetMetadata: SnowbridgeCoreAssetMetadata; SnowbridgeCoreChannel: SnowbridgeCoreChannel; SnowbridgeCoreChannelId: SnowbridgeCoreChannelId; + SnowbridgeCoreInboundLog: SnowbridgeCoreInboundLog; + SnowbridgeCoreInboundMessage: SnowbridgeCoreInboundMessage; + SnowbridgeCoreInboundProof: SnowbridgeCoreInboundProof; + SnowbridgeCoreInboundVerificationError: SnowbridgeCoreInboundVerificationError; SnowbridgeCoreOperatingModeBasicOperatingMode: SnowbridgeCoreOperatingModeBasicOperatingMode; SnowbridgeCoreOutboundSendError: SnowbridgeCoreOutboundSendError; SnowbridgeCoreOutboundV1Initializer: SnowbridgeCoreOutboundV1Initializer; @@ -829,6 +852,10 @@ declare module "@polkadot/types/types/registry" { SnowbridgePalletEthereumClientCall: SnowbridgePalletEthereumClientCall; SnowbridgePalletEthereumClientError: SnowbridgePalletEthereumClientError; SnowbridgePalletEthereumClientEvent: SnowbridgePalletEthereumClientEvent; + SnowbridgePalletInboundQueueCall: SnowbridgePalletInboundQueueCall; + SnowbridgePalletInboundQueueError: SnowbridgePalletInboundQueueError; + SnowbridgePalletInboundQueueEvent: SnowbridgePalletInboundQueueEvent; + SnowbridgePalletInboundQueueSendError: SnowbridgePalletInboundQueueSendError; SnowbridgePalletOutboundQueueCall: SnowbridgePalletOutboundQueueCall; SnowbridgePalletOutboundQueueCommittedMessage: SnowbridgePalletOutboundQueueCommittedMessage; SnowbridgePalletOutboundQueueError: SnowbridgePalletOutboundQueueError; @@ -836,6 +863,7 @@ declare module "@polkadot/types/types/registry" { SnowbridgePalletSystemCall: SnowbridgePalletSystemCall; SnowbridgePalletSystemError: SnowbridgePalletSystemError; SnowbridgePalletSystemEvent: SnowbridgePalletSystemEvent; + SnowbridgeRouterPrimitivesInboundConvertMessageError: SnowbridgeRouterPrimitivesInboundConvertMessageError; SpArithmeticArithmeticError: SpArithmeticArithmeticError; SpAuthorityDiscoveryAppPublic: SpAuthorityDiscoveryAppPublic; SpConsensusBabeAllowedSlots: SpConsensusBabeAllowedSlots; diff --git a/typescript-api/src/dancelight/interfaces/types-lookup.ts b/typescript-api/src/dancelight/interfaces/types-lookup.ts index c6f823d23..30cba9bfc 100644 --- a/typescript-api/src/dancelight/interfaces/types-lookup.ts +++ b/typescript-api/src/dancelight/interfaces/types-lookup.ts @@ -4881,23 +4881,127 @@ declare module "@polkadot/types/lookup" { readonly type: "V3" | "V4"; } - /** @name SnowbridgePalletOutboundQueueCall (396) */ - interface SnowbridgePalletOutboundQueueCall extends Enum { + /** @name SnowbridgePalletInboundQueueCall (396) */ + interface SnowbridgePalletInboundQueueCall extends Enum { + readonly isSubmit: boolean; + readonly asSubmit: { + readonly message: SnowbridgeCoreInboundMessage; + } & Struct; readonly isSetOperatingMode: boolean; readonly asSetOperatingMode: { readonly mode: SnowbridgeCoreOperatingModeBasicOperatingMode; } & Struct; - readonly type: "SetOperatingMode"; + readonly type: "Submit" | "SetOperatingMode"; + } + + /** @name SnowbridgeCoreInboundMessage (397) */ + interface SnowbridgeCoreInboundMessage extends Struct { + readonly eventLog: SnowbridgeCoreInboundLog; + readonly proof: SnowbridgeCoreInboundProof; + } + + /** @name SnowbridgeCoreInboundLog (398) */ + interface SnowbridgeCoreInboundLog extends Struct { + readonly address: H160; + readonly topics: Vec; + readonly data: Bytes; } - /** @name SnowbridgeCoreOperatingModeBasicOperatingMode (397) */ + /** @name SnowbridgeCoreInboundProof (400) */ + interface SnowbridgeCoreInboundProof extends Struct { + readonly receiptProof: ITuple<[Vec, Vec]>; + readonly executionProof: SnowbridgeBeaconPrimitivesExecutionProof; + } + + /** @name SnowbridgeBeaconPrimitivesExecutionProof (402) */ + interface SnowbridgeBeaconPrimitivesExecutionProof extends Struct { + readonly header: SnowbridgeBeaconPrimitivesBeaconHeader; + readonly ancestryProof: Option; + readonly executionHeader: SnowbridgeBeaconPrimitivesVersionedExecutionPayloadHeader; + readonly executionBranch: Vec; + } + + /** @name SnowbridgeBeaconPrimitivesBeaconHeader (403) */ + interface SnowbridgeBeaconPrimitivesBeaconHeader extends Struct { + readonly slot: u64; + readonly proposerIndex: u64; + readonly parentRoot: H256; + readonly stateRoot: H256; + readonly bodyRoot: H256; + } + + /** @name SnowbridgeBeaconPrimitivesAncestryProof (405) */ + interface SnowbridgeBeaconPrimitivesAncestryProof extends Struct { + readonly headerBranch: Vec; + readonly finalizedBlockRoot: H256; + } + + /** @name SnowbridgeBeaconPrimitivesVersionedExecutionPayloadHeader (406) */ + interface SnowbridgeBeaconPrimitivesVersionedExecutionPayloadHeader extends Enum { + readonly isCapella: boolean; + readonly asCapella: SnowbridgeBeaconPrimitivesExecutionPayloadHeader; + readonly isDeneb: boolean; + readonly asDeneb: SnowbridgeBeaconPrimitivesDenebExecutionPayloadHeader; + readonly type: "Capella" | "Deneb"; + } + + /** @name SnowbridgeBeaconPrimitivesExecutionPayloadHeader (407) */ + interface SnowbridgeBeaconPrimitivesExecutionPayloadHeader extends Struct { + readonly parentHash: H256; + readonly feeRecipient: H160; + readonly stateRoot: H256; + readonly receiptsRoot: H256; + readonly logsBloom: Bytes; + readonly prevRandao: H256; + readonly blockNumber: u64; + readonly gasLimit: u64; + readonly gasUsed: u64; + readonly timestamp: u64; + readonly extraData: Bytes; + readonly baseFeePerGas: U256; + readonly blockHash: H256; + readonly transactionsRoot: H256; + readonly withdrawalsRoot: H256; + } + + /** @name SnowbridgeBeaconPrimitivesDenebExecutionPayloadHeader (410) */ + interface SnowbridgeBeaconPrimitivesDenebExecutionPayloadHeader extends Struct { + readonly parentHash: H256; + readonly feeRecipient: H160; + readonly stateRoot: H256; + readonly receiptsRoot: H256; + readonly logsBloom: Bytes; + readonly prevRandao: H256; + readonly blockNumber: u64; + readonly gasLimit: u64; + readonly gasUsed: u64; + readonly timestamp: u64; + readonly extraData: Bytes; + readonly baseFeePerGas: U256; + readonly blockHash: H256; + readonly transactionsRoot: H256; + readonly withdrawalsRoot: H256; + readonly blobGasUsed: u64; + readonly excessBlobGas: u64; + } + + /** @name SnowbridgeCoreOperatingModeBasicOperatingMode (411) */ interface SnowbridgeCoreOperatingModeBasicOperatingMode extends Enum { readonly isNormal: boolean; readonly isHalted: boolean; readonly type: "Normal" | "Halted"; } - /** @name SnowbridgePalletSystemCall (398) */ + /** @name SnowbridgePalletOutboundQueueCall (412) */ + interface SnowbridgePalletOutboundQueueCall extends Enum { + readonly isSetOperatingMode: boolean; + readonly asSetOperatingMode: { + readonly mode: SnowbridgeCoreOperatingModeBasicOperatingMode; + } & Struct; + readonly type: "SetOperatingMode"; + } + + /** @name SnowbridgePalletSystemCall (413) */ interface SnowbridgePalletSystemCall extends Enum { readonly isUpgrade: boolean; readonly asUpgrade: { @@ -4963,20 +5067,20 @@ declare module "@polkadot/types/lookup" { | "RegisterToken"; } - /** @name SnowbridgeCoreOutboundV1Initializer (401) */ + /** @name SnowbridgeCoreOutboundV1Initializer (415) */ interface SnowbridgeCoreOutboundV1Initializer extends Struct { readonly params: Bytes; readonly maximumRequiredGas: u64; } - /** @name SnowbridgeCoreOutboundV1OperatingMode (402) */ + /** @name SnowbridgeCoreOutboundV1OperatingMode (416) */ interface SnowbridgeCoreOutboundV1OperatingMode extends Enum { readonly isNormal: boolean; readonly isRejectingOutboundMessages: boolean; readonly type: "Normal" | "RejectingOutboundMessages"; } - /** @name SnowbridgeCorePricingPricingParameters (403) */ + /** @name SnowbridgeCorePricingPricingParameters (417) */ interface SnowbridgeCorePricingPricingParameters extends Struct { readonly exchangeRate: u128; readonly rewards: SnowbridgeCorePricingRewards; @@ -4984,20 +5088,20 @@ declare module "@polkadot/types/lookup" { readonly multiplier: u128; } - /** @name SnowbridgeCorePricingRewards (404) */ + /** @name SnowbridgeCorePricingRewards (418) */ interface SnowbridgeCorePricingRewards extends Struct { readonly local: u128; readonly remote: U256; } - /** @name SnowbridgeCoreAssetMetadata (407) */ + /** @name SnowbridgeCoreAssetMetadata (419) */ interface SnowbridgeCoreAssetMetadata extends Struct { readonly name: Bytes; readonly symbol: Bytes; readonly decimals: u8; } - /** @name PalletMigrationsCall (408) */ + /** @name PalletMigrationsCall (420) */ interface PalletMigrationsCall extends Enum { readonly isForceSetCursor: boolean; readonly asForceSetCursor: { @@ -5017,7 +5121,7 @@ declare module "@polkadot/types/lookup" { readonly type: "ForceSetCursor" | "ForceSetActiveCursor" | "ForceOnboardMbms" | "ClearHistoric"; } - /** @name PalletMigrationsMigrationCursor (410) */ + /** @name PalletMigrationsMigrationCursor (422) */ interface PalletMigrationsMigrationCursor extends Enum { readonly isActive: boolean; readonly asActive: PalletMigrationsActiveCursor; @@ -5025,14 +5129,14 @@ declare module "@polkadot/types/lookup" { readonly type: "Active" | "Stuck"; } - /** @name PalletMigrationsActiveCursor (412) */ + /** @name PalletMigrationsActiveCursor (424) */ interface PalletMigrationsActiveCursor extends Struct { readonly index: u32; readonly innerCursor: Option; readonly startedAt: u32; } - /** @name PalletMigrationsHistoricCleanupSelector (414) */ + /** @name PalletMigrationsHistoricCleanupSelector (426) */ interface PalletMigrationsHistoricCleanupSelector extends Enum { readonly isSpecific: boolean; readonly asSpecific: Vec; @@ -5044,7 +5148,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Specific" | "Wildcard"; } - /** @name PalletBeefyCall (417) */ + /** @name PalletBeefyCall (429) */ interface PalletBeefyCall extends Enum { readonly isReportDoubleVoting: boolean; readonly asReportDoubleVoting: { @@ -5090,40 +5194,40 @@ declare module "@polkadot/types/lookup" { | "ReportFutureBlockVotingUnsigned"; } - /** @name SpConsensusBeefyDoubleVotingProof (418) */ + /** @name SpConsensusBeefyDoubleVotingProof (430) */ interface SpConsensusBeefyDoubleVotingProof extends Struct { readonly first: SpConsensusBeefyVoteMessage; readonly second: SpConsensusBeefyVoteMessage; } - /** @name SpConsensusBeefyEcdsaCryptoSignature (419) */ + /** @name SpConsensusBeefyEcdsaCryptoSignature (431) */ interface SpConsensusBeefyEcdsaCryptoSignature extends U8aFixed {} - /** @name SpConsensusBeefyVoteMessage (420) */ + /** @name SpConsensusBeefyVoteMessage (432) */ interface SpConsensusBeefyVoteMessage extends Struct { readonly commitment: SpConsensusBeefyCommitment; readonly id: SpConsensusBeefyEcdsaCryptoPublic; readonly signature: SpConsensusBeefyEcdsaCryptoSignature; } - /** @name SpConsensusBeefyCommitment (421) */ + /** @name SpConsensusBeefyCommitment (433) */ interface SpConsensusBeefyCommitment extends Struct { readonly payload: SpConsensusBeefyPayload; readonly blockNumber: u32; readonly validatorSetId: u64; } - /** @name SpConsensusBeefyPayload (422) */ + /** @name SpConsensusBeefyPayload (434) */ interface SpConsensusBeefyPayload extends Vec> {} - /** @name SpConsensusBeefyForkVotingProof (425) */ + /** @name SpConsensusBeefyForkVotingProof (437) */ interface SpConsensusBeefyForkVotingProof extends Struct { readonly vote: SpConsensusBeefyVoteMessage; readonly ancestryProof: SpMmrPrimitivesAncestryProof; readonly header: SpRuntimeHeader; } - /** @name SpMmrPrimitivesAncestryProof (426) */ + /** @name SpMmrPrimitivesAncestryProof (438) */ interface SpMmrPrimitivesAncestryProof extends Struct { readonly prevPeaks: Vec; readonly prevLeafCount: u64; @@ -5131,12 +5235,12 @@ declare module "@polkadot/types/lookup" { readonly items: Vec>; } - /** @name SpConsensusBeefyFutureBlockVotingProof (429) */ + /** @name SpConsensusBeefyFutureBlockVotingProof (441) */ interface SpConsensusBeefyFutureBlockVotingProof extends Struct { readonly vote: SpConsensusBeefyVoteMessage; } - /** @name SnowbridgePalletEthereumClientCall (430) */ + /** @name SnowbridgePalletEthereumClientCall (442) */ interface SnowbridgePalletEthereumClientCall extends Enum { readonly isForceCheckpoint: boolean; readonly asForceCheckpoint: { @@ -5153,7 +5257,7 @@ declare module "@polkadot/types/lookup" { readonly type: "ForceCheckpoint" | "Submit" | "SetOperatingMode"; } - /** @name SnowbridgeBeaconPrimitivesUpdatesCheckpointUpdate (431) */ + /** @name SnowbridgeBeaconPrimitivesUpdatesCheckpointUpdate (443) */ interface SnowbridgeBeaconPrimitivesUpdatesCheckpointUpdate extends Struct { readonly header: SnowbridgeBeaconPrimitivesBeaconHeader; readonly currentSyncCommittee: SnowbridgeBeaconPrimitivesSyncCommittee; @@ -5163,25 +5267,16 @@ declare module "@polkadot/types/lookup" { readonly blockRootsBranch: Vec; } - /** @name SnowbridgeBeaconPrimitivesBeaconHeader (432) */ - interface SnowbridgeBeaconPrimitivesBeaconHeader extends Struct { - readonly slot: u64; - readonly proposerIndex: u64; - readonly parentRoot: H256; - readonly stateRoot: H256; - readonly bodyRoot: H256; - } - - /** @name SnowbridgeBeaconPrimitivesSyncCommittee (433) */ + /** @name SnowbridgeBeaconPrimitivesSyncCommittee (444) */ interface SnowbridgeBeaconPrimitivesSyncCommittee extends Struct { readonly pubkeys: Vec; readonly aggregatePubkey: SnowbridgeBeaconPrimitivesPublicKey; } - /** @name SnowbridgeBeaconPrimitivesPublicKey (435) */ + /** @name SnowbridgeBeaconPrimitivesPublicKey (446) */ interface SnowbridgeBeaconPrimitivesPublicKey extends U8aFixed {} - /** @name SnowbridgeBeaconPrimitivesUpdatesUpdate (437) */ + /** @name SnowbridgeBeaconPrimitivesUpdatesUpdate (448) */ interface SnowbridgeBeaconPrimitivesUpdatesUpdate extends Struct { readonly attestedHeader: SnowbridgeBeaconPrimitivesBeaconHeader; readonly syncAggregate: SnowbridgeBeaconPrimitivesSyncAggregate; @@ -5193,22 +5288,22 @@ declare module "@polkadot/types/lookup" { readonly blockRootsBranch: Vec; } - /** @name SnowbridgeBeaconPrimitivesSyncAggregate (438) */ + /** @name SnowbridgeBeaconPrimitivesSyncAggregate (449) */ interface SnowbridgeBeaconPrimitivesSyncAggregate extends Struct { readonly syncCommitteeBits: U8aFixed; readonly syncCommitteeSignature: SnowbridgeBeaconPrimitivesSignature; } - /** @name SnowbridgeBeaconPrimitivesSignature (439) */ + /** @name SnowbridgeBeaconPrimitivesSignature (450) */ interface SnowbridgeBeaconPrimitivesSignature extends U8aFixed {} - /** @name SnowbridgeBeaconPrimitivesUpdatesNextSyncCommitteeUpdate (442) */ + /** @name SnowbridgeBeaconPrimitivesUpdatesNextSyncCommitteeUpdate (453) */ interface SnowbridgeBeaconPrimitivesUpdatesNextSyncCommitteeUpdate extends Struct { readonly nextSyncCommittee: SnowbridgeBeaconPrimitivesSyncCommittee; readonly nextSyncCommitteeBranch: Vec; } - /** @name PolkadotRuntimeCommonParasSudoWrapperPalletCall (443) */ + /** @name PolkadotRuntimeCommonParasSudoWrapperPalletCall (454) */ interface PolkadotRuntimeCommonParasSudoWrapperPalletCall extends Enum { readonly isSudoScheduleParaInitialize: boolean; readonly asSudoScheduleParaInitialize: { @@ -5248,14 +5343,14 @@ declare module "@polkadot/types/lookup" { | "SudoEstablishHrmpChannel"; } - /** @name PolkadotRuntimeParachainsParasParaGenesisArgs (444) */ + /** @name PolkadotRuntimeParachainsParasParaGenesisArgs (455) */ interface PolkadotRuntimeParachainsParasParaGenesisArgs extends Struct { readonly genesisHead: Bytes; readonly validationCode: Bytes; readonly paraKind: bool; } - /** @name PalletRootTestingCall (445) */ + /** @name PalletRootTestingCall (456) */ interface PalletRootTestingCall extends Enum { readonly isFillBlock: boolean; readonly asFillBlock: { @@ -5265,7 +5360,7 @@ declare module "@polkadot/types/lookup" { readonly type: "FillBlock" | "TriggerDefensive"; } - /** @name PalletSudoCall (446) */ + /** @name PalletSudoCall (457) */ interface PalletSudoCall extends Enum { readonly isSudo: boolean; readonly asSudo: { @@ -5289,17 +5384,17 @@ declare module "@polkadot/types/lookup" { readonly type: "Sudo" | "SudoUncheckedWeight" | "SetKey" | "SudoAs" | "RemoveKey"; } - /** @name SpRuntimeBlakeTwo256 (447) */ + /** @name SpRuntimeBlakeTwo256 (458) */ type SpRuntimeBlakeTwo256 = Null; - /** @name PalletConvictionVotingTally (449) */ + /** @name PalletConvictionVotingTally (460) */ interface PalletConvictionVotingTally extends Struct { readonly ayes: u128; readonly nays: u128; readonly support: u128; } - /** @name PalletRankedCollectiveEvent (450) */ + /** @name PalletRankedCollectiveEvent (461) */ interface PalletRankedCollectiveEvent extends Enum { readonly isMemberAdded: boolean; readonly asMemberAdded: { @@ -5330,7 +5425,7 @@ declare module "@polkadot/types/lookup" { readonly type: "MemberAdded" | "RankChanged" | "MemberRemoved" | "Voted" | "MemberExchanged"; } - /** @name PalletRankedCollectiveVoteRecord (451) */ + /** @name PalletRankedCollectiveVoteRecord (462) */ interface PalletRankedCollectiveVoteRecord extends Enum { readonly isAye: boolean; readonly asAye: u32; @@ -5339,14 +5434,14 @@ declare module "@polkadot/types/lookup" { readonly type: "Aye" | "Nay"; } - /** @name PalletRankedCollectiveTally (452) */ + /** @name PalletRankedCollectiveTally (463) */ interface PalletRankedCollectiveTally extends Struct { readonly bareAyes: u32; readonly ayes: u32; readonly nays: u32; } - /** @name PalletWhitelistEvent (454) */ + /** @name PalletWhitelistEvent (465) */ interface PalletWhitelistEvent extends Enum { readonly isCallWhitelisted: boolean; readonly asCallWhitelisted: { @@ -5364,19 +5459,19 @@ declare module "@polkadot/types/lookup" { readonly type: "CallWhitelisted" | "WhitelistedCallRemoved" | "WhitelistedCallDispatched"; } - /** @name FrameSupportDispatchPostDispatchInfo (456) */ + /** @name FrameSupportDispatchPostDispatchInfo (467) */ interface FrameSupportDispatchPostDispatchInfo extends Struct { readonly actualWeight: Option; readonly paysFee: FrameSupportDispatchPays; } - /** @name SpRuntimeDispatchErrorWithPostInfo (458) */ + /** @name SpRuntimeDispatchErrorWithPostInfo (469) */ interface SpRuntimeDispatchErrorWithPostInfo extends Struct { readonly postInfo: FrameSupportDispatchPostDispatchInfo; readonly error: SpRuntimeDispatchError; } - /** @name PolkadotRuntimeParachainsInclusionPalletEvent (459) */ + /** @name PolkadotRuntimeParachainsInclusionPalletEvent (470) */ interface PolkadotRuntimeParachainsInclusionPalletEvent extends Enum { readonly isCandidateBacked: boolean; readonly asCandidateBacked: ITuple<[PolkadotPrimitivesV8CandidateReceipt, Bytes, u32, u32]>; @@ -5392,13 +5487,13 @@ declare module "@polkadot/types/lookup" { readonly type: "CandidateBacked" | "CandidateIncluded" | "CandidateTimedOut" | "UpwardMessagesReceived"; } - /** @name PolkadotPrimitivesV8CandidateReceipt (460) */ + /** @name PolkadotPrimitivesV8CandidateReceipt (471) */ interface PolkadotPrimitivesV8CandidateReceipt extends Struct { readonly descriptor: PolkadotPrimitivesV8CandidateDescriptor; readonly commitmentsHash: H256; } - /** @name PolkadotRuntimeParachainsParasPalletEvent (463) */ + /** @name PolkadotRuntimeParachainsParasPalletEvent (474) */ interface PolkadotRuntimeParachainsParasPalletEvent extends Enum { readonly isCurrentCodeUpdated: boolean; readonly asCurrentCodeUpdated: u32; @@ -5427,7 +5522,7 @@ declare module "@polkadot/types/lookup" { | "PvfCheckRejected"; } - /** @name PolkadotRuntimeParachainsHrmpPalletEvent (464) */ + /** @name PolkadotRuntimeParachainsHrmpPalletEvent (475) */ interface PolkadotRuntimeParachainsHrmpPalletEvent extends Enum { readonly isOpenChannelRequested: boolean; readonly asOpenChannelRequested: { @@ -5480,7 +5575,7 @@ declare module "@polkadot/types/lookup" { | "OpenChannelDepositsUpdated"; } - /** @name PolkadotRuntimeParachainsDisputesPalletEvent (465) */ + /** @name PolkadotRuntimeParachainsDisputesPalletEvent (476) */ interface PolkadotRuntimeParachainsDisputesPalletEvent extends Enum { readonly isDisputeInitiated: boolean; readonly asDisputeInitiated: ITuple<[H256, PolkadotRuntimeParachainsDisputesDisputeLocation]>; @@ -5491,21 +5586,21 @@ declare module "@polkadot/types/lookup" { readonly type: "DisputeInitiated" | "DisputeConcluded" | "Revert"; } - /** @name PolkadotRuntimeParachainsDisputesDisputeLocation (466) */ + /** @name PolkadotRuntimeParachainsDisputesDisputeLocation (477) */ interface PolkadotRuntimeParachainsDisputesDisputeLocation extends Enum { readonly isLocal: boolean; readonly isRemote: boolean; readonly type: "Local" | "Remote"; } - /** @name PolkadotRuntimeParachainsDisputesDisputeResult (467) */ + /** @name PolkadotRuntimeParachainsDisputesDisputeResult (478) */ interface PolkadotRuntimeParachainsDisputesDisputeResult extends Enum { readonly isValid: boolean; readonly isInvalid: boolean; readonly type: "Valid" | "Invalid"; } - /** @name PalletMessageQueueEvent (468) */ + /** @name PalletMessageQueueEvent (479) */ interface PalletMessageQueueEvent extends Enum { readonly isProcessingFailed: boolean; readonly asProcessingFailed: { @@ -5535,7 +5630,7 @@ declare module "@polkadot/types/lookup" { readonly type: "ProcessingFailed" | "Processed" | "OverweightEnqueued" | "PageReaped"; } - /** @name FrameSupportMessagesProcessMessageError (469) */ + /** @name FrameSupportMessagesProcessMessageError (480) */ interface FrameSupportMessagesProcessMessageError extends Enum { readonly isBadFormat: boolean; readonly isCorrupt: boolean; @@ -5547,7 +5642,7 @@ declare module "@polkadot/types/lookup" { readonly type: "BadFormat" | "Corrupt" | "Unsupported" | "Overweight" | "Yield" | "StackLimitReached"; } - /** @name PolkadotRuntimeParachainsOnDemandPalletEvent (470) */ + /** @name PolkadotRuntimeParachainsOnDemandPalletEvent (481) */ interface PolkadotRuntimeParachainsOnDemandPalletEvent extends Enum { readonly isOnDemandOrderPlaced: boolean; readonly asOnDemandOrderPlaced: { @@ -5562,7 +5657,7 @@ declare module "@polkadot/types/lookup" { readonly type: "OnDemandOrderPlaced" | "SpotPriceSet"; } - /** @name PolkadotRuntimeCommonParasRegistrarPalletEvent (471) */ + /** @name PolkadotRuntimeCommonParasRegistrarPalletEvent (482) */ interface PolkadotRuntimeCommonParasRegistrarPalletEvent extends Enum { readonly isRegistered: boolean; readonly asRegistered: { @@ -5586,7 +5681,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Registered" | "Deregistered" | "Reserved" | "Swapped"; } - /** @name PalletUtilityEvent (472) */ + /** @name PalletUtilityEvent (483) */ interface PalletUtilityEvent extends Enum { readonly isBatchInterrupted: boolean; readonly asBatchInterrupted: { @@ -5613,7 +5708,7 @@ declare module "@polkadot/types/lookup" { | "DispatchedAs"; } - /** @name PalletIdentityEvent (474) */ + /** @name PalletIdentityEvent (485) */ interface PalletIdentityEvent extends Enum { readonly isIdentitySet: boolean; readonly asIdentitySet: { @@ -5719,7 +5814,7 @@ declare module "@polkadot/types/lookup" { | "DanglingUsernameRemoved"; } - /** @name PalletSchedulerEvent (475) */ + /** @name PalletSchedulerEvent (486) */ interface PalletSchedulerEvent extends Enum { readonly isScheduled: boolean; readonly asScheduled: { @@ -5781,7 +5876,7 @@ declare module "@polkadot/types/lookup" { | "PermanentlyOverweight"; } - /** @name PalletProxyEvent (477) */ + /** @name PalletProxyEvent (488) */ interface PalletProxyEvent extends Enum { readonly isProxyExecuted: boolean; readonly asProxyExecuted: { @@ -5817,7 +5912,7 @@ declare module "@polkadot/types/lookup" { readonly type: "ProxyExecuted" | "PureCreated" | "Announced" | "ProxyAdded" | "ProxyRemoved"; } - /** @name PalletMultisigEvent (478) */ + /** @name PalletMultisigEvent (489) */ interface PalletMultisigEvent extends Enum { readonly isNewMultisig: boolean; readonly asNewMultisig: { @@ -5850,7 +5945,7 @@ declare module "@polkadot/types/lookup" { readonly type: "NewMultisig" | "MultisigApproval" | "MultisigExecuted" | "MultisigCancelled"; } - /** @name PalletPreimageEvent (479) */ + /** @name PalletPreimageEvent (490) */ interface PalletPreimageEvent extends Enum { readonly isNoted: boolean; readonly asNoted: { @@ -5867,7 +5962,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Noted" | "Requested" | "Cleared"; } - /** @name PalletAssetRateEvent (480) */ + /** @name PalletAssetRateEvent (491) */ interface PalletAssetRateEvent extends Enum { readonly isAssetRateCreated: boolean; readonly asAssetRateCreated: { @@ -5887,7 +5982,7 @@ declare module "@polkadot/types/lookup" { readonly type: "AssetRateCreated" | "AssetRateRemoved" | "AssetRateUpdated"; } - /** @name PalletXcmEvent (481) */ + /** @name PalletXcmEvent (492) */ interface PalletXcmEvent extends Enum { readonly isAttempted: boolean; readonly asAttempted: { @@ -6052,7 +6147,7 @@ declare module "@polkadot/types/lookup" { | "VersionMigrationFinished"; } - /** @name StagingXcmV4TraitsOutcome (482) */ + /** @name StagingXcmV4TraitsOutcome (493) */ interface StagingXcmV4TraitsOutcome extends Enum { readonly isComplete: boolean; readonly asComplete: { @@ -6070,7 +6165,23 @@ declare module "@polkadot/types/lookup" { readonly type: "Complete" | "Incomplete" | "Error"; } - /** @name SnowbridgePalletOutboundQueueEvent (483) */ + /** @name SnowbridgePalletInboundQueueEvent (494) */ + interface SnowbridgePalletInboundQueueEvent extends Enum { + readonly isMessageReceived: boolean; + readonly asMessageReceived: { + readonly channelId: SnowbridgeCoreChannelId; + readonly nonce: u64; + readonly messageId: U8aFixed; + readonly feeBurned: u128; + } & Struct; + readonly isOperatingModeChanged: boolean; + readonly asOperatingModeChanged: { + readonly mode: SnowbridgeCoreOperatingModeBasicOperatingMode; + } & Struct; + readonly type: "MessageReceived" | "OperatingModeChanged"; + } + + /** @name SnowbridgePalletOutboundQueueEvent (495) */ interface SnowbridgePalletOutboundQueueEvent extends Enum { readonly isMessageQueued: boolean; readonly asMessageQueued: { @@ -6093,7 +6204,7 @@ declare module "@polkadot/types/lookup" { readonly type: "MessageQueued" | "MessageAccepted" | "MessagesCommitted" | "OperatingModeChanged"; } - /** @name SnowbridgePalletSystemEvent (484) */ + /** @name SnowbridgePalletSystemEvent (496) */ interface SnowbridgePalletSystemEvent extends Enum { readonly isUpgrade: boolean; readonly asUpgrade: { @@ -6153,7 +6264,7 @@ declare module "@polkadot/types/lookup" { | "RegisterToken"; } - /** @name PalletMigrationsEvent (485) */ + /** @name PalletMigrationsEvent (497) */ interface PalletMigrationsEvent extends Enum { readonly isRuntimeUpgradeStarted: boolean; readonly isRuntimeUpgradeCompleted: boolean; @@ -6186,7 +6297,7 @@ declare module "@polkadot/types/lookup" { | "FailedToResumeIdleXcmExecution"; } - /** @name SnowbridgePalletEthereumClientEvent (487) */ + /** @name SnowbridgePalletEthereumClientEvent (499) */ interface SnowbridgePalletEthereumClientEvent extends Enum { readonly isBeaconHeaderImported: boolean; readonly asBeaconHeaderImported: { @@ -6204,13 +6315,13 @@ declare module "@polkadot/types/lookup" { readonly type: "BeaconHeaderImported" | "SyncCommitteeUpdated" | "OperatingModeChanged"; } - /** @name PalletRootTestingEvent (488) */ + /** @name PalletRootTestingEvent (500) */ interface PalletRootTestingEvent extends Enum { readonly isDefensiveTestCall: boolean; readonly type: "DefensiveTestCall"; } - /** @name PalletSudoEvent (489) */ + /** @name PalletSudoEvent (501) */ interface PalletSudoEvent extends Enum { readonly isSudid: boolean; readonly asSudid: { @@ -6229,7 +6340,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Sudid" | "KeyChanged" | "KeyRemoved" | "SudoAsDone"; } - /** @name FrameSystemPhase (490) */ + /** @name FrameSystemPhase (502) */ interface FrameSystemPhase extends Enum { readonly isApplyExtrinsic: boolean; readonly asApplyExtrinsic: u32; @@ -6238,33 +6349,33 @@ declare module "@polkadot/types/lookup" { readonly type: "ApplyExtrinsic" | "Finalization" | "Initialization"; } - /** @name FrameSystemLastRuntimeUpgradeInfo (492) */ + /** @name FrameSystemLastRuntimeUpgradeInfo (504) */ interface FrameSystemLastRuntimeUpgradeInfo extends Struct { readonly specVersion: Compact; readonly specName: Text; } - /** @name FrameSystemCodeUpgradeAuthorization (494) */ + /** @name FrameSystemCodeUpgradeAuthorization (506) */ interface FrameSystemCodeUpgradeAuthorization extends Struct { readonly codeHash: H256; readonly checkVersion: bool; } - /** @name FrameSystemLimitsBlockWeights (495) */ + /** @name FrameSystemLimitsBlockWeights (507) */ interface FrameSystemLimitsBlockWeights extends Struct { readonly baseBlock: SpWeightsWeightV2Weight; readonly maxBlock: SpWeightsWeightV2Weight; readonly perClass: FrameSupportDispatchPerDispatchClassWeightsPerClass; } - /** @name FrameSupportDispatchPerDispatchClassWeightsPerClass (496) */ + /** @name FrameSupportDispatchPerDispatchClassWeightsPerClass (508) */ interface FrameSupportDispatchPerDispatchClassWeightsPerClass extends Struct { readonly normal: FrameSystemLimitsWeightsPerClass; readonly operational: FrameSystemLimitsWeightsPerClass; readonly mandatory: FrameSystemLimitsWeightsPerClass; } - /** @name FrameSystemLimitsWeightsPerClass (497) */ + /** @name FrameSystemLimitsWeightsPerClass (509) */ interface FrameSystemLimitsWeightsPerClass extends Struct { readonly baseExtrinsic: SpWeightsWeightV2Weight; readonly maxExtrinsic: Option; @@ -6272,25 +6383,25 @@ declare module "@polkadot/types/lookup" { readonly reserved: Option; } - /** @name FrameSystemLimitsBlockLength (498) */ + /** @name FrameSystemLimitsBlockLength (510) */ interface FrameSystemLimitsBlockLength extends Struct { readonly max: FrameSupportDispatchPerDispatchClassU32; } - /** @name FrameSupportDispatchPerDispatchClassU32 (499) */ + /** @name FrameSupportDispatchPerDispatchClassU32 (511) */ interface FrameSupportDispatchPerDispatchClassU32 extends Struct { readonly normal: u32; readonly operational: u32; readonly mandatory: u32; } - /** @name SpWeightsRuntimeDbWeight (500) */ + /** @name SpWeightsRuntimeDbWeight (512) */ interface SpWeightsRuntimeDbWeight extends Struct { readonly read: u64; readonly write: u64; } - /** @name SpVersionRuntimeVersion (501) */ + /** @name SpVersionRuntimeVersion (513) */ interface SpVersionRuntimeVersion extends Struct { readonly specName: Text; readonly implName: Text; @@ -6302,7 +6413,7 @@ declare module "@polkadot/types/lookup" { readonly stateVersion: u8; } - /** @name FrameSystemError (505) */ + /** @name FrameSystemError (517) */ interface FrameSystemError extends Enum { readonly isInvalidSpecName: boolean; readonly isSpecVersionNeedsToIncrease: boolean; @@ -6325,7 +6436,7 @@ declare module "@polkadot/types/lookup" { | "Unauthorized"; } - /** @name SpConsensusBabeDigestsPreDigest (512) */ + /** @name SpConsensusBabeDigestsPreDigest (524) */ interface SpConsensusBabeDigestsPreDigest extends Enum { readonly isPrimary: boolean; readonly asPrimary: SpConsensusBabeDigestsPrimaryPreDigest; @@ -6336,39 +6447,39 @@ declare module "@polkadot/types/lookup" { readonly type: "Primary" | "SecondaryPlain" | "SecondaryVRF"; } - /** @name SpConsensusBabeDigestsPrimaryPreDigest (513) */ + /** @name SpConsensusBabeDigestsPrimaryPreDigest (525) */ interface SpConsensusBabeDigestsPrimaryPreDigest extends Struct { readonly authorityIndex: u32; readonly slot: u64; readonly vrfSignature: SpCoreSr25519VrfVrfSignature; } - /** @name SpCoreSr25519VrfVrfSignature (514) */ + /** @name SpCoreSr25519VrfVrfSignature (526) */ interface SpCoreSr25519VrfVrfSignature extends Struct { readonly preOutput: U8aFixed; readonly proof: U8aFixed; } - /** @name SpConsensusBabeDigestsSecondaryPlainPreDigest (515) */ + /** @name SpConsensusBabeDigestsSecondaryPlainPreDigest (527) */ interface SpConsensusBabeDigestsSecondaryPlainPreDigest extends Struct { readonly authorityIndex: u32; readonly slot: u64; } - /** @name SpConsensusBabeDigestsSecondaryVRFPreDigest (516) */ + /** @name SpConsensusBabeDigestsSecondaryVRFPreDigest (528) */ interface SpConsensusBabeDigestsSecondaryVRFPreDigest extends Struct { readonly authorityIndex: u32; readonly slot: u64; readonly vrfSignature: SpCoreSr25519VrfVrfSignature; } - /** @name SpConsensusBabeBabeEpochConfiguration (517) */ + /** @name SpConsensusBabeBabeEpochConfiguration (529) */ interface SpConsensusBabeBabeEpochConfiguration extends Struct { readonly c: ITuple<[u64, u64]>; readonly allowedSlots: SpConsensusBabeAllowedSlots; } - /** @name PalletBabeError (521) */ + /** @name PalletBabeError (533) */ interface PalletBabeError extends Enum { readonly isInvalidEquivocationProof: boolean; readonly isInvalidKeyOwnershipProof: boolean; @@ -6381,14 +6492,14 @@ declare module "@polkadot/types/lookup" { | "InvalidConfiguration"; } - /** @name PalletBalancesBalanceLock (523) */ + /** @name PalletBalancesBalanceLock (535) */ interface PalletBalancesBalanceLock extends Struct { readonly id: U8aFixed; readonly amount: u128; readonly reasons: PalletBalancesReasons; } - /** @name PalletBalancesReasons (524) */ + /** @name PalletBalancesReasons (536) */ interface PalletBalancesReasons extends Enum { readonly isFee: boolean; readonly isMisc: boolean; @@ -6396,13 +6507,13 @@ declare module "@polkadot/types/lookup" { readonly type: "Fee" | "Misc" | "All"; } - /** @name PalletBalancesReserveData (527) */ + /** @name PalletBalancesReserveData (539) */ interface PalletBalancesReserveData extends Struct { readonly id: U8aFixed; readonly amount: u128; } - /** @name DancelightRuntimeRuntimeHoldReason (531) */ + /** @name DancelightRuntimeRuntimeHoldReason (543) */ interface DancelightRuntimeRuntimeHoldReason extends Enum { readonly isContainerRegistrar: boolean; readonly asContainerRegistrar: PalletRegistrarHoldReason; @@ -6413,31 +6524,31 @@ declare module "@polkadot/types/lookup" { readonly type: "ContainerRegistrar" | "DataPreservers" | "Preimage"; } - /** @name PalletRegistrarHoldReason (532) */ + /** @name PalletRegistrarHoldReason (544) */ interface PalletRegistrarHoldReason extends Enum { readonly isRegistrarDeposit: boolean; readonly type: "RegistrarDeposit"; } - /** @name PalletDataPreserversHoldReason (533) */ + /** @name PalletDataPreserversHoldReason (545) */ interface PalletDataPreserversHoldReason extends Enum { readonly isProfileDeposit: boolean; readonly type: "ProfileDeposit"; } - /** @name PalletPreimageHoldReason (534) */ + /** @name PalletPreimageHoldReason (546) */ interface PalletPreimageHoldReason extends Enum { readonly isPreimage: boolean; readonly type: "Preimage"; } - /** @name FrameSupportTokensMiscIdAmount (537) */ + /** @name FrameSupportTokensMiscIdAmount (549) */ interface FrameSupportTokensMiscIdAmount extends Struct { readonly id: Null; readonly amount: u128; } - /** @name PalletBalancesError (539) */ + /** @name PalletBalancesError (551) */ interface PalletBalancesError extends Enum { readonly isVestingBalance: boolean; readonly isLiquidityRestrictions: boolean; @@ -6466,26 +6577,26 @@ declare module "@polkadot/types/lookup" { | "DeltaZero"; } - /** @name PalletTransactionPaymentReleases (540) */ + /** @name PalletTransactionPaymentReleases (552) */ interface PalletTransactionPaymentReleases extends Enum { readonly isV1Ancient: boolean; readonly isV2: boolean; readonly type: "V1Ancient" | "V2"; } - /** @name SpStakingOffenceOffenceDetails (541) */ + /** @name SpStakingOffenceOffenceDetails (553) */ interface SpStakingOffenceOffenceDetails extends Struct { readonly offender: ITuple<[AccountId32, Null]>; readonly reporters: Vec; } - /** @name PalletRegistrarDepositInfo (553) */ + /** @name PalletRegistrarDepositInfo (565) */ interface PalletRegistrarDepositInfo extends Struct { readonly creator: AccountId32; readonly deposit: u128; } - /** @name PalletRegistrarError (554) */ + /** @name PalletRegistrarError (566) */ interface PalletRegistrarError extends Enum { readonly isParaIdAlreadyRegistered: boolean; readonly isParaIdNotRegistered: boolean; @@ -6524,7 +6635,7 @@ declare module "@polkadot/types/lookup" { | "WasmCodeNecessary"; } - /** @name PalletConfigurationHostConfiguration (555) */ + /** @name PalletConfigurationHostConfiguration (567) */ interface PalletConfigurationHostConfiguration extends Struct { readonly maxCollators: u32; readonly minOrchestratorCollators: u32; @@ -6537,13 +6648,13 @@ declare module "@polkadot/types/lookup" { readonly maxParachainCoresPercentage: Option; } - /** @name PalletConfigurationError (558) */ + /** @name PalletConfigurationError (570) */ interface PalletConfigurationError extends Enum { readonly isInvalidNewValue: boolean; readonly type: "InvalidNewValue"; } - /** @name PalletInvulnerablesError (560) */ + /** @name PalletInvulnerablesError (572) */ interface PalletInvulnerablesError extends Enum { readonly isTooManyInvulnerables: boolean; readonly isAlreadyInvulnerable: boolean; @@ -6558,26 +6669,26 @@ declare module "@polkadot/types/lookup" { | "UnableToDeriveCollatorId"; } - /** @name DpCollatorAssignmentAssignedCollatorsAccountId32 (561) */ + /** @name DpCollatorAssignmentAssignedCollatorsAccountId32 (573) */ interface DpCollatorAssignmentAssignedCollatorsAccountId32 extends Struct { readonly orchestratorChain: Vec; readonly containerChains: BTreeMap>; } - /** @name DpCollatorAssignmentAssignedCollatorsPublic (566) */ + /** @name DpCollatorAssignmentAssignedCollatorsPublic (578) */ interface DpCollatorAssignmentAssignedCollatorsPublic extends Struct { readonly orchestratorChain: Vec; readonly containerChains: BTreeMap>; } - /** @name TpTraitsContainerChainBlockInfo (574) */ + /** @name TpTraitsContainerChainBlockInfo (586) */ interface TpTraitsContainerChainBlockInfo extends Struct { readonly blockNumber: u32; readonly author: AccountId32; readonly latestSlotNumber: u64; } - /** @name PalletAuthorNotingError (575) */ + /** @name PalletAuthorNotingError (587) */ interface PalletAuthorNotingError extends Enum { readonly isFailedReading: boolean; readonly isFailedDecodingHeader: boolean; @@ -6596,7 +6707,7 @@ declare module "@polkadot/types/lookup" { | "NonAuraDigest"; } - /** @name PalletServicesPaymentError (576) */ + /** @name PalletServicesPaymentError (588) */ interface PalletServicesPaymentError extends Enum { readonly isInsufficientFundsToPurchaseCredits: boolean; readonly isInsufficientCredits: boolean; @@ -6604,7 +6715,7 @@ declare module "@polkadot/types/lookup" { readonly type: "InsufficientFundsToPurchaseCredits" | "InsufficientCredits" | "CreditPriceTooExpensive"; } - /** @name PalletDataPreserversRegisteredProfile (577) */ + /** @name PalletDataPreserversRegisteredProfile (589) */ interface PalletDataPreserversRegisteredProfile extends Struct { readonly account: AccountId32; readonly deposit: u128; @@ -6612,7 +6723,7 @@ declare module "@polkadot/types/lookup" { readonly assignment: Option>; } - /** @name PalletDataPreserversError (583) */ + /** @name PalletDataPreserversError (595) */ interface PalletDataPreserversError extends Enum { readonly isNoBootNodes: boolean; readonly isUnknownProfileId: boolean; @@ -6637,13 +6748,13 @@ declare module "@polkadot/types/lookup" { | "CantDeleteAssignedProfile"; } - /** @name TpTraitsActiveEraInfo (586) */ + /** @name TpTraitsActiveEraInfo (598) */ interface TpTraitsActiveEraInfo extends Struct { readonly index: u32; readonly start: Option; } - /** @name PalletExternalValidatorsError (588) */ + /** @name PalletExternalValidatorsError (600) */ interface PalletExternalValidatorsError extends Enum { readonly isTooManyWhitelisted: boolean; readonly isAlreadyWhitelisted: boolean; @@ -6658,7 +6769,7 @@ declare module "@polkadot/types/lookup" { | "UnableToDeriveValidatorId"; } - /** @name PalletExternalValidatorSlashesSlash (591) */ + /** @name PalletExternalValidatorSlashesSlash (603) */ interface PalletExternalValidatorSlashesSlash extends Struct { readonly validator: AccountId32; readonly reporters: Vec; @@ -6667,7 +6778,7 @@ declare module "@polkadot/types/lookup" { readonly confirmed: bool; } - /** @name PalletExternalValidatorSlashesError (592) */ + /** @name PalletExternalValidatorSlashesError (604) */ interface PalletExternalValidatorSlashesError extends Enum { readonly isEmptyTargets: boolean; readonly isInvalidSlashIndex: boolean; @@ -6690,16 +6801,16 @@ declare module "@polkadot/types/lookup" { | "EthereumDeliverFail"; } - /** @name PalletExternalValidatorsRewardsEraRewardPoints (593) */ + /** @name PalletExternalValidatorsRewardsEraRewardPoints (605) */ interface PalletExternalValidatorsRewardsEraRewardPoints extends Struct { readonly total: u32; readonly individual: BTreeMap; } - /** @name SpCoreCryptoKeyTypeId (600) */ + /** @name SpCoreCryptoKeyTypeId (612) */ interface SpCoreCryptoKeyTypeId extends U8aFixed {} - /** @name PalletSessionError (601) */ + /** @name PalletSessionError (613) */ interface PalletSessionError extends Enum { readonly isInvalidProof: boolean; readonly isNoAssociatedValidatorId: boolean; @@ -6709,7 +6820,7 @@ declare module "@polkadot/types/lookup" { readonly type: "InvalidProof" | "NoAssociatedValidatorId" | "DuplicatedKey" | "NoKeys" | "NoAccount"; } - /** @name PalletGrandpaStoredState (602) */ + /** @name PalletGrandpaStoredState (614) */ interface PalletGrandpaStoredState extends Enum { readonly isLive: boolean; readonly isPendingPause: boolean; @@ -6726,7 +6837,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Live" | "PendingPause" | "Paused" | "PendingResume"; } - /** @name PalletGrandpaStoredPendingChange (603) */ + /** @name PalletGrandpaStoredPendingChange (615) */ interface PalletGrandpaStoredPendingChange extends Struct { readonly scheduledAt: u32; readonly delay: u32; @@ -6734,7 +6845,7 @@ declare module "@polkadot/types/lookup" { readonly forced: Option; } - /** @name PalletGrandpaError (605) */ + /** @name PalletGrandpaError (617) */ interface PalletGrandpaError extends Enum { readonly isPauseFailed: boolean; readonly isResumeFailed: boolean; @@ -6753,13 +6864,13 @@ declare module "@polkadot/types/lookup" { | "DuplicateOffenceReport"; } - /** @name PalletInflationRewardsChainsToRewardValue (608) */ + /** @name PalletInflationRewardsChainsToRewardValue (620) */ interface PalletInflationRewardsChainsToRewardValue extends Struct { readonly paraIds: Vec; readonly rewardsPerChain: u128; } - /** @name PalletTreasuryProposal (609) */ + /** @name PalletTreasuryProposal (621) */ interface PalletTreasuryProposal extends Struct { readonly proposer: AccountId32; readonly value: u128; @@ -6767,7 +6878,7 @@ declare module "@polkadot/types/lookup" { readonly bond: u128; } - /** @name PalletTreasurySpendStatus (611) */ + /** @name PalletTreasurySpendStatus (623) */ interface PalletTreasurySpendStatus extends Struct { readonly assetKind: Null; readonly amount: u128; @@ -6777,7 +6888,7 @@ declare module "@polkadot/types/lookup" { readonly status: PalletTreasuryPaymentState; } - /** @name PalletTreasuryPaymentState (612) */ + /** @name PalletTreasuryPaymentState (624) */ interface PalletTreasuryPaymentState extends Enum { readonly isPending: boolean; readonly isAttempted: boolean; @@ -6788,10 +6899,10 @@ declare module "@polkadot/types/lookup" { readonly type: "Pending" | "Attempted" | "Failed"; } - /** @name FrameSupportPalletId (614) */ + /** @name FrameSupportPalletId (626) */ interface FrameSupportPalletId extends U8aFixed {} - /** @name PalletTreasuryError (615) */ + /** @name PalletTreasuryError (627) */ interface PalletTreasuryError extends Enum { readonly isInvalidIndex: boolean; readonly isTooManyApprovals: boolean; @@ -6818,7 +6929,7 @@ declare module "@polkadot/types/lookup" { | "Inconclusive"; } - /** @name PalletConvictionVotingVoteVoting (617) */ + /** @name PalletConvictionVotingVoteVoting (629) */ interface PalletConvictionVotingVoteVoting extends Enum { readonly isCasting: boolean; readonly asCasting: PalletConvictionVotingVoteCasting; @@ -6827,23 +6938,23 @@ declare module "@polkadot/types/lookup" { readonly type: "Casting" | "Delegating"; } - /** @name PalletConvictionVotingVoteCasting (618) */ + /** @name PalletConvictionVotingVoteCasting (630) */ interface PalletConvictionVotingVoteCasting extends Struct { readonly votes: Vec>; readonly delegations: PalletConvictionVotingDelegations; readonly prior: PalletConvictionVotingVotePriorLock; } - /** @name PalletConvictionVotingDelegations (622) */ + /** @name PalletConvictionVotingDelegations (634) */ interface PalletConvictionVotingDelegations extends Struct { readonly votes: u128; readonly capital: u128; } - /** @name PalletConvictionVotingVotePriorLock (623) */ + /** @name PalletConvictionVotingVotePriorLock (635) */ interface PalletConvictionVotingVotePriorLock extends ITuple<[u32, u128]> {} - /** @name PalletConvictionVotingVoteDelegating (624) */ + /** @name PalletConvictionVotingVoteDelegating (636) */ interface PalletConvictionVotingVoteDelegating extends Struct { readonly balance: u128; readonly target: AccountId32; @@ -6852,7 +6963,7 @@ declare module "@polkadot/types/lookup" { readonly prior: PalletConvictionVotingVotePriorLock; } - /** @name PalletConvictionVotingError (628) */ + /** @name PalletConvictionVotingError (640) */ interface PalletConvictionVotingError extends Enum { readonly isNotOngoing: boolean; readonly isNotVoter: boolean; @@ -6881,7 +6992,7 @@ declare module "@polkadot/types/lookup" { | "BadClass"; } - /** @name PalletReferendaReferendumInfoConvictionVotingTally (629) */ + /** @name PalletReferendaReferendumInfoConvictionVotingTally (641) */ interface PalletReferendaReferendumInfoConvictionVotingTally extends Enum { readonly isOngoing: boolean; readonly asOngoing: PalletReferendaReferendumStatusConvictionVotingTally; @@ -6898,7 +7009,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Ongoing" | "Approved" | "Rejected" | "Cancelled" | "TimedOut" | "Killed"; } - /** @name PalletReferendaReferendumStatusConvictionVotingTally (630) */ + /** @name PalletReferendaReferendumStatusConvictionVotingTally (642) */ interface PalletReferendaReferendumStatusConvictionVotingTally extends Struct { readonly track: u16; readonly origin: DancelightRuntimeOriginCaller; @@ -6913,19 +7024,19 @@ declare module "@polkadot/types/lookup" { readonly alarm: Option]>>; } - /** @name PalletReferendaDeposit (631) */ + /** @name PalletReferendaDeposit (643) */ interface PalletReferendaDeposit extends Struct { readonly who: AccountId32; readonly amount: u128; } - /** @name PalletReferendaDecidingStatus (634) */ + /** @name PalletReferendaDecidingStatus (646) */ interface PalletReferendaDecidingStatus extends Struct { readonly since: u32; readonly confirming: Option; } - /** @name PalletReferendaTrackInfo (642) */ + /** @name PalletReferendaTrackInfo (654) */ interface PalletReferendaTrackInfo extends Struct { readonly name: Text; readonly maxDeciding: u32; @@ -6938,7 +7049,7 @@ declare module "@polkadot/types/lookup" { readonly minSupport: PalletReferendaCurve; } - /** @name PalletReferendaCurve (643) */ + /** @name PalletReferendaCurve (655) */ interface PalletReferendaCurve extends Enum { readonly isLinearDecreasing: boolean; readonly asLinearDecreasing: { @@ -6962,7 +7073,7 @@ declare module "@polkadot/types/lookup" { readonly type: "LinearDecreasing" | "SteppedDecreasing" | "Reciprocal"; } - /** @name PalletReferendaError (646) */ + /** @name PalletReferendaError (658) */ interface PalletReferendaError extends Enum { readonly isNotOngoing: boolean; readonly isHasDeposit: boolean; @@ -6995,12 +7106,12 @@ declare module "@polkadot/types/lookup" { | "PreimageStoredWithDifferentLength"; } - /** @name PalletRankedCollectiveMemberRecord (647) */ + /** @name PalletRankedCollectiveMemberRecord (659) */ interface PalletRankedCollectiveMemberRecord extends Struct { readonly rank: u16; } - /** @name PalletRankedCollectiveError (651) */ + /** @name PalletRankedCollectiveError (663) */ interface PalletRankedCollectiveError extends Enum { readonly isAlreadyMember: boolean; readonly isNotMember: boolean; @@ -7027,7 +7138,7 @@ declare module "@polkadot/types/lookup" { | "TooManyMembers"; } - /** @name PalletReferendaReferendumInfoRankedCollectiveTally (652) */ + /** @name PalletReferendaReferendumInfoRankedCollectiveTally (664) */ interface PalletReferendaReferendumInfoRankedCollectiveTally extends Enum { readonly isOngoing: boolean; readonly asOngoing: PalletReferendaReferendumStatusRankedCollectiveTally; @@ -7044,7 +7155,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Ongoing" | "Approved" | "Rejected" | "Cancelled" | "TimedOut" | "Killed"; } - /** @name PalletReferendaReferendumStatusRankedCollectiveTally (653) */ + /** @name PalletReferendaReferendumStatusRankedCollectiveTally (665) */ interface PalletReferendaReferendumStatusRankedCollectiveTally extends Struct { readonly track: u16; readonly origin: DancelightRuntimeOriginCaller; @@ -7059,7 +7170,7 @@ declare module "@polkadot/types/lookup" { readonly alarm: Option]>>; } - /** @name PalletWhitelistError (656) */ + /** @name PalletWhitelistError (668) */ interface PalletWhitelistError extends Enum { readonly isUnavailablePreImage: boolean; readonly isUndecodableCall: boolean; @@ -7074,7 +7185,7 @@ declare module "@polkadot/types/lookup" { | "CallAlreadyWhitelisted"; } - /** @name PolkadotRuntimeParachainsConfigurationHostConfiguration (657) */ + /** @name PolkadotRuntimeParachainsConfigurationHostConfiguration (669) */ interface PolkadotRuntimeParachainsConfigurationHostConfiguration extends Struct { readonly maxCodeSize: u32; readonly maxHeadDataSize: u32; @@ -7113,19 +7224,19 @@ declare module "@polkadot/types/lookup" { readonly schedulerParams: PolkadotPrimitivesV8SchedulerParams; } - /** @name PolkadotRuntimeParachainsConfigurationPalletError (660) */ + /** @name PolkadotRuntimeParachainsConfigurationPalletError (672) */ interface PolkadotRuntimeParachainsConfigurationPalletError extends Enum { readonly isInvalidNewValue: boolean; readonly type: "InvalidNewValue"; } - /** @name PolkadotRuntimeParachainsSharedAllowedRelayParentsTracker (663) */ + /** @name PolkadotRuntimeParachainsSharedAllowedRelayParentsTracker (675) */ interface PolkadotRuntimeParachainsSharedAllowedRelayParentsTracker extends Struct { readonly buffer: Vec>; readonly latestNumber: u32; } - /** @name PolkadotRuntimeParachainsInclusionCandidatePendingAvailability (667) */ + /** @name PolkadotRuntimeParachainsInclusionCandidatePendingAvailability (679) */ interface PolkadotRuntimeParachainsInclusionCandidatePendingAvailability extends Struct { readonly core: u32; readonly hash_: H256; @@ -7138,7 +7249,7 @@ declare module "@polkadot/types/lookup" { readonly backingGroup: u32; } - /** @name PolkadotRuntimeParachainsInclusionPalletError (668) */ + /** @name PolkadotRuntimeParachainsInclusionPalletError (680) */ interface PolkadotRuntimeParachainsInclusionPalletError extends Enum { readonly isValidatorIndexOutOfBounds: boolean; readonly isUnscheduledCandidate: boolean; @@ -7177,7 +7288,7 @@ declare module "@polkadot/types/lookup" { | "ParaHeadMismatch"; } - /** @name PolkadotPrimitivesV8ScrapedOnChainVotes (669) */ + /** @name PolkadotPrimitivesV8ScrapedOnChainVotes (681) */ interface PolkadotPrimitivesV8ScrapedOnChainVotes extends Struct { readonly session: u32; readonly backingValidatorsPerCandidate: Vec< @@ -7186,7 +7297,7 @@ declare module "@polkadot/types/lookup" { readonly disputes: Vec; } - /** @name PolkadotRuntimeParachainsParasInherentPalletError (674) */ + /** @name PolkadotRuntimeParachainsParasInherentPalletError (686) */ interface PolkadotRuntimeParachainsParasInherentPalletError extends Enum { readonly isTooManyInclusionInherents: boolean; readonly isInvalidParentHeader: boolean; @@ -7201,7 +7312,7 @@ declare module "@polkadot/types/lookup" { | "UnscheduledCandidate"; } - /** @name PolkadotRuntimeParachainsSchedulerPalletCoreOccupied (677) */ + /** @name PolkadotRuntimeParachainsSchedulerPalletCoreOccupied (689) */ interface PolkadotRuntimeParachainsSchedulerPalletCoreOccupied extends Enum { readonly isFree: boolean; readonly isParas: boolean; @@ -7209,14 +7320,14 @@ declare module "@polkadot/types/lookup" { readonly type: "Free" | "Paras"; } - /** @name PolkadotRuntimeParachainsSchedulerPalletParasEntry (678) */ + /** @name PolkadotRuntimeParachainsSchedulerPalletParasEntry (690) */ interface PolkadotRuntimeParachainsSchedulerPalletParasEntry extends Struct { readonly assignment: PolkadotRuntimeParachainsSchedulerCommonAssignment; readonly availabilityTimeouts: u32; readonly ttl: u32; } - /** @name PolkadotRuntimeParachainsSchedulerCommonAssignment (679) */ + /** @name PolkadotRuntimeParachainsSchedulerCommonAssignment (691) */ interface PolkadotRuntimeParachainsSchedulerCommonAssignment extends Enum { readonly isPool: boolean; readonly asPool: { @@ -7228,7 +7339,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Pool" | "Bulk"; } - /** @name PolkadotRuntimeParachainsParasPvfCheckActiveVoteState (684) */ + /** @name PolkadotRuntimeParachainsParasPvfCheckActiveVoteState (696) */ interface PolkadotRuntimeParachainsParasPvfCheckActiveVoteState extends Struct { readonly votesAccept: BitVec; readonly votesReject: BitVec; @@ -7237,7 +7348,7 @@ declare module "@polkadot/types/lookup" { readonly causes: Vec; } - /** @name PolkadotRuntimeParachainsParasPvfCheckCause (686) */ + /** @name PolkadotRuntimeParachainsParasPvfCheckCause (698) */ interface PolkadotRuntimeParachainsParasPvfCheckCause extends Enum { readonly isOnboarding: boolean; readonly asOnboarding: u32; @@ -7250,14 +7361,14 @@ declare module "@polkadot/types/lookup" { readonly type: "Onboarding" | "Upgrade"; } - /** @name PolkadotRuntimeParachainsParasUpgradeStrategy (687) */ + /** @name PolkadotRuntimeParachainsParasUpgradeStrategy (699) */ interface PolkadotRuntimeParachainsParasUpgradeStrategy extends Enum { readonly isSetGoAheadSignal: boolean; readonly isApplyAtExpectedBlock: boolean; readonly type: "SetGoAheadSignal" | "ApplyAtExpectedBlock"; } - /** @name PolkadotRuntimeParachainsParasParaLifecycle (689) */ + /** @name PolkadotRuntimeParachainsParasParaLifecycle (701) */ interface PolkadotRuntimeParachainsParasParaLifecycle extends Enum { readonly isOnboarding: boolean; readonly isParathread: boolean; @@ -7276,32 +7387,32 @@ declare module "@polkadot/types/lookup" { | "OffboardingParachain"; } - /** @name PolkadotRuntimeParachainsParasParaPastCodeMeta (691) */ + /** @name PolkadotRuntimeParachainsParasParaPastCodeMeta (703) */ interface PolkadotRuntimeParachainsParasParaPastCodeMeta extends Struct { readonly upgradeTimes: Vec; readonly lastPruned: Option; } - /** @name PolkadotRuntimeParachainsParasReplacementTimes (693) */ + /** @name PolkadotRuntimeParachainsParasReplacementTimes (705) */ interface PolkadotRuntimeParachainsParasReplacementTimes extends Struct { readonly expectedAt: u32; readonly activatedAt: u32; } - /** @name PolkadotPrimitivesV8UpgradeGoAhead (695) */ + /** @name PolkadotPrimitivesV8UpgradeGoAhead (707) */ interface PolkadotPrimitivesV8UpgradeGoAhead extends Enum { readonly isAbort: boolean; readonly isGoAhead: boolean; readonly type: "Abort" | "GoAhead"; } - /** @name PolkadotPrimitivesV8UpgradeRestriction (696) */ + /** @name PolkadotPrimitivesV8UpgradeRestriction (708) */ interface PolkadotPrimitivesV8UpgradeRestriction extends Enum { readonly isPresent: boolean; readonly type: "Present"; } - /** @name PolkadotRuntimeParachainsParasPalletError (697) */ + /** @name PolkadotRuntimeParachainsParasPalletError (709) */ interface PolkadotRuntimeParachainsParasPalletError extends Enum { readonly isNotRegistered: boolean; readonly isCannotOnboard: boolean; @@ -7332,20 +7443,20 @@ declare module "@polkadot/types/lookup" { | "InvalidCode"; } - /** @name PolkadotRuntimeParachainsInitializerBufferedSessionChange (699) */ + /** @name PolkadotRuntimeParachainsInitializerBufferedSessionChange (711) */ interface PolkadotRuntimeParachainsInitializerBufferedSessionChange extends Struct { readonly validators: Vec; readonly queued: Vec; readonly sessionIndex: u32; } - /** @name PolkadotCorePrimitivesInboundDownwardMessage (701) */ + /** @name PolkadotCorePrimitivesInboundDownwardMessage (713) */ interface PolkadotCorePrimitivesInboundDownwardMessage extends Struct { readonly sentAt: u32; readonly msg: Bytes; } - /** @name PolkadotRuntimeParachainsHrmpHrmpOpenChannelRequest (702) */ + /** @name PolkadotRuntimeParachainsHrmpHrmpOpenChannelRequest (714) */ interface PolkadotRuntimeParachainsHrmpHrmpOpenChannelRequest extends Struct { readonly confirmed: bool; readonly age: u32; @@ -7355,7 +7466,7 @@ declare module "@polkadot/types/lookup" { readonly maxTotalSize: u32; } - /** @name PolkadotRuntimeParachainsHrmpHrmpChannel (704) */ + /** @name PolkadotRuntimeParachainsHrmpHrmpChannel (716) */ interface PolkadotRuntimeParachainsHrmpHrmpChannel extends Struct { readonly maxCapacity: u32; readonly maxTotalSize: u32; @@ -7367,13 +7478,13 @@ declare module "@polkadot/types/lookup" { readonly recipientDeposit: u128; } - /** @name PolkadotCorePrimitivesInboundHrmpMessage (706) */ + /** @name PolkadotCorePrimitivesInboundHrmpMessage (718) */ interface PolkadotCorePrimitivesInboundHrmpMessage extends Struct { readonly sentAt: u32; readonly data: Bytes; } - /** @name PolkadotRuntimeParachainsHrmpPalletError (709) */ + /** @name PolkadotRuntimeParachainsHrmpPalletError (721) */ interface PolkadotRuntimeParachainsHrmpPalletError extends Enum { readonly isOpenHrmpChannelToSelf: boolean; readonly isOpenHrmpChannelInvalidRecipient: boolean; @@ -7418,7 +7529,7 @@ declare module "@polkadot/types/lookup" { | "ChannelCreationNotAuthorized"; } - /** @name PolkadotPrimitivesV8SessionInfo (711) */ + /** @name PolkadotPrimitivesV8SessionInfo (723) */ interface PolkadotPrimitivesV8SessionInfo extends Struct { readonly activeValidatorIndices: Vec; readonly randomSeed: U8aFixed; @@ -7435,13 +7546,13 @@ declare module "@polkadot/types/lookup" { readonly neededApprovals: u32; } - /** @name PolkadotPrimitivesV8IndexedVecValidatorIndex (712) */ + /** @name PolkadotPrimitivesV8IndexedVecValidatorIndex (724) */ interface PolkadotPrimitivesV8IndexedVecValidatorIndex extends Vec {} - /** @name PolkadotPrimitivesV8IndexedVecGroupIndex (713) */ + /** @name PolkadotPrimitivesV8IndexedVecGroupIndex (725) */ interface PolkadotPrimitivesV8IndexedVecGroupIndex extends Vec> {} - /** @name PolkadotPrimitivesV8DisputeState (715) */ + /** @name PolkadotPrimitivesV8DisputeState (727) */ interface PolkadotPrimitivesV8DisputeState extends Struct { readonly validatorsFor: BitVec; readonly validatorsAgainst: BitVec; @@ -7449,7 +7560,7 @@ declare module "@polkadot/types/lookup" { readonly concludedAt: Option; } - /** @name PolkadotRuntimeParachainsDisputesPalletError (717) */ + /** @name PolkadotRuntimeParachainsDisputesPalletError (729) */ interface PolkadotRuntimeParachainsDisputesPalletError extends Enum { readonly isDuplicateDisputeStatementSets: boolean; readonly isAncientDisputeStatement: boolean; @@ -7472,13 +7583,13 @@ declare module "@polkadot/types/lookup" { | "UnconfirmedDispute"; } - /** @name PolkadotPrimitivesV8SlashingPendingSlashes (718) */ + /** @name PolkadotPrimitivesV8SlashingPendingSlashes (730) */ interface PolkadotPrimitivesV8SlashingPendingSlashes extends Struct { readonly keys_: BTreeMap; readonly kind: PolkadotPrimitivesV8SlashingSlashingOffenceKind; } - /** @name PolkadotRuntimeParachainsDisputesSlashingPalletError (722) */ + /** @name PolkadotRuntimeParachainsDisputesSlashingPalletError (734) */ interface PolkadotRuntimeParachainsDisputesSlashingPalletError extends Enum { readonly isInvalidKeyOwnershipProof: boolean; readonly isInvalidSessionIndex: boolean; @@ -7495,7 +7606,7 @@ declare module "@polkadot/types/lookup" { | "DuplicateSlashingReport"; } - /** @name PalletMessageQueueBookState (723) */ + /** @name PalletMessageQueueBookState (735) */ interface PalletMessageQueueBookState extends Struct { readonly begin: u32; readonly end: u32; @@ -7505,13 +7616,13 @@ declare module "@polkadot/types/lookup" { readonly size_: u64; } - /** @name PalletMessageQueueNeighbours (725) */ + /** @name PalletMessageQueueNeighbours (737) */ interface PalletMessageQueueNeighbours extends Struct { readonly prev: DancelightRuntimeAggregateMessageOrigin; readonly next: DancelightRuntimeAggregateMessageOrigin; } - /** @name PalletMessageQueuePage (727) */ + /** @name PalletMessageQueuePage (739) */ interface PalletMessageQueuePage extends Struct { readonly remaining: u32; readonly remainingSize: u32; @@ -7521,7 +7632,7 @@ declare module "@polkadot/types/lookup" { readonly heap: Bytes; } - /** @name PalletMessageQueueError (729) */ + /** @name PalletMessageQueueError (741) */ interface PalletMessageQueueError extends Enum { readonly isNotReapable: boolean; readonly isNoPage: boolean; @@ -7544,13 +7655,13 @@ declare module "@polkadot/types/lookup" { | "RecursiveDisallowed"; } - /** @name PolkadotRuntimeParachainsOnDemandTypesCoreAffinityCount (730) */ + /** @name PolkadotRuntimeParachainsOnDemandTypesCoreAffinityCount (742) */ interface PolkadotRuntimeParachainsOnDemandTypesCoreAffinityCount extends Struct { readonly coreIndex: u32; readonly count: u32; } - /** @name PolkadotRuntimeParachainsOnDemandTypesQueueStatusType (731) */ + /** @name PolkadotRuntimeParachainsOnDemandTypesQueueStatusType (743) */ interface PolkadotRuntimeParachainsOnDemandTypesQueueStatusType extends Struct { readonly traffic: u128; readonly nextIndex: u32; @@ -7558,33 +7669,33 @@ declare module "@polkadot/types/lookup" { readonly freedIndices: BinaryHeapReverseQueueIndex; } - /** @name BinaryHeapReverseQueueIndex (733) */ + /** @name BinaryHeapReverseQueueIndex (745) */ interface BinaryHeapReverseQueueIndex extends Vec {} - /** @name BinaryHeapEnqueuedOrder (736) */ + /** @name BinaryHeapEnqueuedOrder (748) */ interface BinaryHeapEnqueuedOrder extends Vec {} - /** @name PolkadotRuntimeParachainsOnDemandTypesEnqueuedOrder (737) */ + /** @name PolkadotRuntimeParachainsOnDemandTypesEnqueuedOrder (749) */ interface PolkadotRuntimeParachainsOnDemandTypesEnqueuedOrder extends Struct { readonly paraId: u32; readonly idx: u32; } - /** @name PolkadotRuntimeParachainsOnDemandPalletError (741) */ + /** @name PolkadotRuntimeParachainsOnDemandPalletError (753) */ interface PolkadotRuntimeParachainsOnDemandPalletError extends Enum { readonly isQueueFull: boolean; readonly isSpotPriceHigherThanMaxAmount: boolean; readonly type: "QueueFull" | "SpotPriceHigherThanMaxAmount"; } - /** @name PolkadotRuntimeCommonParasRegistrarParaInfo (742) */ + /** @name PolkadotRuntimeCommonParasRegistrarParaInfo (754) */ interface PolkadotRuntimeCommonParasRegistrarParaInfo extends Struct { readonly manager: AccountId32; readonly deposit: u128; readonly locked: Option; } - /** @name PolkadotRuntimeCommonParasRegistrarPalletError (744) */ + /** @name PolkadotRuntimeCommonParasRegistrarPalletError (756) */ interface PolkadotRuntimeCommonParasRegistrarPalletError extends Enum { readonly isNotRegistered: boolean; readonly isAlreadyRegistered: boolean; @@ -7617,33 +7728,33 @@ declare module "@polkadot/types/lookup" { | "CannotSwap"; } - /** @name PalletUtilityError (745) */ + /** @name PalletUtilityError (757) */ interface PalletUtilityError extends Enum { readonly isTooManyCalls: boolean; readonly type: "TooManyCalls"; } - /** @name PalletIdentityRegistration (747) */ + /** @name PalletIdentityRegistration (759) */ interface PalletIdentityRegistration extends Struct { readonly judgements: Vec>; readonly deposit: u128; readonly info: PalletIdentityLegacyIdentityInfo; } - /** @name PalletIdentityRegistrarInfo (756) */ + /** @name PalletIdentityRegistrarInfo (768) */ interface PalletIdentityRegistrarInfo extends Struct { readonly account: AccountId32; readonly fee: u128; readonly fields: u64; } - /** @name PalletIdentityAuthorityProperties (758) */ + /** @name PalletIdentityAuthorityProperties (770) */ interface PalletIdentityAuthorityProperties extends Struct { readonly suffix: Bytes; readonly allocation: u32; } - /** @name PalletIdentityError (760) */ + /** @name PalletIdentityError (772) */ interface PalletIdentityError extends Enum { readonly isTooManySubAccounts: boolean; readonly isNotFound: boolean; @@ -7700,7 +7811,7 @@ declare module "@polkadot/types/lookup" { | "NotExpired"; } - /** @name PalletSchedulerScheduled (763) */ + /** @name PalletSchedulerScheduled (775) */ interface PalletSchedulerScheduled extends Struct { readonly maybeId: Option; readonly priority: u8; @@ -7709,14 +7820,14 @@ declare module "@polkadot/types/lookup" { readonly origin: DancelightRuntimeOriginCaller; } - /** @name PalletSchedulerRetryConfig (765) */ + /** @name PalletSchedulerRetryConfig (777) */ interface PalletSchedulerRetryConfig extends Struct { readonly totalRetries: u8; readonly remaining: u8; readonly period: u32; } - /** @name PalletSchedulerError (766) */ + /** @name PalletSchedulerError (778) */ interface PalletSchedulerError extends Enum { readonly isFailedToSchedule: boolean; readonly isNotFound: boolean; @@ -7726,21 +7837,21 @@ declare module "@polkadot/types/lookup" { readonly type: "FailedToSchedule" | "NotFound" | "TargetBlockNumberInPast" | "RescheduleNoChange" | "Named"; } - /** @name PalletProxyProxyDefinition (769) */ + /** @name PalletProxyProxyDefinition (781) */ interface PalletProxyProxyDefinition extends Struct { readonly delegate: AccountId32; readonly proxyType: DancelightRuntimeProxyType; readonly delay: u32; } - /** @name PalletProxyAnnouncement (773) */ + /** @name PalletProxyAnnouncement (785) */ interface PalletProxyAnnouncement extends Struct { readonly real: AccountId32; readonly callHash: H256; readonly height: u32; } - /** @name PalletProxyError (775) */ + /** @name PalletProxyError (787) */ interface PalletProxyError extends Enum { readonly isTooMany: boolean; readonly isNotFound: boolean; @@ -7761,7 +7872,7 @@ declare module "@polkadot/types/lookup" { | "NoSelfProxy"; } - /** @name PalletMultisigMultisig (777) */ + /** @name PalletMultisigMultisig (789) */ interface PalletMultisigMultisig extends Struct { readonly when: PalletMultisigTimepoint; readonly deposit: u128; @@ -7769,7 +7880,7 @@ declare module "@polkadot/types/lookup" { readonly approvals: Vec; } - /** @name PalletMultisigError (779) */ + /** @name PalletMultisigError (791) */ interface PalletMultisigError extends Enum { readonly isMinimumThreshold: boolean; readonly isAlreadyApproved: boolean; @@ -7802,7 +7913,7 @@ declare module "@polkadot/types/lookup" { | "AlreadyStored"; } - /** @name PalletPreimageOldRequestStatus (780) */ + /** @name PalletPreimageOldRequestStatus (792) */ interface PalletPreimageOldRequestStatus extends Enum { readonly isUnrequested: boolean; readonly asUnrequested: { @@ -7818,7 +7929,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Unrequested" | "Requested"; } - /** @name PalletPreimageRequestStatus (783) */ + /** @name PalletPreimageRequestStatus (795) */ interface PalletPreimageRequestStatus extends Enum { readonly isUnrequested: boolean; readonly asUnrequested: { @@ -7834,7 +7945,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Unrequested" | "Requested"; } - /** @name PalletPreimageError (788) */ + /** @name PalletPreimageError (800) */ interface PalletPreimageError extends Enum { readonly isTooBig: boolean; readonly isAlreadyNoted: boolean; @@ -7855,7 +7966,7 @@ declare module "@polkadot/types/lookup" { | "TooFew"; } - /** @name PalletAssetRateError (789) */ + /** @name PalletAssetRateError (801) */ interface PalletAssetRateError extends Enum { readonly isUnknownAssetKind: boolean; readonly isAlreadyExists: boolean; @@ -7863,7 +7974,7 @@ declare module "@polkadot/types/lookup" { readonly type: "UnknownAssetKind" | "AlreadyExists" | "Overflow"; } - /** @name PalletXcmQueryStatus (790) */ + /** @name PalletXcmQueryStatus (802) */ interface PalletXcmQueryStatus extends Enum { readonly isPending: boolean; readonly asPending: { @@ -7885,7 +7996,7 @@ declare module "@polkadot/types/lookup" { readonly type: "Pending" | "VersionNotifier" | "Ready"; } - /** @name XcmVersionedResponse (794) */ + /** @name XcmVersionedResponse (806) */ interface XcmVersionedResponse extends Enum { readonly isV2: boolean; readonly asV2: XcmV2Response; @@ -7896,7 +8007,7 @@ declare module "@polkadot/types/lookup" { readonly type: "V2" | "V3" | "V4"; } - /** @name PalletXcmVersionMigrationStage (800) */ + /** @name PalletXcmVersionMigrationStage (812) */ interface PalletXcmVersionMigrationStage extends Enum { readonly isMigrateSupportedVersion: boolean; readonly isMigrateVersionNotifiers: boolean; @@ -7910,7 +8021,7 @@ declare module "@polkadot/types/lookup" { | "MigrateAndNotifyOldTargets"; } - /** @name PalletXcmRemoteLockedFungibleRecord (802) */ + /** @name PalletXcmRemoteLockedFungibleRecord (814) */ interface PalletXcmRemoteLockedFungibleRecord extends Struct { readonly amount: u128; readonly owner: XcmVersionedLocation; @@ -7918,7 +8029,7 @@ declare module "@polkadot/types/lookup" { readonly consumers: Vec>; } - /** @name PalletXcmError (809) */ + /** @name PalletXcmError (821) */ interface PalletXcmError extends Enum { readonly isUnreachable: boolean; readonly isSendFailure: boolean; @@ -7971,7 +8082,81 @@ declare module "@polkadot/types/lookup" { | "LocalExecutionIncomplete"; } - /** @name SnowbridgePalletOutboundQueueCommittedMessage (811) */ + /** @name SnowbridgePalletInboundQueueError (822) */ + interface SnowbridgePalletInboundQueueError extends Enum { + readonly isInvalidGateway: boolean; + readonly isInvalidEnvelope: boolean; + readonly isInvalidNonce: boolean; + readonly isInvalidPayload: boolean; + readonly isInvalidChannel: boolean; + readonly isMaxNonceReached: boolean; + readonly isInvalidAccountConversion: boolean; + readonly isHalted: boolean; + readonly isVerification: boolean; + readonly asVerification: SnowbridgeCoreInboundVerificationError; + readonly isSend: boolean; + readonly asSend: SnowbridgePalletInboundQueueSendError; + readonly isConvertMessage: boolean; + readonly asConvertMessage: SnowbridgeRouterPrimitivesInboundConvertMessageError; + readonly type: + | "InvalidGateway" + | "InvalidEnvelope" + | "InvalidNonce" + | "InvalidPayload" + | "InvalidChannel" + | "MaxNonceReached" + | "InvalidAccountConversion" + | "Halted" + | "Verification" + | "Send" + | "ConvertMessage"; + } + + /** @name SnowbridgeCoreInboundVerificationError (823) */ + interface SnowbridgeCoreInboundVerificationError extends Enum { + readonly isHeaderNotFound: boolean; + readonly isLogNotFound: boolean; + readonly isInvalidLog: boolean; + readonly isInvalidProof: boolean; + readonly isInvalidExecutionProof: boolean; + readonly type: "HeaderNotFound" | "LogNotFound" | "InvalidLog" | "InvalidProof" | "InvalidExecutionProof"; + } + + /** @name SnowbridgePalletInboundQueueSendError (824) */ + interface SnowbridgePalletInboundQueueSendError extends Enum { + readonly isNotApplicable: boolean; + readonly isNotRoutable: boolean; + readonly isTransport: boolean; + readonly isDestinationUnsupported: boolean; + readonly isExceedsMaxMessageSize: boolean; + readonly isMissingArgument: boolean; + readonly isFees: boolean; + readonly type: + | "NotApplicable" + | "NotRoutable" + | "Transport" + | "DestinationUnsupported" + | "ExceedsMaxMessageSize" + | "MissingArgument" + | "Fees"; + } + + /** @name SnowbridgeRouterPrimitivesInboundConvertMessageError (825) */ + interface SnowbridgeRouterPrimitivesInboundConvertMessageError extends Enum { + readonly isUnsupportedVersion: boolean; + readonly isInvalidDestination: boolean; + readonly isInvalidToken: boolean; + readonly isUnsupportedFeeAsset: boolean; + readonly isCannotReanchor: boolean; + readonly type: + | "UnsupportedVersion" + | "InvalidDestination" + | "InvalidToken" + | "UnsupportedFeeAsset" + | "CannotReanchor"; + } + + /** @name SnowbridgePalletOutboundQueueCommittedMessage (827) */ interface SnowbridgePalletOutboundQueueCommittedMessage extends Struct { readonly channelId: SnowbridgeCoreChannelId; readonly nonce: Compact; @@ -7983,7 +8168,7 @@ declare module "@polkadot/types/lookup" { readonly id: H256; } - /** @name SnowbridgePalletOutboundQueueError (812) */ + /** @name SnowbridgePalletOutboundQueueError (828) */ interface SnowbridgePalletOutboundQueueError extends Enum { readonly isMessageTooLarge: boolean; readonly isHalted: boolean; @@ -7991,13 +8176,13 @@ declare module "@polkadot/types/lookup" { readonly type: "MessageTooLarge" | "Halted" | "InvalidChannel"; } - /** @name SnowbridgeCoreChannel (813) */ + /** @name SnowbridgeCoreChannel (829) */ interface SnowbridgeCoreChannel extends Struct { readonly agentId: H256; readonly paraId: u32; } - /** @name SnowbridgePalletSystemError (814) */ + /** @name SnowbridgePalletSystemError (830) */ interface SnowbridgePalletSystemError extends Enum { readonly isLocationConversionFailed: boolean; readonly isAgentAlreadyCreated: boolean; @@ -8025,7 +8210,7 @@ declare module "@polkadot/types/lookup" { | "InvalidUpgradeParameters"; } - /** @name SnowbridgeCoreOutboundSendError (815) */ + /** @name SnowbridgeCoreOutboundSendError (831) */ interface SnowbridgeCoreOutboundSendError extends Enum { readonly isMessageTooLarge: boolean; readonly isHalted: boolean; @@ -8033,7 +8218,7 @@ declare module "@polkadot/types/lookup" { readonly type: "MessageTooLarge" | "Halted" | "InvalidChannel"; } - /** @name PalletMigrationsError (816) */ + /** @name PalletMigrationsError (832) */ interface PalletMigrationsError extends Enum { readonly isPreimageMissing: boolean; readonly isWrongUpperBound: boolean; @@ -8042,7 +8227,7 @@ declare module "@polkadot/types/lookup" { readonly type: "PreimageMissing" | "WrongUpperBound" | "PreimageIsTooBig" | "PreimageAlreadyExists"; } - /** @name PalletBeefyError (820) */ + /** @name PalletBeefyError (836) */ interface PalletBeefyError extends Enum { readonly isInvalidKeyOwnershipProof: boolean; readonly isInvalidDoubleVotingProof: boolean; @@ -8061,50 +8246,50 @@ declare module "@polkadot/types/lookup" { | "InvalidConfiguration"; } - /** @name SpConsensusBeefyMmrBeefyAuthoritySet (821) */ + /** @name SpConsensusBeefyMmrBeefyAuthoritySet (837) */ interface SpConsensusBeefyMmrBeefyAuthoritySet extends Struct { readonly id: u64; readonly len: u32; readonly keysetCommitment: H256; } - /** @name SnowbridgeBeaconPrimitivesCompactBeaconState (822) */ + /** @name SnowbridgeBeaconPrimitivesCompactBeaconState (838) */ interface SnowbridgeBeaconPrimitivesCompactBeaconState extends Struct { readonly slot: Compact; readonly blockRootsRoot: H256; } - /** @name SnowbridgeBeaconPrimitivesSyncCommitteePrepared (823) */ + /** @name SnowbridgeBeaconPrimitivesSyncCommitteePrepared (839) */ interface SnowbridgeBeaconPrimitivesSyncCommitteePrepared extends Struct { readonly root: H256; readonly pubkeys: Vec; readonly aggregatePubkey: SnowbridgeMilagroBlsKeysPublicKey; } - /** @name SnowbridgeMilagroBlsKeysPublicKey (825) */ + /** @name SnowbridgeMilagroBlsKeysPublicKey (841) */ interface SnowbridgeMilagroBlsKeysPublicKey extends Struct { readonly point: SnowbridgeAmclBls381Ecp; } - /** @name SnowbridgeAmclBls381Ecp (826) */ + /** @name SnowbridgeAmclBls381Ecp (842) */ interface SnowbridgeAmclBls381Ecp extends Struct { readonly x: SnowbridgeAmclBls381Fp; readonly y: SnowbridgeAmclBls381Fp; readonly z: SnowbridgeAmclBls381Fp; } - /** @name SnowbridgeAmclBls381Fp (827) */ + /** @name SnowbridgeAmclBls381Fp (843) */ interface SnowbridgeAmclBls381Fp extends Struct { readonly x: SnowbridgeAmclBls381Big; readonly xes: i32; } - /** @name SnowbridgeAmclBls381Big (828) */ + /** @name SnowbridgeAmclBls381Big (844) */ interface SnowbridgeAmclBls381Big extends Struct { readonly w: Vec; } - /** @name SnowbridgeBeaconPrimitivesForkVersions (831) */ + /** @name SnowbridgeBeaconPrimitivesForkVersions (847) */ interface SnowbridgeBeaconPrimitivesForkVersions extends Struct { readonly genesis: SnowbridgeBeaconPrimitivesFork; readonly altair: SnowbridgeBeaconPrimitivesFork; @@ -8113,13 +8298,13 @@ declare module "@polkadot/types/lookup" { readonly deneb: SnowbridgeBeaconPrimitivesFork; } - /** @name SnowbridgeBeaconPrimitivesFork (832) */ + /** @name SnowbridgeBeaconPrimitivesFork (848) */ interface SnowbridgeBeaconPrimitivesFork extends Struct { readonly version: U8aFixed; readonly epoch: u64; } - /** @name SnowbridgePalletEthereumClientError (833) */ + /** @name SnowbridgePalletEthereumClientError (849) */ interface SnowbridgePalletEthereumClientError extends Enum { readonly isSkippedSyncCommitteePeriod: boolean; readonly isSyncCommitteeUpdateRequired: boolean; @@ -8175,7 +8360,7 @@ declare module "@polkadot/types/lookup" { | "Halted"; } - /** @name SnowbridgeBeaconPrimitivesBlsBlsError (834) */ + /** @name SnowbridgeBeaconPrimitivesBlsBlsError (850) */ interface SnowbridgeBeaconPrimitivesBlsBlsError extends Enum { readonly isInvalidSignature: boolean; readonly isInvalidPublicKey: boolean; @@ -8188,7 +8373,7 @@ declare module "@polkadot/types/lookup" { | "SignatureVerificationFailed"; } - /** @name PolkadotRuntimeCommonParasSudoWrapperPalletError (835) */ + /** @name PolkadotRuntimeCommonParasSudoWrapperPalletError (851) */ interface PolkadotRuntimeCommonParasSudoWrapperPalletError extends Enum { readonly isParaDoesntExist: boolean; readonly isParaAlreadyExists: boolean; @@ -8211,45 +8396,45 @@ declare module "@polkadot/types/lookup" { | "TooManyCores"; } - /** @name PalletSudoError (836) */ + /** @name PalletSudoError (852) */ interface PalletSudoError extends Enum { readonly isRequireSudo: boolean; readonly type: "RequireSudo"; } - /** @name FrameSystemExtensionsCheckNonZeroSender (839) */ + /** @name FrameSystemExtensionsCheckNonZeroSender (855) */ type FrameSystemExtensionsCheckNonZeroSender = Null; - /** @name FrameSystemExtensionsCheckSpecVersion (840) */ + /** @name FrameSystemExtensionsCheckSpecVersion (856) */ type FrameSystemExtensionsCheckSpecVersion = Null; - /** @name FrameSystemExtensionsCheckTxVersion (841) */ + /** @name FrameSystemExtensionsCheckTxVersion (857) */ type FrameSystemExtensionsCheckTxVersion = Null; - /** @name FrameSystemExtensionsCheckGenesis (842) */ + /** @name FrameSystemExtensionsCheckGenesis (858) */ type FrameSystemExtensionsCheckGenesis = Null; - /** @name FrameSystemExtensionsCheckNonce (845) */ + /** @name FrameSystemExtensionsCheckNonce (861) */ interface FrameSystemExtensionsCheckNonce extends Compact {} - /** @name FrameSystemExtensionsCheckWeight (846) */ + /** @name FrameSystemExtensionsCheckWeight (862) */ type FrameSystemExtensionsCheckWeight = Null; - /** @name PalletTransactionPaymentChargeTransactionPayment (847) */ + /** @name PalletTransactionPaymentChargeTransactionPayment (863) */ interface PalletTransactionPaymentChargeTransactionPayment extends Compact {} - /** @name FrameMetadataHashExtensionCheckMetadataHash (848) */ + /** @name FrameMetadataHashExtensionCheckMetadataHash (864) */ interface FrameMetadataHashExtensionCheckMetadataHash extends Struct { readonly mode: FrameMetadataHashExtensionMode; } - /** @name FrameMetadataHashExtensionMode (849) */ + /** @name FrameMetadataHashExtensionMode (865) */ interface FrameMetadataHashExtensionMode extends Enum { readonly isDisabled: boolean; readonly isEnabled: boolean; readonly type: "Disabled" | "Enabled"; } - /** @name DancelightRuntimeRuntime (850) */ + /** @name DancelightRuntimeRuntime (866) */ type DancelightRuntimeRuntime = Null; } // declare module From f961c841ca8a87afb1c2f00ae7908543b506f7fc Mon Sep 17 00:00:00 2001 From: Parth Desai Date: Wed, 27 Nov 2024 13:00:10 +0400 Subject: [PATCH 09/10] add doc comments --- primitives/bridge/src/symbiotic_message_processor.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/primitives/bridge/src/symbiotic_message_processor.rs b/primitives/bridge/src/symbiotic_message_processor.rs index 635e7e2f6..e8c18feb5 100644 --- a/primitives/bridge/src/symbiotic_message_processor.rs +++ b/primitives/bridge/src/symbiotic_message_processor.rs @@ -29,6 +29,7 @@ use sp_std::vec::Vec; /// indeed send a message intended for this processor. pub const MAGIC_BYTES: [u8; 4] = [112, 21, 0, 56]; +/// Payload is the whole data we expect to receive from the relayer #[derive(Encode, Decode)] pub struct Payload where @@ -38,6 +39,7 @@ where pub message: Message, } +/// Actual message inside the payload #[derive(Encode, Decode)] pub enum Message where @@ -46,6 +48,7 @@ where V1(InboundCommand), } +/// Command to be executed by this message processor #[derive(Encode, Decode)] pub enum InboundCommand where From 95fb0fbc6e6aaf892f36603ff0a44dc0bebfb677 Mon Sep 17 00:00:00 2001 From: Parth Desai Date: Wed, 27 Nov 2024 19:05:41 +0400 Subject: [PATCH 10/10] add doc comments --- .../runtime/dancelight/src/bridge_to_ethereum_config.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/solo-chains/runtime/dancelight/src/bridge_to_ethereum_config.rs b/solo-chains/runtime/dancelight/src/bridge_to_ethereum_config.rs index af52fdfbc..1b8761c8a 100644 --- a/solo-chains/runtime/dancelight/src/bridge_to_ethereum_config.rs +++ b/solo-chains/runtime/dancelight/src/bridge_to_ethereum_config.rs @@ -229,8 +229,10 @@ impl snowbridge_pallet_inbound_queue::Config for Runtime { #[cfg(test)] type Verifier = test_helpers::MockVerifier; type Token = Balances; + // TODO: Revisit this when we enable xcmp messages type XcmSender = DoNothingRouter; type GatewayAddress = EthereumGatewayAddress; + // TODO: Revisit this when we enable xcmp messages type MessageConverter = DoNothingConvertMessage; type ChannelLookup = EthereumSystem; type PricingParameters = EthereumSystem; @@ -239,6 +241,7 @@ impl snowbridge_pallet_inbound_queue::Config for Runtime { type Helper = benchmark_helper::EthSystemBenchHelper; type WeightToFee = WeightToFee; type LengthToFee = ConstantMultiplier; + // TODO: Revisit this when we enable xcmp messages type MaxMessageSize = ConstU32<2048>; type AssetTransactor = ::AssetTransactor; #[cfg(not(feature = "runtime-benchmarks"))]