diff --git a/Cargo.lock b/Cargo.lock index 5b73e81c23..21c0dab88e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -787,7 +787,7 @@ dependencies = [ [[package]] name = "binary-merkle-tree" version = "15.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "hash-db", "log", @@ -1017,7 +1017,7 @@ dependencies = [ [[package]] name = "bp-xcm-bridge-hub-router" version = "0.14.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "parity-scale-codec", "scale-info", @@ -1754,7 +1754,7 @@ dependencies = [ [[package]] name = "cumulus-client-cli" version = "0.17.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "clap", "parity-scale-codec", @@ -1771,7 +1771,7 @@ dependencies = [ [[package]] name = "cumulus-client-collator" version = "0.17.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "cumulus-client-consensus-common", "cumulus-client-network", @@ -1794,7 +1794,7 @@ dependencies = [ [[package]] name = "cumulus-client-consensus-common" version = "0.17.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "async-trait", "cumulus-client-pov-recovery", @@ -1824,7 +1824,7 @@ dependencies = [ [[package]] name = "cumulus-client-consensus-proposer" version = "0.15.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "anyhow", "async-trait", @@ -1839,7 +1839,7 @@ dependencies = [ [[package]] name = "cumulus-client-consensus-relay-chain" version = "0.17.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "async-trait", "cumulus-client-consensus-common", @@ -1862,7 +1862,7 @@ dependencies = [ [[package]] name = "cumulus-client-network" version = "0.17.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "async-trait", "cumulus-relay-chain-interface", @@ -1888,7 +1888,7 @@ dependencies = [ [[package]] name = "cumulus-client-parachain-inherent" version = "0.11.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "async-trait", "cumulus-primitives-core", @@ -1910,7 +1910,7 @@ dependencies = [ [[package]] name = "cumulus-client-pov-recovery" version = "0.17.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "async-trait", "cumulus-primitives-core", @@ -1936,7 +1936,7 @@ dependencies = [ [[package]] name = "cumulus-client-service" version = "0.17.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "cumulus-client-cli", "cumulus-client-collator", @@ -1973,7 +1973,7 @@ dependencies = [ [[package]] name = "cumulus-pallet-dmp-queue" version = "0.16.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "cumulus-primitives-core", "frame-benchmarking", @@ -1990,7 +1990,7 @@ dependencies = [ [[package]] name = "cumulus-pallet-parachain-system" version = "0.16.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "bytes", "cumulus-pallet-parachain-system-proc-macro", @@ -2026,7 +2026,7 @@ dependencies = [ [[package]] name = "cumulus-pallet-parachain-system-proc-macro" version = "0.6.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", @@ -2037,7 +2037,7 @@ dependencies = [ [[package]] name = "cumulus-pallet-xcm" version = "0.16.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "cumulus-primitives-core", "frame-support", @@ -2052,7 +2052,7 @@ dependencies = [ [[package]] name = "cumulus-pallet-xcmp-queue" version = "0.16.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "bounded-collections", "bp-xcm-bridge-hub-router", @@ -2077,7 +2077,7 @@ dependencies = [ [[package]] name = "cumulus-primitives-core" version = "0.15.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "parity-scale-codec", "polkadot-core-primitives", @@ -2093,7 +2093,7 @@ dependencies = [ [[package]] name = "cumulus-primitives-parachain-inherent" version = "0.15.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "async-trait", "cumulus-primitives-core", @@ -2109,7 +2109,7 @@ dependencies = [ [[package]] name = "cumulus-primitives-proof-size-hostfunction" version = "0.10.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "sp-externalities", "sp-runtime-interface", @@ -2119,7 +2119,7 @@ dependencies = [ [[package]] name = "cumulus-primitives-storage-weight-reclaim" version = "7.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "cumulus-primitives-core", "cumulus-primitives-proof-size-hostfunction", @@ -2135,7 +2135,7 @@ dependencies = [ [[package]] name = "cumulus-primitives-timestamp" version = "0.15.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "cumulus-primitives-core", "sp-inherents", @@ -2145,7 +2145,7 @@ dependencies = [ [[package]] name = "cumulus-primitives-utility" version = "0.16.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "cumulus-primitives-core", "frame-support", @@ -2164,7 +2164,7 @@ dependencies = [ [[package]] name = "cumulus-relay-chain-inprocess-interface" version = "0.17.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "async-trait", "cumulus-primitives-core", @@ -2188,7 +2188,7 @@ dependencies = [ [[package]] name = "cumulus-relay-chain-interface" version = "0.17.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "async-trait", "cumulus-primitives-core", @@ -2207,7 +2207,7 @@ dependencies = [ [[package]] name = "cumulus-relay-chain-minimal-node" version = "0.17.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "array-bytes", "async-trait", @@ -2242,7 +2242,7 @@ dependencies = [ [[package]] name = "cumulus-relay-chain-rpc-interface" version = "0.17.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "async-trait", "cumulus-primitives-core", @@ -2281,7 +2281,7 @@ dependencies = [ [[package]] name = "cumulus-test-relay-sproof-builder" version = "0.15.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "cumulus-primitives-core", "parity-scale-codec", @@ -3402,7 +3402,7 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "fork-tree" version = "13.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "parity-scale-codec", ] @@ -3530,7 +3530,7 @@ checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" [[package]] name = "frame-benchmarking" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-support", "frame-support-procedural", @@ -3554,7 +3554,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "42.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "Inflector", "array-bytes", @@ -3604,7 +3604,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "14.0.1" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", @@ -3615,7 +3615,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -3631,7 +3631,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "aquamarine", "frame-support", @@ -3661,7 +3661,7 @@ dependencies = [ [[package]] name = "frame-metadata-hash-extension" version = "0.5.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "array-bytes", "docify", @@ -3676,7 +3676,7 @@ dependencies = [ [[package]] name = "frame-support" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "aquamarine", "array-bytes", @@ -3717,7 +3717,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "30.0.2" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "Inflector", "cfg-expr", @@ -3736,7 +3736,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "13.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 3.2.0", @@ -3748,7 +3748,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "12.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "proc-macro2", "quote", @@ -3758,7 +3758,7 @@ dependencies = [ [[package]] name = "frame-system" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "cfg-if", "docify", @@ -3778,7 +3778,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-support", @@ -3792,7 +3792,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "34.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "docify", "parity-scale-codec", @@ -3802,7 +3802,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.43.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-support", "parity-scale-codec", @@ -6108,7 +6108,7 @@ dependencies = [ [[package]] name = "mmr-gadget" version = "39.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "futures 0.3.30", "log", @@ -6127,7 +6127,7 @@ dependencies = [ [[package]] name = "mmr-rpc" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -8044,7 +8044,7 @@ dependencies = [ [[package]] name = "pallet-asset-conversion" version = "19.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-support", @@ -8082,7 +8082,7 @@ dependencies = [ [[package]] name = "pallet-asset-rate" version = "16.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-support", @@ -8096,7 +8096,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-support", @@ -8113,7 +8113,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "39.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-support", @@ -8205,7 +8205,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-support", "frame-system", @@ -8220,7 +8220,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-support", "frame-system", @@ -8233,7 +8233,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-support", @@ -8256,7 +8256,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "36.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "aquamarine", "docify", @@ -8277,7 +8277,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "38.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "docify", "frame-benchmarking", @@ -8292,7 +8292,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "38.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-support", "frame-system", @@ -8311,7 +8311,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "38.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "array-bytes", "binary-merkle-tree", @@ -8335,7 +8335,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "36.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-support", @@ -8352,7 +8352,7 @@ dependencies = [ [[package]] name = "pallet-broker" version = "0.16.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "bitvec", "frame-benchmarking", @@ -8370,7 +8370,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "36.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-support", @@ -8388,7 +8388,7 @@ dependencies = [ [[package]] name = "pallet-collator-selection" version = "18.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-support", @@ -8407,7 +8407,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-support", @@ -8423,7 +8423,7 @@ dependencies = [ [[package]] name = "pallet-conviction-voting" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "assert_matches", "frame-benchmarking", @@ -8461,7 +8461,7 @@ dependencies = [ [[package]] name = "pallet-delegated-staking" version = "4.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-support", "frame-system", @@ -8474,7 +8474,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-support", @@ -8491,7 +8491,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "36.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -8513,7 +8513,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "36.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -8526,7 +8526,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "38.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-support", @@ -9394,6 +9394,7 @@ dependencies = [ "pallet-assets", "pallet-balances", "pallet-evm", + "pallet-moonbeam-lazy-migrations", "pallet-timestamp", "parity-scale-codec", "paste", @@ -9411,7 +9412,7 @@ dependencies = [ [[package]] name = "pallet-fast-unstake" version = "36.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "docify", "frame-benchmarking", @@ -9429,7 +9430,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-support", @@ -9451,7 +9452,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "enumflags2", "frame-benchmarking", @@ -9469,7 +9470,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "36.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-support", @@ -9488,7 +9489,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-support", @@ -9520,7 +9521,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-support", @@ -9536,7 +9537,7 @@ dependencies = [ [[package]] name = "pallet-message-queue" version = "40.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "environmental", "frame-benchmarking", @@ -9574,7 +9575,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-support", @@ -9619,22 +9620,28 @@ name = "pallet-moonbeam-lazy-migrations" version = "0.1.0" dependencies = [ "cumulus-primitives-storage-weight-reclaim", + "environmental", "frame-benchmarking", "frame-support", "frame-system", "log", + "pallet-asset-manager", "pallet-assets", "pallet-balances", "pallet-evm", + "pallet-moonbeam-foreign-assets", "pallet-scheduler", "pallet-timestamp", "parity-scale-codec", + "precompile-utils", "rlp", "scale-info", "sp-core", "sp-io", "sp-runtime", "sp-std", + "staging-xcm", + "xcm-primitives 0.1.1", ] [[package]] @@ -9658,7 +9665,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-support", @@ -9673,7 +9680,7 @@ dependencies = [ [[package]] name = "pallet-nis" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-support", @@ -9688,7 +9695,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "34.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-support", "frame-system", @@ -9706,7 +9713,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "35.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -9726,7 +9733,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-runtime-api" version = "32.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "pallet-nomination-pools", "parity-scale-codec", @@ -9736,7 +9743,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "36.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-support", "frame-system", @@ -9752,7 +9759,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -9797,7 +9804,7 @@ dependencies = [ [[package]] name = "pallet-parameters" version = "0.8.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "cumulus-primitives-storage-weight-reclaim", "docify", @@ -9835,7 +9842,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-support", @@ -9851,7 +9858,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-support", @@ -9908,7 +9915,7 @@ dependencies = [ [[package]] name = "pallet-ranked-collective" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-support", @@ -9926,7 +9933,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-support", @@ -9940,7 +9947,7 @@ dependencies = [ [[package]] name = "pallet-referenda" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "assert_matches", "frame-benchmarking", @@ -9981,7 +9988,7 @@ dependencies = [ [[package]] name = "pallet-root-testing" version = "13.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-support", "frame-system", @@ -9995,7 +10002,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "38.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "docify", "frame-benchmarking", @@ -10012,7 +10019,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-support", "frame-system", @@ -10033,7 +10040,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-support", @@ -10049,7 +10056,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-support", @@ -10066,7 +10073,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -10088,7 +10095,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "12.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", @@ -10099,7 +10106,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "22.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "log", "sp-arithmetic", @@ -10108,7 +10115,7 @@ dependencies = [ [[package]] name = "pallet-staking-runtime-api" version = "22.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "parity-scale-codec", "sp-api", @@ -10118,7 +10125,7 @@ dependencies = [ [[package]] name = "pallet-state-trie-migration" version = "39.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-support", @@ -10134,7 +10141,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "docify", "frame-benchmarking", @@ -10149,7 +10156,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "36.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "docify", "frame-benchmarking", @@ -10168,7 +10175,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "36.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-support", @@ -10186,7 +10193,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-support", "frame-system", @@ -10201,7 +10208,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "40.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -10217,7 +10224,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -10229,7 +10236,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "36.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "docify", "frame-benchmarking", @@ -10247,7 +10254,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-support", @@ -10262,7 +10269,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-support", @@ -10276,7 +10283,7 @@ dependencies = [ [[package]] name = "pallet-whitelist" version = "36.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-support", @@ -10290,7 +10297,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "16.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "bounded-collections", "frame-benchmarking", @@ -10313,7 +10320,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "16.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-benchmarking", "frame-support", @@ -10377,7 +10384,7 @@ dependencies = [ [[package]] name = "parachains-common" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "cumulus-primitives-core", "cumulus-primitives-utility", @@ -10706,7 +10713,7 @@ checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "polkadot-approval-distribution" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "bitvec", "futures 0.3.30", @@ -10726,7 +10733,7 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "always-assert", "futures 0.3.30", @@ -10742,7 +10749,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "derive_more", "fatality", @@ -10766,7 +10773,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "async-trait", "fatality", @@ -10799,7 +10806,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "cfg-if", "clap", @@ -10827,7 +10834,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "bitvec", "fatality", @@ -10849,7 +10856,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "15.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "parity-scale-codec", "scale-info", @@ -10860,7 +10867,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "derive_more", "fatality", @@ -10885,7 +10892,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "15.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -10899,7 +10906,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "futures 0.3.30", "futures-timer", @@ -10921,7 +10928,7 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "always-assert", "async-trait", @@ -10944,7 +10951,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "futures 0.3.30", "parity-scale-codec", @@ -10962,7 +10969,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "bitvec", "derive_more", @@ -10995,7 +11002,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "bitvec", "futures 0.3.30", @@ -11017,7 +11024,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "bitvec", "fatality", @@ -11037,7 +11044,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "futures 0.3.30", "polkadot-node-subsystem", @@ -11052,7 +11059,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "async-trait", "futures 0.3.30", @@ -11073,7 +11080,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "futures 0.3.30", "polkadot-node-metrics", @@ -11087,7 +11094,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "futures 0.3.30", "futures-timer", @@ -11104,7 +11111,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "fatality", "futures 0.3.30", @@ -11123,7 +11130,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "async-trait", "futures 0.3.30", @@ -11140,7 +11147,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-prospective-parachains" version = "16.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "bitvec", "fatality", @@ -11157,7 +11164,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "bitvec", "fatality", @@ -11175,7 +11182,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "always-assert", "array-bytes", @@ -11204,7 +11211,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "futures 0.3.30", "polkadot-node-primitives", @@ -11220,7 +11227,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-common" version = "15.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "cpu-time", "futures 0.3.30", @@ -11246,7 +11253,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "futures 0.3.30", "polkadot-node-metrics", @@ -11261,7 +11268,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "lazy_static", "log", @@ -11280,7 +11287,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "bs58 0.5.1", "futures 0.3.30", @@ -11299,7 +11306,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "async-channel 1.9.0", "async-trait", @@ -11325,7 +11332,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "15.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "bitvec", "bounded-vec", @@ -11348,7 +11355,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -11358,7 +11365,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "async-trait", "bitvec", @@ -11388,7 +11395,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "async-trait", "derive_more", @@ -11424,7 +11431,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "async-trait", "futures 0.3.30", @@ -11446,7 +11453,7 @@ dependencies = [ [[package]] name = "polkadot-parachain-primitives" version = "14.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "bounded-collections", "derive_more", @@ -11462,7 +11469,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "15.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "bitvec", "hex-literal 0.4.1", @@ -11488,7 +11495,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "jsonrpsee", "mmr-rpc", @@ -11523,7 +11530,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "16.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "bitvec", "frame-benchmarking", @@ -11573,7 +11580,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" version = "16.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "bs58 0.5.1", "frame-benchmarking", @@ -11585,7 +11592,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "16.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "bitflags 1.3.2", "bitvec", @@ -11632,7 +11639,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "async-trait", "bitvec", @@ -11754,7 +11761,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "arrayvec 0.7.6", "bitvec", @@ -11777,7 +11784,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "15.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -12862,7 +12869,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "binary-merkle-tree", "bitvec", @@ -12962,7 +12969,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "16.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-support", "polkadot-primitives", @@ -13285,7 +13292,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "29.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "log", "sp-core", @@ -13296,7 +13303,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.44.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "async-trait", "futures 0.3.30", @@ -13326,7 +13333,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.44.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "futures 0.3.30", "futures-timer", @@ -13348,7 +13355,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.42.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "parity-scale-codec", "sp-api", @@ -13363,7 +13370,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "array-bytes", "docify", @@ -13390,7 +13397,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "12.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", @@ -13401,7 +13408,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.46.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "array-bytes", "chrono", @@ -13445,7 +13452,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "fnv", "futures 0.3.30", @@ -13472,7 +13479,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.44.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "hash-db", "kvdb", @@ -13498,7 +13505,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.43.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "async-trait", "futures 0.3.30", @@ -13522,7 +13529,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.44.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "async-trait", "futures 0.3.30", @@ -13551,7 +13558,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.44.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "async-trait", "fork-tree", @@ -13587,7 +13594,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.44.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "futures 0.3.30", "jsonrpsee", @@ -13609,7 +13616,7 @@ dependencies = [ [[package]] name = "sc-consensus-beefy" version = "23.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "array-bytes", "async-channel 1.9.0", @@ -13645,7 +13652,7 @@ dependencies = [ [[package]] name = "sc-consensus-beefy-rpc" version = "23.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "futures 0.3.30", "jsonrpsee", @@ -13665,7 +13672,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.43.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "fork-tree", "parity-scale-codec", @@ -13678,7 +13685,7 @@ dependencies = [ [[package]] name = "sc-consensus-grandpa" version = "0.29.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "ahash", "array-bytes", @@ -13722,7 +13729,7 @@ dependencies = [ [[package]] name = "sc-consensus-grandpa-rpc" version = "0.29.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "finality-grandpa", "futures 0.3.30", @@ -13742,7 +13749,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.45.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "assert_matches", "async-trait", @@ -13777,7 +13784,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.43.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "async-trait", "futures 0.3.30", @@ -13800,7 +13807,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.40.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "log", "parity-scale-codec", @@ -13824,7 +13831,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.35.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "parity-scale-codec", "polkavm", @@ -13838,7 +13845,7 @@ dependencies = [ [[package]] name = "sc-executor-polkavm" version = "0.32.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "log", "polkavm", @@ -13849,7 +13856,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.35.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "anyhow", "cfg-if", @@ -13868,7 +13875,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.43.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "ansi_term", "futures 0.3.30", @@ -13885,7 +13892,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "33.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "array-bytes", "parking_lot 0.12.3", @@ -13899,7 +13906,7 @@ dependencies = [ [[package]] name = "sc-mixnet" version = "0.14.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "array-bytes", "arrayvec 0.7.6", @@ -13928,7 +13935,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.44.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "array-bytes", "async-channel 1.9.0", @@ -13979,7 +13986,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.43.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "async-trait", "bitflags 1.3.2", @@ -13997,7 +14004,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.44.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "ahash", "futures 0.3.30", @@ -14016,7 +14023,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.43.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "array-bytes", "async-channel 1.9.0", @@ -14037,7 +14044,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.43.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "array-bytes", "async-channel 1.9.0", @@ -14074,7 +14081,7 @@ dependencies = [ [[package]] name = "sc-network-transactions" version = "0.43.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "array-bytes", "futures 0.3.30", @@ -14093,7 +14100,7 @@ dependencies = [ [[package]] name = "sc-network-types" version = "0.12.1" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "bs58 0.5.1", "ed25519-dalek", @@ -14110,7 +14117,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "39.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "array-bytes", "bytes", @@ -14144,7 +14151,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.18.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -14153,7 +14160,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "39.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "futures 0.3.30", "jsonrpsee", @@ -14185,7 +14192,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.43.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -14205,7 +14212,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "16.0.2" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "forwarded-header-value", "futures 0.3.30", @@ -14227,7 +14234,7 @@ dependencies = [ [[package]] name = "sc-rpc-spec-v2" version = "0.44.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "array-bytes", "futures 0.3.30", @@ -14259,7 +14266,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.45.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "async-trait", "directories", @@ -14323,7 +14330,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.36.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "log", "parity-scale-codec", @@ -14334,7 +14341,7 @@ dependencies = [ [[package]] name = "sc-storage-monitor" version = "0.22.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "clap", "fs4", @@ -14347,7 +14354,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.44.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -14366,7 +14373,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "derive_more", "futures 0.3.30", @@ -14387,7 +14394,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "24.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "chrono", "futures 0.3.30", @@ -14407,7 +14414,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "ansi_term", "chrono", @@ -14437,7 +14444,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "11.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", @@ -14448,7 +14455,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "async-trait", "futures 0.3.30", @@ -14475,7 +14482,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "async-trait", "futures 0.3.30", @@ -14491,7 +14498,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "async-channel 1.9.0", "futures 0.3.30", @@ -15032,7 +15039,7 @@ dependencies = [ [[package]] name = "slot-range-helper" version = "15.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "enumn", "parity-scale-codec", @@ -15239,7 +15246,7 @@ dependencies = [ [[package]] name = "sp-api" version = "34.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "docify", "hash-db", @@ -15261,7 +15268,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "20.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "Inflector", "blake2 0.10.6", @@ -15275,7 +15282,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "38.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "parity-scale-codec", "scale-info", @@ -15287,7 +15294,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "26.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "docify", "integer-sqrt", @@ -15301,7 +15308,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "34.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "parity-scale-codec", "scale-info", @@ -15313,7 +15320,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "34.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "sp-api", "sp-inherents", @@ -15323,7 +15330,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "futures 0.3.30", "parity-scale-codec", @@ -15342,7 +15349,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.40.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "async-trait", "futures 0.3.30", @@ -15357,7 +15364,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.40.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "async-trait", "parity-scale-codec", @@ -15373,7 +15380,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.40.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "async-trait", "parity-scale-codec", @@ -15391,7 +15398,7 @@ dependencies = [ [[package]] name = "sp-consensus-beefy" version = "22.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "lazy_static", "parity-scale-codec", @@ -15411,7 +15418,7 @@ dependencies = [ [[package]] name = "sp-consensus-grandpa" version = "21.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "finality-grandpa", "log", @@ -15428,7 +15435,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.40.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "parity-scale-codec", "scale-info", @@ -15439,7 +15446,7 @@ dependencies = [ [[package]] name = "sp-core" version = "34.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "array-bytes", "bitflags 1.3.2", @@ -15485,7 +15492,7 @@ dependencies = [ [[package]] name = "sp-crypto-hashing" version = "0.1.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "blake2b_simd", "byteorder", @@ -15498,7 +15505,7 @@ dependencies = [ [[package]] name = "sp-crypto-hashing-proc-macro" version = "0.1.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "quote", "sp-crypto-hashing", @@ -15508,7 +15515,7 @@ dependencies = [ [[package]] name = "sp-database" version = "10.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "kvdb", "parking_lot 0.12.3", @@ -15517,7 +15524,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "14.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "proc-macro2", "quote", @@ -15527,7 +15534,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.29.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "environmental", "parity-scale-codec", @@ -15537,7 +15544,7 @@ dependencies = [ [[package]] name = "sp-genesis-builder" version = "0.15.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "parity-scale-codec", "scale-info", @@ -15549,7 +15556,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "34.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -15562,7 +15569,7 @@ dependencies = [ [[package]] name = "sp-io" version = "38.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "bytes", "docify", @@ -15588,7 +15595,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "39.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "sp-core", "sp-runtime", @@ -15598,7 +15605,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.40.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "parity-scale-codec", "parking_lot 0.12.3", @@ -15609,7 +15616,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "11.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "thiserror", "zstd 0.12.4", @@ -15618,7 +15625,7 @@ dependencies = [ [[package]] name = "sp-metadata-ir" version = "0.7.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-metadata", "parity-scale-codec", @@ -15628,7 +15635,7 @@ dependencies = [ [[package]] name = "sp-mixnet" version = "0.12.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "parity-scale-codec", "scale-info", @@ -15639,7 +15646,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "34.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "log", "parity-scale-codec", @@ -15656,7 +15663,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "34.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "parity-scale-codec", "scale-info", @@ -15669,7 +15676,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "34.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "sp-api", "sp-core", @@ -15679,7 +15686,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "13.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "backtrace", "lazy_static", @@ -15689,7 +15696,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "32.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "rustc-hash", "serde", @@ -15699,7 +15706,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "39.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "docify", "either", @@ -15725,7 +15732,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "28.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "bytes", "impl-trait-for-tuples", @@ -15744,7 +15751,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "18.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "Inflector", "expander", @@ -15757,7 +15764,7 @@ dependencies = [ [[package]] name = "sp-session" version = "35.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "parity-scale-codec", "scale-info", @@ -15771,7 +15778,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "34.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -15784,7 +15791,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.43.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "hash-db", "log", @@ -15804,7 +15811,7 @@ dependencies = [ [[package]] name = "sp-statement-store" version = "18.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "aes-gcm", "curve25519-dalek", @@ -15828,12 +15835,12 @@ dependencies = [ [[package]] name = "sp-std" version = "14.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" [[package]] name = "sp-storage" version = "21.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "impl-serde", "parity-scale-codec", @@ -15845,7 +15852,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "34.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "async-trait", "parity-scale-codec", @@ -15857,7 +15864,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "parity-scale-codec", "tracing", @@ -15868,7 +15875,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "34.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "sp-api", "sp-runtime", @@ -15877,7 +15884,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "34.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "async-trait", "parity-scale-codec", @@ -15891,7 +15898,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "ahash", "hash-db", @@ -15914,7 +15921,7 @@ dependencies = [ [[package]] name = "sp-version" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "impl-serde", "parity-scale-codec", @@ -15931,7 +15938,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "14.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -15942,7 +15949,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "21.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "anyhow", "impl-trait-for-tuples", @@ -15954,7 +15961,7 @@ dependencies = [ [[package]] name = "sp-weights" version = "31.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "bounded-collections", "parity-scale-codec", @@ -16143,7 +16150,7 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "staging-parachain-info" version = "0.16.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "cumulus-primitives-core", "frame-support", @@ -16156,7 +16163,7 @@ dependencies = [ [[package]] name = "staging-xcm" version = "14.1.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "array-bytes", "bounded-collections", @@ -16174,7 +16181,7 @@ dependencies = [ [[package]] name = "staging-xcm-builder" version = "16.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-support", "frame-system", @@ -16195,7 +16202,7 @@ dependencies = [ [[package]] name = "staging-xcm-executor" version = "16.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "environmental", "frame-benchmarking", @@ -16331,7 +16338,7 @@ dependencies = [ [[package]] name = "substrate-bip39" version = "0.6.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "hmac 0.12.1", "pbkdf2 0.12.2", @@ -16356,7 +16363,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "11.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" [[package]] name = "substrate-fixed" @@ -16371,7 +16378,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "38.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "docify", "frame-system-rpc-runtime-api", @@ -16391,7 +16398,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.17.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "http-body-util", "hyper 1.4.1", @@ -16405,7 +16412,7 @@ dependencies = [ [[package]] name = "substrate-rpc-client" version = "0.43.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "async-trait", "jsonrpsee", @@ -16418,7 +16425,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "37.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -16435,7 +16442,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "array-bytes", "async-trait", @@ -16462,7 +16469,7 @@ dependencies = [ [[package]] name = "substrate-test-runtime" version = "2.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "array-bytes", "frame-executive", @@ -16506,7 +16513,7 @@ dependencies = [ [[package]] name = "substrate-test-runtime-client" version = "2.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "futures 0.3.30", "sc-block-builder", @@ -16534,7 +16541,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "24.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "array-bytes", "build-helper", @@ -17113,7 +17120,7 @@ dependencies = [ [[package]] name = "tracing-gum" version = "15.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "coarsetime", "polkadot-primitives", @@ -17124,7 +17131,7 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "5.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "expander", "proc-macro-crate 3.2.0", @@ -17959,7 +17966,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "17.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "binary-merkle-tree", "bitvec", @@ -18065,7 +18072,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "16.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-support", "polkadot-primitives", @@ -18514,7 +18521,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "10.1.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "Inflector", "proc-macro2", @@ -18525,7 +18532,7 @@ dependencies = [ [[package]] name = "xcm-runtime-apis" version = "0.3.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-support", "parity-scale-codec", @@ -18539,7 +18546,7 @@ dependencies = [ [[package]] name = "xcm-simulator" version = "16.0.0" -source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#86b704de84221ef445b7422c1bbc7fcafb6b9e15" +source = "git+https://github.com/moonbeam-foundation/polkadot-sdk?branch=moonbeam-polkadot-stable2407#e43dcbfbc10e31d53336cf518e30bc900c09c66a" dependencies = [ "frame-support", "frame-system", diff --git a/pallets/moonbeam-foreign-assets/src/evm.rs b/pallets/moonbeam-foreign-assets/src/evm.rs index aae1b1bf14..3308a9c417 100644 --- a/pallets/moonbeam-foreign-assets/src/evm.rs +++ b/pallets/moonbeam-foreign-assets/src/evm.rs @@ -32,12 +32,13 @@ use xcm::latest::Error as XcmError; const ERC20_CALL_MAX_CALLDATA_SIZE: usize = 4 + 32 + 32; // selector + address + uint256 const ERC20_CREATE_MAX_CALLDATA_SIZE: usize = 16 * 1024; // 16Ko -// Hardcoded gas limits (from manueal binary search) -const ERC20_CREATE_GAS_LIMIT: u64 = 3_367_000; // highest failure: 3_366_000 +// Hardcoded gas limits (from manual binary search) +const ERC20_CREATE_GAS_LIMIT: u64 = 3_410_000; // highest failure: 3_406_000 pub(crate) const ERC20_BURN_FROM_GAS_LIMIT: u64 = 155_000; // highest failure: 154_000 pub(crate) const ERC20_MINT_INTO_GAS_LIMIT: u64 = 155_000; // highest failure: 154_000 const ERC20_PAUSE_GAS_LIMIT: u64 = 150_000; // highest failure: 149_500 pub(crate) const ERC20_TRANSFER_GAS_LIMIT: u64 = 155_000; // highest failure: 154_000 +pub(crate) const ERC20_APPROVE_GAS_LIMIT: u64 = 154_000; // highest failure: 153_000 const ERC20_UNPAUSE_GAS_LIMIT: u64 = 150_000; // highest failure: 149_500 pub enum EvmError { @@ -247,6 +248,51 @@ impl EvmCaller { Ok(()) } + pub(crate) fn erc20_approve( + erc20_contract_address: H160, + owner: H160, + spender: H160, + amount: U256, + ) -> Result<(), EvmError> { + let mut input = Vec::with_capacity(ERC20_CALL_MAX_CALLDATA_SIZE); + // Selector + input.extend_from_slice(&keccak256!("approve(address,uint256)")[..4]); + // append spender address + input.extend_from_slice(H256::from(spender).as_bytes()); + // append amount to be approved + input.extend_from_slice(H256::from_uint(&amount).as_bytes()); + let weight_limit: Weight = + T::GasWeightMapping::gas_to_weight(ERC20_APPROVE_GAS_LIMIT, true); + + let exec_info = T::EvmRunner::call( + owner, + erc20_contract_address, + input, + U256::default(), + ERC20_APPROVE_GAS_LIMIT, + None, + None, + None, + Default::default(), + false, + false, + Some(weight_limit), + Some(0), + &::config(), + ) + .map_err(|_| EvmError::EvmCallFail)?; + + ensure!( + matches!( + exec_info.exit_reason, + ExitReason::Succeed(ExitSucceed::Returned | ExitSucceed::Stopped) + ), + EvmError::EvmCallFail + ); + + Ok(()) + } + pub(crate) fn erc20_burn_from( erc20_contract_address: H160, who: H160, diff --git a/pallets/moonbeam-foreign-assets/src/lib.rs b/pallets/moonbeam-foreign-assets/src/lib.rs index 88611e928d..1d92d8facd 100644 --- a/pallets/moonbeam-foreign-assets/src/lib.rs +++ b/pallets/moonbeam-foreign-assets/src/lib.rs @@ -235,13 +235,61 @@ pub mod pallet { /// Compute asset contract address from asset id #[inline] - pub(crate) fn contract_address_from_asset_id(asset_id: AssetId) -> H160 { + pub fn contract_address_from_asset_id(asset_id: AssetId) -> H160 { let mut buffer = [0u8; 20]; buffer[..4].copy_from_slice(&FOREIGN_ASSETS_PREFIX); buffer[4..].copy_from_slice(&asset_id.to_be_bytes()); H160(buffer) } + pub fn register_foreign_asset( + asset_id: AssetId, + xcm_location: Location, + decimals: u8, + symbol: BoundedVec>, + name: BoundedVec>, + ) -> DispatchResult { + // Ensure such an assetId does not exist + ensure!( + !AssetsById::::contains_key(&asset_id), + Error::::AssetAlreadyExists + ); + + ensure!( + !AssetsByLocation::::contains_key(&xcm_location), + Error::::LocationAlreadyExists + ); + + ensure!( + AssetsById::::count() < T::MaxForeignAssets::get(), + Error::::TooManyForeignAssets + ); + + ensure!( + T::AssetIdFilter::contains(&asset_id), + Error::::AssetIdFiltered + ); + + let symbol = core::str::from_utf8(&symbol).map_err(|_| Error::::InvalidSymbol)?; + let name = core::str::from_utf8(&name).map_err(|_| Error::::InvalidTokenName)?; + + let contract_address = EvmCaller::::erc20_create(asset_id, decimals, symbol, name)?; + + // Insert the association assetId->foreigAsset + // Insert the association foreigAsset->assetId + AssetsById::::insert(&asset_id, &xcm_location); + AssetsByLocation::::insert(&xcm_location, (asset_id, AssetStatus::Active)); + + T::OnForeignAssetCreated::on_asset_created(&xcm_location, &asset_id); + + Self::deposit_event(Event::ForeignAssetCreated { + contract_address, + asset_id, + xcm_location, + }); + Ok(()) + } + /// Mint an asset into a specific account pub fn mint_into( asset_id: AssetId, @@ -259,6 +307,25 @@ pub mod pallet { }) .map_err(Into::into) } + + /// Aprrove a spender to spend a certain amount of tokens from the owner account + pub fn approve( + asset_id: AssetId, + owner: T::AccountId, + spender: T::AccountId, + amount: U256, + ) -> Result<(), evm::EvmError> { + // We perform the evm call in a storage transaction to ensure that if it fail + // any contract storage changes are rolled back. + EvmCaller::::erc20_approve( + Self::contract_address_from_asset_id(asset_id), + T::AccountIdToH160::convert(owner), + T::AccountIdToH160::convert(spender), + amount, + ) + .map_err(Into::into) + } + pub fn weight_of_erc20_burn() -> Weight { T::GasWeightMapping::gas_to_weight(evm::ERC20_BURN_FROM_GAS_LIMIT, true) } diff --git a/pallets/moonbeam-lazy-migrations/Cargo.toml b/pallets/moonbeam-lazy-migrations/Cargo.toml index cf03633392..09268bda43 100644 --- a/pallets/moonbeam-lazy-migrations/Cargo.toml +++ b/pallets/moonbeam-lazy-migrations/Cargo.toml @@ -13,13 +13,19 @@ frame-support = { workspace = true } frame-system = { workspace = true } pallet-scheduler = { workspace = true } pallet-assets = { workspace = true } +pallet-asset-manager = { workspace = true } pallet-balances = { workspace = true } +pallet-moonbeam-foreign-assets = { workspace = true } parity-scale-codec = { workspace = true } scale-info = { workspace = true, features = ["derive"] } sp-core = { workspace = true } sp-io = { workspace = true } sp-runtime = { workspace = true } sp-std = { workspace = true } +xcm = { workspace = true } +xcm-primitives = { workspace = true } + +environmental = { workspace = true } # Frontier pallet-evm = { workspace = true, features = ["forbid-evm-reentrancy"] } @@ -34,6 +40,7 @@ frame-benchmarking = { workspace = true, optional = true } frame-benchmarking = { workspace = true, features = ["std"] } pallet-balances = { workspace = true, features = ["std", "insecure_zero_ed"] } pallet-timestamp = { workspace = true, features = ["std"] } +precompile-utils = { workspace = true, features = ["std"] } rlp = { workspace = true, features = ["std"] } sp-io = { workspace = true, features = ["std"] } @@ -41,6 +48,7 @@ sp-io = { workspace = true, features = ["std"] } default = ["std"] runtime-benchmarks = ["frame-benchmarking"] std = [ + "environmental/std", "pallet-balances/std", "frame-support/std", "frame-system/std", @@ -52,7 +60,11 @@ std = [ "pallet-evm/std", "pallet-timestamp/std", "pallet-assets/std", + "pallet-moonbeam-foreign-assets/std", + "pallet-asset-manager/std", + "precompile-utils/std", "cumulus-primitives-storage-weight-reclaim/std", "rlp/std", + "xcm-primitives/std", ] try-runtime = ["frame-support/try-runtime"] diff --git a/pallets/moonbeam-lazy-migrations/src/benchmarks.rs b/pallets/moonbeam-lazy-migrations/src/benchmarks.rs new file mode 100644 index 0000000000..7ef1d0bd4d --- /dev/null +++ b/pallets/moonbeam-lazy-migrations/src/benchmarks.rs @@ -0,0 +1,232 @@ +// Copyright 2024 Moonbeam Foundation. +// This file is part of Moonbeam. + +// Moonbeam 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. + +// Moonbeam 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 Moonbeam. If not, see . +// #![cfg(feature = "runtime-benchmarks")] + +use crate::{foreign_asset::ForeignAssetMigrationStatus, Call, Config, Pallet}; +use frame_benchmarking::{account, benchmarks}; +use frame_support::traits::Currency; +use frame_support::BoundedVec; +use frame_system::RawOrigin; +use pallet_asset_manager::AssetRegistrar; +use sp_core::{Get, U256}; +use sp_runtime::traits::StaticLookup; +use sp_runtime::Saturating; +use sp_std::vec; +use sp_std::vec::Vec; +use xcm::latest::prelude::*; + +fn setup_foreign_asset(n_accounts: u32) -> T::AssetIdParameter { + let asset_type = T::ForeignAssetType::default(); + let metadata = T::AssetRegistrarMetadata::default(); + let asset_id = asset_type.clone().into(); + + let caller: T::AccountId = pallet_asset_manager::Pallet::::account_id(); + let caller_lookup = T::Lookup::unlookup(caller.clone()); + let root: T::RuntimeOrigin = RawOrigin::Root.into(); + + // Register in asset manager + let _ = pallet_asset_manager::Pallet::::register_foreign_asset( + root.clone(), + asset_type, + metadata, + ::Balance::from(1u32), + true, + ) + .unwrap(); + + let _ = ::Currency::deposit_creating( + &caller, + ::MetadataDepositBase::get() + .saturating_add( + ::MetadataDepositPerByte::get() + .saturating_mul((T::StringLimit::get() as u32).into()), + ) + .saturating_mul(2u32.into()), + ); + + let dummy = Vec::from_iter((0..T::StringLimit::get() as usize).map(|_| 0u8)); + let _ = pallet_assets::Pallet::::set_metadata( + RawOrigin::Signed(caller.clone()).into(), + asset_id.clone().into(), + dummy.clone(), + dummy, + 18, + ) + .unwrap(); + + // Create approval + pallet_assets::Pallet::::mint( + RawOrigin::Signed(caller.clone()).into(), + asset_id.clone().into(), + caller_lookup, + (100 * (n_accounts + 1)).into(), + ) + .unwrap(); + + // Setup n accounts with balances and approvals + for i in 0..n_accounts { + let user: T::AccountId = account("user", i, 0); + let user_lookup = T::Lookup::unlookup(user.clone()); + + // Mint assets + let _ = pallet_assets::Pallet::::mint( + RawOrigin::Signed(caller.clone()).into(), + asset_id.clone().into(), + user_lookup, + 100u32.into(), + ) + .unwrap(); + + let spender: T::AccountId = account("spender", i, 0); + let spender_lookup = T::Lookup::unlookup(spender.clone()); + let enough = ::Currency::minimum_balance(); + ::Currency::make_free_balance_be(&spender, enough); + + let _ = pallet_assets::Pallet::::approve_transfer( + RawOrigin::Signed(caller.clone()).into(), + asset_id.clone().into(), + spender_lookup, + 5u32.into(), + ) + .unwrap(); + } + + asset_id.into() +} + +benchmarks! { + where_clause { + where + ::Balance: Into, + T::ForeignAssetType: Into>, + } + approve_assets_to_migrate { + let n in 1 .. 100u32; + let assets: Vec = (0..n).map(|i| { + let metadata = T::AssetRegistrarMetadata::default(); + let asset_id: u128 = i.into(); + T::AssetRegistrar::create_foreign_asset( + asset_id, + 1u32.into(), + metadata.clone(), + true, + ).expect("failed to create asset"); + asset_id + }).collect(); + }: _(RawOrigin::Root, BoundedVec::try_from(assets.clone()).unwrap()) + verify { + for asset_id in assets { + assert!(crate::pallet::ApprovedForeignAssets::::contains_key(asset_id)); + } + } + + start_foreign_assets_migration { + let asset_id = setup_foreign_asset::(1); + + Pallet::::approve_assets_to_migrate( + RawOrigin::Root.into(), + BoundedVec::try_from(vec![asset_id.clone().into()]).unwrap() + )?; + }: _(RawOrigin::Signed(account("caller", 0, 0)), asset_id.into()) + verify { + assert!(matches!( + crate::pallet::ForeignAssetMigrationStatusValue::::get(), + ForeignAssetMigrationStatus::Migrating(_) + )); + } + + migrate_foreign_asset_balances { + let n in 1 .. 1000u32; + let asset_id = setup_foreign_asset::(n); + + Pallet::::approve_assets_to_migrate( + RawOrigin::Root.into(), + BoundedVec::try_from(vec![asset_id.clone().into()]).unwrap() + )?; + + Pallet::::start_foreign_assets_migration( + RawOrigin::Signed(account("caller", 0, 0)).into(), + asset_id.into() + )?; + }: _(RawOrigin::Signed(account("caller", 0, 0)), n + 1) + verify { + match crate::pallet::ForeignAssetMigrationStatusValue::::get() { + ForeignAssetMigrationStatus::Migrating(info) => { + assert_eq!(info.remaining_balances, 0); + }, + _ => panic!("Expected Migrating status"), + } + } + + migrate_foreign_asset_approvals { + let n in 1 .. 1000u32; + let asset_id = setup_foreign_asset::(n); + + Pallet::::approve_assets_to_migrate( + RawOrigin::Root.into(), + BoundedVec::try_from(vec![asset_id.clone().into()]).unwrap() + )?; + + Pallet::::start_foreign_assets_migration( + RawOrigin::Signed(account("caller", 0, 0)).into(), + asset_id.into() + )?; + + Pallet::::migrate_foreign_asset_balances( + RawOrigin::Signed(account("caller", 0, 0)).into(), + n + 1 + )?; + }: _(RawOrigin::Signed(account("caller", 0, 0)), n) + verify { + match crate::pallet::ForeignAssetMigrationStatusValue::::get() { + ForeignAssetMigrationStatus::Migrating(info) => { + assert_eq!(info.remaining_approvals, 0); + }, + _ => panic!("Expected Migrating status"), + } + } + + finish_foreign_assets_migration { + let n = 100u32; + let asset_id = setup_foreign_asset::(n); + + Pallet::::approve_assets_to_migrate( + RawOrigin::Root.into(), + BoundedVec::try_from(vec![asset_id.clone().into()]).unwrap() + )?; + + Pallet::::start_foreign_assets_migration( + RawOrigin::Signed(account("caller", 0, 0)).into(), + asset_id.into() + )?; + + Pallet::::migrate_foreign_asset_balances( + RawOrigin::Signed(account("caller", 0, 0)).into(), + n + 1 + )?; + + Pallet::::migrate_foreign_asset_approvals( + RawOrigin::Signed(account("caller", 0, 0)).into(), + n + 1 + )?; + }: _(RawOrigin::Signed(account("caller", 0, 0))) + verify { + assert_eq!( + crate::pallet::ForeignAssetMigrationStatusValue::::get(), + ForeignAssetMigrationStatus::Idle + ); + } +} diff --git a/pallets/moonbeam-lazy-migrations/src/foreign_asset.rs b/pallets/moonbeam-lazy-migrations/src/foreign_asset.rs new file mode 100644 index 0000000000..3c25994f84 --- /dev/null +++ b/pallets/moonbeam-lazy-migrations/src/foreign_asset.rs @@ -0,0 +1,224 @@ +// Copyright 2024 Moonbeam foundation +// This file is part of Moonbeam. + +// Moonbeam 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. + +// Moonbeam 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 Moonbeam. If not, see . + +//! # Functions for handling foreign asset migrations + +use super::*; +use frame_support::sp_runtime::Saturating; +use frame_support::traits::{fungibles::metadata::Inspect, ReservableCurrency}; +use parity_scale_codec::{Decode, Encode, MaxEncodedLen}; +use sp_core::U256; + +#[derive(Debug, Encode, Decode, scale_info::TypeInfo, PartialEq, MaxEncodedLen)] +pub enum ForeignAssetMigrationStatus { + /// No migration in progress + Idle, + /// Migrating a foreign asset in progress + Migrating(ForeignAssetMigrationInfo), +} + +impl Default for ForeignAssetMigrationStatus { + fn default() -> Self { + ForeignAssetMigrationStatus::Idle + } +} + +#[derive(Debug, Encode, Decode, scale_info::TypeInfo, PartialEq, MaxEncodedLen)] +pub(super) struct ForeignAssetMigrationInfo { + pub(super) asset_id: u128, + pub(super) remaining_balances: u32, + pub(super) remaining_approvals: u32, +} + +impl Pallet +where + ::Balance: Into, + ::ForeignAssetType: Into>, +{ + /// Start a foreign asset migration by freezing the asset and creating the SC with the moonbeam + /// foreign assets pallet. + pub(super) fn do_start_foreign_asset_migration(asset_id: u128) -> DispatchResult { + ForeignAssetMigrationStatusValue::::try_mutate(|status| -> DispatchResult { + ensure!( + *status == ForeignAssetMigrationStatus::Idle, + Error::::MigrationNotFinished + ); + + // ensure asset_id is in the approved list + ensure!( + ApprovedForeignAssets::::contains_key(asset_id), + Error::::AssetNotFound + ); + + // Freeze the asset + pallet_assets::Asset::::try_mutate_exists(asset_id, |maybe_details| { + let details = maybe_details.as_mut().ok_or(Error::::AssetNotFound)?; + + details.status = pallet_assets::AssetStatus::Frozen; + + let decimals = pallet_assets::Pallet::::decimals(asset_id); + let symbol = pallet_assets::Pallet::::symbol(asset_id) + .try_into() + .map_err(|_| Error::::SymbolTooLong)?; + let name = as Inspect<_>>::name(asset_id) + .try_into() + .map_err(|_| Error::::NameTooLong)?; + let asset_type = pallet_asset_manager::AssetIdType::::take(asset_id) + .ok_or(Error::::AssetTypeNotFound)?; + let xcm_location: Location = + asset_type.into().ok_or(Error::::LocationNotFound)?; + + // Remove the precompile for the old foreign asset. + // Cleaning the precompile is done by removing the code and metadata + let contract_addr = + pallet_moonbeam_foreign_assets::Pallet::::contract_address_from_asset_id( + asset_id, + ); + pallet_evm::AccountCodes::::remove(contract_addr); + pallet_evm::AccountCodesMetadata::::remove(contract_addr); + + // Create the SC for the asset with moonbeam foreign assets pallet + pallet_moonbeam_foreign_assets::Pallet::::register_foreign_asset( + asset_id, + xcm_location, + decimals, + symbol, + name, + )?; + + *status = ForeignAssetMigrationStatus::Migrating(ForeignAssetMigrationInfo { + asset_id, + remaining_balances: details.accounts, + remaining_approvals: details.approvals, + }); + + Ok(()) + }) + }) + } + + pub(super) fn do_migrate_foreign_asset_balances(limit: u32) -> DispatchResult { + use pallet_assets::ExistenceReason::*; + + ensure!(limit != 0, Error::::LimitCannotBeZero); + + ForeignAssetMigrationStatusValue::::try_mutate(|status| -> DispatchResult { + let info = match status { + ForeignAssetMigrationStatus::Migrating(info) => info, + _ => return Err(Error::::NoMigrationInProgress.into()), + }; + + pallet_assets::Account::::drain_prefix(info.asset_id) + .take(limit as usize) + .try_for_each(|(who, mut asset)| { + // Unreserve the deposit + if let Some((depositor, deposit)) = asset.reason.take_deposit_from() { + ::Currency::unreserve(&depositor, deposit); + } else if let Some(deposit) = asset.reason.take_deposit() { + ::Currency::unreserve(&who, deposit); + } + + match asset.reason { + Consumer => frame_system::Pallet::::dec_consumers(&who), + Sufficient => { + frame_system::Pallet::::dec_sufficients(&who); + } + _ => {} + }; + + MIGRATING_FOREIGN_ASSETS::using_once(&mut true, || { + pallet_moonbeam_foreign_assets::Pallet::::mint_into( + info.asset_id, + who.clone(), + asset.balance.into(), + ) + }) + .map_err(|_| Error::::MintFailed)?; + + info.remaining_balances = info.remaining_balances.saturating_sub(1); + Ok::<(), Error>(()) + })?; + + Ok(()) + }) + } + + pub(super) fn do_migrate_foreign_asset_approvals(limit: u32) -> DispatchResult { + ensure!(limit != 0, Error::::LimitCannotBeZero); + + ForeignAssetMigrationStatusValue::::try_mutate(|status| -> DispatchResult { + let info = match status { + ForeignAssetMigrationStatus::Migrating(info) => info, + _ => return Err(Error::::NoMigrationInProgress.into()), + }; + + pallet_assets::Approvals::::drain_prefix((info.asset_id,)) + .take(limit as usize) + .try_for_each(|((owner, beneficiary), approval)| { + ::Currency::unreserve(&owner, approval.deposit); + + MIGRATING_FOREIGN_ASSETS::using_once(&mut true, || { + pallet_moonbeam_foreign_assets::Pallet::::approve( + info.asset_id, + owner.clone(), + beneficiary, + approval.amount.into(), + ) + }) + .map_err(|_| Error::::ApprovalFailed)?; + + info.remaining_approvals = info.remaining_approvals.saturating_sub(1); + Ok::<(), Error>(()) + })?; + + Ok(()) + }) + } + + /// Finish Migration + pub(super) fn do_finish_foreign_asset_migration() -> DispatchResult { + ForeignAssetMigrationStatusValue::::try_mutate(|status| -> DispatchResult { + let migration_info = match status { + ForeignAssetMigrationStatus::Migrating(info) => info, + _ => return Err(Error::::NoMigrationInProgress.into()), + }; + + ensure!( + migration_info.remaining_balances == 0 && migration_info.remaining_approvals == 0, + Error::::MigrationNotFinished + ); + + pallet_assets::Asset::::try_mutate_exists( + migration_info.asset_id, + |maybe_details| { + let details = maybe_details.take().ok_or(Error::::AssetNotFound)?; + + let metadata = pallet_assets::Metadata::::take(migration_info.asset_id); + ::Currency::unreserve( + &details.owner, + details.deposit.saturating_add(metadata.deposit), + ); + + Ok::<(), Error>(()) + }, + )?; + + ApprovedForeignAssets::::remove(migration_info.asset_id); + *status = ForeignAssetMigrationStatus::Idle; + Ok(()) + }) + } +} diff --git a/pallets/moonbeam-lazy-migrations/src/lib.rs b/pallets/moonbeam-lazy-migrations/src/lib.rs index aa76963ff6..d580ec2831 100644 --- a/pallets/moonbeam-lazy-migrations/src/lib.rs +++ b/pallets/moonbeam-lazy-migrations/src/lib.rs @@ -20,26 +20,33 @@ #![cfg_attr(not(feature = "std"), no_std)] #[cfg(test)] -mod mock; +pub mod mock; #[cfg(test)] mod tests; +#[cfg(any(test, feature = "runtime-benchmarks"))] +mod benchmarks; + +mod foreign_asset; pub mod weights; pub use weights::WeightInfo; use frame_support::pallet; - +use frame_support::pallet_prelude::*; +use frame_system::pallet_prelude::*; pub use pallet::*; +use xcm::latest::Location; const MAX_CONTRACT_CODE_SIZE: u64 = 25 * 1024; +environmental::environmental!(MIGRATING_FOREIGN_ASSETS: bool); + #[pallet] pub mod pallet { use super::*; + use crate::foreign_asset::ForeignAssetMigrationStatus; use cumulus_primitives_storage_weight_reclaim::get_proof_size; - use frame_support::pallet_prelude::*; - use frame_system::pallet_prelude::*; - use sp_core::H160; + use sp_core::{H160, U256}; pub const ARRAY_LIMIT: u32 = 1000; pub type GetArrayLimit = ConstU32; @@ -52,6 +59,15 @@ pub mod pallet { pub(crate) type StateMigrationStatusValue = StorageValue<_, (StateMigrationStatus, u64), ValueQuery>; + #[pallet::storage] + pub(crate) type ForeignAssetMigrationStatusValue = + StorageValue<_, ForeignAssetMigrationStatus, ValueQuery>; + + // List of approved foreign assets to be migrated + #[pallet::storage] + pub(crate) type ApprovedForeignAssets = + StorageMap<_, Twox64Concat, u128, (), OptionQuery>; + pub(crate) type StorageKey = BoundedVec>; #[derive(Clone, Encode, Decode, scale_info::TypeInfo, PartialEq, Eq, MaxEncodedLen, Debug)] @@ -64,24 +80,52 @@ pub mod pallet { impl Default for StateMigrationStatus { fn default() -> Self { - return StateMigrationStatus::NotStarted; + StateMigrationStatus::NotStarted } } - /// Configuration trait of this pallet. #[pallet::config] - pub trait Config: frame_system::Config + pallet_evm::Config + pallet_balances::Config { + pub trait Config: + frame_system::Config + + pallet_evm::Config + + pallet_balances::Config + + pallet_assets::Config + + pallet_asset_manager::Config + + pallet_moonbeam_foreign_assets::Config + { + // Origin that is allowed to start foreign assets migration + type ForeignAssetMigratorOrigin: EnsureOrigin; type WeightInfo: WeightInfo; } #[pallet::error] pub enum Error { + /// The limit cannot be zero + LimitCannotBeZero, /// The contract already have metadata ContractMetadataAlreadySet, /// Contract not exist ContractNotExist, /// The key lengths exceeds the maximum allowed KeyTooLong, + /// The symbol length exceeds the maximum allowed + SymbolTooLong, + /// The name length exceeds the maximum allowed + NameTooLong, + /// The asset type was not found + AssetTypeNotFound, + /// Asset not found + AssetNotFound, + /// The location of the asset was not found + LocationNotFound, + /// Migration is not finished yet + MigrationNotFinished, + /// No migration in progress + NoMigrationInProgress, + /// Fail to mint the foreign asset + MintFailed, + /// Fail to add an approval + ApprovalFailed, } pub(crate) const MAX_ITEM_PROOF_SIZE: u64 = 30 * 1024; // 30 KB @@ -310,7 +354,11 @@ pub mod pallet { } #[pallet::call] - impl Pallet { + impl Pallet + where + ::Balance: Into, + ::ForeignAssetType: Into>, + { #[pallet::call_index(2)] #[pallet::weight(Pallet::::create_contract_metadata_weight(MAX_CONTRACT_CODE_SIZE))] pub fn create_contract_metadata( @@ -345,6 +393,73 @@ pub mod pallet { ) .into()) } + + #[pallet::call_index(3)] + #[pallet::weight( + ::WeightInfo::approve_assets_to_migrate(assets.len() as u32) + )] + pub fn approve_assets_to_migrate( + origin: OriginFor, + assets: BoundedVec, + ) -> DispatchResultWithPostInfo { + T::ForeignAssetMigratorOrigin::ensure_origin(origin.clone())?; + + assets.iter().try_for_each(|asset_id| { + ensure!( + pallet_assets::Asset::::contains_key(*asset_id), + Error::::AssetNotFound + ); + + ApprovedForeignAssets::::insert(asset_id, ()); + Ok::<(), Error>(()) + })?; + Ok(Pays::No.into()) + } + + #[pallet::call_index(4)] + #[pallet::weight(::WeightInfo::start_foreign_assets_migration())] + pub fn start_foreign_assets_migration( + origin: OriginFor, + asset_id: u128, + ) -> DispatchResultWithPostInfo { + ensure_signed(origin)?; + + Self::do_start_foreign_asset_migration(asset_id)?; + Ok(Pays::No.into()) + } + + #[pallet::call_index(5)] + #[pallet::weight(::WeightInfo::migrate_foreign_asset_balances(*limit))] + pub fn migrate_foreign_asset_balances( + origin: OriginFor, + limit: u32, + ) -> DispatchResultWithPostInfo { + ensure_signed(origin)?; + + Self::do_migrate_foreign_asset_balances(limit)?; + Ok(Pays::No.into()) + } + + #[pallet::call_index(6)] + #[pallet::weight(::WeightInfo::migrate_foreign_asset_approvals(*limit))] + pub fn migrate_foreign_asset_approvals( + origin: OriginFor, + limit: u32, + ) -> DispatchResultWithPostInfo { + ensure_signed(origin)?; + + Self::do_migrate_foreign_asset_approvals(limit)?; + Ok(Pays::No.into()) + } + + #[pallet::call_index(7)] + #[pallet::weight(::WeightInfo::finish_foreign_assets_migration())] + pub fn finish_foreign_assets_migration(origin: OriginFor) -> DispatchResultWithPostInfo { + ensure_signed(origin)?; + + Self::do_finish_foreign_asset_migration()?; + Ok(Pays::No.into()) + } } impl Pallet { @@ -363,3 +478,7 @@ pub mod pallet { } } } + +pub fn is_migrating_foreign_assets() -> bool { + MIGRATING_FOREIGN_ASSETS::with(|v| *v).unwrap_or(false) +} diff --git a/pallets/moonbeam-lazy-migrations/src/mock.rs b/pallets/moonbeam-lazy-migrations/src/mock.rs index b9868cdefc..a8f03e6c55 100644 --- a/pallets/moonbeam-lazy-migrations/src/mock.rs +++ b/pallets/moonbeam-lazy-migrations/src/mock.rs @@ -18,19 +18,25 @@ use super::*; use crate as pallet_moonbeam_lazy_migrations; +use frame_support::traits::AsEnsureOriginWithArg; use frame_support::{ construct_runtime, parameter_types, traits::Everything, weights::{RuntimeDbWeight, Weight}, }; -use pallet_evm::{AddressMapping, EnsureAddressTruncated}; -use sp_core::{H160, H256, U256}; +use frame_system::{EnsureRoot, EnsureSigned}; +use pallet_asset_manager::AssetRegistrar; +use pallet_evm::{EnsureAddressNever, EnsureAddressRoot}; +use precompile_utils::testing::MockAccount; +use sp_core::{ConstU32, H160, H256, U256}; use sp_runtime::{ - traits::{BlakeTwo256, IdentityLookup}, - AccountId32, BuildStorage, Perbill, + traits::{BlakeTwo256, Hash, IdentityLookup}, + BuildStorage, Perbill, }; +pub type AssetId = u128; pub type Balance = u128; +pub type AccountId = MockAccount; type Block = frame_system::mocking::MockBlock; // Configure a mock runtime to test the pallet. @@ -42,6 +48,9 @@ construct_runtime!( Timestamp: pallet_timestamp, EVM: pallet_evm, LazyMigrations: pallet_moonbeam_lazy_migrations::{Pallet, Call}, + Assets: pallet_assets::{Pallet, Call, Storage, Event}, + AssetManager: pallet_asset_manager::{Pallet, Call, Storage, Event}, + MoonbeamForeignAssets: pallet_moonbeam_foreign_assets::{Pallet, Call, Storage, Event}, } ); @@ -70,7 +79,7 @@ impl frame_system::Config for Test { type RuntimeCall = RuntimeCall; type Hash = H256; type Hashing = BlakeTwo256; - type AccountId = AccountId32; + type AccountId = AccountId; type Lookup = IdentityLookup; type RuntimeEvent = RuntimeEvent; type BlockHashCount = BlockHashCount; @@ -122,40 +131,21 @@ impl pallet_timestamp::Config for Test { type WeightInfo = (); } -const MAX_POV_SIZE: u64 = 5 * 1024 * 1024; -/// Block Storage Limit in bytes. Set to 40KB. -const BLOCK_STORAGE_LIMIT: u64 = 40 * 1024; - parameter_types! { pub BlockGasLimit: U256 = U256::from(u64::MAX); - pub WeightPerGas: Weight = Weight::from_parts(1, 0); - pub GasLimitPovSizeRatio: u64 = { - let block_gas_limit = BlockGasLimit::get().min(u64::MAX.into()).low_u64(); - block_gas_limit.saturating_div(MAX_POV_SIZE) - }; - pub GasLimitStorageGrowthRatio: u64 = { - let block_gas_limit = BlockGasLimit::get().min(u64::MAX.into()).low_u64(); - block_gas_limit.saturating_div(BLOCK_STORAGE_LIMIT) - }; + pub const WeightPerGas: Weight = Weight::from_parts(1, 0); + pub GasLimitPovSizeRatio: u64 = 16; + pub GasLimitStorageGrowthRatio: u64 = 366; pub SuicideQuickClearLimit: u32 = 0; } -pub struct HashedAddressMapping; - -impl AddressMapping for HashedAddressMapping { - fn into_account_id(address: H160) -> AccountId32 { - let mut data = [0u8; 32]; - data[0..20].copy_from_slice(&address[..]); - AccountId32::from(Into::<[u8; 32]>::into(data)) - } -} impl pallet_evm::Config for Test { type FeeCalculator = (); type GasWeightMapping = pallet_evm::FixedGasWeightMapping; type WeightPerGas = WeightPerGas; - type CallOrigin = EnsureAddressTruncated; - type WithdrawOrigin = EnsureAddressTruncated; - type AddressMapping = HashedAddressMapping; + type CallOrigin = EnsureAddressRoot; + type WithdrawOrigin = EnsureAddressNever; + type AddressMapping = AccountId; type Currency = Balances; type RuntimeEvent = RuntimeEvent; type Runner = pallet_evm::runner::stack::Runner; @@ -170,23 +160,182 @@ impl pallet_evm::Config for Test { type GasLimitPovSizeRatio = GasLimitPovSizeRatio; type GasLimitStorageGrowthRatio = GasLimitStorageGrowthRatio; type Timestamp = Timestamp; - type WeightInfo = pallet_evm::weights::SubstrateWeight; + type WeightInfo = (); type SuicideQuickClearLimit = SuicideQuickClearLimit; } +parameter_types! { + pub const AssetDeposit: u128 = 1; + pub const MetadataDepositBase: u128 = 1; + pub const MetadataDepositPerByte: u128 = 1; + pub const ApprovalDeposit: u128 = 1; + pub const AssetsStringLimit: u32 = 50; + pub const AssetAccountDeposit: u128 = 1; +} + +// Required for runtime benchmarks +pallet_assets::runtime_benchmarks_enabled! { + pub struct BenchmarkHelper; + impl pallet_assets::BenchmarkHelper for BenchmarkHelper + where + AssetIdParameter: From, + { + fn create_asset_id_parameter(id: u32) -> AssetIdParameter { + (id as u128).into() + } + } +} + +impl pallet_assets::Config<()> for Test { + type RuntimeEvent = RuntimeEvent; + type Balance = Balance; + type AssetId = AssetId; + type Currency = Balances; + type ForceOrigin = EnsureRoot; + type AssetDeposit = AssetDeposit; + type MetadataDepositBase = MetadataDepositBase; + type MetadataDepositPerByte = MetadataDepositPerByte; + type ApprovalDeposit = ApprovalDeposit; + type StringLimit = AssetsStringLimit; + type Freezer = (); + type Extra = (); + type AssetAccountDeposit = AssetAccountDeposit; + type WeightInfo = (); + type RemoveItemsLimit = ConstU32<656>; + type AssetIdParameter = AssetId; + type CreateOrigin = AsEnsureOriginWithArg>; + type CallbackHandle = (); + pallet_assets::runtime_benchmarks_enabled! { + type BenchmarkHelper = BenchmarkHelper; + } +} + +#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, RuntimeDebug, TypeInfo)] +pub enum MockAssetType { + Xcm(Location), + MockAsset(AssetId), +} + +impl Default for MockAssetType { + fn default() -> Self { + Self::MockAsset(0) + } +} + +impl From for AssetId { + fn from(asset: MockAssetType) -> AssetId { + match asset { + MockAssetType::MockAsset(id) => id, + MockAssetType::Xcm(id) => { + let mut result: [u8; 16] = [0u8; 16]; + let hash: H256 = id.using_encoded(::Hashing::hash); + result.copy_from_slice(&hash.as_fixed_bytes()[0..16]); + u128::from_le_bytes(result) + } + } + } +} + +impl From for MockAssetType { + fn from(location: Location) -> Self { + Self::Xcm(location) + } +} + +impl Into> for MockAssetType { + fn into(self) -> Option { + match self { + Self::Xcm(location) => Some(location), + _ => None, + } + } +} + +pub struct MockAssetPalletRegistrar; + +impl AssetRegistrar for MockAssetPalletRegistrar { + fn create_foreign_asset( + asset: u128, + min_balance: u128, + _metadata: u32, + is_sufficient: bool, + ) -> Result<(), DispatchError> { + Assets::force_create( + RuntimeOrigin::root(), + asset.into(), + AssetManager::account_id(), + is_sufficient, + min_balance, + )?; + Ok(()) + } + + fn destroy_foreign_asset(_asset: u128) -> Result<(), DispatchError> { + Ok(()) + } + + fn destroy_asset_dispatch_info_weight(_asset: u128) -> Weight { + Weight::from_parts(0, 0) + } +} + +impl pallet_asset_manager::Config for Test { + type RuntimeEvent = RuntimeEvent; + type Balance = Balance; + type AssetId = AssetId; + type AssetRegistrarMetadata = u32; + type ForeignAssetType = MockAssetType; + type AssetRegistrar = MockAssetPalletRegistrar; + type ForeignAssetModifierOrigin = EnsureRoot; + type WeightInfo = (); +} + +pub struct AccountIdToH160; +impl sp_runtime::traits::Convert for AccountIdToH160 { + fn convert(account_id: AccountId) -> H160 { + account_id.into() + } +} + +impl pallet_moonbeam_foreign_assets::Config for Test { + type AccountIdToH160 = AccountIdToH160; + type AssetIdFilter = Everything; + type EvmRunner = pallet_evm::runner::stack::Runner; + type ForeignAssetCreatorOrigin = EnsureRoot; + type ForeignAssetFreezerOrigin = EnsureRoot; + type ForeignAssetModifierOrigin = EnsureRoot; + type ForeignAssetUnfreezerOrigin = EnsureRoot; + type OnForeignAssetCreated = (); + type MaxForeignAssets = ConstU32<3>; + type RuntimeEvent = RuntimeEvent; + type WeightInfo = (); + type XcmLocationToH160 = (); +} + impl Config for Test { type WeightInfo = (); + type ForeignAssetMigratorOrigin = EnsureRoot; } +// Constants for test accounts +pub const ALITH: AccountId = MockAccount(H160([1; 20])); +pub const BOB: AccountId = MockAccount(H160([2; 20])); + /// Externality builder for pallet migration's mock runtime pub(crate) struct ExtBuilder { // endowed accounts with balances - balances: Vec<(AccountId32, Balance)>, + balances: Vec<(AccountId, Balance)>, } impl Default for ExtBuilder { fn default() -> ExtBuilder { - ExtBuilder { balances: vec![] } + ExtBuilder { + balances: vec![ + (ALITH, 1000), + (BOB, 1000), + (AssetManager::account_id(), 1000), + ], + } } } diff --git a/pallets/moonbeam-lazy-migrations/src/tests.rs b/pallets/moonbeam-lazy-migrations/src/tests.rs index 49a457ed34..2780651266 100644 --- a/pallets/moonbeam-lazy-migrations/src/tests.rs +++ b/pallets/moonbeam-lazy-migrations/src/tests.rs @@ -15,9 +15,20 @@ // along with Moonbeam. If not, see . //! Unit testing +use crate::{ + foreign_asset::ForeignAssetMigrationStatus, + mock::{AssetId, Balances}, +}; +use frame_support::traits::fungibles::approvals::Inspect; +use pallet_evm::AddressMapping; +use sp_runtime::{BoundedVec, DispatchError}; +use xcm::latest::Location; use { crate::{ - mock::{ExtBuilder, LazyMigrations, RuntimeOrigin, Test}, + mock::{ + AccountId, AssetManager, Assets, ExtBuilder, LazyMigrations, MockAssetType, + RuntimeOrigin, Test, ALITH, BOB, + }, Error, StateMigrationStatus, StateMigrationStatusValue, MAX_ITEM_PROOF_SIZE, PROOF_SIZE_BUFFER, }, @@ -25,11 +36,9 @@ use { rlp::RlpStream, sp_core::{H160, H256}, sp_io::hashing::keccak_256, - sp_runtime::{traits::Bounded, AccountId32}, + sp_runtime::traits::Bounded, }; -use pallet_evm::AddressMapping; - // Helper function that calculates the contract address pub fn contract_address(sender: H160, nonce: u64) -> H160 { let mut rlp = RlpStream::new_list(2); @@ -77,7 +86,7 @@ fn test_create_contract_metadata_contract_not_exist() { ExtBuilder::default().build().execute_with(|| { assert_noop!( LazyMigrations::create_contract_metadata( - RuntimeOrigin::signed(AccountId32::from([45; 32])), + RuntimeOrigin::signed(AccountId::from([45; 20])), address_build(1), ), Error::::ContractNotExist @@ -92,7 +101,7 @@ fn test_create_contract_metadata_success_path() { let address = create_dummy_contract_without_metadata(1); assert_ok!(LazyMigrations::create_contract_metadata( - RuntimeOrigin::signed(AccountId32::from([45; 32])), + RuntimeOrigin::signed(AccountId::from([45; 20])), address, )); @@ -101,7 +110,7 @@ fn test_create_contract_metadata_success_path() { // Should not be able to set metadata again assert_noop!( LazyMigrations::create_contract_metadata( - RuntimeOrigin::signed(AccountId32::from([45; 32])), + RuntimeOrigin::signed(AccountId::from([45; 20])), address, ), Error::::ContractMetadataAlreadySet @@ -374,3 +383,888 @@ fn test_state_migration_will_migrate_10_000_items() { assert_eq!(total_weight, weight_for(expected_reads, expected_writes)); }) } + +// Helper function to create a foreign asset with basic metadata +fn create_old_foreign_asset(location: Location) -> AssetId { + let asset = MockAssetType::Xcm(location.clone().into()); + let asset_id: AssetId = asset.clone().into(); + // First register asset in asset manager with a Location + assert_ok!(AssetManager::register_foreign_asset( + RuntimeOrigin::root(), + asset, + 1, + 1, + true, + )); + + // Set metadata for the asset + assert_ok!(Assets::set_metadata( + RuntimeOrigin::signed(AssetManager::account_id()), + asset_id, + b"Test".to_vec(), + b"TEST".to_vec(), + 12, + )); + + asset_id +} + +#[test] +fn test_approve_foreign_asset_migration_unauthorized() { + ExtBuilder::default().build().execute_with(|| { + let location = xcm::latest::Location::new(1, [xcm::latest::Junction::Parachain(1000)]); + let asset_id = create_old_foreign_asset(location); + + // Try to approve migration with non-root origin + assert_noop!( + LazyMigrations::approve_assets_to_migrate( + RuntimeOrigin::signed(BOB), + BoundedVec::try_from(vec![asset_id]).unwrap() + ), + DispatchError::BadOrigin + ); + }); +} + +#[test] +fn test_approve_foreign_asset_migration_success() { + ExtBuilder::default().build().execute_with(|| { + let location = xcm::latest::Location::new(1, [xcm::latest::Junction::Parachain(1000)]); + let asset_id = create_old_foreign_asset(location); + + // Try to approve migration with root origin + assert_ok!(LazyMigrations::approve_assets_to_migrate( + RuntimeOrigin::root(), + BoundedVec::try_from(vec![asset_id]).unwrap() + )); + + // Verify the asset is approved for migration + assert!(crate::pallet::ApprovedForeignAssets::::contains_key( + asset_id + )); + }); +} + +#[test] +fn test_start_foreign_asset_migration_success() { + ExtBuilder::default().build().execute_with(|| { + let location = xcm::latest::Location::new(1, [xcm::latest::Junction::Parachain(1000)]); + let asset_id = create_old_foreign_asset(location); + + assert_ok!(Assets::mint( + RuntimeOrigin::signed(AssetManager::account_id()), + asset_id.into(), + ALITH.into(), + 100, + )); + + // Verify asset is live by calling transfer in pallet assets + assert_ok!(Assets::transfer( + RuntimeOrigin::signed(ALITH), + asset_id.into(), + BOB.into(), + 100, + )); + + // Approve the migration of the asset + assert_ok!(LazyMigrations::approve_assets_to_migrate( + RuntimeOrigin::root(), + BoundedVec::try_from(vec![asset_id]).unwrap(), + )); + + // Try to migrate the asset + assert_ok!(LazyMigrations::start_foreign_assets_migration( + RuntimeOrigin::signed(ALITH), + asset_id, + )); + + // Verify asset is frozen by calling transfer in pallet assets + assert_noop!( + Assets::transfer( + RuntimeOrigin::signed(ALITH), + asset_id.into(), + BOB.into(), + 100, + ), + pallet_assets::Error::::AssetNotLive + ); + + // Verify migration status + match crate::pallet::ForeignAssetMigrationStatusValue::::get() { + ForeignAssetMigrationStatus::Migrating(info) => { + assert_eq!(info.asset_id, asset_id); + assert_eq!(info.remaining_balances, 1); + assert_eq!(info.remaining_approvals, 0); + } + _ => panic!("Expected migration status to be Migrating"), + } + }); +} + +#[test] +fn test_start_foreign_asset_migration_already_migrating() { + ExtBuilder::default().build().execute_with(|| { + let location = xcm::latest::Location::new(1, [xcm::latest::Junction::Parachain(1000)]); + let asset_id = create_old_foreign_asset(location); + + // Approve the migration of the asset + assert_ok!(LazyMigrations::approve_assets_to_migrate( + RuntimeOrigin::root(), + BoundedVec::try_from(vec![asset_id]).unwrap(), + )); + + // Start first migrationJunction::Parachain(1000) + assert_ok!(LazyMigrations::start_foreign_assets_migration( + RuntimeOrigin::signed(ALITH), + asset_id, + )); + + // Try to start another migration while one is in progress + assert_noop!( + LazyMigrations::start_foreign_assets_migration(RuntimeOrigin::signed(ALITH), 2u128), + Error::::MigrationNotFinished + ); + }); +} + +#[test] +fn test_start_foreign_asset_migration_asset_not_found() { + ExtBuilder::default().build().execute_with(|| { + // Try to migrate non-existent asset + assert_noop!( + LazyMigrations::start_foreign_assets_migration(RuntimeOrigin::signed(ALITH), 1u128), + Error::::AssetNotFound + ); + }); +} + +#[test] +fn test_start_foreign_asset_migration_asset_type_not_found() { + ExtBuilder::default().build().execute_with(|| { + let asset_id = 1u128; + + // Create asset without registering in asset manager + assert_ok!(Assets::create( + RuntimeOrigin::signed(ALITH), + asset_id.into(), + ALITH.into(), + 1, + )); + + // Approve the migration of the asset + assert_ok!(LazyMigrations::approve_assets_to_migrate( + RuntimeOrigin::root(), + BoundedVec::try_from(vec![asset_id]).unwrap(), + )); + + assert_noop!( + LazyMigrations::start_foreign_assets_migration(RuntimeOrigin::signed(ALITH), asset_id), + Error::::AssetTypeNotFound + ); + }); +} + +#[test] +fn test_start_foreign_asset_migration_with_balances_and_approvals() { + ExtBuilder::default().build().execute_with(|| { + let location = xcm::latest::Location::new(1, [xcm::latest::Junction::Parachain(1000)]); + let asset_id = create_old_foreign_asset(location); + + // Add some balances + assert_ok!(Assets::mint( + RuntimeOrigin::signed(AssetManager::account_id()), + asset_id.into(), + BOB.into(), + 100, + )); + + // Add some approvals + assert_ok!(Assets::approve_transfer( + RuntimeOrigin::signed(BOB), + asset_id.into(), + AccountId::from([3; 20]).into(), + 50, + )); + + // Approve the migration of the asset + assert_ok!(LazyMigrations::approve_assets_to_migrate( + RuntimeOrigin::root(), + BoundedVec::try_from(vec![asset_id]).unwrap(), + )); + + // Start migration + assert_ok!(LazyMigrations::start_foreign_assets_migration( + RuntimeOrigin::signed(ALITH), + asset_id, + )); + + // Verify migration status includes the balances and approvals + match crate::pallet::ForeignAssetMigrationStatusValue::::get() { + ForeignAssetMigrationStatus::Migrating(info) => { + assert_eq!(info.asset_id, asset_id); + assert_eq!(info.remaining_balances, 1); + assert_eq!(info.remaining_approvals, 1); + } + _ => panic!("Expected migration status to be Migrating"), + } + }); +} + +#[test] +fn test_migrate_foreign_asset_balances_without_migration_started() { + ExtBuilder::default().build().execute_with(|| { + assert_noop!( + LazyMigrations::migrate_foreign_asset_balances(RuntimeOrigin::signed(ALITH), 100), + Error::::NoMigrationInProgress + ); + }); +} + +#[test] +fn test_migrate_foreign_asset_balances_zero_limit() { + ExtBuilder::default().build().execute_with(|| { + let location = xcm::latest::Location::new(1, [xcm::latest::Junction::Parachain(1000)]); + let asset_id = create_old_foreign_asset(location); + + // Approve the migration of the asset + assert_ok!(LazyMigrations::approve_assets_to_migrate( + RuntimeOrigin::root(), + BoundedVec::try_from(vec![asset_id]).unwrap(), + )); + + // Start migration + assert_ok!(LazyMigrations::start_foreign_assets_migration( + RuntimeOrigin::signed(ALITH), + asset_id, + )); + + assert_noop!( + LazyMigrations::migrate_foreign_asset_balances(RuntimeOrigin::signed(ALITH), 0), + Error::::LimitCannotBeZero + ); + }); +} + +#[test] +fn test_migrate_foreign_asset_balances_single_account() { + ExtBuilder::default().build().execute_with(|| { + let location = xcm::latest::Location::new(1, [xcm::latest::Junction::Parachain(1000)]); + let asset_id = create_old_foreign_asset(location); + + // Mint some tokens to an account + assert_ok!(Assets::mint( + RuntimeOrigin::signed(AssetManager::account_id()), + asset_id.into(), + BOB.into(), + 100, + )); + + // Approve the migration of the asset + assert_ok!(LazyMigrations::approve_assets_to_migrate( + RuntimeOrigin::root(), + BoundedVec::try_from(vec![asset_id]).unwrap(), + )); + + // Start migration + assert_ok!(LazyMigrations::start_foreign_assets_migration( + RuntimeOrigin::signed(ALITH), + asset_id, + )); + + // Migrate balances + assert_ok!(LazyMigrations::migrate_foreign_asset_balances( + RuntimeOrigin::signed(ALITH), + 10 + )); + + // Verify migration status + match crate::pallet::ForeignAssetMigrationStatusValue::::get() { + ForeignAssetMigrationStatus::Migrating(info) => { + assert_eq!(info.asset_id, asset_id); + assert_eq!(info.remaining_balances, 0); + assert_eq!(info.remaining_approvals, 0); + } + _ => panic!("Expected migration status to be Migrating"), + } + + // Verify the balance was migrated by + assert_eq!(Assets::balance(asset_id, BOB), 0); + }); +} + +#[test] +fn test_migrate_foreign_asset_balances_multiple_accounts() { + ExtBuilder::default().build().execute_with(|| { + let location = xcm::latest::Location::new(1, [xcm::latest::Junction::Parachain(1000)]); + let asset_id = create_old_foreign_asset(location); + + // Mint tokens to multiple accounts + for i in 1..=5 { + assert_ok!(Assets::mint( + RuntimeOrigin::signed(AssetManager::account_id()), + asset_id.into(), + AccountId::from([i as u8; 20]).into(), + 100 * i as u128, + )); + } + + // Approve the migration of the asset + assert_ok!(LazyMigrations::approve_assets_to_migrate( + RuntimeOrigin::root(), + BoundedVec::try_from(vec![asset_id]).unwrap(), + )); + + // Start migration + assert_ok!(LazyMigrations::start_foreign_assets_migration( + RuntimeOrigin::signed(ALITH), + asset_id, + )); + + // Migrate balances in batches + assert_ok!(LazyMigrations::migrate_foreign_asset_balances( + RuntimeOrigin::signed(ALITH), + 3 + )); + + // Check intermediate state + match crate::pallet::ForeignAssetMigrationStatusValue::::get() { + ForeignAssetMigrationStatus::Migrating(info) => { + assert_eq!(info.asset_id, asset_id); + assert_eq!(info.remaining_balances, 2); + assert_eq!(info.remaining_approvals, 0); + } + _ => panic!("Expected migration status to be Migrating"), + } + + // Migrate remaining balances + assert_ok!(LazyMigrations::migrate_foreign_asset_balances( + RuntimeOrigin::signed(ALITH), + 2 + )); + + // Verify final state + match crate::pallet::ForeignAssetMigrationStatusValue::::get() { + ForeignAssetMigrationStatus::Migrating(info) => { + assert_eq!(info.asset_id, asset_id); + assert_eq!(info.remaining_balances, 0); + assert_eq!(info.remaining_approvals, 0); + } + _ => panic!("Expected migration status to be Migrating"), + } + + // Verify all balances were migrated correctly + for i in 1..=5 { + assert_eq!(Assets::balance(asset_id, AccountId::from([i as u8; 20])), 0); + } + }); +} + +#[test] +fn test_migrate_foreign_asset_balances_with_reserved_deposits() { + ExtBuilder::default().build().execute_with(|| { + let location = xcm::latest::Location::new(1, [xcm::latest::Junction::Parachain(1000)]); + let asset_id = create_old_foreign_asset(location); + + // Create account with reserved deposit + let account = BOB; + assert_ok!(Assets::touch( + RuntimeOrigin::signed(account.clone()), + asset_id.into(), + )); + + // Mint some tokens + assert_ok!(Assets::mint( + RuntimeOrigin::signed(AssetManager::account_id()), + asset_id.into(), + account.clone().into(), + 100, + )); + + // Check initial reserved balance + let initial_reserved = Balances::reserved_balance(&account); + assert!(initial_reserved > 0); + + // Approve the migration of the asset + assert_ok!(LazyMigrations::approve_assets_to_migrate( + RuntimeOrigin::root(), + BoundedVec::try_from(vec![asset_id]).unwrap(), + )); + + // Start migration + assert_ok!(LazyMigrations::start_foreign_assets_migration( + RuntimeOrigin::signed(ALITH), + asset_id, + )); + + // Migrate balances + assert_ok!(LazyMigrations::migrate_foreign_asset_balances( + RuntimeOrigin::signed(ALITH), + 10 + )); + + // Verify the balance was migrated + assert_eq!(Assets::balance(asset_id, account.clone()), 0); + + // Verify the deposit was unreserved + assert_eq!(Balances::reserved_balance(&account), 0); + }); +} + +#[test] +fn test_migrate_foreign_asset_approvals_without_migration_started() { + ExtBuilder::default().build().execute_with(|| { + assert_noop!( + LazyMigrations::migrate_foreign_asset_approvals( + RuntimeOrigin::signed(AccountId::from([45; 20])), + 100 + ), + Error::::NoMigrationInProgress + ); + }); +} + +#[test] +fn test_migrate_foreign_asset_approvals_zero_limit() { + ExtBuilder::default().build().execute_with(|| { + // Create and start migration for an asset + let location = xcm::latest::Location::new(1, [xcm::latest::Junction::Parachain(1000)]); + let asset_id = create_old_foreign_asset(location); + + // Approve the migration of the asset + assert_ok!(LazyMigrations::approve_assets_to_migrate( + RuntimeOrigin::root(), + BoundedVec::try_from(vec![asset_id]).unwrap(), + )); + + assert_ok!(LazyMigrations::start_foreign_assets_migration( + RuntimeOrigin::signed(ALITH), + asset_id, + )); + + assert_noop!( + LazyMigrations::migrate_foreign_asset_approvals( + RuntimeOrigin::signed(AccountId::from([45; 20])), + 0 + ), + Error::::LimitCannotBeZero + ); + }); +} + +#[test] +fn test_migrate_foreign_asset_approvals_single_approval() { + ExtBuilder::default().build().execute_with(|| { + let location = xcm::latest::Location::new(1, [xcm::latest::Junction::Parachain(1000)]); + let asset_id = create_old_foreign_asset(location); + + // Create an approval + assert_ok!(Assets::approve_transfer( + RuntimeOrigin::signed(BOB), + asset_id.into(), + AccountId::from([3; 20]).into(), + 50, + )); + + // Approve the migration of the asset + assert_ok!(LazyMigrations::approve_assets_to_migrate( + RuntimeOrigin::root(), + BoundedVec::try_from(vec![asset_id]).unwrap(), + )); + + // Start migration + assert_ok!(LazyMigrations::start_foreign_assets_migration( + RuntimeOrigin::signed(ALITH), + asset_id, + )); + + // Check initial migration status + match crate::pallet::ForeignAssetMigrationStatusValue::::get() { + ForeignAssetMigrationStatus::Migrating(info) => { + assert_eq!(info.remaining_approvals, 1); + } + _ => panic!("Expected migration status to be Migrating"), + } + + // Initial reserved balance for approval + let initial_reserved = Balances::reserved_balance(&BOB); + assert!(initial_reserved > 0); + + // Migrate approvals + assert_ok!(LazyMigrations::migrate_foreign_asset_approvals( + RuntimeOrigin::signed(ALITH), + 10 + )); + + // Check final migration status + match crate::pallet::ForeignAssetMigrationStatusValue::::get() { + ForeignAssetMigrationStatus::Migrating(info) => { + assert_eq!(info.remaining_approvals, 0); + } + _ => panic!("Expected migration status to be Migrating"), + } + + // Verify the deposit was unreserved + assert_eq!(Balances::reserved_balance(&BOB), 0); + }); +} + +#[test] +fn test_migrate_foreign_asset_approvals_multiple_approvals() { + ExtBuilder::default().build().execute_with(|| { + let location = xcm::latest::Location::new(1, [xcm::latest::Junction::Parachain(1000)]); + let asset_id = create_old_foreign_asset(location); + + // Create multiple approvals from different accounts + for i in 1..=5 { + let owner = AccountId::from([i as u8; 20]); + // Add balance for each account + assert_ok!(Balances::force_set_balance( + RuntimeOrigin::root(), + owner.clone(), + 100 * i as u128, + )); + + let spender = AccountId::from([i as u8 + 1; 20]); + assert_ok!(Assets::approve_transfer( + RuntimeOrigin::signed(owner.clone()), + asset_id.into(), + spender.into(), + 50 * i as u128, + )); + } + + // Approve the migration of the asset + assert_ok!(LazyMigrations::approve_assets_to_migrate( + RuntimeOrigin::root(), + BoundedVec::try_from(vec![asset_id]).unwrap(), + )); + + // Start migration + assert_ok!(LazyMigrations::start_foreign_assets_migration( + RuntimeOrigin::signed(ALITH), + asset_id, + )); + + // Check initial migration status + match crate::pallet::ForeignAssetMigrationStatusValue::::get() { + ForeignAssetMigrationStatus::Migrating(info) => { + assert_eq!(info.remaining_approvals, 5); + } + _ => panic!("Expected migration status to be Migrating"), + } + + // Migrate approvals in batches + assert_ok!(LazyMigrations::migrate_foreign_asset_approvals( + RuntimeOrigin::signed(ALITH), + 3 + )); + + // Check intermediate state + match crate::pallet::ForeignAssetMigrationStatusValue::::get() { + ForeignAssetMigrationStatus::Migrating(info) => { + assert_eq!(info.remaining_approvals, 2); + } + _ => panic!("Expected migration status to be Migrating"), + } + + // Migrate remaining approvals + assert_ok!(LazyMigrations::migrate_foreign_asset_approvals( + RuntimeOrigin::signed(ALITH), + 2 + )); + + // Check final migration status + match crate::pallet::ForeignAssetMigrationStatusValue::::get() { + ForeignAssetMigrationStatus::Migrating(info) => { + assert_eq!(info.remaining_approvals, 0); + } + _ => panic!("Expected migration status to be Migrating"), + } + + // Verify all deposits were unreserved + for i in 1..=5 { + let owner = AccountId::from([i as u8; 20]); + assert_eq!(Balances::reserved_balance(&owner), 0); + } + }); +} + +#[test] +fn test_migrate_foreign_asset_approvals_with_balances() { + ExtBuilder::default().build().execute_with(|| { + let location = xcm::latest::Location::new(1, [xcm::latest::Junction::Parachain(1000)]); + let asset_id = create_old_foreign_asset(location); + + // Create balance and approval for account + assert_ok!(Assets::mint( + RuntimeOrigin::signed(AssetManager::account_id()), + asset_id.into(), + BOB.into(), + 100, + )); + + assert_ok!(Assets::approve_transfer( + RuntimeOrigin::signed(BOB), + asset_id.into(), + AccountId::from([3; 20]).into(), + 50, + )); + + // Approve the migration of the asset + assert_ok!(LazyMigrations::approve_assets_to_migrate( + RuntimeOrigin::root(), + BoundedVec::try_from(vec![asset_id]).unwrap(), + )); + + // Start migration + assert_ok!(LazyMigrations::start_foreign_assets_migration( + RuntimeOrigin::signed(ALITH), + asset_id, + )); + + // Migrate approvals first + assert_ok!(LazyMigrations::migrate_foreign_asset_approvals( + RuntimeOrigin::signed(ALITH), + 10 + )); + + // Check that approvals were migrated but balances remain + match crate::pallet::ForeignAssetMigrationStatusValue::::get() { + ForeignAssetMigrationStatus::Migrating(info) => { + assert_eq!(info.remaining_approvals, 0); + assert_eq!(info.remaining_balances, 1); + } + _ => panic!("Expected migration status to be Migrating"), + } + + // Migrate balances + assert_ok!(LazyMigrations::migrate_foreign_asset_balances( + RuntimeOrigin::signed(ALITH), + 10 + )); + + // Verify final state + match crate::pallet::ForeignAssetMigrationStatusValue::::get() { + ForeignAssetMigrationStatus::Migrating(info) => { + assert_eq!(info.remaining_approvals, 0); + assert_eq!(info.remaining_balances, 0); + } + _ => panic!("Expected migration status to be Migrating"), + } + }); +} + +#[test] +fn test_migrate_foreign_asset_approvals_exceed_limit() { + ExtBuilder::default().build().execute_with(|| { + let location = xcm::latest::Location::new(1, [xcm::latest::Junction::Parachain(1000)]); + let asset_id = create_old_foreign_asset(location); + + for i in 1..=10 { + let owner = AccountId::from([i as u8; 20]); + // Add balance and approval for each account + assert_ok!(Balances::force_set_balance( + RuntimeOrigin::root(), + owner.clone(), + 100 * i as u128, + )); + + let spender = AccountId::from([i as u8 + 1; 20]); + assert_ok!(Assets::approve_transfer( + RuntimeOrigin::signed(owner.clone()), + asset_id.into(), + spender.into(), + 50 * i as u128, + )); + } + + // Approve the migration of the asset + assert_ok!(LazyMigrations::approve_assets_to_migrate( + RuntimeOrigin::root(), + BoundedVec::try_from(vec![asset_id]).unwrap(), + )); + + // Start migration + assert_ok!(LazyMigrations::start_foreign_assets_migration( + RuntimeOrigin::signed(ALITH), + asset_id, + )); + + // Migrate with limit less than total approvals + assert_ok!(LazyMigrations::migrate_foreign_asset_approvals( + RuntimeOrigin::signed(ALITH), + 5 + )); + + // Verify partial migration + match crate::pallet::ForeignAssetMigrationStatusValue::::get() { + ForeignAssetMigrationStatus::Migrating(info) => { + assert_eq!(info.remaining_approvals, 5); + } + _ => panic!("Expected migration status to be Migrating"), + } + }); +} + +#[test] +fn test_finish_foreign_assets_migration_success() { + ExtBuilder::default().build().execute_with(|| { + // Setup: Create and start migration for an asset + let location = xcm::latest::Location::new(1, [xcm::latest::Junction::Parachain(1000)]); + let asset_id = create_old_foreign_asset(location); + + // Create balance and approval for account + assert_ok!(Assets::mint( + RuntimeOrigin::signed(AssetManager::account_id()), + asset_id.into(), + BOB.into(), + 100, + )); + + assert_ok!(Assets::approve_transfer( + RuntimeOrigin::signed(BOB), + asset_id.into(), + AccountId::from([3; 20]).into(), + 50, + )); + + // Initial balances + assert_eq!(Assets::balance(asset_id, BOB), 100); + assert!(Balances::reserved_balance(&BOB) > 0); + assert_eq!( + Assets::allowance(asset_id, &BOB, &AccountId::from([3; 20])), + 50 + ); + assert!(Balances::reserved_balance(&AssetManager::account_id()) > 0); + + // Approve the migration of the asset + assert_ok!(LazyMigrations::approve_assets_to_migrate( + RuntimeOrigin::root(), + BoundedVec::try_from(vec![asset_id]).unwrap(), + )); + + // Start and complete migration + assert_ok!(LazyMigrations::start_foreign_assets_migration( + RuntimeOrigin::signed(ALITH), + asset_id, + )); + + assert_ok!(LazyMigrations::migrate_foreign_asset_approvals( + RuntimeOrigin::signed(ALITH), + 10 + )); + assert_ok!(LazyMigrations::migrate_foreign_asset_balances( + RuntimeOrigin::signed(ALITH), + 10 + )); + assert_ok!(LazyMigrations::finish_foreign_assets_migration( + RuntimeOrigin::signed(ALITH) + )); + + // Verify status is reset to Idle + assert_eq!( + crate::pallet::ForeignAssetMigrationStatusValue::::get(), + ForeignAssetMigrationStatus::Idle + ); + + // Verify all deposits are unreserved + assert_eq!(Balances::reserved_balance(&BOB), 0); + assert_eq!(Balances::reserved_balance(&AssetManager::account_id()), 0); + + // Verify the old asset is completely removed + assert!(pallet_assets::Asset::::get(asset_id).is_none()); + assert_eq!(pallet_assets::Metadata::::get(asset_id).deposit, 0); + }); +} + +#[test] +fn test_finish_foreign_assets_migration_no_migration_in_progress() { + ExtBuilder::default().build().execute_with(|| { + assert_noop!( + LazyMigrations::finish_foreign_assets_migration(RuntimeOrigin::signed(ALITH)), + Error::::NoMigrationInProgress + ); + }); +} + +#[test] +fn test_finish_foreign_assets_migration_with_remaining_balances() { + ExtBuilder::default().build().execute_with(|| { + let location = xcm::latest::Location::new(1, [xcm::latest::Junction::Parachain(1000)]); + let asset_id = create_old_foreign_asset(location); + + // Create balance but no approvals + assert_ok!(Assets::mint( + RuntimeOrigin::signed(AssetManager::account_id()), + asset_id.into(), + BOB.into(), + 100, + )); + + // Approve the migration of the asset + assert_ok!(LazyMigrations::approve_assets_to_migrate( + RuntimeOrigin::root(), + BoundedVec::try_from(vec![asset_id]).unwrap(), + )); + + // Start migration but don't migrate balances + assert_ok!(LazyMigrations::start_foreign_assets_migration( + RuntimeOrigin::signed(ALITH), + asset_id, + )); + + assert_noop!( + LazyMigrations::finish_foreign_assets_migration(RuntimeOrigin::signed(ALITH)), + Error::::MigrationNotFinished + ); + + // Verify we're still in migrating state + match crate::pallet::ForeignAssetMigrationStatusValue::::get() { + ForeignAssetMigrationStatus::Migrating(info) => { + assert_eq!(info.remaining_balances, 1); + } + _ => panic!("Expected migration status to be Migrating"), + } + }); +} + +#[test] +fn test_finish_foreign_assets_migration_with_remaining_approvals() { + ExtBuilder::default().build().execute_with(|| { + let location = xcm::latest::Location::new(1, [xcm::latest::Junction::Parachain(1000)]); + let asset_id = create_old_foreign_asset(location); + + // Create approval but no balances + assert_ok!(Assets::approve_transfer( + RuntimeOrigin::signed(BOB), + asset_id.into(), + AccountId::from([3; 20]).into(), + 50, + )); + + // Approve the migration of the asset + assert_ok!(LazyMigrations::approve_assets_to_migrate( + RuntimeOrigin::root(), + BoundedVec::try_from(vec![asset_id]).unwrap(), + )); + + // Start migration but don't migrate approvals + assert_ok!(LazyMigrations::start_foreign_assets_migration( + RuntimeOrigin::signed(ALITH), + asset_id, + )); + + assert_noop!( + LazyMigrations::finish_foreign_assets_migration(RuntimeOrigin::signed(ALITH)), + Error::::MigrationNotFinished + ); + + // Verify we're still in migrating state + match crate::pallet::ForeignAssetMigrationStatusValue::::get() { + ForeignAssetMigrationStatus::Migrating(info) => { + assert_eq!(info.remaining_approvals, 1); + } + _ => panic!("Expected migration status to be Migrating"), + } + }); +} diff --git a/pallets/moonbeam-lazy-migrations/src/weights.rs b/pallets/moonbeam-lazy-migrations/src/weights.rs index 46b9fc6509..24d74b6c94 100644 --- a/pallets/moonbeam-lazy-migrations/src/weights.rs +++ b/pallets/moonbeam-lazy-migrations/src/weights.rs @@ -14,22 +14,378 @@ // You should have received a copy of the GNU General Public License // along with Moonbeam. If not, see . +//! Autogenerated weights for `pallet_moonbeam_lazy_migrations` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 42.0.0 +//! DATE: 2024-11-29, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! WORST CASE MAP SIZE: `1000000` +//! HOSTNAME: `device-46.home`, CPU: `` +//! WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024 + +// Executed Command: +// ./target/release/moonbeam +// benchmark +// pallet +// --execution=wasm +// --wasm-execution=compiled +// --pallet +// pallet_moonbeam_lazy_migrations +// --extrinsic +// * +// --steps +// 50 +// --repeat +// 20 +// --header=./file_header.txt +// --template=./benchmarking/frame-weight-template.hbs +// --json-file +// raw.json +// --output +// weights.rs + #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] +/// Weights for `pallet_moonbeam_lazy_migrations`. use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}}; use sp_std::marker::PhantomData; - -/// Weight functions needed for pallet_moonbeam_lazy_migrations. pub trait WeightInfo { + fn approve_assets_to_migrate(n: u32, ) -> Weight; + fn start_foreign_assets_migration() -> Weight; + fn migrate_foreign_asset_balances(n: u32, ) -> Weight; + fn migrate_foreign_asset_approvals(n: u32, ) -> Weight; + fn finish_foreign_assets_migration() -> Weight; } - -/// Weights for pallet_moonbeam_lazy_migrations using the Substrate node and recommended hardware. -pub struct SubstrateWeight(PhantomData); -impl WeightInfo for SubstrateWeight { +pub struct SubstrateWeightInfo(PhantomData); +impl WeightInfo for SubstrateWeightInfo { + /// Storage: `Assets::Asset` (r:100 w:0) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(174), added: 2649, mode: `MaxEncodedLen`) + /// Storage: `MoonbeamLazyMigrations::ApprovedForeignAssets` (r:0 w:100) + /// Proof: `MoonbeamLazyMigrations::ApprovedForeignAssets` (`max_values`: None, `max_size`: Some(24), added: 2499, mode: `MaxEncodedLen`) + /// The range of component `n` is `[1, 100]`. + fn approve_assets_to_migrate(n: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `73 + n * (69 ±0)` + // Estimated: `990 + n * (2649 ±0)` + // Minimum execution time: 6_000_000 picoseconds. + Weight::from_parts(1_043_425, 990) + // Standard Error: 5_952 + .saturating_add(Weight::from_parts(3_473_582, 0).saturating_mul(n.into())) + .saturating_add(RocksDbWeight::get().reads((1_u64).saturating_mul(n.into()))) + .saturating_add(RocksDbWeight::get().writes((1_u64).saturating_mul(n.into()))) + .saturating_add(Weight::from_parts(0, 2649).saturating_mul(n.into())) + } + /// Storage: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (r:1 w:1) + /// Proof: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (`max_values`: Some(1), `max_size`: Some(25), added: 520, mode: `MaxEncodedLen`) + /// Storage: `Assets::Asset` (r:1 w:1) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(174), added: 2649, mode: `MaxEncodedLen`) + /// Storage: `Assets::Metadata` (r:1 w:0) + /// Proof: `Assets::Metadata` (`max_values`: None, `max_size`: Some(152), added: 2627, mode: `MaxEncodedLen`) + /// Storage: `AssetManager::AssetIdType` (r:1 w:1) + /// Proof: `AssetManager::AssetIdType` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `EvmForeignAssets::AssetsById` (r:1 w:1) + /// Proof: `EvmForeignAssets::AssetsById` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `EvmForeignAssets::AssetsByLocation` (r:1 w:1) + /// Proof: `EvmForeignAssets::AssetsByLocation` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `EvmForeignAssets::CounterForAssetsById` (r:1 w:1) + /// Proof: `EvmForeignAssets::CounterForAssetsById` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`) + /// Storage: `EthereumXcm::EthereumXcmSuspended` (r:1 w:0) + /// Proof: `EthereumXcm::EthereumXcmSuspended` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumXcm::Nonce` (r:1 w:1) + /// Proof: `EthereumXcm::Nonce` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumChainId::ChainId` (r:1 w:0) + /// Proof: `EthereumChainId::ChainId` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`) + /// Storage: `TransactionPayment::NextFeeMultiplier` (r:1 w:0) + /// Proof: `TransactionPayment::NextFeeMultiplier` (`max_values`: Some(1), `max_size`: Some(16), added: 511, mode: `MaxEncodedLen`) + /// Storage: `EVM::AccountCodesMetadata` (r:1 w:1) + /// Proof: `EVM::AccountCodesMetadata` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `System::Account` (r:2 w:2) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(116), added: 2591, mode: `MaxEncodedLen`) + /// Storage: `EVM::AccountStorages` (r:11 w:11) + /// Proof: `EVM::AccountStorages` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `EVM::Suicided` (r:1 w:0) + /// Proof: `EVM::Suicided` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Ethereum::Pending` (r:1 w:1) + /// Proof: `Ethereum::Pending` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EVM::AccountCodes` (r:0 w:1) + /// Proof: `EVM::AccountCodes` (`max_values`: None, `max_size`: None, mode: `Measured`) + fn start_foreign_assets_migration() -> Weight { + // Proof Size summary in bytes: + // Measured: `2036` + // Estimated: `30251` + // Minimum execution time: 571_000_000 picoseconds. + Weight::from_parts(575_000_000, 30251) + .saturating_add(T::DbWeight::get().reads(27_u64)) + .saturating_add(T::DbWeight::get().writes(23_u64)) + } + /// Storage: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (r:1 w:1) + /// Proof: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (`max_values`: Some(1), `max_size`: Some(25), added: 520, mode: `MaxEncodedLen`) + /// Storage: `Assets::Account` (r:1001 w:1000) + /// Proof: `Assets::Account` (`max_values`: None, `max_size`: Some(122), added: 2597, mode: `MaxEncodedLen`) + /// Storage: `System::Account` (r:1001 w:1001) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(116), added: 2591, mode: `MaxEncodedLen`) + /// Storage: `MaintenanceMode::MaintenanceMode` (r:1 w:0) + /// Proof: `MaintenanceMode::MaintenanceMode` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumXcm::EthereumXcmSuspended` (r:1 w:0) + /// Proof: `EthereumXcm::EthereumXcmSuspended` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumXcm::Nonce` (r:1 w:1) + /// Proof: `EthereumXcm::Nonce` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumChainId::ChainId` (r:1 w:0) + /// Proof: `EthereumChainId::ChainId` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`) + /// Storage: `TransactionPayment::NextFeeMultiplier` (r:1 w:0) + /// Proof: `TransactionPayment::NextFeeMultiplier` (`max_values`: Some(1), `max_size`: Some(16), added: 511, mode: `MaxEncodedLen`) + /// Storage: `EVM::AccountCodesMetadata` (r:2 w:0) + /// Proof: `EVM::AccountCodesMetadata` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `System::Digest` (r:1 w:0) + /// Proof: `System::Digest` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EVM::AccountCodes` (r:1 w:0) + /// Proof: `EVM::AccountCodes` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Assets::Asset` (r:1 w:0) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(174), added: 2649, mode: `MaxEncodedLen`) + /// Storage: `EVM::AccountStorages` (r:1002 w:1001) + /// Proof: `EVM::AccountStorages` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Ethereum::Pending` (r:1 w:1) + /// Proof: `Ethereum::Pending` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// The range of component `n` is `[1, 1000]`. + fn migrate_foreign_asset_balances(n: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `24733 + n * (215 ±0)` + // Estimated: `33276 + n * (2691 ±0)` + // Minimum execution time: 350_000_000 picoseconds. + Weight::from_parts(354_000_000, 33276) + // Standard Error: 6_615_203 + .saturating_add(Weight::from_parts(746_018_198, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().reads(19_u64)) + .saturating_add(T::DbWeight::get().reads((3_u64).saturating_mul(n.into()))) + .saturating_add(T::DbWeight::get().writes(8_u64)) + .saturating_add(T::DbWeight::get().writes((3_u64).saturating_mul(n.into()))) + .saturating_add(Weight::from_parts(0, 2691).saturating_mul(n.into())) + } + /// Storage: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (r:1 w:1) + /// Proof: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (`max_values`: Some(1), `max_size`: Some(25), added: 520, mode: `MaxEncodedLen`) + /// Storage: `Assets::Approvals` (r:1000 w:999) + /// Proof: `Assets::Approvals` (`max_values`: None, `max_size`: Some(136), added: 2611, mode: `MaxEncodedLen`) + /// Storage: `MaintenanceMode::MaintenanceMode` (r:1 w:0) + /// Proof: `MaintenanceMode::MaintenanceMode` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumXcm::EthereumXcmSuspended` (r:1 w:0) + /// Proof: `EthereumXcm::EthereumXcmSuspended` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumXcm::Nonce` (r:1 w:1) + /// Proof: `EthereumXcm::Nonce` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumChainId::ChainId` (r:1 w:0) + /// Proof: `EthereumChainId::ChainId` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`) + /// Storage: `TransactionPayment::NextFeeMultiplier` (r:1 w:0) + /// Proof: `TransactionPayment::NextFeeMultiplier` (`max_values`: Some(1), `max_size`: Some(16), added: 511, mode: `MaxEncodedLen`) + /// Storage: `EVM::AccountCodesMetadata` (r:2 w:0) + /// Proof: `EVM::AccountCodesMetadata` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(116), added: 2591, mode: `MaxEncodedLen`) + /// Storage: `System::Digest` (r:1 w:0) + /// Proof: `System::Digest` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EVM::AccountCodes` (r:1 w:0) + /// Proof: `EVM::AccountCodes` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Assets::Asset` (r:1 w:0) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(174), added: 2649, mode: `MaxEncodedLen`) + /// Storage: `EVM::AccountStorages` (r:1000 w:999) + /// Proof: `EVM::AccountStorages` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Ethereum::Pending` (r:1 w:1) + /// Proof: `Ethereum::Pending` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// The range of component `n` is `[1, 1000]`. + fn migrate_foreign_asset_approvals(n: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `26751 + n * (1367 ±0)` + // Estimated: `32664 + n * (3843 ±0)` + // Minimum execution time: 162_000_000 picoseconds. + Weight::from_parts(163_000_000, 32664) + // Standard Error: 22_761_178 + .saturating_add(Weight::from_parts(1_982_250_264, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().reads(15_u64)) + .saturating_add(T::DbWeight::get().reads((2_u64).saturating_mul(n.into()))) + .saturating_add(T::DbWeight::get().writes(4_u64)) + .saturating_add(T::DbWeight::get().writes((2_u64).saturating_mul(n.into()))) + .saturating_add(Weight::from_parts(0, 3843).saturating_mul(n.into())) + } + /// Storage: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (r:1 w:1) + /// Proof: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (`max_values`: Some(1), `max_size`: Some(25), added: 520, mode: `MaxEncodedLen`) + /// Storage: `Assets::Asset` (r:1 w:1) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(174), added: 2649, mode: `MaxEncodedLen`) + /// Storage: `Assets::Metadata` (r:1 w:1) + /// Proof: `Assets::Metadata` (`max_values`: None, `max_size`: Some(152), added: 2627, mode: `MaxEncodedLen`) + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(116), added: 2591, mode: `MaxEncodedLen`) + fn finish_foreign_assets_migration() -> Weight { + // Proof Size summary in bytes: + // Measured: `829` + // Estimated: `3639` + // Minimum execution time: 30_000_000 picoseconds. + Weight::from_parts(31_000_000, 3639) + .saturating_add(T::DbWeight::get().reads(4_u64)) + .saturating_add(T::DbWeight::get().writes(4_u64)) + } } -// For backwards compatibility and tests impl WeightInfo for () { + /// Storage: `Assets::Asset` (r:100 w:0) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(174), added: 2649, mode: `MaxEncodedLen`) + /// Storage: `MoonbeamLazyMigrations::ApprovedForeignAssets` (r:0 w:100) + /// Proof: `MoonbeamLazyMigrations::ApprovedForeignAssets` (`max_values`: None, `max_size`: Some(24), added: 2499, mode: `MaxEncodedLen`) + /// The range of component `n` is `[1, 100]`. + fn approve_assets_to_migrate(n: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `73 + n * (69 ±0)` + // Estimated: `990 + n * (2649 ±0)` + // Minimum execution time: 6_000_000 picoseconds. + Weight::from_parts(1_043_425, 990) + // Standard Error: 5_952 + .saturating_add(Weight::from_parts(3_473_582, 0).saturating_mul(n.into())) + .saturating_add(RocksDbWeight::get().reads((1_u64).saturating_mul(n.into()))) + .saturating_add(RocksDbWeight::get().writes((1_u64).saturating_mul(n.into()))) + .saturating_add(Weight::from_parts(0, 2649).saturating_mul(n.into())) + } + /// Storage: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (r:1 w:1) + /// Proof: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (`max_values`: Some(1), `max_size`: Some(25), added: 520, mode: `MaxEncodedLen`) + /// Storage: `Assets::Asset` (r:1 w:1) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(174), added: 2649, mode: `MaxEncodedLen`) + /// Storage: `Assets::Metadata` (r:1 w:0) + /// Proof: `Assets::Metadata` (`max_values`: None, `max_size`: Some(152), added: 2627, mode: `MaxEncodedLen`) + /// Storage: `AssetManager::AssetIdType` (r:1 w:1) + /// Proof: `AssetManager::AssetIdType` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `EvmForeignAssets::AssetsById` (r:1 w:1) + /// Proof: `EvmForeignAssets::AssetsById` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `EvmForeignAssets::AssetsByLocation` (r:1 w:1) + /// Proof: `EvmForeignAssets::AssetsByLocation` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `EvmForeignAssets::CounterForAssetsById` (r:1 w:1) + /// Proof: `EvmForeignAssets::CounterForAssetsById` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`) + /// Storage: `EthereumXcm::EthereumXcmSuspended` (r:1 w:0) + /// Proof: `EthereumXcm::EthereumXcmSuspended` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumXcm::Nonce` (r:1 w:1) + /// Proof: `EthereumXcm::Nonce` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumChainId::ChainId` (r:1 w:0) + /// Proof: `EthereumChainId::ChainId` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`) + /// Storage: `TransactionPayment::NextFeeMultiplier` (r:1 w:0) + /// Proof: `TransactionPayment::NextFeeMultiplier` (`max_values`: Some(1), `max_size`: Some(16), added: 511, mode: `MaxEncodedLen`) + /// Storage: `EVM::AccountCodesMetadata` (r:1 w:1) + /// Proof: `EVM::AccountCodesMetadata` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `System::Account` (r:2 w:2) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(116), added: 2591, mode: `MaxEncodedLen`) + /// Storage: `EVM::AccountStorages` (r:11 w:11) + /// Proof: `EVM::AccountStorages` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `EVM::Suicided` (r:1 w:0) + /// Proof: `EVM::Suicided` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Ethereum::Pending` (r:1 w:1) + /// Proof: `Ethereum::Pending` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EVM::AccountCodes` (r:0 w:1) + /// Proof: `EVM::AccountCodes` (`max_values`: None, `max_size`: None, mode: `Measured`) + fn start_foreign_assets_migration() -> Weight { + // Proof Size summary in bytes: + // Measured: `2036` + // Estimated: `30251` + // Minimum execution time: 571_000_000 picoseconds. + Weight::from_parts(575_000_000, 30251) + .saturating_add(RocksDbWeight::get().reads(27_u64)) + .saturating_add(RocksDbWeight::get().writes(23_u64)) + } + /// Storage: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (r:1 w:1) + /// Proof: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (`max_values`: Some(1), `max_size`: Some(25), added: 520, mode: `MaxEncodedLen`) + /// Storage: `Assets::Account` (r:1001 w:1000) + /// Proof: `Assets::Account` (`max_values`: None, `max_size`: Some(122), added: 2597, mode: `MaxEncodedLen`) + /// Storage: `System::Account` (r:1001 w:1001) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(116), added: 2591, mode: `MaxEncodedLen`) + /// Storage: `MaintenanceMode::MaintenanceMode` (r:1 w:0) + /// Proof: `MaintenanceMode::MaintenanceMode` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumXcm::EthereumXcmSuspended` (r:1 w:0) + /// Proof: `EthereumXcm::EthereumXcmSuspended` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumXcm::Nonce` (r:1 w:1) + /// Proof: `EthereumXcm::Nonce` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumChainId::ChainId` (r:1 w:0) + /// Proof: `EthereumChainId::ChainId` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`) + /// Storage: `TransactionPayment::NextFeeMultiplier` (r:1 w:0) + /// Proof: `TransactionPayment::NextFeeMultiplier` (`max_values`: Some(1), `max_size`: Some(16), added: 511, mode: `MaxEncodedLen`) + /// Storage: `EVM::AccountCodesMetadata` (r:2 w:0) + /// Proof: `EVM::AccountCodesMetadata` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `System::Digest` (r:1 w:0) + /// Proof: `System::Digest` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EVM::AccountCodes` (r:1 w:0) + /// Proof: `EVM::AccountCodes` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Assets::Asset` (r:1 w:0) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(174), added: 2649, mode: `MaxEncodedLen`) + /// Storage: `EVM::AccountStorages` (r:1002 w:1001) + /// Proof: `EVM::AccountStorages` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Ethereum::Pending` (r:1 w:1) + /// Proof: `Ethereum::Pending` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// The range of component `n` is `[1, 1000]`. + fn migrate_foreign_asset_balances(n: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `24733 + n * (215 ±0)` + // Estimated: `33276 + n * (2691 ±0)` + // Minimum execution time: 350_000_000 picoseconds. + Weight::from_parts(354_000_000, 33276) + // Standard Error: 6_615_203 + .saturating_add(Weight::from_parts(746_018_198, 0).saturating_mul(n.into())) + .saturating_add(RocksDbWeight::get().reads(19_u64)) + .saturating_add(RocksDbWeight::get().reads((3_u64).saturating_mul(n.into()))) + .saturating_add(RocksDbWeight::get().writes(8_u64)) + .saturating_add(RocksDbWeight::get().writes((3_u64).saturating_mul(n.into()))) + .saturating_add(Weight::from_parts(0, 2691).saturating_mul(n.into())) + } + /// Storage: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (r:1 w:1) + /// Proof: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (`max_values`: Some(1), `max_size`: Some(25), added: 520, mode: `MaxEncodedLen`) + /// Storage: `Assets::Approvals` (r:1000 w:999) + /// Proof: `Assets::Approvals` (`max_values`: None, `max_size`: Some(136), added: 2611, mode: `MaxEncodedLen`) + /// Storage: `MaintenanceMode::MaintenanceMode` (r:1 w:0) + /// Proof: `MaintenanceMode::MaintenanceMode` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumXcm::EthereumXcmSuspended` (r:1 w:0) + /// Proof: `EthereumXcm::EthereumXcmSuspended` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumXcm::Nonce` (r:1 w:1) + /// Proof: `EthereumXcm::Nonce` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumChainId::ChainId` (r:1 w:0) + /// Proof: `EthereumChainId::ChainId` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`) + /// Storage: `TransactionPayment::NextFeeMultiplier` (r:1 w:0) + /// Proof: `TransactionPayment::NextFeeMultiplier` (`max_values`: Some(1), `max_size`: Some(16), added: 511, mode: `MaxEncodedLen`) + /// Storage: `EVM::AccountCodesMetadata` (r:2 w:0) + /// Proof: `EVM::AccountCodesMetadata` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(116), added: 2591, mode: `MaxEncodedLen`) + /// Storage: `System::Digest` (r:1 w:0) + /// Proof: `System::Digest` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EVM::AccountCodes` (r:1 w:0) + /// Proof: `EVM::AccountCodes` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Assets::Asset` (r:1 w:0) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(174), added: 2649, mode: `MaxEncodedLen`) + /// Storage: `EVM::AccountStorages` (r:1000 w:999) + /// Proof: `EVM::AccountStorages` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Ethereum::Pending` (r:1 w:1) + /// Proof: `Ethereum::Pending` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// The range of component `n` is `[1, 1000]`. + fn migrate_foreign_asset_approvals(n: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `26751 + n * (1367 ±0)` + // Estimated: `32664 + n * (3843 ±0)` + // Minimum execution time: 162_000_000 picoseconds. + Weight::from_parts(163_000_000, 32664) + // Standard Error: 22_761_178 + .saturating_add(Weight::from_parts(1_982_250_264, 0).saturating_mul(n.into())) + .saturating_add(RocksDbWeight::get().reads(15_u64)) + .saturating_add(RocksDbWeight::get().reads((2_u64).saturating_mul(n.into()))) + .saturating_add(RocksDbWeight::get().writes(4_u64)) + .saturating_add(RocksDbWeight::get().writes((2_u64).saturating_mul(n.into()))) + .saturating_add(Weight::from_parts(0, 3843).saturating_mul(n.into())) + } + /// Storage: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (r:1 w:1) + /// Proof: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (`max_values`: Some(1), `max_size`: Some(25), added: 520, mode: `MaxEncodedLen`) + /// Storage: `Assets::Asset` (r:1 w:1) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(174), added: 2649, mode: `MaxEncodedLen`) + /// Storage: `Assets::Metadata` (r:1 w:1) + /// Proof: `Assets::Metadata` (`max_values`: None, `max_size`: Some(152), added: 2627, mode: `MaxEncodedLen`) + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(116), added: 2591, mode: `MaxEncodedLen`) + fn finish_foreign_assets_migration() -> Weight { + // Proof Size summary in bytes: + // Measured: `829` + // Estimated: `3639` + // Minimum execution time: 30_000_000 picoseconds. + Weight::from_parts(31_000_000, 3639) + .saturating_add(RocksDbWeight::get().reads(4_u64)) + .saturating_add(RocksDbWeight::get().writes(4_u64)) + } } \ No newline at end of file diff --git a/precompiles/assets-erc20/Cargo.toml b/precompiles/assets-erc20/Cargo.toml index 0738873c15..d80b3df6af 100644 --- a/precompiles/assets-erc20/Cargo.toml +++ b/precompiles/assets-erc20/Cargo.toml @@ -12,6 +12,7 @@ paste = { workspace = true } # Moonbeam account = { workspace = true } +pallet-moonbeam-lazy-migrations = { workspace = true } # Substrate frame-support = { workspace = true } @@ -59,6 +60,7 @@ std = [ "pallet-assets/std", "pallet-balances/std", "pallet-evm/std", + "pallet-moonbeam-lazy-migrations/std", "pallet-timestamp/std", "parity-scale-codec/std", "precompile-utils/std", diff --git a/precompiles/assets-erc20/src/lib.rs b/precompiles/assets-erc20/src/lib.rs index ae9939aade..e6aaaf0265 100644 --- a/precompiles/assets-erc20/src/lib.rs +++ b/precompiles/assets-erc20/src/lib.rs @@ -35,6 +35,7 @@ use precompile_utils::prelude::*; use sp_runtime::traits::{Bounded, Dispatchable}; use sp_std::vec::Vec; +use pallet_moonbeam_lazy_migrations::is_migrating_foreign_assets; use sp_core::{MaxEncodedLen, H160, H256, U256}; use sp_std::{ convert::{TryFrom, TryInto}, @@ -129,7 +130,7 @@ where }; if pallet_assets::Pallet::::maybe_total_supply(asset_id.clone()) - .is_some() + .is_some() && !is_migrating_foreign_assets() { DiscriminantResult::Some(asset_id, extra_cost) } else { diff --git a/runtime/moonbase/src/lib.rs b/runtime/moonbase/src/lib.rs index 680799df4d..5ea72b82ed 100644 --- a/runtime/moonbase/src/lib.rs +++ b/runtime/moonbase/src/lib.rs @@ -1155,7 +1155,16 @@ impl pallet_migrations::Config for Runtime { type XcmExecutionManager = XcmExecutionManager; } +pub type ForeignAssetMigratorOrigin = EitherOfDiverse< + EnsureRoot, + EitherOfDiverse< + pallet_collective::EnsureProportionMoreThan, + governance::custom_origins::FastGeneralAdmin, + >, +>; + impl pallet_moonbeam_lazy_migrations::Config for Runtime { + type ForeignAssetMigratorOrigin = ForeignAssetMigratorOrigin; type WeightInfo = moonbase_weights::pallet_moonbeam_lazy_migrations::WeightInfo; } @@ -1520,6 +1529,7 @@ mod benches { [pallet_preimage, Preimage] [pallet_whitelist, Whitelist] [pallet_multisig, Multisig] + [pallet_moonbeam_lazy_migrations, MoonbeamLazyMigrations] [pallet_relay_storage_roots, RelayStorageRoots] [pallet_precompile_benchmarks, PrecompileBenchmarks] [pallet_parameters, Parameters] diff --git a/runtime/moonbase/src/weights/pallet_moonbeam_lazy_migrations.rs b/runtime/moonbase/src/weights/pallet_moonbeam_lazy_migrations.rs index d4385ec203..83497bbce8 100644 --- a/runtime/moonbase/src/weights/pallet_moonbeam_lazy_migrations.rs +++ b/runtime/moonbase/src/weights/pallet_moonbeam_lazy_migrations.rs @@ -45,4 +45,169 @@ use sp_std::marker::PhantomData; /// Weights for `pallet_moonbeam_lazy_migrations`. pub struct WeightInfo(PhantomData); -impl pallet_moonbeam_lazy_migrations::WeightInfo for WeightInfo {} + +impl pallet_moonbeam_lazy_migrations::WeightInfo for WeightInfo { + /// Storage: `Assets::Asset` (r:100 w:0) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(174), added: 2649, mode: `MaxEncodedLen`) + /// Storage: `MoonbeamLazyMigrations::ApprovedForeignAssets` (r:0 w:100) + /// Proof: `MoonbeamLazyMigrations::ApprovedForeignAssets` (`max_values`: None, `max_size`: Some(24), added: 2499, mode: `MaxEncodedLen`) + /// The range of component `n` is `[1, 100]`. + fn approve_assets_to_migrate(n: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `73 + n * (69 ±0)` + // Estimated: `990 + n * (2649 ±0)` + // Minimum execution time: 6_000_000 picoseconds. + Weight::from_parts(1_043_425, 990) + // Standard Error: 5_952 + .saturating_add(Weight::from_parts(3_473_582, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(n.into()))) + .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(n.into()))) + .saturating_add(Weight::from_parts(0, 2649).saturating_mul(n.into())) + } + /// Storage: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (r:1 w:1) + /// Proof: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (`max_values`: Some(1), `max_size`: Some(25), added: 520, mode: `MaxEncodedLen`) + /// Storage: `Assets::Asset` (r:1 w:1) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(174), added: 2649, mode: `MaxEncodedLen`) + /// Storage: `Assets::Metadata` (r:1 w:0) + /// Proof: `Assets::Metadata` (`max_values`: None, `max_size`: Some(152), added: 2627, mode: `MaxEncodedLen`) + /// Storage: `AssetManager::AssetIdType` (r:1 w:1) + /// Proof: `AssetManager::AssetIdType` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `EvmForeignAssets::AssetsById` (r:1 w:1) + /// Proof: `EvmForeignAssets::AssetsById` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `EvmForeignAssets::AssetsByLocation` (r:1 w:1) + /// Proof: `EvmForeignAssets::AssetsByLocation` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `EvmForeignAssets::CounterForAssetsById` (r:1 w:1) + /// Proof: `EvmForeignAssets::CounterForAssetsById` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`) + /// Storage: `EthereumXcm::EthereumXcmSuspended` (r:1 w:0) + /// Proof: `EthereumXcm::EthereumXcmSuspended` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumXcm::Nonce` (r:1 w:1) + /// Proof: `EthereumXcm::Nonce` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumChainId::ChainId` (r:1 w:0) + /// Proof: `EthereumChainId::ChainId` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`) + /// Storage: `TransactionPayment::NextFeeMultiplier` (r:1 w:0) + /// Proof: `TransactionPayment::NextFeeMultiplier` (`max_values`: Some(1), `max_size`: Some(16), added: 511, mode: `MaxEncodedLen`) + /// Storage: `EVM::AccountCodesMetadata` (r:1 w:1) + /// Proof: `EVM::AccountCodesMetadata` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `System::Account` (r:2 w:2) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(116), added: 2591, mode: `MaxEncodedLen`) + /// Storage: `EVM::AccountStorages` (r:11 w:11) + /// Proof: `EVM::AccountStorages` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `EVM::Suicided` (r:1 w:0) + /// Proof: `EVM::Suicided` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Ethereum::Pending` (r:1 w:1) + /// Proof: `Ethereum::Pending` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EVM::AccountCodes` (r:0 w:1) + /// Proof: `EVM::AccountCodes` (`max_values`: None, `max_size`: None, mode: `Measured`) + fn start_foreign_assets_migration() -> Weight { + // Proof Size summary in bytes: + // Measured: `2036` + // Estimated: `30251` + // Minimum execution time: 571_000_000 picoseconds. + Weight::from_parts(575_000_000, 30251) + .saturating_add(T::DbWeight::get().reads(27_u64)) + .saturating_add(T::DbWeight::get().writes(23_u64)) + } + /// Storage: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (r:1 w:1) + /// Proof: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (`max_values`: Some(1), `max_size`: Some(25), added: 520, mode: `MaxEncodedLen`) + /// Storage: `Assets::Account` (r:1001 w:1000) + /// Proof: `Assets::Account` (`max_values`: None, `max_size`: Some(122), added: 2597, mode: `MaxEncodedLen`) + /// Storage: `System::Account` (r:1001 w:1001) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(116), added: 2591, mode: `MaxEncodedLen`) + /// Storage: `MaintenanceMode::MaintenanceMode` (r:1 w:0) + /// Proof: `MaintenanceMode::MaintenanceMode` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumXcm::EthereumXcmSuspended` (r:1 w:0) + /// Proof: `EthereumXcm::EthereumXcmSuspended` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumXcm::Nonce` (r:1 w:1) + /// Proof: `EthereumXcm::Nonce` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumChainId::ChainId` (r:1 w:0) + /// Proof: `EthereumChainId::ChainId` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`) + /// Storage: `TransactionPayment::NextFeeMultiplier` (r:1 w:0) + /// Proof: `TransactionPayment::NextFeeMultiplier` (`max_values`: Some(1), `max_size`: Some(16), added: 511, mode: `MaxEncodedLen`) + /// Storage: `EVM::AccountCodesMetadata` (r:2 w:0) + /// Proof: `EVM::AccountCodesMetadata` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `System::Digest` (r:1 w:0) + /// Proof: `System::Digest` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EVM::AccountCodes` (r:1 w:0) + /// Proof: `EVM::AccountCodes` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Assets::Asset` (r:1 w:0) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(174), added: 2649, mode: `MaxEncodedLen`) + /// Storage: `EVM::AccountStorages` (r:1002 w:1001) + /// Proof: `EVM::AccountStorages` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Ethereum::Pending` (r:1 w:1) + /// Proof: `Ethereum::Pending` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// The range of component `n` is `[1, 1000]`. + fn migrate_foreign_asset_balances(n: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `24733 + n * (215 ±0)` + // Estimated: `33276 + n * (2691 ±0)` + // Minimum execution time: 350_000_000 picoseconds. + Weight::from_parts(354_000_000, 33276) + // Standard Error: 6_615_203 + .saturating_add(Weight::from_parts(746_018_198, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().reads(19_u64)) + .saturating_add(T::DbWeight::get().reads((3_u64).saturating_mul(n.into()))) + .saturating_add(T::DbWeight::get().writes(8_u64)) + .saturating_add(T::DbWeight::get().writes((3_u64).saturating_mul(n.into()))) + .saturating_add(Weight::from_parts(0, 2691).saturating_mul(n.into())) + } + /// Storage: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (r:1 w:1) + /// Proof: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (`max_values`: Some(1), `max_size`: Some(25), added: 520, mode: `MaxEncodedLen`) + /// Storage: `Assets::Approvals` (r:1000 w:999) + /// Proof: `Assets::Approvals` (`max_values`: None, `max_size`: Some(136), added: 2611, mode: `MaxEncodedLen`) + /// Storage: `MaintenanceMode::MaintenanceMode` (r:1 w:0) + /// Proof: `MaintenanceMode::MaintenanceMode` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumXcm::EthereumXcmSuspended` (r:1 w:0) + /// Proof: `EthereumXcm::EthereumXcmSuspended` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumXcm::Nonce` (r:1 w:1) + /// Proof: `EthereumXcm::Nonce` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumChainId::ChainId` (r:1 w:0) + /// Proof: `EthereumChainId::ChainId` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`) + /// Storage: `TransactionPayment::NextFeeMultiplier` (r:1 w:0) + /// Proof: `TransactionPayment::NextFeeMultiplier` (`max_values`: Some(1), `max_size`: Some(16), added: 511, mode: `MaxEncodedLen`) + /// Storage: `EVM::AccountCodesMetadata` (r:2 w:0) + /// Proof: `EVM::AccountCodesMetadata` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(116), added: 2591, mode: `MaxEncodedLen`) + /// Storage: `System::Digest` (r:1 w:0) + /// Proof: `System::Digest` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EVM::AccountCodes` (r:1 w:0) + /// Proof: `EVM::AccountCodes` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Assets::Asset` (r:1 w:0) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(174), added: 2649, mode: `MaxEncodedLen`) + /// Storage: `EVM::AccountStorages` (r:1000 w:999) + /// Proof: `EVM::AccountStorages` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Ethereum::Pending` (r:1 w:1) + /// Proof: `Ethereum::Pending` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// The range of component `n` is `[1, 1000]`. + fn migrate_foreign_asset_approvals(n: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `26751 + n * (1367 ±0)` + // Estimated: `32664 + n * (3843 ±0)` + // Minimum execution time: 162_000_000 picoseconds. + Weight::from_parts(163_000_000, 32664) + // Standard Error: 22_761_178 + .saturating_add(Weight::from_parts(1_982_250_264, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().reads(15_u64)) + .saturating_add(T::DbWeight::get().reads((2_u64).saturating_mul(n.into()))) + .saturating_add(T::DbWeight::get().writes(4_u64)) + .saturating_add(T::DbWeight::get().writes((2_u64).saturating_mul(n.into()))) + .saturating_add(Weight::from_parts(0, 3843).saturating_mul(n.into())) + } + /// Storage: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (r:1 w:1) + /// Proof: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (`max_values`: Some(1), `max_size`: Some(25), added: 520, mode: `MaxEncodedLen`) + /// Storage: `Assets::Asset` (r:1 w:1) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(174), added: 2649, mode: `MaxEncodedLen`) + /// Storage: `Assets::Metadata` (r:1 w:1) + /// Proof: `Assets::Metadata` (`max_values`: None, `max_size`: Some(152), added: 2627, mode: `MaxEncodedLen`) + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(116), added: 2591, mode: `MaxEncodedLen`) + fn finish_foreign_assets_migration() -> Weight { + // Proof Size summary in bytes: + // Measured: `829` + // Estimated: `3639` + // Minimum execution time: 30_000_000 picoseconds. + Weight::from_parts(31_000_000, 3639) + .saturating_add(T::DbWeight::get().reads(4_u64)) + .saturating_add(T::DbWeight::get().writes(4_u64)) + } +} diff --git a/runtime/moonbeam/src/lib.rs b/runtime/moonbeam/src/lib.rs index 5dd1019ede..5d2cbe8330 100644 --- a/runtime/moonbeam/src/lib.rs +++ b/runtime/moonbeam/src/lib.rs @@ -1153,7 +1153,16 @@ impl pallet_migrations::Config for Runtime { type XcmExecutionManager = XcmExecutionManager; } +pub type ForeignAssetMigratorOrigin = EitherOfDiverse< + EnsureRoot, + EitherOfDiverse< + pallet_collective::EnsureProportionMoreThan, + governance::custom_origins::FastGeneralAdmin, + >, +>; + impl pallet_moonbeam_lazy_migrations::Config for Runtime { + type ForeignAssetMigratorOrigin = ForeignAssetMigratorOrigin; type WeightInfo = moonbeam_weights::pallet_moonbeam_lazy_migrations::WeightInfo; } @@ -1516,6 +1525,7 @@ mod benches { [pallet_preimage, Preimage] [pallet_whitelist, Whitelist] [pallet_multisig, Multisig] + [pallet_moonbeam_lazy_migrations, MoonbeamLazyMigrations] [pallet_relay_storage_roots, RelayStorageRoots] [pallet_precompile_benchmarks, PrecompileBenchmarks] [pallet_parameters, Parameters] diff --git a/runtime/moonbeam/src/weights/pallet_moonbeam_lazy_migrations.rs b/runtime/moonbeam/src/weights/pallet_moonbeam_lazy_migrations.rs index 3eff803ba4..b547f659eb 100644 --- a/runtime/moonbeam/src/weights/pallet_moonbeam_lazy_migrations.rs +++ b/runtime/moonbeam/src/weights/pallet_moonbeam_lazy_migrations.rs @@ -45,4 +45,169 @@ use sp_std::marker::PhantomData; /// Weights for `pallet_moonbeam_lazy_migrations`. pub struct WeightInfo(PhantomData); -impl pallet_moonbeam_lazy_migrations::WeightInfo for WeightInfo {} + +impl pallet_moonbeam_lazy_migrations::WeightInfo for WeightInfo { + /// Storage: `Assets::Asset` (r:100 w:0) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(174), added: 2649, mode: `MaxEncodedLen`) + /// Storage: `MoonbeamLazyMigrations::ApprovedForeignAssets` (r:0 w:100) + /// Proof: `MoonbeamLazyMigrations::ApprovedForeignAssets` (`max_values`: None, `max_size`: Some(24), added: 2499, mode: `MaxEncodedLen`) + /// The range of component `n` is `[1, 100]`. + fn approve_assets_to_migrate(n: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `73 + n * (69 ±0)` + // Estimated: `990 + n * (2649 ±0)` + // Minimum execution time: 6_000_000 picoseconds. + Weight::from_parts(1_043_425, 990) + // Standard Error: 5_952 + .saturating_add(Weight::from_parts(3_473_582, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(n.into()))) + .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(n.into()))) + .saturating_add(Weight::from_parts(0, 2649).saturating_mul(n.into())) + } + /// Storage: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (r:1 w:1) + /// Proof: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (`max_values`: Some(1), `max_size`: Some(25), added: 520, mode: `MaxEncodedLen`) + /// Storage: `Assets::Asset` (r:1 w:1) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(174), added: 2649, mode: `MaxEncodedLen`) + /// Storage: `Assets::Metadata` (r:1 w:0) + /// Proof: `Assets::Metadata` (`max_values`: None, `max_size`: Some(152), added: 2627, mode: `MaxEncodedLen`) + /// Storage: `AssetManager::AssetIdType` (r:1 w:1) + /// Proof: `AssetManager::AssetIdType` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `EvmForeignAssets::AssetsById` (r:1 w:1) + /// Proof: `EvmForeignAssets::AssetsById` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `EvmForeignAssets::AssetsByLocation` (r:1 w:1) + /// Proof: `EvmForeignAssets::AssetsByLocation` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `EvmForeignAssets::CounterForAssetsById` (r:1 w:1) + /// Proof: `EvmForeignAssets::CounterForAssetsById` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`) + /// Storage: `EthereumXcm::EthereumXcmSuspended` (r:1 w:0) + /// Proof: `EthereumXcm::EthereumXcmSuspended` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumXcm::Nonce` (r:1 w:1) + /// Proof: `EthereumXcm::Nonce` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumChainId::ChainId` (r:1 w:0) + /// Proof: `EthereumChainId::ChainId` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`) + /// Storage: `TransactionPayment::NextFeeMultiplier` (r:1 w:0) + /// Proof: `TransactionPayment::NextFeeMultiplier` (`max_values`: Some(1), `max_size`: Some(16), added: 511, mode: `MaxEncodedLen`) + /// Storage: `EVM::AccountCodesMetadata` (r:1 w:1) + /// Proof: `EVM::AccountCodesMetadata` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `System::Account` (r:2 w:2) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(116), added: 2591, mode: `MaxEncodedLen`) + /// Storage: `EVM::AccountStorages` (r:11 w:11) + /// Proof: `EVM::AccountStorages` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `EVM::Suicided` (r:1 w:0) + /// Proof: `EVM::Suicided` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Ethereum::Pending` (r:1 w:1) + /// Proof: `Ethereum::Pending` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EVM::AccountCodes` (r:0 w:1) + /// Proof: `EVM::AccountCodes` (`max_values`: None, `max_size`: None, mode: `Measured`) + fn start_foreign_assets_migration() -> Weight { + // Proof Size summary in bytes: + // Measured: `2036` + // Estimated: `30251` + // Minimum execution time: 571_000_000 picoseconds. + Weight::from_parts(575_000_000, 30251) + .saturating_add(T::DbWeight::get().reads(27_u64)) + .saturating_add(T::DbWeight::get().writes(23_u64)) + } + /// Storage: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (r:1 w:1) + /// Proof: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (`max_values`: Some(1), `max_size`: Some(25), added: 520, mode: `MaxEncodedLen`) + /// Storage: `Assets::Account` (r:1001 w:1000) + /// Proof: `Assets::Account` (`max_values`: None, `max_size`: Some(122), added: 2597, mode: `MaxEncodedLen`) + /// Storage: `System::Account` (r:1001 w:1001) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(116), added: 2591, mode: `MaxEncodedLen`) + /// Storage: `MaintenanceMode::MaintenanceMode` (r:1 w:0) + /// Proof: `MaintenanceMode::MaintenanceMode` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumXcm::EthereumXcmSuspended` (r:1 w:0) + /// Proof: `EthereumXcm::EthereumXcmSuspended` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumXcm::Nonce` (r:1 w:1) + /// Proof: `EthereumXcm::Nonce` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumChainId::ChainId` (r:1 w:0) + /// Proof: `EthereumChainId::ChainId` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`) + /// Storage: `TransactionPayment::NextFeeMultiplier` (r:1 w:0) + /// Proof: `TransactionPayment::NextFeeMultiplier` (`max_values`: Some(1), `max_size`: Some(16), added: 511, mode: `MaxEncodedLen`) + /// Storage: `EVM::AccountCodesMetadata` (r:2 w:0) + /// Proof: `EVM::AccountCodesMetadata` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `System::Digest` (r:1 w:0) + /// Proof: `System::Digest` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EVM::AccountCodes` (r:1 w:0) + /// Proof: `EVM::AccountCodes` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Assets::Asset` (r:1 w:0) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(174), added: 2649, mode: `MaxEncodedLen`) + /// Storage: `EVM::AccountStorages` (r:1002 w:1001) + /// Proof: `EVM::AccountStorages` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Ethereum::Pending` (r:1 w:1) + /// Proof: `Ethereum::Pending` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// The range of component `n` is `[1, 1000]`. + fn migrate_foreign_asset_balances(n: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `24733 + n * (215 ±0)` + // Estimated: `33276 + n * (2691 ±0)` + // Minimum execution time: 350_000_000 picoseconds. + Weight::from_parts(354_000_000, 33276) + // Standard Error: 6_615_203 + .saturating_add(Weight::from_parts(746_018_198, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().reads(19_u64)) + .saturating_add(T::DbWeight::get().reads((3_u64).saturating_mul(n.into()))) + .saturating_add(T::DbWeight::get().writes(8_u64)) + .saturating_add(T::DbWeight::get().writes((3_u64).saturating_mul(n.into()))) + .saturating_add(Weight::from_parts(0, 2691).saturating_mul(n.into())) + } + /// Storage: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (r:1 w:1) + /// Proof: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (`max_values`: Some(1), `max_size`: Some(25), added: 520, mode: `MaxEncodedLen`) + /// Storage: `Assets::Approvals` (r:1000 w:999) + /// Proof: `Assets::Approvals` (`max_values`: None, `max_size`: Some(136), added: 2611, mode: `MaxEncodedLen`) + /// Storage: `MaintenanceMode::MaintenanceMode` (r:1 w:0) + /// Proof: `MaintenanceMode::MaintenanceMode` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumXcm::EthereumXcmSuspended` (r:1 w:0) + /// Proof: `EthereumXcm::EthereumXcmSuspended` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumXcm::Nonce` (r:1 w:1) + /// Proof: `EthereumXcm::Nonce` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumChainId::ChainId` (r:1 w:0) + /// Proof: `EthereumChainId::ChainId` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`) + /// Storage: `TransactionPayment::NextFeeMultiplier` (r:1 w:0) + /// Proof: `TransactionPayment::NextFeeMultiplier` (`max_values`: Some(1), `max_size`: Some(16), added: 511, mode: `MaxEncodedLen`) + /// Storage: `EVM::AccountCodesMetadata` (r:2 w:0) + /// Proof: `EVM::AccountCodesMetadata` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(116), added: 2591, mode: `MaxEncodedLen`) + /// Storage: `System::Digest` (r:1 w:0) + /// Proof: `System::Digest` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EVM::AccountCodes` (r:1 w:0) + /// Proof: `EVM::AccountCodes` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Assets::Asset` (r:1 w:0) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(174), added: 2649, mode: `MaxEncodedLen`) + /// Storage: `EVM::AccountStorages` (r:1000 w:999) + /// Proof: `EVM::AccountStorages` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Ethereum::Pending` (r:1 w:1) + /// Proof: `Ethereum::Pending` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// The range of component `n` is `[1, 1000]`. + fn migrate_foreign_asset_approvals(n: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `26751 + n * (1367 ±0)` + // Estimated: `32664 + n * (3843 ±0)` + // Minimum execution time: 162_000_000 picoseconds. + Weight::from_parts(163_000_000, 32664) + // Standard Error: 22_761_178 + .saturating_add(Weight::from_parts(1_982_250_264, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().reads(15_u64)) + .saturating_add(T::DbWeight::get().reads((2_u64).saturating_mul(n.into()))) + .saturating_add(T::DbWeight::get().writes(4_u64)) + .saturating_add(T::DbWeight::get().writes((2_u64).saturating_mul(n.into()))) + .saturating_add(Weight::from_parts(0, 3843).saturating_mul(n.into())) + } + /// Storage: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (r:1 w:1) + /// Proof: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (`max_values`: Some(1), `max_size`: Some(25), added: 520, mode: `MaxEncodedLen`) + /// Storage: `Assets::Asset` (r:1 w:1) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(174), added: 2649, mode: `MaxEncodedLen`) + /// Storage: `Assets::Metadata` (r:1 w:1) + /// Proof: `Assets::Metadata` (`max_values`: None, `max_size`: Some(152), added: 2627, mode: `MaxEncodedLen`) + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(116), added: 2591, mode: `MaxEncodedLen`) + fn finish_foreign_assets_migration() -> Weight { + // Proof Size summary in bytes: + // Measured: `829` + // Estimated: `3639` + // Minimum execution time: 30_000_000 picoseconds. + Weight::from_parts(31_000_000, 3639) + .saturating_add(T::DbWeight::get().reads(4_u64)) + .saturating_add(T::DbWeight::get().writes(4_u64)) + } +} \ No newline at end of file diff --git a/runtime/moonriver/src/lib.rs b/runtime/moonriver/src/lib.rs index a5cf760d0f..5fc1def9d3 100644 --- a/runtime/moonriver/src/lib.rs +++ b/runtime/moonriver/src/lib.rs @@ -1157,7 +1157,16 @@ impl pallet_migrations::Config for Runtime { type XcmExecutionManager = XcmExecutionManager; } +pub type ForeignAssetMigratorOrigin = EitherOfDiverse< + EnsureRoot, + EitherOfDiverse< + pallet_collective::EnsureProportionMoreThan, + governance::custom_origins::FastGeneralAdmin, + >, +>; + impl pallet_moonbeam_lazy_migrations::Config for Runtime { + type ForeignAssetMigratorOrigin = ForeignAssetMigratorOrigin; type WeightInfo = moonriver_weights::pallet_moonbeam_lazy_migrations::WeightInfo; } @@ -1517,6 +1526,7 @@ mod benches { [pallet_preimage, Preimage] [pallet_whitelist, Whitelist] [pallet_multisig, Multisig] + [pallet_moonbeam_lazy_migrations, MoonbeamLazyMigrations] [pallet_relay_storage_roots, RelayStorageRoots] [pallet_precompile_benchmarks, PrecompileBenchmarks] [pallet_parameters, Parameters] diff --git a/runtime/moonriver/src/weights/pallet_moonbeam_lazy_migrations.rs b/runtime/moonriver/src/weights/pallet_moonbeam_lazy_migrations.rs index 6de1864ae2..c917cdc654 100644 --- a/runtime/moonriver/src/weights/pallet_moonbeam_lazy_migrations.rs +++ b/runtime/moonriver/src/weights/pallet_moonbeam_lazy_migrations.rs @@ -45,4 +45,169 @@ use sp_std::marker::PhantomData; /// Weights for `pallet_moonbeam_lazy_migrations`. pub struct WeightInfo(PhantomData); -impl pallet_moonbeam_lazy_migrations::WeightInfo for WeightInfo {} + +impl pallet_moonbeam_lazy_migrations::WeightInfo for WeightInfo { + /// Storage: `Assets::Asset` (r:100 w:0) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(174), added: 2649, mode: `MaxEncodedLen`) + /// Storage: `MoonbeamLazyMigrations::ApprovedForeignAssets` (r:0 w:100) + /// Proof: `MoonbeamLazyMigrations::ApprovedForeignAssets` (`max_values`: None, `max_size`: Some(24), added: 2499, mode: `MaxEncodedLen`) + /// The range of component `n` is `[1, 100]`. + fn approve_assets_to_migrate(n: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `73 + n * (69 ±0)` + // Estimated: `990 + n * (2649 ±0)` + // Minimum execution time: 6_000_000 picoseconds. + Weight::from_parts(1_043_425, 990) + // Standard Error: 5_952 + .saturating_add(Weight::from_parts(3_473_582, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(n.into()))) + .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(n.into()))) + .saturating_add(Weight::from_parts(0, 2649).saturating_mul(n.into())) + } + /// Storage: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (r:1 w:1) + /// Proof: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (`max_values`: Some(1), `max_size`: Some(25), added: 520, mode: `MaxEncodedLen`) + /// Storage: `Assets::Asset` (r:1 w:1) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(174), added: 2649, mode: `MaxEncodedLen`) + /// Storage: `Assets::Metadata` (r:1 w:0) + /// Proof: `Assets::Metadata` (`max_values`: None, `max_size`: Some(152), added: 2627, mode: `MaxEncodedLen`) + /// Storage: `AssetManager::AssetIdType` (r:1 w:1) + /// Proof: `AssetManager::AssetIdType` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `EvmForeignAssets::AssetsById` (r:1 w:1) + /// Proof: `EvmForeignAssets::AssetsById` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `EvmForeignAssets::AssetsByLocation` (r:1 w:1) + /// Proof: `EvmForeignAssets::AssetsByLocation` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `EvmForeignAssets::CounterForAssetsById` (r:1 w:1) + /// Proof: `EvmForeignAssets::CounterForAssetsById` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`) + /// Storage: `EthereumXcm::EthereumXcmSuspended` (r:1 w:0) + /// Proof: `EthereumXcm::EthereumXcmSuspended` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumXcm::Nonce` (r:1 w:1) + /// Proof: `EthereumXcm::Nonce` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumChainId::ChainId` (r:1 w:0) + /// Proof: `EthereumChainId::ChainId` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`) + /// Storage: `TransactionPayment::NextFeeMultiplier` (r:1 w:0) + /// Proof: `TransactionPayment::NextFeeMultiplier` (`max_values`: Some(1), `max_size`: Some(16), added: 511, mode: `MaxEncodedLen`) + /// Storage: `EVM::AccountCodesMetadata` (r:1 w:1) + /// Proof: `EVM::AccountCodesMetadata` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `System::Account` (r:2 w:2) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(116), added: 2591, mode: `MaxEncodedLen`) + /// Storage: `EVM::AccountStorages` (r:11 w:11) + /// Proof: `EVM::AccountStorages` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `EVM::Suicided` (r:1 w:0) + /// Proof: `EVM::Suicided` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Ethereum::Pending` (r:1 w:1) + /// Proof: `Ethereum::Pending` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EVM::AccountCodes` (r:0 w:1) + /// Proof: `EVM::AccountCodes` (`max_values`: None, `max_size`: None, mode: `Measured`) + fn start_foreign_assets_migration() -> Weight { + // Proof Size summary in bytes: + // Measured: `2036` + // Estimated: `30251` + // Minimum execution time: 571_000_000 picoseconds. + Weight::from_parts(575_000_000, 30251) + .saturating_add(T::DbWeight::get().reads(27_u64)) + .saturating_add(T::DbWeight::get().writes(23_u64)) + } + /// Storage: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (r:1 w:1) + /// Proof: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (`max_values`: Some(1), `max_size`: Some(25), added: 520, mode: `MaxEncodedLen`) + /// Storage: `Assets::Account` (r:1001 w:1000) + /// Proof: `Assets::Account` (`max_values`: None, `max_size`: Some(122), added: 2597, mode: `MaxEncodedLen`) + /// Storage: `System::Account` (r:1001 w:1001) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(116), added: 2591, mode: `MaxEncodedLen`) + /// Storage: `MaintenanceMode::MaintenanceMode` (r:1 w:0) + /// Proof: `MaintenanceMode::MaintenanceMode` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumXcm::EthereumXcmSuspended` (r:1 w:0) + /// Proof: `EthereumXcm::EthereumXcmSuspended` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumXcm::Nonce` (r:1 w:1) + /// Proof: `EthereumXcm::Nonce` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumChainId::ChainId` (r:1 w:0) + /// Proof: `EthereumChainId::ChainId` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`) + /// Storage: `TransactionPayment::NextFeeMultiplier` (r:1 w:0) + /// Proof: `TransactionPayment::NextFeeMultiplier` (`max_values`: Some(1), `max_size`: Some(16), added: 511, mode: `MaxEncodedLen`) + /// Storage: `EVM::AccountCodesMetadata` (r:2 w:0) + /// Proof: `EVM::AccountCodesMetadata` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `System::Digest` (r:1 w:0) + /// Proof: `System::Digest` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EVM::AccountCodes` (r:1 w:0) + /// Proof: `EVM::AccountCodes` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Assets::Asset` (r:1 w:0) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(174), added: 2649, mode: `MaxEncodedLen`) + /// Storage: `EVM::AccountStorages` (r:1002 w:1001) + /// Proof: `EVM::AccountStorages` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Ethereum::Pending` (r:1 w:1) + /// Proof: `Ethereum::Pending` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// The range of component `n` is `[1, 1000]`. + fn migrate_foreign_asset_balances(n: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `24733 + n * (215 ±0)` + // Estimated: `33276 + n * (2691 ±0)` + // Minimum execution time: 350_000_000 picoseconds. + Weight::from_parts(354_000_000, 33276) + // Standard Error: 6_615_203 + .saturating_add(Weight::from_parts(746_018_198, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().reads(19_u64)) + .saturating_add(T::DbWeight::get().reads((3_u64).saturating_mul(n.into()))) + .saturating_add(T::DbWeight::get().writes(8_u64)) + .saturating_add(T::DbWeight::get().writes((3_u64).saturating_mul(n.into()))) + .saturating_add(Weight::from_parts(0, 2691).saturating_mul(n.into())) + } + /// Storage: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (r:1 w:1) + /// Proof: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (`max_values`: Some(1), `max_size`: Some(25), added: 520, mode: `MaxEncodedLen`) + /// Storage: `Assets::Approvals` (r:1000 w:999) + /// Proof: `Assets::Approvals` (`max_values`: None, `max_size`: Some(136), added: 2611, mode: `MaxEncodedLen`) + /// Storage: `MaintenanceMode::MaintenanceMode` (r:1 w:0) + /// Proof: `MaintenanceMode::MaintenanceMode` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumXcm::EthereumXcmSuspended` (r:1 w:0) + /// Proof: `EthereumXcm::EthereumXcmSuspended` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumXcm::Nonce` (r:1 w:1) + /// Proof: `EthereumXcm::Nonce` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EthereumChainId::ChainId` (r:1 w:0) + /// Proof: `EthereumChainId::ChainId` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`) + /// Storage: `TransactionPayment::NextFeeMultiplier` (r:1 w:0) + /// Proof: `TransactionPayment::NextFeeMultiplier` (`max_values`: Some(1), `max_size`: Some(16), added: 511, mode: `MaxEncodedLen`) + /// Storage: `EVM::AccountCodesMetadata` (r:2 w:0) + /// Proof: `EVM::AccountCodesMetadata` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(116), added: 2591, mode: `MaxEncodedLen`) + /// Storage: `System::Digest` (r:1 w:0) + /// Proof: `System::Digest` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `EVM::AccountCodes` (r:1 w:0) + /// Proof: `EVM::AccountCodes` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Assets::Asset` (r:1 w:0) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(174), added: 2649, mode: `MaxEncodedLen`) + /// Storage: `EVM::AccountStorages` (r:1000 w:999) + /// Proof: `EVM::AccountStorages` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Ethereum::Pending` (r:1 w:1) + /// Proof: `Ethereum::Pending` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// The range of component `n` is `[1, 1000]`. + fn migrate_foreign_asset_approvals(n: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `26751 + n * (1367 ±0)` + // Estimated: `32664 + n * (3843 ±0)` + // Minimum execution time: 162_000_000 picoseconds. + Weight::from_parts(163_000_000, 32664) + // Standard Error: 22_761_178 + .saturating_add(Weight::from_parts(1_982_250_264, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().reads(15_u64)) + .saturating_add(T::DbWeight::get().reads((2_u64).saturating_mul(n.into()))) + .saturating_add(T::DbWeight::get().writes(4_u64)) + .saturating_add(T::DbWeight::get().writes((2_u64).saturating_mul(n.into()))) + .saturating_add(Weight::from_parts(0, 3843).saturating_mul(n.into())) + } + /// Storage: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (r:1 w:1) + /// Proof: `MoonbeamLazyMigrations::ForeignAssetMigrationStatusValue` (`max_values`: Some(1), `max_size`: Some(25), added: 520, mode: `MaxEncodedLen`) + /// Storage: `Assets::Asset` (r:1 w:1) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(174), added: 2649, mode: `MaxEncodedLen`) + /// Storage: `Assets::Metadata` (r:1 w:1) + /// Proof: `Assets::Metadata` (`max_values`: None, `max_size`: Some(152), added: 2627, mode: `MaxEncodedLen`) + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(116), added: 2591, mode: `MaxEncodedLen`) + fn finish_foreign_assets_migration() -> Weight { + // Proof Size summary in bytes: + // Measured: `829` + // Estimated: `3639` + // Minimum execution time: 30_000_000 picoseconds. + Weight::from_parts(31_000_000, 3639) + .saturating_add(T::DbWeight::get().reads(4_u64)) + .saturating_add(T::DbWeight::get().writes(4_u64)) + } +} \ No newline at end of file diff --git a/test/suites/dev/moonbase/test-moonbeam-lazy-migrations/test-foreign-assets-migration.ts b/test/suites/dev/moonbase/test-moonbeam-lazy-migrations/test-foreign-assets-migration.ts new file mode 100644 index 0000000000..b7393925f7 --- /dev/null +++ b/test/suites/dev/moonbase/test-moonbeam-lazy-migrations/test-foreign-assets-migration.ts @@ -0,0 +1,281 @@ +import { describeSuite, expect, beforeAll } from "@moonwall/cli"; +import { ApiPromise } from "@polkadot/api"; +import { ethers, parseEther } from "ethers"; +import { expectOk } from "../../../../helpers"; +import { + registerOldForeignAsset, + PARA_1000_SOURCE_LOCATION, + assetContractAddress, + mockOldAssetBalance, + foreignAssetBalance, +} from "../../../../helpers/assets"; +import { + ALITH_ADDRESS, + BALTATHAR_ADDRESS, + CHARLETH_ADDRESS, + alith, + createEthersTransaction, +} from "@moonwall/util"; +import { u128 } from "@polkadot/types-codec"; +import { encodeFunctionData, parseAbi } from "viem"; + +describeSuite({ + id: "D012202", + title: "Lazy Migrations Pallet - Foreign Asset Migration", + foundationMethods: "dev", + testCases: ({ context, it }) => { + let api: ApiPromise; + let assetId: u128; + + beforeAll(async () => { + api = context.polkadotJs(); + + // Register foreign asset using helper + const { registeredAssetId } = await registerOldForeignAsset( + context, + PARA_1000_SOURCE_LOCATION, + { + name: "Foreign Asset", + symbol: "FA", + decimals: 18n, + isFrozen: false, + } + ); + + assetId = context.polkadotJs().createType("u128", registeredAssetId); + + // Define test accounts and their balances + const accounts = [ + { address: ALITH_ADDRESS, balance: "100" }, + { address: BALTATHAR_ADDRESS, balance: "50" }, + { address: CHARLETH_ADDRESS, balance: "25" }, + ]; + + const totalSupply = accounts + .reduce((sum, account) => sum + parseFloat(account.balance), 0) + .toString(); + + // Create asset details + const assetDetails = context.polkadotJs().createType("PalletAssetsAssetDetails", { + supply: parseEther(totalSupply), + owner: ALITH_ADDRESS, + deposit: 1, + isSufficient: false, + minBalance: 1, + isFrozen: false, + sufficients: 0, + approvals: 0, + }); + + // Create balances for all test accounts + for (const { address, balance } of accounts) { + const assetBalance = context.polkadotJs().createType("PalletAssetsAssetAccount", { + balance: parseEther(balance), + isFrozen: false, + reason: "Consumer", + extra: null, + }); + + await mockOldAssetBalance(context, assetBalance, assetDetails, alith, assetId, address); + } + await context.createBlock([]); + // Create approvals + await expectOk( + context.createBlock( + api.tx.assets.approveTransfer(assetId, BALTATHAR_ADDRESS, parseEther("10")), + { signer: alith, allowFailures: false } + ) + ); + + await expectOk( + context.createBlock( + api.tx.assets.approveTransfer(assetId, CHARLETH_ADDRESS, parseEther("5")), + { signer: alith, allowFailures: false } + ) + ); + }); + + it({ + id: "T01", + title: "Should not allow non-root to approve migration of assets", + test: async function () { + const { result } = await context.createBlock( + api.tx.moonbeamLazyMigrations.approveAssetsToMigrate([assetId]) + ); + + expect(result?.error?.name).to.equal("BadOrigin"); + }, + }); + + it({ + id: "T02", + title: "Should start migration and freeze asset", + test: async function () { + // Approve migration with sudo + await expectOk( + context.createBlock( + api.tx.sudo.sudo(api.tx.moonbeamLazyMigrations.approveAssetsToMigrate([assetId])) + ) + ); + + await expectOk( + context.createBlock(api.tx.moonbeamLazyMigrations.startForeignAssetsMigration(assetId)) + ); + + // Asset should be frozen + const assetDetails = await api.query.assets.asset(assetId); + expect(assetDetails.unwrap().status.isFrozen).to.be.true; + + // Transfers should fail + const { result } = await context.createBlock( + api.tx.assets.transfer(assetId, BALTATHAR_ADDRESS, parseEther("10")) + ); + expect(result?.error?.name).to.equal("AssetNotLive"); + + // Attempt to start another migration + const { result: res } = await context.createBlock( + api.tx.moonbeamLazyMigrations.startForeignAssetsMigration(assetId.toBigInt()) + ); + + expect(res?.error?.name).to.equal("MigrationNotFinished"); + }, + }); + + it({ + id: "T03", + title: "Should handle migrating multiple balances and approvals with proper cleanup", + test: async function () { + const accounts = [ALITH_ADDRESS, BALTATHAR_ADDRESS, CHARLETH_ADDRESS]; + + // Verify initial balances + const initialBalances = await Promise.all([ + foreignAssetBalance(context, assetId.toBigInt(), ALITH_ADDRESS), + foreignAssetBalance(context, assetId.toBigInt(), BALTATHAR_ADDRESS), + foreignAssetBalance(context, assetId.toBigInt(), CHARLETH_ADDRESS), + ]); + + // Verify initial approvals + const initialApprovals = await Promise.all([ + api.query.assets.approvals(assetId, ALITH_ADDRESS, BALTATHAR_ADDRESS), + api.query.assets.approvals(assetId, ALITH_ADDRESS, CHARLETH_ADDRESS), + ]); + + const alithBalanceBefore = await api.query.system.account(ALITH_ADDRESS); + + // 2. Execute migration + await expectOk( + context.createBlock(api.tx.moonbeamLazyMigrations.migrateForeignAssetBalances(3)) + ); + + // Check that migration is not finished + const { result } = await context.createBlock( + api.tx.moonbeamLazyMigrations.finishForeignAssetsMigration() + ); + expect(result?.error?.name).to.equal("MigrationNotFinished"); + + // Migrate approvals + await expectOk( + context.createBlock(api.tx.moonbeamLazyMigrations.migrateForeignAssetApprovals(3)) + ); + + await expectOk( + context.createBlock(api.tx.moonbeamLazyMigrations.finishForeignAssetsMigration()) + ); + + // 3. Verify migration success + expect((await api.query.assets.asset(assetId)).isNone).to.be.true; + + // Verify reserved was unreserved + const alithAccountBalanceAfter = await api.query.system.account(ALITH_ADDRESS); + expect(alithAccountBalanceAfter.data.reserved.toBigInt()).to.equal( + alithBalanceBefore.data.reserved.toBigInt() - 1n + ); + + // Verify new asset functionality + const erc20Abi = [ + "function decimals() external view returns (uint8)", + "function symbol() external view returns (string)", + "function name() external view returns (string)", + "function balanceOf(address) external view returns (uint256)", + "function allowance(address owner, address spender) external view returns (uint256)", + ]; + + // Get contract address from assetId + const contractAddress = assetContractAddress(assetId.toBigInt()); + const foreignAssetContract = new ethers.Contract( + contractAddress, + erc20Abi, + context.ethers() + ); + + // Query decimals and verify + const decimals = await foreignAssetContract.decimals(); + expect(decimals).to.equal(18n); + + // Check balances were properly migrated + await Promise.all( + accounts.map((account, index) => + foreignAssetContract + .balanceOf(account) + .then((balance) => expect(balance).to.equal(initialBalances[index])) + ) + ); + + // Verify approvals were migrated correctly + const migratedAllowances = await Promise.all([ + foreignAssetContract.allowance(ALITH_ADDRESS, BALTATHAR_ADDRESS), + foreignAssetContract.allowance(ALITH_ADDRESS, CHARLETH_ADDRESS), + ]); + expect(migratedAllowances[0].toString()).to.equal( + initialApprovals[0].unwrap().amount.toString() + ); + expect(migratedAllowances[1].toString()).to.equal( + initialApprovals[1].unwrap().amount.toString() + ); + + // Test transfer + const transferAmount = parseEther("5"); + const [alithBefore, baltatharBefore] = await Promise.all([ + foreignAssetContract.balanceOf(ALITH_ADDRESS), + foreignAssetContract.balanceOf(BALTATHAR_ADDRESS), + ]); + + await context.createBlock( + await createEthersTransaction(context, { + to: contractAddress, + data: encodeFunctionData({ + abi: parseAbi(["function transfer(address,uint256)"]), + functionName: "transfer", + args: [BALTATHAR_ADDRESS, transferAmount], + }), + }) + ); + + expect(await foreignAssetBalance(context, assetId.toBigInt(), ALITH_ADDRESS)).to.equal( + alithBefore - transferAmount + ); + expect(await foreignAssetBalance(context, assetId.toBigInt(), BALTATHAR_ADDRESS)).to.equal( + baltatharBefore + transferAmount + ); + + // Test approve & transferFrom + const approvalAmount = parseEther("20"); + await context.createBlock( + await createEthersTransaction(context, { + to: contractAddress, + data: encodeFunctionData({ + abi: parseAbi(["function approve(address,uint256)"]), + functionName: "approve", + args: [CHARLETH_ADDRESS, approvalAmount], + }), + }) + ); + + // Check approval + expect(await foreignAssetContract.allowance(ALITH_ADDRESS, CHARLETH_ADDRESS)).to.equal( + approvalAmount + ); + }, + }); + }, +});