diff --git a/.github/actions/init/action.yml b/.github/actions/init/action.yml index e4b0af65b..fb389a1b1 100644 --- a/.github/actions/init/action.yml +++ b/.github/actions/init/action.yml @@ -1,8 +1,19 @@ name: Initialize description: This action initializes a runner for use in other actions. inputs: + cache: + description: Whether to enable Rust caching. Defaults to true. + default: "true" + cache-all-crates: + description: Whether all crates should be cached, or only dependent crates. Defaults to true. + default: "true" + cache-directories: + description: Additional non-workspace directories to be cached, separated by newlines. + cache-on-failure: + description: Cache even if the build fails. Defaults to false. + default: "true" cache-key: - description: "The key to be used for the cache" + description: An additional optional key to be added. Useful for jobs utilizing a matrix. runs: using: "composite" @@ -25,8 +36,10 @@ runs: sudo rm -rf "$AGENT_TOOLSDIRECTORY" - name: Rust Cache - uses: Swatinem/rust-cache@v2.7.8 + if: ${{ inputs.cache == 'true' }} + uses: Swatinem/rust-cache@v2.8.0 with: - cache-on-failure: true - cache-all-crates: true - key: ${{ inputs.cache-key }} \ No newline at end of file + cache-all-crates: ${{ inputs.cache-all-crates }} + cache-directories: ${{ inputs.cache-directories }} + cache-on-failure: ${{ inputs.cache-on-failure }} + key: ${{ inputs.cache-key }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b238bd4e3..359859d9d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,9 +2,9 @@ name: ci on: push: - branches: [ main ] + branches: [main] pull_request: - types: [ opened, synchronize, reopened, ready_for_review ] + types: [opened, synchronize, reopened, ready_for_review] concurrency: # Cancel any in-progress jobs for the same pull request @@ -53,20 +53,20 @@ jobs: - uses: "./.github/actions/init" - name: Check Build - # TODO: restore runtime-benchmarks once revive benchmarks resolved run: | - cargo check --release --locked --workspace --exclude integration-tests --features=try-runtime + cargo check --release --locked --workspace --exclude integration-tests --features=runtime-benchmarks,try-runtime check-ismp: needs: lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + - uses: "./.github/actions/init" + - name: Check Build with ISMP - # TODO: restore runtime-benchmarks once revive benchmarks resolved run: | - cargo check --release --locked --workspace --exclude integration-tests --features=ismp,try-runtime + cargo check --release --locked --workspace --exclude integration-tests --features=ismp,runtime-benchmarks,try-runtime clippy: needs: lint @@ -85,8 +85,7 @@ jobs: uses: actions-rs/clippy-check@v1 with: token: ${{ secrets.GITHUB_TOKEN }} - # TODO: restore runtime-benchmarks once revive benchmarks resolved - args: --release --locked --workspace --exclude integration-tests + args: --release --locked --workspace --exclude integration-tests --features=runtime-benchmarks clippy-ismp: needs: lint @@ -105,8 +104,7 @@ jobs: uses: actions-rs/clippy-check@v1 with: token: ${{ secrets.GITHUB_TOKEN }} - # TODO: restore runtime-benchmarks once revive benchmarks resolved - args: --release --locked --workspace --exclude integration-tests --features=ismp + args: --release --locked --workspace --exclude integration-tests --features=runtime-benchmarks,ismp test: needs: lint @@ -117,8 +115,7 @@ jobs: - uses: "./.github/actions/init" - name: Run tests - # TODO: restore runtime-benchmarks once revive benchmarks resolved - run: cargo test --release --locked --workspace --exclude integration-tests --exclude pop-api-integration-tests + run: cargo test --release --locked --workspace --exclude integration-tests --exclude pop-api-integration-tests --exclude pop-api-vnext-integration-tests --features=runtime-benchmarks integration-tests: needs: lint @@ -155,6 +152,19 @@ jobs: - name: Run API integration tests run: cargo test -p pop-api-integration-tests --release --locked --features "${{ matrix.features }}" + api-vnext-integration-tests: + needs: lint + runs-on: ubuntu-latest + env: + RUSTFLAGS: '--cfg ink_abi="all"' + steps: + - uses: actions/checkout@v4 + + - uses: "./.github/actions/init" + + - name: Run API integration tests + run: cargo test -p pop-api-vnext-integration-tests --release --locked + api-tests: runs-on: ubuntu-latest steps: @@ -199,8 +209,7 @@ jobs: uses: taiki-e/install-action@cargo-llvm-cov - name: Generate code coverage - # TODO: restore runtime-benchmarks once revive benchmarks resolved - run: cargo llvm-cov --features=try-runtime,ismp --workspace --exclude integration-tests --exclude pop-api-integration-tests --lib --bins --codecov --output-path codecov.json + run: cargo llvm-cov --features=runtime-benchmarks,try-runtime,ismp --workspace --exclude integration-tests --exclude pop-api-integration-tests --exclude pop-api-vnext-integration-tests --lib --bins --codecov --output-path codecov.json - name: Upload to codecov.io uses: codecov/codecov-action@v4 diff --git a/Cargo.lock b/Cargo.lock index 132c44913..20088646d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -32,9 +32,9 @@ dependencies = [ [[package]] name = "adler2" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aead" @@ -112,9 +112,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy-core" -version = "0.8.25" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d8bcce99ad10fe02640cfaec1c6bc809b837c783c1d52906aa5af66e2a196f6" +checksum = "d47400608fc869727ad81dba058d55f97b29ad8b5c5256d9598523df8f356ab6" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -125,15 +125,14 @@ dependencies = [ [[package]] name = "alloy-dyn-abi" -version = "0.8.25" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb8e762aefd39a397ff485bc86df673465c4ad3ec8819cc60833a8a3ba5cdc87" +checksum = "d9e8a436f0aad7df8bb47f144095fba61202265d9f5f09a70b0e3227881a668e" dependencies = [ "alloy-json-abi", "alloy-primitives", "alloy-sol-type-parser", "alloy-sol-types", - "const-hex", "itoa", "serde", "serde_json", @@ -142,9 +141,9 @@ dependencies = [ [[package]] name = "alloy-json-abi" -version = "0.8.25" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe6beff64ad0aa6ad1019a3db26fef565aefeb011736150ab73ed3366c3cfd1b" +checksum = "459f98c6843f208856f338bfb25e65325467f7aff35dfeb0484d0a76e059134b" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -154,9 +153,9 @@ dependencies = [ [[package]] name = "alloy-primitives" -version = "0.8.25" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c77490fe91a0ce933a1f219029521f20fc28c2c0ca95d53fa4da9c00b8d9d4e" +checksum = "3cfebde8c581a5d37b678d0a48a32decb51efd7a63a08ce2517ddec26db705c8" dependencies = [ "alloy-rlp", "bytes", @@ -164,14 +163,14 @@ dependencies = [ "const-hex", "derive_more 2.0.1", "foldhash", - "hashbrown 0.15.3", - "indexmap 2.9.0", + "hashbrown 0.15.5", + "indexmap 2.10.0", "itoa", "k256", "keccak-asm", "paste", "proptest", - "rand 0.8.5", + "rand 0.9.2", "ruint", "rustc-hash 2.1.1", "serde", @@ -191,41 +190,41 @@ dependencies = [ [[package]] name = "alloy-sol-macro" -version = "0.8.25" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10ae8e9a91d328ae954c22542415303919aabe976fe7a92eb06db1b68fd59f2" +checksum = "aedac07a10d4c2027817a43cc1f038313fc53c7ac866f7363239971fd01f9f18" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "alloy-sol-macro-expander" -version = "0.8.25" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83ad5da86c127751bc607c174d6c9fe9b85ef0889a9ca0c641735d77d4f98f26" +checksum = "24f9a598f010f048d8b8226492b6401104f5a5c1273c2869b72af29b48bb4ba9" dependencies = [ "alloy-sol-macro-input", "const-hex", "heck 0.5.0", - "indexmap 2.9.0", + "indexmap 2.10.0", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "syn-solidity", "tiny-keccak", ] [[package]] name = "alloy-sol-macro-input" -version = "0.8.25" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3d30f0d3f9ba3b7686f3ff1de9ee312647aac705604417a2f40c604f409a9e" +checksum = "f494adf9d60e49aa6ce26dfd42c7417aa6d4343cf2ae621f20e4d92a5ad07d85" dependencies = [ "const-hex", "dunce", @@ -233,15 +232,15 @@ dependencies = [ "macro-string", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "syn-solidity", ] [[package]] name = "alloy-sol-type-parser" -version = "0.8.25" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d162f8524adfdfb0e4bd0505c734c985f3e2474eb022af32eef0d52a4f3935c" +checksum = "52db32fbd35a9c0c0e538b58b81ebbae08a51be029e7ad60e08b60481c2ec6c3" dependencies = [ "serde", "winnow", @@ -249,14 +248,13 @@ dependencies = [ [[package]] name = "alloy-sol-types" -version = "0.8.25" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d43d5e60466a440230c07761aa67671d4719d46f43be8ea6e7ed334d8db4a9ab" +checksum = "a285b46e3e0c177887028278f04cc8262b76fd3b8e0e20e93cea0a58c35f5ac5" dependencies = [ "alloy-json-abi", "alloy-primitives", "alloy-sol-macro", - "const-hex", "serde", ] @@ -283,9 +281,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.18" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +checksum = "3ae563653d1938f79b1ab1b5e668c87c76a9930414574a6583a7b7e11a8e6192" dependencies = [ "anstyle", "anstyle-parse", @@ -298,44 +296,44 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" +checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" [[package]] name = "anstyle-parse" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.2" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "anstyle-wincon" -version = "3.0.7" +version = "3.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" +checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a" dependencies = [ "anstyle", - "once_cell", - "windows-sys 0.59.0", + "once_cell_polyfill", + "windows-sys 0.60.2", ] [[package]] name = "anyhow" -version = "1.0.98" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" +checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100" [[package]] name = "approx" @@ -357,7 +355,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -434,7 +432,7 @@ dependencies = [ "ark-std 0.5.0", "educe", "fnv", - "hashbrown 0.15.3", + "hashbrown 0.15.5", "itertools 0.13.0", "num-bigint", "num-integer", @@ -539,7 +537,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" dependencies = [ "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -577,7 +575,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -605,7 +603,7 @@ dependencies = [ "ark-std 0.5.0", "educe", "fnv", - "hashbrown 0.15.3", + "hashbrown 0.15.5", ] [[package]] @@ -662,7 +660,7 @@ checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -734,6 +732,16 @@ version = "6.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d5dde061bd34119e902bbb2d9b90c5692635cf59fb91d582c2b68043f1b8293" +[[package]] +name = "array-bytes" +version = "9.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27d55334c98d756b32dcceb60248647ab34f027690f87f9a362fd292676ee927" +dependencies = [ + "smallvec", + "thiserror 2.0.14", +] + [[package]] name = "array-init" version = "2.1.0" @@ -789,7 +797,7 @@ dependencies = [ "nom", "num-traits", "rusticata-macros", - "thiserror 2.0.12", + "thiserror 2.0.14", "time", ] @@ -801,7 +809,7 @@ checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "synstructure 0.13.2", ] @@ -813,7 +821,7 @@ checksum = "3109e49b1e4909e9db6515a30c633684d68cdeaa252f215214cb4fa1a5bfee2c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "synstructure 0.13.2", ] @@ -825,7 +833,7 @@ checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -853,15 +861,15 @@ dependencies = [ "cumulus-primitives-aura 0.15.0", "cumulus-primitives-core 0.16.0", "cumulus-primitives-utility 0.17.1", - "frame-benchmarking 38.0.0", - "frame-executive 38.0.0", + "frame-benchmarking 38.1.1", + "frame-executive 38.0.1", "frame-metadata-hash-extension 0.6.0", "frame-support 38.2.0", "frame-system 38.0.0", "frame-system-benchmarking 38.0.0", "frame-system-rpc-runtime-api 34.0.0", "frame-try-runtime 0.44.0", - "hex-literal", + "hex-literal 0.4.1", "log", "pallet-asset-conversion 20.0.0", "pallet-asset-conversion-tx-payment 20.0.0", @@ -884,7 +892,7 @@ dependencies = [ "pallet-uniques 38.0.0", "pallet-utility 38.0.0", "pallet-vesting 38.0.0", - "pallet-xcm 17.0.2", + "pallet-xcm 17.0.4", "pallet-xcm-benchmarks 17.0.1", "pallet-xcm-bridge-hub-router 0.15.3", "parachains-common 18.0.0", @@ -912,11 +920,11 @@ dependencies = [ "sp-storage 21.0.0", "sp-transaction-pool 34.0.0", "sp-version 37.0.0", - "sp-weights 31.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-weights 31.1.0", "staging-parachain-info 0.17.0", "staging-xcm 14.2.2", "staging-xcm-builder 17.0.5", - "staging-xcm-executor 17.0.2", + "staging-xcm-executor 17.0.3", "substrate-wasm-builder 24.0.2", "system-parachains-constants 1.0.0 (git+https://github.com/paseo-network/runtimes?tag=v1.4.3)", "xcm-runtime-apis 0.4.3", @@ -924,125 +932,124 @@ dependencies = [ [[package]] name = "asset-hub-westend-runtime" -version = "0.29.2" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.32.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "assets-common 0.21.0", + "assets-common 0.22.0", "bp-asset-hub-rococo", "bp-asset-hub-westend", "bp-bridge-hub-rococo", "bp-bridge-hub-westend", - "cumulus-pallet-aura-ext 0.20.0", - "cumulus-pallet-parachain-system 0.20.0", - "cumulus-pallet-session-benchmarking 21.0.0", + "cumulus-pallet-aura-ext 0.21.0", + "cumulus-pallet-parachain-system 0.21.0", + "cumulus-pallet-session-benchmarking 22.0.0", "cumulus-pallet-weight-reclaim", - "cumulus-pallet-xcm 0.19.1", - "cumulus-pallet-xcmp-queue 0.20.0", - "cumulus-primitives-aura 0.17.0", - "cumulus-primitives-core 0.18.1", - "cumulus-primitives-utility 0.20.0", - "frame-benchmarking 40.0.0", - "frame-executive 40.0.0", - "frame-metadata-hash-extension 0.8.0", - "frame-support 40.1.0", - "frame-system 40.1.0", - "frame-system-benchmarking 40.0.0", - "frame-system-rpc-runtime-api 36.0.0", - "frame-try-runtime 0.46.0", - "hex-literal", - "log", - "pallet-asset-conversion 22.0.0", + "cumulus-pallet-xcm 0.20.0", + "cumulus-pallet-xcmp-queue 0.21.0", + "cumulus-primitives-aura 0.18.0", + "cumulus-primitives-core 0.19.0", + "cumulus-primitives-utility 0.21.0", + "frame-benchmarking 41.0.0", + "frame-executive 41.0.0", + "frame-metadata-hash-extension 0.9.0", + "frame-support 41.0.0", + "frame-system 41.0.0", + "frame-system-benchmarking 41.0.0", + "frame-system-rpc-runtime-api 37.0.0", + "frame-try-runtime 0.47.0", + "hex-literal 0.4.1", + "log", + "pallet-asset-conversion 23.0.0", "pallet-asset-conversion-ops", - "pallet-asset-conversion-tx-payment 22.0.0", + "pallet-asset-conversion-tx-payment 23.0.0", "pallet-asset-rewards", - "pallet-assets 42.0.0", + "pallet-assets 43.0.0", "pallet-assets-freezer", - "pallet-aura 39.0.0", - "pallet-authorship 40.0.0", - "pallet-balances 41.1.0", - "pallet-collator-selection 21.0.0", - "pallet-message-queue 43.1.0", + "pallet-aura 40.0.0", + "pallet-authorship 41.0.0", + "pallet-balances 42.0.0", + "pallet-collator-selection 22.0.0", + "pallet-message-queue 44.0.0", "pallet-migrations", - "pallet-multisig 40.1.0", + "pallet-multisig 41.0.0", "pallet-nft-fractionalization", - "pallet-nfts 34.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "pallet-nfts-runtime-api 26.0.0", - "pallet-proxy 40.1.0", - "pallet-revive", - "pallet-session 40.0.0", - "pallet-state-trie-migration 44.1.0", - "pallet-timestamp 39.0.0", - "pallet-transaction-payment 40.0.0", - "pallet-transaction-payment-rpc-runtime-api 40.0.0", - "pallet-uniques 40.1.0", - "pallet-utility 40.0.0", - "pallet-xcm 19.1.0", - "pallet-xcm-benchmarks 20.0.0", - "pallet-xcm-bridge-hub-router 0.18.0", - "parachains-common 21.0.0", - "parity-scale-codec", - "polkadot-parachain-primitives 16.1.0", - "polkadot-runtime-common 19.1.0", + "pallet-nfts 35.0.0", + "pallet-nfts-runtime-api 27.0.0", + "pallet-proxy 41.0.0", + "pallet-revive 0.7.0", + "pallet-session 41.0.0", + "pallet-state-trie-migration 46.0.0", + "pallet-timestamp 40.0.0", + "pallet-transaction-payment 41.0.0", + "pallet-transaction-payment-rpc-runtime-api 41.0.0", + "pallet-uniques 41.0.0", + "pallet-utility 41.0.0", + "pallet-xcm 20.1.0", + "pallet-xcm-benchmarks 21.0.0", + "pallet-xcm-bridge-hub-router 0.19.0", + "parachains-common 22.0.0", + "parity-scale-codec", + "polkadot-parachain-primitives 17.0.0", + "polkadot-runtime-common 20.0.0", "primitive-types 0.13.1", "scale-info", "serde_json", - "snowbridge-inbound-queue-primitives", "snowbridge-outbound-queue-primitives", "snowbridge-pallet-system-frontend", "snowbridge-runtime-common", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-block-builder 36.0.0", - "sp-consensus-aura 0.42.0", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-genesis-builder 0.17.0", - "sp-inherents 36.0.0", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keyring 41.0.0", - "sp-offchain 36.0.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-session 38.1.0", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-transaction-pool 36.0.0", - "sp-version 39.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-parachain-info 0.20.0", - "staging-xcm 16.1.0", - "staging-xcm-builder 20.1.0", - "staging-xcm-executor 19.1.0", - "substrate-wasm-builder 26.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-block-builder 37.0.0", + "sp-consensus-aura 0.43.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-genesis-builder 0.18.0", + "sp-inherents 37.0.0", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keyring 42.0.0", + "sp-offchain 37.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-session 39.0.0", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-transaction-pool 37.0.0", + "sp-version 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-parachain-info 0.21.0", + "staging-xcm 17.0.0", + "staging-xcm-builder 21.0.0", + "staging-xcm-executor 20.0.0", + "substrate-wasm-builder 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "testnet-parachains-constants", "westend-runtime-constants", - "xcm-runtime-apis 0.7.0", + "xcm-runtime-apis 0.8.0", ] [[package]] name = "asset-test-utils" -version = "23.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" -dependencies = [ - "cumulus-pallet-parachain-system 0.20.0", - "cumulus-pallet-xcmp-queue 0.20.0", - "cumulus-primitives-core 0.18.1", - "frame-support 40.1.0", - "frame-system 40.1.0", - "pallet-asset-conversion 22.0.0", - "pallet-assets 42.0.0", - "pallet-balances 41.1.0", - "pallet-collator-selection 21.0.0", - "pallet-session 40.0.0", - "pallet-timestamp 39.0.0", - "pallet-xcm 19.1.0", - "pallet-xcm-bridge-hub-router 0.18.0", - "parachains-common 21.0.0", +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" +dependencies = [ + "cumulus-pallet-parachain-system 0.21.0", + "cumulus-pallet-xcmp-queue 0.21.0", + "cumulus-primitives-core 0.19.0", + "frame-support 41.0.0", + "frame-system 41.0.0", + "pallet-asset-conversion 23.0.0", + "pallet-assets 43.0.0", + "pallet-balances 42.0.0", + "pallet-collator-selection 22.0.0", + "pallet-session 41.0.0", + "pallet-timestamp 40.0.0", + "pallet-xcm 20.1.0", + "pallet-xcm-bridge-hub-router 0.19.0", + "parachains-common 22.0.0", "parachains-runtimes-test-utils", "parity-scale-codec", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-parachain-info 0.20.0", - "staging-xcm 16.1.0", - "staging-xcm-builder 20.1.0", - "staging-xcm-executor 19.1.0", - "xcm-runtime-apis 0.7.0", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-parachain-info 0.21.0", + "staging-xcm 17.0.0", + "staging-xcm-builder 21.0.0", + "staging-xcm-executor 20.0.0", + "xcm-runtime-apis 0.8.0", ] [[package]] @@ -1057,7 +1064,7 @@ dependencies = [ "log", "pallet-asset-conversion 20.0.0", "pallet-assets 40.0.0", - "pallet-xcm 17.0.2", + "pallet-xcm 17.0.4", "parachains-common 18.0.0", "parity-scale-codec", "scale-info", @@ -1065,29 +1072,34 @@ dependencies = [ "sp-runtime 39.0.5", "staging-xcm 14.2.2", "staging-xcm-builder 17.0.5", - "staging-xcm-executor 17.0.2", + "staging-xcm-executor 17.0.3", "substrate-wasm-builder 24.0.2", ] [[package]] name = "assets-common" -version = "0.21.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.22.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "cumulus-primitives-core 0.18.1", - "frame-support 40.1.0", + "cumulus-primitives-core 0.19.0", + "ethereum-standards 0.1.1", + "frame-support 41.0.0", + "frame-system 41.0.0", "impl-trait-for-tuples", - "pallet-asset-conversion 22.0.0", - "pallet-assets 42.0.0", - "pallet-xcm 19.1.0", - "parachains-common 21.0.0", - "parity-scale-codec", - "scale-info", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", - "staging-xcm-builder 20.1.0", - "staging-xcm-executor 19.1.0", + "pallet-asset-conversion 23.0.0", + "pallet-assets 43.0.0", + "pallet-revive 0.7.0", + "pallet-revive-uapi 0.5.0", + "pallet-xcm 20.1.0", + "parachains-common 22.0.0", + "parity-scale-codec", + "scale-info", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", + "staging-xcm-builder 21.0.0", + "staging-xcm-executor 20.0.0", "tracing", ] @@ -1104,9 +1116,9 @@ dependencies = [ [[package]] name = "async-channel" -version = "2.3.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" dependencies = [ "concurrent-queue", "event-listener-strategy", @@ -1123,7 +1135,7 @@ dependencies = [ "async-task", "concurrent-queue", "fastrand 2.3.0", - "futures-lite 2.6.0", + "futures-lite 2.6.1", "pin-project-lite", "slab", ] @@ -1142,13 +1154,13 @@ dependencies = [ [[package]] name = "async-fs" -version = "2.1.2" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" +checksum = "09f7e37c0ed80b2a977691c47dae8625cfb21e205827106c64f7c588766b2e50" dependencies = [ - "async-lock 3.4.0", + "async-lock 3.4.1", "blocking", - "futures-lite 2.6.0", + "futures-lite 2.6.1", ] [[package]] @@ -1173,21 +1185,20 @@ dependencies = [ [[package]] name = "async-io" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" +checksum = "19634d6336019ef220f09fd31168ce5c184b295cbf80345437cc36094ef223ca" dependencies = [ - "async-lock 3.4.0", + "async-lock 3.4.1", "cfg-if", "concurrent-queue", "futures-io", - "futures-lite 2.6.0", + "futures-lite 2.6.1", "parking", - "polling 3.7.4", - "rustix 0.38.44", + "polling 3.10.0", + "rustix 1.0.8", "slab", - "tracing", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -1201,11 +1212,11 @@ dependencies = [ [[package]] name = "async-lock" -version = "3.4.0" +version = "3.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" +checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc" dependencies = [ - "event-listener 5.4.0", + "event-listener 5.4.1", "event-listener-strategy", "pin-project-lite", ] @@ -1227,9 +1238,9 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b948000fad4873c1c9339d60f2623323a0cfd3816e5181033c6a5cb68b2accf7" dependencies = [ - "async-io 2.4.0", + "async-io 2.5.0", "blocking", - "futures-lite 2.6.0", + "futures-lite 2.6.1", ] [[package]] @@ -1251,39 +1262,38 @@ dependencies = [ [[package]] name = "async-process" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb" +checksum = "65daa13722ad51e6ab1a1b9c01299142bc75135b337923cfa10e79bbbd669f00" dependencies = [ - "async-channel 2.3.1", - "async-io 2.4.0", - "async-lock 3.4.0", + "async-channel 2.5.0", + "async-io 2.5.0", + "async-lock 3.4.1", "async-signal", "async-task", "blocking", "cfg-if", - "event-listener 5.4.0", - "futures-lite 2.6.0", - "rustix 0.38.44", - "tracing", + "event-listener 5.4.1", + "futures-lite 2.6.1", + "rustix 1.0.8", ] [[package]] name = "async-signal" -version = "0.2.10" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3" +checksum = "f567af260ef69e1d52c2b560ce0ea230763e6fbb9214a85d768760a920e3e3c1" dependencies = [ - "async-io 2.4.0", - "async-lock 3.4.0", + "async-io 2.5.0", + "async-lock 3.4.1", "atomic-waker", "cfg-if", "futures-core", "futures-io", - "rustix 0.38.44", + "rustix 1.0.8", "signal-hook-registry", "slab", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -1300,7 +1310,7 @@ checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -1360,14 +1370,14 @@ checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "autocfg" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "backtrace" @@ -1422,9 +1432,19 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" -version = "1.7.3" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e25b6adfb930f02d1981565a6e5d9c547ac15a96606256d3b59040e5cd4ca3" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" + +[[package]] +name = "binary-merkle-tree" +version = "13.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "hash-db", + "log", + "parity-scale-codec", +] [[package]] name = "binary-merkle-tree" @@ -1450,7 +1470,7 @@ dependencies = [ [[package]] name = "binary-merkle-tree" version = "16.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "hash-db", "log", @@ -1484,7 +1504,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -1506,9 +1526,9 @@ dependencies = [ [[package]] name = "bip39" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33415e24172c1b7d6066f6d999545375ab8e1d95421d6784bdfff9496f292387" +checksum = "43d193de1f7487df1914d3a568b772458861d33f9c54249612cc2893d6915054" dependencies = [ "bitcoin_hashes 0.13.0", "serde", @@ -1673,14 +1693,14 @@ dependencies = [ [[package]] name = "blocking" -version = "1.6.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" dependencies = [ - "async-channel 2.3.1", + "async-channel 2.5.0", "async-task", "futures-io", - "futures-lite 2.6.0", + "futures-lite 2.6.1", "piper", ] @@ -1709,7 +1729,7 @@ dependencies = [ "serde_json", "serde_repr", "serde_urlencoded", - "thiserror 2.0.12", + "thiserror 2.0.14", "tokio", "tokio-util", "tower-service", @@ -1740,6 +1760,19 @@ dependencies = [ "serde", ] +[[package]] +name = "bounded-collections" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dee8eddd066a8825ec5570528e6880471210fd5d88cb6abbe1cfdd51ca249c33" +dependencies = [ + "jam-codec", + "log", + "parity-scale-codec", + "scale-info", + "serde", +] + [[package]] name = "bounded-vec" version = "0.7.1" @@ -1765,35 +1798,37 @@ dependencies = [ [[package]] name = "bp-asset-hub-rococo" -version = "0.17.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.18.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "bp-bridge-hub-cumulus 0.21.0", - "bp-messages 0.20.1", - "bp-runtime 0.20.1", - "bp-xcm-bridge-hub-router 0.17.0", - "frame-support 40.1.0", + "bp-bridge-hub-cumulus 0.22.0", + "bp-messages 0.21.0", + "bp-runtime 0.21.0", + "bp-xcm-bridge-hub-router 0.18.0", + "frame-support 41.0.0", "parity-scale-codec", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", "testnet-parachains-constants", ] [[package]] name = "bp-asset-hub-westend" -version = "0.16.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.17.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "bp-bridge-hub-cumulus 0.21.0", - "bp-messages 0.20.1", - "bp-runtime 0.20.1", - "bp-xcm-bridge-hub-router 0.17.0", - "frame-support 40.1.0", + "bp-bridge-hub-cumulus 0.22.0", + "bp-messages 0.21.0", + "bp-runtime 0.21.0", + "bp-xcm-bridge-hub-router 0.18.0", + "frame-support 41.0.0", "parity-scale-codec", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", "testnet-parachains-constants", ] @@ -1815,17 +1850,18 @@ dependencies = [ [[package]] name = "bp-bridge-hub-cumulus" -version = "0.21.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.22.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "bp-messages 0.20.1", - "bp-polkadot-core 0.20.1", - "bp-runtime 0.20.1", - "frame-support 40.1.0", - "frame-system 40.1.0", - "polkadot-primitives 18.1.0", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "bp-messages 0.21.0", + "bp-polkadot-core 0.21.0", + "bp-runtime 0.21.0", + "frame-support 41.0.0", + "frame-system 41.0.0", + "parachains-common 22.0.0", + "polkadot-primitives 19.0.0", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -1891,34 +1927,34 @@ dependencies = [ [[package]] name = "bp-bridge-hub-rococo" -version = "0.21.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.22.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "bp-bridge-hub-cumulus 0.21.0", - "bp-messages 0.20.1", - "bp-runtime 0.20.1", + "bp-bridge-hub-cumulus 0.22.0", + "bp-messages 0.21.0", + "bp-runtime 0.21.0", "bp-xcm-bridge-hub", - "frame-support 40.1.0", + "frame-support 41.0.0", "parity-scale-codec", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "bp-bridge-hub-westend" -version = "0.17.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.18.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "bp-bridge-hub-cumulus 0.21.0", - "bp-messages 0.20.1", - "bp-runtime 0.20.1", + "bp-bridge-hub-cumulus 0.22.0", + "bp-messages 0.21.0", + "bp-runtime 0.21.0", "bp-xcm-bridge-hub", - "frame-support 40.1.0", + "frame-support 41.0.0", "parity-scale-codec", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -1941,19 +1977,19 @@ dependencies = [ [[package]] name = "bp-header-chain" -version = "0.20.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.21.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "bp-runtime 0.20.1", + "bp-runtime 0.21.0", "finality-grandpa", - "frame-support 40.1.0", + "frame-support 41.0.0", "parity-scale-codec", "scale-info", "serde", - "sp-consensus-grandpa 23.1.0", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-consensus-grandpa 24.0.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -1975,35 +2011,35 @@ dependencies = [ [[package]] name = "bp-messages" -version = "0.20.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.21.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "bp-header-chain 0.20.1", - "bp-runtime 0.20.1", - "frame-support 40.1.0", + "bp-header-chain 0.21.0", + "bp-runtime 0.21.0", + "frame-support 41.0.0", "parity-scale-codec", "scale-info", "serde", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "bp-parachains" -version = "0.20.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.21.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "bp-header-chain 0.20.1", - "bp-polkadot-core 0.20.1", - "bp-runtime 0.20.1", - "frame-support 40.1.0", + "bp-header-chain 0.21.0", + "bp-polkadot-core 0.21.0", + "bp-runtime 0.21.0", + "frame-support 41.0.0", "impl-trait-for-tuples", "parity-scale-codec", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -2027,37 +2063,37 @@ dependencies = [ [[package]] name = "bp-polkadot-core" -version = "0.20.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.21.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "bp-messages 0.20.1", - "bp-runtime 0.20.1", - "frame-support 40.1.0", - "frame-system 40.1.0", + "bp-messages 0.21.0", + "bp-runtime 0.21.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "parity-scale-codec", "scale-info", "serde", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "bp-relayers" -version = "0.20.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.21.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "bp-header-chain 0.20.1", - "bp-messages 0.20.1", + "bp-header-chain 0.21.0", + "bp-messages 0.21.0", "bp-parachains", - "bp-runtime 0.20.1", - "frame-support 40.1.0", - "frame-system 40.1.0", - "pallet-utility 40.0.0", + "bp-runtime 0.21.0", + "frame-support 41.0.0", + "frame-system 41.0.0", + "pallet-utility 41.0.0", "parity-scale-codec", "scale-info", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -2086,11 +2122,11 @@ dependencies = [ [[package]] name = "bp-runtime" -version = "0.20.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.21.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "hash-db", "impl-trait-for-tuples", "log", @@ -2098,30 +2134,30 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-state-machine 0.45.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-trie 39.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-state-machine 0.46.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-trie 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "trie-db 0.30.0", ] [[package]] name = "bp-xcm-bridge-hub" -version = "0.6.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.7.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "bp-messages 0.20.1", - "bp-runtime 0.20.1", - "frame-support 40.1.0", + "bp-messages 0.21.0", + "bp-runtime 0.21.0", + "frame-support 41.0.0", "parity-scale-codec", "scale-info", "serde", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", ] [[package]] @@ -2139,14 +2175,14 @@ dependencies = [ [[package]] name = "bp-xcm-bridge-hub-router" -version = "0.17.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.18.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "parity-scale-codec", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", ] [[package]] @@ -2170,9 +2206,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.17.0" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] name = "byte-slice-cast" @@ -2188,9 +2224,9 @@ checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" [[package]] name = "bytemuck" -version = "1.23.0" +version = "1.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9134a6ef01ce4b366b50689c94f82c14bc72bc5d0386829828a2e2752ef7958c" +checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677" [[package]] name = "byteorder" @@ -2229,9 +2265,9 @@ dependencies = [ [[package]] name = "camino" -version = "1.1.9" +version = "1.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" +checksum = "5d07aa9a93b00c76f71bc35d598bed923f6d4f3a9ca5c24b7737ae1a292841c0" dependencies = [ "serde", ] @@ -2245,6 +2281,31 @@ dependencies = [ "serde", ] +[[package]] +name = "cargo-platform" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84982c6c0ae343635a3a4ee6dedef965513735c8b183caa7289fa6e27399ebd4" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-util-schemas" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dc1a6f7b5651af85774ae5a34b4e8be397d9cf4bc063b7e6dbd99a841837830" +dependencies = [ + "semver 1.0.26", + "serde", + "serde-untagged", + "serde-value", + "thiserror 2.0.14", + "toml 0.8.23", + "unicode-xid", + "url", +] + [[package]] name = "cargo_metadata" version = "0.15.4" @@ -2252,7 +2313,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" dependencies = [ "camino", - "cargo-platform", + "cargo-platform 0.1.9", "semver 1.0.26", "serde", "serde_json", @@ -2266,18 +2327,33 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" dependencies = [ "camino", - "cargo-platform", + "cargo-platform 0.1.9", + "semver 1.0.26", + "serde", + "serde_json", + "thiserror 2.0.14", +] + +[[package]] +name = "cargo_metadata" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cfca2aaa699835ba88faf58a06342a314a950d2b9686165e038286c30316868" +dependencies = [ + "camino", + "cargo-platform 0.2.0", + "cargo-util-schemas", "semver 1.0.26", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.14", ] [[package]] name = "cc" -version = "1.2.23" +version = "1.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4ac86a9e5bc1e2b3449ab9d7d3a6a405e3d1bb28d7b9be8614f55846ae3766" +checksum = "2352e5597e9c544d5e6d9c95190d5d27738ade584fa8db0a16e130e5c2b5296e" dependencies = [ "jobserver", "libc", @@ -2310,9 +2386,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" [[package]] name = "cfg_aliases" @@ -2433,9 +2509,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.38" +version = "4.5.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed93b9805f8ba930df42c2590f05453d5ec36cbb85d018868a5b24d31f6ac000" +checksum = "1fc0e74a703892159f5ae7d3aac52c8e6c392f5ae5f359c70b5881d60aaac318" dependencies = [ "clap_builder", "clap_derive", @@ -2443,9 +2519,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.38" +version = "4.5.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "379026ff283facf611b0ea629334361c4211d1b12ee01024eec1591133b04120" +checksum = "b3e7f4214277f3c7aa526a59dd3fbe306a370daee1f8b7b8c987069cd8e888a8" dependencies = [ "anstream", "anstyle", @@ -2456,21 +2532,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.32" +version = "4.5.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" +checksum = "14cb31bb0a7d536caef2639baa7fad459e15c3144efefa6dbd1c84562c4739f6" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "clap_lex" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" +checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" [[package]] name = "coarsetime" @@ -2517,14 +2593,14 @@ dependencies = [ "nom", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "colorchoice" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "colored" @@ -2533,6 +2609,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c" dependencies = [ "lazy_static", + "windows-sys 0.48.0", +] + +[[package]] +name = "colored" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fde0e0ec90c9dfb3b4b1a0891a7dcd0e2bffde2f7efed5fe7c9bb00e5bfb915e" +dependencies = [ "windows-sys 0.59.0", ] @@ -2650,6 +2735,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" dependencies = [ "const_format_proc_macros", + "konst", ] [[package]] @@ -2678,18 +2764,17 @@ checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" [[package]] name = "contract-build" version = "5.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e661897ab30bc0290628b2ea3ce18463c766a1264687a76aa8f5a36b6e75e78" +source = "git+https://github.com/use-ink/cargo-contract?branch=v5-rust-stable#450334b069b939afc877a312647a601fedbfbe01" dependencies = [ "anyhow", "blake2 0.10.6", "bollard", "cargo_metadata 0.19.2", "clap", - "colored", - "contract-metadata", - "crossterm", - "duct", + "colored 2.2.0", + "contract-metadata 5.0.3", + "crossterm 0.28.1", + "duct 0.13.7", "heck 0.5.0", "hex", "impl-serde 0.5.0", @@ -2704,7 +2789,7 @@ dependencies = [ "term_size", "tokio", "tokio-stream", - "toml 0.8.22", + "toml 0.8.23", "tracing", "url", "uzers", @@ -2712,15 +2797,69 @@ dependencies = [ "wasm-encoder", "wasm-opt", "wasmparser 0.220.1", - "which", - "zip", + "which 7.0.3", + "zip 2.4.2", +] + +[[package]] +name = "contract-build" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/cargo-contract?tag=v6.0.0-alpha.1#6a5a37a8ff51e380a184a2ebc1993d9b437b6812" +dependencies = [ + "alloy-json-abi", + "anyhow", + "blake2 0.10.6", + "bollard", + "cargo_metadata 0.21.0", + "clap", + "colored 3.0.0", + "contract-metadata 6.0.0-alpha.1", + "crossterm 0.29.0", + "duct 1.1.0", + "heck 0.5.0", + "hex", + "impl-serde 0.5.0", + "ink_metadata 6.0.0-alpha.1 (git+https://github.com/use-ink/ink?branch=master)", + "itertools 0.14.0", + "parity-scale-codec", + "polkavm-linker 0.27.0", + "regex", + "rustc_version 0.4.1", + "semver 1.0.26", + "serde", + "serde_json", + "sha3", + "tempfile", + "term_size", + "tokio", + "tokio-stream", + "toml 0.8.23", + "tracing", + "url", + "uzers", + "walkdir", + "which 8.0.0", + "zip 3.0.0", + "zip 4.3.0", ] [[package]] name = "contract-metadata" version = "5.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ce11bf540c9b154aca38e9d828ae7ea93ec7b4486c5dea87d553016b28af175" +source = "git+https://github.com/use-ink/cargo-contract?branch=v5-rust-stable#450334b069b939afc877a312647a601fedbfbe01" +dependencies = [ + "anyhow", + "impl-serde 0.5.0", + "semver 1.0.26", + "serde", + "serde_json", + "url", +] + +[[package]] +name = "contract-metadata" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/cargo-contract?tag=v6.0.0-alpha.1#6a5a37a8ff51e380a184a2ebc1993d9b437b6812" dependencies = [ "anyhow", "impl-serde 0.5.0", @@ -2736,6 +2875,15 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" +[[package]] +name = "convert_case" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb402b8d4c85569410425650ce3eddc7d698ed96d39a73f941b08fb63082f1e7" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "core-foundation" version = "0.9.4" @@ -2748,9 +2896,9 @@ dependencies = [ [[package]] name = "core-foundation" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" dependencies = [ "core-foundation-sys", "libc", @@ -2899,13 +3047,28 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ "cfg-if", ] +[[package]] +name = "critical-section" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" + +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-deque" version = "0.8.6" @@ -2949,13 +3112,31 @@ dependencies = [ "bitflags 2.9.1", "crossterm_winapi", "mio", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "rustix 0.38.44", "signal-hook", "signal-hook-mio", "winapi", ] +[[package]] +name = "crossterm" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b" +dependencies = [ + "bitflags 2.9.1", + "crossterm_winapi", + "derive_more 2.0.1", + "document-features", + "mio", + "parking_lot 0.12.4", + "rustix 1.0.8", + "signal-hook", + "signal-hook-mio", + "winapi", +] + [[package]] name = "crossterm_winapi" version = "0.9.1" @@ -2967,9 +3148,9 @@ dependencies = [ [[package]] name = "crunchy" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-bigint" @@ -3038,10 +3219,36 @@ dependencies = [ "cipher 0.4.4", ] +[[package]] +name = "cumulus-client-bootnodes" +version = "0.2.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" +dependencies = [ + "array-bytes 6.2.3", + "async-channel 1.9.0", + "cumulus-client-network", + "cumulus-primitives-core 0.19.0", + "cumulus-relay-chain-interface", + "futures", + "hex", + "ip_network", + "log", + "num-traits", + "parachains-common 22.0.0", + "parity-scale-codec", + "prost 0.12.6", + "prost-build", + "sc-network", + "sc-service", + "sp-consensus-babe 0.43.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "tokio", +] + [[package]] name = "cumulus-client-cli" -version = "0.22.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.24.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "clap", "parity-scale-codec", @@ -3050,55 +3257,55 @@ dependencies = [ "sc-client-api", "sc-service", "sp-blockchain", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "url", ] [[package]] name = "cumulus-client-collator" -version = "0.22.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.24.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "cumulus-client-consensus-common", "cumulus-client-network", - "cumulus-primitives-core 0.18.1", + "cumulus-primitives-core 0.19.0", "futures", "parity-scale-codec", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-overseer", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "sc-client-api", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-consensus", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "tracing", ] [[package]] name = "cumulus-client-consensus-aura" -version = "0.22.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.24.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "async-trait", "cumulus-client-collator", "cumulus-client-consensus-common", "cumulus-client-consensus-proposer", "cumulus-client-parachain-inherent", - "cumulus-primitives-aura 0.17.0", - "cumulus-primitives-core 0.18.1", + "cumulus-primitives-aura 0.18.0", + "cumulus-primitives-core 0.19.0", "cumulus-relay-chain-interface", "futures", "parity-scale-codec", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-node-subsystem-util", "polkadot-overseer", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "sc-client-api", "sc-consensus", "sc-consensus-aura", @@ -3107,158 +3314,167 @@ dependencies = [ "sc-telemetry", "sc-utils", "schnellru", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-application-crypto 40.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-block-builder 36.0.0", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-application-crypto 41.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-block-builder 37.0.0", "sp-blockchain", "sp-consensus", - "sp-consensus-aura 0.42.0", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-inherents 36.0.0", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-state-machine 0.45.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-timestamp 36.0.0", - "sp-trie 39.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "substrate-prometheus-endpoint", + "sp-consensus-aura 0.43.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-inherents 37.0.0", + "sp-keystore 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-state-machine 0.46.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-timestamp 37.0.0", + "sp-trie 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "substrate-prometheus-endpoint 0.17.2", "tokio", "tracing", ] [[package]] name = "cumulus-client-consensus-common" -version = "0.22.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.24.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "async-trait", "cumulus-client-pov-recovery", - "cumulus-primitives-core 0.18.1", + "cumulus-primitives-core 0.19.0", "cumulus-relay-chain-interface", + "cumulus-relay-chain-streams", "dyn-clone", "futures", "log", "parity-scale-codec", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "sc-client-api", "sc-consensus", "sc-consensus-babe", + "sc-network", "schnellru", "sp-blockchain", "sp-consensus", - "sp-consensus-slots 0.42.1", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-timestamp 36.0.0", - "sp-trie 39.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-version 39.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "substrate-prometheus-endpoint", + "sp-consensus-slots 0.43.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-timestamp 37.0.0", + "sp-trie 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-version 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "substrate-prometheus-endpoint 0.17.2", "tracing", ] [[package]] name = "cumulus-client-consensus-proposer" -version = "0.19.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.20.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "anyhow", "async-trait", - "cumulus-primitives-parachain-inherent 0.18.1", + "cumulus-primitives-parachain-inherent 0.19.0", "sp-consensus", - "sp-inherents 36.0.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-state-machine 0.45.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-inherents 37.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-state-machine 0.46.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", ] [[package]] name = "cumulus-client-network" -version = "0.22.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.24.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "async-trait", "cumulus-relay-chain-interface", "futures", "futures-timer", "parity-scale-codec", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "polkadot-node-primitives", "polkadot-node-subsystem", - "polkadot-parachain-primitives 16.1.0", - "polkadot-primitives 18.1.0", + "polkadot-parachain-primitives 17.0.0", + "polkadot-primitives 19.0.0", "sc-client-api", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sc-network", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-blockchain", "sp-consensus", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-state-machine 0.45.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-version 39.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-state-machine 0.46.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-version 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "tracing", ] [[package]] name = "cumulus-client-parachain-inherent" -version = "0.16.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.18.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "async-trait", - "cumulus-primitives-core 0.18.1", - "cumulus-primitives-parachain-inherent 0.18.1", + "cumulus-primitives-core 0.19.0", + "cumulus-primitives-parachain-inherent 0.19.0", "cumulus-relay-chain-interface", "cumulus-test-relay-sproof-builder", "parity-scale-codec", "sc-client-api", - "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-inherents 36.0.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-state-machine 0.45.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sc-consensus-babe", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-inherents 37.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-state-machine 0.46.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "tracing", ] [[package]] name = "cumulus-client-pov-recovery" -version = "0.22.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.24.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "async-trait", - "cumulus-primitives-core 0.18.1", + "cumulus-primitives-core 0.19.0", "cumulus-relay-chain-interface", + "cumulus-relay-chain-streams", "futures", "futures-timer", "parity-scale-codec", "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-overseer", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "rand 0.8.5", "sc-client-api", "sc-consensus", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sc-network", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-consensus", - "sp-maybe-compressed-blob 11.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-version 39.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-maybe-compressed-blob 11.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-version 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "tracing", ] [[package]] name = "cumulus-client-service" -version = "0.23.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.25.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ + "async-channel 1.9.0", "cumulus-client-cli", "cumulus-client-collator", "cumulus-client-consensus-common", "cumulus-client-network", "cumulus-client-pov-recovery", - "cumulus-primitives-core 0.18.1", - "cumulus-primitives-proof-size-hostfunction 0.12.0", + "cumulus-primitives-core 0.19.0", + "cumulus-primitives-proof-size-hostfunction 0.13.0", "cumulus-relay-chain-inprocess-interface", "cumulus-relay-chain-interface", "cumulus-relay-chain-minimal-node", + "cumulus-relay-chain-streams", "futures", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", + "prometheus", "sc-client-api", "sc-consensus", "sc-network", @@ -3270,13 +3486,13 @@ dependencies = [ "sc-telemetry", "sc-transaction-pool", "sc-utils", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-blockchain", "sp-consensus", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-transaction-pool 36.0.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-transaction-pool 37.0.0", ] [[package]] @@ -3299,19 +3515,19 @@ dependencies = [ [[package]] name = "cumulus-pallet-aura-ext" -version = "0.20.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.21.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "cumulus-pallet-parachain-system 0.20.0", - "frame-support 40.1.0", - "frame-system 40.1.0", - "pallet-aura 39.0.0", - "pallet-timestamp 39.0.0", + "cumulus-pallet-parachain-system 0.21.0", + "frame-support 41.0.0", + "frame-system 41.0.0", + "pallet-aura 40.0.0", + "pallet-timestamp 40.0.0", "parity-scale-codec", "scale-info", - "sp-application-crypto 40.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-consensus-aura 0.42.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-application-crypto 41.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-consensus-aura 0.43.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -3326,7 +3542,7 @@ dependencies = [ "cumulus-primitives-parachain-inherent 0.16.0", "cumulus-primitives-proof-size-hostfunction 0.10.0", "environmental", - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "impl-trait-for-tuples", @@ -3353,36 +3569,38 @@ dependencies = [ [[package]] name = "cumulus-pallet-parachain-system" -version = "0.20.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.21.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "bytes", - "cumulus-pallet-parachain-system-proc-macro 0.6.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "cumulus-primitives-core 0.18.1", - "cumulus-primitives-parachain-inherent 0.18.1", - "cumulus-primitives-proof-size-hostfunction 0.12.0", + "cumulus-pallet-parachain-system-proc-macro 0.6.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "cumulus-primitives-core 0.19.0", + "cumulus-primitives-parachain-inherent 0.19.0", + "cumulus-primitives-proof-size-hostfunction 0.13.0", "environmental", - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", + "hashbrown 0.15.5", "impl-trait-for-tuples", "log", - "pallet-message-queue 43.1.0", - "parity-scale-codec", - "polkadot-parachain-primitives 16.1.0", - "polkadot-runtime-parachains 19.1.0", - "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-inherents 36.0.0", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-state-machine 0.45.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-trie 39.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-version 39.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", - "staging-xcm-builder 20.1.0", + "pallet-message-queue 44.0.0", + "parity-scale-codec", + "polkadot-parachain-primitives 17.0.0", + "polkadot-runtime-parachains 20.0.1", + "scale-info", + "sp-consensus-babe 0.43.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-inherents 37.0.0", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-state-machine 0.46.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-trie 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-version 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", + "staging-xcm-builder 21.0.0", "trie-db 0.30.0", ] @@ -3395,18 +3613,18 @@ dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "cumulus-pallet-parachain-system-proc-macro" version = "0.6.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -3415,7 +3633,7 @@ version = "19.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "18168570689417abfb514ac8812fca7e6429764d01942750e395d7d8ce0716ef" dependencies = [ - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "pallet-session 38.0.0", @@ -3425,34 +3643,34 @@ dependencies = [ [[package]] name = "cumulus-pallet-session-benchmarking" -version = "21.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "22.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", - "pallet-session 40.0.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", + "pallet-session 41.0.0", "parity-scale-codec", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "cumulus-pallet-weight-reclaim" -version = "0.2.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.3.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "cumulus-primitives-storage-weight-reclaim", "derive-where", "docify", - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", "parity-scale-codec", "scale-info", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-trie 39.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-trie 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -3473,17 +3691,17 @@ dependencies = [ [[package]] name = "cumulus-pallet-xcm" -version = "0.19.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.20.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "cumulus-primitives-core 0.18.1", - "frame-support 40.1.0", - "frame-system 40.1.0", + "cumulus-primitives-core 0.19.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "parity-scale-codec", "scale-info", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", ] [[package]] @@ -3492,10 +3710,10 @@ version = "0.17.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4f4b7dec3206640120013d2ce6b476cbac8be9b93335f66b40255711db81301" dependencies = [ - "bounded-collections", + "bounded-collections 0.2.4", "bp-xcm-bridge-hub-router 0.14.1", "cumulus-primitives-core 0.16.0", - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "log", @@ -3509,32 +3727,33 @@ dependencies = [ "sp-runtime 39.0.5", "staging-xcm 14.2.2", "staging-xcm-builder 17.0.5", - "staging-xcm-executor 17.0.2", + "staging-xcm-executor 17.0.3", ] [[package]] name = "cumulus-pallet-xcmp-queue" -version = "0.20.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.21.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "bounded-collections", - "bp-xcm-bridge-hub-router 0.17.0", - "cumulus-primitives-core 0.18.1", - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "approx", + "bounded-collections 0.2.4", + "bp-xcm-bridge-hub-router 0.18.0", + "cumulus-primitives-core 0.19.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", - "pallet-message-queue 43.1.0", + "pallet-message-queue 44.0.0", "parity-scale-codec", - "polkadot-runtime-common 19.1.0", - "polkadot-runtime-parachains 19.1.0", + "polkadot-runtime-common 20.0.0", + "polkadot-runtime-parachains 20.0.1", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", - "staging-xcm-builder 20.1.0", - "staging-xcm-executor 19.1.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", + "staging-xcm-builder 21.0.0", + "staging-xcm-executor 20.0.0", ] [[package]] @@ -3553,11 +3772,11 @@ dependencies = [ [[package]] name = "cumulus-primitives-aura" -version = "0.17.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.18.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-consensus-aura 0.42.0", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-consensus-aura 0.43.0", ] [[package]] @@ -3579,18 +3798,19 @@ dependencies = [ [[package]] name = "cumulus-primitives-core" -version = "0.18.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.19.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "parity-scale-codec", - "polkadot-core-primitives 17.1.0", - "polkadot-parachain-primitives 16.1.0", - "polkadot-primitives 18.1.0", + "polkadot-core-primitives 18.0.0", + "polkadot-parachain-primitives 17.0.0", + "polkadot-primitives 19.0.0", "scale-info", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-trie 39.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-trie 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", + "tracing", ] [[package]] @@ -3610,16 +3830,16 @@ dependencies = [ [[package]] name = "cumulus-primitives-parachain-inherent" -version = "0.18.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.19.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "async-trait", - "cumulus-primitives-core 0.18.1", + "cumulus-primitives-core 0.19.0", "parity-scale-codec", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-inherents 36.0.0", - "sp-trie 39.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-inherents 37.0.0", + "sp-trie 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -3635,29 +3855,29 @@ dependencies = [ [[package]] name = "cumulus-primitives-proof-size-hostfunction" -version = "0.12.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.13.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime-interface 29.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-trie 39.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime-interface 30.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-trie 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "cumulus-primitives-storage-weight-reclaim" -version = "11.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "12.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "cumulus-primitives-core 0.18.1", - "cumulus-primitives-proof-size-hostfunction 0.12.0", + "cumulus-primitives-core 0.19.0", + "cumulus-primitives-proof-size-hostfunction 0.13.0", "docify", - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", "parity-scale-codec", "scale-info", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -3675,86 +3895,93 @@ dependencies = [ "sp-runtime 39.0.5", "staging-xcm 14.2.2", "staging-xcm-builder 17.0.5", - "staging-xcm-executor 17.0.2", + "staging-xcm-executor 17.0.3", ] [[package]] name = "cumulus-primitives-utility" -version = "0.20.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.21.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "cumulus-primitives-core 0.18.1", - "frame-support 40.1.0", + "cumulus-primitives-core 0.19.0", + "frame-support 41.0.0", "log", - "pallet-asset-conversion 22.0.0", + "pallet-asset-conversion 23.0.0", "parity-scale-codec", - "polkadot-runtime-common 19.1.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", - "staging-xcm-builder 20.1.0", - "staging-xcm-executor 19.1.0", + "polkadot-runtime-common 20.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", + "staging-xcm-builder 21.0.0", + "staging-xcm-executor 20.0.0", ] [[package]] name = "cumulus-relay-chain-inprocess-interface" -version = "0.23.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.25.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ + "async-channel 1.9.0", "async-trait", - "cumulus-primitives-core 0.18.1", + "cumulus-client-bootnodes", + "cumulus-primitives-core 0.19.0", "cumulus-relay-chain-interface", "futures", "futures-timer", "polkadot-cli", + "polkadot-primitives 19.0.0", "polkadot-service", "sc-cli", "sc-client-api", + "sc-network", "sc-sysinfo", "sc-telemetry", "sc-tracing", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-consensus", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-state-machine 0.45.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-state-machine 0.46.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "cumulus-relay-chain-interface" -version = "0.22.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.24.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "async-trait", - "cumulus-primitives-core 0.18.1", + "cumulus-primitives-core 0.19.0", "futures", "jsonrpsee-core", "parity-scale-codec", "polkadot-overseer", "sc-client-api", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sc-network", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-blockchain", - "sp-state-machine 0.45.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-version 39.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-state-machine 0.46.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-version 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", ] [[package]] name = "cumulus-relay-chain-minimal-node" -version = "0.23.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.25.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "array-bytes", + "array-bytes 6.2.3", + "async-channel 1.9.0", "async-trait", - "cumulus-primitives-core 0.18.1", + "cumulus-client-bootnodes", + "cumulus-primitives-core 0.19.0", "cumulus-relay-chain-interface", "cumulus-relay-chain-rpc-interface", "futures", - "polkadot-core-primitives 17.1.0", + "polkadot-core-primitives 18.0.0", "polkadot-network-bridge", "polkadot-node-network-protocol", "polkadot-node-subsystem-util", "polkadot-overseer", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "polkadot-service", "sc-authority-discovery", "sc-client-api", @@ -3763,22 +3990,22 @@ dependencies = [ "sc-service", "sc-tracing", "sc-utils", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-blockchain", "sp-consensus", - "sp-consensus-babe 0.42.1", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "substrate-prometheus-endpoint", + "sp-consensus-babe 0.43.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "substrate-prometheus-endpoint 0.17.2", "tracing", ] [[package]] name = "cumulus-relay-chain-rpc-interface" -version = "0.22.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.24.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "async-trait", - "cumulus-primitives-core 0.18.1", + "cumulus-primitives-core 0.19.0", "cumulus-relay-chain-interface", "either", "futures", @@ -3790,6 +4017,7 @@ dependencies = [ "prometheus", "rand 0.8.5", "sc-client-api", + "sc-network", "sc-rpc-api", "sc-service", "schnellru", @@ -3797,14 +4025,14 @@ dependencies = [ "serde_json", "smoldot 0.11.0", "smoldot-light 0.9.0", - "sp-authority-discovery 36.0.0", - "sp-consensus-babe 0.42.1", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-state-machine 0.45.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-version 39.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "substrate-prometheus-endpoint", + "sp-authority-discovery 37.0.0", + "sp-consensus-babe 0.43.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-state-machine 0.46.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-version 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "substrate-prometheus-endpoint 0.17.2", "thiserror 1.0.69", "tokio", "tokio-util", @@ -3812,17 +4040,31 @@ dependencies = [ "url", ] +[[package]] +name = "cumulus-relay-chain-streams" +version = "0.2.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" +dependencies = [ + "cumulus-relay-chain-interface", + "futures", + "polkadot-node-subsystem", + "polkadot-primitives 19.0.0", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-consensus", + "tracing", +] + [[package]] name = "cumulus-test-relay-sproof-builder" -version = "0.19.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.20.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "cumulus-primitives-core 0.18.1", + "cumulus-primitives-core 0.19.0", "parity-scale-codec", - "polkadot-primitives 18.1.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-state-machine 0.45.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-trie 39.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "polkadot-primitives 19.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-state-machine 0.46.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-trie 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -3849,7 +4091,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -3867,9 +4109,9 @@ dependencies = [ [[package]] name = "cxx" -version = "1.0.158" +version = "1.0.168" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a71ea7f29c73f7ffa64c50b83c9fe4d3a6d4be89a86b009eb80d5a6d3429d741" +checksum = "7aa144b12f11741f0dab5b4182896afad46faa0598b6a061f7b9d17a21837ba7" dependencies = [ "cc", "cxxbridge-cmd", @@ -3881,47 +4123,50 @@ dependencies = [ [[package]] name = "cxx-build" -version = "1.0.158" +version = "1.0.168" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36a8232661d66dcf713394726157d3cfe0a89bfc85f52d6e9f9bbc2306797fe7" +checksum = "12d3cbb84fb003242941c231b45ca9417e786e66e94baa39584bd99df3a270b6" dependencies = [ "cc", "codespan-reporting", + "indexmap 2.10.0", "proc-macro2", "quote", "scratch", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "cxxbridge-cmd" -version = "1.0.158" +version = "1.0.168" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f44296c8693e9ea226a48f6a122727f77aa9e9e338380cb021accaeeb7ee279" +checksum = "3fa36b7b249d43f67a3f54bd65788e35e7afe64bbc671396387a48b3e8aaea94" dependencies = [ "clap", "codespan-reporting", + "indexmap 2.10.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "cxxbridge-flags" -version = "1.0.158" +version = "1.0.168" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42f69c181c176981ae44ba9876e2ea41ce8e574c296b38d06925ce9214fb8e4" +checksum = "77707c70f6563edc5429618ca34a07241b75ebab35bd01d46697c75d58f8ddfe" [[package]] name = "cxxbridge-macro" -version = "1.0.158" +version = "1.0.168" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8faff5d4467e0709448187df29ccbf3b0982cc426ee444a193f87b11afb565a8" +checksum = "ede6c0fb7e318f0a11799b86ee29dcf17b9be2960bd379a6c38e1a96a6010fff" dependencies = [ + "indexmap 2.10.0", "proc-macro2", "quote", "rustversion", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -3969,7 +4214,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -3991,7 +4236,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -4004,7 +4249,7 @@ dependencies = [ "hashbrown 0.14.5", "lock_api", "once_cell", - "parking_lot_core 0.9.10", + "parking_lot_core 0.9.11", ] [[package]] @@ -4030,7 +4275,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d162beedaa69905488a8da94f5ac3edb4dd4788b732fadb7bd120b2625c1976" dependencies = [ "data-encoding", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -4100,18 +4345,18 @@ checksum = "d65d7ce8132b7c0e54497a4d9a55a1c2a0912a0d786cf894472ba818fba45762" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "derive-where" -version = "1.4.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e73f2692d4bd3cac41dca28934a39894200c9fabf49586d77d0e5954af1d7902" +checksum = "ef941ded77d15ca19b40374869ac6000af1c9f2a4c0f3d4c70926287e6364a8f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -4122,7 +4367,7 @@ checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -4131,11 +4376,11 @@ version = "0.99.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" dependencies = [ - "convert_case", + "convert_case 0.4.0", "proc-macro2", "quote", "rustc_version 0.4.1", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -4164,7 +4409,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "unicode-xid", ] @@ -4174,9 +4419,10 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" dependencies = [ + "convert_case 0.7.1", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "unicode-xid", ] @@ -4269,7 +4515,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -4293,12 +4539,21 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.101", + "syn 2.0.104", "termcolor", - "toml 0.8.22", + "toml 0.8.23", "walkdir", ] +[[package]] +name = "document-features" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d" +dependencies = [ + "litrs", +] + [[package]] name = "downcast" version = "0.11.0" @@ -4329,6 +4584,18 @@ dependencies = [ "shared_child", ] +[[package]] +name = "duct" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7478638a31d1f1f3d6c9f5e57c76b906a04ac4879d6fd0fb6245bc88f73fd0b" +dependencies = [ + "libc", + "os_pipe", + "shared_child", + "shared_thread", +] + [[package]] name = "dunce" version = "1.0.5" @@ -4353,14 +4620,14 @@ checksum = "7e8671d54058979a37a26f3511fbf8d198ba1aa35ffb202c42587d918d77213a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "dyn-clone" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" [[package]] name = "ecdsa" @@ -4389,9 +4656,9 @@ dependencies = [ [[package]] name = "ed25519-dalek" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871" +checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" dependencies = [ "curve25519-dalek", "ed25519", @@ -4426,7 +4693,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -4457,38 +4724,44 @@ dependencies = [ [[package]] name = "emulated-integration-tests-common" -version = "20.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "22.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "asset-test-utils", - "bp-messages 0.20.1", + "bp-messages 0.21.0", "bp-xcm-bridge-hub", - "cumulus-pallet-parachain-system 0.20.0", - "cumulus-pallet-xcmp-queue 0.20.0", - "cumulus-primitives-core 0.18.1", - "frame-support 40.1.0", - "hex-literal", - "pallet-assets 42.0.0", - "pallet-balances 41.1.0", + "cumulus-pallet-parachain-system 0.21.0", + "cumulus-pallet-xcmp-queue 0.21.0", + "cumulus-primitives-core 0.19.0", + "frame-support 41.0.0", + "frame-system 41.0.0", + "hex-literal 0.4.1", + "pallet-asset-conversion 23.0.0", + "pallet-assets 43.0.0", + "pallet-balances 42.0.0", "pallet-bridge-messages", - "pallet-message-queue 43.1.0", - "pallet-xcm 19.1.0", + "pallet-message-queue 44.0.0", + "pallet-whitelist 40.0.0", + "pallet-xcm 20.1.0", "pallet-xcm-bridge-hub", - "parachains-common 21.0.0", + "parachains-common 22.0.0", "parity-scale-codec", "paste", - "polkadot-parachain-primitives 16.1.0", - "polkadot-primitives 18.1.0", - "polkadot-runtime-parachains 19.1.0", + "polkadot-parachain-primitives 17.0.0", + "polkadot-primitives 19.0.0", + "polkadot-runtime-parachains 20.0.1", "sc-consensus-grandpa", - "sp-authority-discovery 36.0.0", - "sp-consensus-babe 0.42.1", - "sp-consensus-beefy 24.1.0", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keyring 41.0.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", + "sp-authority-discovery 37.0.0", + "sp-consensus-babe 0.43.0", + "sp-consensus-beefy 25.0.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keyring 42.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", + "staging-xcm-executor 20.0.0", "xcm-emulator", + "xcm-runtime-apis 0.8.0", + "xcm-simulator", ] [[package]] @@ -4506,7 +4779,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -4526,7 +4799,7 @@ checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -4546,27 +4819,27 @@ checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "enumflags2" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba2f4b465f5318854c6f8dd686ede6c0a9dc67d4b1ac241cf0eb51521a309147" +checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" dependencies = [ "enumflags2_derive", ] [[package]] name = "enumflags2_derive" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc4caf64a58d7a6d65ab00639b046ff54399a39f5f2554728895ace4b297cd79" +checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -4577,7 +4850,7 @@ checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -4634,14 +4907,24 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" +[[package]] +name = "erased-serde" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e004d887f51fcb9fef17317a2f3525c887d8aa3f4f50fed920816a688284a5b7" +dependencies = [ + "serde", + "typeid", +] + [[package]] name = "errno" -version = "0.3.12" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18" +checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -4694,6 +4977,22 @@ dependencies = [ "tiny-keccak", ] +[[package]] +name = "ethereum-standards" +version = "0.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "alloy-core", +] + +[[package]] +name = "ethereum-standards" +version = "0.1.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" +dependencies = [ + "alloy-core", +] + [[package]] name = "ethereum-types" version = "0.14.1" @@ -4745,9 +5044,9 @@ dependencies = [ [[package]] name = "event-listener" -version = "5.4.0" +version = "5.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" dependencies = [ "concurrent-queue", "parking", @@ -4760,7 +5059,7 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" dependencies = [ - "event-listener 5.4.0", + "event-listener 5.4.1", "pin-project-lite", ] @@ -4785,7 +5084,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -4854,11 +5153,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb42427514b063d97ce21d5199f36c0c307d981434a6be32582bc79fe5bd2303" dependencies = [ "expander", - "indexmap 2.9.0", + "indexmap 2.10.0", "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -4931,7 +5230,7 @@ dependencies = [ "log", "num-traits", "parity-scale-codec", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "scale-info", ] @@ -4974,7 +5273,7 @@ checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" [[package]] name = "fork-tree" version = "13.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "parity-scale-codec", ] @@ -5017,9 +5316,33 @@ checksum = "28dd6caf6059519a65843af8fe2a3ae298b14b80179855aeb4adc2c1934ee619" [[package]] name = "frame-benchmarking" -version = "38.0.0" +version = "28.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "frame-support 28.0.0", + "frame-support-procedural 23.0.0", + "frame-system 28.0.0", + "linregress", + "log", + "parity-scale-codec", + "paste", + "scale-info", + "serde", + "sp-api 26.0.0", + "sp-application-crypto 30.0.0", + "sp-core 28.0.0", + "sp-io 30.0.0", + "sp-runtime 31.0.1", + "sp-runtime-interface 24.0.0", + "sp-storage 19.0.0", + "static_assertions", +] + +[[package]] +name = "frame-benchmarking" +version = "38.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a01bdd47c2d541b38bd892da647d1e972c9d85b4ecd7094ad64f7600175da54d" +checksum = "3a0f983d69640f90a0ce87f107cff07f6f8f7f5ef9334ffb6f37a9c6e224ca1d" dependencies = [ "frame-support 38.2.0", "frame-support-procedural 30.0.6", @@ -5042,51 +5365,52 @@ dependencies = [ [[package]] name = "frame-benchmarking" -version = "40.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-support 40.1.0", - "frame-support-procedural 33.0.0", - "frame-system 40.1.0", + "frame-support 41.0.0", + "frame-support-procedural 34.0.0", + "frame-system 41.0.0", "linregress", "log", "parity-scale-codec", "paste", "scale-info", "serde", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-application-crypto 40.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime-interface 29.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-application-crypto 41.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime-interface 30.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "static_assertions", ] [[package]] name = "frame-benchmarking-cli" -version = "47.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "49.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "Inflector", - "array-bytes", + "array-bytes 6.2.3", "chrono", "clap", "comfy-table", "cumulus-client-parachain-inherent", - "cumulus-primitives-proof-size-hostfunction 0.12.0", - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "cumulus-primitives-proof-size-hostfunction 0.13.0", + "frame-benchmarking 41.0.0", + "frame-storage-access-test-runtime", + "frame-support 41.0.0", + "frame-system 41.0.0", "gethostname", "handlebars", "itertools 0.11.0", "linked-hash-map", "log", "parity-scale-codec", - "polkadot-parachain-primitives 16.1.0", - "polkadot-primitives 18.1.0", + "polkadot-parachain-primitives 17.0.0", + "polkadot-primitives 19.0.0", "rand 0.8.5", "rand_pcg", "sc-block-builder", @@ -5094,30 +5418,32 @@ dependencies = [ "sc-cli", "sc-client-api", "sc-client-db", - "sc-executor 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sc-executor 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sc-executor-common 0.39.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sc-executor-wasmtime 0.39.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sc-runtime-utilities", "sc-service", "sc-sysinfo", "serde", "serde_json", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-block-builder 36.0.0", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-block-builder 37.0.0", "sp-blockchain", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-database", - "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-genesis-builder 0.17.0", - "sp-inherents 36.0.0", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-state-machine 0.45.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-timestamp 36.0.0", - "sp-transaction-pool 36.0.0", - "sp-trie 39.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-version 39.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-wasm-interface 21.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-genesis-builder 0.18.0", + "sp-inherents 37.0.0", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keystore 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-state-machine 0.46.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-timestamp 37.0.0", + "sp-transaction-pool 37.0.0", + "sp-trie 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-version 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-wasm-interface 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "subxt", "subxt-signer", "thiserror 1.0.69", @@ -5126,13 +5452,13 @@ dependencies = [ [[package]] name = "frame-decode" -version = "0.5.1" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6027a409bac4fe95b4d107f965fcdbc252fc89d884a360d076b3070b6128c094" +checksum = "a7cb8796f93fa038f979a014234d632e9688a120e745f936e2635123c77537f7" dependencies = [ - "frame-metadata 17.0.0", + "frame-metadata 21.0.0", "parity-scale-codec", - "scale-decode 0.14.0", + "scale-decode 0.16.0", "scale-info", "scale-type-resolver 0.2.0", "sp-crypto-hashing 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -5140,25 +5466,25 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" -version = "14.0.1" +version = "14.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8156f209055d352994ecd49e19658c6b469d7c6de923bd79868957d0dcfb6f71" +checksum = "bc435a406e04540f00979782c45db0534440873ae526e07a290c286cfcb99b09" dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "frame-election-provider-solution-type" -version = "16.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "16.1.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -5167,12 +5493,12 @@ version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c36f5116192c63d39f1b4556fa30ac7db5a6a52575fa241b045f7dfa82ecc2be" dependencies = [ - "frame-election-provider-solution-type 14.0.1", + "frame-election-provider-solution-type 14.0.2", "frame-support 38.2.0", "frame-system 38.0.0", "parity-scale-codec", "scale-info", - "sp-arithmetic 26.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-arithmetic 26.1.0", "sp-core 34.0.0", "sp-npos-elections 34.0.0", "sp-runtime 39.0.5", @@ -5180,25 +5506,26 @@ dependencies = [ [[package]] name = "frame-election-provider-support" -version = "40.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-election-provider-solution-type 16.1.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-election-provider-solution-type 16.1.1", + "frame-support 41.0.0", + "frame-system 41.0.0", "parity-scale-codec", "scale-info", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-npos-elections 36.1.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-arithmetic 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-npos-elections 37.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "frame-executive" -version = "38.0.0" +version = "38.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c365bf3879de25bbee28e9584096955a02fbe8d7e7624e10675800317f1cee5b" +checksum = "e305d8c5cf9f884795d3c57c899be86e3a476e5b5f914fa0ffefb5afd9cba5c5" dependencies = [ "aquamarine", "frame-support 38.2.0", @@ -5215,20 +5542,20 @@ dependencies = [ [[package]] name = "frame-executive" -version = "40.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "aquamarine", - "frame-support 40.1.0", - "frame-system 40.1.0", - "frame-try-runtime 0.46.0", + "frame-support 41.0.0", + "frame-system 41.0.0", + "frame-try-runtime 0.47.0", "log", "parity-scale-codec", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-tracing 17.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-tracing 17.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -5245,9 +5572,9 @@ dependencies = [ [[package]] name = "frame-metadata" -version = "17.0.0" +version = "20.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "701bac17e9b55e0f95067c428ebcb46496587f08e8cf4ccc0fe5903bea10dbb8" +checksum = "26de808fa6461f2485dc51811aefed108850064994fb4a62b3ac21ffa62ac8df" dependencies = [ "cfg-if", "parity-scale-codec", @@ -5257,9 +5584,20 @@ dependencies = [ [[package]] name = "frame-metadata" -version = "20.0.0" +version = "21.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26de808fa6461f2485dc51811aefed108850064994fb4a62b3ac21ffa62ac8df" +checksum = "20dfd1d7eae1d94e32e869e2fb272d81f52dd8db57820a373adb83ea24d7d862" +dependencies = [ + "cfg-if", + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "frame-metadata" +version = "23.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8c26fcb0454397c522c05fdad5380c4e622f8a875638af33bff5a320d1fc965" dependencies = [ "cfg-if", "parity-scale-codec", @@ -5273,7 +5611,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56ac71dbd97039c49fdd69f416a4dd5d8da3652fdcafc3738b45772ad79eb4ec" dependencies = [ - "array-bytes", + "array-bytes 6.2.3", "docify", "frame-support 38.2.0", "frame-system 38.0.0", @@ -5285,18 +5623,73 @@ dependencies = [ [[package]] name = "frame-metadata-hash-extension" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.9.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "array-bytes", + "array-bytes 6.2.3", "const-hex", "docify", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-support 41.0.0", + "frame-system 41.0.0", + "log", + "parity-scale-codec", + "scale-info", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", +] + +[[package]] +name = "frame-storage-access-test-runtime" +version = "0.2.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" +dependencies = [ + "cumulus-pallet-parachain-system 0.21.0", + "parity-scale-codec", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-state-machine 0.46.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-trie 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "substrate-wasm-builder 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", +] + +[[package]] +name = "frame-support" +version = "28.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "aquamarine", + "array-bytes 6.2.3", + "binary-merkle-tree 13.0.0", + "bitflags 1.3.2", + "docify", + "environmental", + "frame-metadata 23.0.0", + "frame-support-procedural 23.0.0", + "impl-trait-for-tuples", + "k256", "log", + "macro_magic", "parity-scale-codec", + "paste", "scale-info", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "serde", + "serde_json", + "sp-api 26.0.0", + "sp-arithmetic 23.0.0", + "sp-core 28.0.0", + "sp-crypto-hashing-proc-macro 0.1.0 (git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4)", + "sp-debug-derive 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4)", + "sp-genesis-builder 0.8.0", + "sp-inherents 26.0.0", + "sp-io 30.0.0", + "sp-metadata-ir 0.6.0", + "sp-runtime 31.0.1", + "sp-staking 26.0.0", + "sp-state-machine 0.35.0", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4)", + "sp-tracing 16.0.0", + "sp-trie 29.0.0", + "sp-weights 27.0.0", + "tt-call", ] [[package]] @@ -5306,7 +5699,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7dd8b9f161a8289e3b9fe6c1068519358dbff2270d38097a923d3d1b4459dca" dependencies = [ "aquamarine", - "array-bytes", + "array-bytes 6.2.3", "bitflags 1.3.2", "docify", "environmental", @@ -5323,7 +5716,7 @@ dependencies = [ "serde_json", "smallvec", "sp-api 34.0.0", - "sp-arithmetic 26.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-arithmetic 26.1.0", "sp-core 34.0.0", "sp-crypto-hashing-proc-macro 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-debug-derive 14.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -5336,24 +5729,24 @@ dependencies = [ "sp-state-machine 0.43.0", "sp-std 14.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-tracing 17.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-weights 31.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-weights 31.1.0", "static_assertions", "tt-call", ] [[package]] name = "frame-support" -version = "40.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "aquamarine", - "array-bytes", - "binary-merkle-tree 16.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "array-bytes 6.2.3", + "binary-merkle-tree 16.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "bitflags 1.3.2", "docify", "environmental", - "frame-metadata 20.0.0", - "frame-support-procedural 33.0.0", + "frame-metadata 23.0.0", + "frame-support-procedural 34.0.0", "impl-trait-for-tuples", "k256", "log", @@ -5363,25 +5756,45 @@ dependencies = [ "scale-info", "serde", "serde_json", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-crypto-hashing-proc-macro 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-debug-derive 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-genesis-builder 0.17.0", - "sp-inherents 36.0.0", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-metadata-ir 0.10.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-staking 38.0.0", - "sp-state-machine 0.45.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-tracing 17.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-trie 39.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-weights 31.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-arithmetic 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-crypto-hashing-proc-macro 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-debug-derive 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-genesis-builder 0.18.0", + "sp-inherents 37.0.0", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-metadata-ir 0.11.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-staking 39.0.0", + "sp-state-machine 0.46.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-tracing 17.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-trie 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-weights 32.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "tt-call", ] +[[package]] +name = "frame-support-procedural" +version = "23.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "Inflector", + "cfg-expr", + "derive-syn-parse", + "docify", + "expander", + "frame-support-procedural-tools 10.0.0", + "itertools 0.11.0", + "macro_magic", + "proc-macro-warning", + "proc-macro2", + "quote", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4)", + "syn 2.0.104", +] + [[package]] name = "frame-support-procedural" version = "30.0.6" @@ -5400,27 +5813,39 @@ dependencies = [ "proc-macro2", "quote", "sp-crypto-hashing 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "frame-support-procedural" -version = "33.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "34.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "Inflector", "cfg-expr", "derive-syn-parse", "docify", "expander", - "frame-support-procedural-tools 13.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "frame-support-procedural-tools 13.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "itertools 0.11.0", "macro_magic", "proc-macro-warning", "proc-macro2", "quote", - "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "syn 2.0.101", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "syn 2.0.104", +] + +[[package]] +name = "frame-support-procedural-tools" +version = "10.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "frame-support-procedural-tools-derive 11.0.0", + "proc-macro-crate 3.3.0", + "proc-macro2", + "quote", + "syn 2.0.104", ] [[package]] @@ -5433,19 +5858,29 @@ dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "frame-support-procedural-tools" version = "13.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-support-procedural-tools-derive 12.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "frame-support-procedural-tools-derive 12.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", +] + +[[package]] +name = "frame-support-procedural-tools-derive" +version = "11.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", ] [[package]] @@ -5456,17 +5891,36 @@ checksum = "ed971c6435503a099bdac99fe4c5bea08981709e5b5a0a8535a1856f48561191" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "frame-support-procedural-tools-derive" version = "12.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", +] + +[[package]] +name = "frame-system" +version = "28.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "cfg-if", + "docify", + "frame-support 28.0.0", + "log", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 28.0.0", + "sp-io 30.0.0", + "sp-runtime 31.0.1", + "sp-version 29.0.0", + "sp-weights 27.0.0", ] [[package]] @@ -5487,26 +5941,26 @@ dependencies = [ "sp-runtime 39.0.5", "sp-std 14.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-version 37.0.0", - "sp-weights 31.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-weights 31.1.0", ] [[package]] name = "frame-system" -version = "40.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "cfg-if", "docify", - "frame-support 40.1.0", + "frame-support 41.0.0", "log", "parity-scale-codec", "scale-info", "serde", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-version 39.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-weights 31.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-version 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-weights 32.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -5515,7 +5969,7 @@ version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9693b2a736beb076e673520e1e8dee4fc128b8d35b020ef3e8a4b1b5ad63d9f2" dependencies = [ - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "parity-scale-codec", @@ -5526,16 +5980,16 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" -version = "40.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "parity-scale-codec", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -5551,12 +6005,12 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" -version = "36.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "docify", "parity-scale-codec", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -5573,13 +6027,13 @@ dependencies = [ [[package]] name = "frame-try-runtime" -version = "0.46.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.47.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-support 40.1.0", + "frame-support 41.0.0", "parity-scale-codec", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -5693,9 +6147,9 @@ dependencies = [ [[package]] name = "futures-lite" -version = "2.6.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" +checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" dependencies = [ "fastrand 2.3.0", "futures-core", @@ -5712,7 +6166,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -5771,6 +6225,20 @@ dependencies = [ "byteorder", ] +[[package]] +name = "generator" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d18470a76cb7f8ff746cf1f7470914f900252ec36bbc40b569d74b1258446827" +dependencies = [ + "cc", + "cfg-if", + "libc", + "log", + "rustversion", + "windows 0.61.3", +] + [[package]] name = "generic-array" version = "0.12.4" @@ -5810,7 +6278,7 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.11.1+wasi-snapshot-preview1", "wasm-bindgen", ] @@ -5881,9 +6349,9 @@ dependencies = [ [[package]] name = "glob" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "governor" @@ -5897,7 +6365,7 @@ dependencies = [ "futures-timer", "no-std-compat", "nonzero_ext", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "portable-atomic", "quanta", "rand 0.8.5", @@ -5918,9 +6386,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" dependencies = [ "bytes", "fnv", @@ -5928,7 +6396,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.9.0", + "indexmap 2.10.0", "slab", "tokio", "tokio-util", @@ -5937,9 +6405,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.10" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" +checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" dependencies = [ "atomic-waker", "bytes", @@ -5947,7 +6415,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.3.1", - "indexmap 2.9.0", + "indexmap 2.10.0", "slab", "tokio", "tokio-util", @@ -6014,9 +6482,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.3" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ "allocator-api2", "equivalent", @@ -6053,15 +6521,9 @@ checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] name = "hermit-abi" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" - -[[package]] -name = "hermit-abi" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f154ce46856750ed433c8649605bf7ed2de3bc35fd9d2a9f30cddd873c80cb08" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" [[package]] name = "hex" @@ -6093,6 +6555,12 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" +[[package]] +name = "hex-literal" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcaaec4551594c969335c98c903c1397853d4198408ea609190f420500f6be71" + [[package]] name = "hickory-proto" version = "0.24.4" @@ -6110,7 +6578,7 @@ dependencies = [ "ipnet", "once_cell", "rand 0.8.5", - "socket2 0.5.9", + "socket2 0.5.10", "thiserror 1.0.69", "tinyvec", "tokio", @@ -6119,18 +6587,43 @@ dependencies = [ ] [[package]] -name = "hickory-resolver" -version = "0.24.4" +name = "hickory-proto" +version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbb117a1ca520e111743ab2f6688eddee69db4e0ea242545a604dce8a66fd22e" +checksum = "f8a6fe56c0038198998a6f217ca4e7ef3a5e51f46163bd6dd60b5c71ca6c6502" dependencies = [ + "async-trait", "cfg-if", + "data-encoding", + "enum-as-inner", + "futures-channel", + "futures-io", "futures-util", - "hickory-proto", - "ipconfig", - "lru-cache", + "idna", + "ipnet", "once_cell", - "parking_lot 0.12.3", + "rand 0.9.2", + "ring 0.17.14", + "thiserror 2.0.14", + "tinyvec", + "tokio", + "tracing", + "url", +] + +[[package]] +name = "hickory-resolver" +version = "0.24.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbb117a1ca520e111743ab2f6688eddee69db4e0ea242545a604dce8a66fd22e" +dependencies = [ + "cfg-if", + "futures-util", + "hickory-proto 0.24.4", + "ipconfig", + "lru-cache", + "once_cell", + "parking_lot 0.12.4", "rand 0.8.5", "resolv-conf", "smallvec", @@ -6139,6 +6632,27 @@ dependencies = [ "tracing", ] +[[package]] +name = "hickory-resolver" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc62a9a99b0bfb44d2ab95a7208ac952d31060efc16241c87eaf36406fecf87a" +dependencies = [ + "cfg-if", + "futures-util", + "hickory-proto 0.25.2", + "ipconfig", + "moka", + "once_cell", + "parking_lot 0.12.4", + "rand 0.9.2", + "resolv-conf", + "smallvec", + "thiserror 2.0.14", + "tokio", + "tracing", +] + [[package]] name = "hkdf" version = "0.12.4" @@ -6252,6 +6766,16 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b112acc8b3adf4b107a8ec20977da0273a8c386765a3ec0229bd500a1443f9f" +[[package]] +name = "humantime-serde" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57a3db5ea5923d99402c94e9feb261dc5ee9b4efa158b0315f788cf549cc200c" +dependencies = [ + "humantime", + "serde", +] + [[package]] name = "hyper" version = "0.14.32" @@ -6262,14 +6786,14 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "h2 0.3.26", + "h2 0.3.27", "http 0.2.12", "http-body 0.4.6", "httparse", "httpdate", "itoa", "pin-project-lite", - "socket2 0.5.9", + "socket2 0.5.10", "tokio", "tower-service", "tracing", @@ -6285,7 +6809,7 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.10", + "h2 0.4.12", "http 1.3.1", "http-body 1.0.1", "httparse", @@ -6314,11 +6838,10 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.5" +version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ - "futures-util", "http 1.3.1", "hyper 1.6.0", "hyper-util", @@ -6333,19 +6856,20 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.12" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9f1e950e0d9d1d3c47184416723cf29c0d1f93bd8cccf37e4beb6b44f31710" +checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e" dependencies = [ "bytes", "futures-channel", + "futures-core", "futures-util", "http 1.3.1", "http-body 1.0.1", "hyper 1.6.0", "libc", "pin-project-lite", - "socket2 0.5.9", + "socket2 0.6.0", "tokio", "tower-service", "tracing", @@ -6519,7 +7043,7 @@ version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cdf9d64cfcf380606e64f9a0bcf493616b65331199f984151a6fa11a7b3cde38" dependencies = [ - "async-io 2.4.0", + "async-io 2.5.0", "core-foundation 0.9.4", "fnv", "futures", @@ -6533,7 +7057,7 @@ dependencies = [ "rtnetlink", "system-configuration", "tokio", - "windows", + "windows 0.53.0", ] [[package]] @@ -6639,7 +7163,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -6674,12 +7198,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.9.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" dependencies = [ "equivalent", - "hashbrown 0.15.3", + "hashbrown 0.15.5", "serde", ] @@ -6696,18 +7220,44 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "15d7438a13d38fa8f4eebea8d1e7c2931058eafd0336c79f4141d4ed0162a412" dependencies = [ "derive_more 1.0.0", - "ink_env", - "ink_macro", - "ink_metadata", - "ink_prelude", - "ink_primitives", - "ink_storage", + "ink_env 5.1.1", + "ink_macro 5.1.1", + "ink_metadata 5.1.1", + "ink_prelude 5.1.1", + "ink_primitives 5.1.1", + "ink_storage 5.1.1", "pallet-contracts-uapi 9.0.0", "parity-scale-codec", "scale-info", "staging-xcm 11.0.0", ] +[[package]] +name = "ink" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "const_format", + "deranged", + "derive_more 2.0.1", + "ink_env 6.0.0-alpha.1", + "ink_macro 6.0.0-alpha.1", + "ink_metadata 6.0.0-alpha.1 (git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1)", + "ink_prelude 6.0.0-alpha.1 (git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1)", + "ink_primitives 6.0.0-alpha.1 (git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1)", + "ink_storage 6.0.0-alpha.1", + "keccak-const", + "linkme", + "pallet-revive-uapi 0.1.0", + "parity-scale-codec", + "polkavm-derive 0.26.0", + "scale-info", + "sp-io 30.0.0", + "sp-runtime-interface 24.0.0", + "staging-xcm 7.0.1", + "tokio", +] + [[package]] name = "ink_allocator" version = "5.1.1" @@ -6717,6 +7267,14 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "ink_allocator" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "cfg-if", +] + [[package]] name = "ink_codegen" version = "5.1.1" @@ -6728,15 +7286,37 @@ dependencies = [ "either", "heck 0.5.0", "impl-serde 0.4.0", - "ink_ir", - "ink_primitives", + "ink_ir 5.1.1", + "ink_primitives 5.1.1", "itertools 0.12.1", "parity-scale-codec", "proc-macro2", "quote", "serde", "serde_json", - "syn 2.0.101", + "syn 2.0.104", +] + +[[package]] +name = "ink_codegen" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "blake2 0.10.6", + "derive_more 2.0.1", + "either", + "heck 0.5.0", + "impl-serde 0.5.0", + "ink_ir 6.0.0-alpha.1", + "ink_primitives 6.0.0-alpha.1 (git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1)", + "itertools 0.14.0", + "parity-scale-codec", + "polkavm-derive 0.26.0", + "proc-macro2", + "quote", + "serde", + "serde_json", + "syn 2.0.104", ] [[package]] @@ -6747,7 +7327,7 @@ checksum = "d273f2aa983d04a6476d3c5ac76ddbef07555664b88f923996e7465e261dda48" dependencies = [ "blake2 0.10.6", "derive_more 1.0.0", - "ink_primitives", + "ink_primitives 5.1.1", "pallet-contracts-uapi 9.0.0", "parity-scale-codec", "secp256k1 0.28.2", @@ -6755,6 +7335,23 @@ dependencies = [ "sha3", ] +[[package]] +name = "ink_engine" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "blake2 0.10.6", + "derive_more 2.0.1", + "hex-literal 1.0.0", + "ink_primitives 6.0.0-alpha.1 (git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1)", + "pallet-revive 0.1.0", + "pallet-revive-uapi 0.1.0", + "parity-scale-codec", + "secp256k1 0.30.0", + "sha2 0.10.9", + "sha3", +] + [[package]] name = "ink_env" version = "5.1.1" @@ -6765,11 +7362,11 @@ dependencies = [ "cfg-if", "const_env", "derive_more 1.0.0", - "ink_allocator", - "ink_engine", - "ink_prelude", - "ink_primitives", - "ink_storage_traits", + "ink_allocator 5.1.1", + "ink_engine 5.1.1", + "ink_prelude 5.1.1", + "ink_primitives 5.1.1", + "ink_storage_traits 5.1.1", "num-traits", "pallet-contracts-uapi 9.0.0", "parity-scale-codec", @@ -6778,7 +7375,7 @@ dependencies = [ "scale-decode 0.11.1", "scale-encode 0.6.0", "scale-info", - "schnorrkel 0.11.4", + "schnorrkel 0.11.5", "secp256k1 0.28.2", "sha2 0.10.9", "sha3", @@ -6786,6 +7383,39 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "ink_env" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "blake2 0.10.6", + "cfg-if", + "const_env", + "derive_more 2.0.1", + "hex-literal 1.0.0", + "ink_allocator 6.0.0-alpha.1", + "ink_engine 6.0.0-alpha.1", + "ink_prelude 6.0.0-alpha.1 (git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1)", + "ink_primitives 6.0.0-alpha.1 (git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1)", + "ink_storage_traits 6.0.0-alpha.1", + "num-traits", + "pallet-revive 0.1.0", + "pallet-revive-uapi 0.1.0", + "parity-scale-codec", + "polkavm-derive 0.26.0", + "scale-decode 0.16.0", + "scale-encode 0.10.0", + "scale-info", + "schnorrkel 0.11.5", + "secp256k1 0.30.0", + "sha2 0.10.9", + "sha3", + "sp-io 30.0.0", + "sp-runtime-interface 24.0.0", + "staging-xcm 7.0.1", + "static_assertions", +] + [[package]] name = "ink_ir" version = "5.1.1" @@ -6795,11 +7425,27 @@ dependencies = [ "blake2 0.10.6", "either", "impl-serde 0.4.0", - "ink_prelude", + "ink_prelude 5.1.1", "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", +] + +[[package]] +name = "ink_ir" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "blake2 0.10.6", + "either", + "impl-serde 0.5.0", + "ink_prelude 6.0.0-alpha.1 (git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1)", + "itertools 0.14.0", + "proc-macro2", + "quote", + "sha3", + "syn 2.0.104", ] [[package]] @@ -6808,13 +7454,28 @@ version = "5.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ce9465553d3066a8e28bd94a94880289084c4ff12f1852312553e902fa1ffdd" dependencies = [ - "ink_codegen", - "ink_ir", - "ink_primitives", + "ink_codegen 5.1.1", + "ink_ir 5.1.1", + "ink_primitives 5.1.1", + "parity-scale-codec", + "proc-macro2", + "quote", + "syn 2.0.104", + "synstructure 0.13.2", +] + +[[package]] +name = "ink_macro" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "ink_codegen 6.0.0-alpha.1", + "ink_ir 6.0.0-alpha.1", + "ink_primitives 6.0.0-alpha.1 (git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1)", "parity-scale-codec", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "synstructure 0.13.2", ] @@ -6826,12 +7487,42 @@ checksum = "27135c651274087ba0578d2c07866c31d8dd481ae8de5bb7295fe3931491aa80" dependencies = [ "derive_more 1.0.0", "impl-serde 0.4.0", - "ink_prelude", - "ink_primitives", + "ink_prelude 5.1.1", + "ink_primitives 5.1.1", "linkme", "parity-scale-codec", "scale-info", - "schemars", + "schemars 0.8.22", + "serde", +] + +[[package]] +name = "ink_metadata" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "derive_more 2.0.1", + "impl-serde 0.5.0", + "ink_prelude 6.0.0-alpha.1 (git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1)", + "ink_primitives 6.0.0-alpha.1 (git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1)", + "parity-scale-codec", + "scale-info", + "schemars 0.8.22", + "serde", +] + +[[package]] +name = "ink_metadata" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?branch=master#2182b3b6e9336c5195c2d234f710cec230b0eabc" +dependencies = [ + "derive_more 2.0.1", + "impl-serde 0.5.0", + "ink_prelude 6.0.0-alpha.1 (git+https://github.com/use-ink/ink?branch=master)", + "ink_primitives 6.0.0-alpha.1 (git+https://github.com/use-ink/ink?branch=master)", + "parity-scale-codec", + "scale-info", + "schemars 0.8.22", "serde", ] @@ -6844,6 +7535,22 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "ink_prelude" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "ink_prelude" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?branch=master#2182b3b6e9336c5195c2d234f710cec230b0eabc" +dependencies = [ + "cfg-if", +] + [[package]] name = "ink_primitives" version = "5.1.1" @@ -6851,7 +7558,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a530c1b352a53176ea718f3a65f15003e54e0474ec12353ea0e0e5bb60b25741" dependencies = [ "derive_more 1.0.0", - "ink_prelude", + "ink_prelude 5.1.1", "parity-scale-codec", "scale-decode 0.11.1", "scale-encode 0.6.0", @@ -6859,6 +7566,62 @@ dependencies = [ "xxhash-rust", ] +[[package]] +name = "ink_primitives" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "alloy-sol-types", + "cfg-if", + "derive_more 2.0.1", + "impl-trait-for-tuples", + "ink_prelude 6.0.0-alpha.1 (git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1)", + "itertools 0.14.0", + "num-traits", + "pallet-revive 0.1.0", + "pallet-revive-uapi 0.1.0", + "parity-scale-codec", + "paste", + "primitive-types 0.13.1", + "scale-decode 0.16.0", + "scale-encode 0.10.0", + "scale-info", + "serde", + "sp-core 28.0.0", + "sp-io 30.0.0", + "sp-runtime-interface 24.0.0", + "sp-weights 27.0.0", + "xxhash-rust", +] + +[[package]] +name = "ink_primitives" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?branch=master#2182b3b6e9336c5195c2d234f710cec230b0eabc" +dependencies = [ + "alloy-sol-types", + "cfg-if", + "derive_more 2.0.1", + "impl-trait-for-tuples", + "ink_prelude 6.0.0-alpha.1 (git+https://github.com/use-ink/ink?branch=master)", + "itertools 0.14.0", + "num-traits", + "pallet-revive 0.1.0", + "pallet-revive-uapi 0.1.0", + "parity-scale-codec", + "paste", + "primitive-types 0.13.1", + "scale-decode 0.16.0", + "scale-encode 0.10.0", + "scale-info", + "serde", + "sp-core 28.0.0", + "sp-io 30.0.0", + "sp-runtime-interface 24.0.0", + "sp-weights 27.0.0", + "xxhash-rust", +] + [[package]] name = "ink_storage" version = "5.1.1" @@ -6868,27 +7631,59 @@ dependencies = [ "array-init", "cfg-if", "derive_more 1.0.0", - "ink_env", - "ink_metadata", - "ink_prelude", - "ink_primitives", - "ink_storage_traits", + "ink_env 5.1.1", + "ink_metadata 5.1.1", + "ink_prelude 5.1.1", + "ink_primitives 5.1.1", + "ink_storage_traits 5.1.1", "pallet-contracts-uapi 9.0.0", "parity-scale-codec", "scale-info", ] +[[package]] +name = "ink_storage" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "array-init", + "cfg-if", + "derive_more 2.0.1", + "ink_env 6.0.0-alpha.1", + "ink_metadata 6.0.0-alpha.1 (git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1)", + "ink_prelude 6.0.0-alpha.1 (git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1)", + "ink_primitives 6.0.0-alpha.1 (git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1)", + "ink_storage_traits 6.0.0-alpha.1", + "pallet-revive-uapi 0.1.0", + "parity-scale-codec", + "scale-info", +] + [[package]] name = "ink_storage_traits" version = "5.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fde9b3f4a1e355682e5d13fd5639e5da4d0a2029537292e05a4255ea1169663e" dependencies = [ - "ink_metadata", - "ink_prelude", - "ink_primitives", + "ink_metadata 5.1.1", + "ink_prelude 5.1.1", + "ink_primitives 5.1.1", + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "ink_storage_traits" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "ink_metadata 6.0.0-alpha.1 (git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1)", + "ink_prelude 6.0.0-alpha.1 (git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1)", + "ink_primitives 6.0.0-alpha.1 (git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1)", "parity-scale-codec", "scale-info", + "sp-io 30.0.0", + "sp-runtime-interface 24.0.0", ] [[package]] @@ -6925,31 +7720,31 @@ dependencies = [ "asset-hub-paseo-runtime", "asset-hub-westend-runtime", "asset-test-utils", - "cumulus-primitives-core 0.18.1", + "cumulus-primitives-core 0.19.0", "emulated-integration-tests-common", - "frame-support 40.1.0", - "pallet-assets 42.0.0", - "pallet-balances 41.1.0", - "pallet-message-queue 43.1.0", - "pallet-xcm 19.1.0", + "frame-support 41.0.0", + "pallet-assets 43.0.0", + "pallet-balances 42.0.0", + "pallet-message-queue 44.0.0", + "pallet-xcm 20.1.0", "parity-scale-codec", "paseo-runtime", "paseo-runtime-constants", - "polkadot-primitives 18.1.0", - "polkadot-runtime-parachains 19.1.0", + "polkadot-primitives 19.0.0", + "polkadot-runtime-parachains 20.0.1", "pop-runtime-common", "pop-runtime-devnet", "pop-runtime-mainnet", "pop-runtime-testnet", - "sp-authority-discovery 36.0.0", - "sp-consensus-aura 0.42.0", - "sp-consensus-babe 0.42.1", - "sp-consensus-beefy 24.1.0", - "sp-consensus-grandpa 23.1.0", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", - "staging-xcm-executor 19.1.0", + "sp-authority-discovery 37.0.0", + "sp-consensus-aura 0.43.0", + "sp-consensus-babe 0.43.0", + "sp-consensus-beefy 25.0.0", + "sp-consensus-grandpa 24.0.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", + "staging-xcm-executor 20.0.0", "tracing-subscriber", "westend-runtime", "westend-runtime-constants", @@ -6966,6 +7761,17 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "io-uring" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4" +dependencies = [ + "bitflags 2.9.1", + "cfg-if", + "libc", +] + [[package]] name = "ip_network" version = "0.4.1" @@ -6978,7 +7784,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" dependencies = [ - "socket2 0.5.9", + "socket2 0.5.10", "widestring", "windows-sys 0.48.0", "winreg", @@ -6996,7 +7802,7 @@ version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" dependencies = [ - "hermit-abi 0.5.1", + "hermit-abi 0.5.2", "libc", "windows-sys 0.59.0", ] @@ -7019,7 +7825,7 @@ checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "ismp" version = "0.2.2" -source = "git+https://github.com/r0gue-io/ismp?branch=polkadot-stable2503-4#97e0ba9e2cb7f7c27a43c66ee9decbbfa5f617f4" +source = "git+https://github.com/r0gue-io/ismp?branch=polkadot-stable2506#a64c9c79824f1f6b0e0b5288bcaba18241fc19a0" dependencies = [ "anyhow", "derive_more 1.0.0", @@ -7030,19 +7836,19 @@ dependencies = [ "scale-info", "serde", "serde-hex-utils", - "thiserror 2.0.12", + "thiserror 2.0.14", ] [[package]] name = "ismp-parachain" version = "1.15.3" -source = "git+https://github.com/r0gue-io/ismp?branch=polkadot-stable2503-4#97e0ba9e2cb7f7c27a43c66ee9decbbfa5f617f4" +source = "git+https://github.com/r0gue-io/ismp?branch=polkadot-stable2506#a64c9c79824f1f6b0e0b5288bcaba18241fc19a0" dependencies = [ - "cumulus-pallet-parachain-system 0.20.0", - "cumulus-primitives-core 0.18.1", - "frame-support 40.1.0", - "frame-system 40.1.0", - "hex-literal", + "cumulus-pallet-parachain-system 0.21.0", + "cumulus-primitives-core 0.19.0", + "frame-support 41.0.0", + "frame-system 41.0.0", + "hex-literal 0.4.1", "ismp", "log", "pallet-ismp", @@ -7050,22 +7856,22 @@ dependencies = [ "primitive-types 0.13.1", "scale-info", "serde", - "sp-consensus-aura 0.42.0", - "sp-inherents 36.0.0", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-trie 39.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-consensus-aura 0.43.0", + "sp-inherents 37.0.0", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-trie 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "substrate-state-machine", ] [[package]] name = "ismp-parachain-inherent" version = "1.15.3" -source = "git+https://github.com/r0gue-io/ismp?branch=polkadot-stable2503-4#97e0ba9e2cb7f7c27a43c66ee9decbbfa5f617f4" +source = "git+https://github.com/r0gue-io/ismp?branch=polkadot-stable2506#a64c9c79824f1f6b0e0b5288bcaba18241fc19a0" dependencies = [ "anyhow", "async-trait", - "cumulus-primitives-core 0.18.1", + "cumulus-primitives-core 0.19.0", "cumulus-relay-chain-interface", "ismp", "ismp-parachain", @@ -7073,19 +7879,19 @@ dependencies = [ "log", "pallet-ismp-runtime-api", "parity-scale-codec", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-blockchain", - "sp-inherents 36.0.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-inherents 37.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "ismp-parachain-runtime-api" version = "1.15.1" -source = "git+https://github.com/r0gue-io/ismp?branch=polkadot-stable2503-4#97e0ba9e2cb7f7c27a43c66ee9decbbfa5f617f4" +source = "git+https://github.com/r0gue-io/ismp?branch=polkadot-stable2506#a64c9c79824f1f6b0e0b5288bcaba18241fc19a0" dependencies = [ - "cumulus-pallet-parachain-system 0.20.0", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "cumulus-pallet-parachain-system 0.21.0", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -7139,11 +7945,39 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" +[[package]] +name = "jam-codec" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d72f2fb8cfd27f6c52ea7d0528df594f7f2ed006feac153e9393ec567aafea98" +dependencies = [ + "arrayvec 0.7.6", + "bitvec", + "byte-slice-cast", + "const_format", + "impl-trait-for-tuples", + "jam-codec-derive", + "rustversion", + "serde", +] + +[[package]] +name = "jam-codec-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09985146f40378e13af626964ac9c206d9d9b67c40c70805898d9954f709bcf5" +dependencies = [ + "proc-macro-crate 3.3.0", + "proc-macro2", + "quote", + "syn 2.0.104", +] + [[package]] name = "jiff" -version = "0.2.13" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f02000660d30638906021176af16b17498bd0d12813dbfe7b276d8bc7f3c0806" +checksum = "be1f93b8b1eb69c77f24bbb0afdf66f54b632ee39af40ca21c4365a1d7347e49" dependencies = [ "jiff-static", "log", @@ -7154,13 +7988,13 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.13" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c30758ddd7188629c6713fc45d1188af4f44c90582311d0c8d8c9907f60c48" +checksum = "03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -7258,7 +8092,7 @@ dependencies = [ "http-body 1.0.1", "http-body-util", "jsonrpsee-types", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "pin-project", "rand 0.8.5", "rustc-hash 2.1.1", @@ -7280,7 +8114,7 @@ dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -7368,6 +8202,12 @@ dependencies = [ "sha3-asm", ] +[[package]] +name = "keccak-const" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57d8d8ce877200136358e0bbff3a77965875db3af755a11e1fa6b1b3e2df13ea" + [[package]] name = "keccak-hash" version = "0.11.0" @@ -7384,6 +8224,21 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c33070833c9ee02266356de0c43f723152bd38bd96ddf52c82b3af10c9138b28" +[[package]] +name = "konst" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330f0e13e6483b8c34885f7e6c9f19b1a7bd449c673fbb948a51c99d66ef74f4" +dependencies = [ + "konst_macro_rules", +] + +[[package]] +name = "konst_macro_rules" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4933f3f57a8e9d9da04db23fb153356ecaf00cbd14aee46279c33dc80925c37" + [[package]] name = "kusama-runtime-constants" version = "1.0.0" @@ -7399,7 +8254,7 @@ dependencies = [ "sp-core 34.0.0", "sp-runtime 39.0.5", "sp-trie 37.0.0", - "sp-weights 31.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-weights 31.1.0", "staging-xcm-builder 17.0.5", ] @@ -7419,7 +8274,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf7a85fe66f9ff9cd74e169fdd2c94c6e1e74c412c99a73b4df3200b5d3760b2" dependencies = [ "kvdb", - "parking_lot 0.12.3", + "parking_lot 0.12.4", ] [[package]] @@ -7430,7 +8285,7 @@ checksum = "b644c70b92285f66bfc2032922a79000ea30af7bc2ab31902992a5dcb9b434f6" dependencies = [ "kvdb", "num_cpus", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "regex", "rocksdb", "smallvec", @@ -7470,18 +8325,18 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.172" +version = "0.2.175" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" +checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" [[package]] name = "libloading" -version = "0.8.7" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a793df0d7afeac54f95b471d3af7f0d4fb975699f972341a4b76988d49cdf0c" +checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" dependencies = [ "cfg-if", - "windows-targets 0.53.0", + "windows-targets 0.53.3", ] [[package]] @@ -7564,7 +8419,7 @@ dependencies = [ "multihash 0.19.3", "multistream-select", "once_cell", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "pin-project", "quick-protobuf", "rand 0.8.5", @@ -7585,10 +8440,10 @@ checksum = "97f37f30d5c7275db282ecd86e54f29dd2176bd3ac656f06abf43bedb21eb8bd" dependencies = [ "async-trait", "futures", - "hickory-resolver", + "hickory-resolver 0.24.4", "libp2p-core", "libp2p-identity", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "smallvec", "tracing", ] @@ -7618,9 +8473,9 @@ dependencies = [ [[package]] name = "libp2p-identity" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbb68ea10844211a59ce46230909fd0ea040e8a192454d4cc2ee0d53e12280eb" +checksum = "3104e13b51e4711ff5738caa1fb54467c8604c2e94d607e27745bcf709068774" dependencies = [ "bs58", "ed25519-dalek", @@ -7629,7 +8484,7 @@ dependencies = [ "quick-protobuf", "rand 0.8.5", "sha2 0.10.9", - "thiserror 2.0.12", + "thiserror 2.0.14", "tracing", "zeroize", ] @@ -7671,14 +8526,14 @@ checksum = "14b8546b6644032565eb29046b42744aee1e9f261ed99671b2c93fb140dba417" dependencies = [ "data-encoding", "futures", - "hickory-proto", + "hickory-proto 0.24.4", "if-watch", "libp2p-core", "libp2p-identity", "libp2p-swarm", "rand 0.8.5", "smallvec", - "socket2 0.5.9", + "socket2 0.5.10", "tokio", "tracing", "void", @@ -7759,12 +8614,12 @@ dependencies = [ "libp2p-core", "libp2p-identity", "libp2p-tls", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "quinn", "rand 0.8.5", "ring 0.17.14", "rustls", - "socket2 0.5.9", + "socket2 0.5.10", "thiserror 1.0.69", "tokio", "tracing", @@ -7823,7 +8678,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -7838,7 +8693,7 @@ dependencies = [ "libc", "libp2p-core", "libp2p-identity", - "socket2 0.5.9", + "socket2 0.5.10", "tokio", "tracing", ] @@ -7889,7 +8744,7 @@ dependencies = [ "futures-rustls", "libp2p-core", "libp2p-identity", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "pin-project-lite", "rw-stream-sink", "soketto 0.8.1", @@ -7911,18 +8766,18 @@ dependencies = [ "thiserror 1.0.69", "tracing", "yamux 0.12.1", - "yamux 0.13.5", + "yamux 0.13.6", ] [[package]] name = "libredox" -version = "0.1.3" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" dependencies = [ "bitflags 2.9.1", "libc", - "redox_syscall 0.5.12", + "redox_syscall 0.5.17", ] [[package]] @@ -8040,7 +8895,7 @@ checksum = "04d55ca5d5a14363da83bf3c33874b8feaa34653e760d5216d7ef9829c88001a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -8096,9 +8951,9 @@ checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" [[package]] name = "litep2p" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71056c23c896bb0e18113b2d2f1989be95135e6bdeedb0b757422ee21a073eb" +checksum = "14fb10e63363204b89d91e1292df83322fd9de5d7fa76c3d5c78ddc2f8f3efa9" dependencies = [ "async-trait", "bs58", @@ -8107,14 +8962,14 @@ dependencies = [ "ed25519-dalek", "futures", "futures-timer", - "hickory-resolver", - "indexmap 2.9.0", + "hickory-resolver 0.25.2", + "indexmap 2.10.0", "libc", "mockall", "multiaddr 0.17.1", "multihash 0.17.0", "network-interface", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "pin-project", "prost 0.13.5", "prost-build", @@ -8124,8 +8979,8 @@ dependencies = [ "simple-dns", "smallvec", "snow", - "socket2 0.5.9", - "thiserror 2.0.12", + "socket2 0.5.10", + "thiserror 2.0.14", "tokio", "tokio-stream", "tokio-tungstenite", @@ -8136,16 +8991,22 @@ dependencies = [ "url", "x25519-dalek", "x509-parser 0.17.0", - "yamux 0.13.5", + "yamux 0.13.6", "yasna", "zeroize", ] +[[package]] +name = "litrs" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5e54036fe321fd421e10d732f155734c4e4afd610dd556d9a82833ab3ee0bed" + [[package]] name = "lock_api" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" dependencies = [ "autocfg", "scopeguard", @@ -8157,6 +9018,19 @@ version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +[[package]] +name = "loom" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" +dependencies = [ + "cfg-if", + "generator", + "scoped-tls", + "tracing", + "tracing-subscriber", +] + [[package]] name = "lru" version = "0.8.1" @@ -8178,7 +9052,7 @@ version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "hashbrown 0.15.3", + "hashbrown 0.15.5", ] [[package]] @@ -8232,7 +9106,7 @@ checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -8244,7 +9118,7 @@ dependencies = [ "macro_magic_core", "macro_magic_macros", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -8258,7 +9132,7 @@ dependencies = [ "macro_magic_core_macros", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -8269,7 +9143,7 @@ checksum = "b02abfe41815b5bd98dbd4260173db2c116dda171dc0fe7838cb206333b83308" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -8280,7 +9154,7 @@ checksum = "73ea28ee64b88876bf45277ed9a5817c1817df061a74f2b988971a12570e5869" dependencies = [ "macro_magic_core", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -8304,9 +9178,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" [[package]] name = "memfd" @@ -8328,9 +9202,9 @@ dependencies = [ [[package]] name = "memmap2" -version = "0.9.5" +version = "0.9.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" +checksum = "483758ad303d734cec05e5c12b41d7e93e6a6390c5e9dae6bdeb7c1259012d28" dependencies = [ "libc", ] @@ -8353,17 +9227,38 @@ dependencies = [ "hash-db", ] +[[package]] +name = "memory-db" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6da20dba965bd218a14c3b335b90d3e07c09ede190c7c19b50deb23d418a322" +dependencies = [ + "hash-db", + "hashbrown 0.15.5", +] + +[[package]] +name = "memory-db" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e300c54e3239a86f9c61cc63ab0f03862eb40b1c6e065dc6fd6ceaeff6da93d" +dependencies = [ + "foldhash", + "hash-db", + "hashbrown 0.15.5", +] + [[package]] name = "merkleized-metadata" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc9b7ac0ce054412d9a85ff39bac27aec27483b06cef8756b57d9c29d448d081" +checksum = "b3e3e3f549d27d2dc054372f320ddf68045a833fab490563ff70d4cf1b9d91ea" dependencies = [ - "array-bytes", + "array-bytes 9.3.0", "blake3", - "frame-metadata 20.0.0", + "frame-metadata 23.0.0", "parity-scale-codec", - "scale-decode 0.13.1", + "scale-decode 0.16.0", "scale-info", ] @@ -8387,23 +9282,23 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", ] [[package]] name = "mio" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" dependencies = [ "libc", "log", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.52.0", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", ] [[package]] @@ -8422,7 +9317,7 @@ dependencies = [ "hashlink", "lioness", "log", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "rand 0.8.5", "rand_chacha 0.3.1", "rand_distr", @@ -8433,36 +9328,36 @@ dependencies = [ [[package]] name = "mmr-gadget" -version = "44.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "46.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "futures", "log", "parity-scale-codec", "sc-client-api", "sc-offchain", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-blockchain", "sp-consensus", - "sp-consensus-beefy 24.1.0", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-mmr-primitives 36.1.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-consensus-beefy 25.0.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-mmr-primitives 37.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "mmr-rpc" -version = "40.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "jsonrpsee", "parity-scale-codec", "serde", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-blockchain", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-mmr-primitives 36.1.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-mmr-primitives 37.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -8488,7 +9383,26 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", +] + +[[package]] +name = "moka" +version = "0.12.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9321642ca94a4282428e6ea4af8cc2ca4eac48ac7a6a4ea8f33f76d0ce70926" +dependencies = [ + "crossbeam-channel", + "crossbeam-epoch", + "crossbeam-utils", + "loom", + "parking_lot 0.12.4", + "portable-atomic", + "rustc_version 0.4.1", + "smallvec", + "tagptr", + "thiserror 1.0.69", + "uuid", ] [[package]] @@ -8685,7 +9599,7 @@ dependencies = [ "log", "netlink-packet-core", "netlink-sys", - "thiserror 2.0.12", + "thiserror 2.0.14", ] [[package]] @@ -8703,13 +9617,13 @@ dependencies = [ [[package]] name = "network-interface" -version = "2.0.1" +version = "2.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3329f515506e4a2de3aa6e07027a6758e22e0f0e8eaf64fa47261cec2282602" +checksum = "07709a6d4eba90ab10ec170a0530b3aafc81cb8a2d380e4423ae41fc55fe5745" dependencies = [ "cc", "libc", - "thiserror 1.0.69", + "thiserror 2.0.14", "winapi", ] @@ -8782,6 +9696,15 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38bf9645c8b145698bb0b18a4637dcacbc421ea49bef2317e4fd8065a387cf21" +[[package]] +name = "ntapi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" +dependencies = [ + "winapi", +] + [[package]] name = "nu-ansi-term" version = "0.46.0" @@ -8825,7 +9748,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -8870,11 +9793,11 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" dependencies = [ - "hermit-abi 0.3.9", + "hermit-abi 0.5.2", "libc", ] @@ -8931,6 +9854,16 @@ name = "once_cell" version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +dependencies = [ + "critical-section", + "portable-atomic", +] + +[[package]] +name = "once_cell_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" [[package]] name = "opaque-debug" @@ -8958,9 +9891,9 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "orchestra" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f6bbacc8c189a3f2e45e0fd0436e5d97f194db888e721bdbc3973e7dbed4c2" +checksum = "19051f0b0512402f5d52d6776999f55996f01887396278aeeccbbdfbc83eef2d" dependencies = [ "async-trait", "dyn-clonable", @@ -8975,12 +9908,12 @@ dependencies = [ [[package]] name = "orchestra-proc-macro" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7b1d40dd8f367db3c65bec8d3dd47d4a604ee8874480738f93191bddab4e0e0" +checksum = "43dfaf083aef571385fccfdc3a2f8ede8d0a1863160455d4f2b014d8f7d04a3f" dependencies = [ "expander", - "indexmap 2.9.0", + "indexmap 2.10.0", "itertools 0.11.0", "petgraph 0.6.5", "proc-macro-crate 3.3.0", @@ -8989,11 +9922,20 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ordered-float" +version = "2.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c" +dependencies = [ + "num-traits", +] + [[package]] name = "os_pipe" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ffd2b0a5634335b135d5728d84c5e0fd726954b87111f7506a61c502280d982" +checksum = "db335f4760b14ead6290116f2427bf33a14d4f0617d49f78a246de10c1831224" dependencies = [ "libc", "windows-sys 0.59.0", @@ -9010,22 +9952,48 @@ name = "pallet-api" version = "0.1.0" dependencies = [ "anyhow", - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "ismp", "log", - "pallet-assets 42.0.0", - "pallet-balances 41.1.0", + "pallet-assets 43.0.0", + "pallet-balances 42.0.0", "pallet-ismp", "pallet-nfts 34.1.0", "parity-scale-codec", "pop-chain-extension", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", +] + +[[package]] +name = "pallet-api-vnext" +version = "0.1.0" +dependencies = [ + "anyhow", + "base64 0.22.1", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", + "ismp", + "log", + "pallet-assets 43.0.0", + "pallet-balances 42.0.0", + "pallet-ismp", + "pallet-revive 0.7.0", + "pallet-timestamp 40.0.0", + "pallet-xcm 20.1.0", + "parity-scale-codec", + "scale-info", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-parachain-info 0.21.0", + "staging-xcm 17.0.0", + "staging-xcm-builder 21.0.0", ] [[package]] @@ -9034,14 +10002,14 @@ version = "20.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33f0078659ae95efe6a1bf138ab5250bc41ab98f22ff3651d0208684f08ae797" dependencies = [ - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "log", "parity-scale-codec", "scale-info", "sp-api 34.0.0", - "sp-arithmetic 26.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-arithmetic 26.1.0", "sp-core 34.0.0", "sp-io 38.0.2", "sp-runtime 39.0.5", @@ -9049,38 +10017,38 @@ dependencies = [ [[package]] name = "pallet-asset-conversion" -version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "23.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", "parity-scale-codec", "scale-info", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-arithmetic 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "pallet-asset-conversion-ops" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.9.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", - "pallet-asset-conversion 22.0.0", + "pallet-asset-conversion 23.0.0", "parity-scale-codec", "scale-info", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-arithmetic 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -9100,17 +10068,17 @@ dependencies = [ [[package]] name = "pallet-asset-conversion-tx-payment" -version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "23.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", - "pallet-asset-conversion 22.0.0", - "pallet-transaction-payment 40.0.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", + "pallet-asset-conversion 23.0.0", + "pallet-transaction-payment 41.0.0", "parity-scale-codec", "scale-info", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -9119,7 +10087,7 @@ version = "17.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71b2149aa741bc39466bbcc92d9d0ab6e9adcf39d2790443a735ad573b3191e7" dependencies = [ - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "parity-scale-codec", @@ -9130,34 +10098,34 @@ dependencies = [ [[package]] name = "pallet-asset-rate" -version = "19.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "20.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "parity-scale-codec", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "pallet-asset-rewards" -version = "0.2.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.3.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "parity-scale-codec", "scale-info", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-arithmetic 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -9166,7 +10134,7 @@ version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "406a486466d15acc48c99420191f96f1af018f3381fde829c467aba489030f18" dependencies = [ - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "pallet-transaction-payment 38.0.2", @@ -9180,19 +10148,18 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" -version = "40.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", - "pallet-transaction-payment 40.0.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", + "pallet-transaction-payment 41.0.0", "parity-scale-codec", "scale-info", "serde", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -9201,7 +10168,7 @@ version = "40.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f45f4eb6027fc34c4650e0ed6a7e57ed3335cc364be74b4531f714237676bcee" dependencies = [ - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "impl-trait-for-tuples", @@ -9214,27 +10181,29 @@ dependencies = [ [[package]] name = "pallet-assets" -version = "42.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "43.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "ethereum-standards 0.1.1", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "impl-trait-for-tuples", "log", + "pallet-revive 0.7.0", "parity-scale-codec", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "pallet-assets-freezer" -version = "0.7.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.8.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "log", - "pallet-assets 42.0.0", + "pallet-assets 43.0.0", "parity-scale-codec", "polkadot-sdk-frame", "scale-info", @@ -9259,18 +10228,18 @@ dependencies = [ [[package]] name = "pallet-aura" -version = "39.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "40.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", - "pallet-timestamp 39.0.0", + "pallet-timestamp 40.0.0", "parity-scale-codec", "scale-info", - "sp-application-crypto 40.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-consensus-aura 0.42.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-application-crypto 41.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-consensus-aura 0.43.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -9291,17 +10260,17 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" -version = "40.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-support 40.1.0", - "frame-system 40.1.0", - "pallet-session 40.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", + "pallet-session 41.0.0", "parity-scale-codec", "scale-info", - "sp-application-crypto 40.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-authority-discovery 36.0.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-application-crypto 41.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-authority-discovery 37.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -9320,15 +10289,15 @@ dependencies = [ [[package]] name = "pallet-authorship" -version = "40.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "impl-trait-for-tuples", "parity-scale-codec", "scale-info", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -9337,7 +10306,7 @@ version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ee096c0def13832475b340d00121025e0225de29604d44bc6dfcaa294c995b4" dependencies = [ - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "log", @@ -9357,25 +10326,25 @@ dependencies = [ [[package]] name = "pallet-babe" -version = "40.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", - "pallet-authorship 40.0.0", - "pallet-session 40.0.0", - "pallet-timestamp 39.0.0", + "pallet-authorship 41.0.0", + "pallet-session 41.0.0", + "pallet-timestamp 40.0.0", "parity-scale-codec", "scale-info", - "sp-application-crypto 40.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-consensus-babe 0.42.1", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-session 38.1.0", - "sp-staking 38.0.0", + "sp-application-crypto 41.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-consensus-babe 0.43.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-session 39.0.0", + "sp-staking 39.0.0", ] [[package]] @@ -9386,7 +10355,7 @@ checksum = "0fd23a6f94ba9c1e57c8a7f8a41327d132903a79c55c0c83f36cbae19946cf10" dependencies = [ "aquamarine", "docify", - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-election-provider-support 38.0.0", "frame-support 38.2.0", "frame-system 38.0.0", @@ -9402,23 +10371,23 @@ dependencies = [ [[package]] name = "pallet-bags-list" -version = "39.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "40.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "aquamarine", "docify", - "frame-benchmarking 40.0.0", - "frame-election-provider-support 40.1.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-election-provider-support 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", - "pallet-balances 41.1.0", + "pallet-balances 42.0.0", "parity-scale-codec", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-tracing 17.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-tracing 17.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -9428,7 +10397,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bcb1f72d7048fbd11e884b4693f7d438b8202340ff252e2a402e04c638fe2d02" dependencies = [ "docify", - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "log", @@ -9439,18 +10408,18 @@ dependencies = [ [[package]] name = "pallet-balances" -version = "41.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "42.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "docify", - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", "parity-scale-codec", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -9475,21 +10444,21 @@ dependencies = [ [[package]] name = "pallet-beefy" -version = "41.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "42.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", - "pallet-authorship 40.0.0", - "pallet-session 40.0.0", + "pallet-authorship 41.0.0", + "pallet-session 41.0.0", "parity-scale-codec", "scale-info", "serde", - "sp-consensus-beefy 24.1.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-session 38.1.0", - "sp-staking 38.0.0", + "sp-consensus-beefy 25.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-session 39.0.0", + "sp-staking 39.0.0", ] [[package]] @@ -9498,9 +10467,9 @@ version = "39.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c64f536e7f04cf3a0a17fdf20870ddb3d63a7690419c40f75cfd2f72b6e6d22" dependencies = [ - "array-bytes", + "array-bytes 6.2.3", "binary-merkle-tree 15.0.1", - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "log", @@ -9520,27 +10489,27 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" -version = "41.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "42.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "array-bytes", - "binary-merkle-tree 16.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "array-bytes 6.2.3", + "binary-merkle-tree 16.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", - "pallet-beefy 41.1.0", - "pallet-mmr 40.0.0", - "pallet-session 40.0.0", + "pallet-beefy 42.0.0", + "pallet-mmr 41.0.0", + "pallet-session 41.0.0", "parity-scale-codec", "scale-info", "serde", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-consensus-beefy 24.1.0", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-state-machine 0.45.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-consensus-beefy 25.0.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-state-machine 0.46.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -9549,7 +10518,7 @@ version = "37.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59f3d032f78624b12238a31b6e80ab3e112381a7bc222df152650e33bb2ce190" dependencies = [ - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "log", @@ -9563,38 +10532,38 @@ dependencies = [ [[package]] name = "pallet-bounties" -version = "39.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "40.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", - "pallet-treasury 39.0.0", + "pallet-treasury 40.0.0", "parity-scale-codec", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "pallet-bridge-messages" -version = "0.20.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.21.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "bp-header-chain 0.20.1", - "bp-messages 0.20.1", - "bp-runtime 0.20.1", - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "bp-header-chain 0.21.0", + "bp-messages 0.21.0", + "bp-runtime 0.21.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", "parity-scale-codec", "scale-info", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-trie 39.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-trie 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -9604,34 +10573,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "018b477d7d464c451b1d09a4ce9e792c3c65b15fd764b23da38ff9980e786065" dependencies = [ "bitvec", - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "log", "parity-scale-codec", "scale-info", "sp-api 34.0.0", - "sp-arithmetic 26.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-arithmetic 26.1.0", "sp-core 34.0.0", "sp-runtime 39.0.5", ] [[package]] name = "pallet-broker" -version = "0.19.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.20.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "bitvec", - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", "parity-scale-codec", "scale-info", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-arithmetic 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -9640,7 +10609,7 @@ version = "37.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7f3bc38ae6584b5f57e4de3e49e5184bfc0f20692829530ae1465ffe04e09e7" dependencies = [ - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "log", @@ -9655,20 +10624,20 @@ dependencies = [ [[package]] name = "pallet-child-bounties" -version = "39.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "40.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", - "pallet-bounties 39.0.0", - "pallet-treasury 39.0.0", + "pallet-bounties 40.0.0", + "pallet-treasury 40.0.0", "parity-scale-codec", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -9677,7 +10646,7 @@ version = "19.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "658798d70c9054165169f6a6a96cfa9d6a5e7d24a524bc19825bf17fcbc5cc5a" dependencies = [ - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "log", @@ -9693,52 +10662,52 @@ dependencies = [ [[package]] name = "pallet-collator-selection" -version = "21.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "22.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", - "pallet-authorship 40.0.0", - "pallet-balances 41.1.0", - "pallet-session 40.0.0", + "pallet-authorship 41.0.0", + "pallet-balances 42.0.0", + "pallet-session 41.0.0", "parity-scale-codec", "rand 0.8.5", "scale-info", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-staking 38.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-staking 39.0.0", ] [[package]] name = "pallet-collective" -version = "40.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "docify", - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", "parity-scale-codec", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "pallet-contracts" -version = "40.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "environmental", - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "impl-trait-for-tuples", "log", - "pallet-balances 41.1.0", + "pallet-balances 42.0.0", "pallet-contracts-proc-macro", "pallet-contracts-uapi 14.0.0", "parity-scale-codec", @@ -9748,12 +10717,12 @@ dependencies = [ "scale-info", "serde", "smallvec", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", - "staging-xcm-builder 20.1.0", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", + "staging-xcm-builder 21.0.0", "wasm-instrument", "wasmi 0.32.3", ] @@ -9761,11 +10730,11 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "23.0.3" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -9782,7 +10751,7 @@ dependencies = [ [[package]] name = "pallet-contracts-uapi" version = "14.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "bitflags 1.3.2", "parity-scale-codec", @@ -9797,7 +10766,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "999c242491b74395b8c5409ef644e782fe426d87ae36ad92240ffbf21ff0a76e" dependencies = [ "assert_matches", - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "parity-scale-codec", @@ -9809,18 +10778,18 @@ dependencies = [ [[package]] name = "pallet-conviction-voting" -version = "40.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "assert_matches", - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "parity-scale-codec", "scale-info", "serde", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -9841,34 +10810,34 @@ dependencies = [ [[package]] name = "pallet-delegated-staking" -version = "7.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "8.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", "parity-scale-codec", "scale-info", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-staking 38.0.0", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-staking 39.0.0", ] [[package]] name = "pallet-democracy" -version = "40.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", "parity-scale-codec", "scale-info", "serde", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -9877,7 +10846,7 @@ version = "37.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62f9ad5ae0c13ba3727183dadf1825b6b7b0b0598ed5c366f8697e13fd540f7d" dependencies = [ - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-election-provider-support 38.0.0", "frame-support 38.2.0", "frame-system 38.0.0", @@ -9886,7 +10855,7 @@ dependencies = [ "parity-scale-codec", "rand 0.8.5", "scale-info", - "sp-arithmetic 26.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-arithmetic 26.1.0", "sp-core 34.0.0", "sp-io 38.0.2", "sp-npos-elections 34.0.0", @@ -9896,23 +10865,22 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" -version = "39.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "40.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-election-provider-support 40.1.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-election-provider-support 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", - "pallet-election-provider-support-benchmarking 39.0.0", "parity-scale-codec", "rand 0.8.5", "scale-info", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-npos-elections 36.1.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-arithmetic 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-npos-elections 37.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "strum 0.26.3", ] @@ -9922,7 +10890,7 @@ version = "37.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4111d0d27545c260c9dd0d6fc504961db59c1ec4b42e1bcdc28ebd478895c22" dependencies = [ - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-election-provider-support 38.0.0", "frame-system 38.0.0", "parity-scale-codec", @@ -9932,33 +10900,33 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" -version = "39.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "40.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-election-provider-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-election-provider-support 41.0.0", + "frame-system 41.0.0", "parity-scale-codec", - "sp-npos-elections 36.1.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-npos-elections 37.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "pallet-elections-phragmen" -version = "41.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "42.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", "parity-scale-codec", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-npos-elections 36.1.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-staking 38.0.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-npos-elections 37.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-staking 39.0.0", ] [[package]] @@ -9968,7 +10936,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e0ee60e8ef10b3936f2700bd61fa45dcc190c61124becc63bed787addcfa0d20" dependencies = [ "docify", - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-election-provider-support 38.0.0", "frame-support 38.2.0", "frame-system 38.0.0", @@ -9982,20 +10950,20 @@ dependencies = [ [[package]] name = "pallet-fast-unstake" -version = "39.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "40.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "docify", - "frame-benchmarking 40.0.0", - "frame-election-provider-support 40.1.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-election-provider-support 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", "parity-scale-codec", "scale-info", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-staking 38.0.0", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-staking 39.0.0", ] [[package]] @@ -10004,7 +10972,7 @@ version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d3a570a4aac3173ea46b600408183ca2bcfdaadc077f802f11e6055963e2449" dependencies = [ - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "log", @@ -10023,24 +10991,24 @@ dependencies = [ [[package]] name = "pallet-grandpa" -version = "40.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", - "pallet-authorship 40.0.0", - "pallet-session 40.0.0", + "pallet-authorship 41.0.0", + "pallet-session 41.0.0", "parity-scale-codec", "scale-info", - "sp-application-crypto 40.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-consensus-grandpa 23.1.0", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-session 38.1.0", - "sp-staking 38.0.0", + "sp-application-crypto 41.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-consensus-grandpa 24.0.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-session 39.0.0", + "sp-staking 39.0.0", ] [[package]] @@ -10050,7 +11018,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3a4288548de9a755e39fcb82ffb9024b6bb1ba0f582464a44423038dd7a892e" dependencies = [ "enumflags2", - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "log", @@ -10062,18 +11030,18 @@ dependencies = [ [[package]] name = "pallet-identity" -version = "40.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "enumflags2", - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", "parity-scale-codec", "scale-info", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -10082,7 +11050,7 @@ version = "37.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c6fd95270cf029d16cb40fe6bd9f8ab9c78cd966666dccbca4d8bfec35c5bba5" dependencies = [ - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "log", @@ -10098,21 +11066,21 @@ dependencies = [ [[package]] name = "pallet-im-online" -version = "39.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "40.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", - "pallet-authorship 40.0.0", + "pallet-authorship 41.0.0", "parity-scale-codec", "scale-info", - "sp-application-crypto 40.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-staking 38.0.0", + "sp-application-crypto 41.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-staking 39.0.0", ] [[package]] @@ -10121,7 +11089,7 @@ version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c5e4b97de630427a39d50c01c9e81ab8f029a00e56321823958b39b438f7b940" dependencies = [ - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "parity-scale-codec", @@ -10134,52 +11102,52 @@ dependencies = [ [[package]] name = "pallet-indices" -version = "40.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "parity-scale-codec", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "pallet-ismp" version = "1.15.3" -source = "git+https://github.com/r0gue-io/ismp?branch=polkadot-stable2503-4#97e0ba9e2cb7f7c27a43c66ee9decbbfa5f617f4" +source = "git+https://github.com/r0gue-io/ismp?branch=polkadot-stable2506#a64c9c79824f1f6b0e0b5288bcaba18241fc19a0" dependencies = [ "anyhow", "fortuples", - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "ismp", "log", "parity-scale-codec", "scale-info", "serde", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-mmr-primitives 36.1.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-mmr-primitives 37.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "pallet-ismp-rpc" version = "1.15.3" -source = "git+https://github.com/r0gue-io/ismp?branch=polkadot-stable2503-4#97e0ba9e2cb7f7c27a43c66ee9decbbfa5f617f4" +source = "git+https://github.com/r0gue-io/ismp?branch=polkadot-stable2506#a64c9c79824f1f6b0e0b5288bcaba18241fc19a0" dependencies = [ "anyhow", - "frame-system 40.1.0", + "frame-system 41.0.0", "hash-db", "hex", - "hex-literal", + "hex-literal 0.4.1", "ismp", "jsonrpsee", "pallet-ismp", @@ -10189,13 +11157,13 @@ dependencies = [ "sc-rpc", "serde", "serde_json", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-blockchain", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-mmr-primitives 36.1.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-trie 39.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-mmr-primitives 37.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-trie 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "tower", "trie-db 0.30.0", ] @@ -10203,31 +11171,15 @@ dependencies = [ [[package]] name = "pallet-ismp-runtime-api" version = "1.15.3" -source = "git+https://github.com/r0gue-io/ismp?branch=polkadot-stable2503-4#97e0ba9e2cb7f7c27a43c66ee9decbbfa5f617f4" +source = "git+https://github.com/r0gue-io/ismp?branch=polkadot-stable2506#a64c9c79824f1f6b0e0b5288bcaba18241fc19a0" dependencies = [ "ismp", "pallet-ismp", "parity-scale-codec", "primitive-types 0.13.1", "serde", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-mmr-primitives 36.1.0", -] - -[[package]] -name = "pallet-membership" -version = "40.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" -dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", - "log", - "parity-scale-codec", - "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-mmr-primitives 37.0.0", ] [[package]] @@ -10237,73 +11189,73 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "983f7d1be18e9a089a3e23670918f5085705b4403acd3fdde31878d57b76a1a8" dependencies = [ "environmental", - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "log", "parity-scale-codec", "scale-info", - "sp-arithmetic 26.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-arithmetic 26.1.0", "sp-core 34.0.0", "sp-io 38.0.2", "sp-runtime 39.0.5", - "sp-weights 31.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-weights 31.1.0", ] [[package]] name = "pallet-message-queue" -version = "43.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "44.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "environmental", - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", "parity-scale-codec", "scale-info", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-weights 31.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-arithmetic 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-weights 32.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "pallet-meta-tx" -version = "0.2.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.3.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "docify", - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "parity-scale-codec", "scale-info", "serde", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "pallet-migrations" -version = "10.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "11.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "docify", - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "impl-trait-for-tuples", "log", "parity-scale-codec", "polkadot-sdk-frame", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -10312,7 +11264,7 @@ version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6932dfb85f77a57c2d1fdc28a7b3a59ffe23efd8d5bb02dc3039d91347e4a3b" dependencies = [ - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "log", @@ -10326,31 +11278,31 @@ dependencies = [ [[package]] name = "pallet-mmr" -version = "40.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "log", "parity-scale-codec", "polkadot-sdk-frame", "scale-info", - "sp-mmr-primitives 36.1.0", + "sp-mmr-primitives 37.0.0", ] [[package]] name = "pallet-motion" version = "4.0.0-dev" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", - "pallet-balances 41.1.0", + "pallet-balances 42.0.0", "pallet-collective", "parity-scale-codec", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -10359,7 +11311,7 @@ version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e5099c9a4442efcc1568d88ca1d22d624e81ab96358f99f616c67fbd82532d2" dependencies = [ - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "log", @@ -10371,8 +11323,8 @@ dependencies = [ [[package]] name = "pallet-multisig" -version = "40.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "log", "parity-scale-codec", @@ -10382,18 +11334,15 @@ dependencies = [ [[package]] name = "pallet-nft-fractionalization" -version = "23.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", "log", - "pallet-assets 42.0.0", - "pallet-nfts 34.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "pallet-assets 43.0.0", + "pallet-nfts 35.0.0", "parity-scale-codec", + "polkadot-sdk-frame", "scale-info", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", ] [[package]] @@ -10403,7 +11352,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59e2aad461a0849d7f0471576eeb1fe3151795bcf2ec9e15eca5cca5b9d743b2" dependencies = [ "enumflags2", - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "log", @@ -10419,34 +11368,34 @@ name = "pallet-nfts" version = "34.1.0" dependencies = [ "enumflags2", - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", - "pallet-balances 41.1.0", + "pallet-balances 42.0.0", "parity-scale-codec", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keystore 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "pallet-nfts" -version = "34.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "35.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "enumflags2", - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", "parity-scale-codec", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -10462,17 +11411,17 @@ dependencies = [ [[package]] name = "pallet-nfts-runtime-api" -version = "26.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "27.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "parity-scale-codec", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "pallet-nis" -version = "40.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "parity-scale-codec", "polkadot-sdk-frame", @@ -10500,20 +11449,20 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" -version = "38.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "39.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", - "pallet-balances 41.1.0", + "pallet-balances 42.0.0", "parity-scale-codec", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-staking 38.0.0", - "sp-tracing 17.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-staking 39.0.0", + "sp-tracing 17.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -10522,7 +11471,7 @@ version = "36.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38d2eaca0349bcda923343226b8b64d25a80b67e0a1ebaaa5b0ab1e1b3b225bc" dependencies = [ - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-election-provider-support 38.0.0", "frame-support 38.2.0", "frame-system 38.0.0", @@ -10539,22 +11488,22 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" -version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "39.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-election-provider-support 40.1.0", - "frame-support 40.1.0", - "frame-system 40.1.0", - "pallet-bags-list 39.1.0", - "pallet-delegated-staking 7.0.0", - "pallet-nomination-pools 38.1.0", - "pallet-staking 40.1.0", + "frame-benchmarking 41.0.0", + "frame-election-provider-support 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", + "pallet-bags-list 40.0.0", + "pallet-delegated-staking 8.0.0", + "pallet-nomination-pools 39.0.0", + "pallet-staking 41.0.0", "parity-scale-codec", "scale-info", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime-interface 29.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-staking 38.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime-interface 30.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-staking 39.0.0", ] [[package]] @@ -10570,12 +11519,12 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-runtime-api" -version = "36.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "pallet-nomination-pools 38.1.0", + "pallet-nomination-pools 39.0.0", "parity-scale-codec", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -10597,17 +11546,17 @@ dependencies = [ [[package]] name = "pallet-offences" -version = "39.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "40.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", "parity-scale-codec", "scale-info", "serde", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-staking 38.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-staking 39.0.0", ] [[package]] @@ -10616,7 +11565,7 @@ version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69aa1b24cdffc3fa8c89cdea32c83f1bf9c1c82a87fa00e57ae4be8e85f5e24f" dependencies = [ - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-election-provider-support 38.0.0", "frame-support 38.2.0", "frame-system 38.0.0", @@ -10636,25 +11585,25 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" -version = "40.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-election-provider-support 40.1.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-election-provider-support 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", - "pallet-babe 40.0.0", - "pallet-balances 41.1.0", - "pallet-grandpa 40.0.0", - "pallet-im-online 39.1.0", - "pallet-offences 39.0.0", - "pallet-session 40.0.0", - "pallet-staking 40.1.0", + "pallet-babe 41.0.0", + "pallet-balances 42.0.0", + "pallet-grandpa 41.0.0", + "pallet-im-online 40.0.0", + "pallet-offences 40.0.0", + "pallet-session 41.0.0", + "pallet-staking 41.0.0", "parity-scale-codec", "scale-info", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-staking 38.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-staking 39.0.0", ] [[package]] @@ -10664,7 +11613,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9aba424d55e17b2a2bec766a41586eab878137704d4803c04bebd6a4743db7b" dependencies = [ "docify", - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "parity-scale-codec", @@ -10677,19 +11626,19 @@ dependencies = [ [[package]] name = "pallet-parameters" -version = "0.11.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.12.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "docify", - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "parity-scale-codec", "paste", "scale-info", "serde", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -10698,7 +11647,7 @@ version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "407828bc48c6193ac076fdf909b2fadcaaecd65f42b0b0a04afe22fe8e563834" dependencies = [ - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "log", @@ -10711,18 +11660,18 @@ dependencies = [ [[package]] name = "pallet-preimage" -version = "40.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", "parity-scale-codec", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -10731,7 +11680,7 @@ version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d39df395f0dbcf07dafe842916adea3266a87ce36ed87b5132184b6bcd746393" dependencies = [ - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "parity-scale-codec", @@ -10742,8 +11691,8 @@ dependencies = [ [[package]] name = "pallet-proxy" -version = "40.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "parity-scale-codec", "polkadot-sdk-frame", @@ -10752,34 +11701,30 @@ dependencies = [ [[package]] name = "pallet-ranked-collective" -version = "40.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "impl-trait-for-tuples", "log", "parity-scale-codec", "scale-info", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-arithmetic 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "pallet-recovery" -version = "40.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", "parity-scale-codec", + "polkadot-sdk-frame", "scale-info", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", ] [[package]] @@ -10789,34 +11734,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3008c20531d1730c9b457ae77ecf0e3c9b07aaf8c4f5d798d61ef6f0b9e2d4b" dependencies = [ "assert_matches", - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "log", "parity-scale-codec", "scale-info", "serde", - "sp-arithmetic 26.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-arithmetic 26.1.0", "sp-io 38.0.2", "sp-runtime 39.0.5", ] [[package]] name = "pallet-referenda" -version = "40.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "assert_matches", - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", "parity-scale-codec", "scale-info", "serde", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-arithmetic 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -10826,7 +11771,7 @@ source = "git+https://github.com/polkadot-fellows/runtimes?tag=v1.4.3#f6cd32d205 dependencies = [ "cumulus-pallet-parachain-system 0.17.2", "cumulus-primitives-core 0.16.0", - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "pallet-proxy 38.0.0", @@ -10839,27 +11784,73 @@ dependencies = [ [[package]] name = "pallet-revive" -version = "0.5.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" dependencies = [ "alloy-core", "derive_more 0.99.20", "environmental", - "ethabi-decode 2.0.0", + "ethereum-standards 0.1.0", + "ethereum-types 0.15.1", + "frame-benchmarking 28.0.0", + "frame-support 28.0.0", + "frame-system 28.0.0", + "hex-literal 0.4.1", + "humantime-serde", + "impl-trait-for-tuples", + "log", + "num-bigint", + "num-integer", + "num-traits", + "pallet-revive-fixtures 0.1.0", + "pallet-revive-proc-macro 0.1.0", + "pallet-revive-uapi 0.1.0", + "pallet-transaction-payment 28.0.0", + "parity-scale-codec", + "paste", + "polkavm 0.26.0", + "polkavm-common 0.26.0", + "rand 0.8.5", + "ripemd", + "rlp 0.6.1", + "scale-info", + "serde", + "sp-api 26.0.0", + "sp-arithmetic 23.0.0", + "sp-consensus-aura 0.32.0", + "sp-consensus-babe 0.32.0", + "sp-consensus-slots 0.32.0", + "sp-core 28.0.0", + "sp-io 30.0.0", + "sp-runtime 31.0.1", + "substrate-bn", + "subxt-signer", +] + +[[package]] +name = "pallet-revive" +version = "0.7.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" +dependencies = [ + "alloy-core", + "derive_more 0.99.20", + "environmental", + "ethereum-standards 0.1.1", "ethereum-types 0.15.1", - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", - "hex-literal", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", + "hex-literal 0.4.1", + "humantime-serde", "impl-trait-for-tuples", "log", "num-bigint", "num-integer", "num-traits", - "pallet-revive-fixtures", - "pallet-revive-proc-macro", - "pallet-revive-uapi", - "pallet-transaction-payment 40.0.0", + "pallet-revive-fixtures 0.4.0", + "pallet-revive-proc-macro 0.3.0", + "pallet-revive-uapi 0.5.0", + "pallet-transaction-payment 41.0.0", "parity-scale-codec", "paste", "polkavm 0.21.0", @@ -10870,78 +11861,111 @@ dependencies = [ "rlp 0.6.1", "scale-info", "serde", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-consensus-aura 0.42.0", - "sp-consensus-babe 0.42.1", - "sp-consensus-slots 0.42.1", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", - "staging-xcm-builder 20.1.0", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-arithmetic 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-consensus-aura 0.43.0", + "sp-consensus-babe 0.43.0", + "sp-consensus-slots 0.43.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "substrate-bn", "subxt-signer", ] [[package]] name = "pallet-revive-fixtures" -version = "0.3.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "anyhow", + "cargo_metadata 0.15.4", + "pallet-revive-uapi 0.1.0", + "polkavm-linker 0.26.0", + "sp-core 28.0.0", + "sp-io 30.0.0", + "toml 0.8.23", +] + +[[package]] +name = "pallet-revive-fixtures" +version = "0.4.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "anyhow", "cargo_metadata 0.15.4", - "pallet-revive-uapi", + "pallet-revive-uapi 0.5.0", "polkavm-linker 0.21.0", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "toml 0.8.22", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "toml 0.8.23", +] + +[[package]] +name = "pallet-revive-proc-macro" +version = "0.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", ] [[package]] name = "pallet-revive-proc-macro" version = "0.3.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "pallet-revive-uapi" -version = "0.4.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" dependencies = [ "bitflags 1.3.2", - "pallet-revive-proc-macro", + "pallet-revive-proc-macro 0.1.0", "parity-scale-codec", - "polkavm-derive 0.21.0", + "polkavm-derive 0.26.0", "scale-info", ] [[package]] -name = "pallet-root-testing" -version = "16.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +name = "pallet-revive-uapi" +version = "0.5.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-support 40.1.0", - "frame-system 40.1.0", + "bitflags 1.3.2", + "pallet-revive-proc-macro 0.3.0", + "parity-scale-codec", + "polkavm-derive 0.21.0", + "scale-info", +] + +[[package]] +name = "pallet-root-testing" +version = "17.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" +dependencies = [ + "frame-support 41.0.0", + "frame-system 41.0.0", "parity-scale-codec", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "pallet-scheduler" -version = "39.0.0" +version = "39.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26899a331e7ab5f7d5966cbf203e1cf5bd99cd110356d7ddcaa7597087cdc0b5" +checksum = "8ae668abe6b400280a7f6f3e5ad89a84be7e82f963a7456de80589467693d3f2" dependencies = [ "docify", - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "log", @@ -10949,24 +11973,24 @@ dependencies = [ "scale-info", "sp-io 38.0.2", "sp-runtime 39.0.5", - "sp-weights 31.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-weights 31.1.0", ] [[package]] name = "pallet-scheduler" -version = "41.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "42.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "docify", - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", "parity-scale-codec", "scale-info", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-weights 31.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-weights 32.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -10993,23 +12017,23 @@ dependencies = [ [[package]] name = "pallet-session" -version = "40.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "impl-trait-for-tuples", "log", - "pallet-timestamp 39.0.0", + "pallet-timestamp 40.0.0", "parity-scale-codec", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-session 38.1.0", - "sp-staking 38.0.0", - "sp-state-machine 0.45.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-trie 39.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-session 39.0.0", + "sp-staking 39.0.0", + "sp-state-machine 0.46.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-trie 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -11018,7 +12042,7 @@ version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8aadce7df0fee981721983795919642648b846dab5ab9096f82c2cea781007d0" dependencies = [ - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "pallet-session 38.0.0", @@ -11031,35 +12055,35 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" -version = "40.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", - "pallet-session 40.0.0", - "pallet-staking 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", + "pallet-session 41.0.0", + "pallet-staking 41.0.0", "parity-scale-codec", "rand 0.8.5", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-session 38.1.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-session 39.0.0", ] [[package]] name = "pallet-society" -version = "40.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", "parity-scale-codec", "rand_chacha 0.3.1", "scale-info", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-arithmetic 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -11068,7 +12092,7 @@ version = "38.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8efdbfe23385add01c734e6ddd7967e11a04fad0da7e4e42e6ae2501d1e12016" dependencies = [ - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-election-provider-support 38.0.0", "frame-support 38.2.0", "frame-system 38.0.0", @@ -11087,24 +12111,60 @@ dependencies = [ [[package]] name = "pallet-staking" -version = "40.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-election-provider-support 40.1.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-election-provider-support 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", - "pallet-authorship 40.0.0", - "pallet-session 40.0.0", + "pallet-authorship 41.0.0", + "pallet-session 41.0.0", "parity-scale-codec", "rand_chacha 0.3.1", "scale-info", "serde", - "sp-application-crypto 40.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-staking 38.0.0", + "sp-application-crypto 41.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-staking 39.0.0", +] + +[[package]] +name = "pallet-staking-async-ah-client" +version = "0.2.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" +dependencies = [ + "frame-support 41.0.0", + "frame-system 41.0.0", + "log", + "pallet-authorship 41.0.0", + "pallet-session 41.0.0", + "pallet-staking-async-rc-client", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-staking 39.0.0", +] + +[[package]] +name = "pallet-staking-async-rc-client" +version = "0.2.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" +dependencies = [ + "frame-support 41.0.0", + "frame-system 41.0.0", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "scale-info", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-staking 39.0.0", + "staging-xcm 17.0.0", ] [[package]] @@ -11116,7 +12176,7 @@ dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -11126,16 +12186,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b982dbfe9fbc548dc7f9a3078214989ed58cabf521a8313ae1767d6b4b53b9b" dependencies = [ "log", - "sp-arithmetic 26.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-arithmetic 26.1.0", ] [[package]] name = "pallet-staking-reward-fn" -version = "22.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "23.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "log", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-arithmetic 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -11151,12 +12211,12 @@ dependencies = [ [[package]] name = "pallet-staking-runtime-api" -version = "26.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "27.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "parity-scale-codec", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-staking 38.0.0", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-staking 39.0.0", ] [[package]] @@ -11165,7 +12225,7 @@ version = "40.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "138c15b4200b9dc4c3e031def6a865a235cdc76ff91ee96fba19ca1787c9dda6" dependencies = [ - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "log", @@ -11178,18 +12238,18 @@ dependencies = [ [[package]] name = "pallet-state-trie-migration" -version = "44.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "46.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", "parity-scale-codec", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -11199,7 +12259,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1574fe2aed3d52db4a389b77b53d8c9758257b121e3e7bbe24c4904e11681e0e" dependencies = [ "docify", - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "parity-scale-codec", @@ -11210,17 +12270,17 @@ dependencies = [ [[package]] name = "pallet-sudo" -version = "40.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "docify", - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "parity-scale-codec", "scale-info", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -11230,7 +12290,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9ba9b71bbfd33ae672f23ba7efaeed2755fdac37b8f946cb7474fc37841b7e1" dependencies = [ "docify", - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "log", @@ -11245,39 +12305,53 @@ dependencies = [ [[package]] name = "pallet-timestamp" -version = "39.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "40.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "docify", - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", "parity-scale-codec", "scale-info", - "sp-inherents 36.0.0", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-timestamp 36.0.0", + "sp-inherents 37.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-timestamp 37.0.0", ] [[package]] name = "pallet-tips" -version = "39.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "40.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", - "pallet-treasury 39.0.0", + "pallet-treasury 40.0.0", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", +] + +[[package]] +name = "pallet-transaction-payment" +version = "28.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "frame-benchmarking 28.0.0", + "frame-support 28.0.0", + "frame-system 28.0.0", "parity-scale-codec", "scale-info", "serde", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-io 30.0.0", + "sp-runtime 31.0.1", ] [[package]] @@ -11298,34 +12372,33 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" -version = "40.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "parity-scale-codec", "scale-info", "serde", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "pallet-transaction-payment-rpc" -version = "43.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "44.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "jsonrpsee", - "pallet-transaction-payment-rpc-runtime-api 40.0.0", + "pallet-transaction-payment-rpc-runtime-api 41.0.0", "parity-scale-codec", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-blockchain", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-rpc", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-weights 31.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-weights 32.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -11338,19 +12411,19 @@ dependencies = [ "parity-scale-codec", "sp-api 34.0.0", "sp-runtime 39.0.5", - "sp-weights 31.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-weights 31.1.0", ] [[package]] name = "pallet-transaction-payment-rpc-runtime-api" -version = "40.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "pallet-transaction-payment 40.0.0", + "pallet-transaction-payment 41.0.0", "parity-scale-codec", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-weights 31.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-weights 32.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -11360,7 +12433,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98bfdd3bb9b58fb010bcd419ff5bf940817a8e404cdbf7886a53ac730f5dda2b" dependencies = [ "docify", - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "impl-trait-for-tuples", @@ -11374,21 +12447,21 @@ dependencies = [ [[package]] name = "pallet-treasury" -version = "39.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "40.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "docify", - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "impl-trait-for-tuples", "log", - "pallet-balances 41.1.0", + "pallet-balances 42.0.0", "parity-scale-codec", "scale-info", "serde", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -11397,7 +12470,7 @@ version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2b13cdaedf2d5bd913a5f6e637cb52b5973d8ed4b8d45e56d921bc4d627006f" dependencies = [ - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "log", @@ -11408,16 +12481,16 @@ dependencies = [ [[package]] name = "pallet-uniques" -version = "40.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", "parity-scale-codec", "scale-info", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -11426,7 +12499,7 @@ version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2fdcade6efc0b66fc7fc4138964802c02d0ffb7380d894e26b9dd5073727d2b3" dependencies = [ - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "parity-scale-codec", @@ -11438,33 +12511,32 @@ dependencies = [ [[package]] name = "pallet-utility" -version = "40.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "parity-scale-codec", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "pallet-verify-signature" -version = "0.3.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.4.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "parity-scale-codec", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-weights 31.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-weights 32.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -11473,7 +12545,7 @@ version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "807df2ef13ab6bf940879352c3013bfa00b670458b4c125c2f60e5753f68e3d5" dependencies = [ - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "log", @@ -11484,16 +12556,16 @@ dependencies = [ [[package]] name = "pallet-vesting" -version = "40.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", "parity-scale-codec", "scale-info", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -11502,7 +12574,7 @@ version = "37.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ef17df925290865cf37096dd0cb76f787df11805bba01b1d0ca3e106d06280b" dependencies = [ - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "parity-scale-codec", @@ -11513,8 +12585,8 @@ dependencies = [ [[package]] name = "pallet-whitelist" -version = "39.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "40.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "parity-scale-codec", "polkadot-sdk-frame", @@ -11523,14 +12595,15 @@ dependencies = [ [[package]] name = "pallet-xcm" -version = "17.0.2" +version = "17.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff8893d5736d085729ed6d698a727a1511dd2b787b48ad0dc2d86136f142cc3e" +checksum = "61524963a57ecc77adcdd6d4c56a962ffa4aed745d05d51d1110651589b2306e" dependencies = [ - "bounded-collections", - "frame-benchmarking 38.0.0", + "bounded-collections 0.2.4", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", + "hex-literal 0.4.1", "log", "pallet-balances 39.0.1", "parity-scale-codec", @@ -11541,32 +12614,35 @@ dependencies = [ "sp-runtime 39.0.5", "staging-xcm 14.2.2", "staging-xcm-builder 17.0.5", - "staging-xcm-executor 17.0.2", + "staging-xcm-executor 17.0.3", "tracing", "xcm-runtime-apis 0.4.3", ] [[package]] name = "pallet-xcm" -version = "19.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "20.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "bounded-collections", - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", - "pallet-balances 41.1.0", + "bounded-collections 0.2.4", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", + "hex-literal 0.4.1", + "pallet-balances 42.0.0", + "pallet-revive 0.7.0", + "pallet-timestamp 40.0.0", "parity-scale-codec", "scale-info", "serde", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", - "staging-xcm-builder 20.1.0", - "staging-xcm-executor 19.1.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", + "staging-xcm-builder 21.0.0", + "staging-xcm-executor 20.0.0", "tracing", - "xcm-runtime-apis 0.7.0", + "xcm-runtime-apis 0.8.0", ] [[package]] @@ -11575,7 +12651,7 @@ version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05bfc67610a37d0bd98487b82edfbf9629d3a9699b52d5758e9d64cf78b3b7ae" dependencies = [ - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "parity-scale-codec", @@ -11584,46 +12660,46 @@ dependencies = [ "sp-runtime 39.0.5", "staging-xcm 14.2.2", "staging-xcm-builder 17.0.5", - "staging-xcm-executor 17.0.2", + "staging-xcm-executor 17.0.3", ] [[package]] name = "pallet-xcm-benchmarks" -version = "20.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "21.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "parity-scale-codec", "scale-info", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", - "staging-xcm-builder 20.1.0", - "staging-xcm-executor 19.1.0", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", + "staging-xcm-builder 21.0.0", + "staging-xcm-executor 20.0.0", ] [[package]] name = "pallet-xcm-bridge-hub" -version = "0.16.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.17.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "bp-messages 0.20.1", - "bp-runtime 0.20.1", + "bp-messages 0.21.0", + "bp-runtime 0.21.0", "bp-xcm-bridge-hub", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", "pallet-bridge-messages", "parity-scale-codec", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", - "staging-xcm-builder 20.1.0", - "staging-xcm-executor 19.1.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", + "staging-xcm-builder 21.0.0", + "staging-xcm-executor 20.0.0", ] [[package]] @@ -11633,7 +12709,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fabf1fdcf451ac79995f11cb9b6a0761924c57bb79442c2d91b3bbefe4dfa081" dependencies = [ "bp-xcm-bridge-hub-router 0.14.1", - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "log", @@ -11648,21 +12724,22 @@ dependencies = [ [[package]] name = "pallet-xcm-bridge-hub-router" -version = "0.18.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.19.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "bp-xcm-bridge-hub-router 0.17.0", - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "bp-xcm-bridge-hub-router 0.18.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", "parity-scale-codec", + "polkadot-runtime-parachains 20.0.1", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", - "staging-xcm-builder 20.1.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", + "staging-xcm-builder 21.0.0", ] [[package]] @@ -11682,7 +12759,7 @@ dependencies = [ "pallet-balances 39.0.1", "pallet-collator-selection 19.0.0", "pallet-message-queue 41.0.2", - "pallet-xcm 17.0.2", + "pallet-xcm 17.0.4", "parity-scale-codec", "polkadot-primitives 16.0.0", "scale-info", @@ -11692,68 +12769,68 @@ dependencies = [ "sp-runtime 39.0.5", "staging-parachain-info 0.17.0", "staging-xcm 14.2.2", - "staging-xcm-executor 17.0.2", + "staging-xcm-executor 17.0.3", "substrate-wasm-builder 24.0.2", ] [[package]] name = "parachains-common" -version = "21.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "22.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "cumulus-primitives-core 0.18.1", - "cumulus-primitives-utility 0.20.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "cumulus-primitives-core 0.19.0", + "cumulus-primitives-utility 0.21.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", - "pallet-asset-tx-payment 40.0.0", - "pallet-assets 42.0.0", - "pallet-authorship 40.0.0", - "pallet-balances 41.1.0", - "pallet-collator-selection 21.0.0", - "pallet-message-queue 43.1.0", - "pallet-xcm 19.1.0", + "pallet-asset-tx-payment 41.0.0", + "pallet-assets 43.0.0", + "pallet-authorship 41.0.0", + "pallet-balances 42.0.0", + "pallet-collator-selection 22.0.0", + "pallet-message-queue 44.0.0", + "pallet-xcm 20.1.0", "parity-scale-codec", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "scale-info", - "sp-consensus-aura 0.42.0", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-parachain-info 0.20.0", - "staging-xcm 16.1.0", - "staging-xcm-executor 19.1.0", + "sp-consensus-aura 0.43.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-parachain-info 0.21.0", + "staging-xcm 17.0.0", + "staging-xcm-executor 20.0.0", ] [[package]] name = "parachains-runtimes-test-utils" -version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "23.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "cumulus-pallet-parachain-system 0.20.0", - "cumulus-pallet-xcmp-queue 0.20.0", - "cumulus-primitives-core 0.18.1", - "cumulus-primitives-parachain-inherent 0.18.1", + "cumulus-pallet-parachain-system 0.21.0", + "cumulus-pallet-xcmp-queue 0.21.0", + "cumulus-primitives-core 0.19.0", + "cumulus-primitives-parachain-inherent 0.19.0", "cumulus-test-relay-sproof-builder", - "frame-support 40.1.0", - "frame-system 40.1.0", - "pallet-balances 41.1.0", - "pallet-collator-selection 21.0.0", - "pallet-session 40.0.0", - "pallet-timestamp 39.0.0", - "pallet-xcm 19.1.0", - "parachains-common 21.0.0", - "parity-scale-codec", - "polkadot-parachain-primitives 16.1.0", - "sp-consensus-aura 0.42.0", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-tracing 17.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-parachain-info 0.20.0", - "staging-xcm 16.1.0", - "staging-xcm-executor 19.1.0", - "xcm-runtime-apis 0.7.0", + "frame-support 41.0.0", + "frame-system 41.0.0", + "pallet-balances 42.0.0", + "pallet-collator-selection 22.0.0", + "pallet-session 41.0.0", + "pallet-timestamp 40.0.0", + "pallet-xcm 20.1.0", + "parachains-common 22.0.0", + "parity-scale-codec", + "polkadot-parachain-primitives 17.0.0", + "sp-consensus-aura 0.43.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-tracing 17.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-parachain-info 0.21.0", + "staging-xcm 17.0.0", + "staging-xcm-executor 20.0.0", + "xcm-runtime-apis 0.8.0", ] [[package]] @@ -11789,7 +12866,7 @@ dependencies = [ "log", "lz4", "memmap2 0.5.10", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "rand 0.8.5", "siphasher 0.3.11", "snap", @@ -11822,7 +12899,7 @@ dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -11837,7 +12914,7 @@ dependencies = [ "impl-trait-for-tuples", "lru 0.8.1", "parity-util-mem-derive", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "primitive-types 0.12.2", "smallvec", "winapi", @@ -11879,12 +12956,12 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" dependencies = [ "lock_api", - "parking_lot_core 0.9.10", + "parking_lot_core 0.9.11", ] [[package]] @@ -11903,13 +12980,13 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.10" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.12", + "redox_syscall 0.5.17", "smallvec", "windows-targets 0.52.6", ] @@ -11926,16 +13003,16 @@ version = "1.4.3" source = "git+https://github.com/paseo-network/runtimes?tag=v1.4.3#3de47024fc96ff77392684761f21245db80680c0" dependencies = [ "binary-merkle-tree 15.0.1", - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-election-provider-support 38.0.0", - "frame-executive 38.0.0", + "frame-executive 38.0.1", "frame-metadata-hash-extension 0.6.0", "frame-support 38.2.0", "frame-system 38.0.0", "frame-system-benchmarking 38.0.0", "frame-system-rpc-runtime-api 34.0.0", "frame-try-runtime 0.44.0", - "hex-literal", + "hex-literal 0.4.1", "log", "pallet-asset-rate 17.0.0", "pallet-authority-discovery 38.0.0", @@ -11967,12 +13044,12 @@ dependencies = [ "pallet-preimage 38.0.0", "pallet-proxy 38.0.0", "pallet-referenda 38.0.0", - "pallet-scheduler 39.0.0", + "pallet-scheduler 39.1.0", "pallet-session 38.0.0", "pallet-session-benchmarking 38.0.0", "pallet-staking 38.0.1", "pallet-staking-reward-curve", - "pallet-staking-reward-fn 22.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "pallet-staking-reward-fn 22.0.1", "pallet-staking-runtime-api 24.0.0", "pallet-state-trie-migration 40.0.0", "pallet-sudo 38.0.0", @@ -11983,7 +13060,7 @@ dependencies = [ "pallet-utility 38.0.0", "pallet-vesting 38.0.0", "pallet-whitelist 37.0.0", - "pallet-xcm 17.0.2", + "pallet-xcm 17.0.4", "pallet-xcm-benchmarks 17.0.1", "parity-scale-codec", "paseo-runtime-constants", @@ -11996,7 +13073,7 @@ dependencies = [ "serde_json", "sp-api 34.0.0", "sp-application-crypto 38.0.0", - "sp-arithmetic 26.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-arithmetic 26.1.0", "sp-authority-discovery 34.0.0", "sp-block-builder 34.0.0", "sp-consensus-babe 0.40.0", @@ -12017,7 +13094,7 @@ dependencies = [ "sp-version 37.0.0", "staging-xcm 14.2.2", "staging-xcm-builder 17.0.5", - "staging-xcm-executor 17.0.2", + "staging-xcm-executor 17.0.3", "substrate-wasm-builder 24.0.2", "xcm-runtime-apis 0.4.3", ] @@ -12037,7 +13114,7 @@ dependencies = [ "sp-core 34.0.0", "sp-runtime 39.0.5", "sp-trie 37.0.0", - "sp-weights 31.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-weights 31.1.0", "staging-xcm-builder 17.0.5", ] @@ -12093,20 +13170,20 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.8.0" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "198db74531d58c70a361c42201efde7e2591e976d518caf7662a47dc5720e7b6" +checksum = "1db05f56d34358a8b1066f67cbb203ee3e7ed2ba674a6263a1d5ec6db2204323" dependencies = [ "memchr", - "thiserror 2.0.12", + "thiserror 2.0.14", "ucd-trie", ] [[package]] name = "pest_derive" -version = "2.8.0" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d725d9cfd79e87dccc9341a2ef39d1b6f6353d68c4b33c177febbe1a402c97c5" +checksum = "bb056d9e8ea77922845ec74a1c4e8fb17e7c218cc4fc11a15c5d25e189aa40bc" dependencies = [ "pest", "pest_generator", @@ -12114,24 +13191,23 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.0" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db7d01726be8ab66ab32f9df467ae8b1148906685bbe75c82d1e65d7f5b3f841" +checksum = "87e404e638f781eb3202dc82db6760c8ae8a1eeef7fb3fa8264b2ef280504966" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "pest_meta" -version = "2.8.0" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f9f832470494906d1fca5329f8ab5791cc60beb230c74815dff541cbd2b5ca0" +checksum = "edd1101f170f5903fde0914f899bb503d9ff5271d7ba76bbb70bea63690cc0d5" dependencies = [ - "once_cell", "pest", "sha2 0.10.9", ] @@ -12143,7 +13219,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset 0.4.2", - "indexmap 2.9.0", + "indexmap 2.10.0", ] [[package]] @@ -12153,7 +13229,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" dependencies = [ "fixedbitset 0.5.7", - "indexmap 2.9.0", + "indexmap 2.10.0", ] [[package]] @@ -12173,7 +13249,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -12217,8 +13293,8 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "polkadot-approval-distribution" -version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "futures", "futures-timer", @@ -12228,30 +13304,30 @@ dependencies = [ "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-node-subsystem-util", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "rand 0.8.5", "tracing-gum", ] [[package]] name = "polkadot-availability-bitfield-distribution" -version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "futures", "futures-timer", "polkadot-node-network-protocol", "polkadot-node-subsystem", "polkadot-node-subsystem-util", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "rand 0.8.5", "tracing-gum", ] [[package]] name = "polkadot-availability-distribution" -version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "fatality", "futures", @@ -12261,20 +13337,20 @@ dependencies = [ "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-node-subsystem-util", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "rand 0.8.5", "sc-network", "schnellru", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keystore 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", "tracing-gum", ] [[package]] name = "polkadot-availability-recovery" -version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "async-trait", "fatality", @@ -12285,7 +13361,7 @@ dependencies = [ "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-node-subsystem-util", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "rand 0.8.5", "sc-network", "schnellru", @@ -12316,8 +13392,8 @@ dependencies = [ [[package]] name = "polkadot-cli" -version = "23.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "25.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "clap", "frame-benchmarking-cli", @@ -12331,17 +13407,17 @@ dependencies = [ "sc-storage-monitor", "sc-sysinfo", "sc-tracing", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keyring 41.0.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "substrate-build-script-utils 11.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keyring 42.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "substrate-build-script-utils 11.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", ] [[package]] name = "polkadot-collator-protocol" -version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "bitvec", "fatality", @@ -12351,11 +13427,11 @@ dependencies = [ "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-node-subsystem-util", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "schnellru", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keystore 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", "tokio-util", "tracing-gum", @@ -12375,76 +13451,76 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" -version = "17.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "18.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "parity-scale-codec", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "polkadot-dispute-distribution" -version = "22.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "fatality", "futures", "futures-timer", - "indexmap 2.9.0", + "indexmap 2.10.0", "parity-scale-codec", "polkadot-node-network-protocol", "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-node-subsystem-util", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "sc-network", - "sp-application-crypto 40.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-application-crypto 41.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keystore 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", "tracing-gum", ] [[package]] name = "polkadot-erasure-coding" -version = "19.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "20.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "reed-solomon-novelpoly", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-trie 39.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-trie 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", ] [[package]] name = "polkadot-gossip-support" -version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "24.0.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "futures", "futures-timer", "polkadot-node-network-protocol", "polkadot-node-subsystem", "polkadot-node-subsystem-util", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "rand 0.8.5", "rand_chacha 0.3.1", "sc-network", - "sp-application-crypto 40.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-application-crypto 41.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keystore 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "tracing-gum", ] [[package]] name = "polkadot-network-bridge" -version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "always-assert", "async-trait", @@ -12452,12 +13528,12 @@ dependencies = [ "fatality", "futures", "parity-scale-codec", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "polkadot-node-metrics", "polkadot-node-network-protocol", "polkadot-node-subsystem", "polkadot-overseer", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "sc-network", "sp-consensus", "thiserror 1.0.69", @@ -12466,8 +13542,8 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" -version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "futures", "parity-scale-codec", @@ -12475,17 +13551,17 @@ dependencies = [ "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-node-subsystem-util", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "schnellru", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", "tracing-gum", ] [[package]] name = "polkadot-node-core-approval-voting" -version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "async-trait", "bitvec", @@ -12499,25 +13575,25 @@ dependencies = [ "polkadot-node-subsystem", "polkadot-node-subsystem-util", "polkadot-overseer", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "rand 0.8.5", "rand_chacha 0.3.1", "rand_core 0.6.4", "sc-keystore", "schnellru", - "schnorrkel 0.11.4", - "sp-application-crypto 40.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "schnorrkel 0.11.5", + "sp-application-crypto 41.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-consensus", - "sp-consensus-slots 0.42.1", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-consensus-slots 0.43.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", "tracing-gum", ] [[package]] name = "polkadot-node-core-approval-voting-parallel" -version = "0.5.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.7.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "async-trait", "futures", @@ -12530,7 +13606,7 @@ dependencies = [ "polkadot-node-subsystem", "polkadot-node-subsystem-util", "polkadot-overseer", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "rand 0.8.5", "rand_core 0.6.4", "sc-keystore", @@ -12540,8 +13616,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" -version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "bitvec", "futures", @@ -12551,7 +13627,7 @@ dependencies = [ "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-node-subsystem-util", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "sp-consensus", "thiserror 1.0.69", "tracing-gum", @@ -12559,8 +13635,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" -version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "bitvec", "fatality", @@ -12569,25 +13645,25 @@ dependencies = [ "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-node-subsystem-util", - "polkadot-parachain-primitives 16.1.0", - "polkadot-primitives 18.1.0", + "polkadot-parachain-primitives 17.0.0", + "polkadot-primitives 19.0.0", "polkadot-statement-table", "schnellru", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-keystore 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", "tracing-gum", ] [[package]] name = "polkadot-node-core-bitfield-signing" -version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "futures", "polkadot-node-subsystem", "polkadot-node-subsystem-util", - "polkadot-primitives 18.1.0", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "polkadot-primitives 19.0.0", + "sp-keystore 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", "tracing-gum", "wasm-timer", @@ -12595,8 +13671,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" -version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "async-trait", "futures", @@ -12608,17 +13684,17 @@ dependencies = [ "polkadot-node-subsystem", "polkadot-node-subsystem-util", "polkadot-overseer", - "polkadot-parachain-primitives 16.1.0", - "polkadot-primitives 18.1.0", - "sp-application-crypto 40.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "polkadot-parachain-primitives 17.0.0", + "polkadot-primitives 19.0.0", + "sp-application-crypto 41.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keystore 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "tracing-gum", ] [[package]] name = "polkadot-node-core-chain-api" -version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "futures", "polkadot-node-metrics", @@ -12631,8 +13707,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" -version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "futures", "futures-timer", @@ -12640,15 +13716,15 @@ dependencies = [ "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-node-subsystem-util", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "thiserror 1.0.69", "tracing-gum", ] [[package]] name = "polkadot-node-core-dispute-coordinator" -version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "fatality", "futures", @@ -12656,7 +13732,7 @@ dependencies = [ "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-node-subsystem-util", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "sc-keystore", "schnellru", "thiserror 1.0.69", @@ -12665,39 +13741,39 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" -version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "async-trait", "futures", "futures-timer", "polkadot-node-subsystem", "polkadot-overseer", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "sp-blockchain", - "sp-inherents 36.0.0", + "sp-inherents 37.0.0", "thiserror 1.0.69", "tracing-gum", ] [[package]] name = "polkadot-node-core-prospective-parachains" -version = "21.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "23.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "fatality", "futures", "polkadot-node-subsystem", "polkadot-node-subsystem-util", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "thiserror 1.0.69", "tracing-gum", ] [[package]] name = "polkadot-node-core-provisioner" -version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "bitvec", "fatality", @@ -12706,18 +13782,18 @@ dependencies = [ "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-node-subsystem-util", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "thiserror 1.0.69", "tracing-gum", ] [[package]] name = "polkadot-node-core-pvf" -version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "always-assert", - "array-bytes", + "array-bytes 6.2.3", "futures", "futures-timer", "parity-scale-codec", @@ -12726,12 +13802,12 @@ dependencies = [ "polkadot-node-metrics", "polkadot-node-primitives", "polkadot-node-subsystem", - "polkadot-parachain-primitives 16.1.0", - "polkadot-primitives 18.1.0", + "polkadot-parachain-primitives 17.0.0", + "polkadot-primitives 19.0.0", "rand 0.8.5", "sc-tracing", "slotmap", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "strum 0.26.3", "tempfile", "thiserror 1.0.69", @@ -12741,21 +13817,21 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" -version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "futures", "polkadot-node-subsystem", "polkadot-node-subsystem-util", - "polkadot-primitives 18.1.0", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "polkadot-primitives 19.0.0", + "sp-keystore 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "tracing-gum", ] [[package]] name = "polkadot-node-core-pvf-common" -version = "19.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "20.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "cpu-time", "futures", @@ -12763,57 +13839,57 @@ dependencies = [ "libc", "nix 0.29.0", "parity-scale-codec", - "polkadot-parachain-primitives 16.1.0", - "polkadot-primitives 18.1.0", - "sc-executor 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sc-executor-common 0.38.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sc-executor-wasmtime 0.38.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "polkadot-parachain-primitives 17.0.0", + "polkadot-primitives 19.0.0", + "sc-executor 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sc-executor-common 0.39.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sc-executor-wasmtime 0.39.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "seccompiler", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-tracing 17.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-tracing 17.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", "tracing-gum", ] [[package]] name = "polkadot-node-core-runtime-api" -version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "futures", "polkadot-node-metrics", "polkadot-node-subsystem", "polkadot-node-subsystem-types", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "schnellru", - "sp-consensus-babe 0.42.1", + "sp-consensus-babe 0.43.0", "tracing-gum", ] [[package]] name = "polkadot-node-metrics" -version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "bs58", "futures", "futures-timer", "parity-scale-codec", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "prioritized-metered-channel", "sc-cli", "sc-service", "sc-tracing", - "substrate-prometheus-endpoint", + "substrate-prometheus-endpoint 0.17.2", ] [[package]] name = "polkadot-node-network-protocol" -version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "async-channel 1.9.0", "async-trait", @@ -12824,12 +13900,12 @@ dependencies = [ "hex", "parity-scale-codec", "polkadot-node-primitives", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "rand 0.8.5", "sc-authority-discovery", "sc-network", "sc-network-types", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "strum 0.26.3", "thiserror 1.0.69", "tracing-gum", @@ -12837,32 +13913,32 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" -version = "19.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "20.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "bitvec", "bounded-vec", "futures", "futures-timer", "parity-scale-codec", - "polkadot-parachain-primitives 16.1.0", - "polkadot-primitives 18.1.0", + "polkadot-parachain-primitives 17.0.0", + "polkadot-primitives 19.0.0", "sc-keystore", - "schnorrkel 0.11.4", + "schnorrkel 0.11.5", "serde", - "sp-application-crypto 40.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-consensus-babe 0.42.1", - "sp-consensus-slots 0.42.1", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-maybe-compressed-blob 11.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-application-crypto 41.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-consensus-babe 0.43.0", + "sp-consensus-slots 0.43.0", + "sp-keystore 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-maybe-compressed-blob 11.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", "zstd 0.12.4", ] [[package]] name = "polkadot-node-subsystem" -version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "polkadot-node-subsystem-types", "polkadot-overseer", @@ -12870,8 +13946,8 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" -version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "async-trait", "derive_more 0.99.20", @@ -12880,26 +13956,26 @@ dependencies = [ "orchestra", "polkadot-node-network-protocol", "polkadot-node-primitives", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "polkadot-statement-table", "sc-client-api", "sc-network", "sc-network-types", "sc-transaction-pool-api", "smallvec", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-authority-discovery 36.0.0", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-authority-discovery 37.0.0", "sp-blockchain", - "sp-consensus-babe 0.42.1", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "substrate-prometheus-endpoint", + "sp-consensus-babe 0.43.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "substrate-prometheus-endpoint 0.17.2", "thiserror 1.0.69", ] [[package]] name = "polkadot-node-subsystem-util" -version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "24.0.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "fatality", "futures", @@ -12907,7 +13983,7 @@ dependencies = [ "kvdb", "parity-db", "parity-scale-codec", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "polkadot-erasure-coding", "polkadot-node-metrics", "polkadot-node-network-protocol", @@ -12915,22 +13991,22 @@ dependencies = [ "polkadot-node-subsystem", "polkadot-node-subsystem-types", "polkadot-overseer", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "prioritized-metered-channel", "rand 0.8.5", - "sc-client-api", + "sc-keystore", "schnellru", - "sp-application-crypto 40.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-application-crypto 41.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keystore 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", "tracing-gum", ] [[package]] name = "polkadot-overseer" -version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "async-trait", "futures", @@ -12940,9 +14016,9 @@ dependencies = [ "polkadot-node-network-protocol", "polkadot-node-primitives", "polkadot-node-subsystem-types", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "sc-client-api", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "tikv-jemalloc-ctl", "tracing-gum", ] @@ -12953,7 +14029,7 @@ version = "14.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52b5648a2e8ce1f9a0f8c41c38def670cefd91932cd793468e1a5b0b0b4e4af1" dependencies = [ - "bounded-collections", + "bounded-collections 0.2.4", "derive_more 0.99.20", "parity-scale-codec", "polkadot-core-primitives 15.0.0", @@ -12961,23 +14037,23 @@ dependencies = [ "serde", "sp-core 34.0.0", "sp-runtime 39.0.5", - "sp-weights 31.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-weights 31.1.0", ] [[package]] name = "polkadot-parachain-primitives" -version = "16.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "17.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "bounded-collections", + "bounded-collections 0.2.4", "derive_more 0.99.20", "parity-scale-codec", - "polkadot-core-primitives 17.1.0", + "polkadot-core-primitives 18.0.0", "scale-info", "serde", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-weights 31.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-weights 32.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -12987,7 +14063,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b57bc055fa389372ec5fc0001b99aeffd50f3fd379280ce572d935189bb58dd8" dependencies = [ "bitvec", - "hex-literal", + "hex-literal 0.4.1", "log", "parity-scale-codec", "polkadot-core-primitives 15.0.0", @@ -12996,7 +14072,7 @@ dependencies = [ "serde", "sp-api 34.0.0", "sp-application-crypto 38.0.0", - "sp-arithmetic 26.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-arithmetic 26.1.0", "sp-authority-discovery 34.0.0", "sp-consensus-slots 0.40.1", "sp-core 34.0.0", @@ -13014,7 +14090,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6bb20b75d33212150242d39890d7ededab55f1084160c337f15d0eb8ca8c3ad4" dependencies = [ "bitvec", - "hex-literal", + "hex-literal 0.4.1", "log", "parity-scale-codec", "polkadot-core-primitives 15.0.0", @@ -13023,7 +14099,7 @@ dependencies = [ "serde", "sp-api 34.0.0", "sp-application-crypto 38.0.0", - "sp-arithmetic 26.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-arithmetic 26.1.0", "sp-authority-discovery 34.0.0", "sp-consensus-slots 0.40.1", "sp-core 34.0.0", @@ -13036,41 +14112,42 @@ dependencies = [ [[package]] name = "polkadot-primitives" -version = "18.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "19.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "bitvec", - "hex-literal", + "bounded-collections 0.2.4", + "hex-literal 0.4.1", "log", "parity-scale-codec", - "polkadot-core-primitives 17.1.0", - "polkadot-parachain-primitives 16.1.0", + "polkadot-core-primitives 18.0.0", + "polkadot-parachain-primitives 17.0.0", "scale-info", "serde", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-application-crypto 40.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-authority-discovery 36.0.0", - "sp-consensus-slots 0.42.1", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-inherents 36.0.0", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-staking 38.0.0", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-application-crypto 41.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-arithmetic 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-authority-discovery 37.0.0", + "sp-consensus-slots 0.43.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-inherents 37.0.0", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keystore 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-staking 39.0.0", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", ] [[package]] name = "polkadot-rpc" -version = "23.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "25.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "jsonrpsee", "mmr-rpc", "pallet-transaction-payment-rpc", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "sc-chain-spec", "sc-client-api", "sc-consensus-babe", @@ -13082,15 +14159,15 @@ dependencies = [ "sc-rpc", "sc-sync-state-rpc", "sc-transaction-pool-api", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-application-crypto 40.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-block-builder 36.0.0", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-application-crypto 41.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-block-builder 37.0.0", "sp-blockchain", "sp-consensus", - "sp-consensus-babe 0.42.1", - "sp-consensus-beefy 24.1.0", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-consensus-babe 0.43.0", + "sp-consensus-beefy 25.0.0", + "sp-keystore 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "substrate-frame-rpc-system", "substrate-state-trie-migration-rpc", ] @@ -13102,7 +14179,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1aaafdb12ef0cc23912bd71cdd636f62831be0c359d55d310bb30b72e72ac7ee" dependencies = [ "bitvec", - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-election-provider-support 38.0.0", "frame-support 38.2.0", "frame-system 38.0.0", @@ -13119,7 +14196,7 @@ dependencies = [ "pallet-identity 38.0.0", "pallet-session 38.0.0", "pallet-staking 38.0.1", - "pallet-staking-reward-fn 22.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "pallet-staking-reward-fn 22.0.1", "pallet-timestamp 37.0.0", "pallet-transaction-payment 38.0.2", "pallet-treasury 37.0.0", @@ -13142,57 +14219,57 @@ dependencies = [ "sp-staking 36.0.0", "staging-xcm 14.2.2", "staging-xcm-builder 17.0.5", - "staging-xcm-executor 17.0.2", + "staging-xcm-executor 17.0.3", "static_assertions", ] [[package]] name = "polkadot-runtime-common" -version = "19.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "20.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "bitvec", - "frame-benchmarking 40.0.0", - "frame-election-provider-support 40.1.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-election-provider-support 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "impl-trait-for-tuples", "libsecp256k1", "log", - "pallet-asset-rate 19.0.0", - "pallet-authorship 40.0.0", - "pallet-babe 40.0.0", - "pallet-balances 41.1.0", - "pallet-broker 0.19.1", - "pallet-election-provider-multi-phase 39.1.0", - "pallet-fast-unstake 39.0.0", - "pallet-identity 40.1.0", - "pallet-session 40.0.0", - "pallet-staking 40.1.0", - "pallet-staking-reward-fn 22.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "pallet-timestamp 39.0.0", - "pallet-transaction-payment 40.0.0", - "pallet-treasury 39.0.0", - "pallet-vesting 40.1.0", - "parity-scale-codec", - "polkadot-primitives 18.1.0", - "polkadot-runtime-parachains 19.1.0", + "pallet-asset-rate 20.0.0", + "pallet-authorship 41.0.0", + "pallet-babe 41.0.0", + "pallet-balances 42.0.0", + "pallet-broker 0.20.0", + "pallet-election-provider-multi-phase 40.0.0", + "pallet-fast-unstake 40.0.0", + "pallet-identity 41.0.0", + "pallet-session 41.0.0", + "pallet-staking 41.0.0", + "pallet-staking-reward-fn 23.0.0", + "pallet-timestamp 40.0.0", + "pallet-transaction-payment 41.0.0", + "pallet-treasury 40.0.0", + "pallet-vesting 41.0.0", + "parity-scale-codec", + "polkadot-primitives 19.0.0", + "polkadot-runtime-parachains 20.0.1", "rustc-hex", "scale-info", "serde", - "slot-range-helper 17.0.0", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-inherents 36.0.0", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keyring 41.0.0", - "sp-npos-elections 36.1.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-session 38.1.0", - "sp-staking 38.0.0", - "staging-xcm 16.1.0", - "staging-xcm-builder 20.1.0", - "staging-xcm-executor 19.1.0", + "slot-range-helper 18.0.0", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-inherents 37.0.0", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keyring 42.0.0", + "sp-npos-elections 37.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-session 39.0.0", + "sp-staking 39.0.0", + "staging-xcm 17.0.0", + "staging-xcm-builder 21.0.0", + "staging-xcm-executor 20.0.0", "static_assertions", ] @@ -13211,7 +14288,7 @@ dependencies = [ "sp-core 34.0.0", "sp-runtime 39.0.5", "sp-trie 37.0.0", - "sp-weights 31.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-weights 31.1.0", "staging-xcm-builder 17.0.5", ] @@ -13222,7 +14299,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c306f1ace7644a24de860479f92cf8d6467393bb0c9b0777c57e2d42c9d452a" dependencies = [ "bs58", - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "parity-scale-codec", "polkadot-primitives 16.0.0", "sp-tracing 17.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -13230,14 +14307,14 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" -version = "20.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "21.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "bs58", - "frame-benchmarking 40.0.0", + "frame-benchmarking 41.0.0", "parity-scale-codec", - "polkadot-primitives 18.1.0", - "sp-tracing 17.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "polkadot-primitives 19.0.0", + "sp-tracing 17.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -13249,7 +14326,7 @@ dependencies = [ "bitflags 1.3.2", "bitvec", "derive_more 0.99.20", - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "frame-system 38.0.0", "impl-trait-for-tuples", @@ -13276,7 +14353,7 @@ dependencies = [ "serde", "sp-api 34.0.0", "sp-application-crypto 38.0.0", - "sp-arithmetic 26.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-arithmetic 26.1.0", "sp-core 34.0.0", "sp-inherents 34.0.0", "sp-io 38.0.2", @@ -13286,128 +14363,120 @@ dependencies = [ "sp-staking 36.0.0", "sp-std 14.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "staging-xcm 14.2.2", - "staging-xcm-executor 17.0.2", + "staging-xcm-executor 17.0.3", "static_assertions", ] [[package]] name = "polkadot-runtime-parachains" -version = "19.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "20.0.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "bitflags 1.3.2", "bitvec", - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-election-provider-support 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "impl-trait-for-tuples", "log", - "pallet-authority-discovery 40.0.0", - "pallet-authorship 40.0.0", - "pallet-babe 40.0.0", - "pallet-balances 41.1.0", - "pallet-broker 0.19.1", - "pallet-message-queue 43.1.0", - "pallet-mmr 40.0.0", - "pallet-session 40.0.0", - "pallet-staking 40.1.0", - "pallet-timestamp 39.0.0", - "parity-scale-codec", - "polkadot-core-primitives 17.1.0", - "polkadot-parachain-primitives 16.1.0", - "polkadot-primitives 18.1.0", - "polkadot-runtime-metrics 20.0.0", + "pallet-authority-discovery 41.0.0", + "pallet-authorship 41.0.0", + "pallet-babe 41.0.0", + "pallet-balances 42.0.0", + "pallet-broker 0.20.0", + "pallet-message-queue 44.0.0", + "pallet-mmr 41.0.0", + "pallet-session 41.0.0", + "pallet-staking 41.0.0", + "pallet-timestamp 40.0.0", + "parity-scale-codec", + "polkadot-core-primitives 18.0.0", + "polkadot-parachain-primitives 17.0.0", + "polkadot-primitives 19.0.0", + "polkadot-runtime-metrics 21.0.0", "rand 0.8.5", "rand_chacha 0.3.1", "scale-info", "serde", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-application-crypto 40.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-inherents 36.0.0", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-session 38.1.0", - "sp-staking 38.0.0", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", - "staging-xcm-executor 19.1.0", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-application-crypto 41.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-arithmetic 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-inherents 37.0.0", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keystore 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-session 39.0.0", + "sp-staking 39.0.0", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", + "staging-xcm-executor 20.0.0", "static_assertions", ] -[[package]] -name = "polkadot-sdk" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb819108697967452fa6d8d96ab4c0d48cbaa423b3156499dcb24f1cf95d6775" -dependencies = [ - "sp-crypto-hashing 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "polkadot-sdk-frame" -version = "0.9.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.10.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "docify", - "frame-benchmarking 40.0.0", - "frame-executive 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", - "frame-system-benchmarking 40.0.0", - "frame-system-rpc-runtime-api 36.0.0", - "frame-try-runtime 0.46.0", + "frame-benchmarking 41.0.0", + "frame-executive 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", + "frame-system-benchmarking 41.0.0", + "frame-system-rpc-runtime-api 37.0.0", + "frame-try-runtime 0.47.0", "log", "parity-scale-codec", "scale-info", "serde", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-block-builder 36.0.0", - "sp-consensus-aura 0.42.0", - "sp-consensus-grandpa 23.1.0", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-genesis-builder 0.17.0", - "sp-inherents 36.0.0", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keyring 41.0.0", - "sp-offchain 36.0.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-session 38.1.0", - "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-transaction-pool 36.0.0", - "sp-version 39.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-arithmetic 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-block-builder 37.0.0", + "sp-consensus-aura 0.43.0", + "sp-consensus-grandpa 24.0.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-genesis-builder 0.18.0", + "sp-inherents 37.0.0", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keyring 42.0.0", + "sp-offchain 37.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-session 39.0.0", + "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-transaction-pool 37.0.0", + "sp-version 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "polkadot-service" -version = "23.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "25.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "async-trait", - "frame-benchmarking 40.0.0", + "frame-benchmarking 41.0.0", "frame-benchmarking-cli", - "frame-system 40.1.0", - "frame-system-rpc-runtime-api 36.0.0", + "frame-system 41.0.0", + "frame-system-rpc-runtime-api 37.0.0", "futures", "is_executable", "kvdb", "kvdb-rocksdb", "log", "mmr-gadget", - "pallet-transaction-payment 40.0.0", - "pallet-transaction-payment-rpc-runtime-api 40.0.0", + "pallet-transaction-payment 41.0.0", + "pallet-transaction-payment-rpc-runtime-api 41.0.0", "parity-db", "parity-scale-codec", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "polkadot-approval-distribution", "polkadot-availability-bitfield-distribution", "polkadot-availability-distribution", "polkadot-availability-recovery", "polkadot-collator-protocol", - "polkadot-core-primitives 17.1.0", + "polkadot-core-primitives 18.0.0", "polkadot-dispute-distribution", "polkadot-gossip-support", "polkadot-network-bridge", @@ -13433,9 +14502,9 @@ dependencies = [ "polkadot-node-subsystem-types", "polkadot-node-subsystem-util", "polkadot-overseer", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "polkadot-rpc", - "polkadot-runtime-parachains 19.1.0", + "polkadot-runtime-parachains 20.0.1", "polkadot-statement-distribution", "rococo-runtime", "sc-authority-discovery", @@ -13447,7 +14516,7 @@ dependencies = [ "sc-consensus-beefy", "sc-consensus-grandpa", "sc-consensus-slots", - "sc-executor 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sc-executor 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sc-keystore", "sc-network", "sc-network-sync", @@ -13460,101 +14529,102 @@ dependencies = [ "sc-transaction-pool-api", "serde", "serde_json", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-authority-discovery 36.0.0", - "sp-block-builder 36.0.0", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-authority-discovery 37.0.0", + "sp-block-builder 37.0.0", "sp-blockchain", "sp-consensus", - "sp-consensus-babe 0.42.1", - "sp-consensus-beefy 24.1.0", - "sp-consensus-grandpa 23.1.0", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-genesis-builder 0.17.0", - "sp-inherents 36.0.0", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keyring 41.0.0", - "sp-mmr-primitives 36.1.0", - "sp-offchain 36.0.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-session 38.1.0", - "sp-timestamp 36.0.0", - "sp-transaction-pool 36.0.0", - "sp-version 39.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-weights 31.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", - "substrate-prometheus-endpoint", + "sp-consensus-babe 0.43.0", + "sp-consensus-beefy 25.0.0", + "sp-consensus-grandpa 24.0.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-genesis-builder 0.18.0", + "sp-inherents 37.0.0", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keyring 42.0.0", + "sp-mmr-primitives 37.0.0", + "sp-offchain 37.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-session 39.0.0", + "sp-timestamp 37.0.0", + "sp-transaction-pool 37.0.0", + "sp-version 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-weights 32.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", + "substrate-prometheus-endpoint 0.17.2", "thiserror 1.0.69", "tracing-gum", "westend-runtime", - "xcm-runtime-apis 0.7.0", + "xcm-runtime-apis 0.8.0", ] [[package]] name = "polkadot-statement-distribution" -version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "arrayvec 0.7.6", "bitvec", "fatality", "futures", "futures-timer", - "indexmap 2.9.0", "parity-scale-codec", "polkadot-node-network-protocol", "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-node-subsystem-util", - "polkadot-primitives 18.1.0", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-staking 38.0.0", + "polkadot-primitives 19.0.0", + "sp-keystore 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", "tracing-gum", ] [[package]] name = "polkadot-statement-table" -version = "19.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "20.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "parity-scale-codec", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "tracing-gum", ] [[package]] name = "polkavm" -version = "0.18.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd044ab1d3b11567ab6b98ca71259a992b4034220d5972988a0e96518e5d343d" +checksum = "cfd34e2f74206fff33482ae1718e275f11365ef8c4de7f0e69217f8845303867" dependencies = [ "libc", "log", - "polkavm-assembler 0.18.0", - "polkavm-common 0.18.0", - "polkavm-linux-raw 0.18.0", + "polkavm-assembler 0.21.0", + "polkavm-common 0.21.0", + "polkavm-linux-raw 0.21.0", ] [[package]] name = "polkavm" -version = "0.21.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfd34e2f74206fff33482ae1718e275f11365ef8c4de7f0e69217f8845303867" +checksum = "f2a01db119bb3a86572c0641ba6e7c9786fbd2ac89c25b43b688c4e353787526" dependencies = [ "libc", "log", - "polkavm-assembler 0.21.0", - "polkavm-common 0.21.0", - "polkavm-linux-raw 0.21.0", + "polkavm-assembler 0.24.0", + "polkavm-common 0.24.0", + "polkavm-linux-raw 0.24.0", ] [[package]] -name = "polkavm-assembler" -version = "0.18.0" +name = "polkavm" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaad38dc420bfed79e6f731471c973ce5ff5e47ab403e63cf40358fef8a6368f" +checksum = "fa028f713d0613f0f08b8b3367402cb859218854f6b96fcbe39a501862894d6f" dependencies = [ + "libc", "log", + "polkavm-assembler 0.26.0", + "polkavm-common 0.26.0", + "polkavm-linux-raw 0.26.0", ] [[package]] @@ -13566,6 +14636,24 @@ dependencies = [ "log", ] +[[package]] +name = "polkavm-assembler" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eea6105f3f344abe0bf0151d67b3de6f5d24353f2393355ecf3f5f6e06d7fd0b" +dependencies = [ + "log", +] + +[[package]] +name = "polkavm-assembler" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4859a29e1f4ad64610c4bc2bfc40bb9a535068a034933a5b56b5e7a0febf105a" +dependencies = [ + "log", +] + [[package]] name = "polkavm-common" version = "0.9.0" @@ -13577,10 +14665,6 @@ name = "polkavm-common" version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "31ff33982a807d8567645d4784b9b5d7ab87bcb494f534a57cadd9012688e102" -dependencies = [ - "log", - "polkavm-assembler 0.18.0", -] [[package]] name = "polkavm-common" @@ -13593,6 +14677,32 @@ dependencies = [ "polkavm-assembler 0.21.0", ] +[[package]] +name = "polkavm-common" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed9e5af472f729fcf3b3c1cf17508ddbb3505259dd6e2ee0fb5a29e105d22" +dependencies = [ + "log", + "polkavm-assembler 0.24.0", +] + +[[package]] +name = "polkavm-common" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49a5794b695626ba70d29e66e3f4f4835767452a6723f3a0bc20884b07088fe8" +dependencies = [ + "blake3", + "log", + "polkavm-assembler 0.26.0", +] + +[[package]] +name = "polkavm-common" +version = "0.27.0" +source = "git+https://github.com/paritytech/polkavm.git#9d1f9bc3e9e332252f01ae87d2e1c34cf5c05556" + [[package]] name = "polkavm-derive" version = "0.9.1" @@ -13620,6 +14730,24 @@ dependencies = [ "polkavm-derive-impl-macro 0.21.0", ] +[[package]] +name = "polkavm-derive" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "176144f8661117ea95fa7cf868c9a62d6b143e8a2ebcb7582464c3faade8669a" +dependencies = [ + "polkavm-derive-impl-macro 0.24.0", +] + +[[package]] +name = "polkavm-derive" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95282a203ae1f6828a04ff334145c3f6dc718bba6d3959805d273358b45eab93" +dependencies = [ + "polkavm-derive-impl-macro 0.26.0", +] + [[package]] name = "polkavm-derive-impl" version = "0.9.0" @@ -13629,7 +14757,7 @@ dependencies = [ "polkavm-common 0.9.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -13641,7 +14769,7 @@ dependencies = [ "polkavm-common 0.18.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -13653,17 +14781,41 @@ dependencies = [ "polkavm-common 0.21.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] -name = "polkavm-derive-impl-macro" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" +name = "polkavm-derive-impl" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5a21844afdfcc10c92b9ef288ccb926211af27478d1730fcd55e4aec710179d" +dependencies = [ + "polkavm-common 0.24.0", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "polkavm-derive-impl" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6069dc7995cde6e612b868a02ce48b54397c6d2582bd1b97b63aabbe962cd779" +dependencies = [ + "polkavm-common 0.26.0", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "polkavm-derive-impl-macro" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ba81f7b5faac81e528eb6158a6f3c9e0bb1008e0ffa19653bc8dea925ecb429" dependencies = [ "polkavm-derive-impl 0.9.0", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -13673,7 +14825,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48c16669ddc7433e34c1007d31080b80901e3e8e523cb9d4b441c3910cf9294b" dependencies = [ "polkavm-derive-impl 0.18.1", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -13683,7 +14835,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "36837f6b7edfd6f4498f8d25d81da16cf03bd6992c3e56f3d477dfc90f4fefca" dependencies = [ "polkavm-derive-impl 0.21.0", - "syn 2.0.101", + "syn 2.0.104", +] + +[[package]] +name = "polkavm-derive-impl-macro" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba0ef0f17ad81413ea1ca5b1b67553aedf5650c88269b673d3ba015c83bc2651" +dependencies = [ + "polkavm-derive-impl 0.24.0", + "syn 2.0.104", +] + +[[package]] +name = "polkavm-derive-impl-macro" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581d34cafec741dc5ffafbb341933c205b6457f3d76257a9d99fb56687219c91" +dependencies = [ + "polkavm-derive-impl 0.26.0", + "syn 2.0.104", ] [[package]] @@ -13703,41 +14875,66 @@ dependencies = [ [[package]] name = "polkavm-linker" -version = "0.18.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9bfe793b094d9ea5c99b7c43ba46e277b0f8f48f4bbfdbabf8d3ebf701a4bd3" +checksum = "23bc764986c4a63f9ab9890c3f4eb9b4c13b6ff80d79685bd48ade147234aab4" dependencies = [ "dirs", "gimli 0.31.1", "hashbrown 0.14.5", "log", "object 0.36.7", - "polkavm-common 0.18.0", + "polkavm-common 0.21.0", "regalloc2 0.9.3", "rustc-demangle", ] [[package]] name = "polkavm-linker" -version = "0.21.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23bc764986c4a63f9ab9890c3f4eb9b4c13b6ff80d79685bd48ade147234aab4" +checksum = "06c95a521a1331024ebe5823ffdfba9ea6df40b934b0804049d5171887579806" dependencies = [ "dirs", "gimli 0.31.1", "hashbrown 0.14.5", "log", "object 0.36.7", - "polkavm-common 0.21.0", + "polkavm-common 0.24.0", "regalloc2 0.9.3", "rustc-demangle", ] [[package]] -name = "polkavm-linux-raw" -version = "0.18.0" +name = "polkavm-linker" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23eff02c070c70f31878a3d915e88a914ecf3e153741e2fb572dde28cce20fde" +checksum = "beb896023e5bd89bba40311797d8d42490fa4a1fd5256c74820753c5722d1e67" +dependencies = [ + "dirs", + "gimli 0.31.1", + "hashbrown 0.14.5", + "log", + "object 0.36.7", + "polkavm-common 0.26.0", + "regalloc2 0.9.3", + "rustc-demangle", +] + +[[package]] +name = "polkavm-linker" +version = "0.27.0" +source = "git+https://github.com/paritytech/polkavm.git#9d1f9bc3e9e332252f01ae87d2e1c34cf5c05556" +dependencies = [ + "dirs", + "gimli 0.31.1", + "hashbrown 0.14.5", + "log", + "object 0.36.7", + "polkavm-common 0.27.0", + "regalloc2 0.9.3", + "rustc-demangle", +] [[package]] name = "polkavm-linux-raw" @@ -13745,6 +14942,18 @@ version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be6cd1d48c5e7814d287a3e12a339386a5dfa2f3ac72f932335f4cf56467f1b3" +[[package]] +name = "polkavm-linux-raw" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec0b13e26ec7234dba213ca17118c70c562809bdce0eefe84f92613d5c8da26" + +[[package]] +name = "polkavm-linux-raw" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28919f542476f4158cc71e6c072b1051f38f4b514253594ac3ad80e3c0211fc8" + [[package]] name = "polling" version = "2.8.0" @@ -13763,17 +14972,16 @@ dependencies = [ [[package]] name = "polling" -version = "3.7.4" +version = "3.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" +checksum = "b5bd19146350fe804f7cb2669c851c03d69da628803dab0d98018142aaa5d829" dependencies = [ "cfg-if", "concurrent-queue", - "hermit-abi 0.4.0", + "hermit-abi 0.5.2", "pin-project-lite", - "rustix 0.38.44", - "tracing", - "windows-sys 0.59.0", + "rustix 1.0.8", + "windows-sys 0.60.2", ] [[package]] @@ -13805,58 +15013,95 @@ version = "0.0.0" dependencies = [ "bitflags 2.9.1", "enumflags2", - "ink", + "ink 5.1.1", + "pop-primitives", + "sp-io 40.0.1", +] + +[[package]] +name = "pop-api" +version = "0.1.0" +dependencies = [ + "base64 0.22.1", + "ink 6.0.0-alpha.1", "pop-primitives", - "sp-io 40.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "pop-api-integration-tests" version = "0.1.0" dependencies = [ - "contract-build", + "contract-build 5.0.3", "env_logger 0.11.8", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "ismp", "log", "pallet-api", - "pallet-assets 42.0.0", - "pallet-balances 41.1.0", + "pallet-assets 43.0.0", + "pallet-balances 42.0.0", "pallet-contracts", "pallet-ismp", "pallet-nfts 34.1.0", - "pallet-xcm 19.1.0", + "pallet-xcm 20.1.0", + "parity-scale-codec", + "pop-api 0.0.0", + "pop-primitives", + "pop-runtime-devnet", + "pop-runtime-testnet", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", + "staging-xcm-executor 20.0.0", +] + +[[package]] +name = "pop-api-vnext-integration-tests" +version = "0.1.0" +dependencies = [ + "contract-build 6.0.0-alpha.1", + "env_logger 0.11.8", + "frame-support 41.0.0", + "frame-system 41.0.0", + "hex", + "ismp", + "log", + "pallet-api-vnext", + "pallet-assets 43.0.0", + "pallet-balances 42.0.0", + "pallet-ismp", + "pallet-revive 0.7.0", + "pallet-xcm 20.1.0", "parity-scale-codec", - "pop-api", + "pop-api 0.1.0", "pop-primitives", "pop-runtime-devnet", "pop-runtime-testnet", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", - "staging-xcm-executor 19.1.0", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", + "staging-xcm-executor 20.0.0", ] [[package]] name = "pop-chain-extension" version = "0.1.0" dependencies = [ - "contract-build", + "contract-build 5.0.3", "env_logger 0.11.8", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "impl-trait-for-tuples", "log", - "pallet-balances 41.1.0", + "pallet-balances 42.0.0", "pallet-contracts", - "pallet-timestamp 39.0.0", + "pallet-timestamp 40.0.0", "parity-scale-codec", "rand 0.8.5", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -13871,12 +15116,12 @@ dependencies = [ "cumulus-client-consensus-common", "cumulus-client-consensus-proposer", "cumulus-client-service", - "cumulus-primitives-aura 0.17.0", - "cumulus-primitives-core 0.18.1", - "cumulus-primitives-parachain-inherent 0.18.1", + "cumulus-primitives-aura 0.18.0", + "cumulus-primitives-core 0.19.0", + "cumulus-primitives-parachain-inherent 0.19.0", "cumulus-relay-chain-interface", "docify", - "frame-benchmarking 40.0.0", + "frame-benchmarking 41.0.0", "frame-benchmarking-cli", "futures", "ismp-parachain", @@ -13886,11 +15131,11 @@ dependencies = [ "log", "pallet-ismp-rpc", "pallet-ismp-runtime-api", - "pallet-multisig 40.1.0", + "pallet-multisig 41.0.0", "pallet-transaction-payment-rpc", "parity-scale-codec", "polkadot-cli", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "pop-runtime-common", "pop-runtime-devnet", "pop-runtime-mainnet", @@ -13900,7 +15145,7 @@ dependencies = [ "sc-cli", "sc-client-api", "sc-consensus", - "sc-executor 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sc-executor 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sc-network", "sc-network-sync", "sc-offchain", @@ -13913,24 +15158,24 @@ dependencies = [ "sc-transaction-pool-api", "serde", "serde_json", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-block-builder 36.0.0", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-block-builder 37.0.0", "sp-blockchain", - "sp-consensus-aura 0.42.0", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-genesis-builder 0.17.0", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keyring 41.0.0", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-offchain 36.0.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-session 38.1.0", - "sp-timestamp 36.0.0", - "sp-transaction-pool 36.0.0", - "staging-xcm 16.1.0", + "sp-consensus-aura 0.43.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-genesis-builder 0.18.0", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keyring 42.0.0", + "sp-keystore 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-offchain 37.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-session 39.0.0", + "sp-timestamp 37.0.0", + "sp-transaction-pool 37.0.0", + "staging-xcm 17.0.0", "substrate-build-script-utils 11.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-frame-rpc-system", - "substrate-prometheus-endpoint", + "substrate-prometheus-endpoint 0.17.2", ] [[package]] @@ -13946,47 +15191,47 @@ dependencies = [ name = "pop-runtime-common" version = "0.0.0" dependencies = [ - "cumulus-pallet-aura-ext 0.20.0", - "cumulus-pallet-parachain-system 0.20.0", + "cumulus-pallet-aura-ext 0.21.0", + "cumulus-pallet-parachain-system 0.21.0", "cumulus-pallet-weight-reclaim", - "cumulus-pallet-xcmp-queue 0.20.0", + "cumulus-pallet-xcmp-queue 0.21.0", "docify", - "frame-support 40.1.0", - "frame-system 40.1.0", - "pallet-assets 42.0.0", - "pallet-aura 39.0.0", - "pallet-authorship 40.0.0", - "pallet-balances 41.1.0", - "pallet-collator-selection 21.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", + "pallet-assets 43.0.0", + "pallet-aura 40.0.0", + "pallet-authorship 41.0.0", + "pallet-balances 42.0.0", + "pallet-collator-selection 22.0.0", "pallet-collective", - "pallet-message-queue 43.1.0", + "pallet-message-queue 44.0.0", "pallet-migrations", "pallet-motion", - "pallet-multisig 40.1.0", - "pallet-nfts 34.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "pallet-preimage 40.0.0", - "pallet-proxy 40.1.0", - "pallet-revive", - "pallet-scheduler 41.0.0", - "pallet-session 40.0.0", - "pallet-sudo 40.0.0", - "pallet-timestamp 39.0.0", - "pallet-transaction-payment 40.0.0", - "pallet-treasury 39.0.0", - "pallet-utility 40.0.0", - "pallet-xcm 19.1.0", - "pallet-xcm-benchmarks 20.0.0", - "parachains-common 21.0.0", - "parity-scale-codec", - "polkadot-parachain-primitives 16.1.0", - "polkadot-primitives 18.1.0", + "pallet-multisig 41.0.0", + "pallet-nfts 35.0.0", + "pallet-preimage 41.0.0", + "pallet-proxy 41.0.0", + "pallet-revive 0.7.0", + "pallet-scheduler 42.0.0", + "pallet-session 41.0.0", + "pallet-sudo 41.0.0", + "pallet-timestamp 40.0.0", + "pallet-transaction-payment 41.0.0", + "pallet-treasury 40.0.0", + "pallet-utility 41.0.0", + "pallet-xcm 20.1.0", + "pallet-xcm-benchmarks 21.0.0", + "parachains-common 22.0.0", + "parity-scale-codec", + "polkadot-parachain-primitives 17.0.0", + "polkadot-primitives 19.0.0", "scale-info", "serde_json", - "sp-keyring 41.0.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", - "staging-xcm-builder 20.1.0", - "staging-xcm-executor 19.1.0", + "sp-keyring 42.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", + "staging-xcm-builder 21.0.0", + "staging-xcm-executor 20.0.0", ] [[package]] @@ -13994,165 +15239,166 @@ name = "pop-runtime-devnet" version = "0.1.0" dependencies = [ "anyhow", - "cumulus-pallet-aura-ext 0.20.0", - "cumulus-pallet-parachain-system 0.20.0", - "cumulus-pallet-session-benchmarking 21.0.0", + "cumulus-pallet-aura-ext 0.21.0", + "cumulus-pallet-parachain-system 0.21.0", + "cumulus-pallet-session-benchmarking 22.0.0", "cumulus-pallet-weight-reclaim", - "cumulus-pallet-xcm 0.19.1", - "cumulus-pallet-xcmp-queue 0.20.0", - "cumulus-primitives-aura 0.17.0", - "cumulus-primitives-core 0.18.1", - "cumulus-primitives-utility 0.20.0", + "cumulus-pallet-xcm 0.20.0", + "cumulus-pallet-xcmp-queue 0.21.0", + "cumulus-primitives-aura 0.18.0", + "cumulus-primitives-core 0.19.0", + "cumulus-primitives-utility 0.21.0", "docify", "enumflags2", "env_logger 0.11.8", - "frame-benchmarking 40.0.0", - "frame-executive 40.0.0", - "frame-metadata-hash-extension 0.8.0", - "frame-support 40.1.0", - "frame-system 40.1.0", - "frame-system-benchmarking 40.0.0", - "frame-system-rpc-runtime-api 36.0.0", - "frame-try-runtime 0.46.0", - "hex", - "hex-literal", + "frame-benchmarking 41.0.0", + "frame-executive 41.0.0", + "frame-metadata-hash-extension 0.9.0", + "frame-support 41.0.0", + "frame-system 41.0.0", + "frame-system-benchmarking 41.0.0", + "frame-system-rpc-runtime-api 37.0.0", + "frame-try-runtime 0.47.0", + "hex-literal 0.4.1", "ismp", "ismp-parachain", "ismp-parachain-runtime-api", "log", "pallet-api", - "pallet-assets 42.0.0", - "pallet-aura 39.0.0", - "pallet-authorship 40.0.0", - "pallet-balances 41.1.0", - "pallet-collator-selection 21.0.0", + "pallet-api-vnext", + "pallet-assets 43.0.0", + "pallet-aura 40.0.0", + "pallet-authorship 41.0.0", + "pallet-balances 42.0.0", + "pallet-collator-selection 22.0.0", "pallet-contracts", "pallet-ismp", "pallet-ismp-runtime-api", - "pallet-message-queue 43.1.0", - "pallet-multisig 40.1.0", + "pallet-message-queue 44.0.0", + "pallet-multisig 41.0.0", "pallet-nft-fractionalization", "pallet-nfts 34.1.0", - "pallet-nfts-runtime-api 26.0.0", - "pallet-preimage 40.0.0", - "pallet-proxy 40.1.0", - "pallet-revive", - "pallet-scheduler 41.0.0", - "pallet-session 40.0.0", - "pallet-sudo 40.0.0", - "pallet-timestamp 39.0.0", - "pallet-transaction-payment 40.0.0", - "pallet-transaction-payment-rpc-runtime-api 40.0.0", - "pallet-utility 40.0.0", - "pallet-xcm 19.1.0", - "parachains-common 21.0.0", - "parity-scale-codec", - "polkadot-parachain-primitives 16.1.0", - "polkadot-runtime-common 19.1.0", + "pallet-nfts-runtime-api 27.0.0", + "pallet-preimage 41.0.0", + "pallet-proxy 41.0.0", + "pallet-revive 0.7.0", + "pallet-scheduler 42.0.0", + "pallet-session 41.0.0", + "pallet-sudo 41.0.0", + "pallet-timestamp 40.0.0", + "pallet-transaction-payment 41.0.0", + "pallet-transaction-payment-rpc-runtime-api 41.0.0", + "pallet-utility 41.0.0", + "pallet-xcm 20.1.0", + "parachains-common 22.0.0", + "parity-scale-codec", + "polkadot-parachain-primitives 17.0.0", + "polkadot-runtime-common 20.0.0", "pop-chain-extension", "pop-primitives", "pop-runtime-common", "scale-info", "smallvec", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-block-builder 36.0.0", - "sp-consensus-aura 0.42.0", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-genesis-builder 0.17.0", - "sp-inherents 36.0.0", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-mmr-primitives 36.1.0", - "sp-offchain 36.0.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-session 38.1.0", - "sp-transaction-pool 36.0.0", - "sp-version 39.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-parachain-info 0.20.0", - "staging-xcm 16.1.0", - "staging-xcm-builder 20.1.0", - "staging-xcm-executor 19.1.0", - "substrate-wasm-builder 26.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "xcm-runtime-apis 0.7.0", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-block-builder 37.0.0", + "sp-consensus-aura 0.43.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-genesis-builder 0.18.0", + "sp-inherents 37.0.0", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keyring 42.0.0", + "sp-mmr-primitives 37.0.0", + "sp-offchain 37.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-session 39.0.0", + "sp-transaction-pool 37.0.0", + "sp-version 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-parachain-info 0.21.0", + "staging-xcm 17.0.0", + "staging-xcm-builder 21.0.0", + "staging-xcm-executor 20.0.0", + "substrate-wasm-builder 27.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "xcm-runtime-apis 0.8.0", ] [[package]] name = "pop-runtime-mainnet" version = "0.1.0" dependencies = [ - "cumulus-pallet-aura-ext 0.20.0", - "cumulus-pallet-parachain-system 0.20.0", - "cumulus-pallet-session-benchmarking 21.0.0", + "cumulus-pallet-aura-ext 0.21.0", + "cumulus-pallet-parachain-system 0.21.0", + "cumulus-pallet-session-benchmarking 22.0.0", "cumulus-pallet-weight-reclaim", - "cumulus-pallet-xcm 0.19.1", - "cumulus-pallet-xcmp-queue 0.20.0", - "cumulus-primitives-aura 0.17.0", - "cumulus-primitives-core 0.18.1", - "cumulus-primitives-utility 0.20.0", + "cumulus-pallet-xcm 0.20.0", + "cumulus-pallet-xcmp-queue 0.21.0", + "cumulus-primitives-aura 0.18.0", + "cumulus-primitives-core 0.19.0", + "cumulus-primitives-utility 0.21.0", "docify", "enumflags2", "env_logger 0.11.8", - "frame-benchmarking 40.0.0", - "frame-executive 40.0.0", - "frame-metadata 20.0.0", - "frame-metadata-hash-extension 0.8.0", - "frame-support 40.1.0", - "frame-system 40.1.0", - "frame-system-benchmarking 40.0.0", - "frame-system-rpc-runtime-api 36.0.0", - "frame-try-runtime 0.46.0", + "frame-benchmarking 41.0.0", + "frame-executive 41.0.0", + "frame-metadata 23.0.0", + "frame-metadata-hash-extension 0.9.0", + "frame-support 41.0.0", + "frame-system 41.0.0", + "frame-system-benchmarking 41.0.0", + "frame-system-rpc-runtime-api 37.0.0", + "frame-try-runtime 0.47.0", "hex", "log", - "pallet-assets 42.0.0", - "pallet-aura 39.0.0", - "pallet-authorship 40.0.0", - "pallet-balances 41.1.0", - "pallet-collator-selection 21.0.0", + "pallet-assets 43.0.0", + "pallet-aura 40.0.0", + "pallet-authorship 41.0.0", + "pallet-balances 42.0.0", + "pallet-collator-selection 22.0.0", "pallet-collective", - "pallet-message-queue 43.1.0", + "pallet-message-queue 44.0.0", "pallet-motion", - "pallet-multisig 40.1.0", - "pallet-nfts 34.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "pallet-nfts-runtime-api 26.0.0", - "pallet-preimage 40.0.0", - "pallet-proxy 40.1.0", - "pallet-revive", - "pallet-scheduler 41.0.0", - "pallet-session 40.0.0", - "pallet-sudo 40.0.0", - "pallet-timestamp 39.0.0", - "pallet-transaction-payment 40.0.0", - "pallet-transaction-payment-rpc-runtime-api 40.0.0", - "pallet-treasury 39.0.0", - "pallet-utility 40.0.0", - "pallet-xcm 19.1.0", - "pallet-xcm-benchmarks 20.0.0", - "parachains-common 21.0.0", - "parity-scale-codec", - "polkadot-parachain-primitives 16.1.0", - "polkadot-runtime-common 19.1.0", - "polkadot-runtime-parachains 19.1.0", + "pallet-multisig 41.0.0", + "pallet-nfts 35.0.0", + "pallet-nfts-runtime-api 27.0.0", + "pallet-preimage 41.0.0", + "pallet-proxy 41.0.0", + "pallet-revive 0.7.0", + "pallet-scheduler 42.0.0", + "pallet-session 41.0.0", + "pallet-sudo 41.0.0", + "pallet-timestamp 40.0.0", + "pallet-transaction-payment 41.0.0", + "pallet-transaction-payment-rpc-runtime-api 41.0.0", + "pallet-treasury 40.0.0", + "pallet-utility 41.0.0", + "pallet-xcm 20.1.0", + "pallet-xcm-benchmarks 21.0.0", + "parachains-common 22.0.0", + "parity-scale-codec", + "polkadot-parachain-primitives 17.0.0", + "polkadot-runtime-common 20.0.0", + "polkadot-runtime-parachains 20.0.1", "pop-runtime-common", "scale-info", "smallvec", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-block-builder 36.0.0", - "sp-consensus-aura 0.42.0", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-genesis-builder 0.17.0", - "sp-inherents 36.0.0", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keyring 41.0.0", - "sp-offchain 36.0.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-session 38.1.0", - "sp-transaction-pool 36.0.0", - "sp-version 39.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-parachain-info 0.20.0", - "staging-xcm 16.1.0", - "staging-xcm-builder 20.1.0", - "staging-xcm-executor 19.1.0", - "substrate-wasm-builder 26.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "xcm-runtime-apis 0.7.0", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-block-builder 37.0.0", + "sp-consensus-aura 0.43.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-genesis-builder 0.18.0", + "sp-inherents 37.0.0", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keyring 42.0.0", + "sp-offchain 37.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-session 39.0.0", + "sp-transaction-pool 37.0.0", + "sp-version 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-parachain-info 0.21.0", + "staging-xcm 17.0.0", + "staging-xcm-builder 21.0.0", + "staging-xcm-executor 20.0.0", + "substrate-wasm-builder 27.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "xcm-runtime-apis 0.8.0", ] [[package]] @@ -14160,97 +15406,97 @@ name = "pop-runtime-testnet" version = "0.5.4" dependencies = [ "anyhow", - "cumulus-pallet-aura-ext 0.20.0", - "cumulus-pallet-parachain-system 0.20.0", - "cumulus-pallet-session-benchmarking 21.0.0", + "cumulus-pallet-aura-ext 0.21.0", + "cumulus-pallet-parachain-system 0.21.0", + "cumulus-pallet-session-benchmarking 22.0.0", "cumulus-pallet-weight-reclaim", - "cumulus-pallet-xcm 0.19.1", - "cumulus-pallet-xcmp-queue 0.20.0", - "cumulus-primitives-aura 0.17.0", - "cumulus-primitives-core 0.18.1", - "cumulus-primitives-utility 0.20.0", + "cumulus-pallet-xcm 0.20.0", + "cumulus-pallet-xcmp-queue 0.21.0", + "cumulus-primitives-aura 0.18.0", + "cumulus-primitives-core 0.19.0", + "cumulus-primitives-utility 0.21.0", "docify", "enumflags2", "env_logger 0.11.8", - "frame-benchmarking 40.0.0", - "frame-executive 40.0.0", - "frame-metadata 20.0.0", - "frame-metadata-hash-extension 0.8.0", - "frame-support 40.1.0", - "frame-system 40.1.0", - "frame-system-benchmarking 40.0.0", - "frame-system-rpc-runtime-api 36.0.0", - "frame-try-runtime 0.46.0", + "frame-benchmarking 41.0.0", + "frame-executive 41.0.0", + "frame-metadata 23.0.0", + "frame-metadata-hash-extension 0.9.0", + "frame-support 41.0.0", + "frame-system 41.0.0", + "frame-system-benchmarking 41.0.0", + "frame-system-rpc-runtime-api 37.0.0", + "frame-try-runtime 0.47.0", "hex", - "hex-literal", + "hex-literal 0.4.1", "ismp", "ismp-parachain", "ismp-parachain-runtime-api", "log", "pallet-api", - "pallet-assets 42.0.0", - "pallet-aura 39.0.0", - "pallet-authorship 40.0.0", - "pallet-balances 41.1.0", - "pallet-collator-selection 21.0.0", + "pallet-assets 43.0.0", + "pallet-aura 40.0.0", + "pallet-authorship 41.0.0", + "pallet-balances 42.0.0", + "pallet-collator-selection 22.0.0", "pallet-collective", "pallet-contracts", "pallet-ismp", "pallet-ismp-runtime-api", - "pallet-message-queue 43.1.0", + "pallet-message-queue 44.0.0", "pallet-migrations", "pallet-motion", - "pallet-multisig 40.1.0", + "pallet-multisig 41.0.0", "pallet-nft-fractionalization", - "pallet-nfts 34.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "pallet-nfts-runtime-api 26.0.0", - "pallet-preimage 40.0.0", - "pallet-proxy 40.1.0", - "pallet-revive", - "pallet-scheduler 41.0.0", - "pallet-session 40.0.0", - "pallet-sudo 40.0.0", - "pallet-timestamp 39.0.0", - "pallet-transaction-payment 40.0.0", - "pallet-transaction-payment-rpc-runtime-api 40.0.0", - "pallet-treasury 39.0.0", - "pallet-utility 40.0.0", - "pallet-xcm 19.1.0", - "parachains-common 21.0.0", - "parity-scale-codec", - "polkadot-parachain-primitives 16.1.0", - "polkadot-runtime-common 19.1.0", + "pallet-nfts 35.0.0", + "pallet-nfts-runtime-api 27.0.0", + "pallet-preimage 41.0.0", + "pallet-proxy 41.0.0", + "pallet-revive 0.7.0", + "pallet-scheduler 42.0.0", + "pallet-session 41.0.0", + "pallet-sudo 41.0.0", + "pallet-timestamp 40.0.0", + "pallet-transaction-payment 41.0.0", + "pallet-transaction-payment-rpc-runtime-api 41.0.0", + "pallet-treasury 40.0.0", + "pallet-utility 41.0.0", + "pallet-xcm 20.1.0", + "parachains-common 22.0.0", + "parity-scale-codec", + "polkadot-parachain-primitives 17.0.0", + "polkadot-runtime-common 20.0.0", "pop-chain-extension", "pop-primitives", "pop-runtime-common", "scale-info", "smallvec", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-block-builder 36.0.0", - "sp-consensus-aura 0.42.0", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-genesis-builder 0.17.0", - "sp-inherents 36.0.0", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-mmr-primitives 36.1.0", - "sp-offchain 36.0.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-session 38.1.0", - "sp-transaction-pool 36.0.0", - "sp-version 39.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-parachain-info 0.20.0", - "staging-xcm 16.1.0", - "staging-xcm-builder 20.1.0", - "staging-xcm-executor 19.1.0", - "substrate-wasm-builder 26.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "xcm-runtime-apis 0.7.0", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-block-builder 37.0.0", + "sp-consensus-aura 0.43.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-genesis-builder 0.18.0", + "sp-inherents 37.0.0", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-mmr-primitives 37.0.0", + "sp-offchain 37.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-session 39.0.0", + "sp-transaction-pool 37.0.0", + "sp-version 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-parachain-info 0.21.0", + "staging-xcm 17.0.0", + "staging-xcm-builder 21.0.0", + "staging-xcm-executor 20.0.0", + "substrate-wasm-builder 27.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "xcm-runtime-apis 0.8.0", ] [[package]] name = "portable-atomic" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" [[package]] name = "portable-atomic-util" @@ -14313,12 +15559,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.32" +version = "0.2.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "664ec5419c51e34154eec046ebcba56312d5a2fc3b09a06da188e1ad21afadf6" +checksum = "ff24dfcda44452b9816fff4cd4227e1bb73ff5a2f1bc1105aa92fb8565ce44d2" dependencies = [ "proc-macro2", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -14429,7 +15675,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -14440,14 +15686,14 @@ checksum = "75eea531cfcd120e0851a3f8aed42c4841f78c889eefafd96339c72677ae42c3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "proc-macro2" -version = "1.0.95" +version = "1.0.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +checksum = "d61789d7719defeb74ea5fe81f2fdfdbd28a803847077cecce2ff14e1472f6f1" dependencies = [ "unicode-ident", ] @@ -14462,7 +15708,7 @@ dependencies = [ "fnv", "lazy_static", "memchr", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "thiserror 1.0.69", ] @@ -14474,7 +15720,7 @@ checksum = "504ee9ff529add891127c4827eb481bd69dc0ebc72e9a682e187db4caa60c3ca" dependencies = [ "dtoa", "itoa", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "prometheus-client-derive-encode", ] @@ -14486,22 +15732,22 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "proptest" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" +checksum = "6fcdab19deb5195a31cf7726a210015ff1496ba1464fd42cb4f537b8b01b471f" dependencies = [ "bit-set", "bit-vec", "bitflags 2.9.1", "lazy_static", "num-traits", - "rand 0.8.5", - "rand_chacha 0.3.1", + "rand 0.9.2", + "rand_chacha 0.9.0", "rand_xorshift", "regex-syntax 0.8.5", "rusty-fork", @@ -14545,7 +15791,7 @@ dependencies = [ "prost 0.13.5", "prost-types", "regex", - "syn 2.0.101", + "syn 2.0.104", "tempfile", ] @@ -14559,7 +15805,7 @@ dependencies = [ "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -14572,7 +15818,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -14595,15 +15841,15 @@ dependencies = [ [[package]] name = "quanta" -version = "0.12.5" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bd1fe6824cea6538803de3ff1bc0cf3949024db3d43c9643024bfb33a807c0e" +checksum = "f3ab5a9d756f0d97bdc89019bd2e4ea098cf9cde50ee7564dde6b81ccc8f06c7" dependencies = [ "crossbeam-utils", "libc", "once_cell", "raw-cpuid", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.11.1+wasi-snapshot-preview1", "web-sys", "winapi", ] @@ -14650,8 +15896,8 @@ dependencies = [ "quinn-udp", "rustc-hash 2.1.1", "rustls", - "socket2 0.5.9", - "thiserror 2.0.12", + "socket2 0.5.10", + "thiserror 2.0.14", "tokio", "tracing", "web-time", @@ -14666,13 +15912,13 @@ dependencies = [ "bytes", "getrandom 0.3.3", "lru-slab", - "rand 0.9.1", + "rand 0.9.2", "ring 0.17.14", "rustc-hash 2.1.1", "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.12", + "thiserror 2.0.14", "tinyvec", "tracing", "web-time", @@ -14680,14 +15926,14 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.12" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee4e529991f949c5e25755532370b8af5d114acae52326361d68d47af64aa842" +checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970" dependencies = [ "cfg_aliases 0.2.1", "libc", "once_cell", - "socket2 0.5.9", + "socket2 0.5.10", "tracing", "windows-sys 0.59.0", ] @@ -14703,9 +15949,9 @@ dependencies = [ [[package]] name = "r-efi" -version = "5.2.0" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" [[package]] name = "radium" @@ -14722,17 +15968,17 @@ dependencies = [ "libc", "rand_chacha 0.3.1", "rand_core 0.6.4", - "serde", ] [[package]] name = "rand" -version = "0.9.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ "rand_chacha 0.9.0", "rand_core 0.9.3", + "serde", ] [[package]] @@ -14771,6 +16017,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ "getrandom 0.3.3", + "serde", ] [[package]] @@ -14794,11 +16041,11 @@ dependencies = [ [[package]] name = "rand_xorshift" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" dependencies = [ - "rand_core 0.6.4", + "rand_core 0.9.3", ] [[package]] @@ -14818,9 +16065,9 @@ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" [[package]] name = "rayon" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" dependencies = [ "either", "rayon-core", @@ -14828,9 +16075,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.1" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" dependencies = [ "crossbeam-deque", "crossbeam-utils", @@ -14859,9 +16106,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.12" +version = "0.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af" +checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" dependencies = [ "bitflags 2.9.1", ] @@ -14906,7 +16153,7 @@ checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -14983,7 +16230,7 @@ name = "relay-common" version = "1.0.0" source = "git+https://github.com/paseo-network/runtimes?tag=v1.4.3#3de47024fc96ff77392684761f21245db80680c0" dependencies = [ - "pallet-staking-reward-fn 22.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "pallet-staking-reward-fn 22.0.1", "parity-scale-codec", "polkadot-primitives 16.0.0", "scale-info", @@ -15083,116 +16330,116 @@ dependencies = [ [[package]] name = "rococo-runtime" -version = "22.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "binary-merkle-tree 16.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "binary-merkle-tree 16.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "bitvec", - "frame-benchmarking 40.0.0", - "frame-executive 40.0.0", - "frame-metadata-hash-extension 0.8.0", - "frame-support 40.1.0", - "frame-system 40.1.0", - "frame-system-benchmarking 40.0.0", - "frame-system-rpc-runtime-api 36.0.0", - "frame-try-runtime 0.46.0", - "hex-literal", - "log", - "pallet-asset-rate 19.0.0", - "pallet-authority-discovery 40.0.0", - "pallet-authorship 40.0.0", - "pallet-babe 40.0.0", - "pallet-balances 41.1.0", - "pallet-beefy 41.1.0", - "pallet-beefy-mmr 41.0.0", - "pallet-bounties 39.0.0", - "pallet-child-bounties 39.0.0", - "pallet-conviction-voting 40.1.0", + "frame-benchmarking 41.0.0", + "frame-executive 41.0.0", + "frame-metadata-hash-extension 0.9.0", + "frame-support 41.0.0", + "frame-system 41.0.0", + "frame-system-benchmarking 41.0.0", + "frame-system-rpc-runtime-api 37.0.0", + "frame-try-runtime 0.47.0", + "hex-literal 0.4.1", + "log", + "pallet-asset-rate 20.0.0", + "pallet-authority-discovery 41.0.0", + "pallet-authorship 41.0.0", + "pallet-babe 41.0.0", + "pallet-balances 42.0.0", + "pallet-beefy 42.0.0", + "pallet-beefy-mmr 42.0.0", + "pallet-bounties 40.0.0", + "pallet-child-bounties 40.0.0", + "pallet-conviction-voting 41.0.0", "pallet-democracy", "pallet-elections-phragmen", - "pallet-grandpa 40.0.0", - "pallet-identity 40.1.0", - "pallet-indices 40.0.0", - "pallet-message-queue 43.1.0", + "pallet-grandpa 41.0.0", + "pallet-identity 41.0.0", + "pallet-indices 41.0.0", + "pallet-message-queue 44.0.0", "pallet-migrations", - "pallet-mmr 40.0.0", - "pallet-multisig 40.1.0", + "pallet-mmr 41.0.0", + "pallet-multisig 41.0.0", "pallet-nis", - "pallet-offences 39.0.0", - "pallet-parameters 0.11.0", - "pallet-preimage 40.0.0", - "pallet-proxy 40.1.0", + "pallet-offences 40.0.0", + "pallet-parameters 0.12.0", + "pallet-preimage 41.0.0", + "pallet-proxy 41.0.0", "pallet-ranked-collective", "pallet-recovery", - "pallet-referenda 40.1.0", + "pallet-referenda 41.0.0", "pallet-root-testing", - "pallet-scheduler 41.0.0", - "pallet-session 40.0.0", + "pallet-scheduler 42.0.0", + "pallet-session 41.0.0", "pallet-society", - "pallet-staking 40.1.0", - "pallet-state-trie-migration 44.1.0", - "pallet-sudo 40.0.0", - "pallet-timestamp 39.0.0", + "pallet-staking 41.0.0", + "pallet-state-trie-migration 46.0.0", + "pallet-sudo 41.0.0", + "pallet-timestamp 40.0.0", "pallet-tips", - "pallet-transaction-payment 40.0.0", - "pallet-transaction-payment-rpc-runtime-api 40.0.0", - "pallet-treasury 39.0.0", - "pallet-utility 40.0.0", - "pallet-vesting 40.1.0", - "pallet-whitelist 39.0.0", - "pallet-xcm 19.1.0", - "pallet-xcm-benchmarks 20.0.0", - "parity-scale-codec", - "polkadot-parachain-primitives 16.1.0", - "polkadot-primitives 18.1.0", - "polkadot-runtime-common 19.1.0", - "polkadot-runtime-parachains 19.1.0", + "pallet-transaction-payment 41.0.0", + "pallet-transaction-payment-rpc-runtime-api 41.0.0", + "pallet-treasury 40.0.0", + "pallet-utility 41.0.0", + "pallet-vesting 41.0.0", + "pallet-whitelist 40.0.0", + "pallet-xcm 20.1.0", + "pallet-xcm-benchmarks 21.0.0", + "parity-scale-codec", + "polkadot-parachain-primitives 17.0.0", + "polkadot-primitives 19.0.0", + "polkadot-runtime-common 20.0.0", + "polkadot-runtime-parachains 20.0.1", "rococo-runtime-constants", "scale-info", "serde", "serde_derive", "serde_json", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-authority-discovery 36.0.0", - "sp-block-builder 36.0.0", - "sp-consensus-babe 0.42.1", - "sp-consensus-beefy 24.1.0", - "sp-consensus-grandpa 23.1.0", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-genesis-builder 0.17.0", - "sp-inherents 36.0.0", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keyring 41.0.0", - "sp-mmr-primitives 36.1.0", - "sp-offchain 36.0.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-session 38.1.0", - "sp-staking 38.0.0", - "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-transaction-pool 36.0.0", - "sp-version 39.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", - "staging-xcm-builder 20.1.0", - "staging-xcm-executor 19.1.0", - "substrate-wasm-builder 26.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "xcm-runtime-apis 0.7.0", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-arithmetic 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-authority-discovery 37.0.0", + "sp-block-builder 37.0.0", + "sp-consensus-babe 0.43.0", + "sp-consensus-beefy 25.0.0", + "sp-consensus-grandpa 24.0.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-genesis-builder 0.18.0", + "sp-inherents 37.0.0", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keyring 42.0.0", + "sp-mmr-primitives 37.0.0", + "sp-offchain 37.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-session 39.0.0", + "sp-staking 39.0.0", + "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-transaction-pool 37.0.0", + "sp-version 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", + "staging-xcm-builder 21.0.0", + "staging-xcm-executor 20.0.0", + "substrate-wasm-builder 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "xcm-runtime-apis 0.8.0", ] [[package]] name = "rococo-runtime-constants" -version = "20.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "21.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-support 40.1.0", - "polkadot-primitives 18.1.0", - "polkadot-runtime-common 19.1.0", + "frame-support 41.0.0", + "polkadot-primitives 19.0.0", + "polkadot-runtime-common 20.0.0", "smallvec", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-weights 31.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", - "staging-xcm-builder 20.1.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-weights 32.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", + "staging-xcm-builder 21.0.0", ] [[package]] @@ -15242,9 +16489,9 @@ dependencies = [ [[package]] name = "ruint" -version = "1.14.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78a46eb779843b2c4f21fac5773e25d6d5b7c8f0922876c91541790d2ca27eef" +checksum = "9ecb38f82477f20c5c3d62ef52d7c4e536e38ea9b73fb570a20c5cae0e14bcf6" dependencies = [ "alloy-rlp", "ark-ff 0.3.0", @@ -15259,7 +16506,7 @@ dependencies = [ "primitive-types 0.12.2", "proptest", "rand 0.8.5", - "rand 0.9.1", + "rand 0.9.2", "rlp 0.5.2", "ruint-macro", "serde", @@ -15275,9 +16522,9 @@ checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" [[package]] name = "rustc-demangle" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" [[package]] name = "rustc-hash" @@ -15367,28 +16614,28 @@ dependencies = [ [[package]] name = "rustix" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" +checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" dependencies = [ "bitflags 2.9.1", "errno", "libc", "linux-raw-sys 0.9.4", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "rustls" -version = "0.23.27" +version = "0.23.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "730944ca083c1c233a75c09f199e973ca499344a2b7ba9e755c457e86fb4a321" +checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc" dependencies = [ "log", "once_cell", "ring 0.17.14", "rustls-pki-types", - "rustls-webpki 0.103.3", + "rustls-webpki 0.103.4", "subtle 2.6.1", "zeroize", ] @@ -15421,7 +16668,7 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19787cda76408ec5404443dc8b31795c87cd8fec49762dc75fa727740d34acc1" dependencies = [ - "core-foundation 0.10.0", + "core-foundation 0.10.1", "core-foundation-sys", "jni", "log", @@ -15429,7 +16676,7 @@ dependencies = [ "rustls", "rustls-native-certs", "rustls-platform-verifier-android", - "rustls-webpki 0.103.3", + "rustls-webpki 0.103.4", "security-framework", "security-framework-sys", "webpki-root-certs 0.26.11", @@ -15454,9 +16701,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.3" +version = "0.103.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" +checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" dependencies = [ "ring 0.17.14", "rustls-pki-types", @@ -15465,9 +16712,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.20" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "rusty-fork" @@ -15548,31 +16795,31 @@ dependencies = [ [[package]] name = "sc-allocator" -version = "31.0.0" +version = "32.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c10a9966875fcbde028c73697c6d5faad5f5d24e94b3c949fb1d063c727381d" +checksum = "60c540da7cc7f00e85905921952da7bf25b9f824a586be2543f7db7bf7f7d4b2" dependencies = [ "log", - "sp-core 36.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-wasm-interface 21.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 37.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-wasm-interface 22.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "thiserror 1.0.69", ] [[package]] name = "sc-allocator" -version = "31.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "32.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "log", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-wasm-interface 21.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-wasm-interface 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", ] [[package]] name = "sc-authority-discovery" -version = "0.49.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.51.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "async-trait", "futures", @@ -15587,20 +16834,23 @@ dependencies = [ "sc-client-api", "sc-network", "sc-network-types", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-authority-discovery 36.0.0", + "serde", + "serde_json", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-authority-discovery 37.0.0", "sp-blockchain", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "substrate-prometheus-endpoint", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keystore 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "substrate-prometheus-endpoint 0.17.2", "thiserror 1.0.69", + "tokio", ] [[package]] name = "sc-basic-authorship" -version = "0.49.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.50.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "futures", "log", @@ -15609,73 +16859,73 @@ dependencies = [ "sc-proposer-metrics", "sc-telemetry", "sc-transaction-pool-api", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-blockchain", "sp-consensus", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-inherents 36.0.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "substrate-prometheus-endpoint", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-inherents 37.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "substrate-prometheus-endpoint 0.17.2", ] [[package]] name = "sc-block-builder" -version = "0.44.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.45.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "parity-scale-codec", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-block-builder 36.0.0", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-block-builder 37.0.0", "sp-blockchain", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-inherents 36.0.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-trie 39.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-inherents 37.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-trie 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "sc-chain-spec" -version = "42.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "44.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "array-bytes", + "array-bytes 6.2.3", "docify", - "memmap2 0.9.5", + "memmap2 0.9.7", "parity-scale-codec", "sc-chain-spec-derive", "sc-client-api", - "sc-executor 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sc-executor 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sc-network", "sc-telemetry", "serde", "serde_json", "sp-blockchain", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-genesis-builder 0.17.0", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-state-machine 0.45.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-tracing 17.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-genesis-builder 0.18.0", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-state-machine 0.46.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-tracing 17.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "sc-chain-spec-derive" version = "12.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "sc-cli" -version = "0.51.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.53.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "array-bytes", + "array-bytes 6.2.3", "chrono", "clap", "fdlimit", @@ -15702,46 +16952,46 @@ dependencies = [ "serde", "serde_json", "sp-blockchain", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keyring 41.0.0", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-panic-handler 13.0.2 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-version 39.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keyring 42.0.0", + "sp-keystore 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-panic-handler 13.0.2 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-version 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", "tokio", ] [[package]] name = "sc-client-api" -version = "39.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "40.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "fnv", "futures", "log", "parity-scale-codec", - "parking_lot 0.12.3", - "sc-executor 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "parking_lot 0.12.4", + "sc-executor 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sc-transaction-pool-api", "sc-utils", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-blockchain", "sp-consensus", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-database", - "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-state-machine 0.45.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-trie 39.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "substrate-prometheus-endpoint", + "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-state-machine 0.46.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-trie 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "substrate-prometheus-endpoint 0.17.2", ] [[package]] name = "sc-client-db" -version = "0.46.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.47.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "hash-db", "kvdb", @@ -15751,46 +17001,48 @@ dependencies = [ "log", "parity-db", "parity-scale-codec", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "sc-client-api", "sc-state-db", "schnellru", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-arithmetic 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-blockchain", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-database", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-state-machine 0.45.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-trie 39.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-state-machine 0.46.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-trie 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "substrate-prometheus-endpoint 0.17.2", + "sysinfo", ] [[package]] name = "sc-consensus" -version = "0.48.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.50.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "async-trait", "futures", "log", "mockall", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "sc-client-api", "sc-network-types", "sc-utils", "serde", "sp-blockchain", "sp-consensus", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-state-machine 0.45.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "substrate-prometheus-endpoint", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-state-machine 0.46.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "substrate-prometheus-endpoint 0.17.2", "thiserror 1.0.69", ] [[package]] name = "sc-consensus-aura" -version = "0.49.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.51.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "async-trait", "futures", @@ -15801,25 +17053,25 @@ dependencies = [ "sc-consensus", "sc-consensus-slots", "sc-telemetry", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-application-crypto 40.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-block-builder 36.0.0", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-application-crypto 41.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-block-builder 37.0.0", "sp-blockchain", "sp-consensus", - "sp-consensus-aura 0.42.0", - "sp-consensus-slots 0.42.1", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-inherents 36.0.0", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "substrate-prometheus-endpoint", + "sp-consensus-aura 0.43.0", + "sp-consensus-slots 0.43.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-inherents 37.0.0", + "sp-keystore 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "substrate-prometheus-endpoint 0.17.2", "thiserror 1.0.69", ] [[package]] name = "sc-consensus-babe" -version = "0.49.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.51.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "async-trait", "fork-tree", @@ -15829,33 +17081,33 @@ dependencies = [ "num-rational", "num-traits", "parity-scale-codec", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "sc-client-api", "sc-consensus", "sc-consensus-epochs", "sc-consensus-slots", "sc-telemetry", "sc-transaction-pool-api", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-application-crypto 40.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-block-builder 36.0.0", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-application-crypto 41.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-block-builder 37.0.0", "sp-blockchain", "sp-consensus", - "sp-consensus-babe 0.42.1", - "sp-consensus-slots 0.42.1", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-inherents 36.0.0", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "substrate-prometheus-endpoint", + "sp-consensus-babe 0.43.0", + "sp-consensus-slots 0.43.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-inherents 37.0.0", + "sp-keystore 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "substrate-prometheus-endpoint 0.17.2", "thiserror 1.0.69", ] [[package]] name = "sc-consensus-babe-rpc" -version = "0.49.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.51.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "futures", "jsonrpsee", @@ -15863,29 +17115,29 @@ dependencies = [ "sc-consensus-epochs", "sc-rpc-api", "serde", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-application-crypto 40.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-application-crypto 41.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-blockchain", "sp-consensus", - "sp-consensus-babe 0.42.1", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-consensus-babe 0.43.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keystore 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", ] [[package]] name = "sc-consensus-beefy" -version = "28.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "30.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "array-bytes", + "array-bytes 6.2.3", "async-channel 1.9.0", "async-trait", "futures", "log", "parity-scale-codec", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "sc-client-api", "sc-consensus", "sc-network", @@ -15893,16 +17145,16 @@ dependencies = [ "sc-network-sync", "sc-network-types", "sc-utils", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-application-crypto 40.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-application-crypto 41.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-arithmetic 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-blockchain", "sp-consensus", - "sp-consensus-beefy 24.1.0", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "substrate-prometheus-endpoint", + "sp-consensus-beefy 25.0.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keystore 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "substrate-prometheus-endpoint 0.17.2", "thiserror 1.0.69", "tokio", "wasm-timer", @@ -15910,44 +17162,44 @@ dependencies = [ [[package]] name = "sc-consensus-beefy-rpc" -version = "28.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "30.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "futures", "jsonrpsee", "log", "parity-scale-codec", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "sc-consensus-beefy", "sc-rpc", "serde", - "sp-application-crypto 40.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-consensus-beefy 24.1.0", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-application-crypto 41.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-consensus-beefy 25.0.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", ] [[package]] name = "sc-consensus-epochs" -version = "0.48.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.50.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "fork-tree", "parity-scale-codec", "sc-client-api", "sc-consensus", "sp-blockchain", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "sc-consensus-grandpa" -version = "0.34.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.36.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "ahash 0.8.12", - "array-bytes", + "array-bytes 6.2.3", "async-trait", "dyn-clone", "finality-grandpa", @@ -15956,7 +17208,7 @@ dependencies = [ "futures-timer", "log", "parity-scale-codec", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "rand 0.8.5", "sc-block-builder", "sc-chain-spec", @@ -15971,24 +17223,24 @@ dependencies = [ "sc-transaction-pool-api", "sc-utils", "serde_json", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-application-crypto 40.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-application-crypto 41.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-arithmetic 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-blockchain", "sp-consensus", - "sp-consensus-grandpa 23.1.0", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "substrate-prometheus-endpoint", + "sp-consensus-grandpa 24.0.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keystore 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "substrate-prometheus-endpoint 0.17.2", "thiserror 1.0.69", ] [[package]] name = "sc-consensus-grandpa-rpc" -version = "0.34.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.36.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "finality-grandpa", "futures", @@ -16000,15 +17252,15 @@ dependencies = [ "sc-rpc", "serde", "sp-blockchain", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", ] [[package]] name = "sc-consensus-slots" -version = "0.48.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.50.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "async-trait", "futures", @@ -16018,150 +17270,150 @@ dependencies = [ "sc-client-api", "sc-consensus", "sc-telemetry", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-arithmetic 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-blockchain", "sp-consensus", - "sp-consensus-slots 0.42.1", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-inherents 36.0.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-state-machine 0.45.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-consensus-slots 0.43.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-inherents 37.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-state-machine 0.46.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "sc-executor" -version = "0.42.0" +version = "0.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b55c745bf88acb34bd606346c7de6cc06f334f627c1ff40380252a6e52ad9354" +checksum = "dfd7a23eebd1fea90534994440f0ef516cbd8c0ef749e272c6c77fd729bbca71" dependencies = [ "parity-scale-codec", - "parking_lot 0.12.3", - "sc-executor-common 0.38.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-executor-polkavm 0.35.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-executor-wasmtime 0.38.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.12.4", + "sc-executor-common 0.39.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-executor-polkavm 0.36.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-executor-wasmtime 0.39.0 (registry+https://github.com/rust-lang/crates.io-index)", "schnellru", - "sp-api 36.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 36.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-api 37.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 37.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-externalities 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-io 40.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-io 41.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "sp-panic-handler 13.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-runtime-interface 29.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-trie 39.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-version 39.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-wasm-interface 21.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-runtime-interface 30.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-trie 40.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-version 40.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-wasm-interface 22.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "tracing", ] [[package]] name = "sc-executor" -version = "0.42.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.43.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "parity-scale-codec", - "parking_lot 0.12.3", - "sc-executor-common 0.38.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sc-executor-polkavm 0.35.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sc-executor-wasmtime 0.38.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "parking_lot 0.12.4", + "sc-executor-common 0.39.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sc-executor-polkavm 0.36.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sc-executor-wasmtime 0.39.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "schnellru", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-panic-handler 13.0.2 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime-interface 29.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-trie 39.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-version 39.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-wasm-interface 21.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-panic-handler 13.0.2 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime-interface 30.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-trie 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-version 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-wasm-interface 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "tracing", ] [[package]] name = "sc-executor-common" -version = "0.38.0" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a2f84b9aa7664a9b401afbf423bcd3c1845f5adedf4f6030586808238a222df" +checksum = "54c15851cbce9a72d7191fdb9a6e8f5919e17aeaf363df9b52653e92ead4fa1e" dependencies = [ - "polkavm 0.18.0", - "sc-allocator 31.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "polkavm 0.24.0", + "sc-allocator 32.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-maybe-compressed-blob 11.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-wasm-interface 21.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-wasm-interface 22.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "thiserror 1.0.69", "wasm-instrument", ] [[package]] name = "sc-executor-common" -version = "0.38.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.39.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "polkavm 0.18.0", - "sc-allocator 31.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-maybe-compressed-blob 11.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-wasm-interface 21.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "polkavm 0.24.0", + "sc-allocator 32.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-maybe-compressed-blob 11.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-wasm-interface 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", "wasm-instrument", ] [[package]] name = "sc-executor-polkavm" -version = "0.35.0" +version = "0.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb4929b3457077f9b30ad397a724116f43f252a889ec334ec369f6cdad8f76c" +checksum = "eefb587eb7d0cbb4a2d763fa799eb7fb60a5d2fd42e625accf455c1e9e49a9d4" dependencies = [ "log", - "polkavm 0.18.0", - "sc-executor-common 0.38.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-wasm-interface 21.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "polkavm 0.24.0", + "sc-executor-common 0.39.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-wasm-interface 22.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sc-executor-polkavm" -version = "0.35.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.36.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "log", - "polkavm 0.18.0", - "sc-executor-common 0.38.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-wasm-interface 21.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "polkavm 0.24.0", + "sc-executor-common 0.39.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-wasm-interface 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "sc-executor-wasmtime" -version = "0.38.0" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b5ad79b030a1f91ef0f667e58ac35e1c9fa33a6b8a0ec1ae7fe4890322535ac" +checksum = "a5980897e2915ef027560886a2bb52f49a2cea4a9b9f5c75fead841201d03705" dependencies = [ "anyhow", "log", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "rustix 0.36.17", - "sc-allocator 31.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sc-executor-common 0.38.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-runtime-interface 29.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-wasm-interface 21.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-allocator 32.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sc-executor-common 0.39.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-runtime-interface 30.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-wasm-interface 22.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "wasmtime", ] [[package]] name = "sc-executor-wasmtime" -version = "0.38.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.39.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "anyhow", "log", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "rustix 0.36.17", - "sc-allocator 31.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sc-executor-common 0.38.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime-interface 29.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-wasm-interface 21.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sc-allocator 32.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sc-executor-common 0.39.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime-interface 30.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-wasm-interface 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "wasmtime", ] [[package]] name = "sc-informant" -version = "0.48.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.50.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "console", "futures", @@ -16171,29 +17423,29 @@ dependencies = [ "sc-network", "sc-network-sync", "sp-blockchain", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "sc-keystore" -version = "35.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "36.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "array-bytes", - "parking_lot 0.12.3", + "array-bytes 6.2.3", + "parking_lot 0.12.4", "serde_json", - "sp-application-crypto 40.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-application-crypto 41.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keystore 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", ] [[package]] name = "sc-mixnet" -version = "0.19.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.21.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "array-bytes", + "array-bytes 6.2.3", "arrayvec 0.7.6", "blake2 0.10.6", "bytes", @@ -16202,26 +17454,26 @@ dependencies = [ "log", "mixnet", "parity-scale-codec", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "sc-client-api", "sc-network", "sc-network-types", "sc-transaction-pool-api", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-consensus", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keystore 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-mixnet", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", ] [[package]] name = "sc-network" -version = "0.49.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.51.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "array-bytes", + "array-bytes 6.2.3", "async-channel 1.9.0", "async-trait", "asynchronous-codec 0.6.2", @@ -16238,7 +17490,7 @@ dependencies = [ "log", "mockall", "parity-scale-codec", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "partial_sort", "pin-project", "prost 0.12.6", @@ -16252,11 +17504,11 @@ dependencies = [ "serde", "serde_json", "smallvec", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-arithmetic 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-blockchain", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "substrate-prometheus-endpoint", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "substrate-prometheus-endpoint 0.17.2", "thiserror 1.0.69", "tokio", "tokio-stream", @@ -16268,18 +17520,18 @@ dependencies = [ [[package]] name = "sc-network-common" -version = "0.48.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.49.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "bitflags 1.3.2", "parity-scale-codec", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "sc-network-gossip" -version = "0.49.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.51.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "ahash 0.8.12", "futures", @@ -16290,17 +17542,17 @@ dependencies = [ "sc-network-sync", "sc-network-types", "schnellru", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "substrate-prometheus-endpoint", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "substrate-prometheus-endpoint 0.17.2", "tracing", ] [[package]] name = "sc-network-light" -version = "0.48.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.50.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "array-bytes", + "array-bytes 6.2.3", "async-channel 1.9.0", "futures", "log", @@ -16311,17 +17563,17 @@ dependencies = [ "sc-network", "sc-network-types", "sp-blockchain", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", ] [[package]] name = "sc-network-sync" -version = "0.48.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.50.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "array-bytes", + "array-bytes 6.2.3", "async-channel 1.9.0", "async-trait", "fork-tree", @@ -16339,13 +17591,13 @@ dependencies = [ "sc-utils", "schnellru", "smallvec", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-arithmetic 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-blockchain", "sp-consensus", - "sp-consensus-grandpa 23.1.0", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "substrate-prometheus-endpoint", + "sp-consensus-grandpa 24.0.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "substrate-prometheus-endpoint 0.17.2", "thiserror 1.0.69", "tokio", "tokio-stream", @@ -16353,10 +17605,10 @@ dependencies = [ [[package]] name = "sc-network-transactions" -version = "0.48.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.50.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "array-bytes", + "array-bytes 6.2.3", "futures", "log", "parity-scale-codec", @@ -16366,14 +17618,14 @@ dependencies = [ "sc-network-types", "sc-utils", "sp-consensus", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "substrate-prometheus-endpoint", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "substrate-prometheus-endpoint 0.17.2", ] [[package]] name = "sc-network-types" -version = "0.15.3" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.17.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "bs58", "bytes", @@ -16385,14 +17637,16 @@ dependencies = [ "multiaddr 0.18.2", "multihash 0.19.3", "rand 0.8.5", + "serde", + "serde_with", "thiserror 1.0.69", "zeroize", ] [[package]] name = "sc-offchain" -version = "44.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "46.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "bytes", "fnv", @@ -16405,7 +17659,7 @@ dependencies = [ "num_cpus", "once_cell", "parity-scale-codec", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "rand 0.8.5", "rustls", "sc-client-api", @@ -16413,12 +17667,12 @@ dependencies = [ "sc-network-types", "sc-transaction-pool-api", "sc-utils", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-offchain 36.0.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keystore 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-offchain 37.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "threadpool", "tracing", ] @@ -16426,22 +17680,22 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.20.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "log", - "substrate-prometheus-endpoint", + "substrate-prometheus-endpoint 0.17.2", ] [[package]] name = "sc-rpc" -version = "44.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "46.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "futures", "jsonrpsee", "log", "parity-scale-codec", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "sc-block-builder", "sc-chain-spec", "sc-client-api", @@ -16451,23 +17705,23 @@ dependencies = [ "sc-transaction-pool-api", "sc-utils", "serde_json", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-blockchain", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-offchain 36.0.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keystore 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-offchain 37.0.0", "sp-rpc", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-session 38.1.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-session 39.0.0", "sp-statement-store", - "sp-version 39.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-version 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "tokio", ] [[package]] name = "sc-rpc-api" -version = "0.48.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.50.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -16477,17 +17731,17 @@ dependencies = [ "scale-info", "serde", "serde_json", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-rpc", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-version 39.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-version 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", ] [[package]] name = "sc-rpc-server" -version = "21.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "23.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "dyn-clone", "forwarded-header-value", @@ -16502,7 +17756,7 @@ dependencies = [ "sc-rpc-api", "serde", "serde_json", - "substrate-prometheus-endpoint", + "substrate-prometheus-endpoint 0.17.2", "tokio", "tower", "tower-http", @@ -16510,10 +17764,10 @@ dependencies = [ [[package]] name = "sc-rpc-spec-v2" -version = "0.49.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.51.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "array-bytes", + "array-bytes 6.2.3", "futures", "futures-util", "hex", @@ -16521,7 +17775,7 @@ dependencies = [ "jsonrpsee", "log", "parity-scale-codec", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "rand 0.8.5", "sc-chain-spec", "sc-client-api", @@ -16529,12 +17783,13 @@ dependencies = [ "sc-transaction-pool-api", "schnellru", "serde", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-blockchain", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-rpc", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-version 39.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-version 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "substrate-prometheus-endpoint 0.17.2", "thiserror 1.0.69", "tokio", "tokio-stream", @@ -16542,23 +17797,23 @@ dependencies = [ [[package]] name = "sc-runtime-utilities" -version = "0.2.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.3.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "parity-scale-codec", - "sc-executor 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sc-executor-common 0.38.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-state-machine 0.45.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-wasm-interface 21.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sc-executor 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sc-executor-common 0.39.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-state-machine 0.46.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-wasm-interface 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", ] [[package]] name = "sc-service" -version = "0.50.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.52.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "async-trait", "directories", @@ -16568,14 +17823,14 @@ dependencies = [ "jsonrpsee", "log", "parity-scale-codec", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "pin-project", "rand 0.8.5", "sc-chain-spec", "sc-client-api", "sc-client-db", "sc-consensus", - "sc-executor 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sc-executor 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sc-informant", "sc-keystore", "sc-network", @@ -16596,22 +17851,22 @@ dependencies = [ "schnellru", "serde", "serde_json", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-blockchain", "sp-consensus", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-session 38.1.0", - "sp-state-machine 0.45.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-transaction-pool 36.0.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keystore 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-session 39.0.0", + "sp-state-machine 0.46.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-transaction-pool 37.0.0", "sp-transaction-storage-proof", - "sp-trie 39.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-version 39.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-trie 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-version 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "static_init", - "substrate-prometheus-endpoint", + "substrate-prometheus-endpoint 0.17.2", "tempfile", "thiserror 1.0.69", "tokio", @@ -16621,32 +17876,32 @@ dependencies = [ [[package]] name = "sc-state-db" -version = "0.38.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.39.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "log", "parity-scale-codec", - "parking_lot 0.12.3", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "parking_lot 0.12.4", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "sc-storage-monitor" -version = "0.24.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.25.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "clap", "fs4", "log", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", "tokio", ] [[package]] name = "sc-sync-state-rpc" -version = "0.49.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.51.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -16658,14 +17913,14 @@ dependencies = [ "serde", "serde_json", "sp-blockchain", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", ] [[package]] name = "sc-sysinfo" -version = "42.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "43.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "derive_more 0.99.20", "futures", @@ -16677,21 +17932,21 @@ dependencies = [ "sc-telemetry", "serde", "serde_json", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "sc-telemetry" -version = "28.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "29.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "chrono", "futures", "libp2p", "log", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "pin-project", "rand 0.8.5", "sc-utils", @@ -16703,8 +17958,8 @@ dependencies = [ [[package]] name = "sc-tracing" -version = "39.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "40.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "chrono", "console", @@ -16712,17 +17967,17 @@ dependencies = [ "libc", "log", "parity-scale-codec", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "rustc-hash 1.1.0", "sc-client-api", "sc-tracing-proc-macro", "serde", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-blockchain", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-rpc", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-tracing 17.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-tracing 17.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", "tracing", "tracing-log", @@ -16732,40 +17987,39 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "11.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "sc-transaction-pool" -version = "39.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "40.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "async-trait", "futures", "futures-timer", - "indexmap 2.9.0", + "indexmap 2.10.0", "itertools 0.11.0", "linked-hash-map", - "log", "parity-scale-codec", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "sc-client-api", "sc-transaction-pool-api", "sc-utils", "serde", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-blockchain", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-tracing 17.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-transaction-pool 36.0.0", - "substrate-prometheus-endpoint", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-tracing 17.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-transaction-pool 37.0.0", + "substrate-prometheus-endpoint 0.17.2", "thiserror 1.0.69", "tokio", "tokio-stream", @@ -16774,33 +18028,33 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" -version = "39.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "40.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "async-trait", "futures", - "indexmap 2.9.0", + "indexmap 2.10.0", "log", "parity-scale-codec", "serde", "sp-blockchain", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", ] [[package]] name = "sc-utils" -version = "18.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "19.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "async-channel 1.9.0", "futures", "futures-timer", "log", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "prometheus", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-arithmetic 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -16815,9 +18069,9 @@ dependencies = [ [[package]] name = "scale-bits" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e57b1e7f6b65ed1f04e79a85a57d755ad56d76fdf1e9bddcc9ae14f71fcdcf54" +checksum = "27243ab0d2d6235072b017839c5f0cd1a3b1ce45c0f7a715363b0c7d36c76c94" dependencies = [ "parity-scale-codec", "scale-info", @@ -16841,30 +18095,17 @@ dependencies = [ [[package]] name = "scale-decode" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e98f3262c250d90e700bb802eb704e1f841e03331c2eb815e46516c4edbf5b27" -dependencies = [ - "derive_more 0.99.20", - "parity-scale-codec", - "scale-bits 0.6.0", - "scale-type-resolver 0.2.0", - "smallvec", -] - -[[package]] -name = "scale-decode" -version = "0.14.0" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ae9cc099ae85ff28820210732b00f019546f36f33225f509fe25d5816864a0" +checksum = "4d78196772d25b90a98046794ce0fe2588b39ebdfbdc1e45b4c6c85dd43bebad" dependencies = [ - "derive_more 1.0.0", "parity-scale-codec", "primitive-types 0.13.1", - "scale-bits 0.6.0", - "scale-decode-derive 0.14.0", + "scale-bits 0.7.0", + "scale-decode-derive 0.16.0", "scale-type-resolver 0.2.0", "smallvec", + "thiserror 2.0.14", ] [[package]] @@ -16881,14 +18122,14 @@ dependencies = [ [[package]] name = "scale-decode-derive" -version = "0.14.0" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ed9401effa946b493f9f84dc03714cca98119b230497df6f3df6b84a2b03648" +checksum = "2f4b54a1211260718b92832b661025d1f1a4b6930fbadd6908e00edd265fa5f7" dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -16906,17 +18147,17 @@ dependencies = [ [[package]] name = "scale-encode" -version = "0.8.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f9271284d05d0749c40771c46180ce89905fd95aa72a2a2fddb4b7c0aa424db" +checksum = "64901733157f9d25ef86843bd783eda439fac7efb0ad5a615d12d2cf3a29464b" dependencies = [ - "derive_more 1.0.0", "parity-scale-codec", "primitive-types 0.13.1", - "scale-bits 0.6.0", - "scale-encode-derive 0.8.0", + "scale-bits 0.7.0", + "scale-encode-derive 0.10.0", "scale-type-resolver 0.2.0", "smallvec", + "thiserror 2.0.14", ] [[package]] @@ -16934,15 +18175,15 @@ dependencies = [ [[package]] name = "scale-encode-derive" -version = "0.8.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "102fbc6236de6c53906c0b262f12c7aa69c2bdc604862c12728f5f4d370bc137" +checksum = "78a3993a13b4eafa89350604672c8757b7ea84c7c5947d4b3691e3169c96379b" dependencies = [ "darling 0.20.11", "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -16956,7 +18197,7 @@ dependencies = [ "derive_more 1.0.0", "parity-scale-codec", "scale-info-derive", - "schemars", + "schemars 0.8.22", "serde", ] @@ -16969,7 +18210,7 @@ dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -16993,34 +18234,33 @@ dependencies = [ [[package]] name = "scale-typegen" -version = "0.9.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc4c70c7fea2eef1740f0081d3fe385d8bee1eef11e9272d3bec7dc8e5438e0" +checksum = "05c61b6b706a3eaad63b506ab50a1d2319f817ae01cf753adcc3f055f9f0fcd6" dependencies = [ "proc-macro2", "quote", "scale-info", - "syn 2.0.101", - "thiserror 1.0.69", + "syn 2.0.104", + "thiserror 2.0.14", ] [[package]] name = "scale-value" -version = "0.17.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5e0ef2a0ee1e02a69ada37feb87ea1616ce9808aca072befe2d3131bf28576e" +checksum = "8ca8b26b451ecb7fd7b62b259fa28add63d12ec49bbcac0e01fcb4b5ae0c09aa" dependencies = [ "base58", "blake2 0.10.6", - "derive_more 1.0.0", "either", "parity-scale-codec", - "scale-bits 0.6.0", - "scale-decode 0.14.0", - "scale-encode 0.8.0", - "scale-info", + "scale-bits 0.7.0", + "scale-decode 0.16.0", + "scale-encode 0.10.0", "scale-type-resolver 0.2.0", "serde", + "thiserror 2.0.14", "yap", ] @@ -17045,6 +18285,30 @@ dependencies = [ "serde_json", ] +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + [[package]] name = "schemars_derive" version = "0.8.22" @@ -17054,7 +18318,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -17086,9 +18350,9 @@ dependencies = [ [[package]] name = "schnorrkel" -version = "0.11.4" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de18f6d8ba0aad7045f5feae07ec29899c1112584a38509a84ad7b04451eaa0" +checksum = "6e9fcb6c2e176e86ec703e22560d99d65a5ee9056ae45a08e13e84ebf796296f" dependencies = [ "aead", "arrayref", @@ -17103,6 +18367,12 @@ dependencies = [ "zeroize", ] +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + [[package]] name = "scopeguard" version = "1.2.0" @@ -17111,9 +18381,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "scratch" -version = "1.0.8" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f6280af86e5f559536da57a45ebc84948833b3bee313a7dd25232e09c878a52" +checksum = "d68f2ec51b097e4c1a75b681a8bec621909b5e91f15bb7b840c4f2f7b01148b2" [[package]] name = "scrypt" @@ -17157,7 +18427,7 @@ version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f" dependencies = [ - "secp256k1-sys 0.8.1", + "secp256k1-sys 0.8.2", ] [[package]] @@ -17182,9 +18452,9 @@ dependencies = [ [[package]] name = "secp256k1-sys" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a129b9e9efbfb223753b9163c4ab3b13cff7fd9c7f010fbac25ab4099fa07e" +checksum = "4473013577ec77b4ee3668179ef1186df3146e2cf2d927bd200974c6fe60fd99" dependencies = [ "cc", ] @@ -17227,12 +18497,12 @@ dependencies = [ [[package]] name = "security-framework" -version = "3.2.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" +checksum = "80fb1d92c5028aa318b4b8bd7302a5bfcf48be96a37fc6fc790f806b0004ee0c" dependencies = [ "bitflags 2.9.1", - "core-foundation 0.10.0", + "core-foundation 0.10.1", "core-foundation-sys", "libc", "security-framework-sys", @@ -17311,13 +18581,34 @@ dependencies = [ [[package]] name = "serde-hex-utils" version = "0.1.0" -source = "git+https://github.com/r0gue-io/ismp?branch=polkadot-stable2503-4#97e0ba9e2cb7f7c27a43c66ee9decbbfa5f617f4" +source = "git+https://github.com/r0gue-io/ismp?branch=polkadot-stable2506#a64c9c79824f1f6b0e0b5288bcaba18241fc19a0" dependencies = [ "anyhow", "hex", "serde", ] +[[package]] +name = "serde-untagged" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34836a629bcbc6f1afdf0907a744870039b1e14c0561cb26094fa683b158eff3" +dependencies = [ + "erased-serde", + "serde", + "typeid", +] + +[[package]] +name = "serde-value" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" +dependencies = [ + "ordered-float", + "serde", +] + [[package]] name = "serde_bytes" version = "0.11.17" @@ -17335,7 +18626,7 @@ checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -17346,14 +18637,14 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "serde_json" -version = "1.0.140" +version = "1.0.142" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +checksum = "030fedb782600dcbd6f02d479bf0d817ac3bb40d644745b769d6a96bc3afc5a7" dependencies = [ "itoa", "memchr", @@ -17369,14 +18660,14 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "serde_spanned" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" dependencies = [ "serde", ] @@ -17395,21 +18686,36 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.12.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6b6f7f2fcb69f747921f79f3926bd1e203fce4fef62c268dd3abfb6d86029aa" +checksum = "f2c45cd61fefa9db6f254525d46e392b852e0e61d9a1fd36e5bd183450a556d5" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.9.0", + "indexmap 2.10.0", + "schemars 0.9.0", + "schemars 1.0.4", "serde", "serde_derive", "serde_json", + "serde_with_macros", "time", ] +[[package]] +name = "serde_with_macros" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de90945e6565ce0d9a25098082ed4ee4002e047cb59892c318d66821e14bb30f" +dependencies = [ + "darling 0.20.11", + "proc-macro2", + "quote", + "syn 2.0.104", +] + [[package]] name = "serdect" version = "0.2.0" @@ -17499,20 +18805,38 @@ dependencies = [ [[package]] name = "shared_child" -version = "1.0.2" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e297bd52991bbe0686c086957bee142f13df85d1e79b0b21630a99d374ae9dc" +checksum = "1e362d9935bc50f019969e2f9ecd66786612daae13e8f277be7bfb66e8bed3f7" dependencies = [ "libc", - "windows-sys 0.59.0", + "sigchld", + "windows-sys 0.60.2", ] +[[package]] +name = "shared_thread" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52b86057fcb5423f5018e331ac04623e32d6b5ce85e33300f92c79a1973928b0" + [[package]] name = "shlex" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "sigchld" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47106eded3c154e70176fc83df9737335c94ce22f821c32d17ed1db1f83badb1" +dependencies = [ + "libc", + "os_pipe", + "signal-hook", +] + [[package]] name = "signal-hook" version = "0.3.18" @@ -17536,9 +18860,9 @@ dependencies = [ [[package]] name = "signal-hook-registry" -version = "1.4.5" +version = "1.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" +checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" dependencies = [ "libc", ] @@ -17595,12 +18919,9 @@ checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" [[package]] name = "slab" -version = "0.4.9" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" [[package]] name = "slice-group-by" @@ -17622,13 +18943,13 @@ dependencies = [ [[package]] name = "slot-range-helper" -version = "17.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "18.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "enumn", "parity-scale-codec", "paste", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -17642,9 +18963,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.15.0" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "smol" @@ -17669,15 +18990,15 @@ version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a33bd3e260892199c3ccfc487c88b2da2265080acb316cd920da72fdfd7c599f" dependencies = [ - "async-channel 2.3.1", + "async-channel 2.5.0", "async-executor", - "async-fs 2.1.2", - "async-io 2.4.0", - "async-lock 3.4.0", + "async-fs 2.1.3", + "async-io 2.5.0", + "async-lock 3.4.1", "async-net 2.0.0", - "async-process 2.3.0", + "async-process 2.4.0", "blocking", - "futures-lite 2.6.0", + "futures-lite 2.6.1", ] [[package]] @@ -17741,7 +19062,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "966e72d77a3b2171bb7461d0cb91f43670c63558c62d7cf42809cae6c8b6b818" dependencies = [ "arrayvec 0.7.6", - "async-lock 3.4.0", + "async-lock 3.4.1", "atomic-take", "base64 0.22.1", "bip39", @@ -17752,9 +19073,9 @@ dependencies = [ "derive_more 0.99.20", "ed25519-zebra", "either", - "event-listener 5.4.0", + "event-listener 5.4.1", "fnv", - "futures-lite 2.6.0", + "futures-lite 2.6.1", "futures-util", "hashbrown 0.14.5", "hex", @@ -17773,7 +19094,7 @@ dependencies = [ "rand 0.8.5", "rand_chacha 0.3.1", "ruzstd 0.6.0", - "schnorrkel 0.11.4", + "schnorrkel 0.11.5", "serde", "serde_json", "sha2 0.10.9", @@ -17811,7 +19132,7 @@ dependencies = [ "log", "lru 0.11.1", "no-std-net", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "pin-project", "rand 0.8.5", "rand_chacha 0.3.1", @@ -17830,24 +19151,24 @@ version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a33b06891f687909632ce6a4e3fd7677b24df930365af3d0bcb078310129f3f" dependencies = [ - "async-channel 2.3.1", - "async-lock 3.4.0", + "async-channel 2.5.0", + "async-lock 3.4.1", "base64 0.22.1", "blake2-rfc", "bs58", "derive_more 0.99.20", "either", - "event-listener 5.4.0", + "event-listener 5.4.1", "fnv", "futures-channel", - "futures-lite 2.6.0", + "futures-lite 2.6.1", "futures-util", "hashbrown 0.14.5", "hex", "itertools 0.13.0", "log", "lru 0.12.5", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "pin-project", "rand 0.8.5", "rand_chacha 0.3.1", @@ -17918,22 +19239,22 @@ dependencies = [ [[package]] name = "snowbridge-beacon-primitives" -version = "0.13.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.14.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "byte-slice-cast", - "frame-support 40.1.0", + "frame-support 41.0.0", "hex", "parity-scale-codec", "rlp 0.6.1", "scale-info", "serde", - "snowbridge-ethereum 0.12.0", + "snowbridge-ethereum 0.13.0", "snowbridge-milagro-bls", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "ssz_rs", "ssz_rs_derive", ] @@ -17947,13 +19268,13 @@ dependencies = [ "ethabi-decode 1.0.0", "frame-support 38.2.0", "frame-system 38.0.0", - "hex-literal", + "hex-literal 0.4.1", "parity-scale-codec", "polkadot-parachain-primitives 14.0.0", "scale-info", "serde", "snowbridge-beacon-primitives 0.10.1", - "sp-arithmetic 26.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-arithmetic 26.1.0", "sp-core 34.0.0", "sp-io 38.0.2", "sp-runtime 39.0.5", @@ -17964,27 +19285,26 @@ dependencies = [ [[package]] name = "snowbridge-core" -version = "0.13.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.14.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "bp-relayers", - "ethabi-decode 2.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", - "hex-literal", + "frame-support 41.0.0", + "frame-system 41.0.0", + "hex-literal 0.4.1", "log", "parity-scale-codec", - "polkadot-parachain-primitives 16.1.0", + "polkadot-parachain-primitives 17.0.0", "scale-info", "serde", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", - "staging-xcm-builder 20.1.0", - "staging-xcm-executor 19.1.0", + "sp-arithmetic 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", + "staging-xcm-builder 21.0.0", + "staging-xcm-executor 20.0.0", ] [[package]] @@ -17996,7 +19316,7 @@ dependencies = [ "ethabi-decode 1.0.0", "ethbloom 0.13.0", "ethereum-types 0.14.1", - "hex-literal", + "hex-literal 0.4.1", "parity-bytes", "parity-scale-codec", "rlp 0.5.2", @@ -18010,46 +19330,22 @@ dependencies = [ [[package]] name = "snowbridge-ethereum" -version = "0.12.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.13.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "ethabi-decode 2.0.0", "ethbloom 0.14.1", "ethereum-types 0.15.1", - "hex-literal", + "hex-literal 0.4.1", "parity-bytes", "parity-scale-codec", "rlp 0.6.1", "scale-info", "serde", "serde-big-array", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", -] - -[[package]] -name = "snowbridge-inbound-queue-primitives" -version = "0.2.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" -dependencies = [ - "alloy-core", - "frame-support 40.1.0", - "frame-system 40.1.0", - "hex-literal", - "log", - "parity-scale-codec", - "scale-info", - "snowbridge-beacon-primitives 0.13.1", - "snowbridge-core 0.13.1", - "snowbridge-verification-primitives", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", - "staging-xcm-builder 20.1.0", - "staging-xcm-executor 19.1.0", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -18069,49 +19365,49 @@ dependencies = [ [[package]] name = "snowbridge-outbound-queue-primitives" -version = "0.2.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.3.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "alloy-core", "ethabi-decode 2.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", - "hex-literal", + "frame-support 41.0.0", + "frame-system 41.0.0", + "hex-literal 0.4.1", "log", "parity-scale-codec", - "polkadot-parachain-primitives 16.1.0", + "polkadot-parachain-primitives 17.0.0", "scale-info", - "snowbridge-core 0.13.1", + "snowbridge-core 0.14.0", "snowbridge-verification-primitives", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", - "staging-xcm-builder 20.1.0", - "staging-xcm-executor 19.1.0", + "sp-arithmetic 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", + "staging-xcm-builder 21.0.0", + "staging-xcm-executor 20.0.0", ] [[package]] name = "snowbridge-pallet-system-frontend" -version = "0.2.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.3.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", - "pallet-xcm 19.1.0", + "pallet-asset-conversion 23.0.0", "parity-scale-codec", "scale-info", - "snowbridge-core 0.13.1", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", - "staging-xcm-executor 19.1.0", + "snowbridge-core 0.14.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", + "staging-xcm-executor 20.0.0", "tracing", ] @@ -18122,7 +19418,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aefe74eafeac92e1d9e46b7bb76ec297f6182b4a023f7e7eb7eb8be193f93bef" dependencies = [ "frame-support 38.2.0", - "hex-literal", + "hex-literal 0.4.1", "log", "parity-scale-codec", "scale-info", @@ -18132,39 +19428,39 @@ dependencies = [ "sp-runtime 39.0.5", "sp-std 14.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "staging-xcm 14.2.2", - "staging-xcm-executor 17.0.2", + "staging-xcm-executor 17.0.3", ] [[package]] name = "snowbridge-runtime-common" -version = "0.13.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.14.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "log", - "pallet-xcm 19.1.0", + "pallet-xcm 20.1.0", "parity-scale-codec", - "snowbridge-core 0.13.1", + "snowbridge-core 0.14.0", "snowbridge-outbound-queue-primitives", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", - "staging-xcm-builder 20.1.0", - "staging-xcm-executor 19.1.0", + "sp-arithmetic 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", + "staging-xcm-builder 21.0.0", + "staging-xcm-executor 20.0.0", ] [[package]] name = "snowbridge-verification-primitives" -version = "0.2.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.3.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-support 40.1.0", + "frame-support 41.0.0", "parity-scale-codec", "scale-info", - "snowbridge-beacon-primitives 0.13.1", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "snowbridge-beacon-primitives 0.14.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -18179,14 +19475,24 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.9" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" dependencies = [ "libc", "windows-sys 0.52.0", ] +[[package]] +name = "socket2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + [[package]] name = "soketto" version = "0.7.1" @@ -18218,6 +19524,28 @@ dependencies = [ "sha1", ] +[[package]] +name = "sp-api" +version = "26.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "docify", + "hash-db", + "log", + "parity-scale-codec", + "scale-info", + "sp-api-proc-macro 15.0.0", + "sp-core 28.0.0", + "sp-externalities 0.25.0", + "sp-metadata-ir 0.6.0", + "sp-runtime 31.0.1", + "sp-runtime-interface 24.0.0", + "sp-state-machine 0.35.0", + "sp-trie 29.0.0", + "sp-version 29.0.0", + "thiserror 1.0.69", +] + [[package]] name = "sp-api" version = "34.0.0" @@ -18229,7 +19557,7 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-api-proc-macro 20.0.0", + "sp-api-proc-macro 20.0.3", "sp-core 34.0.0", "sp-externalities 0.29.0", "sp-metadata-ir 0.7.0", @@ -18243,54 +19571,68 @@ dependencies = [ [[package]] name = "sp-api" -version = "36.0.1" +version = "37.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "541da427f47dfb97f3dd0556fa3272bdc5dfa0d4c1ad53a22670a9bae4db63d7" +checksum = "1ee297c1304c6b069784dda4147ef5f478f7aef75b94e0838a38c29de792f1df" dependencies = [ "docify", "hash-db", "log", "parity-scale-codec", "scale-info", - "sp-api-proc-macro 22.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 36.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-api-proc-macro 23.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 37.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-externalities 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-metadata-ir 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-runtime 41.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-runtime-interface 29.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-state-machine 0.45.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-trie 39.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-version 39.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-metadata-ir 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-runtime 42.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-runtime-interface 30.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-state-machine 0.46.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-trie 40.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-version 40.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "thiserror 1.0.69", ] [[package]] name = "sp-api" -version = "36.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "docify", "hash-db", "log", "parity-scale-codec", "scale-info", - "sp-api-proc-macro 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-metadata-ir 0.10.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime-interface 29.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-state-machine 0.45.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-trie 39.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-version 39.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api-proc-macro 23.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-metadata-ir 0.11.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime-interface 30.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-state-machine 0.46.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-trie 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-version 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", ] [[package]] name = "sp-api-proc-macro" -version = "20.0.0" +version = "15.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "Inflector", + "blake2 0.10.6", + "expander", + "proc-macro-crate 3.3.0", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "sp-api-proc-macro" +version = "20.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9aadf9e97e694f0e343978aa632938c5de309cbcc8afed4136cb71596737278" +checksum = "5e3ec5a1a14307e21d2356e73e01573b6c82330a7e30eaceed59a90161b0c2d2" dependencies = [ "Inflector", "blake2 0.10.6", @@ -18298,14 +19640,14 @@ dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "sp-api-proc-macro" -version = "22.0.0" +version = "23.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36334085c348bb507debd40e604f71194b1fc669eb6fec81aebef08eb3466f6c" +checksum = "74a14a276fde5d6e5a0668494e3dd42739b346a7ac7b6348c74f9c9142f4474a" dependencies = [ "Inflector", "blake2 0.10.6", @@ -18313,13 +19655,13 @@ dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "sp-api-proc-macro" -version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "23.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "Inflector", "blake2 0.10.6", @@ -18327,7 +19669,19 @@ dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", +] + +[[package]] +name = "sp-application-crypto" +version = "30.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 28.0.0", + "sp-io 30.0.0", ] [[package]] @@ -18345,27 +19699,41 @@ dependencies = [ [[package]] name = "sp-application-crypto" -version = "40.1.0" +version = "41.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba375ab65a76f7413d1bfe48122fd347ce7bd2047e36ecbbd78f12f5adaed121" +checksum = "28c668f1ce424bc131f40ade33fa4c0bd4dcd2428479e1e291aad66d4b00c74f" dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-core 36.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-io 40.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 37.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-io 41.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sp-application-crypto" -version = "40.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", +] + +[[package]] +name = "sp-arithmetic" +version = "23.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" dependencies = [ + "docify", + "integer-sqrt", + "num-traits", "parity-scale-codec", "scale-info", "serde", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "static_assertions", ] [[package]] @@ -18385,8 +19753,23 @@ dependencies = [ [[package]] name = "sp-arithmetic" -version = "26.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "27.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2929fd12ac6ca3cfac7f62885866810ba4e9464814dbaa87592b5b5681b29aee" +dependencies = [ + "docify", + "integer-sqrt", + "num-traits", + "parity-scale-codec", + "scale-info", + "serde", + "static_assertions", +] + +[[package]] +name = "sp-arithmetic" +version = "27.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "docify", "integer-sqrt", @@ -18412,14 +19795,14 @@ dependencies = [ [[package]] name = "sp-authority-discovery" -version = "36.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "parity-scale-codec", "scale-info", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-application-crypto 40.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-application-crypto 41.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -18435,47 +19818,63 @@ dependencies = [ [[package]] name = "sp-block-builder" -version = "36.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-inherents 36.0.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-inherents 37.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "sp-blockchain" -version = "39.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "40.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "futures", "parity-scale-codec", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "schnellru", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-consensus", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-database", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-state-machine 0.45.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-state-machine 0.46.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", "tracing", ] [[package]] name = "sp-consensus" -version = "0.42.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.43.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "async-trait", "futures", "log", - "sp-inherents 36.0.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-state-machine 0.45.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-inherents 37.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-state-machine 0.46.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", ] +[[package]] +name = "sp-consensus-aura" +version = "0.32.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "async-trait", + "parity-scale-codec", + "scale-info", + "sp-api 26.0.0", + "sp-application-crypto 30.0.0", + "sp-consensus-slots 0.32.0", + "sp-inherents 26.0.0", + "sp-runtime 31.0.1", + "sp-timestamp 26.0.0", +] + [[package]] name = "sp-consensus-aura" version = "0.40.0" @@ -18495,18 +19894,36 @@ dependencies = [ [[package]] name = "sp-consensus-aura" -version = "0.42.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.43.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" +dependencies = [ + "async-trait", + "parity-scale-codec", + "scale-info", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-application-crypto 41.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-consensus-slots 0.43.0", + "sp-inherents 37.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-timestamp 37.0.0", +] + +[[package]] +name = "sp-consensus-babe" +version = "0.32.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" dependencies = [ "async-trait", "parity-scale-codec", "scale-info", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-application-crypto 40.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-consensus-slots 0.42.1", - "sp-inherents 36.0.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-timestamp 36.0.0", + "serde", + "sp-api 26.0.0", + "sp-application-crypto 30.0.0", + "sp-consensus-slots 0.32.0", + "sp-core 28.0.0", + "sp-inherents 26.0.0", + "sp-runtime 31.0.1", + "sp-timestamp 26.0.0", ] [[package]] @@ -18530,20 +19947,20 @@ dependencies = [ [[package]] name = "sp-consensus-babe" -version = "0.42.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.43.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "async-trait", "parity-scale-codec", "scale-info", "serde", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-application-crypto 40.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-consensus-slots 0.42.1", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-inherents 36.0.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-timestamp 36.0.0", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-application-crypto 41.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-consensus-slots 0.43.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-inherents 37.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-timestamp 37.0.0", ] [[package]] @@ -18564,27 +19981,27 @@ dependencies = [ "sp-keystore 0.40.0", "sp-mmr-primitives 34.1.0", "sp-runtime 39.0.5", - "sp-weights 31.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-weights 31.1.0", "strum 0.26.3", ] [[package]] name = "sp-consensus-beefy" -version = "24.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "25.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-application-crypto 40.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-mmr-primitives 36.1.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-weights 31.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-application-crypto 41.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keystore 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-mmr-primitives 37.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-weights 32.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "strum 0.26.3", ] @@ -18608,19 +20025,30 @@ dependencies = [ [[package]] name = "sp-consensus-grandpa" -version = "23.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "finality-grandpa", "log", "parity-scale-codec", "scale-info", "serde", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-application-crypto 40.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-application-crypto 41.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keystore 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", +] + +[[package]] +name = "sp-consensus-slots" +version = "0.32.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde", + "sp-timestamp 26.0.0", ] [[package]] @@ -18637,32 +20065,32 @@ dependencies = [ [[package]] name = "sp-consensus-slots" -version = "0.42.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.43.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-timestamp 36.0.0", + "sp-timestamp 37.0.0", ] [[package]] name = "sp-core" -version = "34.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c961a5e33fb2962fa775c044ceba43df9c6f917e2c35d63bfe23738468fa76a7" +version = "28.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" dependencies = [ - "array-bytes", + "ark-vrf", + "array-bytes 6.2.3", "bitflags 1.3.2", "blake2 0.10.6", - "bounded-collections", + "bounded-collections 0.3.2", "bs58", - "dyn-clonable", + "dyn-clone", "ed25519-zebra", "futures", "hash-db", "hash256-std-hasher", - "impl-serde 0.4.0", + "impl-serde 0.5.0", "itertools 0.11.0", "k256", "libsecp256k1", @@ -18670,23 +20098,24 @@ dependencies = [ "merlin", "parity-bip39", "parity-scale-codec", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "paste", - "primitive-types 0.12.2", + "primitive-types 0.13.1", "rand 0.8.5", "scale-info", - "schnorrkel 0.11.4", + "schnorrkel 0.11.5", "secp256k1 0.28.2", "secrecy 0.8.0", "serde", - "sp-crypto-hashing 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-debug-derive 14.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-externalities 0.29.0", - "sp-runtime-interface 28.0.0", - "sp-std 14.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-storage 21.0.0", + "sha2 0.10.9", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4)", + "sp-debug-derive 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4)", + "sp-externalities 0.25.0", + "sp-runtime-interface 24.0.0", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4)", + "sp-storage 19.0.0", "ss58-registry", - "substrate-bip39 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-bip39 0.4.7", "thiserror 1.0.69", "tracing", "w3f-bls", @@ -18695,22 +20124,21 @@ dependencies = [ [[package]] name = "sp-core" -version = "36.1.0" +version = "34.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cdbb58c21e6b27f2aadf3ff0c8b20a8ead13b9dfe63f46717fd59334517f3b4" +checksum = "c961a5e33fb2962fa775c044ceba43df9c6f917e2c35d63bfe23738468fa76a7" dependencies = [ - "ark-vrf", - "array-bytes", + "array-bytes 6.2.3", "bitflags 1.3.2", "blake2 0.10.6", - "bounded-collections", + "bounded-collections 0.2.4", "bs58", "dyn-clonable", "ed25519-zebra", "futures", "hash-db", "hash256-std-hasher", - "impl-serde 0.5.0", + "impl-serde 0.4.0", "itertools 0.11.0", "k256", "libsecp256k1", @@ -18718,21 +20146,21 @@ dependencies = [ "merlin", "parity-bip39", "parity-scale-codec", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "paste", - "primitive-types 0.13.1", + "primitive-types 0.12.2", "rand 0.8.5", "scale-info", - "schnorrkel 0.11.4", + "schnorrkel 0.11.5", "secp256k1 0.28.2", "secrecy 0.8.0", "serde", "sp-crypto-hashing 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-debug-derive 14.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-externalities 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-runtime-interface 29.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-externalities 0.29.0", + "sp-runtime-interface 28.0.0", "sp-std 14.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-storage 22.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-storage 21.0.0", "ss58-registry", "substrate-bip39 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "thiserror 1.0.69", @@ -18744,13 +20172,14 @@ dependencies = [ [[package]] name = "sp-core" version = "36.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cdbb58c21e6b27f2aadf3ff0c8b20a8ead13b9dfe63f46717fd59334517f3b4" dependencies = [ "ark-vrf", - "array-bytes", + "array-bytes 6.2.3", "bitflags 1.3.2", "blake2 0.10.6", - "bounded-collections", + "bounded-collections 0.2.4", "bs58", "dyn-clonable", "ed25519-zebra", @@ -18765,23 +20194,120 @@ dependencies = [ "merlin", "parity-bip39", "parity-scale-codec", - "parking_lot 0.12.3", + "parking_lot 0.12.4", + "paste", + "primitive-types 0.13.1", + "rand 0.8.5", + "scale-info", + "schnorrkel 0.11.5", + "secp256k1 0.28.2", + "secrecy 0.8.0", + "serde", + "sp-crypto-hashing 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-debug-derive 14.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-externalities 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-runtime-interface 29.0.1", + "sp-std 14.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-storage 22.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ss58-registry", + "substrate-bip39 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 1.0.69", + "tracing", + "w3f-bls", + "zeroize", +] + +[[package]] +name = "sp-core" +version = "37.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e1a46a6b2323401e4489184846a7fb7d89091b42602a2391cd3ef652ede2850" +dependencies = [ + "ark-vrf", + "array-bytes 6.2.3", + "bitflags 1.3.2", + "blake2 0.10.6", + "bounded-collections 0.2.4", + "bs58", + "dyn-clone", + "ed25519-zebra", + "futures", + "hash-db", + "hash256-std-hasher", + "impl-serde 0.5.0", + "itertools 0.11.0", + "k256", + "libsecp256k1", + "log", + "merlin", + "parity-bip39", + "parity-scale-codec", + "parking_lot 0.12.4", + "paste", + "primitive-types 0.13.1", + "rand 0.8.5", + "scale-info", + "schnorrkel 0.11.5", + "secp256k1 0.28.2", + "secrecy 0.8.0", + "serde", + "sha2 0.10.9", + "sp-crypto-hashing 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-debug-derive 14.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-externalities 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-runtime-interface 30.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-std 14.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-storage 22.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ss58-registry", + "substrate-bip39 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 1.0.69", + "tracing", + "w3f-bls", + "zeroize", +] + +[[package]] +name = "sp-core" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" +dependencies = [ + "ark-vrf", + "array-bytes 6.2.3", + "bitflags 1.3.2", + "blake2 0.10.6", + "bounded-collections 0.2.4", + "bs58", + "dyn-clone", + "ed25519-zebra", + "futures", + "hash-db", + "hash256-std-hasher", + "impl-serde 0.5.0", + "itertools 0.11.0", + "k256", + "libsecp256k1", + "log", + "merlin", + "parity-bip39", + "parity-scale-codec", + "parking_lot 0.12.4", "paste", "primitive-types 0.13.1", "rand 0.8.5", "scale-info", - "schnorrkel 0.11.4", + "schnorrkel 0.11.5", "secp256k1 0.28.2", "secrecy 0.8.0", "serde", - "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-debug-derive 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime-interface 29.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sha2 0.10.9", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-debug-derive 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime-interface 30.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "ss58-registry", - "substrate-bip39 0.6.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "substrate-bip39 0.6.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", "tracing", "w3f-bls", @@ -18805,7 +20331,20 @@ dependencies = [ [[package]] name = "sp-crypto-hashing" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" +dependencies = [ + "blake2b_simd", + "byteorder", + "digest 0.10.7", + "sha2 0.10.9", + "sha3", + "twox-hash", +] + +[[package]] +name = "sp-crypto-hashing" +version = "0.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" dependencies = [ "blake2b_simd", "byteorder", @@ -18823,26 +20362,36 @@ checksum = "b85d0f1f1e44bd8617eb2a48203ee854981229e3e79e6f468c7175d5fd37489b" dependencies = [ "quote", "sp-crypto-hashing 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "sp-crypto-hashing-proc-macro" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "quote", - "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "syn 2.0.101", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "syn 2.0.104", +] + +[[package]] +name = "sp-crypto-hashing-proc-macro" +version = "0.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "quote", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4)", + "syn 2.0.104", ] [[package]] name = "sp-database" version = "10.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "kvdb", - "parking_lot 0.12.3", + "parking_lot 0.12.4", ] [[package]] @@ -18853,17 +20402,37 @@ checksum = "48d09fa0a5f7299fb81ee25ae3853d26200f7a348148aed6de76be905c007dbe" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "sp-debug-derive" version = "14.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", +] + +[[package]] +name = "sp-debug-derive" +version = "14.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "sp-externalities" +version = "0.25.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "environmental", + "parity-scale-codec", + "sp-storage 19.0.0", ] [[package]] @@ -18891,11 +20460,23 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.30.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "environmental", "parity-scale-codec", - "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", +] + +[[package]] +name = "sp-genesis-builder" +version = "0.8.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde_json", + "sp-api 26.0.0", + "sp-runtime 31.0.1", ] [[package]] @@ -18913,14 +20494,27 @@ dependencies = [ [[package]] name = "sp-genesis-builder" -version = "0.17.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.18.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "parity-scale-codec", "scale-info", "serde_json", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", +] + +[[package]] +name = "sp-inherents" +version = "26.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "async-trait", + "impl-trait-for-tuples", + "parity-scale-codec", + "scale-info", + "sp-runtime 31.0.1", + "thiserror 1.0.69", ] [[package]] @@ -18939,17 +20533,43 @@ dependencies = [ [[package]] name = "sp-inherents" -version = "36.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "async-trait", "impl-trait-for-tuples", "parity-scale-codec", "scale-info", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", ] +[[package]] +name = "sp-io" +version = "30.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "bytes", + "docify", + "ed25519-dalek", + "libsecp256k1", + "log", + "parity-scale-codec", + "polkavm-derive 0.26.0", + "rustversion", + "secp256k1 0.28.2", + "sp-core 28.0.0", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4)", + "sp-externalities 0.25.0", + "sp-keystore 0.34.0", + "sp-runtime-interface 24.0.0", + "sp-state-machine 0.35.0", + "sp-tracing 16.0.0", + "sp-trie 29.0.0", + "tracing", + "tracing-core", +] + [[package]] name = "sp-io" version = "38.0.2" @@ -18992,22 +20612,23 @@ dependencies = [ "polkavm-derive 0.18.0", "rustversion", "secp256k1 0.28.2", - "sp-core 36.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 36.1.0", "sp-crypto-hashing 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-externalities 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-keystore 0.42.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-runtime-interface 29.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-state-machine 0.45.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-keystore 0.42.0", + "sp-runtime-interface 29.0.1", + "sp-state-machine 0.45.0", "sp-tracing 17.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-trie 39.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-trie 39.1.0", "tracing", "tracing-core", ] [[package]] name = "sp-io" -version = "40.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3f244e9a2818d21220ceb0915ac73a462814a92d0c354a124a818abdb7f4f66" dependencies = [ "bytes", "docify", @@ -19015,17 +20636,43 @@ dependencies = [ "libsecp256k1", "log", "parity-scale-codec", - "polkavm-derive 0.18.0", + "polkavm-derive 0.24.0", "rustversion", "secp256k1 0.28.2", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime-interface 29.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-state-machine 0.45.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-tracing 17.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-trie 39.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-crypto-hashing 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-externalities 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-keystore 0.43.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-runtime-interface 30.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-state-machine 0.46.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-tracing 17.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-trie 40.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tracing", + "tracing-core", +] + +[[package]] +name = "sp-io" +version = "41.0.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" +dependencies = [ + "bytes", + "docify", + "ed25519-dalek", + "libsecp256k1", + "log", + "parity-scale-codec", + "polkavm-derive 0.24.0", + "rustversion", + "secp256k1 0.28.2", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keystore 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime-interface 30.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-state-machine 0.46.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-tracing 17.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-trie 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "tracing", "tracing-core", ] @@ -19043,14 +20690,25 @@ dependencies = [ [[package]] name = "sp-keyring" -version = "41.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "42.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "strum 0.26.3", ] +[[package]] +name = "sp-keystore" +version = "0.34.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "parity-scale-codec", + "parking_lot 0.12.4", + "sp-core 28.0.0", + "sp-externalities 0.25.0", +] + [[package]] name = "sp-keystore" version = "0.40.0" @@ -19058,7 +20716,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0248b4d784cb4a01472276928977121fa39d977a5bb24793b6b15e64b046df42" dependencies = [ "parity-scale-codec", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "sp-core 34.0.0", "sp-externalities 0.29.0", ] @@ -19070,20 +20728,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "45f893398a5330e28f219662c7a0afa174fb068d8f82d2a9990016c4b0bc4369" dependencies = [ "parity-scale-codec", - "parking_lot 0.12.3", - "sp-core 36.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.12.4", + "sp-core 36.1.0", "sp-externalities 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sp-keystore" -version = "0.42.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.43.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "269d0ee360f6d072f9203485afea35583ac151521a525cc48b2a107fc576c2d9" dependencies = [ "parity-scale-codec", - "parking_lot 0.12.3", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "parking_lot 0.12.4", + "sp-core 37.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-externalities 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "sp-keystore" +version = "0.43.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" +dependencies = [ + "parity-scale-codec", + "parking_lot 0.12.4", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -19099,12 +20769,22 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "11.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "thiserror 1.0.69", "zstd 0.12.4", ] +[[package]] +name = "sp-metadata-ir" +version = "0.6.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "frame-metadata 23.0.0", + "parity-scale-codec", + "scale-info", +] + [[package]] name = "sp-metadata-ir" version = "0.7.0" @@ -19118,34 +20798,34 @@ dependencies = [ [[package]] name = "sp-metadata-ir" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82d1db25e362edbf5531b427d4bdfc2562bec6a031c3eb2a9145c0a0a01a572d" +checksum = "2319040b39b9614c35c7faaf548172f4d9a3b44b6992bbae534b096d5cdb4f79" dependencies = [ - "frame-metadata 20.0.0", + "frame-metadata 23.0.0", "parity-scale-codec", "scale-info", ] [[package]] name = "sp-metadata-ir" -version = "0.10.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.11.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-metadata 20.0.0", + "frame-metadata 23.0.0", "parity-scale-codec", "scale-info", ] [[package]] name = "sp-mixnet" -version = "0.14.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.15.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "parity-scale-codec", "scale-info", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-application-crypto 40.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-application-crypto 41.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -19168,18 +20848,18 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" -version = "36.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "log", "parity-scale-codec", "polkadot-ckb-merkle-mountain-range 0.8.1", "scale-info", "serde", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-debug-derive 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-debug-derive 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", ] @@ -19192,22 +20872,22 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-arithmetic 26.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-arithmetic 26.1.0", "sp-core 34.0.0", "sp-runtime 39.0.5", ] [[package]] name = "sp-npos-elections" -version = "36.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-arithmetic 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -19223,12 +20903,21 @@ dependencies = [ [[package]] name = "sp-offchain" -version = "36.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", +] + +[[package]] +name = "sp-panic-handler" +version = "13.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "backtrace", + "regex", ] [[package]] @@ -19244,7 +20933,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "13.0.2" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "backtrace", "regex", @@ -19252,12 +20941,41 @@ dependencies = [ [[package]] name = "sp-rpc" -version = "34.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "35.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "rustc-hash 1.1.0", "serde", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", +] + +[[package]] +name = "sp-runtime" +version = "31.0.1" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "binary-merkle-tree 13.0.0", + "docify", + "either", + "hash256-std-hasher", + "impl-trait-for-tuples", + "log", + "num-traits", + "parity-scale-codec", + "paste", + "rand 0.8.5", + "scale-info", + "serde", + "simple-mermaid", + "sp-application-crypto 30.0.0", + "sp-arithmetic 23.0.0", + "sp-core 28.0.0", + "sp-io 30.0.0", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4)", + "sp-trie 29.0.0", + "sp-weights 27.0.0", + "tracing", + "tuplex", ] [[package]] @@ -19279,19 +20997,19 @@ dependencies = [ "serde", "simple-mermaid", "sp-application-crypto 38.0.0", - "sp-arithmetic 26.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-arithmetic 26.1.0", "sp-core 34.0.0", "sp-io 38.0.2", "sp-std 14.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-weights 31.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-weights 31.1.0", "tracing", ] [[package]] name = "sp-runtime" -version = "41.1.0" +version = "42.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3864101a28faba3d8eca026e3f56ea20dd1d979ce1bcc20152e86c9d82be52bf" +checksum = "b25d4d3811410317175ff121b3ff8c8b723504dadf37cd418b5192a5098d11bf" dependencies = [ "binary-merkle-tree 16.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "docify", @@ -19306,23 +21024,23 @@ dependencies = [ "scale-info", "serde", "simple-mermaid", - "sp-application-crypto 40.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-arithmetic 26.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 36.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-io 40.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-application-crypto 41.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-arithmetic 27.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 37.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-io 41.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "sp-std 14.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-trie 39.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-weights 31.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-trie 40.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-weights 32.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "tracing", "tuplex", ] [[package]] name = "sp-runtime" -version = "41.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "42.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "binary-merkle-tree 16.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "binary-merkle-tree 16.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "docify", "either", "hash256-std-hasher", @@ -19335,76 +21053,128 @@ dependencies = [ "scale-info", "serde", "simple-mermaid", - "sp-application-crypto 40.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-trie 39.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-weights 31.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-application-crypto 41.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-arithmetic 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-trie 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-weights 32.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "tracing", "tuplex", ] +[[package]] +name = "sp-runtime-interface" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "bytes", + "impl-trait-for-tuples", + "parity-scale-codec", + "polkavm-derive 0.26.0", + "primitive-types 0.13.1", + "sp-externalities 0.25.0", + "sp-runtime-interface-proc-macro 17.0.0", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4)", + "sp-storage 19.0.0", + "sp-tracing 16.0.0", + "sp-wasm-interface 20.0.0", + "static_assertions", +] + [[package]] name = "sp-runtime-interface" version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "985eb981f40c689c6a0012c937b68ed58dabb4341d06f2dfe4dfd5ed72fa4017" +checksum = "985eb981f40c689c6a0012c937b68ed58dabb4341d06f2dfe4dfd5ed72fa4017" +dependencies = [ + "bytes", + "impl-trait-for-tuples", + "parity-scale-codec", + "polkavm-derive 0.9.1", + "primitive-types 0.12.2", + "sp-externalities 0.29.0", + "sp-runtime-interface-proc-macro 18.0.0", + "sp-std 14.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-storage 21.0.0", + "sp-tracing 17.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-wasm-interface 21.0.1", + "static_assertions", +] + +[[package]] +name = "sp-runtime-interface" +version = "29.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e99db36a7aff44c335f5d5b36c182a3e0cac61de2fefbe2eeac6af5fb13f63bf" dependencies = [ "bytes", "impl-trait-for-tuples", "parity-scale-codec", - "polkavm-derive 0.9.1", - "primitive-types 0.12.2", - "sp-externalities 0.29.0", - "sp-runtime-interface-proc-macro 18.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "polkavm-derive 0.18.0", + "primitive-types 0.13.1", + "sp-externalities 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-runtime-interface-proc-macro 18.0.0", "sp-std 14.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-storage 21.0.0", + "sp-storage 22.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-tracing 17.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-wasm-interface 21.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-wasm-interface 21.0.1", "static_assertions", ] [[package]] name = "sp-runtime-interface" -version = "29.0.1" +version = "30.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e99db36a7aff44c335f5d5b36c182a3e0cac61de2fefbe2eeac6af5fb13f63bf" +checksum = "9fcd9c219da8c85d45d5ae1ce80e73863a872ac27424880322903c6ac893c06e" dependencies = [ "bytes", "impl-trait-for-tuples", "parity-scale-codec", - "polkavm-derive 0.18.0", + "polkavm-derive 0.24.0", "primitive-types 0.13.1", "sp-externalities 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-runtime-interface-proc-macro 18.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-runtime-interface-proc-macro 19.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-std 14.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-storage 22.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-tracing 17.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-wasm-interface 21.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-wasm-interface 22.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "static_assertions", ] [[package]] name = "sp-runtime-interface" -version = "29.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "30.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "bytes", "impl-trait-for-tuples", "parity-scale-codec", - "polkavm-derive 0.18.0", + "polkavm-derive 0.24.0", "primitive-types 0.13.1", - "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime-interface-proc-macro 18.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-tracing 17.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-wasm-interface 21.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime-interface-proc-macro 19.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-tracing 17.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-wasm-interface 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "static_assertions", ] +[[package]] +name = "sp-runtime-interface-proc-macro" +version = "17.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "Inflector", + "expander", + "proc-macro-crate 3.3.0", + "proc-macro2", + "quote", + "syn 2.0.104", +] + [[package]] name = "sp-runtime-interface-proc-macro" version = "18.0.0" @@ -19416,20 +21186,34 @@ dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "sp-runtime-interface-proc-macro" -version = "18.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "19.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca35431af10a450787ebfdcb6d7a91c23fa91eafe73a3f9d37db05c9ab36154b" +dependencies = [ + "Inflector", + "expander", + "proc-macro-crate 3.3.0", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "sp-runtime-interface-proc-macro" +version = "19.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "Inflector", "expander", "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -19449,16 +21233,29 @@ dependencies = [ [[package]] name = "sp-session" -version = "38.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "39.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" +dependencies = [ + "parity-scale-codec", + "scale-info", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keystore 0.43.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-staking 39.0.0", +] + +[[package]] +name = "sp-staking" +version = "26.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" dependencies = [ + "impl-trait-for-tuples", "parity-scale-codec", "scale-info", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-staking 38.0.0", + "serde", + "sp-core 28.0.0", + "sp-runtime 31.0.1", ] [[package]] @@ -19491,15 +21288,35 @@ dependencies = [ [[package]] name = "sp-staking" -version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "39.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", "scale-info", "serde", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", +] + +[[package]] +name = "sp-state-machine" +version = "0.35.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "hash-db", + "log", + "parity-scale-codec", + "parking_lot 0.12.4", + "rand 0.8.5", + "smallvec", + "sp-core 28.0.0", + "sp-externalities 0.25.0", + "sp-panic-handler 13.0.0", + "sp-trie 29.0.0", + "thiserror 1.0.69", + "tracing", + "trie-db 0.30.0", ] [[package]] @@ -19511,7 +21328,7 @@ dependencies = [ "hash-db", "log", "parity-scale-codec", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "rand 0.8.5", "smallvec", "sp-core 34.0.0", @@ -19532,13 +21349,13 @@ dependencies = [ "hash-db", "log", "parity-scale-codec", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "rand 0.8.5", "smallvec", - "sp-core 36.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 36.1.0", "sp-externalities 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-panic-handler 13.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-trie 39.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-trie 39.1.0", "thiserror 1.0.69", "tracing", "trie-db 0.30.0", @@ -19546,19 +21363,40 @@ dependencies = [ [[package]] name = "sp-state-machine" -version = "0.45.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "483422b016ee9ddba949db6d3092961ed58526520f0586df74dc07defd922a58" +dependencies = [ + "hash-db", + "log", + "parity-scale-codec", + "parking_lot 0.12.4", + "rand 0.8.5", + "smallvec", + "sp-core 37.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-externalities 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-panic-handler 13.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-trie 40.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 1.0.69", + "tracing", + "trie-db 0.30.0", +] + +[[package]] +name = "sp-state-machine" +version = "0.46.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "hash-db", "log", "parity-scale-codec", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "rand 0.8.5", "smallvec", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-panic-handler 13.0.2 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-trie 39.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-panic-handler 13.0.2 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-trie 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", "tracing", "trie-db 0.30.0", @@ -19566,8 +21404,8 @@ dependencies = [ [[package]] name = "sp-statement-store" -version = "20.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "21.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "aes-gcm", "curve25519-dalek", @@ -19577,13 +21415,13 @@ dependencies = [ "rand 0.8.5", "scale-info", "sha2 0.10.9", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-application-crypto 40.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime-interface 29.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-application-crypto 41.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime-interface 30.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", "x25519-dalek", ] @@ -19597,7 +21435,24 @@ checksum = "12f8ee986414b0a9ad741776762f4083cd3a5128449b982a3919c4df36874834" [[package]] name = "sp-std" version = "14.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" + +[[package]] +name = "sp-std" +version = "14.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" + +[[package]] +name = "sp-storage" +version = "19.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "impl-serde 0.5.0", + "parity-scale-codec", + "ref-cast", + "serde", + "sp-debug-derive 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4)", +] [[package]] name = "sp-storage" @@ -19628,13 +21483,25 @@ dependencies = [ [[package]] name = "sp-storage" version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "impl-serde 0.5.0", "parity-scale-codec", "ref-cast", "serde", - "sp-debug-derive 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-debug-derive 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", +] + +[[package]] +name = "sp-timestamp" +version = "26.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "async-trait", + "parity-scale-codec", + "sp-inherents 26.0.0", + "sp-runtime 31.0.1", + "thiserror 1.0.69", ] [[package]] @@ -19652,16 +21519,28 @@ dependencies = [ [[package]] name = "sp-timestamp" -version = "36.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "async-trait", "parity-scale-codec", - "sp-inherents 36.0.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-inherents 37.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", ] +[[package]] +name = "sp-tracing" +version = "16.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "parity-scale-codec", + "regex", + "tracing", + "tracing-core", + "tracing-subscriber", +] + [[package]] name = "sp-tracing" version = "17.1.0" @@ -19677,7 +21556,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "17.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "parity-scale-codec", "tracing", @@ -19697,25 +21576,48 @@ dependencies = [ [[package]] name = "sp-transaction-pool" -version = "36.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "sp-transaction-storage-proof" -version = "36.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "async-trait", "parity-scale-codec", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-inherents 36.0.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-trie 39.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-inherents 37.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-trie 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", +] + +[[package]] +name = "sp-trie" +version = "29.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "ahash 0.8.12", + "hash-db", + "memory-db 0.33.0", + "nohash-hasher", + "parity-scale-codec", + "parking_lot 0.12.4", + "rand 0.8.5", + "scale-info", + "schnellru", + "sp-core 28.0.0", + "sp-externalities 0.25.0", + "substrate-prometheus-endpoint 0.17.0", + "thiserror 1.0.69", + "tracing", + "trie-db 0.30.0", + "trie-root", ] [[package]] @@ -19727,10 +21629,10 @@ dependencies = [ "ahash 0.8.12", "hash-db", "lazy_static", - "memory-db", + "memory-db 0.32.0", "nohash-hasher", "parity-scale-codec", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "rand 0.8.5", "scale-info", "schnellru", @@ -19750,14 +21652,14 @@ checksum = "a555bf4c42ca89e2e7bf2f11308806dad13cdbd7f8fd60cf2649f12b6ee809bf" dependencies = [ "ahash 0.8.12", "hash-db", - "memory-db", + "memory-db 0.32.0", "nohash-hasher", "parity-scale-codec", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "rand 0.8.5", "scale-info", "schnellru", - "sp-core 36.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 36.1.0", "sp-externalities 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", "thiserror 1.0.69", "tracing", @@ -19767,26 +21669,72 @@ dependencies = [ [[package]] name = "sp-trie" -version = "39.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "40.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b2e157c9cf44a1a9d20f3c69322e302db70399bf3f218211387fe009dd4041c" +dependencies = [ + "ahash 0.8.12", + "foldhash", + "hash-db", + "hashbrown 0.15.5", + "memory-db 0.34.0", + "nohash-hasher", + "parity-scale-codec", + "parking_lot 0.12.4", + "rand 0.8.5", + "scale-info", + "schnellru", + "sp-core 37.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-externalities 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-prometheus-endpoint 0.17.4", + "thiserror 1.0.69", + "tracing", + "trie-db 0.30.0", + "trie-root", +] + +[[package]] +name = "sp-trie" +version = "40.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "ahash 0.8.12", + "foldhash", "hash-db", - "memory-db", + "hashbrown 0.15.5", + "memory-db 0.34.0", "nohash-hasher", "parity-scale-codec", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "rand 0.8.5", "scale-info", "schnellru", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "substrate-prometheus-endpoint 0.17.2", "thiserror 1.0.69", "tracing", "trie-db 0.30.0", "trie-root", ] +[[package]] +name = "sp-version" +version = "29.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "impl-serde 0.5.0", + "parity-scale-codec", + "parity-wasm", + "scale-info", + "serde", + "sp-crypto-hashing-proc-macro 0.1.0 (git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4)", + "sp-runtime 31.0.1", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4)", + "sp-version-proc-macro 13.0.0", + "thiserror 1.0.69", +] + [[package]] name = "sp-version" version = "37.0.0" @@ -19807,9 +21755,9 @@ dependencies = [ [[package]] name = "sp-version" -version = "39.0.0" +version = "40.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd736a15ff2ea0a67c5a3bbdfd842d88f11f0774d7701a8d8a316f8deba276c5" +checksum = "98fd599db91c11c32e4df4c85b22b6396f28284889a583db9151ff59599dd1cb" dependencies = [ "impl-serde 0.5.0", "parity-scale-codec", @@ -19817,7 +21765,7 @@ dependencies = [ "scale-info", "serde", "sp-crypto-hashing-proc-macro 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-runtime 41.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-runtime 42.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-std 14.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-version-proc-macro 15.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "thiserror 1.0.69", @@ -19825,21 +21773,33 @@ dependencies = [ [[package]] name = "sp-version" -version = "39.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "40.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "impl-serde 0.5.0", "parity-scale-codec", "parity-wasm", "scale-info", "serde", - "sp-crypto-hashing-proc-macro 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-version-proc-macro 15.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-crypto-hashing-proc-macro 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-version-proc-macro 15.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror 1.0.69", ] +[[package]] +name = "sp-version-proc-macro" +version = "13.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "parity-scale-codec", + "proc-macro-warning", + "proc-macro2", + "quote", + "syn 2.0.104", +] + [[package]] name = "sp-version-proc-macro" version = "14.0.0" @@ -19849,7 +21809,7 @@ dependencies = [ "parity-scale-codec", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -19862,19 +21822,30 @@ dependencies = [ "proc-macro-warning", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "sp-version-proc-macro" version = "15.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "parity-scale-codec", "proc-macro-warning", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", +] + +[[package]] +name = "sp-wasm-interface" +version = "20.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "anyhow", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", ] [[package]] @@ -19882,6 +21853,18 @@ name = "sp-wasm-interface" version = "21.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b066baa6d57951600b14ffe1243f54c47f9c23dd89c262e17ca00ae8dca58be9" +dependencies = [ + "anyhow", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", +] + +[[package]] +name = "sp-wasm-interface" +version = "22.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffdbc579c72fc03263894a0077383f543a093020d75741092511bb05a440ada6" dependencies = [ "anyhow", "impl-trait-for-tuples", @@ -19892,8 +21875,8 @@ dependencies = [ [[package]] name = "sp-wasm-interface" -version = "21.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "22.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "anyhow", "impl-trait-for-tuples", @@ -19902,33 +21885,62 @@ dependencies = [ "wasmtime", ] +[[package]] +name = "sp-weights" +version = "27.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "bounded-collections 0.3.2", + "parity-scale-codec", + "scale-info", + "serde", + "smallvec", + "sp-arithmetic 23.0.0", + "sp-debug-derive 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4)", +] + [[package]] name = "sp-weights" version = "31.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "515aa194eabac059041df2dbee75b059b99981213ec680e9de85b45b6988346a" dependencies = [ - "bounded-collections", + "bounded-collections 0.2.4", "parity-scale-codec", "scale-info", "serde", "smallvec", - "sp-arithmetic 26.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-arithmetic 26.1.0", "sp-debug-derive 14.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sp-weights" -version = "31.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "32.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8a1d448faceb064bb114df31fc45ff86ea2ee8fd17810c4357a578d081f7732" +dependencies = [ + "bounded-collections 0.2.4", + "parity-scale-codec", + "scale-info", + "serde", + "smallvec", + "sp-arithmetic 27.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-debug-derive 14.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "sp-weights" +version = "32.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "bounded-collections", + "bounded-collections 0.2.4", "parity-scale-codec", "scale-info", "serde", "smallvec", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-debug-derive 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-arithmetic 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-debug-derive 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -20022,15 +22034,36 @@ dependencies = [ [[package]] name = "staging-parachain-info" -version = "0.20.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.21.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "cumulus-primitives-core 0.18.1", - "frame-support 40.1.0", - "frame-system 40.1.0", + "cumulus-primitives-core 0.19.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "parity-scale-codec", "scale-info", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", +] + +[[package]] +name = "staging-xcm" +version = "7.0.1" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "array-bytes 6.2.3", + "bounded-collections 0.3.2", + "derive-where", + "environmental", + "frame-support 28.0.0", + "hex-literal 0.4.1", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "scale-info", + "serde", + "sp-runtime 31.0.1", + "sp-weights 27.0.0", + "xcm-procedural 7.0.0", ] [[package]] @@ -20039,8 +22072,8 @@ version = "11.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aded0292274ad473250c22ed3deaf2d9ed47d15786d700e9e83ab7c1cad2ad44" dependencies = [ - "array-bytes", - "bounded-collections", + "array-bytes 6.2.3", + "bounded-collections 0.2.4", "derivative", "environmental", "impl-trait-for-tuples", @@ -20048,7 +22081,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-weights 31.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-weights 31.1.0", "xcm-procedural 8.0.0", ] @@ -20058,8 +22091,8 @@ version = "14.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3f66daa99c90c4b1443696ce42f38aa9d47954ae6270301be42f049a1bf0ba5" dependencies = [ - "array-bytes", - "bounded-collections", + "array-bytes 6.2.3", + "bounded-collections 0.2.4", "derivative", "environmental", "impl-trait-for-tuples", @@ -20068,28 +22101,28 @@ dependencies = [ "scale-info", "serde", "sp-runtime 39.0.5", - "sp-weights 31.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-weights 31.1.0", "xcm-procedural 10.1.0", ] [[package]] name = "staging-xcm" -version = "16.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "17.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "array-bytes", - "bounded-collections", + "array-bytes 6.2.3", + "bounded-collections 0.2.4", "derive-where", "environmental", - "frame-support 40.1.0", - "hex-literal", + "frame-support 41.0.0", + "hex-literal 0.4.1", "impl-trait-for-tuples", "log", "parity-scale-codec", "scale-info", "serde", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-weights 31.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-weights 32.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "xcm-procedural 11.0.2", ] @@ -20108,76 +22141,76 @@ dependencies = [ "parity-scale-codec", "polkadot-parachain-primitives 14.0.0", "scale-info", - "sp-arithmetic 26.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-arithmetic 26.1.0", "sp-io 38.0.2", "sp-runtime 39.0.5", - "sp-weights 31.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-weights 31.1.0", "staging-xcm 14.2.2", - "staging-xcm-executor 17.0.2", + "staging-xcm-executor 17.0.3", ] [[package]] name = "staging-xcm-builder" -version = "20.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "21.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "environmental", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "impl-trait-for-tuples", - "pallet-asset-conversion 22.0.0", - "pallet-transaction-payment 40.0.0", - "parity-scale-codec", - "polkadot-parachain-primitives 16.1.0", - "scale-info", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-weights 31.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", - "staging-xcm-executor 19.1.0", + "pallet-asset-conversion 23.0.0", + "pallet-transaction-payment 41.0.0", + "parity-scale-codec", + "polkadot-parachain-primitives 17.0.0", + "scale-info", + "sp-arithmetic 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-weights 32.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", + "staging-xcm-executor 20.0.0", "tracing", ] [[package]] name = "staging-xcm-executor" -version = "17.0.2" +version = "17.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7564cee33c808c1b543ac915fcd47ff5a77bcff6303bf56d59ffdbed2dd5ce1c" +checksum = "11c8c6a857591de393d29f74403ac956a6fec5e9acc6af0c13e9d3476a8ddebd" dependencies = [ "environmental", - "frame-benchmarking 38.0.0", + "frame-benchmarking 38.1.1", "frame-support 38.2.0", "impl-trait-for-tuples", "parity-scale-codec", "scale-info", - "sp-arithmetic 26.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-arithmetic 26.1.0", "sp-core 34.0.0", "sp-io 38.0.2", "sp-runtime 39.0.5", - "sp-weights 31.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-weights 31.1.0", "staging-xcm 14.2.2", "tracing", ] [[package]] name = "staging-xcm-executor" -version = "19.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "20.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "environmental", - "frame-benchmarking 40.0.0", - "frame-support 40.1.0", + "frame-benchmarking 41.0.0", + "frame-support 41.0.0", "impl-trait-for-tuples", "parity-scale-codec", "scale-info", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-weights 31.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", + "sp-arithmetic 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-weights 32.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", "tracing", ] @@ -20189,15 +22222,15 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "static_init" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a2a1c578e98c1c16fc3b8ec1328f7659a500737d7a0c6d625e73e830ff9c1f6" +checksum = "8bae1df58c5fea7502e8e352ec26b5579f6178e1fdb311e088580c980dee25ed" dependencies = [ "bitflags 1.3.2", - "cfg_aliases 0.1.1", + "cfg_aliases 0.2.1", "libc", - "parking_lot 0.11.2", - "parking_lot_core 0.8.6", + "parking_lot 0.12.4", + "parking_lot_core 0.9.11", "static_init_macro", "winapi", ] @@ -20276,7 +22309,19 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.101", + "syn 2.0.104", +] + +[[package]] +name = "substrate-bip39" +version = "0.4.7" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "hmac 0.12.1", + "pbkdf2", + "schnorrkel 0.11.5", + "sha2 0.10.9", + "zeroize", ] [[package]] @@ -20287,7 +22332,7 @@ checksum = "ca58ffd742f693dc13d69bdbb2e642ae239e0053f6aab3b104252892f856700a" dependencies = [ "hmac 0.12.1", "pbkdf2", - "schnorrkel 0.11.4", + "schnorrkel 0.11.5", "sha2 0.10.9", "zeroize", ] @@ -20295,11 +22340,11 @@ dependencies = [ [[package]] name = "substrate-bip39" version = "0.6.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "hmac 0.12.1", "pbkdf2", - "schnorrkel 0.11.4", + "schnorrkel 0.11.5", "sha2 0.10.9", "zeroize", ] @@ -20326,32 +22371,61 @@ checksum = "b285e7d183a32732fdc119f3d81b7915790191fad602b7c709ef247073c77a2e" [[package]] name = "substrate-build-script-utils" version = "11.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" [[package]] name = "substrate-frame-rpc-system" -version = "43.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "45.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "docify", - "frame-system-rpc-runtime-api 36.0.0", + "frame-system-rpc-runtime-api 37.0.0", "futures", "jsonrpsee", "log", "parity-scale-codec", "sc-rpc-api", "sc-transaction-pool-api", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-block-builder 36.0.0", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-block-builder 37.0.0", "sp-blockchain", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", +] + +[[package]] +name = "substrate-prometheus-endpoint" +version = "0.17.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "http-body-util", + "hyper 1.6.0", + "hyper-util", + "log", + "prometheus", + "thiserror 1.0.69", + "tokio", ] [[package]] name = "substrate-prometheus-endpoint" version = "0.17.2" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" +dependencies = [ + "http-body-util", + "hyper 1.6.0", + "hyper-util", + "log", + "prometheus", + "thiserror 1.0.69", + "tokio", +] + +[[package]] +name = "substrate-prometheus-endpoint" +version = "0.17.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41a20e2daeebc8c3c6f646d9a867df9fc2f879c6955c4a61860873a041c88ea4" dependencies = [ "http-body-util", "hyper 1.6.0", @@ -20365,9 +22439,9 @@ dependencies = [ [[package]] name = "substrate-state-machine" version = "1.15.3" -source = "git+https://github.com/r0gue-io/ismp?branch=polkadot-stable2503-4#97e0ba9e2cb7f7c27a43c66ee9decbbfa5f617f4" +source = "git+https://github.com/r0gue-io/ismp?branch=polkadot-stable2506#a64c9c79824f1f6b0e0b5288bcaba18241fc19a0" dependencies = [ - "frame-support 40.1.0", + "frame-support 41.0.0", "hash-db", "ismp", "pallet-ismp", @@ -20375,26 +22449,26 @@ dependencies = [ "primitive-types 0.13.1", "scale-info", "serde", - "sp-consensus-aura 0.42.0", - "sp-consensus-babe 0.42.1", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-trie 39.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-consensus-aura 0.43.0", + "sp-consensus-babe 0.43.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-trie 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "substrate-state-trie-migration-rpc" -version = "42.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "44.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "jsonrpsee", "parity-scale-codec", "sc-client-api", "sc-rpc-api", "serde", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-state-machine 0.45.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-trie 39.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-state-machine 0.46.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-trie 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "trie-db 0.30.0", ] @@ -20414,46 +22488,46 @@ dependencies = [ "sp-maybe-compressed-blob 11.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "strum 0.26.3", "tempfile", - "toml 0.8.22", + "toml 0.8.23", "walkdir", "wasm-opt", ] [[package]] name = "substrate-wasm-builder" -version = "26.0.1" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1adc17ecd661e16b25708f36f6e6961f809a3ab16c89132a4acd7936c0f31e46" +checksum = "c57b288a411017a7e96ae36a767647cc3e66ea49423d4cd72885adac47beaf07" dependencies = [ - "array-bytes", + "array-bytes 6.2.3", "build-helper", "cargo_metadata 0.15.4", "console", "filetime", - "frame-metadata 20.0.0", + "frame-metadata 23.0.0", "jobserver", "merkleized-metadata", "parity-scale-codec", "parity-wasm", - "polkavm-linker 0.18.0", - "sc-executor 0.42.0 (registry+https://github.com/rust-lang/crates.io-index)", + "polkavm-linker 0.24.0", + "sc-executor 0.43.0 (registry+https://github.com/rust-lang/crates.io-index)", "shlex", - "sp-core 36.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-io 40.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 37.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-io 41.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "sp-maybe-compressed-blob 11.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-tracing 17.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-version 39.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-version 40.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "strum 0.26.3", "tempfile", - "toml 0.8.22", + "toml 0.8.23", "walkdir", "wasm-opt", ] [[package]] name = "substrate-wasm-builder" -version = "26.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "27.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "build-helper", "cargo_metadata 0.15.4", @@ -20461,12 +22535,12 @@ dependencies = [ "filetime", "jobserver", "parity-wasm", - "polkavm-linker 0.18.0", + "polkavm-linker 0.24.0", "shlex", - "sp-maybe-compressed-blob 11.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-maybe-compressed-blob 11.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "strum 0.26.3", "tempfile", - "toml 0.8.22", + "toml 0.8.23", "walkdir", "wasm-opt", ] @@ -20491,33 +22565,32 @@ checksum = "734676eb262c623cec13c3155096e08d1f8f29adce39ba17948b18dad1e54142" [[package]] name = "subxt" -version = "0.38.1" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c17d7ec2359d33133b63c97e28c8b7cd3f0a5bc6ce567ae3aef9d9e85be3433" +checksum = "03459d84546def5e1d0d22b162754609f18e031522b0319b53306f5829de9c09" dependencies = [ "async-trait", "derive-where", "either", - "frame-metadata 17.0.0", + "frame-metadata 20.0.0", "futures", "hex", - "impl-serde 0.5.0", - "jsonrpsee", "parity-scale-codec", - "polkadot-sdk", "primitive-types 0.13.1", - "scale-bits 0.6.0", - "scale-decode 0.14.0", - "scale-encode 0.8.0", + "scale-bits 0.7.0", + "scale-decode 0.16.0", + "scale-encode 0.10.0", "scale-info", "scale-value", "serde", "serde_json", + "sp-crypto-hashing 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "subxt-core", "subxt-lightclient", "subxt-macro", "subxt-metadata", - "thiserror 1.0.69", + "subxt-rpcs", + "thiserror 2.0.14", "tokio", "tokio-util", "tracing", @@ -20527,9 +22600,9 @@ dependencies = [ [[package]] name = "subxt-codegen" -version = "0.38.1" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6550ef451c77db6e3bc7c56fb6fe1dca9398a2c8fc774b127f6a396a769b9c5b" +checksum = "324c52c09919fec8c22a4b572a466878322e99fe14a9e3d50d6c3700a226ec25" dependencies = [ "heck 0.5.0", "parity-scale-codec", @@ -20538,51 +22611,52 @@ dependencies = [ "scale-info", "scale-typegen", "subxt-metadata", - "syn 2.0.101", - "thiserror 1.0.69", + "syn 2.0.104", + "thiserror 2.0.14", ] [[package]] name = "subxt-core" -version = "0.38.1" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7a1bc6c9c1724971636a66e3225a7253cdb35bb6efb81524a6c71c04f08c59" +checksum = "66ef00be9d64885ec94e478a58e4e39d222024b20013ae7df4fc6ece545391aa" dependencies = [ "base58", "blake2 0.10.6", "derive-where", "frame-decode", - "frame-metadata 17.0.0", + "frame-metadata 20.0.0", "hashbrown 0.14.5", "hex", "impl-serde 0.5.0", "keccak-hash", "parity-scale-codec", - "polkadot-sdk", "primitive-types 0.13.1", - "scale-bits 0.6.0", - "scale-decode 0.14.0", - "scale-encode 0.8.0", + "scale-bits 0.7.0", + "scale-decode 0.16.0", + "scale-encode 0.10.0", "scale-info", "scale-value", "serde", "serde_json", + "sp-crypto-hashing 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "subxt-metadata", + "thiserror 2.0.14", "tracing", ] [[package]] name = "subxt-lightclient" -version = "0.38.1" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ebc9131da4d0ba1f7814495b8cc79698798ccd52cacd7bcefe451e415bd945" +checksum = "ce07c2515b2e63b85ec3043fe4461b287af0615d4832c2fe6e81ba780b906bc0" dependencies = [ "futures", "futures-util", "serde", "serde_json", "smoldot-light 0.16.2", - "thiserror 1.0.69", + "thiserror 2.0.14", "tokio", "tokio-stream", "tracing", @@ -20590,9 +22664,9 @@ dependencies = [ [[package]] name = "subxt-macro" -version = "0.38.1" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7819c5e09aae0319981ee853869f2fcd1fac4db8babd0d004c17161297aadc05" +checksum = "7c2c8da275a620dd676381d72395dfea91f0a6cd849665b4f1d0919371850701" dependencies = [ "darling 0.20.11", "parity-scale-codec", @@ -20601,28 +22675,52 @@ dependencies = [ "scale-typegen", "subxt-codegen", "subxt-utils-fetchmetadata", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "subxt-metadata" -version = "0.38.1" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aacd4e7484fef58deaa2dcb32d94753a864b208a668c0dd0c28be1d8abeeadb2" +checksum = "fff4591673600c4388e21305788282414d26c791b4dee21b7cb0b19c10076f98" dependencies = [ "frame-decode", - "frame-metadata 17.0.0", + "frame-metadata 20.0.0", "hashbrown 0.14.5", "parity-scale-codec", - "polkadot-sdk", "scale-info", + "sp-crypto-hashing 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 2.0.14", +] + +[[package]] +name = "subxt-rpcs" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ba7494d250d65dc3439365ac5e8e0fbb9c3992e6e84b7aa01d69e082249b8b8" +dependencies = [ + "derive-where", + "frame-metadata 20.0.0", + "futures", + "hex", + "impl-serde 0.5.0", + "jsonrpsee", + "parity-scale-codec", + "primitive-types 0.13.1", + "serde", + "serde_json", + "subxt-core", + "subxt-lightclient", + "thiserror 2.0.14", + "tracing", + "url", ] [[package]] name = "subxt-signer" -version = "0.38.1" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d680352d04665b1e4eb6f9d2a54b800c4d8e1b20478e69be1b7d975b08d9fc34" +checksum = "4a2370298a210ed1df26152db7209a85e0ed8cfbce035309c3b37f7b61755377" dependencies = [ "base64 0.22.1", "bip32", @@ -20634,28 +22732,29 @@ dependencies = [ "keccak-hash", "parity-scale-codec", "pbkdf2", - "polkadot-sdk", "regex", - "schnorrkel 0.11.4", + "schnorrkel 0.11.5", "scrypt", "secp256k1 0.30.0", "secrecy 0.10.3", "serde", "serde_json", "sha2 0.10.9", + "sp-crypto-hashing 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "subxt-core", + "thiserror 2.0.14", "zeroize", ] [[package]] name = "subxt-utils-fetchmetadata" -version = "0.38.1" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3c53bc3eeaacc143a2f29ace4082edd2edaccab37b69ad20befba9fb00fdb3d" +checksum = "fc868b55fe2303788dc7703457af390111940c3da4714b510983284501780ed5" dependencies = [ "hex", "parity-scale-codec", - "thiserror 1.0.69", + "thiserror 2.0.14", ] [[package]] @@ -20671,9 +22770,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.101" +version = "2.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" +checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" dependencies = [ "proc-macro2", "quote", @@ -20682,14 +22781,14 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.8.25" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4560533fbd6914b94a8fb5cc803ed6801c3455668db3b810702c57612bac9412" +checksum = "a7a985ff4ffd7373e10e0fb048110fb11a162e5a4c47f92ddb8787a6f766b769" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -20712,7 +22811,22 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", +] + +[[package]] +name = "sysinfo" +version = "0.30.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a5b4ddaee55fb2bea2bf0e5000747e5f5c0de765e5a5ff87f4cd106439f4bb3" +dependencies = [ + "cfg-if", + "core-foundation-sys", + "libc", + "ntapi", + "once_cell", + "rayon", + "windows 0.52.0", ] [[package]] @@ -20771,6 +22885,12 @@ dependencies = [ "staging-xcm 14.2.2", ] +[[package]] +name = "tagptr" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" + [[package]] name = "tap" version = "1.0.1" @@ -20792,7 +22912,7 @@ dependencies = [ "fastrand 2.3.0", "getrandom 0.3.3", "once_cell", - "rustix 1.0.7", + "rustix 1.0.8", "windows-sys 0.59.0", ] @@ -20817,12 +22937,12 @@ dependencies = [ [[package]] name = "terminal_size" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45c6481c4829e4cc63825e62c49186a34538b7b2750b73b266581ffb612fb5ed" +checksum = "60b8cb979cb11c32ce1603f8137b22262a9d131aaa5c37b5678025f22b8becd0" dependencies = [ - "rustix 1.0.7", - "windows-sys 0.59.0", + "rustix 1.0.8", + "windows-sys 0.60.2", ] [[package]] @@ -20833,16 +22953,16 @@ checksum = "8f50febec83f5ee1df3015341d8bd429f2d1cc62bcba7ea2076759d315084683" [[package]] name = "testnet-parachains-constants" -version = "13.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "14.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "cumulus-primitives-core 0.18.1", - "frame-support 40.1.0", - "polkadot-core-primitives 17.1.0", + "cumulus-primitives-core 0.19.0", + "frame-support 41.0.0", + "polkadot-core-primitives 18.0.0", "rococo-runtime-constants", "smallvec", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", "westend-runtime-constants", ] @@ -20857,11 +22977,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.12" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +checksum = "0b0949c3a6c842cbde3f1686d6eea5a010516deb7085f79db747562d4102f41e" dependencies = [ - "thiserror-impl 2.0.12", + "thiserror-impl 2.0.14", ] [[package]] @@ -20881,7 +23001,7 @@ checksum = "e4c60d69f36615a077cc7663b9cb8e42275722d23e58a7fa3d2c7f2915d09d04" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -20892,18 +23012,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "thiserror-impl" -version = "2.0.12" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +checksum = "cc5b44b4ab9c2fdd0e0512e6bece8388e214c0749f5862b114cc5b7a25daf227" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -20914,12 +23034,11 @@ checksum = "3bf63baf9f5039dadc247375c29eb13706706cfde997d0330d05aa63a77d8820" [[package]] name = "thread_local" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" dependencies = [ "cfg-if", - "once_cell", ] [[package]] @@ -21019,20 +23138,22 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.45.0" +version = "1.47.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2513ca694ef9ede0fb23fe71a4ee4107cb102b9dc1930f6d0fd77aae068ae165" +checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" dependencies = [ "backtrace", "bytes", + "io-uring", "libc", "mio", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.9", + "slab", + "socket2 0.6.0", "tokio-macros", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -21043,7 +23164,7 @@ checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -21086,9 +23207,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.15" +version = "0.7.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" +checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" dependencies = [ "bytes", "futures-core", @@ -21109,9 +23230,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.22" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ "serde", "serde_spanned", @@ -21121,20 +23242,20 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.9" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.22.26" +version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.9.0", + "indexmap 2.10.0", "serde", "serde_spanned", "toml_datetime", @@ -21144,9 +23265,9 @@ dependencies = [ [[package]] name = "toml_write" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfb942dfe1d8e29a7ee7fcbde5bd2b9a25fb89aa70caea2eba3bee836ff41076" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" [[package]] name = "tower" @@ -21205,20 +23326,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.28" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "tracing-core" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" dependencies = [ "once_cell", "valuable", @@ -21236,11 +23357,11 @@ dependencies = [ [[package]] name = "tracing-gum" -version = "19.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "20.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "coarsetime", - "polkadot-primitives 18.1.0", + "polkadot-primitives 19.0.0", "tracing", "tracing-gum-proc-macro", ] @@ -21248,13 +23369,13 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "expander", "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -21277,7 +23398,7 @@ dependencies = [ "matchers", "nu-ansi-term", "once_cell", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "regex", "sharded-slab", "smallvec", @@ -21344,11 +23465,11 @@ dependencies = [ "http 1.3.1", "httparse", "log", - "rand 0.9.1", + "rand 0.9.2", "rustls", "rustls-pki-types", "sha1", - "thiserror 2.0.12", + "thiserror 2.0.14", "url", "utf-8", ] @@ -21371,6 +23492,12 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "typeid" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" + [[package]] name = "typenum" version = "1.18.0" @@ -21436,9 +23563,9 @@ checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-width" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" +checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" [[package]] name = "unicode-xid" @@ -21520,6 +23647,17 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" +[[package]] +name = "uuid" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f33196643e165781c20a5ead5582283a7dacbb87855d867fbc2df3f81eddc1be" +dependencies = [ + "getrandom 0.3.3", + "js-sys", + "wasm-bindgen", +] + [[package]] name = "uzers" version = "0.12.1" @@ -21658,9 +23796,9 @@ dependencies = [ [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" @@ -21677,7 +23815,7 @@ version = "0.12.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1fbb4ef9bbca0c1170e0b00dd28abc9e3b68669821600cad1caaed606583c6d" dependencies = [ - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.11.1+wasi-snapshot-preview1", ] [[package]] @@ -21702,7 +23840,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "wasm-bindgen-shared", ] @@ -21737,7 +23875,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -21915,7 +24053,7 @@ dependencies = [ "ahash 0.8.12", "bitflags 2.9.1", "hashbrown 0.14.5", - "indexmap 2.9.0", + "indexmap 2.10.0", "semver 1.0.26", "serde", ] @@ -22150,14 +24288,14 @@ version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75c7f0ef91146ebfb530314f5f1d24528d7f0767efbfd31dce919275413e393e" dependencies = [ - "webpki-root-certs 1.0.0", + "webpki-root-certs 1.0.2", ] [[package]] name = "webpki-root-certs" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01a83f7e1a9f8712695c03eabe9ed3fbca0feff0152f33f12593e5a6303cb1a4" +checksum = "4e4ffd8df1c57e87c325000a3d6ef93db75279dc3a231125aac571650f22b12a" dependencies = [ "rustls-pki-types", ] @@ -22170,127 +24308,125 @@ checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] name = "westend-runtime" -version = "22.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "binary-merkle-tree 16.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "binary-merkle-tree 16.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "bitvec", - "frame-benchmarking 40.0.0", - "frame-election-provider-support 40.1.0", - "frame-executive 40.0.0", - "frame-metadata-hash-extension 0.8.0", - "frame-support 40.1.0", - "frame-system 40.1.0", - "frame-system-benchmarking 40.0.0", - "frame-system-rpc-runtime-api 36.0.0", - "frame-try-runtime 0.46.0", - "hex-literal", - "log", - "pallet-asset-rate 19.0.0", - "pallet-authority-discovery 40.0.0", - "pallet-authorship 40.0.0", - "pallet-babe 40.0.0", - "pallet-bags-list 39.1.0", - "pallet-balances 41.1.0", - "pallet-beefy 41.1.0", - "pallet-beefy-mmr 41.0.0", - "pallet-conviction-voting 40.1.0", - "pallet-delegated-staking 7.0.0", - "pallet-election-provider-multi-phase 39.1.0", - "pallet-election-provider-support-benchmarking 39.0.0", - "pallet-elections-phragmen", - "pallet-fast-unstake 39.0.0", - "pallet-grandpa 40.0.0", - "pallet-identity 40.1.0", - "pallet-indices 40.0.0", - "pallet-membership", - "pallet-message-queue 43.1.0", + "frame-benchmarking 41.0.0", + "frame-election-provider-support 41.0.0", + "frame-executive 41.0.0", + "frame-metadata-hash-extension 0.9.0", + "frame-support 41.0.0", + "frame-system 41.0.0", + "frame-system-benchmarking 41.0.0", + "frame-system-rpc-runtime-api 37.0.0", + "frame-try-runtime 0.47.0", + "hex-literal 0.4.1", + "log", + "pallet-asset-rate 20.0.0", + "pallet-authority-discovery 41.0.0", + "pallet-authorship 41.0.0", + "pallet-babe 41.0.0", + "pallet-bags-list 40.0.0", + "pallet-balances 42.0.0", + "pallet-beefy 42.0.0", + "pallet-beefy-mmr 42.0.0", + "pallet-conviction-voting 41.0.0", + "pallet-delegated-staking 8.0.0", + "pallet-election-provider-multi-phase 40.0.0", + "pallet-election-provider-support-benchmarking 40.0.0", + "pallet-fast-unstake 40.0.0", + "pallet-grandpa 41.0.0", + "pallet-identity 41.0.0", + "pallet-indices 41.0.0", + "pallet-message-queue 44.0.0", "pallet-meta-tx", "pallet-migrations", - "pallet-mmr 40.0.0", - "pallet-multisig 40.1.0", - "pallet-nomination-pools 38.1.0", - "pallet-nomination-pools-benchmarking 38.0.0", - "pallet-nomination-pools-runtime-api 36.0.0", - "pallet-offences 39.0.0", - "pallet-offences-benchmarking 40.0.0", - "pallet-parameters 0.11.0", - "pallet-preimage 40.0.0", - "pallet-proxy 40.1.0", + "pallet-mmr 41.0.0", + "pallet-multisig 41.0.0", + "pallet-nomination-pools 39.0.0", + "pallet-nomination-pools-benchmarking 39.0.0", + "pallet-nomination-pools-runtime-api 37.0.0", + "pallet-offences 40.0.0", + "pallet-offences-benchmarking 41.0.0", + "pallet-parameters 0.12.0", + "pallet-preimage 41.0.0", + "pallet-proxy 41.0.0", "pallet-recovery", - "pallet-referenda 40.1.0", + "pallet-referenda 41.0.0", "pallet-root-testing", - "pallet-scheduler 41.0.0", - "pallet-session 40.0.0", - "pallet-session-benchmarking 40.0.0", - "pallet-society", - "pallet-staking 40.1.0", - "pallet-staking-runtime-api 26.0.0", - "pallet-state-trie-migration 44.1.0", - "pallet-sudo 40.0.0", - "pallet-timestamp 39.0.0", - "pallet-transaction-payment 40.0.0", - "pallet-transaction-payment-rpc-runtime-api 40.0.0", - "pallet-treasury 39.0.0", - "pallet-utility 40.0.0", + "pallet-scheduler 42.0.0", + "pallet-session 41.0.0", + "pallet-session-benchmarking 41.0.0", + "pallet-staking 41.0.0", + "pallet-staking-async-ah-client", + "pallet-staking-async-rc-client", + "pallet-staking-runtime-api 27.0.0", + "pallet-sudo 41.0.0", + "pallet-timestamp 40.0.0", + "pallet-transaction-payment 41.0.0", + "pallet-transaction-payment-rpc-runtime-api 41.0.0", + "pallet-treasury 40.0.0", + "pallet-utility 41.0.0", "pallet-verify-signature", - "pallet-vesting 40.1.0", - "pallet-whitelist 39.0.0", - "pallet-xcm 19.1.0", - "pallet-xcm-benchmarks 20.0.0", + "pallet-vesting 41.0.0", + "pallet-whitelist 40.0.0", + "pallet-xcm 20.1.0", + "pallet-xcm-benchmarks 21.0.0", "parity-scale-codec", - "polkadot-parachain-primitives 16.1.0", - "polkadot-primitives 18.1.0", - "polkadot-runtime-common 19.1.0", - "polkadot-runtime-parachains 19.1.0", + "polkadot-parachain-primitives 17.0.0", + "polkadot-primitives 19.0.0", + "polkadot-runtime-common 20.0.0", + "polkadot-runtime-parachains 20.0.1", "scale-info", "serde", "serde_derive", "serde_json", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-application-crypto 40.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-authority-discovery 36.0.0", - "sp-block-builder 36.0.0", - "sp-consensus-babe 0.42.1", - "sp-consensus-beefy 24.1.0", - "sp-consensus-grandpa 23.1.0", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-genesis-builder 0.17.0", - "sp-inherents 36.0.0", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keyring 41.0.0", - "sp-mmr-primitives 36.1.0", - "sp-npos-elections 36.1.0", - "sp-offchain 36.0.0", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-session 38.1.0", - "sp-staking 38.0.0", - "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-transaction-pool 36.0.0", - "sp-version 39.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", - "staging-xcm-builder 20.1.0", - "staging-xcm-executor 19.1.0", - "substrate-wasm-builder 26.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-application-crypto 41.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-arithmetic 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-authority-discovery 37.0.0", + "sp-block-builder 37.0.0", + "sp-consensus-babe 0.43.0", + "sp-consensus-beefy 25.0.0", + "sp-consensus-grandpa 24.0.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-genesis-builder 0.18.0", + "sp-inherents 37.0.0", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keyring 42.0.0", + "sp-mmr-primitives 37.0.0", + "sp-npos-elections 37.0.0", + "sp-offchain 37.0.0", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-session 39.0.0", + "sp-staking 39.0.0", + "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-transaction-pool 37.0.0", + "sp-version 40.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", + "staging-xcm-builder 21.0.0", + "staging-xcm-executor 20.0.0", + "substrate-wasm-builder 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "westend-runtime-constants", - "xcm-runtime-apis 0.7.0", + "xcm-runtime-apis 0.8.0", ] [[package]] name = "westend-runtime-constants" -version = "20.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "21.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-support 40.1.0", - "polkadot-primitives 18.1.0", - "polkadot-runtime-common 19.1.0", + "frame-support 41.0.0", + "polkadot-primitives 19.0.0", + "polkadot-runtime-common 20.0.0", "smallvec", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-weights 31.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", - "staging-xcm-builder 20.1.0", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-weights 32.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", + "staging-xcm-builder 21.0.0", ] [[package]] @@ -22301,15 +24437,26 @@ checksum = "24d643ce3fd3e5b54854602a080f34fb10ab75e0b813ee32d00ca2b44fa74762" dependencies = [ "either", "env_home", - "rustix 1.0.7", + "rustix 1.0.8", + "winsafe", +] + +[[package]] +name = "which" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3fabb953106c3c8eea8306e4393700d7657561cb43122571b172bbfb7c7ba1d" +dependencies = [ + "env_home", + "rustix 1.0.8", "winsafe", ] [[package]] name = "wide" -version = "0.7.32" +version = "0.7.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41b5576b9a81633f3e8df296ce0063042a73507636cbe956c61133dd7034ab22" +checksum = "0ce5da8ecb62bcd8ec8b7ea19f69a51275e91299be594ea5cc6ef7819e16cd03" dependencies = [ "bytemuck", "safe_arch", @@ -22352,6 +24499,16 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +dependencies = [ + "windows-core 0.52.0", + "windows-targets 0.52.6", +] + [[package]] name = "windows" version = "0.53.0" @@ -22362,6 +24519,37 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows" +version = "0.61.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" +dependencies = [ + "windows-collections", + "windows-core 0.61.2", + "windows-future", + "windows-link", + "windows-numerics", +] + +[[package]] +name = "windows-collections" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" +dependencies = [ + "windows-core 0.61.2", +] + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-core" version = "0.53.0" @@ -22385,6 +24573,17 @@ dependencies = [ "windows-strings", ] +[[package]] +name = "windows-future" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" +dependencies = [ + "windows-core 0.61.2", + "windows-link", + "windows-threading", +] + [[package]] name = "windows-implement" version = "0.60.0" @@ -22393,7 +24592,7 @@ checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -22404,14 +24603,24 @@ checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "windows-link" -version = "0.1.1" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-numerics" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" +checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" +dependencies = [ + "windows-core 0.61.2", + "windows-link", +] [[package]] name = "windows-result" @@ -22476,6 +24685,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.3", +] + [[package]] name = "windows-targets" version = "0.42.2" @@ -22524,10 +24742,11 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.0" +version = "0.53.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" +checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" dependencies = [ + "windows-link", "windows_aarch64_gnullvm 0.53.0", "windows_aarch64_msvc 0.53.0", "windows_i686_gnu 0.53.0", @@ -22538,6 +24757,15 @@ dependencies = [ "windows_x86_64_msvc 0.53.0", ] +[[package]] +name = "windows-threading" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" +dependencies = [ + "windows-link", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.42.2" @@ -22720,9 +24948,9 @@ checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" [[package]] name = "winnow" -version = "0.7.10" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06928c8748d81b05c9be96aad92e1b6ff01833332f281e8cfca3be4b35fc9ec" +checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95" dependencies = [ "memchr", ] @@ -22809,41 +25037,53 @@ dependencies = [ "nom", "oid-registry 0.8.1", "rusticata-macros", - "thiserror 2.0.12", + "thiserror 2.0.14", "time", ] [[package]] name = "xcm-emulator" -version = "0.19.2" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.20.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "array-bytes", - "cumulus-pallet-parachain-system 0.20.0", - "cumulus-primitives-core 0.18.1", - "cumulus-primitives-parachain-inherent 0.18.1", + "array-bytes 6.2.3", + "cumulus-pallet-parachain-system 0.21.0", + "cumulus-primitives-core 0.19.0", + "cumulus-primitives-parachain-inherent 0.19.0", "cumulus-test-relay-sproof-builder", - "frame-support 40.1.0", - "frame-system 40.1.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "impl-trait-for-tuples", "log", - "pallet-balances 41.1.0", - "pallet-message-queue 43.1.0", - "pallet-timestamp 39.0.0", - "parachains-common 21.0.0", + "pallet-balances 42.0.0", + "pallet-message-queue 44.0.0", + "pallet-timestamp 40.0.0", + "parachains-common 22.0.0", "parity-scale-codec", "paste", - "polkadot-parachain-primitives 16.1.0", - "polkadot-primitives 18.1.0", - "polkadot-runtime-parachains 19.1.0", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime 41.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-tracing 17.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", - "staging-xcm-executor 19.1.0", + "polkadot-parachain-primitives 17.0.0", + "polkadot-primitives 19.0.0", + "polkadot-runtime-parachains 20.0.1", + "sp-arithmetic 27.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-core 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-tracing 17.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", + "staging-xcm-executor 20.0.0", + "xcm-simulator", +] + +[[package]] +name = "xcm-procedural" +version = "7.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "Inflector", + "proc-macro2", + "quote", + "syn 2.0.104", ] [[package]] @@ -22855,7 +25095,7 @@ dependencies = [ "Inflector", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -22867,18 +25107,18 @@ dependencies = [ "Inflector", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "xcm-procedural" version = "11.0.2" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "Inflector", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -22891,30 +25131,51 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-api 34.0.0", - "sp-weights 31.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-weights 31.1.0", "staging-xcm 14.2.2", - "staging-xcm-executor 17.0.2", + "staging-xcm-executor 17.0.3", ] [[package]] name = "xcm-runtime-apis" -version = "0.7.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.8.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" +dependencies = [ + "frame-support 41.0.0", + "parity-scale-codec", + "scale-info", + "sp-api 37.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-weights 32.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", + "staging-xcm-executor 20.0.0", +] + +[[package]] +name = "xcm-simulator" +version = "21.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ - "frame-support 40.1.0", + "frame-support 41.0.0", + "frame-system 41.0.0", "parity-scale-codec", + "paste", + "polkadot-core-primitives 18.0.0", + "polkadot-parachain-primitives 17.0.0", + "polkadot-primitives 19.0.0", + "polkadot-runtime-parachains 20.0.1", "scale-info", - "sp-api 36.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-weights 31.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "staging-xcm 16.1.0", - "staging-xcm-executor 19.1.0", + "sp-io 41.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime 42.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "staging-xcm 17.0.0", + "staging-xcm-builder 21.0.0", + "staging-xcm-executor 20.0.0", ] [[package]] name = "xml-rs" -version = "0.8.26" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62ce76d9b56901b19a74f19431b0d8b3bc7ca4ad685a746dfd78ca8f4fc6bda" +checksum = "6fd8403733700263c6eb89f192880191f1b83e332f7a20371ddcf421c4a337c7" [[package]] name = "xmltree" @@ -22940,7 +25201,7 @@ dependencies = [ "futures", "log", "nohash-hasher", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "pin-project", "rand 0.8.5", "static_assertions", @@ -22948,25 +25209,25 @@ dependencies = [ [[package]] name = "yamux" -version = "0.13.5" +version = "0.13.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3da1acad1c2dc53f0dde419115a38bd8221d8c3e47ae9aeceaf453266d29307e" +checksum = "2b2dd50a6d6115feb3e5d7d0efd45e8ca364b6c83722c1e9c602f5764e0e9597" dependencies = [ "futures", "log", "nohash-hasher", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "pin-project", - "rand 0.9.1", + "rand 0.9.2", "static_assertions", "web-time", ] [[package]] name = "yap" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff4524214bc4629eba08d78ceb1d6507070cc0bcbbed23af74e19e6e924a24cf" +checksum = "bfe269e7b803a5e8e20cbd97860e136529cd83bf2c9c6d37b142467e7e1f051f" [[package]] name = "yasna" @@ -22997,28 +25258,28 @@ checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "synstructure 0.13.2", ] [[package]] name = "zerocopy" -version = "0.8.25" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" +checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.25" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" +checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -23038,7 +25299,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "synstructure 0.13.2", ] @@ -23059,7 +25320,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -23075,9 +25336,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.2" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" +checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" dependencies = [ "yoke", "zerofrom", @@ -23092,7 +25353,7 @@ checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -23105,9 +25366,33 @@ dependencies = [ "crc32fast", "crossbeam-utils", "displaydoc", - "indexmap 2.9.0", + "indexmap 2.10.0", + "memchr", + "thiserror 2.0.14", +] + +[[package]] +name = "zip" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12598812502ed0105f607f941c386f43d441e00148fce9dec3ca5ffb0bde9308" +dependencies = [ + "arbitrary", + "crc32fast", + "indexmap 2.10.0", + "memchr", +] + +[[package]] +name = "zip" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aed4ac33e8eb078c89e6cbb1d5c4c7703ec6d299fc3e7c3695af8f8b423468b" +dependencies = [ + "arbitrary", + "crc32fast", + "indexmap 2.10.0", "memchr", - "thiserror 2.0.12", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 3a5038dcb..4ce9045f7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,12 +18,14 @@ repository = "https://github.com/r0gue-io/pop-node/" exclude = [ "extension/contract", "pop-api", + "pop-api-vnext", "tests/contracts", ] members = [ "integration-tests", "node", "pallets/*", + "pop-api-vnext/integration-tests", "pop-api/integration-tests", "primitives", "runtime/devnet", @@ -35,12 +37,14 @@ resolver = "2" [workspace.dependencies] anyhow = { version = "1.0.81", default-features = false } +base64 = { version = "0.22.1", default-features = false, features = [ "alloc" ] } clap = { version = "4.5.13", features = [ "derive" ] } -codec = { package = "parity-scale-codec", version = "3.7.4", default-features = false, features = [ +codec = { package = "parity-scale-codec", version = "3.7.5", default-features = false, features = [ "derive", ] } color-print = "0.3.4" -contract-build = "5.0.2" +contract-build = { git = "https://github.com/use-ink/cargo-contract", branch = "v5-rust-stable" } + docify = "0.2.9" enumflags2 = "0.7.11" env_logger = "0.11.5" @@ -54,20 +58,21 @@ rand = "0.8.5" scale-info = { version = "2.11.6", default-features = false, features = [ "derive", ] } -serde = "1.0.214" +serde = { version = "1.0.214", default-features = false } serde_json = { version = "1.0.132", default-features = false } smallvec = "1.11.2" -subxt = "0.38.1" -subxt-signer = "0.38.0" -tokio = { version = "1.40.0", features = [ "macros", "rt-multi-thread", "time" ] } +subxt = "0.41.0" +subxt-signer = "0.41.0" +tokio = { version = "1.45.0", features = [ "macros", "rt-multi-thread", "time" ] } tracing-subscriber = { version = "0.3.18", default-features = false } # Build substrate-build-script-utils = { version = "11.0.0" } -substrate-wasm-builder = { version = "26.0.1" } +substrate-wasm-builder = { version = "27.0.0" } # Local pallet-api = { path = "pallets/api", default-features = false } +pallet-api-vnext = { path = "pallets/api-vnext", default-features = false } pallet-motion = { path = "pallets/motion", default-features = false } pallet-nfts = { path = "pallets/nfts", default-features = false } pop-chain-extension = { path = "./extension", default-features = false } @@ -80,137 +85,137 @@ pop-runtime-testnet = { path = "runtime/testnet", default-features = true } # de # Substrate # Dependencies changed to point to the tag for stable 2503-4 release as we needed a patch in pallet-session # that wasn't released in crates.io for testnet runtime v0.5.3 -frame-benchmarking = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -frame-benchmarking-cli = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4" } -frame-executive = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -frame-metadata = { version = "20.0.0", default-features = false } -frame-metadata-hash-extension = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -frame-support = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -frame-system = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -frame-system-benchmarking = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -frame-system-rpc-runtime-api = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -frame-try-runtime = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -pallet-assets = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -pallet-aura = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -pallet-authorship = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -pallet-balances = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -pallet-collective = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -pallet-contracts = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -pallet-message-queue = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -pallet-migrations = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -pallet-multisig = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -pallet-nft-fractionalization = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -pallet-nfts-runtime-api = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -pallet-nfts-sdk = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", package = "pallet-nfts", default-features = false } -pallet-preimage = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -pallet-proxy = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -pallet-revive = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -pallet-scheduler = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -pallet-session = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -pallet-sudo = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -pallet-timestamp = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -pallet-transaction-payment = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -pallet-transaction-payment-rpc = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4" } -pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -pallet-treasury = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -pallet-utility = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -prometheus-endpoint = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false, package = "substrate-prometheus-endpoint" } -sc-basic-authorship = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4" } -sc-chain-spec = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4" } -sc-cli = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4" } -sc-client-api = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4" } -sc-consensus = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4" } -sc-executor = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4" } -sc-network = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4" } -sc-network-sync = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4" } -sc-offchain = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4" } -sc-rpc = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4" } -sc-service = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4" } -sc-sysinfo = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4" } -sc-telemetry = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4" } -sc-tracing = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4" } -sc-transaction-pool = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4" } -sc-transaction-pool-api = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4" } -sp-api = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -sp-authority-discovery = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -sp-block-builder = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -sp-blockchain = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4" } -sp-consensus-aura = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -sp-consensus-babe = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -sp-consensus-beefy = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -sp-consensus-grandpa = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -sp-core = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -sp-genesis-builder = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -sp-inherents = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -sp-io = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -sp-keyring = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -sp-keystore = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4" } -sp-mmr-primitives = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -sp-offchain = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -sp-runtime = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -sp-session = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -sp-timestamp = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4" } -sp-transaction-pool = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -sp-version = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -substrate-frame-rpc-system = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4" } +frame-benchmarking = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +frame-benchmarking-cli = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506" } +frame-executive = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +frame-metadata = { version = "23.0.0", default-features = false } +frame-metadata-hash-extension = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +frame-support = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +frame-system = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +frame-system-benchmarking = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +frame-system-rpc-runtime-api = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +frame-try-runtime = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +pallet-assets = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +pallet-aura = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +pallet-authorship = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +pallet-balances = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +pallet-collective = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +pallet-contracts = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +pallet-message-queue = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +pallet-migrations = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +pallet-multisig = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +pallet-nft-fractionalization = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +pallet-nfts-runtime-api = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +pallet-nfts-sdk = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", package = "pallet-nfts", default-features = false } +pallet-preimage = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +pallet-proxy = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +pallet-revive = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +pallet-scheduler = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +pallet-session = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +pallet-sudo = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +pallet-timestamp = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +pallet-transaction-payment = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +pallet-transaction-payment-rpc = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506" } +pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +pallet-treasury = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +pallet-utility = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +prometheus-endpoint = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false, package = "substrate-prometheus-endpoint" } +sc-basic-authorship = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506" } +sc-chain-spec = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506" } +sc-cli = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506" } +sc-client-api = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506" } +sc-consensus = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506" } +sc-executor = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506" } +sc-network = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506" } +sc-network-sync = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506" } +sc-offchain = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506" } +sc-rpc = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506" } +sc-service = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506" } +sc-sysinfo = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506" } +sc-telemetry = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506" } +sc-tracing = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506" } +sc-transaction-pool = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506" } +sc-transaction-pool-api = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506" } +sp-api = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +sp-authority-discovery = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +sp-block-builder = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +sp-blockchain = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506" } +sp-consensus-aura = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +sp-consensus-babe = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +sp-consensus-beefy = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +sp-consensus-grandpa = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +sp-core = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +sp-genesis-builder = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +sp-inherents = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +sp-io = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +sp-keyring = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +sp-keystore = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506" } +sp-mmr-primitives = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +sp-offchain = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +sp-runtime = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +sp-session = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +sp-timestamp = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506" } +sp-transaction-pool = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +sp-version = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +substrate-frame-rpc-system = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506" } # Polkadot # Dependencies changed to point to the tag for stable 2503-4 release as we needed a patch in pallet-session # that wasn't released in crates.io for testnet runtime v0.5.3 -pallet-xcm = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -pallet-xcm-benchmarks = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -polkadot-cli = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4" } -polkadot-parachain-primitives = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -polkadot-primitives = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -polkadot-runtime-common = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -polkadot-runtime-parachains = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -rococo-runtime = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -rococo-runtime-constants = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -xcm = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", package = "staging-xcm", default-features = false } -xcm-builder = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", package = "staging-xcm-builder", default-features = false } -xcm-executor = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", package = "staging-xcm-executor", default-features = false } -xcm-runtime-apis = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } +pallet-xcm = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +pallet-xcm-benchmarks = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +polkadot-cli = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506" } +polkadot-parachain-primitives = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +polkadot-primitives = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +polkadot-runtime-common = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +polkadot-runtime-parachains = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +rococo-runtime = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +rococo-runtime-constants = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +xcm = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", package = "staging-xcm", default-features = false } +xcm-builder = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", package = "staging-xcm-builder", default-features = false } +xcm-executor = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", package = "staging-xcm-executor", default-features = false } +xcm-runtime-apis = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } # Cumulus # Dependencies changed to point to the tag for stable 2503-4 release as we needed a patch in pallet-session # that wasn't released in crates.io for testnet runtime v0.5.3 -asset-test-utils = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -cumulus-client-cli = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4" } -cumulus-client-collator = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4" } -cumulus-client-consensus-aura = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4" } -cumulus-client-consensus-common = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4" } -cumulus-client-consensus-proposer = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4" } -cumulus-client-service = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4" } -cumulus-pallet-aura-ext = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -cumulus-pallet-parachain-system = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -cumulus-pallet-session-benchmarking = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -cumulus-pallet-weight-reclaim = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -cumulus-pallet-xcm = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -cumulus-pallet-xcmp-queue = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -cumulus-primitives-aura = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -cumulus-primitives-core = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -cumulus-primitives-parachain-inherent = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4" } -cumulus-primitives-utility = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -cumulus-relay-chain-interface = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4" } -emulated-integration-tests-common = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -pallet-collator-selection = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } -parachain-info = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", package = "staging-parachain-info", default-features = false } -parachains-common = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } +asset-test-utils = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +cumulus-client-cli = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506" } +cumulus-client-collator = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506" } +cumulus-client-consensus-aura = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506" } +cumulus-client-consensus-common = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506" } +cumulus-client-consensus-proposer = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506" } +cumulus-client-service = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506" } +cumulus-pallet-aura-ext = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +cumulus-pallet-parachain-system = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +cumulus-pallet-session-benchmarking = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +cumulus-pallet-weight-reclaim = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +cumulus-pallet-xcm = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +cumulus-pallet-xcmp-queue = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +cumulus-primitives-aura = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +cumulus-primitives-core = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +cumulus-primitives-parachain-inherent = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506" } +cumulus-primitives-utility = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +cumulus-relay-chain-interface = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506" } +emulated-integration-tests-common = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +pallet-collator-selection = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } +parachain-info = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", package = "staging-parachain-info", default-features = false } +parachains-common = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } # Runtimes # Dependencies changed to point to the tag for stable 2503-4 release as we needed a patch in pallet-session # that wasn't released in crates.io for testnet runtime v0.5.3 asset-hub-paseo-runtime = { git = "https://github.com/paseo-network/runtimes", default-features = false, tag = "v1.4.3" } -asset-hub-westend-runtime = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4" } +asset-hub-westend-runtime = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506" } paseo-runtime = { git = "https://github.com/paseo-network/runtimes", default-features = false, tag = "v1.4.3" } paseo-runtime-constants = { git = "https://github.com/paseo-network/runtimes", default-features = false, tag = "v1.4.3" } -westend-runtime = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4" } -westend-runtime-constants = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2503-4", default-features = false } +westend-runtime = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506" } +westend-runtime-constants = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2506", default-features = false } -ismp = { git = "https://github.com/r0gue-io/ismp", branch = "polkadot-stable2503-4", default-features = false } -ismp-parachain = { git = "https://github.com/r0gue-io/ismp", branch = "polkadot-stable2503-4", default-features = false } -ismp-parachain-inherent = { git = "https://github.com/r0gue-io/ismp", branch = "polkadot-stable2503-4", default-features = false } -ismp-parachain-runtime-api = { git = "https://github.com/r0gue-io/ismp", branch = "polkadot-stable2503-4", default-features = false } -pallet-ismp = { git = "https://github.com/r0gue-io/ismp", branch = "polkadot-stable2503-4", default-features = false } -pallet-ismp-rpc = { git = "https://github.com/r0gue-io/ismp", branch = "polkadot-stable2503-4", default-features = false } -pallet-ismp-runtime-api = { git = "https://github.com/r0gue-io/ismp", branch = "polkadot-stable2503-4", default-features = false } +ismp = { git = "https://github.com/r0gue-io/ismp", branch = "polkadot-stable2506", default-features = false } +ismp-parachain = { git = "https://github.com/r0gue-io/ismp", branch = "polkadot-stable2506", default-features = false } +ismp-parachain-inherent = { git = "https://github.com/r0gue-io/ismp", branch = "polkadot-stable2506", default-features = false } +ismp-parachain-runtime-api = { git = "https://github.com/r0gue-io/ismp", branch = "polkadot-stable2506", default-features = false } +pallet-ismp = { git = "https://github.com/r0gue-io/ismp", branch = "polkadot-stable2506", default-features = false } +pallet-ismp-rpc = { git = "https://github.com/r0gue-io/ismp", branch = "polkadot-stable2506", default-features = false } +pallet-ismp-runtime-api = { git = "https://github.com/r0gue-io/ismp", branch = "polkadot-stable2506", default-features = false } diff --git a/extension/contract/Cargo.toml b/extension/contract/Cargo.toml index 286c00707..00afc4ad6 100755 --- a/extension/contract/Cargo.toml +++ b/extension/contract/Cargo.toml @@ -13,4 +13,5 @@ path = "lib.rs" [features] default = [ "std" ] +ink-as-dependency = [ ] std = [ "ink/std" ] diff --git a/integration-tests/src/lib.rs b/integration-tests/src/lib.rs index a6e3fd4d6..1496cbe20 100644 --- a/integration-tests/src/lib.rs +++ b/integration-tests/src/lib.rs @@ -73,7 +73,7 @@ fn relay_to_para_sender_assertions(t: RelayToParaTest) { fn system_para_to_para_sender_assertions(t: SystemParaToParaTest) { type RuntimeEvent = ::RuntimeEvent; AssetHubPara::assert_xcm_pallet_attempted_complete(Some(Weight::from_parts( - 578_673_000, + 243_713_000, 6_208, ))); assert_expected_events!( diff --git a/node/src/command.rs b/node/src/command.rs index b1be951dd..3da2619b7 100644 --- a/node/src/command.rs +++ b/node/src/command.rs @@ -319,7 +319,9 @@ pub fn run() -> Result<()> { construct_benchmark_partials!(config, |partials| { let db = partials.backend.expose_db(); let storage = partials.backend.expose_storage(); - cmd.run(config, partials.client.clone(), db, storage) + let shared_cache = partials.backend.expose_shared_trie_cache(); + + cmd.run(config, partials.client.clone(), db, storage, shared_cache) }) }), BenchmarkCmd::Machine(cmd) => diff --git a/node/src/rpc.rs b/node/src/rpc.rs index c44e8d6de..c04aecc96 100644 --- a/node/src/rpc.rs +++ b/node/src/rpc.rs @@ -28,6 +28,7 @@ pub struct FullDeps { /// Transaction pool instance. pub pool: Arc

, /// Backend used by the node. + #[allow(dead_code)] pub backend: Arc, } diff --git a/node/src/service.rs b/node/src/service.rs index 02e55e787..284d55900 100644 --- a/node/src/service.rs +++ b/node/src/service.rs @@ -28,7 +28,7 @@ use prometheus_endpoint::Registry; use sc_client_api::Backend; use sc_consensus::ImportQueue; use sc_executor::{HeapAllocStrategy, WasmExecutor, DEFAULT_HEAP_ALLOC_STRATEGY}; -use sc_network::NetworkBlock; +use sc_network::{NetworkBackend, NetworkBlock}; use sc_service::{Configuration, PartialComponents, TFullBackend, TFullClient, TaskManager}; use sc_telemetry::{Telemetry, TelemetryHandle, TelemetryWorker, TelemetryWorkerHandle}; use sc_transaction_pool_api::OffchainTransactionPoolFactory; @@ -198,16 +198,17 @@ where let backend = params.backend.clone(); let mut task_manager = params.task_manager; - let (relay_chain_interface, collator_key) = build_relay_chain_interface( - polkadot_config, - ¶chain_config, - telemetry_worker_handle, - &mut task_manager, - collator_options.clone(), - hwbench.clone(), - ) - .await - .map_err(|e| sc_service::Error::Application(Box::new(e) as Box<_>))?; + let (relay_chain_interface, collator_key, _relay_chain_network, _paranode_rx) = + build_relay_chain_interface( + polkadot_config, + ¶chain_config, + telemetry_worker_handle, + &mut task_manager, + collator_options.clone(), + hwbench.clone(), + ) + .await + .map_err(|e| sc_service::Error::Application(Box::new(e) as Box<_>))?; let validator = parachain_config.role.is_authority(); let transaction_pool = params.transaction_pool.clone(); @@ -224,6 +225,9 @@ where relay_chain_interface: relay_chain_interface.clone(), import_queue: params.import_queue, sybil_resistance_level: CollatorSybilResistance::Resistant, // because of Aura + metrics: sc_network::NetworkWorker::::register_notification_metrics( + parachain_config.prometheus_config.as_ref().map(|config| &config.registry), + ), }) .await?; @@ -328,6 +332,7 @@ where relay_chain_slot_duration, recovery_handle: Box::new(overseer_handle.clone()), sync_service: sync_service.clone(), + prometheus_registry: prometheus_registry.as_ref(), })?; if validator { diff --git a/pallets/api-vnext/Cargo.toml b/pallets/api-vnext/Cargo.toml new file mode 100644 index 000000000..65609a6ce --- /dev/null +++ b/pallets/api-vnext/Cargo.toml @@ -0,0 +1,83 @@ +[package] +authors.workspace = true +description = "API pallet, enabling smart(er) contracts with the power of Polkadot" +edition.workspace = true +homepage.workspace = true +license.workspace = true +name = "pallet-api-vnext" +repository.workspace = true +version = "0.1.0" + +[lib] +doctest = false + +[dependencies] +anyhow = { workspace = true, optional = true } +base64.workspace = true +codec.workspace = true +frame-benchmarking.workspace = true +frame-support.workspace = true +frame-system.workspace = true +ismp = { workspace = true, optional = true } +log = { workspace = true, optional = true } +pallet-assets = { workspace = true, default-features = false, optional = true } +pallet-balances = { workspace = true, default-features = false, optional = true } +pallet-ismp = { workspace = true, optional = true } +pallet-revive = { workspace = true, default-features = false } +pallet-timestamp = { workspace = true, optional = true } +pallet-xcm = { workspace = true, optional = true } +parachain-info = { workspace = true, optional = true } +scale-info.workspace = true +sp-io = { workspace = true, optional = true } +sp-runtime = { workspace = true, optional = true } +xcm = { workspace = true, optional = true } +xcm-builder = { workspace = true, optional = true } + +[dev-dependencies] +pallet-balances.workspace = true + +[features] +default = [ "fungibles", "messaging", "std" ] +fungibles = [ "dep:pallet-assets", "dep:pallet-balances" ] +# Empty feature to satisfy clashes with ismp dependency during workspace builds using the "ismp" feature +ismp = [ "dep:ismp" ] +messaging = [ + "dep:anyhow", + "dep:ismp", + "dep:log", + "dep:pallet-ismp", + "dep:pallet-xcm", + "dep:parachain-info", + "dep:sp-runtime", + "dep:xcm", + "dep:xcm-builder", +] +runtime-benchmarks = [ + "dep:pallet-timestamp", + "dep:sp-io", + "frame-benchmarking/runtime-benchmarks", + "frame-support/runtime-benchmarks", + "frame-system/runtime-benchmarks", + "pallet-assets/runtime-benchmarks", + "pallet-revive/runtime-benchmarks", + "pallet-xcm/runtime-benchmarks", +] +std = [ + "codec/std", + "frame-benchmarking/std", + "frame-support/std", + "frame-system/std", + "ismp?/std", + "pallet-assets?/std", + "pallet-balances/std", + "pallet-ismp?/std", + "pallet-revive/std", + "pallet-timestamp/std", + "pallet-xcm?/std", + "parachain-info?/std", + "scale-info/std", + "sp-io/std", + "sp-runtime?/std", + "xcm-builder?/std", + "xcm?/std", +] diff --git a/pallets/api-vnext/README.md b/pallets/api-vnext/README.md new file mode 100644 index 000000000..9407b5f8f --- /dev/null +++ b/pallets/api-vnext/README.md @@ -0,0 +1,9 @@ +# Pop API vNext + +A reimplementation of the Pop API as precompiles for `pallet-revive`. + +## Fungibles API +The fungibles API offers a streamlined interface for interacting with fungible tokens. The goal is to provide a simplified, consistent API that adheres to standards in the smart contract space. + +## Messaging API +The messaging API offers a streamlined interface for cross-chain interactions. The goal is to provide a simplified API that unlocks the power of Polkadot for contracts. diff --git a/pallets/api-vnext/src/errors.rs b/pallets/api-vnext/src/errors.rs new file mode 100644 index 000000000..e691bcc8e --- /dev/null +++ b/pallets/api-vnext/src/errors.rs @@ -0,0 +1,63 @@ +/// Evaluate an expression, assert it returns an expected `Error::Revert` value and that +/// runtime storage has not been mutated (i.e. expression is a no-operation). +/// +/// Used as `assert_revert!(expression_to_assert, expected_error_expression)`. +#[cfg(test)] +#[macro_export] +macro_rules! assert_revert { + ($x:expr, $e:expr $(,)?) => {{ + use pallet_revive::precompiles::{alloy::sol_types::Revert, Error}; + + // Use function to resolve type inference from expected error + fn decode_revert(revert: Revert, _expected: &T) -> T { + use base64::{engine::general_purpose::STANDARD as BASE64, Engine as _}; + let decoded = BASE64.decode(revert.reason).expect("base64 decoding error"); + T::abi_decode(&decoded).expect("sol decoding error") + } + + let Err(Error::Revert(revert)) = $x else { panic!("expected revert, got {:?}", $x) }; + assert_eq!(decode_revert(revert, &$e), $e); + }}; +} + +/// Evaluate `$x:expr` and if not true return `Err(Error::Revert)` with the reason containing a +/// base64-encoding of the specified Solidity error. +/// +/// Used as `ensure!(expression_to_ensure, error_to_return_on_false)`. +#[macro_export] +macro_rules! ensure { + ($x:expr, $e:expr $(,)?) => {{ + use base64::{engine::general_purpose::STANDARD as BASE64, Engine as _}; + use pallet_revive::precompiles::{ + alloy::sol_types::{Revert, SolError}, + Error, + }; + + if !$x { + let encoded = BASE64.encode(<_ as SolError>::abi_encode(&$e)); + frame_support::fail!(Error::Revert(Revert { reason: encoded })) + } + }}; +} + +/// Implement [`From`] for Solidity errors, which converts the error into a [`Revert`] error with +/// the reason containing a base64-encoding of the specified Solidity error. +#[macro_export] +macro_rules! impl_from_sol_error { + ($($error_type:path),+ $(,)?) => { + $( + impl From<$error_type> for Error { + fn from(error: $error_type) -> Self { + use base64::{engine::general_purpose::STANDARD as BASE64, Engine as _}; + use pallet_revive::precompiles::{ + alloy::sol_types::{Revert, SolError}, + Error, + }; + + let reason = BASE64.encode(error.abi_encode().as_slice()); + Error::Revert(Revert { reason }) + } + } + )+ + }; +} diff --git a/pallets/api-vnext/src/fungibles.rs b/pallets/api-vnext/src/fungibles.rs new file mode 100644 index 000000000..7beb1fb22 --- /dev/null +++ b/pallets/api-vnext/src/fungibles.rs @@ -0,0 +1,269 @@ +//! The fungibles API offers a streamlined interface for interacting with fungible tokens. The +//! goal is to provide a simplified, consistent API that adheres to standards in the smart contract +//! space. + +use core::cmp::Ordering::{Equal, Greater, Less}; + +use frame_support::{ + dispatch::{ + DispatchErrorWithPostInfo, DispatchResult, DispatchResultWithPostInfo, WithPostDispatchInfo, + }, + pallet_prelude::{CheckedSub, DispatchError, Zero}, + sp_runtime::Saturating, + traits::fungibles::{approvals::Inspect as _, metadata::Inspect as _, Inspect as _}, + weights::Weight, +}; +use frame_system::{ensure_signed, pallet_prelude::OriginFor}; +pub use pallet::*; +use pallet_assets::NextAssetId; +use weights::WeightInfo; +use AddressMatcher::Fixed; + +use super::*; + +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; +/// The fungibles precompiles offer a streamlined interface for interacting with fungible tokens. +pub mod precompiles; +#[cfg(test)] +mod tests; +pub mod weights; + +type AssetIdOf = >::AssetId; +type BalanceOf = >::Balance; +type WeightOf = >::WeightInfo; + +#[frame_support::pallet] +pub mod pallet { + use super::weights::WeightInfo; + + #[pallet::config] + pub trait Config: frame_system::Config { + /// Weight information for precompiles in this pallet. + type WeightInfo: WeightInfo; + } + + #[pallet::pallet] + pub struct Pallet(_); +} + +fn approve + pallet_assets::Config, I>( + origin: OriginFor, + asset: AssetIdOf, + spender: AccountIdOf, + value: BalanceOf, +) -> DispatchResultWithPostInfo { + let owner = ensure_signed(origin.clone()) + .map_err(|e| e.with_weight(>::approve(0, 0)))?; + let current_allowance = >::allowance(asset.clone(), &owner, &spender); + + let weight = match value.cmp(¤t_allowance) { + // If the new value is equal to the current allowance, do nothing. + Equal => >::approve(0, 0), + // If the new value is greater than the current allowance, approve the difference + // because `approve_transfer` works additively (see `pallet-assets`). + Greater => { + >::approve_transfer( + origin, + asset.into(), + T::Lookup::unlookup(spender), + value.saturating_sub(current_allowance), + ) + .map_err(|e| e.with_weight(>::approve(1, 0)))?; + >::approve(1, 0) + }, + // If the new value is less than the current allowance, cancel the approval and + // set the new value. + Less => { + let spender_source = T::Lookup::unlookup(spender); + >::cancel_approval( + origin.clone(), + asset.clone().into(), + spender_source.clone(), + ) + .map_err(|e| e.with_weight(>::approve(0, 1)))?; + if value.is_zero() { + >::approve(0, 1) + } else { + >::approve_transfer(origin, asset.into(), spender_source, value)?; + >::approve(1, 1) + } + }, + }; + Ok(Some(weight).into()) +} + +fn allowance, I>( + asset: AssetIdOf, + owner: &T::AccountId, + spender: &T::AccountId, +) -> T::Balance { + >::allowance(asset, owner, spender) +} + +fn balance, I>( + asset: AssetIdOf, + account: &T::AccountId, +) -> T::Balance { + >::balance(asset, account) +} + +fn burn + pallet_assets::Config, I>( + origin: OriginFor, + asset: AssetIdOf, + account: AccountIdOf, + value: BalanceOf, +) -> DispatchResultWithPostInfo { + let current_balance = >::balance(asset.clone(), &account); + if current_balance < value { + return Err(pallet_assets::Error::::BalanceLow + .with_weight(>::WeightInfo::balance_of())); + } + >::burn(origin, asset.into(), T::Lookup::unlookup(account.clone()), value)?; + Ok(().into()) +} + +fn clear_metadata, I>( + origin: OriginFor, + asset: AssetIdOf, +) -> DispatchResult { + >::clear_metadata(origin, asset.into()) +} + +fn create, I>( + origin: OriginFor, + admin: AccountIdOf, + min_balance: BalanceOf, +) -> Result, DispatchError> { + let id = NextAssetId::::get().unwrap_or_default(); + >::create(origin, id.clone().into(), T::Lookup::unlookup(admin), min_balance)?; + Ok(id) +} + +fn decimals, I>(asset: AssetIdOf) -> u8 { + >::decimals(asset) +} + +fn decrease_allowance + pallet_assets::Config, I>( + origin: OriginFor, + asset: AssetIdOf, + spender: AccountIdOf, + value: BalanceOf, +) -> Result<(BalanceOf, Option), DispatchErrorWithPostInfo> { + let owner = ensure_signed(origin.clone()) + .map_err(|e| e.with_weight(>::approve(0, 0)))?; + if value.is_zero() { + return Ok((value, Some(>::approve(0, 0)))); + } + let current_allowance = >::allowance(asset.clone(), &owner, &spender); + let spender_source = T::Lookup::unlookup(spender.clone()); + let asset_param: >::AssetIdParameter = asset.clone().into(); + + // Cancel the approval and approve `new_allowance` if difference is more than zero. + let new_allowance = current_allowance + .checked_sub(&value) + .ok_or(pallet_assets::Error::::Unapproved)?; + >::cancel_approval(origin.clone(), asset_param.clone(), spender_source.clone()) + .map_err(|e| e.with_weight(>::approve(0, 1)))?; + let weight = if new_allowance.is_zero() { + >::approve(0, 1) + } else { + >::approve_transfer(origin, asset_param, spender_source, new_allowance)?; + >::approve(1, 1) + }; + Ok((new_allowance, Some(weight))) +} + +fn exists, I>(asset: AssetIdOf) -> bool { + >::asset_exists(asset) +} + +fn increase_allowance + pallet_assets::Config, I>( + origin: OriginFor, + asset: AssetIdOf, + spender: AccountIdOf, + value: BalanceOf, +) -> Result, DispatchErrorWithPostInfo> { + let owner = ensure_signed(origin.clone()) + .map_err(|e| e.with_weight(>::approve(0, 0)))?; + >::approve_transfer( + origin, + asset.clone().into(), + T::Lookup::unlookup(spender.clone()), + value, + ) + .map_err(|e| { + e.with_weight( + <>::WeightInfo as pallet_assets::WeightInfo>::approve_transfer(), + ) + })?; + Ok(>::allowance(asset, &owner, &spender)) +} + +fn mint, I>( + origin: OriginFor, + asset: AssetIdOf, + account: AccountIdOf, + value: BalanceOf, +) -> DispatchResult { + >::mint(origin, asset.into(), T::Lookup::unlookup(account), value) +} + +fn name, I>(asset: AssetIdOf) -> Vec { + >::name(asset) +} + +fn set_metadata, I>( + origin: OriginFor, + asset: AssetIdOf, + name: Vec, + symbol: Vec, + decimals: u8, +) -> DispatchResult { + >::set_metadata(origin, asset.into(), name, symbol, decimals) +} + +fn start_destroy, I>( + origin: OriginFor, + asset: AssetIdOf, +) -> DispatchResult { + >::start_destroy(origin, asset.into()) +} + +fn symbol, I>(asset: AssetIdOf) -> Vec { + >::symbol(asset) +} + +fn total_supply, I>(asset: AssetIdOf) -> T::Balance { + >::total_supply(asset) +} + +fn transfer, I>( + origin: OriginFor, + asset: AssetIdOf, + to: AccountIdOf, + value: BalanceOf, +) -> DispatchResult { + >::transfer_keep_alive( + origin, + asset.into(), + T::Lookup::unlookup(to.clone()), + value, + ) +} + +fn transfer_from, I>( + origin: OriginFor, + asset: AssetIdOf, + from: AccountIdOf, + to: AccountIdOf, + value: BalanceOf, +) -> DispatchResult { + >::transfer_approved( + origin, + asset.into(), + T::Lookup::unlookup(from), + T::Lookup::unlookup(to), + value, + ) +} diff --git a/pallets/api-vnext/src/fungibles/benchmarking.rs b/pallets/api-vnext/src/fungibles/benchmarking.rs new file mode 100644 index 000000000..56c307fc4 --- /dev/null +++ b/pallets/api-vnext/src/fungibles/benchmarking.rs @@ -0,0 +1,484 @@ +//! Benchmarking setup for pallet_api::fungibles::precompiles + +use alloc::{ + string::{String, ToString}, + vec, +}; + +use frame_benchmarking::v2::*; +use frame_support::{ + assert_ok, + pallet_prelude::{DispatchError, IsType}, + traits::{ + fungible::{Inspect, Mutate}, + fungibles::{ + approvals::{self, Inspect as _, Mutate as _}, + metadata::{self, Inspect as _}, + Create, Inspect as _, Mutate as _, + }, + Get, Time, + }, +}; +use pallet_assets::{Asset, AssetStatus}; +use pallet_revive::{ + precompiles::{ + alloy::primitives as alloy, + run::{H256, U256}, + }, + test_utils::{ALICE_ADDR, BOB_ADDR, CHARLIE_ADDR}, + AddressMapper as _, Origin, +}; + +use super::{ + precompiles::v0::{IFungibles, IFungiblesCalls}, + set_up_call, Config, NextAssetId, Pallet, TryConvert, +}; +#[cfg(test)] +use crate::mock::{ExtBuilder, Test}; +use crate::{call_precompile, fixed_address}; + +const FUNGIBLES: u16 = 100; +const ADDRESS: [u8; 20] = fixed_address(FUNGIBLES); + +type AddressMapper = ::AddressMapper; +type Assets = pallet_assets::Pallet; +type AssetsBalance = >::Balance; +type AssetsStringLimit = >::StringLimit; +type Balances = ::Currency; +type Fungibles = super::precompiles::v0::Fungibles; +type TokenId = >::AssetId; + +#[instance_benchmarks( + where + // Precompiles + T: pallet_revive::Config< + Currency: Inspect<::AccountId, Balance: Into + TryFrom>, + Hash: IsType, + Time: Time> + >, + // Fungibles + T: pallet_assets::Config + Into + Copy, Balance: TryConvert> + pallet_balances::Config, + alloy::U256: TryConvert, Error = DispatchError> +)] +mod benchmarks { + use super::*; + + #[benchmark] + fn transfer() { + let owner = >::to_account_id(&ALICE_ADDR); + let token = super::create::(owner.clone()); + let to = >::to_account_id(&BOB_ADDR); + let value: AssetsBalance = u32::MAX.into(); + let min_balance = >::minimum_balance(token); + + let mut call_setup = set_up_call(); + call_setup.set_origin(Origin::Signed(owner.clone())); + let mut ext = call_setup.ext().0; + let input = IFungiblesCalls::transfer(IFungibles::transferCall { + token: token.into(), + to: >::to_address(&to).0.into(), + value: value.try_convert().unwrap(), + }); + + >::set_balance(token, &owner, value + min_balance); + assert_eq!(>::balance(token, &owner), value + min_balance); + assert_eq!(>::balance(token, &to), 0u8.into()); + + #[block] + { + assert_ok!(call_precompile::, _, ()>(&mut ext, &ADDRESS, &input)); + } + + assert_eq!(>::balance(token, &owner), min_balance); + assert_eq!(>::balance(token, &to), value); + } + + #[benchmark] + fn transfer_from() { + let owner = >::to_account_id(&ALICE_ADDR); + let token = super::create::(owner.clone()); + let spender = >::to_account_id(&BOB_ADDR); + let to = >::to_account_id(&CHARLIE_ADDR); + let value: AssetsBalance = u32::MAX.into(); + + let mut call_setup = set_up_call(); + call_setup.set_origin(Origin::Signed(spender.clone())); + let mut ext = call_setup.ext().0; + let input = IFungiblesCalls::transferFrom(IFungibles::transferFromCall { + token: token.into(), + from: >::to_address(&owner).0.into(), + to: >::to_address(&to).0.into(), + value: value.try_convert().unwrap(), + }); + + >::set_balance(token, &owner, value); + assert_eq!(>::balance(token, &owner), value); + assert_eq!(>::balance(token, &spender), 0u8.into()); + assert_eq!(>::balance(token, &to), 0u8.into()); + assert_ok!(>::approve(token, &owner, &spender, value)); + assert_eq!(>::allowance(token, &owner, &spender), value); + + #[block] + { + assert_ok!(call_precompile::, _, ()>(&mut ext, &ADDRESS, &input)); + } + + assert_eq!(>::balance(token, &owner), 0u8.into()); + assert_eq!(>::balance(token, &spender), 0u8.into()); + assert_eq!(>::balance(token, &to), value); + assert_eq!(>::allowance(token, &owner, &spender), 0u8.into()); + } + + // Parameter: + // - 'a': whether `approve_transfer` is required. + // - 'c': whether `cancel_approval` is required. + #[benchmark] + fn approve(a: Linear<0, 1>, c: Linear<0, 1>) -> Result<(), BenchmarkError> { + let owner = >::to_account_id(&ALICE_ADDR); + let spender = >::to_account_id(&BOB_ADDR); + let current_allowance = >::from(u32::MAX / 2); + let token = super::create::(>::to_account_id(&CHARLIE_ADDR)); + // Set the `current_allowance`. + >::set_balance(&owner, u32::MAX.into()); + assert_ok!( as approvals::Mutate>::approve( + token, + &owner, + &spender, + current_allowance, + )); + let approval_value = match (a, c) { + // Equal to the current allowance. + (0, 0) => current_allowance, + // Greater than the current allowance. + (1, 0) => >::from(u32::MAX), + // Zero. + (0, 1) => >::from(0u32), + // Smaller than the current allowance. + (1, 1) => >::from(u32::MAX / 4), + _ => unreachable!("values can only be 0 or 1"), + }; + + let mut call_setup = set_up_call(); + call_setup.set_origin(Origin::Signed(owner.clone())); + let mut ext = call_setup.ext().0; + let input = IFungiblesCalls::approve(IFungibles::approveCall { + token: token.into(), + spender: >::to_address(&spender).0.into(), + value: approval_value.try_convert().unwrap(), + }); + + #[block] + { + assert_ok!(call_precompile::, _, ()>(&mut ext, &ADDRESS, &input)); + } + + assert_eq!(>::allowance(token, &owner, &spender), approval_value); + if c == 1 { + assert_has_event::( + pallet_assets::Event::ApprovalCancelled { + asset_id: token, + owner: owner.clone(), + delegate: spender.clone(), + } + .into(), + ); + } + if a == 1 { + let amount = match c { + // When the allowance was cancelled and then approved with the new value. + 1 => approval_value, + // When the allowance was increased. + 0 => approval_value - current_allowance, + _ => unreachable!("`c` can only be 0 or 1"), + }; + assert_has_event::( + pallet_assets::Event::ApprovedTransfer { + asset_id: token, + source: owner, + delegate: spender, + amount, + } + .into(), + ); + } + Ok(()) + } + + #[benchmark] + fn create() { + let owner = >::to_account_id(&ALICE_ADDR); + let admin = BOB_ADDR; + let min_balance: AssetsBalance = 1u8.into(); + + let mut call_setup = set_up_call(); + call_setup.set_origin(Origin::Signed(owner.clone())); + let mut ext = call_setup.ext().0; + let input = IFungiblesCalls::create(IFungibles::createCall { + admin: admin.0.into(), + minBalance: min_balance.try_convert().unwrap(), + }); + + #[block] + { + let token = + call_precompile::, _, u32>(&mut ext, &ADDRESS, &input).unwrap(); + assert!(>::asset_exists(token.into())); + } + } + + #[benchmark] + fn start_destroy() { + let owner = >::to_account_id(&ALICE_ADDR); + let token = super::create::(owner.clone()); + let mut call_setup = set_up_call(); + call_setup.set_origin(Origin::Signed(owner.clone())); + let mut ext = call_setup.ext().0; + let input = + IFungiblesCalls::startDestroy(IFungibles::startDestroyCall { token: token.into() }); + + assert_eq!(>::get(token).unwrap().status, AssetStatus::Live); + + #[block] + { + assert_ok!(call_precompile::, _, ()>(&mut ext, &ADDRESS, &input)); + } + + assert_eq!(>::get(token).unwrap().status, AssetStatus::Destroying); + } + + #[benchmark] + fn set_metadata() { + let owner = >::to_account_id(&ALICE_ADDR); + let token = super::create::(owner.clone()); + let max = AssetsStringLimit::::get() as usize; + let name = vec![42u8; max]; + let symbol = vec![42u8; max]; + let decimals = u8::MAX - 1; + + let mut call_setup = set_up_call(); + call_setup.set_origin(Origin::Signed(owner.clone())); + let mut ext = call_setup.ext().0; + let input = IFungiblesCalls::setMetadata(IFungibles::setMetadataCall { + token: token.into(), + name: String::from_utf8_lossy(&name).to_string(), + symbol: String::from_utf8_lossy(&symbol).to_string(), + decimals, + }); + + #[block] + { + assert_ok!(call_precompile::, _, ()>(&mut ext, &ADDRESS, &input)); + } + + assert_eq!(>::name(token), name); + assert_eq!(>::symbol(token), symbol); + assert_eq!(>::decimals(token), decimals); + } + + #[benchmark] + fn clear_metadata() { + let owner = >::to_account_id(&ALICE_ADDR); + let token = super::create::(owner.clone()); + let mut call_setup = set_up_call(); + call_setup.set_origin(Origin::Signed(owner.clone())); + let mut ext = call_setup.ext().0; + let input = + IFungiblesCalls::clearMetadata(IFungibles::clearMetadataCall { token: token.into() }); + + #[block] + { + assert_ok!(call_precompile::, _, ()>(&mut ext, &ADDRESS, &input)); + } + + assert!(>::name(token).is_empty()); + assert!(>::symbol(token).is_empty()); + assert_eq!(>::decimals(token), 0); + } + + #[benchmark] + fn mint() { + let owner = >::to_account_id(&ALICE_ADDR); + let token = super::create::(owner.clone()); + let account = >::to_account_id(&BOB_ADDR); + let value: AssetsBalance = u32::MAX.into(); + + let mut call_setup = set_up_call(); + call_setup.set_origin(Origin::Signed(owner.clone())); + let mut ext = call_setup.ext().0; + let input = IFungiblesCalls::mint(IFungibles::mintCall { + token: token.into(), + account: >::to_address(&account).0.into(), + value: value.try_convert().unwrap(), + }); + + #[block] + { + assert_ok!(call_precompile::, _, ()>(&mut ext, &ADDRESS, &input)); + } + + assert_eq!(>::balance(token, account), value); + } + + #[benchmark] + fn burn() { + let owner = >::to_account_id(&ALICE_ADDR); + let token = super::create::(owner.clone()); + let account = >::to_account_id(&BOB_ADDR); + let value: AssetsBalance = u32::MAX.into(); + + let mut call_setup = set_up_call(); + call_setup.set_origin(Origin::Signed(owner.clone())); + let mut ext = call_setup.ext().0; + let input = IFungiblesCalls::burn(IFungibles::burnCall { + token: token.into(), + account: >::to_address(&account).0.into(), + value: value.try_convert().unwrap(), + }); + + >::set_balance(token, &account, value); + + #[block] + { + assert_ok!(call_precompile::, _, ()>(&mut ext, &ADDRESS, &input)); + } + + assert_eq!(>::balance(token, account), 0u8.into()); + } + + #[benchmark] + fn total_supply() { + let mut call_setup = set_up_call(); + let mut ext = call_setup.ext().0; + let input = IFungiblesCalls::totalSupply(IFungibles::totalSupplyCall { token: 0 }); + + #[block] + { + assert_ok!(call_precompile::, _, alloy::U256>( + &mut ext, &ADDRESS, &input + )); + } + } + + #[benchmark] + fn balance_of() { + let token = super::create::(>::to_account_id(&ALICE_ADDR)); + let mut call_setup = set_up_call(); + let mut ext = call_setup.ext().0; + let input = IFungiblesCalls::balanceOf(IFungibles::balanceOfCall { + token: token.into(), + owner: ALICE_ADDR.0.into(), + }); + + #[block] + { + assert_ok!(call_precompile::, _, alloy::U256>( + &mut ext, &ADDRESS, &input + )); + } + } + + #[benchmark] + fn allowance() { + let token = super::create::(>::to_account_id(&ALICE_ADDR)); + let mut call_setup = set_up_call(); + let mut ext = call_setup.ext().0; + let input = IFungiblesCalls::allowance(IFungibles::allowanceCall { + token: token.into(), + owner: ALICE_ADDR.0.into(), + spender: BOB_ADDR.0.into(), + }); + + #[block] + { + assert_ok!(call_precompile::, _, alloy::U256>( + &mut ext, &ADDRESS, &input + )); + } + } + + #[benchmark] + fn metadata_name() { + let token = super::create::(>::to_account_id(&ALICE_ADDR)); + let mut call_setup = set_up_call(); + let mut ext = call_setup.ext().0; + let input = IFungiblesCalls::name(IFungibles::nameCall { token: token.into() }); + + #[block] + { + assert_ok!(call_precompile::, _, String>(&mut ext, &ADDRESS, &input)); + } + } + + #[benchmark] + fn metadata_symbol() { + let token = super::create::(>::to_account_id(&ALICE_ADDR)); + let mut call_setup = set_up_call(); + let mut ext = call_setup.ext().0; + let input = IFungiblesCalls::symbol(IFungibles::symbolCall { token: token.into() }); + + #[block] + { + assert_ok!(call_precompile::, _, String>(&mut ext, &ADDRESS, &input)); + } + } + + #[benchmark] + fn metadata_decimals() { + let mut call_setup = set_up_call(); + let mut ext = call_setup.ext().0; + let input = IFungiblesCalls::decimals(IFungibles::decimalsCall { token: 0 }); + + #[block] + { + assert_ok!(call_precompile::, _, u16>(&mut ext, &ADDRESS, &input)); + } + } + + #[benchmark] + fn exists() { + let mut call_setup = set_up_call(); + let mut ext = call_setup.ext().0; + let input = IFungiblesCalls::exists(IFungibles::existsCall { token: 0 }); + + #[block] + { + assert_ok!(call_precompile::, _, bool>(&mut ext, &ADDRESS, &input)); + } + } + + impl_benchmark_test_suite!(Pallet, ExtBuilder::new().build(), Test); +} + +// Ensure `event` has been emitted. +fn assert_has_event, I>( + event: >::RuntimeEvent, +) { + frame_system::Pallet::::assert_has_event(event.into()); +} + +fn create< + T: Config + pallet_assets::Config + pallet_revive::Config, + I, +>( + owner: T::AccountId, +) -> TokenId { + let token = NextAssetId::::get().unwrap_or_default(); + >::set_balance(&owner, u32::MAX.into()); + assert_ok!( as Create>::create( + token, + owner.clone(), + true, + 1u32.into() + )); + + let max = AssetsStringLimit::::get() as usize; + assert_ok!( as metadata::Mutate>::set( + token, + &owner, + vec![255u8; max], + vec![255u8; max], + u8::MAX + )); + + token +} diff --git a/pallets/api-vnext/src/fungibles/precompiles.rs b/pallets/api-vnext/src/fungibles/precompiles.rs new file mode 100644 index 000000000..ca4308fa9 --- /dev/null +++ b/pallets/api-vnext/src/fungibles/precompiles.rs @@ -0,0 +1,19 @@ +use alloc::string::String; + +use codec::Decode; +use frame_support::{sp_runtime::ModuleError, traits::PalletInfo}; +pub(super) use pallet_revive::precompiles::alloy::{ + primitives::{Address, U256}, + sol_types::SolCall, +}; +use pallet_revive::precompiles::{Error, RuntimeCosts}; +use weights::WeightInfo; + +use super::*; + +/// APIs for fungible tokens conforming to the ERC20 standard. +pub mod erc20; + +/// The first version of the Fungibles API. +#[allow(ambiguous_associated_items)] +pub mod v0; diff --git a/pallets/api-vnext/src/fungibles/precompiles/erc20.rs b/pallets/api-vnext/src/fungibles/precompiles/erc20.rs new file mode 100644 index 000000000..1d1bde96b --- /dev/null +++ b/pallets/api-vnext/src/fungibles/precompiles/erc20.rs @@ -0,0 +1,5 @@ +use super::*; + +/// The first version of the Erc20 API. +#[allow(ambiguous_associated_items)] +pub mod v0; diff --git a/pallets/api-vnext/src/fungibles/precompiles/erc20/v0.rs b/pallets/api-vnext/src/fungibles/precompiles/erc20/v0.rs new file mode 100644 index 000000000..eef0d57f9 --- /dev/null +++ b/pallets/api-vnext/src/fungibles/precompiles/erc20/v0.rs @@ -0,0 +1,831 @@ +use alloc::{string::String, vec::Vec}; + +use frame_support::{pallet_prelude as frame, sp_runtime::traits::AtLeast32Bit}; +use pallet_assets::precompiles::{AssetIdExtractor, InlineAssetIdExtractor}; +use pallet_revive::precompiles::RuntimeCosts; +use AddressMatcher::Prefix; +use IERC20::*; + +use super::{super::super::*, U256, *}; + +sol!( + #![sol(extra_derives(Debug, PartialEq))] + "src/fungibles/precompiles/interfaces/v0/IERC20.sol" +); + +/// Precompile providing an interface of the ERC-20 standard as defined in the ERC. +pub struct Erc20(PhantomData<(T, I)>); +impl< + const PREFIX: u16, + T: frame_system::Config + + pallet_assets::Config< + I, + AssetId: AtLeast32Bit, + Balance: TryConvert, + > + pallet_revive::Config + + Config, + I: 'static, + > Precompile for Erc20 +where + U256: TryConvert<>::Balance, Error = frame::DispatchError>, +{ + type Interface = IERC20Calls; + type T = T; + + const HAS_CONTRACT_INFO: bool = false; + const MATCHER: AddressMatcher = + Prefix(NonZero::new(PREFIX).expect("expected non-zero precompile address")); + + fn call( + address: &[u8; 20], + input: &Self::Interface, + env: &mut impl Ext, + ) -> Result, Error> { + let token = InlineAssetIdExtractor::asset_id_from_address(address)?.into(); + + match input { + // IERC20 + IERC20Calls::totalSupply(_) => { + env.charge(>::WeightInfo::total_supply())?; + + let total_supply = + total_supply::(token).try_convert().map_err(Self::map_err)?; + + Ok(totalSupplyCall::abi_encode_returns(&total_supply)) + }, + IERC20Calls::balanceOf(balanceOfCall { account }) => { + env.charge(>::WeightInfo::balance_of())?; + + let account = env.to_account_id(&(*account.0).into()); + let balance = + balance::(token, &account).try_convert().map_err(Self::map_err)?; + + Ok(balanceOfCall::abi_encode_returns(&balance)) + }, + IERC20Calls::transfer(transferCall { to, value }) => { + env.charge(>::WeightInfo::transfer())?; + ensure!(!to.is_zero(), ERC20InvalidReceiver { receiver: *to }); + ensure!(!value.is_zero(), ERC20InsufficientValue); + + let origin = Origin::try_from(env.caller()).map_err(Self::map_err)?; + let from = origin.address(); + let balance = balance::(token.clone(), &origin.account) + .try_convert() + .map_err(Self::map_err)?; + + transfer::( + origin.into(), + token, + env.to_account_id(&(*to.0).into()), + (*value).try_convert().map_err(Self::map_err)?, + ) + .map_err(|e| Self::map_transfer_err(e, &from, value, &balance))?; + + deposit_event(env, Transfer { from, to: *to, value: *value })?; + Ok(transferCall::abi_encode_returns(&true)) + }, + IERC20Calls::allowance(allowanceCall { owner, spender }) => { + env.charge(>::WeightInfo::allowance())?; + + let owner = env.to_account_id(&(*owner.0).into()); + let spender = env.to_account_id(&(*spender.0).into()); + let remaining = allowance::(token, &owner, &spender) + .try_convert() + .map_err(Self::map_err)?; + + Ok(allowanceCall::abi_encode_returns(&remaining)) + }, + IERC20Calls::approve(approveCall { spender, value }) => { + let charged = env.charge(>::WeightInfo::approve(1, 1))?; + ensure!(!spender.is_zero(), ERC20InvalidSpender { spender: *spender }); + ensure!(!value.is_zero(), ERC20InsufficientValue); + + let owner = (|| { + let origin = Origin::try_from(env.caller())?; + let owner = origin.address(); + + match approve::( + origin.into(), + token, + env.to_account_id(&(*spender.0).into()), + (*value).try_convert()?, + ) { + Ok(result) => { + // Adjust weight + if let Some(actual_weight) = result.actual_weight { + // TODO: replace with `env.adjust_gas(charged, result.weight);` once + // #8693 lands + env.gas_meter_mut() + .adjust_gas(charged, RuntimeCosts::Precompile(actual_weight)); + } + }, + Err(e) => { + // Adjust weight + if let Some(actual_weight) = e.post_info.actual_weight { + // TODO: replace with `env.adjust_gas(charged, result.weight);` once + // #8693 lands + env.gas_meter_mut() + .adjust_gas(charged, RuntimeCosts::Precompile(actual_weight)); + } + return Err(e.error) + }, + }; + + Ok(owner) + })() + .map_err(Self::map_err)?; + + deposit_event(env, Approval { owner, spender: *spender, value: *value })?; + Ok(approveCall::abi_encode_returns(&true)) + }, + IERC20Calls::transferFrom(transferFromCall { from, to, value }) => { + env.charge(>::WeightInfo::transfer_from())?; + ensure!(!from.is_zero(), ERC20InvalidSender { sender: *from }); + ensure!(!to.is_zero(), ERC20InvalidReceiver { receiver: *to }); + ensure!(!value.is_zero(), ERC20InsufficientValue); + + let origin = Origin::try_from(env.caller()).map_err(Self::map_err)?; + let owner = env.to_account_id(&(*from.0).into()); + let spender = origin.address(); + let allowance = allowance::(token.clone(), &owner, &origin.account) + .try_convert() + .map_err(Self::map_err)?; + + transfer_from::( + origin.into(), + token, + owner, + env.to_account_id(&(*to.0).into()), + (*value).try_convert()?, + ) + .map_err(|e| Self::map_transfer_from_err(e, &spender, value, &allowance))?; + + deposit_event(env, Transfer { from: *from, to: *to, value: *value })?; + Ok(transferFromCall::abi_encode_returns(&true)) + }, + // IERC20Metadata + IERC20Calls::name(_) => { + env.charge(>::WeightInfo::metadata_name())?; + + let result = name::(token); + let result = String::from_utf8_lossy(result.as_slice()).into(); + + Ok(nameCall::abi_encode_returns(&result)) + }, + IERC20Calls::symbol(_) => { + env.charge(>::WeightInfo::metadata_symbol())?; + + let result = symbol::(token); + let result = String::from_utf8_lossy(result.as_slice()).into(); + + Ok(symbolCall::abi_encode_returns(&result)) + }, + IERC20Calls::decimals(_) => { + env.charge(>::WeightInfo::metadata_decimals())?; + + let result = decimals::(token); + + Ok(decimalsCall::abi_encode_returns(&result)) + }, + } + } +} + +impl, I: 'static> Erc20 { + /// The address of the precompile. + pub fn address(id: u32) -> [u8; 20] { + prefixed_address(PREFIX, id) + } + + // Maps generic runtime errors. + fn map_err(e: frame::DispatchError) -> Error { + use frame::DispatchError::*; + match e { + Arithmetic(error) => self::Arithmetic::from(error).into(), + Module(ModuleError { index, error, .. }) => + self::Module { index, error: error.into() }.into(), + Token(error) => self::Token::from(error).into(), + Transactional(error) => self::Transactional::from(error).into(), + Trie(error) => self::Trie::from(error).into(), + other => self::Dispatch::from(other).into(), + } + } + + // Maps select, domain-specific dispatch errors to ERC20 errors. All others are mapped to + // more generic runtime errors. + fn map_transfer_err( + e: frame::DispatchError, + from: &Address, + value: &U256, + balance: &U256, + ) -> Error { + match e { + frame::DispatchError::Module(ModuleError { index, error, .. }) + if Some(index as usize) == + T::PalletInfo::index::>() => + { + use pallet_assets::{Error, Error::*}; + Error::::decode(&mut error.as_slice()).ok().and_then(|error| match error { + BalanceLow => Some( + IERC20::ERC20InsufficientBalance { + sender: *from, + balance: *balance, + needed: *value, + } + .into(), + ), + _ => None, + }) + }, + _ => None, + } + .unwrap_or_else(|| Self::map_err(e)) + } + + // Maps select, domain-specific dispatch errors to ERC20 errors. All others are mapped to + // more generic runtime errors. + fn map_transfer_from_err( + e: frame::DispatchError, + spender: &Address, + value: &U256, + allowance: &U256, + ) -> Error { + match e { + frame::DispatchError::Module(ModuleError { index, error, .. }) + if Some(index as usize) == + T::PalletInfo::index::>() => + { + use pallet_assets::{Error, Error::*}; + Error::::decode(&mut error.as_slice()).ok().and_then(|error| match error { + Unapproved => Some( + IERC20::ERC20InsufficientAllowance { + spender: *spender, + allowance: *allowance, + needed: *value, + } + .into(), + ), + _ => None, + }) + }, + _ => None, + } + .unwrap_or_else(|| Self::map_err(e)) + } +} + +// Encoding of custom errors via `Error(String)`. +impl_from_sol_error! { + // ERC20 + IERC20::ERC20InsufficientAllowance, + IERC20::ERC20InsufficientBalance, + // Generic + Arithmetic, + Dispatch, + Module, + Token, + Transactional, + Trie +} + +impl From for Arithmetic { + fn from(error: frame_support::sp_runtime::ArithmeticError) -> Self { + use frame_support::sp_runtime::ArithmeticError::*; + Self(match error { + Underflow => ArithmeticError::Underflow, + Overflow => ArithmeticError::Overflow, + DivisionByZero => ArithmeticError::DivisionByZero, + }) + } +} + +impl From for Dispatch { + fn from(error: frame::DispatchError) -> Self { + use frame::DispatchError::*; + Self(match error { + Other(_) => DispatchError::Other, + CannotLookup => DispatchError::CannotLookup, + BadOrigin => DispatchError::BadOrigin, + Module(_) => DispatchError::Module, + ConsumerRemaining => DispatchError::ConsumerRemaining, + NoProviders => DispatchError::NoProviders, + TooManyConsumers => DispatchError::TooManyConsumers, + Token(_) => DispatchError::Token, + Arithmetic(_) => DispatchError::Arithmetic, + Transactional(_) => DispatchError::Transactional, + Exhausted => DispatchError::Exhausted, + Corruption => DispatchError::Corruption, + Unavailable => DispatchError::Unavailable, + RootNotAllowed => DispatchError::RootNotAllowed, + Trie(_) => DispatchError::Trie, + }) + } +} + +impl From for Module { + fn from(error: frame_support::sp_runtime::ModuleError) -> Self { + Self { index: error.index, error: error.error.into() } + } +} + +impl From for Token { + fn from(error: frame_support::sp_runtime::TokenError) -> Self { + use frame_support::sp_runtime::TokenError::*; + Self(match error { + FundsUnavailable => TokenError::FundsUnavailable, + OnlyProvider => TokenError::OnlyProvider, + BelowMinimum => TokenError::BelowMinimum, + CannotCreate => TokenError::CannotCreate, + UnknownAsset => TokenError::Unknown, + Frozen => TokenError::Frozen, + Unsupported => TokenError::Unsupported, + CannotCreateHold => TokenError::CannotCreateHold, + NotExpendable => TokenError::NotExpendable, + Blocked => TokenError::Blocked, + }) + } +} + +impl From for Transactional { + fn from(error: frame_support::sp_runtime::TransactionalError) -> Self { + use frame_support::sp_runtime::TransactionalError::*; + Self(match error { + LimitReached => TransactionalError::LimitReached, + NoLayer => TransactionalError::NoLayer, + }) + } +} + +impl From for Trie { + fn from(error: frame_support::traits::TrieError) -> Self { + use frame_support::traits::TrieError::*; + Self(match error { + InvalidStateRoot => TrieError::InvalidStateRoot, + IncompleteDatabase => TrieError::IncompleteDatabase, + ValueAtIncompleteKey => TrieError::ValueAtIncompleteKey, + DecoderError => TrieError::DecoderError, + InvalidHash => TrieError::InvalidHash, + DuplicateKey => TrieError::DuplicateKey, + ExtraneousNode => TrieError::ExtraneousNode, + ExtraneousValue => TrieError::ExtraneousValue, + ExtraneousHashReference => TrieError::ExtraneousHashReference, + InvalidChildReference => TrieError::InvalidChildReference, + ValueMismatch => TrieError::ValueMismatch, + IncompleteProof => TrieError::IncompleteProof, + RootMismatch => TrieError::RootMismatch, + DecodeError => TrieError::DecodeError, + }) + } +} + +#[cfg(test)] +mod tests { + use frame_support::{ + assert_ok, sp_runtime::app_crypto::sp_core::bytes::to_hex, + traits::fungibles::approvals::Inspect, + }; + use pallet_revive::{ + precompiles::alloy::{ + primitives::Address, + sol_types::{SolInterface, SolType, SolValue}, + }, + test_utils::{ALICE, BOB, CHARLIE}, + }; + use IERC20::{Approval, Transfer}; + + use super::*; + use crate::{ + assert_last_event, bare_call, + fungibles::approve, + mock::{Assets, ExtBuilder, RuntimeOrigin, Test, ERC20, UNIT}, + to_address, DepositLimit, Weight, + }; + + type AccountId = ::AccountId; + + #[test] + fn total_supply_works() { + let token = 1; + let total_supply = 10_000_000; + ExtBuilder::new() + .with_assets(vec![(token, CHARLIE, false, 1)]) + .with_asset_balances(vec![(token, ALICE, total_supply)]) + .build() + .execute_with(|| { + let call = IERC20Calls::totalSupply(totalSupplyCall {}); + assert_eq!( + call_precompile::(&ALICE, token, &call).unwrap(), + U256::from(total_supply) + ); + }); + } + + #[test] + fn balance_of_works() { + let token = 1; + let account = ALICE; + let endowment = 10_000_000; + ExtBuilder::new() + .with_assets(vec![(token, CHARLIE, false, 1)]) + .with_asset_balances(vec![(token, account.clone(), endowment)]) + .build() + .execute_with(|| { + assert_eq!( + call_precompile::( + &BOB, + token, + &IERC20Calls::balanceOf(balanceOfCall { + account: to_address(&account).0.into() + }) + ) + .unwrap(), + U256::from(endowment) + ); + }); + } + + #[test] + fn transfer_reverts_with_invalid_receiver() { + let token = 1; + let origin = ALICE; + ExtBuilder::new().build().execute_with(|| { + let call = transferCall { to: Address::default(), value: U256::ZERO }; + let transfer = IERC20Calls::transfer(call); + assert_revert!( + call_precompile::<()>(&origin, token, &transfer), + ERC20InvalidReceiver { receiver: Address::default() } + ); + }); + } + + #[test] + fn transfer_reverts_with_zero_value() { + let token = 1; + let origin = ALICE; + let to = [255; 20].into(); + ExtBuilder::new().build().execute_with(|| { + let call = transferCall { to, value: U256::ZERO }; + let transfer = IERC20Calls::transfer(call); + assert_revert!( + call_precompile::<()>(&origin, token, &transfer), + ERC20InsufficientValue + ); + }); + } + + #[test] + fn transfer_reverts_with_insufficient_balance() { + let token = 1; + let origin = ALICE; + let endowment = 10_000_000; + let to = BOB; + ExtBuilder::new() + .with_assets(vec![(token, CHARLIE, true, 1)]) + .with_asset_balances(vec![(token, origin.clone(), endowment)]) + .build() + .execute_with(|| { + let value = U256::from(endowment + 1); + let call = transferCall { to: to_address(&to).0.into(), value }; + let transfer = IERC20Calls::transfer(call); + assert_revert!( + call_precompile::<()>(&origin, token, &transfer), + ERC20InsufficientBalance { + sender: to_address(&origin).0.into(), + balance: U256::from(endowment), + needed: value + } + ); + }); + } + + #[test] + fn transfer_works() { + let token = 1; + let origin = ALICE; + let endowment = 10_000_000; + let to = BOB; + ExtBuilder::new() + .with_assets(vec![(token, CHARLIE, true, 1)]) + .with_asset_balances(vec![(token, origin.clone(), endowment)]) + .build() + .execute_with(|| { + assert_eq!(Assets::balance(token, &origin), endowment); + assert_eq!(Assets::balance(token, &to), 0); + + let value = endowment / 2; + assert!(call_precompile::( + &origin, + token, + &IERC20Calls::transfer(IERC20::transferCall { + to: to_address(&to).0.into(), + value: U256::from(value) + }) + ) + .unwrap()); + + assert_eq!(Assets::balance(token, &origin), endowment - value); + assert_eq!(Assets::balance(token, &to), value); + let from = to_address(&origin).0.into(); + let to = to_address(&to).0.into(); + let event = Transfer { from, to, value: U256::from(value) }; + assert_last_event(prefixed_address(ERC20, token), event); + }); + } + + #[test] + fn allowance_works() { + let token = 1; + let owner = ALICE; + let spender = BOB; + let value = 10_000_000; + ExtBuilder::new() + .with_balances(vec![(owner.clone(), UNIT)]) + .with_assets(vec![(token, CHARLIE, false, 1)]) + .build() + .execute_with(|| { + assert_ok!(approve::( + RuntimeOrigin::signed(owner.clone()), + token, + BOB, + value + )); + + assert_eq!( + call_precompile::( + &BOB, + token, + &IERC20Calls::allowance(allowanceCall { + owner: to_address(&owner).0.into(), + spender: to_address(&spender).0.into(), + }) + ) + .unwrap(), + U256::from(value) + ); + }); + } + + #[test] + fn approve_reverts_with_invalid_spender() { + let token = 1; + let origin = ALICE; + ExtBuilder::new().build().execute_with(|| { + let call = approveCall { spender: Address::default(), value: U256::ZERO }; + let approve = IERC20Calls::approve(call); + assert_revert!( + call_precompile::<()>(&origin, token, &approve), + ERC20InvalidSpender { spender: Address::default() } + ); + }); + } + + #[test] + fn approve_reverts_with_zero_value() { + let token = 1; + let origin = ALICE; + let spender = [255; 20].into(); + ExtBuilder::new().build().execute_with(|| { + let call = approveCall { spender, value: U256::ZERO }; + let approve = IERC20Calls::approve(call); + assert_revert!(call_precompile::<()>(&origin, token, &approve), ERC20InsufficientValue); + }); + } + + #[test] + fn approve_works() { + let token = 1; + let origin = ALICE; + let spender = BOB; + let value = 10_000_000; + ExtBuilder::new() + .with_balances(vec![(origin.clone(), UNIT)]) + .with_assets(vec![(token, CHARLIE, false, 1)]) + .build() + .execute_with(|| { + assert_eq!(Assets::allowance(token, &origin, &spender), 0); + + assert!(call_precompile::( + &origin, + token, + &IERC20Calls::approve(IERC20::approveCall { + spender: to_address(&spender).0.into(), + value: U256::from(value) + }) + ) + .unwrap()); + + assert_eq!(Assets::allowance(token, &origin, &spender), value); + let owner = to_address(&origin).0.into(); + let spender = to_address(&spender).0.into(); + let event = Approval { owner, spender, value: U256::from(value) }; + assert_last_event(prefixed_address(ERC20, token), event); + }); + } + + #[test] + fn transfer_from_reverts_with_invalid_sender() { + let token = 1; + let origin = ALICE; + ExtBuilder::new().build().execute_with(|| { + let call = transferFromCall { + from: Address::default(), + to: Address::default(), + value: U256::ZERO, + }; + let transfer_from = IERC20Calls::transferFrom(call); + assert_revert!( + call_precompile::<()>(&origin, token, &transfer_from), + ERC20InvalidSender { sender: Address::default() } + ); + }); + } + + #[test] + fn transfer_from_reverts_with_invalid_receiver() { + let token = 1; + let origin = ALICE; + let from = [255; 20].into(); + ExtBuilder::new().build().execute_with(|| { + let call = transferFromCall { from, to: Address::default(), value: U256::ZERO }; + let transfer_from = IERC20Calls::transferFrom(call); + assert_revert!( + call_precompile::<()>(&origin, token, &transfer_from), + ERC20InvalidReceiver { receiver: Address::default() } + ); + }); + } + + #[test] + fn transfer_from_reverts_with_zero_value() { + let token = 1; + let origin = ALICE; + let from = [255; 20].into(); + let to = [1; 20].into(); + ExtBuilder::new().build().execute_with(|| { + let call = transferFromCall { from, to, value: U256::ZERO }; + let transfer_from = IERC20Calls::transferFrom(call); + assert_revert!( + call_precompile::<()>(&origin, token, &transfer_from), + ERC20InsufficientValue + ); + }); + } + + #[test] + fn transfer_from_reverts_with_insufficient_allowance() { + let token = 1; + let origin = BOB; + let from = ALICE; + let endowment = 10_000_000; + let to = CHARLIE; + let allowance = endowment / 2; + ExtBuilder::new() + .with_balances(vec![(from.clone(), UNIT)]) + .with_assets(vec![(token, CHARLIE, true, 1)]) + .with_asset_balances(vec![(token, from.clone(), endowment)]) + .build() + .execute_with(|| { + assert_ok!(approve::( + RuntimeOrigin::signed(from.clone()), + token, + origin.clone(), + allowance + )); + + let value = U256::from(allowance + 1); + let call = transferFromCall { + from: to_address(&from).0.into(), + to: to_address(&to).0.into(), + value, + }; + let transfer_from = IERC20Calls::transferFrom(call); + assert_revert!( + call_precompile::<()>(&origin, token, &transfer_from), + ERC20InsufficientAllowance { + spender: to_address(&origin).0.into(), + allowance: U256::from(allowance), + needed: value + } + ); + }); + } + + #[test] + fn transfer_from_works() { + let token = 1; + let origin = BOB; + let from = ALICE; + let endowment = 10_000_000; + let to = CHARLIE; + let value = endowment / 2; + ExtBuilder::new() + .with_balances(vec![(from.clone(), UNIT)]) + .with_assets(vec![(token, CHARLIE, true, 1)]) + .with_asset_balances(vec![(token, from.clone(), endowment)]) + .build() + .execute_with(|| { + assert_eq!(Assets::balance(token, &from), endowment); + assert_eq!(Assets::balance(token, &to), 0); + assert_ok!(approve::( + RuntimeOrigin::signed(from.clone()), + token, + origin.clone(), + value + )); + + assert!(call_precompile::( + &origin, + token, + &IERC20Calls::transferFrom(IERC20::transferFromCall { + from: to_address(&from).0.into(), + to: to_address(&to).0.into(), + value: U256::from(value), + }) + ) + .unwrap()); + + assert_eq!(Assets::balance(token, &from), endowment - value); + assert_eq!(Assets::balance(token, &to), value); + let from = to_address(&from).0.into(); + let to = to_address(&to).0.into(); + let event = Transfer { from, to, value: U256::from(value) }; + assert_last_event(prefixed_address(ERC20, token), event); + }); + } + + #[test] + fn name_works() { + let token = 1; + let _name = "name"; + ExtBuilder::new() + .with_assets(vec![(token, CHARLIE, false, 1)]) + .with_asset_metadata(vec![(token, _name.as_bytes().to_vec(), b"symbol".to_vec(), 10)]) + .build() + .execute_with(|| { + assert_eq!( + call_precompile::(&ALICE, token, &IERC20Calls::name(nameCall {})) + .unwrap() + .as_str(), + _name + ); + }); + } + + #[test] + fn symbol_works() { + let token = 1; + let _symbol = "symbol"; + ExtBuilder::new() + .with_assets(vec![(token, CHARLIE, false, 1)]) + .with_asset_metadata(vec![(token, b"name".to_vec(), _symbol.as_bytes().to_vec(), 10)]) + .build() + .execute_with(|| { + assert_eq!( + call_precompile::(&ALICE, token, &IERC20Calls::symbol(symbolCall {})) + .unwrap() + .as_str(), + _symbol + ); + }); + } + + #[test] + fn decimals_works() { + let token = 1; + let _decimals = u8::MAX; + ExtBuilder::new() + .with_assets(vec![(token, CHARLIE, false, 1)]) + .with_asset_metadata(vec![(token, b"name".to_vec(), b"symbol".to_vec(), _decimals)]) + .build() + .execute_with(|| { + assert_eq!( + call_precompile::(&ALICE, token, &IERC20Calls::decimals(decimalsCall {})) + .unwrap() as u8, + _decimals + ); + }); + } + + #[test] + fn selectors_match_standard() { + assert_eq!(to_hex(&decimalsCall::SELECTOR, false), "0x313ce567"); + assert_eq!(to_hex(&nameCall::SELECTOR, false), "0x06fdde03"); + assert_eq!(to_hex(&symbolCall::SELECTOR, false), "0x95d89b41"); + } + + fn call_precompile::RustType>>( + origin: &AccountId, + token: u32, + input: &IERC20Calls, + ) -> Result { + let address = prefixed_address(ERC20, token); + bare_call::( + RuntimeOrigin::signed(origin.clone()), + address.into(), + 0, + Weight::MAX, + DepositLimit::Balance(u128::MAX), + input.abi_encode(), + ) + } +} diff --git a/pallets/api-vnext/src/fungibles/precompiles/interfaces/v0/IERC20.sol b/pallets/api-vnext/src/fungibles/precompiles/interfaces/v0/IERC20.sol new file mode 100644 index 000000000..bbc876db2 --- /dev/null +++ b/pallets/api-vnext/src/fungibles/precompiles/interfaces/v0/IERC20.sol @@ -0,0 +1,272 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.30; + +/** + * @title Interface of the ERC-20 standard as defined in the ERC. + * Based on https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol + */ +interface IERC20 { + /** + * @notice Emitted when `value` tokens are moved from one account (`from`) to another (`to`). + * + * Note that `value` may be zero. + */ + event Transfer(address indexed from, address indexed to, uint256 value); + /** + * @notice Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. + * `value` is the new allowance. + */ + event Approval( + address indexed owner, + address indexed spender, + uint256 value + ); + + /** + * @notice Returns the value of tokens in existence. + */ + function totalSupply() external view returns (uint256); + + /** + * @notice Returns the value of tokens owned by `account`. + */ + function balanceOf(address account) external view returns (uint256); + + /** + * @notice Moves a `value` amount of tokens from the caller's account to `to`. + * + * Returns a boolean value indicating whether the operation succeeded. + * + * Emits a {Transfer} event. + */ + function transfer(address to, uint256 value) external returns (bool); + + /** + * @notice Returns the remaining number of tokens that `spender` will be allowed to spend on + * behalf of `owner` through {transferFrom}. This is zero by default. + * + * This value changes when {approve} or {transferFrom} are called. + */ + function allowance( + address owner, + address spender + ) external view returns (uint256); + + /** + * @notice Sets a `value` amount of tokens as the allowance of `spender` over the caller's + * tokens. + * + * Returns a boolean value indicating whether the operation succeeded. + * + * IMPORTANT: Beware that changing an allowance with this method brings the risk that + * someone may use both the old and the new allowance by unfortunate transaction ordering. + * One possible solution to mitigate this race condition is to first reduce the spender's + * allowance to 0 and set the desired value afterwards: + * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 + * + * Emits an {Approval} event. + */ + function approve(address spender, uint256 value) external returns (bool); + + /** + * @notice Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. + * `value` is then deducted from the caller's allowance. + * + * Returns a boolean value indicating whether the operation succeeded. + * + * Emits a {Transfer} event. + */ + function transferFrom( + address from, + address to, + uint256 value + ) external returns (bool); + + // Extensions: `sol!` macro does not support inheritance, so extensions need to be included in same interface + + // IERC20Metadata: Interface for the optional metadata functions from the ERC-20 standard. + // Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/extensions/IERC20Metadata.sol + + /** + * @notice Returns the name of the token. + */ + function name() external view returns (string memory); + + /** + * @notice Returns the symbol of the token. + */ + function symbol() external view returns (string memory); + + /** + * @notice Returns the decimals places of the token. + */ + function decimals() external view returns (uint8); + + /** + * @notice Indicates a failure with the `spender`’s `allowance`. Used in transfers. + * @param spender Address that may be allowed to operate on tokens without being their owner. + * @param allowance Amount of tokens a `spender` is allowed to operate with. + * @param needed Minimum amount required to perform a transfer. + */ + error ERC20InsufficientAllowance( + address spender, + uint256 allowance, + uint256 needed + ); + /** + * @notice Indicates an error related to the current `balance` of a `sender`. Used in transfers. + * @param sender Address whose tokens are being transferred. + * @param balance Current balance for the interacting account. + * @param needed Minimum amount required to perform a transfer. + */ + error ERC20InsufficientBalance( + address sender, + uint256 balance, + uint256 needed + ); + /// @notice Indicates an error related to a specified `value`. + error ERC20InsufficientValue(); + /** + * @notice Indicates a failure with the token `receiver`. Used in transfers. + * @param receiver Address to which tokens are being transferred. + */ + error ERC20InvalidReceiver(address receiver); + /** + * @notice Indicates a failure with the token `sender`. Used in transfers. + * @param sender Address whose tokens are being transferred. + */ + error ERC20InvalidSender(address sender); + /** + * @notice Indicates a failure with the `spender` to be approved. Used in approvals. + * @param spender Address that may be allowed to operate on tokens without being their owner. + */ + error ERC20InvalidSpender(address spender); +} + + +/// @notice An arithmetic error. +error Arithmetic(ArithmeticError); +/// @title Arithmetic errors. +enum ArithmeticError { + /// @notice Underflow. + Underflow, + /// @notice Overflow. + Overflow, + /// @notice Division by zero. + DivisionByZero +} + +/// @notice Reason why a dispatch call failed. +error Dispatch(DispatchError); +/// @title Reason why a dispatch call failed. +enum DispatchError { + /// @notice Some error occurred. + Other, + /// @notice Failed to lookup some data. + CannotLookup, + /// @notice A bad origin. + BadOrigin, + /// @notice A custom error in a module. + Module, + /// @notice At least one consumer is remaining so the account cannot be destroyed. + ConsumerRemaining, + /// @notice There are no providers so the account cannot be created. + NoProviders, + /// @notice There are too many consumers so the account cannot be created. + TooManyConsumers, + /// @notice An error to do with tokens. + Token, + /// @notice An arithmetic error. + Arithmetic, + /// @notice The number of transactional layers has been reached, or we are not in a + /// transactional layer. + Transactional, + /// @notice Resources exhausted, e.g. attempt to read/write data which is too large to manipulate. + Exhausted, + /// @notice The state is corrupt; this is generally not going to fix itself. + Corruption, + /// @notice Some resource (e.g. a preimage) is unavailable right now. This might fix itself later. + Unavailable, + /// @notice Root origin is not allowed. + RootNotAllowed, + /// @notice An error with tries. + Trie +} + +/** + * @notice Reason why a pallet call failed. + * @param index Module index, matching the metadata module index. + * @param error Module specific error value. + */ +error Module(uint8 index, bytes4 error); + +/// @notice An error to do with tokens. +error Token(TokenError); +/// @title Description of what went wrong when trying to complete an operation on a token. +enum TokenError { + /// @notice Funds are unavailable. + FundsUnavailable, + /// @notice Some part of the balance gives the only provider reference to the account and thus cannot be (re)moved. + OnlyProvider, + /// @notice Account cannot exist with the funds that would be given. + BelowMinimum, + /// @notice Account cannot be created. + CannotCreate, + /// @notice The token in question is unknown. + Unknown, + /// @notice Funds exist but are frozen. + Frozen, + /// @notice Operation is not supported by the token. + Unsupported, + /// @notice Account cannot be created for a held balance. + CannotCreateHold, + /// @notice Withdrawal would cause unwanted loss of account. + NotExpendable, + /// @notice Account cannot receive the tokens. + Blocked +} + +/// @notice The number of transactional layers has been reached, or we are not in a transactional layer. +error Transactional(TransactionalError); +/// @title Errors related to transactional storage layers. +enum TransactionalError { + /// @notice Too many transactional layers have been spawned. + LimitReached, + /// @notice A transactional layer was expected, but does not exist. + NoLayer +} + +/// @notice An error with tries. +error Trie(TrieError); +/// @title A runtime friendly error type for tries. +enum TrieError { + /// @notice Attempted to create a trie with a state root not in the DB. + InvalidStateRoot, + /// @notice Trie item not found in the database, + IncompleteDatabase, + /// @notice A value was found in the trie with a nibble key that was not byte-aligned. + ValueAtIncompleteKey, + /// @notice Corrupt Trie item. + DecoderError, + /// @notice Hash is not value. + InvalidHash, + /// @notice The statement being verified contains multiple key-value pairs with the same key. + DuplicateKey, + /// @notice The proof contains at least one extraneous node. + ExtraneousNode, + /// @notice The proof contains at least one extraneous value which should have been omitted from the + /// proof. + ExtraneousValue, + /// @notice The proof contains at least one extraneous hash reference the should have been omitted. + ExtraneousHashReference, + /// @notice The proof contains an invalid child reference that exceeds the hash length. + InvalidChildReference, + /// @notice The proof indicates that an expected value was not found in the trie. + ValueMismatch, + /// @notice The proof is missing trie nodes required to verify. + IncompleteProof, + /// @notice The root hash computed from the proof is incorrect. + RootMismatch, + /// @notice One of the proof nodes could not be decoded. + DecodeError, +} diff --git a/pallets/api-vnext/src/fungibles/precompiles/interfaces/v0/IFungibles.sol b/pallets/api-vnext/src/fungibles/precompiles/interfaces/v0/IFungibles.sol new file mode 100644 index 000000000..2d58bc158 --- /dev/null +++ b/pallets/api-vnext/src/fungibles/precompiles/interfaces/v0/IFungibles.sol @@ -0,0 +1,350 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.30; + +/** + * @title The fungibles precompile offers a streamlined interface for interacting with fungible + * tokens. The goal is to provide a simplified, consistent API that adheres to standards in the + * smart contract space. + */ +interface IFungibles { + /** + * @notice Transfers `value` amount of tokens from the caller's account to account `to`. + * @param token The token to transfer. + * @param to The recipient account. + * @param value The number of tokens to transfer. + */ + function transfer(uint32 token, address to, uint256 value) external; + + /** + * @notice Transfers `value` amount tokens on behalf of `from` to account `to`. + * @param token The token to transfer. + * @param from The account from which the token balance will be withdrawn. + * @param to The recipient account. + * @param value The number of tokens to transfer. + */ + function transferFrom( + uint32 token, + address from, + address to, + uint256 value + ) external; + + /** + * @notice Approves `spender` to spend `value` amount of tokens on behalf of the caller. + * @param token The token to approve. + * @param spender The account that is allowed to spend the tokens. + * @param value The number of tokens to approve. + */ + function approve(uint32 token, address spender, uint256 value) external; + + /** + * @notice Increases the allowance of `spender` by `value` amount of tokens. + * @param token The token to have an allowance increased. + * @param spender The account that is allowed to spend the tokens. + * @param value The number of tokens to increase the allowance by. + * @return allowance The resulting allowance of `spender`. + */ + function increaseAllowance( + uint32 token, + address spender, + uint256 value + ) external returns (uint256 allowance); + + /** + * @notice Decreases the allowance of `spender` by `value` amount of tokens. + * @param token The token to have an allowance decreased. + * @param spender The account that is allowed to spend the tokens. + * @param value The number of tokens to decrease the allowance by. + * @return allowance The resulting allowance of `spender`. + */ + function decreaseAllowance( + uint32 token, + address spender, + uint256 value + ) external returns (uint256 allowance); + + /** + * @notice Create a new token with an automatically generated identifier. + * @param admin The account that will administer the token. + * @param minBalance The minimum balance required for accounts holding this token. + * @return id The resulting identifier of the token. + */ + function create( + address admin, + uint256 minBalance + ) external returns (uint32 id); + + /** + * @notice Start the process of destroying a token. + * @dev See `pallet-assets` documentation for more information. Related dispatchables are`destroy_accounts`, `destroy_approvals`, `finish_destroy`. + * @param token The token to be destroyed. + */ + function startDestroy(uint32 token) external; + + /** + * @notice Set the metadata for a token. + * @param token The token to update. + * @param name The user friendly name of this token. + * @param symbol The exchange symbol for this token. + * @param decimals The number of decimals this token uses to represent one unit. + */ + function setMetadata( + uint32 token, + string calldata name, + string calldata symbol, + uint8 decimals + ) external; + + /** + * @notice Clear the metadata for a token. + * @param token The token to update. + */ + function clearMetadata(uint32 token) external; + + /** + * @notice Creates `value` amount of tokens and assigns them to `account`, increasing the total supply. + * @param token The token to mint. + * @param token The account to be credited with the created tokens. + * @param value The number of tokens to mint. + */ + function mint(uint32 token, address account, uint256 value) external; + + /** + * @notice Destroys `value` amount of tokens from `account`, reducing the total supply. + * @param token The token to burn. + * @param account The account from which the tokens will be destroyed. + * @param value The number of tokens to destroy. + */ + function burn(uint32 token, address account, uint256 value) external; + + /** + * @notice Total token supply for a specified token. + * @param token The token. + */ + function totalSupply(uint32 token) external view returns (uint256); + + /** + * @notice Account balance for a specified `token` and `owner`. + * @param token The token. + * @param owner The owner of the token. + */ + function balanceOf( + uint32 token, + address owner + ) external view returns (uint256); + + /** + * @notice Allowance for a `spender` approved by an `owner`, for a specified `token`. + * @param token The token. + * @param owner The owner of the token. + * @param spender The spender with an allowance. + */ + function allowance( + uint32 token, + address owner, + address spender + ) external view returns (uint256); + + /** + * @notice Name of the specified token. + */ + function name(uint32 token) external view returns (string memory); + + /** + * @notice Symbol for the specified token. + */ + function symbol(uint32 token) external view returns (string memory); + + /** + * @notice Decimals for the specified token. + */ + function decimals(uint32 token) external view returns (uint8); + + /** + * @notice Whether the specified token exists. + */ + function exists(uint32 token) external view returns (bool); + + /** + * @notice Event emitted when allowance by `owner` to `spender` changes. + * @param token The token. + * @param owner The owner providing the allowance. + * @param spender The beneficiary of the allowance. + * @param value The new allowance amount. + */ + event Approval(uint32 token, address owner, address spender, uint256 value); + + /** + * @notice Event emitted when a token transfer occurs. + * @param token The token. + * @param from The source of the transfer. The zero address when minting. + * @param to The recipient of the transfer. The zero address when burning. + * @param value The amount transferred (or minted/burned). + */ + event Transfer( + uint32 indexed token, + address indexed from, + address indexed to, + uint256 value + ); + + /** + * @notice Event emitted when a token is created. + * @param id The token identifier. + * @param creator The creator of the token. + * @param admin The administrator of the token. + */ + event Created(uint32 id, address creator, address admin); + + /// @notice The metadata provided is invalid. + error BadMetadata(); + /// @notice The account balance is insufficient. + error InsufficientBalance(); + /// @notice The token recipient is invalid. + error InvalidRecipient(address); + /// @notice The minimum balance should be non-zero. + error MinBalanceZero(); + /// @notice The signing account has no permission to do the operation. + error NoPermission(); + /// @notice The token is not live, and likely being destroyed.. + error NotLive(); + /// @notice No approval exists that would allow the transfer. + error Unapproved(); + /// @notice The given token identifier is unknown. + error Unknown(); + /// @notice The `admin` address cannot be the zero address. + error ZeroAdminAddress(); + /// @notice The recipient cannot be the zero address. + error ZeroRecipientAddress(); + /// @notice The sender cannot be the zero address. + error ZeroSenderAddress(); + /// @notice The specified `value` cannot be zero. + error ZeroValue(); +} + +/// @notice An arithmetic error. +error Arithmetic(ArithmeticError); +/// @title Arithmetic errors. +enum ArithmeticError { + /// @notice Underflow. + Underflow, + /// @notice Overflow. + Overflow, + /// @notice Division by zero. + DivisionByZero +} + +/// @notice Reason why a dispatch call failed. +error Dispatch(DispatchError); +/// @title Reason why a dispatch call failed. +enum DispatchError { + /// @notice Some error occurred. + Other, + /// @notice Failed to lookup some data. + CannotLookup, + /// @notice A bad origin. + BadOrigin, + /// @notice A custom error in a module. + Module, + /// @notice At least one consumer is remaining so the account cannot be destroyed. + ConsumerRemaining, + /// @notice There are no providers so the account cannot be created. + NoProviders, + /// @notice There are too many consumers so the account cannot be created. + TooManyConsumers, + /// @notice An error to do with tokens. + Token, + /// @notice An arithmetic error. + Arithmetic, + /// @notice The number of transactional layers has been reached, or we are not in a + /// transactional layer. + Transactional, + /// @notice Resources exhausted, e.g. attempt to read/write data which is too large to manipulate. + Exhausted, + /// @notice The state is corrupt; this is generally not going to fix itself. + Corruption, + /// @notice Some resource (e.g. a preimage) is unavailable right now. This might fix itself later. + Unavailable, + /// @notice Root origin is not allowed. + RootNotAllowed, + /// @notice An error with tries. + Trie +} + +/** + * @notice Reason why a pallet call failed. + * @param index Module index, matching the metadata module index. + * @param error Module specific error value. + */ +error Module(uint8 index, bytes4 error); + +/// @notice An error to do with tokens. +error Token(TokenError); +/// @title Description of what went wrong when trying to complete an operation on a token. +enum TokenError { + /// @notice Funds are unavailable. + FundsUnavailable, + /// @notice Some part of the balance gives the only provider reference to the account and thus cannot be (re)moved. + OnlyProvider, + /// @notice Account cannot exist with the funds that would be given. + BelowMinimum, + /// @notice Account cannot be created. + CannotCreate, + /// @notice The token in question is unknown. + Unknown, + /// @notice Funds exist but are frozen. + Frozen, + /// @notice Operation is not supported by the token. + Unsupported, + /// @notice Account cannot be created for a held balance. + CannotCreateHold, + /// @notice Withdrawal would cause unwanted loss of account. + NotExpendable, + /// @notice Account cannot receive the tokens. + Blocked +} + +/// @notice The number of transactional layers has been reached, or we are not in a transactional layer. +error Transactional(TransactionalError); +/// @title Errors related to transactional storage layers. +enum TransactionalError { + /// @notice Too many transactional layers have been spawned. + LimitReached, + /// @notice A transactional layer was expected, but does not exist. + NoLayer +} + +/// @notice An error with tries. +error Trie(TrieError); +/// @title A runtime friendly error type for tries. +enum TrieError { + /// @notice Attempted to create a trie with a state root not in the DB. + InvalidStateRoot, + /// @notice Trie item not found in the database, + IncompleteDatabase, + /// @notice A value was found in the trie with a nibble key that was not byte-aligned. + ValueAtIncompleteKey, + /// @notice Corrupt Trie item. + DecoderError, + /// @notice Hash is not value. + InvalidHash, + /// @notice The statement being verified contains multiple key-value pairs with the same key. + DuplicateKey, + /// @notice The proof contains at least one extraneous node. + ExtraneousNode, + /// @notice The proof contains at least one extraneous value which should have been omitted from the + /// proof. + ExtraneousValue, + /// @notice The proof contains at least one extraneous hash reference the should have been omitted. + ExtraneousHashReference, + /// @notice The proof contains an invalid child reference that exceeds the hash length. + InvalidChildReference, + /// @notice The proof indicates that an expected value was not found in the trie. + ValueMismatch, + /// @notice The proof is missing trie nodes required to verify. + IncompleteProof, + /// @notice The root hash computed from the proof is incorrect. + RootMismatch, + /// @notice One of the proof nodes could not be decoded. + DecodeError, +} diff --git a/pallets/api-vnext/src/fungibles/precompiles/v0.rs b/pallets/api-vnext/src/fungibles/precompiles/v0.rs new file mode 100644 index 000000000..6a827be60 --- /dev/null +++ b/pallets/api-vnext/src/fungibles/precompiles/v0.rs @@ -0,0 +1,1402 @@ +use frame_support::pallet_prelude as frame; +pub(crate) use IFungibles::*; + +use super::*; + +sol!( + #![sol(extra_derives(Debug, PartialEq))] + "src/fungibles/precompiles/interfaces/v0/IFungibles.sol" +); + +/// The fungibles precompile offers a streamlined interface for interacting with fungible +/// tokens. The goal is to provide a simplified, consistent API that adheres to standards in +/// the smart contract space. +pub struct Fungibles(PhantomData<(T, I)>); +impl< + const FIXED: u16, + T: frame_system::Config + + pallet_assets::Config< + I, + AssetId: Default + From + Into, + Balance: TryConvert, + > + pallet_balances::Config + + pallet_revive::Config + + Config, + I: 'static, + > Precompile for Fungibles +where + U256: TryConvert<>::Balance, Error = frame::DispatchError>, +{ + type Interface = IFungiblesCalls; + type T = T; + + const HAS_CONTRACT_INFO: bool = false; + const MATCHER: AddressMatcher = + Fixed(NonZero::new(FIXED).expect("expected non-zero precompile address")); + + fn call( + _address: &[u8; 20], + input: &Self::Interface, + env: &mut impl Ext, + ) -> Result, Error> { + match input { + IFungiblesCalls::transfer(transferCall { token, to, value }) => { + env.charge(>::WeightInfo::transfer())?; + ensure!(!to.is_zero(), ZeroRecipientAddress); + ensure!(!value.is_zero(), ZeroValue); + + let from = (|| { + let origin = Origin::try_from(env.caller())?; + let from = origin.address(); + + transfer::( + origin.into(), + (*token).into(), + env.to_account_id(&(*to.0).into()), + (*value).try_convert()?, + )?; + + Ok(from) + })() + .map_err(Self::map_err)?; + + deposit_event(env, Transfer { token: *token, from, to: *to, value: *value })?; + Ok(transferCall::abi_encode_returns(&transferReturn {})) + }, + IFungiblesCalls::transferFrom(transferFromCall { token, from, to, value }) => { + env.charge(>::WeightInfo::transfer_from())?; + ensure!(!from.is_zero(), ZeroSenderAddress); + ensure!(!to.is_zero(), ZeroRecipientAddress); + ensure!(to != from, InvalidRecipient(*to)); + ensure!(!value.is_zero(), ZeroValue); + + (|| { + transfer_from::( + to_runtime_origin(env.caller()), + (*token).into(), + env.to_account_id(&(*from.0).into()), + env.to_account_id(&(*to.0).into()), + (*value).try_convert()?, + ) + })() + .map_err(Self::map_err)?; + + let event = Transfer { token: *token, from: *from, to: *to, value: *value }; + deposit_event(env, event)?; + Ok(transferFromCall::abi_encode_returns(&transferFromReturn {})) + }, + IFungiblesCalls::approve(approveCall { token, spender, value }) => { + let charged = env.charge(>::WeightInfo::approve(1, 1))?; + ensure!(!spender.is_zero(), ZeroRecipientAddress); + + let owner = (|| { + let origin = Origin::try_from(env.caller())?; + let owner = origin.address(); + + match approve::( + origin.into(), + (*token).into(), + env.to_account_id(&(*spender.0).into()), + (*value).try_convert()?, + ) { + Ok(result) => { + // Adjust weight + if let Some(actual_weight) = result.actual_weight { + // TODO: replace with `env.adjust_gas(charged, result.weight);` once + // #8693 lands + env.gas_meter_mut() + .adjust_gas(charged, RuntimeCosts::Precompile(actual_weight)); + } + }, + Err(e) => { + // Adjust weight + if let Some(actual_weight) = e.post_info.actual_weight { + // TODO: replace with `env.adjust_gas(charged, result.weight);` once + // #8693 lands + env.gas_meter_mut() + .adjust_gas(charged, RuntimeCosts::Precompile(actual_weight)); + } + return Err(e.error); + }, + }; + + Ok(owner) + })() + .map_err(Self::map_err)?; + + let event = Approval { token: *token, owner, spender: *spender, value: *value }; + deposit_event(env, event)?; + Ok(approveCall::abi_encode_returns(&approveReturn {})) + }, + IFungiblesCalls::increaseAllowance(increaseAllowanceCall { token, spender, value }) => { + let charged = env.charge(>::WeightInfo::approve(1, 0))?; + ensure!(!spender.is_zero(), ZeroRecipientAddress); + ensure!(!value.is_zero(), ZeroValue); + + let (owner, value) = (|| { + let origin = Origin::try_from(env.caller())?; + let owner = origin.address(); + + let value = increase_allowance::( + origin.into(), + (*token).into(), + env.to_account_id(&(*spender.0).into()), + (*value).try_convert()?, + ) + .map_err(|e| { + // Adjust weight + if let Some(actual_weight) = e.post_info.actual_weight { + // TODO: replace with `env.adjust_gas(charged, result.weight);` once + // #8693 lands + env.gas_meter_mut() + .adjust_gas(charged, RuntimeCosts::Precompile(actual_weight)); + } + e.error + })? + .try_convert()?; + + Ok((owner, value)) + })() + .map_err(Self::map_err)?; + + let spender = *spender; + deposit_event(env, Approval { token: *token, owner, spender, value })?; + Ok(increaseAllowanceCall::abi_encode_returns(&value)) + }, + IFungiblesCalls::decreaseAllowance(decreaseAllowanceCall { token, spender, value }) => { + let charged = env.charge(>::WeightInfo::approve(1, 1))?; + ensure!(!spender.is_zero(), ZeroRecipientAddress); + ensure!(!value.is_zero(), ZeroValue); + + let (owner, value) = (|| { + let origin = Origin::try_from(env.caller())?; + let owner = origin.address(); + + let value = match decrease_allowance::( + origin.into(), + (*token).into(), + env.to_account_id(&(*spender.0).into()), + (*value).try_convert()?, + ) { + Ok((value, weight)) => { + // Adjust weight + if let Some(actual_weight) = weight { + // TODO: replace with `env.adjust_gas(charged, result.weight);` once + // #8693 lands + env.gas_meter_mut() + .adjust_gas(charged, RuntimeCosts::Precompile(actual_weight)); + } + value.try_convert()? + }, + Err(e) => { + // Adjust weight + if let Some(actual_weight) = e.post_info.actual_weight { + // TODO: replace with `env.adjust_gas(charged, result.weight);` once + // #8693 lands + env.gas_meter_mut() + .adjust_gas(charged, RuntimeCosts::Precompile(actual_weight)); + } + return Err(e.error) + }, + }; + + Ok((owner, value)) + })() + .map_err(Self::map_err)?; + + let spender = *spender; + deposit_event(env, Approval { token: *token, owner, spender, value })?; + Ok(decreaseAllowanceCall::abi_encode_returns(&value)) + }, + IFungiblesCalls::create(createCall { admin, minBalance }) => { + env.charge(>::WeightInfo::create())?; + ensure!(!admin.is_zero(), ZeroAdminAddress); + ensure!(!minBalance.is_zero(), MinBalanceZero); + + let (creator, id) = (|| { + let origin = Origin::try_from(env.caller())?; + let creator = origin.address(); + + let id = create::( + origin.into(), + env.to_account_id(&(*admin.0).into()), + (*minBalance).try_convert()?, + )? + .into(); + + Ok((creator, id)) + })() + .map_err(Self::map_err)?; + + deposit_event(env, Created { id, creator, admin: *admin })?; + Ok(createCall::abi_encode_returns(&id)) + }, + IFungiblesCalls::startDestroy(startDestroyCall { token }) => { + env.charge(>::WeightInfo::start_destroy())?; + + start_destroy::(to_runtime_origin(env.caller()), (*token).into()) + .map_err(Self::map_err)?; + + Ok(startDestroyCall::abi_encode_returns(&startDestroyReturn {})) + }, + IFungiblesCalls::setMetadata(setMetadataCall { token, name, symbol, decimals }) => { + env.charge(>::WeightInfo::set_metadata())?; + + set_metadata::( + to_runtime_origin(env.caller()), + (*token).into(), + name.as_bytes().to_vec(), + symbol.as_bytes().to_vec(), + *decimals, + ) + .map_err(Self::map_err)?; + + Ok(setMetadataCall::abi_encode_returns(&setMetadataReturn {})) + }, + IFungiblesCalls::clearMetadata(clearMetadataCall { token }) => { + env.charge(>::WeightInfo::clear_metadata())?; + + clear_metadata::(to_runtime_origin(env.caller()), (*token).into()) + .map_err(Self::map_err)?; + + Ok(clearMetadataCall::abi_encode_returns(&clearMetadataReturn {})) + }, + IFungiblesCalls::mint(mintCall { token, account, value }) => { + env.charge(>::WeightInfo::mint())?; + ensure!(!account.is_zero(), ZeroRecipientAddress); + ensure!(!value.is_zero(), ZeroValue); + + (|| { + mint::( + to_runtime_origin(env.caller()), + (*token).into(), + env.to_account_id(&(*account.0).into()), + (*value).try_convert()?, + ) + })() + .map_err(Self::map_err)?; + + let from = Address::default(); + let to = *account; + deposit_event(env, Transfer { token: *token, from, to, value: *value })?; + Ok(mintCall::abi_encode_returns(&mintReturn {})) + }, + IFungiblesCalls::burn(burnCall { token, account, value }) => { + let charged = env.charge(>::WeightInfo::burn())?; + ensure!(!account.is_zero(), ZeroSenderAddress); + ensure!(!value.is_zero(), ZeroValue); + + (|| { + burn::( + to_runtime_origin(env.caller()), + (*token).into(), + env.to_account_id(&(*account.0).into()), + (*value).try_convert()?, + ) + .map_err(|e| { + // Adjust weight + if let Some(actual_weight) = e.post_info.actual_weight { + // TODO: replace with `env.adjust_gas(charged, result.weight);` once + // #8693 lands + env.gas_meter_mut() + .adjust_gas(charged, RuntimeCosts::Precompile(actual_weight)); + } + e.error + }) + })() + .map_err(Self::map_err)?; + + let to = Address::default(); + let event = Transfer { token: *token, from: *account, to, value: *value }; + deposit_event(env, event)?; + Ok(burnCall::abi_encode_returns(&burnReturn {})) + }, + IFungiblesCalls::totalSupply(totalSupplyCall { token }) => { + env.charge(>::WeightInfo::total_supply())?; + + let total_supply = + total_supply::((*token).into()).try_convert().map_err(Self::map_err)?; + + Ok(totalSupplyCall::abi_encode_returns(&total_supply)) + }, + IFungiblesCalls::balanceOf(balanceOfCall { token, owner }) => { + env.charge(>::WeightInfo::balance_of())?; + + let account = env.to_account_id(&(*owner.0).into()); + let balance = balance::((*token).into(), &account) + .try_convert() + .map_err(Self::map_err)?; + + Ok(balanceOfCall::abi_encode_returns(&balance)) + }, + IFungiblesCalls::allowance(allowanceCall { token, owner, spender }) => { + env.charge(>::WeightInfo::allowance())?; + + let owner = env.to_account_id(&(*owner.0).into()); + let spender = env.to_account_id(&(*spender.0).into()); + let allowance = allowance::((*token).into(), &owner, &spender); + let remaining = allowance.try_convert().map_err(Self::map_err)?; + + Ok(allowanceCall::abi_encode_returns(&remaining)) + }, + IFungiblesCalls::name(nameCall { token }) => { + env.charge(>::WeightInfo::metadata_name())?; + + let result = name::((*token).into()); + let result = String::from_utf8_lossy(result.as_slice()).into(); + + Ok(nameCall::abi_encode_returns(&result)) + }, + IFungiblesCalls::symbol(symbolCall { token }) => { + env.charge(>::WeightInfo::metadata_symbol())?; + + let result = symbol::((*token).into()); + let result = String::from_utf8_lossy(result.as_slice()).into(); + + Ok(nameCall::abi_encode_returns(&result)) + }, + IFungiblesCalls::decimals(decimalsCall { token }) => { + env.charge(>::WeightInfo::metadata_decimals())?; + + let result = decimals::((*token).into()); + + Ok(decimalsCall::abi_encode_returns(&result)) + }, + IFungiblesCalls::exists(existsCall { token }) => { + env.charge(>::WeightInfo::exists())?; + + let result = exists::((*token).into()); + + Ok(existsCall::abi_encode_returns(&result)) + }, + } + } +} + +impl + pallet_balances::Config, I: 'static> + Fungibles +{ + /// The address of the precompile. + pub const fn address() -> [u8; 20] { + fixed_address(FIXED) + } + + // Maps select, domain-specific dispatch errors to fungibles errors. All others are mapped to + // more generic runtime errors. + fn map_err(e: frame::DispatchError) -> Error { + use frame::DispatchError::*; + match e { + Arithmetic(error) => self::Arithmetic::from(error).into(), + ConsumerRemaining => IFungibles::InsufficientBalance.into(), + Module(ModuleError { index, error, .. }) => { + { + let index = Some(index as usize); + if index == T::PalletInfo::index::>() { + use pallet_balances::{Error, Error::*}; + + match Error::::decode(&mut error.as_slice()) { + Ok(InsufficientBalance) => + return IFungibles::InsufficientBalance.into(), + _ => {}, + } + } else if index == T::PalletInfo::index::>() { + use pallet_assets::{Error, Error::*}; + + match Error::::decode(&mut error.as_slice()) { + Ok(error) => match error { + AssetNotLive | IncorrectStatus => return IFungibles::NotLive.into(), + BalanceLow => return IFungibles::InsufficientBalance.into(), + BadMetadata => return IFungibles::BadMetadata.into(), + NoPermission => return IFungibles::NoPermission.into(), + Unapproved => return IFungibles::Unapproved.into(), + Unknown => return IFungibles::Unknown.into(), + _ => {}, + }, + _ => {}, + } + } + } + + self::Module { index, error: error.into() }.into() + }, + Token(error) => match error { + frame_support::sp_runtime::TokenError::UnknownAsset => IFungibles::Unknown.into(), + _ => self::Token::from(error).into(), + }, + Transactional(error) => self::Transactional::from(error).into(), + Trie(error) => self::Trie::from(error).into(), + other => self::Dispatch::from(other).into(), + } + } +} + +// Encoding of custom errors via `Error(String)`. +impl_from_sol_error! { + // Fungibles + IFungibles::BadMetadata, + IFungibles::InsufficientBalance, + IFungibles::NoPermission, + IFungibles::NotLive, + IFungibles::Unapproved, + IFungibles::Unknown, + // Generic + Arithmetic, + Dispatch, + Module, + Token, + Transactional, + Trie +} + +impl From for Arithmetic { + fn from(error: frame_support::sp_runtime::ArithmeticError) -> Self { + use frame_support::sp_runtime::ArithmeticError::*; + Self(match error { + Underflow => ArithmeticError::Underflow, + Overflow => ArithmeticError::Overflow, + DivisionByZero => ArithmeticError::DivisionByZero, + }) + } +} + +impl From for Dispatch { + fn from(error: frame::DispatchError) -> Self { + use frame::DispatchError::*; + Self(match error { + Other(_) => DispatchError::Other, + CannotLookup => DispatchError::CannotLookup, + BadOrigin => DispatchError::BadOrigin, + Module(_) => DispatchError::Module, + ConsumerRemaining => DispatchError::ConsumerRemaining, + NoProviders => DispatchError::NoProviders, + TooManyConsumers => DispatchError::TooManyConsumers, + Token(_) => DispatchError::Token, + Arithmetic(_) => DispatchError::Arithmetic, + Transactional(_) => DispatchError::Transactional, + Exhausted => DispatchError::Exhausted, + Corruption => DispatchError::Corruption, + Unavailable => DispatchError::Unavailable, + RootNotAllowed => DispatchError::RootNotAllowed, + Trie(_) => DispatchError::Trie, + }) + } +} + +impl From for Module { + fn from(error: frame_support::sp_runtime::ModuleError) -> Self { + Self { index: error.index, error: error.error.into() } + } +} + +impl From for Token { + fn from(error: frame_support::sp_runtime::TokenError) -> Self { + use frame_support::sp_runtime::TokenError::*; + Self(match error { + FundsUnavailable => TokenError::FundsUnavailable, + OnlyProvider => TokenError::OnlyProvider, + BelowMinimum => TokenError::BelowMinimum, + CannotCreate => TokenError::CannotCreate, + UnknownAsset => TokenError::Unknown, + Frozen => TokenError::Frozen, + Unsupported => TokenError::Unsupported, + CannotCreateHold => TokenError::CannotCreateHold, + NotExpendable => TokenError::NotExpendable, + Blocked => TokenError::Blocked, + }) + } +} + +impl From for Transactional { + fn from(error: frame_support::sp_runtime::TransactionalError) -> Self { + use frame_support::sp_runtime::TransactionalError::*; + Self(match error { + LimitReached => TransactionalError::LimitReached, + NoLayer => TransactionalError::NoLayer, + }) + } +} + +impl From for Trie { + fn from(error: frame_support::traits::TrieError) -> Self { + use frame_support::traits::TrieError::*; + Self(match error { + InvalidStateRoot => TrieError::InvalidStateRoot, + IncompleteDatabase => TrieError::IncompleteDatabase, + ValueAtIncompleteKey => TrieError::ValueAtIncompleteKey, + DecoderError => TrieError::DecoderError, + InvalidHash => TrieError::InvalidHash, + DuplicateKey => TrieError::DuplicateKey, + ExtraneousNode => TrieError::ExtraneousNode, + ExtraneousValue => TrieError::ExtraneousValue, + ExtraneousHashReference => TrieError::ExtraneousHashReference, + InvalidChildReference => TrieError::InvalidChildReference, + ValueMismatch => TrieError::ValueMismatch, + IncompleteProof => TrieError::IncompleteProof, + RootMismatch => TrieError::RootMismatch, + DecodeError => TrieError::DecodeError, + }) + } +} + +#[cfg(test)] +mod tests { + use frame_support::{ + assert_ok, sp_runtime::traits::AccountIdLookup, traits::fungibles::Inspect, + weights::Weight, BoundedVec, + }; + use mock::{Assets, ExtBuilder, *}; + use pallet_assets::{AssetDetails, AssetMetadata, AssetStatus}; + use pallet_revive::{ + precompiles::alloy::sol_types::{SolInterface, SolType}, + test_utils::{ALICE, BOB, CHARLIE}, + }; + + use super::{ + IFungibles::IFungiblesCalls::{clearMetadata, setMetadata, startDestroy}, + *, + }; + + const ADDRESS: [u8; 20] = fixed_address(FUNGIBLES); + + type AccountId = ::AccountId; + type Asset = pallet_assets::Asset; + type Metadata = pallet_assets::Metadata; + + #[test] + fn transfer_reverts_with_zero_recipient_address() { + let token = 1; + let origin = ALICE; + ExtBuilder::new().build().execute_with(|| { + let call = transferCall { token, to: Address::default(), value: U256::ZERO }; + let transfer = IFungiblesCalls::transfer(call); + assert_revert!(call_precompile::<()>(&origin, &transfer), ZeroRecipientAddress); + }); + } + + #[test] + fn transfer_reverts_with_zero_value() { + let token = 1; + let origin = ALICE; + let to = [255; 20].into(); + ExtBuilder::new().build().execute_with(|| { + let call = transferCall { token, to, value: U256::ZERO }; + let transfer = IFungiblesCalls::transfer(call); + assert_revert!(call_precompile::<()>(&origin, &transfer), ZeroValue); + }); + } + + #[test] + fn transfer_reverts_with_unknown() { + let token = 1; + let origin = ALICE; + let to = [255; 20].into(); + ExtBuilder::new() + .with_assets(vec![(0, CHARLIE, true, 1)]) + .build() + .execute_with(|| { + let call = transferCall { token, to, value: U256::from(1) }; + let transfer = IFungiblesCalls::transfer(call); + assert_revert!(call_precompile::<()>(&origin, &transfer), Unknown); + }); + } + + #[test] + fn transfer_works() { + let token = 1; + let origin = ALICE; + let endowment = 10_000_000; + let to = BOB; + ExtBuilder::new() + .with_assets(vec![(token, CHARLIE, true, 1)]) + .with_asset_balances(vec![(token, origin.clone(), endowment)]) + .build() + .execute_with(|| { + assert_eq!(Assets::balance(token, &origin), endowment); + assert_eq!(Assets::balance(token, &to), 0); + + let value = endowment / 2; + assert_ok!(call_precompile::<()>( + &origin, + &IFungiblesCalls::transfer(transferCall { + token, + to: to_address(&to).0.into(), + value: U256::from(value) + }) + )); + + assert_eq!(Assets::balance(token, &origin), endowment - value); + assert_eq!(Assets::balance(token, &to), value); + + let from = to_address(&origin).0.into(); + let to = to_address(&to).0.into(); + let event = Transfer { token, from, to, value: U256::from(value) }; + assert_last_event(ADDRESS, event); + }); + } + + #[test] + fn transfer_from_reverts_with_zero_sender_address() { + let token = 1; + let origin = ALICE; + ExtBuilder::new().build().execute_with(|| { + let call = transferFromCall { + token, + from: Address::default(), + to: Address::default(), + value: U256::ZERO, + }; + let transfer_from = IFungiblesCalls::transferFrom(call); + assert_revert!(call_precompile::<()>(&origin, &transfer_from), ZeroSenderAddress); + }); + } + + #[test] + fn transfer_from_reverts_with_zero_recipient_address() { + let token = 1; + let origin = ALICE; + let from = [255; 20].into(); + ExtBuilder::new().build().execute_with(|| { + let call = transferFromCall { token, from, to: Address::default(), value: U256::ZERO }; + let transfer_from = IFungiblesCalls::transferFrom(call); + assert_revert!(call_precompile::<()>(&origin, &transfer_from), ZeroRecipientAddress); + }); + } + + #[test] + fn transfer_from_reverts_with_invalid_recipient() { + let token = 1; + let origin = ALICE; + let from = [255; 20].into(); + ExtBuilder::new().build().execute_with(|| { + let call = transferFromCall { token, from, to: from, value: U256::ZERO }; + let transfer_from = IFungiblesCalls::transferFrom(call); + assert_revert!(call_precompile::<()>(&origin, &transfer_from), InvalidRecipient(from)); + }); + } + + #[test] + fn transfer_from_reverts_with_zero_value() { + let token = 1; + let origin = ALICE; + let from = [255; 20].into(); + let to = [1; 20].into(); + ExtBuilder::new().build().execute_with(|| { + let call = transferFromCall { token, from, to, value: U256::ZERO }; + let transfer_from = IFungiblesCalls::transferFrom(call); + assert_revert!(call_precompile::<()>(&origin, &transfer_from), ZeroValue); + }); + } + + #[test] + fn transfer_from_works() { + let token = 1; + let origin = BOB; + let from = ALICE; + let endowment = 10_000_000; + let to = CHARLIE; + let value = endowment / 2; + ExtBuilder::new() + .with_balances(vec![(from.clone(), UNIT)]) + .with_assets(vec![(token, CHARLIE, true, 1)]) + .with_asset_balances(vec![(token, from.clone(), endowment)]) + .build() + .execute_with(|| { + assert_eq!(Assets::balance(token, &from), endowment); + assert_eq!(Assets::balance(token, &to), 0); + assert_ok!(approve::( + RuntimeOrigin::signed(from.clone()), + token, + origin.clone(), + value + )); + + assert_ok!(call_precompile::<()>( + &origin, + &IFungiblesCalls::transferFrom(transferFromCall { + token, + from: to_address(&from).0.into(), + to: to_address(&to).0.into(), + value: U256::from(value), + }) + )); + + assert_eq!(Assets::balance(token, &from), endowment - value); + assert_eq!(Assets::balance(token, &to), value); + let from = to_address(&from).0.into(); + let to = to_address(&to).0.into(); + let event = Transfer { token, from, to, value: U256::from(value) }; + assert_last_event(ADDRESS, event); + }); + } + + #[test] + fn approve_reverts_with_zero_recipient_address() { + let token = 1; + let origin = ALICE; + ExtBuilder::new().build().execute_with(|| { + let call = approveCall { token, spender: Address::default(), value: U256::ZERO }; + let approve = IFungiblesCalls::approve(call); + assert_revert!(call_precompile::<()>(&origin, &approve), ZeroRecipientAddress); + }); + } + + #[test] + fn approve_reverts_with_insufficient_balance() { + let token = 1; + let origin = ALICE; + let spender = BOB; + let value = 10_000_000; + ExtBuilder::new() + .with_assets(vec![(token, origin.clone(), false, 1)]) + .with_asset_balances(vec![(token, origin.clone(), value)]) + .build() + .execute_with(|| { + let call = approveCall { + token, + spender: to_address(&spender).0.into(), + value: U256::from(value), + }; + let approve = IFungiblesCalls::approve(call); + assert_revert!(call_precompile::<()>(&origin, &approve), InsufficientBalance); + }); + } + + #[test] + fn approve_works() { + let token = 1; + let origin = ALICE; + let spender = BOB; + let value = 10_000_000; + ExtBuilder::new() + .with_balances(vec![(origin.clone(), UNIT)]) + .with_assets(vec![(token, CHARLIE, false, 1)]) + .build() + .execute_with(|| { + assert_eq!(Assets::allowance(token, &origin, &spender), 0); + + assert_ok!(call_precompile::<()>( + &origin, + &IFungiblesCalls::approve(approveCall { + token, + spender: to_address(&spender).0.into(), + value: U256::from(value), + }) + )); + + assert_eq!(Assets::allowance(token, &origin, &spender), value); + let owner = to_address(&origin).0.into(); + let event = Approval { + token, + owner, + spender: to_address(&spender).0.into(), + value: U256::from(value), + }; + assert_last_event(ADDRESS, event); + + // Remove approval + assert_ok!(call_precompile::<()>( + &origin, + &IFungiblesCalls::approve(approveCall { + token, + spender: to_address(&spender).0.into(), + value: U256::ZERO + }) + )); + assert_eq!(Assets::allowance(token, &origin, &spender), 0); + }); + } + + #[test] + fn increase_allowance_reverts_with_zero_recipient_address() { + let token = 1; + let origin = ALICE; + ExtBuilder::new().build().execute_with(|| { + let call = + increaseAllowanceCall { token, spender: Address::default(), value: U256::ZERO }; + let increase_allowance = IFungiblesCalls::increaseAllowance(call); + assert_revert!( + call_precompile::<()>(&origin, &increase_allowance), + ZeroRecipientAddress + ); + }); + } + + #[test] + fn increase_allowance_reverts_with_zero_value() { + let token = 1; + let origin = ALICE; + let spender = [255; 20].into(); + ExtBuilder::new().build().execute_with(|| { + let call = increaseAllowanceCall { token, spender, value: U256::ZERO }; + let increase_allowance = IFungiblesCalls::increaseAllowance(call); + assert_revert!(call_precompile::<()>(&origin, &increase_allowance), ZeroValue); + }); + } + + #[test] + fn increase_allowance_works() { + let token = 1; + let origin = ALICE; + let spender = BOB; + let value = 10_000_000; + ExtBuilder::new() + .with_balances(vec![(origin.clone(), UNIT)]) + .with_assets(vec![(token, CHARLIE, false, 1)]) + .build() + .execute_with(|| { + assert_ok!(Assets::approve_transfer( + RuntimeOrigin::signed(origin.clone()), + token.into(), + AccountIdLookup::unlookup(spender.clone()), + value, + )); + assert_eq!(Assets::allowance(token, &origin, &spender), value); + + // Double the allowance. + let allowance = call_precompile::( + &origin, + &IFungiblesCalls::increaseAllowance(increaseAllowanceCall { + token, + spender: to_address(&spender).0.into(), + value: U256::from(value), + }), + ) + .unwrap(); + + assert_eq!(allowance, U256::from(value * 2)); + assert_eq!(Assets::allowance(token, &origin, &spender), value * 2); + let owner = to_address(&origin).0.into(); + let spender = to_address(&spender).0.into(); + let event = Approval { token, owner, spender, value: U256::from(allowance) }; + assert_last_event(ADDRESS, event); + }); + } + + #[test] + fn decrease_allowance_reverts_with_zero_recipient_address() { + let token = 1; + let origin = ALICE; + ExtBuilder::new().build().execute_with(|| { + let call = + decreaseAllowanceCall { token, spender: Address::default(), value: U256::ZERO }; + let decrease_allowance = IFungiblesCalls::decreaseAllowance(call); + assert_revert!( + call_precompile::<()>(&origin, &decrease_allowance), + ZeroRecipientAddress + ); + }); + } + + #[test] + fn decrease_allowance_reverts_with_zero_value() { + let token = 1; + let origin = ALICE; + let spender = [255; 20].into(); + ExtBuilder::new().build().execute_with(|| { + let call = decreaseAllowanceCall { token, spender, value: U256::ZERO }; + let decrease_allowance = IFungiblesCalls::decreaseAllowance(call); + assert_revert!(call_precompile::<()>(&origin, &decrease_allowance), ZeroValue); + }); + } + + #[test] + fn decrease_allowance_works() { + let token = 1; + let origin = ALICE; + let spender = BOB; + let value = 10_000_000; + ExtBuilder::new() + .with_balances(vec![(origin.clone(), UNIT)]) + .with_assets(vec![(token, CHARLIE, false, 1)]) + .build() + .execute_with(|| { + assert_ok!(Assets::approve_transfer( + RuntimeOrigin::signed(origin.clone()), + token.into(), + AccountIdLookup::unlookup(spender.clone()), + value, + )); + assert_eq!(Assets::allowance(token, &origin, &spender), value); + + // Halve the allowance. + let allowance = call_precompile::( + &origin, + &IFungiblesCalls::decreaseAllowance(decreaseAllowanceCall { + token, + spender: to_address(&spender).0.into(), + value: U256::from(value / 2), + }), + ) + .unwrap(); + + assert_eq!(allowance, U256::from(value / 2)); + assert_eq!(Assets::allowance(token, &origin, &spender), value / 2); + let owner = to_address(&origin).0.into(); + let spender = to_address(&spender).0.into(); + let event = Approval { token, owner, spender, value: U256::from(allowance) }; + assert_last_event(ADDRESS, event); + }); + } + + #[test] + fn create_reverts_with_zero_admin_address() { + let origin = ALICE; + ExtBuilder::new().build().execute_with(|| { + let call = createCall { admin: Address::default(), minBalance: U256::ZERO }; + let create = IFungiblesCalls::create(call); + assert_revert!(call_precompile::<()>(&origin, &create), ZeroAdminAddress); + }); + } + + #[test] + fn create_reverts_with_zero_min_balance() { + let origin = ALICE; + let admin = [255; 20].into(); + ExtBuilder::new().build().execute_with(|| { + let call = createCall { admin, minBalance: U256::ZERO }; + let create = IFungiblesCalls::create(call); + assert_revert!(call_precompile::<()>(&origin, &create), MinBalanceZero); + }); + } + + #[test] + fn create_works() { + let token = 0; + let origin = ALICE; + let admin = BOB; + let min_balance = 1; + ExtBuilder::new() + .with_balances(vec![(origin.clone(), UNIT)]) + .build() + .execute_with(|| { + assert!(!Assets::asset_exists(token)); + + assert_eq!( + call_precompile::( + &origin, + &IFungiblesCalls::create(createCall { + admin: to_address(&admin).0.into(), + minBalance: U256::from(min_balance), + }), + ) + .unwrap(), + token + ); + + assert!(Assets::asset_exists(token)); + assert_eq!( + Asset::get(token).unwrap(), + AssetDetails { + owner: origin.clone(), + issuer: admin.clone(), + admin: admin.clone(), + freezer: admin.clone(), + supply: 0, + deposit: min_balance, + min_balance, + is_sufficient: false, + accounts: 0, + sufficients: 0, + approvals: 0, + status: AssetStatus::Live, + } + ); + + let creator = to_address(&origin).0.into(); + let admin = to_address(&admin).0.into(); + let event = Created { id: token, creator, admin }; + assert_last_event(ADDRESS, event); + }); + } + + #[test] + fn start_destroy_works() { + let token = 1; + let origin = ALICE; + ExtBuilder::new() + .with_assets(vec![(token, origin.clone(), false, 1)]) + .build() + .execute_with(|| { + assert_eq!(Asset::get(token).unwrap().status, AssetStatus::Live); + + assert_ok!(call_precompile::<()>( + &origin, + &startDestroy(startDestroyCall { token }) + )); + + assert_eq!(Asset::get(token).unwrap().status, AssetStatus::Destroying); + }); + } + + #[test] + fn set_metadata_works() { + let token = 1; + let origin = ALICE; + let name = "name".to_string(); + let symbol = "symbol".to_string(); + let decimals = u8::MAX; + ExtBuilder::new() + .with_balances(vec![(origin.clone(), UNIT)]) + .with_assets(vec![(token, origin.clone(), false, 1)]) + .build() + .execute_with(|| { + assert_eq!(Metadata::get(token), AssetMetadata::default()); + + assert_ok!(call_precompile::<()>( + &origin, + &setMetadata(setMetadataCall { + token, + name: name.clone(), + symbol: symbol.clone(), + decimals + }) + )); + + assert_eq!( + Metadata::get(token), + AssetMetadata { + deposit: 11, + name: BoundedVec::truncate_from(name.into_bytes()), + symbol: BoundedVec::truncate_from(symbol.into_bytes()), + decimals, + is_frozen: false, + } + ); + }); + } + + #[test] + fn clear_metadata_works() { + let token = 1; + let origin = ALICE; + let name = b"name".to_vec(); + let symbol = b"symbol".to_vec(); + let decimals = u8::MAX; + ExtBuilder::new() + .with_assets(vec![(token, origin.clone(), false, 1)]) + .with_asset_metadata(vec![(token, name.clone(), symbol.clone(), decimals)]) + .build() + .execute_with(|| { + assert_eq!( + Metadata::get(token), + AssetMetadata { + deposit: 0, + name: BoundedVec::truncate_from(name), + symbol: BoundedVec::truncate_from(symbol), + decimals, + is_frozen: false, + } + ); + + assert_ok!(call_precompile::<()>( + &origin, + &clearMetadata(clearMetadataCall { token }) + )); + + assert_eq!(Metadata::get(token), AssetMetadata::default()); + }); + } + + #[test] + fn mint_reverts_with_zero_sender_address() { + let token = 1; + let origin = ALICE; + ExtBuilder::new().build().execute_with(|| { + let call = mintCall { token, account: Address::default(), value: U256::ZERO }; + let mint = IFungiblesCalls::mint(call); + assert_revert!(call_precompile::<()>(&origin, &mint), ZeroRecipientAddress); + }); + } + + #[test] + fn mint_reverts_with_zero_value() { + let token = 1; + let origin = ALICE; + let account = [255; 20].into(); + ExtBuilder::new().build().execute_with(|| { + let call = mintCall { token, account, value: U256::ZERO }; + let mint = IFungiblesCalls::mint(call); + assert_revert!(call_precompile::<()>(&origin, &mint), ZeroValue); + }); + } + + #[test] + fn mint_reverts_with_unknown() { + let token = 1; + let origin = ALICE; + let account = [255; 20].into(); + ExtBuilder::new().build().execute_with(|| { + let call = mintCall { token, account, value: U256::from(1) }; + let mint = IFungiblesCalls::mint(call); + assert_revert!(call_precompile::<()>(&origin, &mint), Unknown); + }); + } + + #[test] + fn mint_works() { + let token = 1; + let origin = ALICE; + let value = 10_000_000; + ExtBuilder::new() + .with_assets(vec![(token, origin.clone(), false, 1)]) + .build() + .execute_with(|| { + assert_eq!(Assets::balance(token, &origin), 0); + + assert_ok!(call_precompile::<()>( + &origin, + &IFungiblesCalls::mint(mintCall { + token, + account: to_address(&origin).0.into(), + value: U256::from(value) + }) + )); + + assert_eq!(Assets::balance(token, &origin), value); + let from = Address::default(); + let to = to_address(&origin).0.into(); + let event = Transfer { token, from, to, value: U256::from(value) }; + assert_last_event(ADDRESS, event); + }); + } + + #[test] + fn burn_reverts_with_zero_sender_address() { + let token = 1; + let origin = ALICE; + ExtBuilder::new().build().execute_with(|| { + let call = burnCall { token, account: Address::default(), value: U256::ZERO }; + let burn = IFungiblesCalls::burn(call); + assert_revert!(call_precompile::<()>(&origin, &burn), ZeroSenderAddress); + }); + } + + #[test] + fn burn_reverts_with_zero_value() { + let token = 1; + let origin = ALICE; + let account = [255; 20].into(); + ExtBuilder::new().build().execute_with(|| { + let call = burnCall { token, account, value: U256::ZERO }; + let burn = IFungiblesCalls::burn(call); + assert_revert!(call_precompile::<()>(&origin, &burn), ZeroValue); + }); + } + + #[test] + fn burn_reverts_with_insufficient_balance() { + let token = 1; + let origin = ALICE; + let account = [255; 20].into(); + let endowment = 10_000_000; + ExtBuilder::new().build().execute_with(|| { + let call = burnCall { token, account, value: U256::from(endowment) }; + let burn = IFungiblesCalls::burn(call); + assert_revert!(call_precompile::<()>(&origin, &burn), InsufficientBalance); + }); + } + + #[test] + fn burn_works() { + let token = 1; + let origin = ALICE; + let endowment = 10_000_000; + ExtBuilder::new() + .with_assets(vec![(token, origin.clone(), false, 1)]) + .with_asset_balances(vec![(token, origin.clone(), endowment)]) + .build() + .execute_with(|| { + assert_eq!(Assets::balance(token, &origin), endowment); + + assert_ok!(call_precompile::<()>( + &origin, + &IFungiblesCalls::burn(burnCall { + token, + account: to_address(&origin).0.into(), + value: U256::from(endowment), + }), + )); + + assert_eq!(Assets::balance(token, &origin), 0); + let from = to_address(&origin).0.into(); + let to = Address::default(); + let event = Transfer { token, from, to, value: U256::from(endowment) }; + assert_last_event(ADDRESS, event); + }); + } + + #[test] + fn total_supply_works() { + let token = 1; + let total_supply = 10_000_000; + ExtBuilder::new() + .with_assets(vec![(token, CHARLIE, false, 1)]) + .with_asset_balances(vec![(token, ALICE, total_supply)]) + .build() + .execute_with(|| { + assert_eq!( + call_precompile::( + &BOB, + &IFungiblesCalls::totalSupply(totalSupplyCall { token }) + ) + .unwrap(), + U256::from(total_supply) + ); + }); + } + + #[test] + fn balance_of_works() { + let token = 1; + let owner = ALICE; + let endowment = 10_000_000; + ExtBuilder::new() + .with_assets(vec![(token, CHARLIE, false, 1)]) + .with_asset_balances(vec![(token, owner.clone(), endowment)]) + .build() + .execute_with(|| { + assert_eq!( + call_precompile::( + &BOB, + &IFungiblesCalls::balanceOf(balanceOfCall { + token, + owner: to_address(&owner).0.into() + }) + ) + .unwrap(), + U256::from(endowment) + ); + + assert_eq!(Assets::balance(token, owner), endowment); + }); + } + + #[test] + fn allowance_works() { + let token = 1; + let owner = ALICE; + let spender = BOB; + let value = 10_000_000; + ExtBuilder::new() + .with_balances(vec![(owner.clone(), UNIT)]) + .with_assets(vec![(token, CHARLIE, false, 1)]) + .build() + .execute_with(|| { + assert_ok!(approve::( + RuntimeOrigin::signed(owner.clone()), + token, + spender.clone(), + value + )); + + assert_eq!( + call_precompile::( + &BOB, + &IFungiblesCalls::allowance(allowanceCall { + token, + owner: to_address(&owner).0.into(), + spender: to_address(&spender).0.into(), + }) + ) + .unwrap(), + U256::from(value) + ); + }); + } + + #[test] + fn name_works() { + let token = 1; + let name = "name".to_string(); + ExtBuilder::new() + .with_assets(vec![(token, CHARLIE, false, 1)]) + .with_asset_metadata(vec![(token, name.as_bytes().into(), b"symbol".to_vec(), u8::MAX)]) + .build() + .execute_with(|| { + assert_eq!( + call_precompile::(&ALICE, &IFungiblesCalls::name(nameCall { token })) + .unwrap(), + name + ); + }); + } + + #[test] + fn symbol_works() { + let token = 1; + let symbol = "symbol".to_string(); + ExtBuilder::new() + .with_assets(vec![(token, CHARLIE, false, 1)]) + .with_asset_metadata(vec![(token, b"name".to_vec(), symbol.as_bytes().into(), u8::MAX)]) + .build() + .execute_with(|| { + assert_eq!( + call_precompile::( + &ALICE, + &IFungiblesCalls::symbol(symbolCall { token }) + ) + .unwrap(), + symbol + ); + }); + } + + #[test] + fn decimals_works() { + let token = 1; + let decimals = u8::MAX; + ExtBuilder::new() + .with_assets(vec![(token, CHARLIE, false, 1)]) + .with_asset_metadata(vec![(token, b"name".to_vec(), b"symbol".to_vec(), decimals)]) + .build() + .execute_with(|| { + assert_eq!( + call_precompile::( + &ALICE, + &IFungiblesCalls::decimals(decimalsCall { token }) + ) + .unwrap() as u8, + decimals + ); + }); + } + + #[test] + fn exists_works() { + let token = 1; + ExtBuilder::new() + .with_assets(vec![(token, CHARLIE, false, 1)]) + .build() + .execute_with(|| { + assert!(Assets::asset_exists(token)); + + assert!(call_precompile::( + &ALICE, + &IFungiblesCalls::exists(existsCall { token }) + ) + .unwrap()); + + let token = token + 1; + assert!(!Assets::asset_exists(token)); + assert!(!call_precompile::( + &ALICE, + &IFungiblesCalls::exists(existsCall { token }) + ) + .unwrap()); + }); + } + + fn call_precompile::RustType>>( + origin: &AccountId, + input: &IFungiblesCalls, + ) -> Result { + bare_call::( + RuntimeOrigin::signed(origin.clone()), + ADDRESS.into(), + 0, + Weight::MAX, + DepositLimit::Balance(u128::MAX), + input.abi_encode(), + ) + } +} diff --git a/pallets/api-vnext/src/fungibles/tests.rs b/pallets/api-vnext/src/fungibles/tests.rs new file mode 100644 index 000000000..24c7ca513 --- /dev/null +++ b/pallets/api-vnext/src/fungibles/tests.rs @@ -0,0 +1,541 @@ +use frame_support::{ + assert_noop, assert_ok, + sp_runtime::{DispatchError::BadOrigin, TokenError}, + traits::{ + fungibles::{approvals::Mutate, metadata::Inspect}, + Get, + }, +}; +use pallet_assets::WeightInfo as _; + +use super::{weights::WeightInfo as _, *}; +use crate::mock::{Assets, *}; + +type AssetsError = pallet_assets::Error; +type AssetsWeightInfo = ::WeightInfo; +type ED = ExistentialDeposit; +type WeightInfo = ::WeightInfo; + +#[test] +fn transfer_works() { + let token = 1; + let value = 100 * UNIT; + let from = ALICE; + let to = BOB; + ExtBuilder::new() + .with_balances(vec![(from.clone(), ED::get()), (to.clone(), ED::get())]) + .with_assets(vec![(token, from.clone(), false, 1)]) + .with_asset_balances(vec![(token, from.clone(), value + 1)]) + .build() + .execute_with(|| { + for origin in vec![root(), none()] { + assert_noop!(transfer::(origin, 0, to.clone(), value), BadOrigin); + } + // Check error works for `Assets::transfer_keep_alive()`. + assert_noop!( + transfer::(signed(from.clone()), TokenId::MAX, to.clone(), value), + AssetsError::Unknown + ); + let balance_before_transfer = Assets::balance(token, &to); + assert_ok!(transfer::(signed(from), token, to.clone(), value)); + let balance_after_transfer = Assets::balance(token, &to); + assert_eq!(balance_after_transfer, balance_before_transfer + value); + }); +} + +#[test] +fn transfer_from_works() { + let token = 1; + let value = 100 * UNIT; + let from = ALICE; + let to = BOB; + let spender = CHARLIE; + ExtBuilder::new() + .with_balances(vec![(from.clone(), UNIT), (to.clone(), ED::get())]) + .with_assets(vec![(token, from.clone(), false, 1)]) + .with_asset_balances(vec![(token, from.clone(), value * 2)]) + .build() + .execute_with(|| { + for origin in vec![root(), none()] { + assert_noop!( + transfer_from::(origin, token, from.clone(), to.clone(), value), + BadOrigin + ); + } + // Check error works for `Assets::transfer_approved()`. + assert_noop!( + transfer_from::( + signed(spender.clone()), + TokenId::MAX, + from.clone(), + to.clone(), + value + ), + AssetsError::Unknown + ); + // Approve `spender` to transfer up to `value`. + assert_ok!(Assets::approve(token, &from, &spender, value)); + // Successfully call transfer from. + let from_balance_before_transfer = Assets::balance(token, &from); + let to_balance_before_transfer = Assets::balance(token, &to); + assert_ok!(transfer_from::( + signed(spender), + token, + from.clone(), + to.clone(), + value + )); + let from_balance_after_transfer = Assets::balance(token, &from); + let to_balance_after_transfer = Assets::balance(token, &to); + // Check that `to` has received the `value` tokens from `from`. + assert_eq!(to_balance_after_transfer, to_balance_before_transfer + value); + assert_eq!(from_balance_after_transfer, from_balance_before_transfer - value); + }); +} + +mod approve { + use super::*; + use crate::fungibles::approve; + + #[test] + fn ensure_signed_works() { + let token = 1; + let value = 100 * UNIT; + let spender = BOB; + ExtBuilder::new() + .with_assets(vec![(token, ALICE, false, 1)]) + .build() + .execute_with(|| { + for origin in vec![root(), none()] { + assert_noop!( + approve::(origin, token, spender.clone(), value), + BadOrigin.with_weight(WeightInfo::approve(0, 0)) + ); + } + }); + } + + #[test] + fn ensure_error_cases_from_pallet_assets_work() { + let token = 1; + let value = 100 * UNIT; + let owner = ALICE; + let spender = BOB; + ExtBuilder::new() + .with_balances(vec![(owner.clone(), UNIT), (spender.clone(), ED::get())]) + .with_assets(vec![(token, owner.clone(), false, 1)]) + .build() + .execute_with(|| { + // Check error works for `Assets::approve_transfer()` in `Greater` match arm. + assert_noop!( + approve::( + signed(owner.clone()), + TokenId::MAX, + spender.clone(), + value + ), + AssetsError::Unknown.with_weight(WeightInfo::approve(1, 0)) + ); + assert_ok!(Assets::approve(token, &owner, &spender, value)); + // Check error works for `Assets::cancel_approval()` in `Less` match arm. + assert_ok!(Assets::freeze_asset(signed(owner.clone()), token.into())); + assert_noop!( + approve::(signed(owner.clone()), token, spender, value / 2), + AssetsError::AssetNotLive.with_weight(WeightInfo::approve(0, 1)) + ); + assert_ok!(Assets::thaw_asset(signed(owner), token.into())); + // No error test for `approve_transfer` in `Less` arm because it is not possible. + }); + } + + // Non-additive, sets new value. + #[test] + fn approve_works() { + let token = 1; + let value: Balance = 100 * UNIT; + let owner = ALICE; + let spender = BOB; + ExtBuilder::new() + .with_balances(vec![(owner.clone(), UNIT), (spender.clone(), ED::get())]) + .with_assets(vec![(token, owner.clone(), false, 1)]) + .build() + .execute_with(|| { + // Approves a value to spend that is higher than the current allowance. + assert_eq!(Assets::allowance(token, &owner, &spender), 0); + assert_eq!( + approve::(signed(owner.clone()), token, spender.clone(), value), + Ok(Some(WeightInfo::approve(1, 0)).into()) + ); + assert_eq!(Assets::allowance(token, &owner, &spender), value); + // Approves a value to spend that is lower than the current allowance. + assert_eq!( + approve::(signed(owner.clone()), token, spender.clone(), value / 2), + Ok(Some(WeightInfo::approve(1, 1)).into()) + ); + assert_eq!(Assets::allowance(token, &owner, &spender), value / 2); + // Approves a value to spend that is equal to the current allowance. + assert_eq!( + approve::(signed(owner.clone()), token, spender.clone(), value / 2), + Ok(Some(WeightInfo::approve(0, 0)).into()) + ); + assert_eq!(Assets::allowance(token, &owner, &spender), value / 2); + // Sets allowance to zero. + assert_eq!( + approve::(signed(owner.clone()), token, spender.clone(), 0), + Ok(Some(WeightInfo::approve(0, 1)).into()) + ); + assert_eq!(Assets::allowance(token, &owner, &spender), 0); + }); + } +} + +#[test] +fn increase_allowance_works() { + let token = 1; + let value: Balance = 100 * UNIT; + let owner = ALICE; + let spender = BOB; + ExtBuilder::new() + .with_balances(vec![(owner.clone(), UNIT), (spender.clone(), ED::get())]) + .with_assets(vec![(token, owner.clone(), false, 1)]) + .build() + .execute_with(|| { + for origin in vec![root(), none()] { + assert_noop!( + increase_allowance::(origin, token, spender.clone(), value), + BadOrigin.with_weight(WeightInfo::approve(0, 0)) + ); + } + // Check error works for `Assets::approve_transfer()`. + assert_noop!( + increase_allowance::( + signed(owner.clone()), + TokenId::MAX, + spender.clone(), + value + ), + AssetsError::Unknown.with_weight(AssetsWeightInfo::approve_transfer()) + ); + assert_eq!(0, Assets::allowance(token, &owner, &spender)); + assert_ok!(increase_allowance::( + signed(owner.clone()), + token, + spender.clone(), + value + )); + assert_eq!(Assets::allowance(token, &owner, &spender), value); + // Additive. + assert_ok!(increase_allowance::( + signed(owner.clone()), + token, + spender.clone(), + value + )); + assert_eq!(Assets::allowance(token, &owner, &spender), value * 2); + }); +} + +#[test] +fn decrease_allowance_works() { + let token = 1; + let value: Balance = 100 * UNIT; + let owner = ALICE; + let spender = BOB; + ExtBuilder::new() + .with_balances(vec![(owner.clone(), UNIT), (spender.clone(), ED::get())]) + .with_assets(vec![(token, owner.clone(), false, 1)]) + .build() + .execute_with(|| { + for origin in vec![root(), none()] { + assert_noop!( + decrease_allowance::(origin, token, spender.clone(), 0), + BadOrigin.with_weight(WeightInfo::approve(0, 0)) + ); + } + assert_ok!(Assets::approve(token, &owner, &spender, value)); + assert_eq!(Assets::allowance(token, &owner, &spender), value); + // Check error works for `Assets::cancel_approval()`. No error test for + // `approve_transfer` because it is not possible. + assert_ok!(Assets::freeze_asset(signed(owner.clone()), token.into())); + assert_noop!( + decrease_allowance::( + signed(owner.clone()), + token, + spender.clone(), + value / 2 + ), + AssetsError::AssetNotLive.with_weight(WeightInfo::approve(0, 1)) + ); + assert_ok!(Assets::thaw_asset(signed(owner.clone()), token.into())); + // Owner balance is not changed if decreased by zero. + assert_eq!( + decrease_allowance::(signed(owner.clone()), token, spender.clone(), 0), + Ok((0, Some(WeightInfo::approve(0, 0)).into())) + ); + assert_eq!(Assets::allowance(token, &owner, &spender), value); + // "Unapproved" error is returned if the current allowance is less than amount to + // decrease with. + assert_noop!( + decrease_allowance::( + signed(owner.clone()), + token, + spender.clone(), + value * 2 + ), + AssetsError::Unapproved + ); + // Decrease allowance successfully. + assert_eq!( + decrease_allowance::( + signed(owner.clone()), + token, + spender.clone(), + value / 2 + ), + Ok((value / 2, Some(WeightInfo::approve(1, 1)).into())) + ); + assert_eq!(Assets::allowance(token, &owner, &spender), value / 2); + }); +} + +#[test] +fn create_works() { + let creator = ALICE; + let admin = BOB; + let min_balance = 100; + ExtBuilder::new() + .with_balances(vec![(creator.clone(), UNIT)]) + .build() + .execute_with(|| { + for origin in vec![root(), none()] { + assert_noop!(create::(origin, admin.clone(), min_balance), BadOrigin); + } + let id = NextAssetId::::get().unwrap_or_default(); + assert!(!Assets::asset_exists(id)); + assert_ok!(create::(signed(creator), admin, min_balance)); + assert!(Assets::asset_exists(id)); + }); +} + +#[test] +fn start_destroy_works() { + let token = 1; + let creator = ALICE; + ExtBuilder::new() + .with_assets(vec![(token, creator.clone(), false, 1)]) + .build() + .execute_with(|| { + // Check error works for `Assets::start_destroy()`. + assert_noop!( + start_destroy::(signed(creator.clone()), TokenId::MAX), + AssetsError::Unknown + ); + assert_ok!(start_destroy::(signed(creator.clone()), token)); + // Check that the token is not live after starting the destroy process. + assert_noop!( + Assets::mint(signed(creator.clone()), token.into(), creator.into(), 10 * UNIT), + TokenError::UnknownAsset + ); + }); +} + +#[test] +fn set_metadata_works() { + let token = 1; + let creator = ALICE; + let name = b"name".to_vec(); + let symbol = b"symbol".to_vec(); + let decimals = 42; + ExtBuilder::new() + .with_balances(vec![(creator.clone(), UNIT)]) + .with_assets(vec![(token, creator.clone(), false, 1)]) + .build() + .execute_with(|| { + // Check error works for `Assets::set_metadata()`. + assert_noop!( + set_metadata::( + signed(creator.clone()), + TokenId::MAX, + name.clone(), + symbol.clone(), + decimals + ), + AssetsError::Unknown + ); + assert_ok!(set_metadata::( + signed(creator), + token, + name.clone(), + symbol.clone(), + decimals + )); + assert_eq!(Assets::name(token), name); + assert_eq!(Assets::symbol(token), symbol); + assert_eq!(Assets::decimals(token), decimals); + }); +} + +#[test] +fn clear_metadata_works() { + let token = 1; + let creator = ALICE; + ExtBuilder::new() + .with_assets(vec![(token, creator.clone(), false, 1)]) + .with_asset_metadata(vec![(token, b"name".to_vec(), b"symbol".to_vec(), 42)]) + .build() + .execute_with(|| { + // Check error works for `Assets::clear_metadata()`. + assert_noop!( + clear_metadata::(signed(creator.clone()), TokenId::MAX), + AssetsError::Unknown + ); + assert_ok!(clear_metadata::(signed(creator), token)); + assert!(Assets::name(token).is_empty()); + assert!(Assets::symbol(token).is_empty()); + assert!(Assets::decimals(token).is_zero()); + }); +} + +#[test] +fn mint_works() { + let token = 1; + let value = 100 * UNIT; + let from = ALICE; + let to = BOB; + ExtBuilder::new() + .with_balances(vec![(from.clone(), ED::get()), (to.clone(), ED::get())]) + .with_assets(vec![(token, from.clone(), false, 1)]) + .build() + .execute_with(|| { + // Check error works for `Assets::mint()`. + assert_noop!( + mint::(signed(from.clone()), TokenId::MAX, to.clone(), value), + TokenError::UnknownAsset + ); + let balance_before_mint = Assets::balance(token, &to); + assert_ok!(mint::(signed(from), token, to.clone(), value)); + let balance_after_mint = Assets::balance(token, &to); + assert_eq!(balance_after_mint, balance_before_mint + value); + }); +} + +#[test] +fn burn_works() { + let token = 1; + let value = 100 * UNIT; + let owner = ALICE; + let from = BOB; + let total_supply = value * 2; + ExtBuilder::new() + .with_balances(vec![(from.clone(), ED::get())]) + .with_assets(vec![(token, owner.clone(), false, 1)]) + .with_asset_balances(vec![(token, from.clone(), total_supply)]) + .build() + .execute_with(|| { + // "BalanceLow" error is returned if token is not created. + assert_noop!( + burn::(signed(owner.clone()), TokenId::MAX, from.clone(), value), + AssetsError::BalanceLow.with_weight(WeightInfo::balance_of()) + ); + assert_eq!(Assets::total_supply(token), total_supply); + // Check error works for `Assets::burn()`. + assert_ok!(Assets::freeze_asset(signed(owner.clone()), token.into())); + assert_noop!( + burn::(signed(owner.clone()), token, from.clone(), value), + AssetsError::AssetNotLive + ); + assert_ok!(Assets::thaw_asset(signed(owner.clone()), token.into())); + // "BalanceLow" error is returned if the balance is less than amount to burn. + assert_noop!( + burn::(signed(owner.clone()), token, from.clone(), total_supply * 2), + AssetsError::BalanceLow.with_weight(WeightInfo::balance_of()) + ); + let balance_before_burn = Assets::balance(token, &from); + assert_ok!(burn::(signed(owner), token, from.clone(), value)); + assert_eq!(Assets::total_supply(token), total_supply - value); + let balance_after_burn = Assets::balance(token, &from); + assert_eq!(balance_after_burn, balance_before_burn - value); + }); +} + +#[test] +fn total_supply_works() { + let token = 1; + let total_supply = 100 * UNIT; + ExtBuilder::new() + .with_assets(vec![(token, ALICE, false, 1)]) + .with_asset_balances(vec![(token, ALICE, total_supply)]) + .build() + .execute_with(|| { + assert_eq!(super::total_supply::(TokenId::MAX), 0); + assert_eq!(super::total_supply::(token), total_supply); + }); +} + +#[test] +fn balance_of_works() { + let token = 1; + let owner = ALICE; + let value = 100 * UNIT; + ExtBuilder::new() + .with_assets(vec![(token, owner.clone(), false, 1)]) + .with_asset_balances(vec![(token, owner.clone(), value)]) + .build() + .execute_with(|| { + assert_eq!(balance::(TokenId::MAX, &owner), 0); + assert_eq!(balance::(token, &owner), value); + }); +} + +#[test] +fn allowance_works() { + let token = 1; + let value: Balance = 100 * UNIT; + let owner = ALICE; + let spender = BOB; + ExtBuilder::new() + .with_balances(vec![(owner.clone(), UNIT), (spender.clone(), ED::get())]) + .with_assets(vec![(token, owner.clone(), false, 1)]) + .build() + .execute_with(|| { + assert_eq!(allowance::(token, &owner, &spender), 0); + assert_ok!(Assets::approve(token, &owner, &spender, value)); + assert_eq!(allowance::(token, &owner, &spender), value); + }); +} + +#[test] +fn metadata_works() { + let token = 1; + let creator = ALICE; + let name = b"name".to_vec(); + let symbol = b"symbol".to_vec(); + let decimals = 42; + ExtBuilder::new() + .with_balances(vec![(creator.clone(), UNIT)]) + .with_assets(vec![(token, creator.clone(), false, 1)]) + .with_asset_metadata(vec![(token, name.clone(), symbol.clone(), decimals)]) + .build() + .execute_with(|| { + assert!(super::name::(TokenId::MAX).is_empty()); + assert!(super::symbol::(TokenId::MAX).is_empty()); + assert_eq!(super::decimals::(TokenId::MAX), 0); + + assert_eq!(super::name::(token), name); + assert_eq!(super::symbol::(token), symbol); + assert_eq!(super::decimals::(token), decimals); + }); +} + +#[test] +fn exists_works() { + let token = 1; + let owner = ALICE; + ExtBuilder::new() + .with_assets(vec![(token, owner.clone(), false, 1)]) + .build() + .execute_with(|| { + assert_eq!(exists::(TokenId::MAX), false); + assert_eq!(exists::(token), true); + }); +} diff --git a/pallets/api-vnext/src/fungibles/weights.rs b/pallets/api-vnext/src/fungibles/weights.rs new file mode 100644 index 000000000..2cc996118 --- /dev/null +++ b/pallets/api-vnext/src/fungibles/weights.rs @@ -0,0 +1,494 @@ + +//! Autogenerated weights for `pallet_api_vnext::fungibles` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0 +//! DATE: 2025-06-25, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! WORST CASE MAP SIZE: `1000000` +//! HOSTNAME: `R0GUE`, CPU: `` +//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("pop-devnet-dev")`, DB CACHE: `1024` + +// Executed Command: +// ./target/release/pop-node +// benchmark +// pallet +// --chain=pop-devnet-dev +// --wasm-execution=compiled +// --pallet=pallet-api-vnext::fungibles +// --steps=50 +// --repeat=20 +// --json +// --template=./scripts/templates/pallet-weight-template.hbs +// --output=./pallets/api-vnext/src/fungibles/weights.rs +// --extrinsic= + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] +#![allow(missing_docs)] + +use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}}; +use core::marker::PhantomData; + +/// Weight functions needed for `pallet_api_vnext::fungibles`. +pub trait WeightInfo { + fn transfer() -> Weight; + fn transfer_from() -> Weight; + fn approve(a: u32, c: u32, ) -> Weight; + fn create() -> Weight; + fn start_destroy() -> Weight; + fn set_metadata() -> Weight; + fn clear_metadata() -> Weight; + fn mint() -> Weight; + fn burn() -> Weight; + fn total_supply() -> Weight; + fn balance_of() -> Weight; + fn allowance() -> Weight; + fn metadata_name() -> Weight; + fn metadata_symbol() -> Weight; + fn metadata_decimals() -> Weight; + fn exists() -> Weight; +} + +/// Weights for `pallet_api_vnext::fungibles` using the Substrate node and recommended hardware. +pub struct SubstrateWeight(PhantomData); +impl WeightInfo for SubstrateWeight { + /// Storage: `Revive::OriginalAccount` (r:1 w:0) + /// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + /// Storage: `Assets::Asset` (r:1 w:1) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) + /// Storage: `Assets::Account` (r:2 w:2) + /// Proof: `Assets::Account` (`max_values`: None, `max_size`: Some(134), added: 2609, mode: `MaxEncodedLen`) + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`) + fn transfer() -> Weight { + // Proof Size summary in bytes: + // Measured: `781` + // Estimated: `6208` + // Minimum execution time: 47_000_000 picoseconds. + Weight::from_parts(47_000_000, 6208) + .saturating_add(T::DbWeight::get().reads(5_u64)) + .saturating_add(T::DbWeight::get().writes(4_u64)) + } + /// Storage: `Revive::OriginalAccount` (r:2 w:0) + /// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + /// Storage: `Assets::Asset` (r:1 w:1) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) + /// Storage: `Assets::Approvals` (r:1 w:1) + /// Proof: `Assets::Approvals` (`max_values`: None, `max_size`: Some(148), added: 2623, mode: `MaxEncodedLen`) + /// Storage: `Assets::Account` (r:2 w:2) + /// Proof: `Assets::Account` (`max_values`: None, `max_size`: Some(134), added: 2609, mode: `MaxEncodedLen`) + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`) + fn transfer_from() -> Weight { + // Proof Size summary in bytes: + // Measured: `951` + // Estimated: `6208` + // Minimum execution time: 67_000_000 picoseconds. + Weight::from_parts(68_000_000, 6208) + .saturating_add(T::DbWeight::get().reads(7_u64)) + .saturating_add(T::DbWeight::get().writes(5_u64)) + } + /// Storage: `Revive::OriginalAccount` (r:1 w:0) + /// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + /// Storage: `Assets::Approvals` (r:1 w:1) + /// Proof: `Assets::Approvals` (`max_values`: None, `max_size`: Some(148), added: 2623, mode: `MaxEncodedLen`) + /// Storage: `Assets::Asset` (r:1 w:1) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) + /// The range of component `a` is `[0, 1]`. + /// The range of component `c` is `[0, 1]`. + fn approve(a: u32, c: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `699 + c * (140 ±0)` + // Estimated: `3675` + // Minimum execution time: 27_000_000 picoseconds. + Weight::from_parts(8_044_897, 3675) + // Standard Error: 78_152 + .saturating_add(Weight::from_parts(19_955_102, 0).saturating_mul(a.into())) + // Standard Error: 78_152 + .saturating_add(Weight::from_parts(34_600_000, 0).saturating_mul(c.into())) + .saturating_add(T::DbWeight::get().reads(3_u64)) + .saturating_add(T::DbWeight::get().writes(2_u64)) + } + /// Storage: `Revive::OriginalAccount` (r:1 w:0) + /// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + /// Storage: `Assets::NextAssetId` (r:1 w:1) + /// Proof: `Assets::NextAssetId` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`) + /// Storage: `Assets::Asset` (r:1 w:1) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) + fn create() -> Weight { + // Proof Size summary in bytes: + // Measured: `471` + // Estimated: `3675` + // Minimum execution time: 32_000_000 picoseconds. + Weight::from_parts(34_000_000, 3675) + .saturating_add(T::DbWeight::get().reads(3_u64)) + .saturating_add(T::DbWeight::get().writes(2_u64)) + } + /// Storage: `Assets::Asset` (r:1 w:1) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) + fn start_destroy() -> Weight { + // Proof Size summary in bytes: + // Measured: `337` + // Estimated: `3675` + // Minimum execution time: 11_000_000 picoseconds. + Weight::from_parts(11_000_000, 3675) + .saturating_add(T::DbWeight::get().reads(1_u64)) + .saturating_add(T::DbWeight::get().writes(1_u64)) + } + /// Storage: `Assets::Asset` (r:1 w:0) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) + /// Storage: `Assets::Metadata` (r:1 w:1) + /// Proof: `Assets::Metadata` (`max_values`: None, `max_size`: Some(140), added: 2615, mode: `MaxEncodedLen`) + fn set_metadata() -> Weight { + // Proof Size summary in bytes: + // Measured: `505` + // Estimated: `3675` + // Minimum execution time: 15_000_000 picoseconds. + Weight::from_parts(16_000_000, 3675) + .saturating_add(T::DbWeight::get().reads(2_u64)) + .saturating_add(T::DbWeight::get().writes(1_u64)) + } + /// Storage: `Assets::Asset` (r:1 w:0) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) + /// Storage: `Assets::Metadata` (r:1 w:1) + /// Proof: `Assets::Metadata` (`max_values`: None, `max_size`: Some(140), added: 2615, mode: `MaxEncodedLen`) + fn clear_metadata() -> Weight { + // Proof Size summary in bytes: + // Measured: `645` + // Estimated: `3675` + // Minimum execution time: 28_000_000 picoseconds. + Weight::from_parts(29_000_000, 3675) + .saturating_add(T::DbWeight::get().reads(2_u64)) + .saturating_add(T::DbWeight::get().writes(1_u64)) + } + /// Storage: `Revive::OriginalAccount` (r:1 w:0) + /// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + /// Storage: `Assets::Asset` (r:1 w:1) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) + /// Storage: `Assets::Account` (r:1 w:1) + /// Proof: `Assets::Account` (`max_values`: None, `max_size`: Some(134), added: 2609, mode: `MaxEncodedLen`) + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`) + fn mint() -> Weight { + // Proof Size summary in bytes: + // Measured: `584` + // Estimated: `3675` + // Minimum execution time: 27_000_000 picoseconds. + Weight::from_parts(28_000_000, 3675) + .saturating_add(T::DbWeight::get().reads(4_u64)) + .saturating_add(T::DbWeight::get().writes(3_u64)) + } + /// Storage: `Revive::OriginalAccount` (r:1 w:0) + /// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + /// Storage: `Assets::Account` (r:1 w:1) + /// Proof: `Assets::Account` (`max_values`: None, `max_size`: Some(134), added: 2609, mode: `MaxEncodedLen`) + /// Storage: `Assets::Asset` (r:1 w:1) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`) + fn burn() -> Weight { + // Proof Size summary in bytes: + // Measured: `744` + // Estimated: `3675` + // Minimum execution time: 39_000_000 picoseconds. + Weight::from_parts(40_000_000, 3675) + .saturating_add(T::DbWeight::get().reads(4_u64)) + .saturating_add(T::DbWeight::get().writes(3_u64)) + } + /// Storage: `Assets::Asset` (r:1 w:0) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) + fn total_supply() -> Weight { + // Proof Size summary in bytes: + // Measured: `300` + // Estimated: `3675` + // Minimum execution time: 5_000_000 picoseconds. + Weight::from_parts(5_000_000, 3675) + .saturating_add(T::DbWeight::get().reads(1_u64)) + } + /// Storage: `Revive::OriginalAccount` (r:1 w:0) + /// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + /// Storage: `Assets::Account` (r:1 w:0) + /// Proof: `Assets::Account` (`max_values`: None, `max_size`: Some(134), added: 2609, mode: `MaxEncodedLen`) + fn balance_of() -> Weight { + // Proof Size summary in bytes: + // Measured: `346` + // Estimated: `3599` + // Minimum execution time: 7_000_000 picoseconds. + Weight::from_parts(8_000_000, 3599) + .saturating_add(T::DbWeight::get().reads(2_u64)) + } + /// Storage: `Revive::OriginalAccount` (r:2 w:0) + /// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + /// Storage: `Assets::Approvals` (r:1 w:0) + /// Proof: `Assets::Approvals` (`max_values`: None, `max_size`: Some(148), added: 2623, mode: `MaxEncodedLen`) + fn allowance() -> Weight { + // Proof Size summary in bytes: + // Measured: `291` + // Estimated: `6044` + // Minimum execution time: 10_000_000 picoseconds. + Weight::from_parts(10_000_000, 6044) + .saturating_add(T::DbWeight::get().reads(3_u64)) + } + /// Storage: `Assets::Metadata` (r:1 w:0) + /// Proof: `Assets::Metadata` (`max_values`: None, `max_size`: Some(140), added: 2615, mode: `MaxEncodedLen`) + fn metadata_name() -> Weight { + // Proof Size summary in bytes: + // Measured: `267` + // Estimated: `3605` + // Minimum execution time: 7_000_000 picoseconds. + Weight::from_parts(8_000_000, 3605) + .saturating_add(T::DbWeight::get().reads(1_u64)) + } + /// Storage: `Assets::Metadata` (r:1 w:0) + /// Proof: `Assets::Metadata` (`max_values`: None, `max_size`: Some(140), added: 2615, mode: `MaxEncodedLen`) + fn metadata_symbol() -> Weight { + // Proof Size summary in bytes: + // Measured: `267` + // Estimated: `3605` + // Minimum execution time: 7_000_000 picoseconds. + Weight::from_parts(8_000_000, 3605) + .saturating_add(T::DbWeight::get().reads(1_u64)) + } + /// Storage: `Assets::Metadata` (r:1 w:0) + /// Proof: `Assets::Metadata` (`max_values`: None, `max_size`: Some(140), added: 2615, mode: `MaxEncodedLen`) + fn metadata_decimals() -> Weight { + // Proof Size summary in bytes: + // Measured: `136` + // Estimated: `3605` + // Minimum execution time: 5_000_000 picoseconds. + Weight::from_parts(6_000_000, 3605) + .saturating_add(T::DbWeight::get().reads(1_u64)) + } + /// Storage: `Assets::Asset` (r:1 w:0) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) + fn exists() -> Weight { + // Proof Size summary in bytes: + // Measured: `139` + // Estimated: `3675` + // Minimum execution time: 4_000_000 picoseconds. + Weight::from_parts(4_000_000, 3675) + .saturating_add(T::DbWeight::get().reads(1_u64)) + } +} + +// For backwards compatibility and tests. +impl WeightInfo for () { + /// Storage: `Revive::OriginalAccount` (r:1 w:0) + /// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + /// Storage: `Assets::Asset` (r:1 w:1) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) + /// Storage: `Assets::Account` (r:2 w:2) + /// Proof: `Assets::Account` (`max_values`: None, `max_size`: Some(134), added: 2609, mode: `MaxEncodedLen`) + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`) + fn transfer() -> Weight { + // Proof Size summary in bytes: + // Measured: `781` + // Estimated: `6208` + // Minimum execution time: 47_000_000 picoseconds. + Weight::from_parts(47_000_000, 6208) + .saturating_add(RocksDbWeight::get().reads(5_u64)) + .saturating_add(RocksDbWeight::get().writes(4_u64)) + } + /// Storage: `Revive::OriginalAccount` (r:2 w:0) + /// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + /// Storage: `Assets::Asset` (r:1 w:1) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) + /// Storage: `Assets::Approvals` (r:1 w:1) + /// Proof: `Assets::Approvals` (`max_values`: None, `max_size`: Some(148), added: 2623, mode: `MaxEncodedLen`) + /// Storage: `Assets::Account` (r:2 w:2) + /// Proof: `Assets::Account` (`max_values`: None, `max_size`: Some(134), added: 2609, mode: `MaxEncodedLen`) + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`) + fn transfer_from() -> Weight { + // Proof Size summary in bytes: + // Measured: `951` + // Estimated: `6208` + // Minimum execution time: 67_000_000 picoseconds. + Weight::from_parts(68_000_000, 6208) + .saturating_add(RocksDbWeight::get().reads(7_u64)) + .saturating_add(RocksDbWeight::get().writes(5_u64)) + } + /// Storage: `Revive::OriginalAccount` (r:1 w:0) + /// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + /// Storage: `Assets::Approvals` (r:1 w:1) + /// Proof: `Assets::Approvals` (`max_values`: None, `max_size`: Some(148), added: 2623, mode: `MaxEncodedLen`) + /// Storage: `Assets::Asset` (r:1 w:1) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) + /// The range of component `a` is `[0, 1]`. + /// The range of component `c` is `[0, 1]`. + fn approve(a: u32, c: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `699 + c * (140 ±0)` + // Estimated: `3675` + // Minimum execution time: 27_000_000 picoseconds. + Weight::from_parts(8_044_897, 3675) + // Standard Error: 78_152 + .saturating_add(Weight::from_parts(19_955_102, 0).saturating_mul(a.into())) + // Standard Error: 78_152 + .saturating_add(Weight::from_parts(34_600_000, 0).saturating_mul(c.into())) + .saturating_add(RocksDbWeight::get().reads(3_u64)) + .saturating_add(RocksDbWeight::get().writes(2_u64)) + } + /// Storage: `Revive::OriginalAccount` (r:1 w:0) + /// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + /// Storage: `Assets::NextAssetId` (r:1 w:1) + /// Proof: `Assets::NextAssetId` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`) + /// Storage: `Assets::Asset` (r:1 w:1) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) + fn create() -> Weight { + // Proof Size summary in bytes: + // Measured: `471` + // Estimated: `3675` + // Minimum execution time: 32_000_000 picoseconds. + Weight::from_parts(34_000_000, 3675) + .saturating_add(RocksDbWeight::get().reads(3_u64)) + .saturating_add(RocksDbWeight::get().writes(2_u64)) + } + /// Storage: `Assets::Asset` (r:1 w:1) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) + fn start_destroy() -> Weight { + // Proof Size summary in bytes: + // Measured: `337` + // Estimated: `3675` + // Minimum execution time: 11_000_000 picoseconds. + Weight::from_parts(11_000_000, 3675) + .saturating_add(RocksDbWeight::get().reads(1_u64)) + .saturating_add(RocksDbWeight::get().writes(1_u64)) + } + /// Storage: `Assets::Asset` (r:1 w:0) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) + /// Storage: `Assets::Metadata` (r:1 w:1) + /// Proof: `Assets::Metadata` (`max_values`: None, `max_size`: Some(140), added: 2615, mode: `MaxEncodedLen`) + fn set_metadata() -> Weight { + // Proof Size summary in bytes: + // Measured: `505` + // Estimated: `3675` + // Minimum execution time: 15_000_000 picoseconds. + Weight::from_parts(16_000_000, 3675) + .saturating_add(RocksDbWeight::get().reads(2_u64)) + .saturating_add(RocksDbWeight::get().writes(1_u64)) + } + /// Storage: `Assets::Asset` (r:1 w:0) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) + /// Storage: `Assets::Metadata` (r:1 w:1) + /// Proof: `Assets::Metadata` (`max_values`: None, `max_size`: Some(140), added: 2615, mode: `MaxEncodedLen`) + fn clear_metadata() -> Weight { + // Proof Size summary in bytes: + // Measured: `645` + // Estimated: `3675` + // Minimum execution time: 28_000_000 picoseconds. + Weight::from_parts(29_000_000, 3675) + .saturating_add(RocksDbWeight::get().reads(2_u64)) + .saturating_add(RocksDbWeight::get().writes(1_u64)) + } + /// Storage: `Revive::OriginalAccount` (r:1 w:0) + /// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + /// Storage: `Assets::Asset` (r:1 w:1) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) + /// Storage: `Assets::Account` (r:1 w:1) + /// Proof: `Assets::Account` (`max_values`: None, `max_size`: Some(134), added: 2609, mode: `MaxEncodedLen`) + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`) + fn mint() -> Weight { + // Proof Size summary in bytes: + // Measured: `584` + // Estimated: `3675` + // Minimum execution time: 27_000_000 picoseconds. + Weight::from_parts(28_000_000, 3675) + .saturating_add(RocksDbWeight::get().reads(4_u64)) + .saturating_add(RocksDbWeight::get().writes(3_u64)) + } + /// Storage: `Revive::OriginalAccount` (r:1 w:0) + /// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + /// Storage: `Assets::Account` (r:1 w:1) + /// Proof: `Assets::Account` (`max_values`: None, `max_size`: Some(134), added: 2609, mode: `MaxEncodedLen`) + /// Storage: `Assets::Asset` (r:1 w:1) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`) + fn burn() -> Weight { + // Proof Size summary in bytes: + // Measured: `744` + // Estimated: `3675` + // Minimum execution time: 39_000_000 picoseconds. + Weight::from_parts(40_000_000, 3675) + .saturating_add(RocksDbWeight::get().reads(4_u64)) + .saturating_add(RocksDbWeight::get().writes(3_u64)) + } + /// Storage: `Assets::Asset` (r:1 w:0) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) + fn total_supply() -> Weight { + // Proof Size summary in bytes: + // Measured: `300` + // Estimated: `3675` + // Minimum execution time: 5_000_000 picoseconds. + Weight::from_parts(5_000_000, 3675) + .saturating_add(RocksDbWeight::get().reads(1_u64)) + } + /// Storage: `Revive::OriginalAccount` (r:1 w:0) + /// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + /// Storage: `Assets::Account` (r:1 w:0) + /// Proof: `Assets::Account` (`max_values`: None, `max_size`: Some(134), added: 2609, mode: `MaxEncodedLen`) + fn balance_of() -> Weight { + // Proof Size summary in bytes: + // Measured: `346` + // Estimated: `3599` + // Minimum execution time: 7_000_000 picoseconds. + Weight::from_parts(8_000_000, 3599) + .saturating_add(RocksDbWeight::get().reads(2_u64)) + } + /// Storage: `Revive::OriginalAccount` (r:2 w:0) + /// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + /// Storage: `Assets::Approvals` (r:1 w:0) + /// Proof: `Assets::Approvals` (`max_values`: None, `max_size`: Some(148), added: 2623, mode: `MaxEncodedLen`) + fn allowance() -> Weight { + // Proof Size summary in bytes: + // Measured: `291` + // Estimated: `6044` + // Minimum execution time: 10_000_000 picoseconds. + Weight::from_parts(10_000_000, 6044) + .saturating_add(RocksDbWeight::get().reads(3_u64)) + } + /// Storage: `Assets::Metadata` (r:1 w:0) + /// Proof: `Assets::Metadata` (`max_values`: None, `max_size`: Some(140), added: 2615, mode: `MaxEncodedLen`) + fn metadata_name() -> Weight { + // Proof Size summary in bytes: + // Measured: `267` + // Estimated: `3605` + // Minimum execution time: 7_000_000 picoseconds. + Weight::from_parts(8_000_000, 3605) + .saturating_add(RocksDbWeight::get().reads(1_u64)) + } + /// Storage: `Assets::Metadata` (r:1 w:0) + /// Proof: `Assets::Metadata` (`max_values`: None, `max_size`: Some(140), added: 2615, mode: `MaxEncodedLen`) + fn metadata_symbol() -> Weight { + // Proof Size summary in bytes: + // Measured: `267` + // Estimated: `3605` + // Minimum execution time: 7_000_000 picoseconds. + Weight::from_parts(8_000_000, 3605) + .saturating_add(RocksDbWeight::get().reads(1_u64)) + } + /// Storage: `Assets::Metadata` (r:1 w:0) + /// Proof: `Assets::Metadata` (`max_values`: None, `max_size`: Some(140), added: 2615, mode: `MaxEncodedLen`) + fn metadata_decimals() -> Weight { + // Proof Size summary in bytes: + // Measured: `136` + // Estimated: `3605` + // Minimum execution time: 5_000_000 picoseconds. + Weight::from_parts(6_000_000, 3605) + .saturating_add(RocksDbWeight::get().reads(1_u64)) + } + /// Storage: `Assets::Asset` (r:1 w:0) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) + fn exists() -> Weight { + // Proof Size summary in bytes: + // Measured: `139` + // Estimated: `3675` + // Minimum execution time: 4_000_000 picoseconds. + Weight::from_parts(4_000_000, 3675) + .saturating_add(RocksDbWeight::get().reads(1_u64)) + } +} + diff --git a/pallets/api-vnext/src/lib.rs b/pallets/api-vnext/src/lib.rs new file mode 100644 index 000000000..1055bbcd6 --- /dev/null +++ b/pallets/api-vnext/src/lib.rs @@ -0,0 +1,275 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +extern crate alloc; + +use alloc::vec::Vec; +use core::{convert::Into, marker::PhantomData, num::NonZero}; + +use codec::{Decode, Encode, MaxEncodedLen}; +use frame_support::{ + dispatch::RawOrigin, + pallet_prelude::DispatchError, + sp_runtime::{traits::StaticLookup, ArithmeticError}, +}; +#[cfg(any(test, feature = "runtime-benchmarks"))] +use pallet_revive::precompiles::alloy::sol_types::{SolType, SolValue}; +use pallet_revive::{ + precompiles::{ + alloy::{ + primitives::{self as alloy, IntoLogData}, + sol, + sol_types::SolEvent, + }, + AddressMatcher, Error, Ext, Precompile, + }, + AddressMapper as _, H160, H256, +}; +use scale_info::TypeInfo; +#[cfg(feature = "runtime-benchmarks")] +use { + frame_support::{pallet_prelude::IsType, traits::fungible::Inspect}, + pallet_revive::evm::U256, + pallet_revive::precompiles::run::{CallSetup, WasmModule}, +}; +#[cfg(test)] +use { + frame_support::{pallet_prelude::Weight, sp_runtime::traits::Bounded}, + frame_system::pallet_prelude::OriginFor, + pallet_revive::{ + precompiles::alloy::sol_types::{Revert, SolError}, + BalanceOf, DepositLimit, MomentOf, + }, +}; + +mod errors; +#[cfg(feature = "fungibles")] +pub mod fungibles; +#[cfg(feature = "messaging")] +pub mod messaging; +#[cfg(test)] +mod mock; + +type AccountIdOf = ::AccountId; +type Assets = pallet_assets::Pallet; + +// A bare call to a contract. +#[cfg(test)] +fn bare_call< + T: pallet_revive::Config, + O: SolValue + + From<::RustType>, +>( + origin: OriginFor, + dest: H160, + value: BalanceOf, + gas_limit: Weight, + storage_deposit_limit: DepositLimit>, + data: Vec, +) -> Result +where + BalanceOf: Into + TryFrom + Bounded, + MomentOf: Into, + T::Hash: frame_support::traits::IsType, +{ + let result = pallet_revive::Pallet::::bare_call( + origin, + dest, + value, + gas_limit, + storage_deposit_limit, + data, + ) + .result + .map_err(|e| Error::Error(e.into()))?; + match result.did_revert() { + true => { + let revert = Revert::abi_decode(&result.data).expect("revert data is invalid"); + Err(Error::Revert(revert)) + }, + false => Ok(decode::(&result.data)), + } +} + +// A direct call to a precompile. +#[cfg(feature = "runtime-benchmarks")] +fn call_precompile< + P: Precompile, + E: pallet_revive::precompiles::ExtWithInfo< + T: pallet_revive::Config< + Currency: frame_support::traits::fungible::Inspect< + ::AccountId, + Balance: Into + TryFrom, + >, + Hash: frame_support::traits::IsType, + Time: frame_support::traits::Time>, + >, + >, + O: SolValue + + From<::RustType>, +>( + ext: &mut E, + address: &[u8; 20], + input: &P::Interface, +) -> Result { + pallet_revive::precompiles::run::precompile::(ext, address, input).map(|o| decode(&o)) +} + +#[cfg(any(test, feature = "runtime-benchmarks"))] +fn decode::RustType>>(data: &[u8]) -> T { + T::abi_decode(data).expect("unable to decode") +} + +fn deposit_event( + env: &mut impl Ext, + event: impl SolEvent + IntoLogData, +) -> Result<(), Error> { + // Source: https://github.com/paritytech/polkadot-sdk/blob/e1026d7ee22a593cf566a99484eee02a03ecc236/substrate/frame/assets/src/precompiles.rs#L152 + let (topics, data) = event.into_log_data().split(); + let topics = topics.into_iter().map(|v| H256(v.0)).collect::>(); + env.gas_meter_mut() + .charge(pallet_revive::precompiles::RuntimeCosts::DepositEvent { + num_topic: topics.len() as u32, + len: topics.len() as u32, + })?; + env.deposit_event(topics, data.to_vec()); + Ok(()) +} + +#[cfg(test)] +fn assert_last_event(address: impl Into, event: impl SolEvent) { + mock::System::assert_last_event( + pallet_revive::Event::ContractEmitted { + contract: address.into(), + data: event.encode_data(), + topics: topics(&event), + } + .into(), + ) +} + +const fn fixed_address(n: u16) -> [u8; 20] { + AddressMatcher::Fixed(NonZero::new(n).unwrap()).base_address() +} + +fn prefixed_address(n: u16, prefix: u32) -> [u8; 20] { + let mut address = AddressMatcher::Prefix(NonZero::new(n).unwrap()).base_address(); + address[..4].copy_from_slice(&prefix.to_be_bytes()); + address +} + +#[cfg(feature = "runtime-benchmarks")] +fn set_up_call< + T: pallet_revive::Config< + Currency: Inspect< + ::AccountId, + Balance: Into + TryFrom, + >, + Hash: IsType, + Time: frame_support::traits::Time>, + >, +>() -> CallSetup { + CallSetup::::new(WasmModule::dummy()) +} + +#[cfg(test)] +fn to_address(account: &::AccountId) -> H160 { + pallet_revive::AccountId32Mapper::::to_address(account) +} + +#[cfg(test)] +fn topics(event: &impl SolEvent) -> Vec { + event.encode_topics().into_iter().map(|t| (*t.0).into()).collect() +} + +/// The origin of a call. +#[derive(Clone, Debug, Encode, Eq, Decode, MaxEncodedLen, PartialEq, TypeInfo)] +#[scale_info(skip_type_params(T))] +pub struct Origin { + address: H160, + account: T::AccountId, +} + +impl Origin { + /// Returns the address of the origin. + pub fn address(&self) -> pallet_revive::precompiles::alloy::primitives::Address { + self.address.0.into() + } + + /// Converts the origin into a `RuntimeOrigin`. + pub fn into(self) -> T::RuntimeOrigin { + frame_system::RawOrigin::Signed(self.account).into() + } +} + +impl TryFrom> for Origin { + type Error = DispatchError; + + fn try_from(origin: pallet_revive::Origin) -> Result { + use pallet_revive::Origin::*; + let account = match origin { + Signed(id) => Ok(id), + Root => Err(DispatchError::RootNotAllowed), + }?; + let address = ::AddressMapper::to_address(&account); + Ok(Self { address, account }) + } +} + +#[cfg(test)] +impl From<(H160, T::AccountId)> for Origin { + fn from((address, account): (H160, T::AccountId)) -> Self { + Self { address, account } + } +} + +#[cfg(feature = "runtime-benchmarks")] +impl Origin { + pub fn from_address(address: H160) -> Self { + let account = ::AddressMapper::to_account_id(&address); + Self { address, account } + } +} + +/// Creates a new `RuntimeOrigin` from an ['Origin']. +pub fn to_runtime_origin( + o: pallet_revive::Origin, +) -> T::RuntimeOrigin { + use pallet_revive::Origin::*; + match o { + Root => RawOrigin::Root.into(), + Signed(account) => RawOrigin::Signed(account).into(), + } +} + +/// Extension trait for ergonomic conversion between types. +pub trait TryConvert { + /// The type returned in the event of a conversion error. + type Error; + + /// Attempt to convert to target type. + fn try_convert(self) -> Result; +} + +impl TryConvert for u128 { + type Error = DispatchError; + + fn try_convert(self) -> Result { + self.try_into().map_err(|_| DispatchError::from(ArithmeticError::Overflow)) + } +} + +impl> TryConvert for alloy::U256 { + type Error = DispatchError; + + fn try_convert(self) -> Result { + self.try_into().map_err(|_| DispatchError::from(ArithmeticError::Overflow)) + } +} + +impl TryConvert for usize { + type Error = DispatchError; + + fn try_convert(self) -> Result { + self.try_into().map_err(|_| DispatchError::from(ArithmeticError::Overflow)) + } +} diff --git a/pallets/api-vnext/src/messaging.rs b/pallets/api-vnext/src/messaging.rs new file mode 100644 index 000000000..2ad7696e8 --- /dev/null +++ b/pallets/api-vnext/src/messaging.rs @@ -0,0 +1,983 @@ +//! The messaging API offers a streamlined interface for cross-chain interactions. The +//! goal is to provide a simplified API that unlocks the power of Polkadot for contracts. + +use deposits::*; +use frame_support::{ + dispatch::{DispatchErrorWithPostInfo, DispatchResult, DispatchResultWithPostInfo}, + pallet_prelude::{DispatchError::BadOrigin, *}, + storage::KeyLenOf, + traits::{ + tokens::{ + fungible::{hold::Mutate as HoldMutate, Balanced, Credit, Inspect, Mutate}, + Fortitude, Precision, Preservation, + }, + Get, OnUnbalanced, + }, + weights::WeightToFee, + BoundedSlice, +}; +use frame_system::pallet_prelude::*; +pub use pallet::{Error, *}; +use pallet_revive::{ + sp_runtime::traits::{SaturatedConversion, Saturating, TryConvert}, + H160, +}; +use sp_runtime::ArithmeticError; +use transports::{ + ismp::IsmpDispatcher, + xcm::{Location, NotifyQueryHandler, QueryId, Response}, +}; +use weights::WeightInfo; + +use super::*; + +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; +mod deposits; +/// The messaging precompiles offer a streamlined interface for cross-chain messaging. +pub mod precompiles; +#[cfg(test)] +mod tests; +/// Messaging transports. +pub mod transports; +mod weights; + +pub(crate) type BalanceOf = <::Fungibles as Inspect>>::Balance; +type BlockNumberOf = BlockNumberFor; +type DbWeightOf = ::DbWeight; +pub type MessageId = u64; + +#[frame_support::pallet] +pub mod pallet { + use frame_support::ensure; + + use super::*; + + #[pallet::pallet] + pub struct Pallet(_); + + #[pallet::config] + pub trait Config: frame_system::Config { + /// The type responsible for executing callbacks. + type CallbackExecutor: CallbackExecutor; + /// Where the callback fees or response fees are charged to. + type FeeHandler: OnUnbalanced>; + /// The deposit + fee mechanism. + type Fungibles: HoldMutate + + Mutate + + Balanced; + /// The ISMP message dispatcher. + type IsmpDispatcher: IsmpDispatcher>; + /// The implementation of Keccak used for commitment hashes. + type Keccak256: ::ismp::messaging::Keccak256; + /// The maximum length of any additional application-specific metadata relating to a + /// request. + #[pallet::constant] + type MaxContextLen: Get; + /// The maximum length of outbound (posted) data. + #[pallet::constant] + type MaxDataLen: Get; + /// The maximum byte length for a single key of an ismp request. + #[pallet::constant] + type MaxKeyLen: Get; + /// The maximum number of keys for an outbound request. + #[pallet::constant] + type MaxKeys: Get; + /// The maximum length of the receiving module identifier/address on a destination chain. + #[pallet::constant] + type MaxRecipientLen: Get; + /// The maximum number of messages which can be removed at a time. + #[pallet::constant] + type MaxRemovals: Get; + /// The maximum length for a response. + #[pallet::constant] + type MaxResponseLen: Get; + /// SAFETY: Recommended this is small as is used to updated a message status in the hooks. + /// The maximum number of xcm timeout updates that can be processed per block. + #[pallet::constant] + type MaxXcmQueryTimeoutsPerBlock: Get; + /// The base byte fee for data stored offchain. + #[pallet::constant] + type OffChainByteFee: Get>; + /// The base byte fee for data stored onchain. + #[pallet::constant] + type OnChainByteFee: Get>; + /// A converter for conversion of a call origin to a location. + type OriginConverter: TryConvert; + /// The overarching hold reason for deposits. + type RuntimeHoldReason: From; + /// The type responsible for converting between weight and balance, commonly transaction + /// payment. + type WeightToFee: WeightToFee>; + /// Pallet weights. + type WeightInfo: WeightInfo; + /// A handler for the creation of a XCM query notification. + type Xcm: NotifyQueryHandler; + /// The origin of the response for xcm. + type XcmResponseOrigin: EnsureOrigin; + } + + #[pallet::error] + pub enum Error { + /// The message is invalid. + InvalidMessage, + /// The query is invalid. + InvalidQuery, + /// Failed to convert origin. + OriginConversionFailed, + /// The message already exists. + MessageExists, + /// The request is pending. + RequestPending, + /// Dispatching a call via ISMP failed. + IsmpDispatchFailed, + /// The message was not found. + MessageNotFound, + /// The request has timed out. + RequestTimedOut, + /// Timeouts must be in the future. + FutureTimeoutMandatory, + /// Message block limit has been reached for this expiry block. Try a different timeout. + MaxMessageTimeoutPerBlockReached, + /// This callback cannot be processed due to lack of blockspace. Please poll the response. + BlockspaceAllowanceReached, + /// This is not possible as the message has completed. + MessageCompleted, + /// No callback has been found for this query. + NoCallbackFound, + /// Weight cannot be zero. + ZeroWeight, + /// The number of messages exceeds the limit. + TooManyMessages, + } + + /// A reason for the pallet placing a hold on funds. + #[pallet::composite_enum] + pub enum HoldReason { + /// Held for the duration of a message's lifespan. + #[codec(index = 0)] + Messaging, + #[codec(index = 1)] + CallbackGas, + } + + #[pallet::hooks] + impl Hooks> for Pallet { + fn integrity_test() { + let max_response_len = T::MaxResponseLen::get() as usize; + let response_max_encoded_len = Response::max_encoded_len(); + assert!( + max_response_len > response_max_encoded_len, + "MaxResponseLen ({max_response_len}) should be greater than the maximum encoded \ + length of an XCM Response ({response_max_encoded_len})" + ); + } + + fn on_initialize(n: BlockNumberOf) -> Weight { + // As of polkadot-2412 XCM timeouts are not handled by the implementation of OnResponse + // in pallet-xcm. As a result, we must handle timeouts in the pallet. + // Iterate through the queries that have expired and update their status. + let mut weight: Weight = Zero::zero(); + let mut query_ids = Vec::new(); + for message_id in XcmQueryTimeouts::::get(n) { + weight = weight.saturating_add(DbWeightOf::::get().reads_writes(2, 1)); + Messages::::mutate(message_id, |maybe_message| { + if let Some(Message::XcmQuery { origin, query_id, message_deposit, callback }) = + maybe_message.as_mut() + { + let callback_deposit = + callback.map(|cb| T::WeightToFee::weight_to_fee(&cb.gas_limit)); + query_ids.push(*query_id); + *maybe_message = Some(Message::XcmTimeout { + origin: origin.address, + query_id: *query_id, + message_deposit: *message_deposit, + callback_deposit, + }); + } + }) + } + + if !query_ids.is_empty() { + Self::deposit_event(Event::::XcmQueriesTimedOut { query_ids }) + } + weight + } + } + + /// The message queue. + #[pallet::storage] + pub(crate) type Messages = StorageMap<_, Twox64Concat, MessageId, Message>; + + /// The next message identifier. + /// + /// Also serves as a count of the total number of messages sent. + #[pallet::storage] + pub(crate) type NextMessageId = StorageValue<_, MessageId, ValueQuery>; + + /// The active ISMP requests, mapped to the originating message identifier. + #[pallet::storage] + pub(super) type IsmpRequests = StorageMap<_, Identity, H256, MessageId>; + + /// The active XCM queries, mapped to the originating message identifier. + #[pallet::storage] + pub(super) type XcmQueries = StorageMap<_, Twox64Concat, QueryId, MessageId>; + + /// The timeouts of XCM queries, by block number. + #[pallet::storage] + pub(super) type XcmQueryTimeouts = StorageMap< + _, + Twox64Concat, + BlockNumberOf, + BoundedVec, + ValueQuery, + >; + + /// The events that can be emitted. + #[pallet::event] + #[pallet::generate_deposit(pub(super) fn deposit_event)] + pub enum Event { + /// A callback has been executed successfully. + CallbackExecuted { + /// The origin of the callback. + origin: T::AccountId, + /// The identifier specified for the request. + id: MessageId, + /// The successful callback. + callback: Callback>, + }, + /// A callback has failed. + CallbackFailed { + /// The origin of the callback. + origin: T::AccountId, + /// The identifier specified for the request. + id: MessageId, + /// The callback which failed. + callback: Callback>, + /// The error which occurred. + error: DispatchErrorWithPostInfo, + }, + /// A response to a GET has been received via ISMP. + IsmpGetResponseReceived { + /// The destination of the response. + dest: H160, + /// The identifier specified for the request. + id: MessageId, + /// The ISMP request commitment. + commitment: H256, + }, + /// A response to a POST has been received via ISMP. + IsmpPostResponseReceived { + /// The destination of the response. + dest: H160, + /// The identifier specified for the request. + id: MessageId, + /// The ISMP request commitment. + commitment: H256, + }, + /// An ISMP message has timed out. + IsmpTimedOut { commitment: H256 }, + /// An error has occured while attempting to refund weight. + WeightRefundErrored { message_id: MessageId, error: DispatchError }, + /// A collection of xcm queries have timed out. + XcmQueriesTimedOut { query_ids: Vec }, + /// A response to a XCM query has been received. + XcmResponseReceived { + /// The destination of the response. + dest: H160, + /// The identifier specified for the request. + id: MessageId, + /// The identifier of the XCM query. + query_id: QueryId, + /// The query response. + response: Response, + }, + } + + #[pallet::call] + impl Pallet { + /// Handle a response to a previous XCM query. + /// + /// Executes a stored callback or updates the state with the received response. + /// + /// # Parameters + /// - `origin`: The XCM responder origin. + /// - `query_id`: The ID of the XCM query being responded to. + /// - `xcm_response`: The response data. + #[pallet::call_index(0)] + #[pallet::weight({ + // This is only used to check against max_weight field in the OnResponse implementation in pallet-xcm. + T::WeightInfo::xcm_response() + })] + pub fn xcm_response( + origin: OriginFor, + query_id: QueryId, + xcm_response: Response, + ) -> DispatchResult { + T::XcmResponseOrigin::ensure_origin(origin)?; + + let extrinsic_weight = T::WeightInfo::xcm_response() + .saturating_add(T::CallbackExecutor::execution_weight()); + + ensure!( + frame_system::BlockWeight::::get() + .checked_accrue(extrinsic_weight, DispatchClass::Normal) + .is_ok(), + Error::::BlockspaceAllowanceReached + ); + + // Manually adjust weight ahead of fallible execution. + // The fees of which should have been paid. + frame_system::Pallet::::register_extra_weight_unchecked( + T::WeightInfo::xcm_response() + .saturating_add(T::CallbackExecutor::execution_weight()), + DispatchClass::Normal, + ); + + let id = XcmQueries::::get(query_id).ok_or(Error::::MessageNotFound)?; + let xcm_query_message = Messages::::get(id).ok_or(Error::::MessageNotFound)?; + + let (origin, query_id, callback, message_deposit) = match &xcm_query_message { + Message::XcmQuery { origin, query_id, callback, message_deposit } => + (origin, query_id, callback, message_deposit), + Message::XcmTimeout { .. } => return Err(Error::::RequestTimedOut.into()), + _ => return Err(Error::::InvalidMessage.into()), + }; + + // Emit event before possible callback execution. + Self::deposit_event(Event::::XcmResponseReceived { + dest: origin.address, + id, + query_id: *query_id, + response: xcm_response.clone(), + }); + + if let Some(callback) = callback { + // Attempt callback with response if specified. + log::debug!(target: "pop-api::extension", "xcm callback={:?}, response={:?}", callback, xcm_response); + // Never roll back state if call fails. + // Ensure that the response can be polled. + if call::(&origin.account, *callback, &id, &xcm_response).is_ok() { + Messages::::remove(id); + XcmQueries::::remove(query_id); + T::Fungibles::release( + &HoldReason::Messaging.into(), + &origin.account, + *message_deposit, + Precision::Exact, + )?; + + return Ok(()); + } + } + // No callback is executed, + Messages::::insert( + id, + Message::XcmResponse { + origin: origin.address, + query_id: *query_id, + message_deposit: *message_deposit, + response: xcm_response, + }, + ); + Ok(().into()) + } + } +} + +impl Pallet { + /// Get a message by its identifier. + /// + /// # Parameters + /// - `id`: The message identifier. + pub fn get(id: MessageId) -> Option> { + >::get(id) + } +} + +/// Executes a registered callback with the given input data and manually charges block +/// weight. +/// +/// This function is responsible for handling the full lifecycle of a callback invocation: +/// - Calculating the total weight cost of the callback. +/// - Ensuring that sufficient blockspace is available before execution. +/// - Executing the callback via the configured `CallbackExecutor`. +/// - Registering the actual weight used with the runtime. +/// - Managing any associated weight fee refund logic. +/// +/// # Parameters +/// +/// - `initiating_origin`: The account that triggered the callback. This will be passed to the +/// executor and used for fee management and event attribution. +/// - `callback`: The callback definition. +/// - `id`: The message ID associated with this callback's message. +/// - `data`: The encoded payload to send to the callback. +/// +/// # Weight Handling +/// +/// - Before executing the callback, this function checks whether the total expected weight +/// (`callback.weight`) can be accommodated in the current block. +/// - If the block is saturated, the function returns early with an error and does not mutate state. +/// - After execution, the actual weight used by the callback is determined using +/// [`Self::process_callback_weight`] and registered via +/// [`frame_system::Pallet::::register_extra_weight_unchecked`]. +pub(crate) fn call( + initiating_origin: &AccountIdOf, + callback: Callback>, + id: &MessageId, + data: &impl EncodeCallback, +) -> DispatchResult { + // This is the total weight that should be deducted from the blockspace for callback + // execution. + let max_weight = callback.gas_limit; + + // Dont mutate state if blockspace will be saturated. + frame_support::ensure!( + frame_system::BlockWeight::::get() + .checked_accrue(max_weight, DispatchClass::Normal) + .is_ok(), + Error::::BlockspaceAllowanceReached + ); + + // Execute callback. + // Its important to note that we must still ensure that the weight used is accounted for + // in frame_system. Hence all calls after this must not return an err and state + // should not be rolled back. + let data = data.encode(callback.encoding, callback.selector, *id); + let result = T::CallbackExecutor::execute( + &initiating_origin, + callback.destination, + data, + callback.gas_limit, + callback.storage_deposit_limit, + ); + + log::debug!(target: "pop-api::extension", "callback gas_limit={:?}, storage_deposit_limit={:?}, result={result:?}", callback.gas_limit, callback.storage_deposit_limit); + deposit_callback_event::(initiating_origin.clone(), *id, &callback, &result); + let callback_weight_used = process_callback_weight(&result, callback.gas_limit); + + // Manually adjust callback weight. + frame_system::Pallet::::register_extra_weight_unchecked( + callback_weight_used, + DispatchClass::Normal, + ); + + match manage_fees::(&initiating_origin, callback_weight_used, callback.gas_limit) { + Ok(_) => (), + // Dont return early, we must register the weight used by the callback. + Err(error) => + >::deposit_event(Event::WeightRefundErrored { message_id: *id, error }), + } + Ok(()) +} + +/// Deposits an event indicating the outcome of a callback execution. +/// +/// This function is intended to be called after attempting to dispatch a callback. +/// It emits either a `CallbackExecuted` or `CallbackFailed` event based on the result. +/// +/// # Parameters +/// +/// - `initiating_origin`: The account that originally initiated the message. +/// - `message_id`: The unique identifier associated with the message that triggered the callback. +/// - `callback`: The callback object that was attempted to be executed. +/// - `result`: The outcome of the callback execution, containing either success or failure. +pub(crate) fn deposit_callback_event( + initiating_origin: T::AccountId, + message_id: MessageId, + callback: &Callback>, + result: &DispatchResultWithPostInfo, +) { + match result { + Ok(_) => { + >::deposit_event(Event::::CallbackExecuted { + origin: initiating_origin, + id: message_id, + callback: callback.clone(), + }); + }, + Err(error) => { + >::deposit_event(Event::::CallbackFailed { + origin: initiating_origin, + id: message_id, + callback: callback.clone(), + error: error.clone(), + }); + }, + } +} + +fn get(id: &MessageId) -> Vec { + use Message::*; + Messages::::get(id) + .and_then(|m| match m { + Ismp { .. } | IsmpTimeout { .. } | XcmQuery { .. } | XcmTimeout { .. } => None, + IsmpResponse { response, .. } => Some(response.into_inner()), + XcmResponse { response, .. } => Some(codec::Encode::encode(&response)), + }) + .unwrap_or_default() +} + +fn id() -> u32 { + parachain_info::Pallet::::parachain_id().into() +} + +/// Handles fee management and refund logic for callback execution. +/// +/// This function is intended to balance the fees collected upfront for a callback +/// against the actual weight used during execution. If the callback uses less weight +/// than originally reserved, the surplus is refunded to the user, and the remainder +/// is transferred as an execution reward to the fee collector account. +/// +/// # Parameters +/// +/// - `initiating_origin`: The account that initially paid for the callback execution. +/// - `weight_used`: The actual weight consumed by the callback. +/// - `max_weight`: The maximum weight that was budgeted and paid for in advance. +pub(crate) fn manage_fees( + initiating_origin: &AccountIdOf, + weight_used: Weight, + max_weight: Weight, +) -> DispatchResult { + let weight_to_refund = max_weight.saturating_sub(weight_used); + let total_deposit = T::WeightToFee::weight_to_fee(&max_weight); + let reason = HoldReason::CallbackGas.into(); + + let to_reward = if weight_to_refund.any_gt(Zero::zero()) { + let returnable_deposit = T::WeightToFee::weight_to_fee(&weight_to_refund); + let execution_reward = total_deposit.saturating_sub(returnable_deposit); + + execution_reward + } else { + total_deposit + }; + + // Release the deposit. + T::Fungibles::release(&reason, initiating_origin, total_deposit, Precision::Exact)?; + + // Withdraw assets. + let credit = T::Fungibles::withdraw( + initiating_origin, + to_reward, + Precision::Exact, + Preservation::Preserve, + Fortitude::Polite, + )?; + + // Handle assets. + T::FeeHandler::on_unbalanced(credit); + Ok(()) +} + +fn next_message_id() -> Result { + NextMessageId::::try_mutate(|next| { + let id = *next; + *next = next.checked_add(One::one()).ok_or(ArithmeticError::Overflow)?; + Ok(id) + }) +} + +fn poll_status(id: &MessageId) -> MessageStatus { + >::get(id).map_or(MessageStatus::NotFound, |m| MessageStatus::from(&m)) +} + +/// Determines the actual weight consumed by a callback execution, falling back to the +/// maximum if unknown. +/// +/// This function is used to calculate the weight to be accounted for after attempting to +/// dispatch a callback. It ensures that even if the callback execution fails or does not +/// report actual weight, the worst-case (`max_weight`) is used to avoid under-accounting. +/// +/// # Parameters +/// +/// - `result`: The result of the callback dispatch, including any `PostDispatchInfo` if successful. +/// - `max_weight`: The maximum weight budgeted for the callback execution. +/// +/// # Rationale +/// +/// - Protects against underestimating weight in cases where `actual_weight` is missing or the +/// dispatch fails. +/// - Ensures conservative accounting to avoid exceeding block or message limits. +pub(crate) fn process_callback_weight( + result: &DispatchResultWithPostInfo, + max_weight: Weight, +) -> Weight { + match result { + // callback has succeded. + Ok(post_info) => { + match post_info.actual_weight { + Some(w) => w, + // return the worst case if the callback executor does not populate the + // actual weight. + None => max_weight, + } + }, + // callback has failed. + Err(_) => { + // return the maximum weight. + max_weight + }, + } +} + +/// Remove a batch of completed or timed-out messages. +/// +/// Allows users to clean up storage and reclaim deposits for messages that have concluded. +/// +/// # Parameters +/// - `origin`: The account removing its messages. +/// - `messages`: List of message IDs to remove (bounded by `MaxRemovals`). +fn remove(origin: Origin, messages: &[MessageId]) -> DispatchResult { + for id in >::try_from(messages) + .map_err(|_| >::TooManyMessages)? + { + let Some(message) = Messages::::get(id) else { + return Err(Error::::MessageNotFound.into()); + }; + + let (message_deposit, maybe_callback_deposit) = match message { + Message::Ismp { .. } | Message::XcmQuery { .. } => Err(Error::::RequestPending), + Message::IsmpResponse { origin: initiator, message_deposit, commitment, .. } => { + frame_support::ensure!(origin.address == initiator, BadOrigin); + Messages::::remove(id); + IsmpRequests::::remove(commitment); + Ok((message_deposit, None)) + }, + Message::IsmpTimeout { + origin: initiator, + message_deposit, + commitment, + callback_deposit, + .. + } => { + frame_support::ensure!(origin.address == initiator, BadOrigin); + Messages::::remove(id); + IsmpRequests::::remove(commitment); + Ok((message_deposit, callback_deposit)) + }, + Message::XcmResponse { origin: initiator, message_deposit, query_id, .. } => { + frame_support::ensure!(origin.address == initiator, BadOrigin); + Messages::::remove(id); + XcmQueries::::remove(query_id); + Ok((message_deposit, None)) + }, + Message::XcmTimeout { + origin: initiator, + query_id, + message_deposit, + callback_deposit, + .. + } => { + frame_support::ensure!(origin.address == initiator, BadOrigin); + Messages::::remove(id); + XcmQueries::::remove(query_id); + Ok((message_deposit, callback_deposit)) + }, + }?; + + T::Fungibles::release( + &HoldReason::Messaging.into(), + &origin.account, + message_deposit, + Precision::Exact, + )?; + if let Some(callback_deposit) = maybe_callback_deposit { + T::Fungibles::release( + &HoldReason::CallbackGas.into(), + &origin.account, + callback_deposit, + Precision::Exact, + )?; + } + } + Ok(()) +} + +/// A message callback. +#[derive( + Copy, + Clone, + Debug, + Decode, + DecodeWithMemTracking, + Encode, + Eq, + MaxEncodedLen, + PartialEq, + TypeInfo, +)] +#[scale_info(skip_type_params(Balance))] +pub struct Callback { + /// The contract address to which the callback should be sent. + pub destination: H160, + /// The encoding used for the data going to the contract. + pub encoding: Encoding, + /// The message selector to be used for the callback. + pub selector: [u8; 4], + /// The pre-paid weight used as a gas limit for the callback. + pub gas_limit: Weight, + /// The storage deposit limit for the callback. + pub storage_deposit_limit: Balance, +} + +impl Callback { + /// A new message callback. + /// + /// # Parameters + /// - `destination`: The contract address to which the callback should be sent. + /// - `encoding`: The encoding used for the data going to the contract. + /// - `selector`: The message selector to be used for the callback. + /// - `gas_limit`: The pre-paid weight used as a gas limit for the callback. + /// - `storage_deposit_limit`: The storage deposit limit for the callback. + pub(crate) fn new( + destination: H160, + encoding: Encoding, + selector: [u8; 4], + gas_limit: Weight, + storage_deposit_limit: Balance, + ) -> Self { + Self { destination, encoding, selector, gas_limit, storage_deposit_limit } + } +} + +/// The trait responsible for executing callbacks in response to cross-chain messages. +/// +/// Implementors of this trait define the mechanism by which callback data is executed +/// for a given account, along with the expected weight cost of this operation. +/// +/// This trait enables customizable and extensible behavior for handling asynchronous +/// responses via optional callback logic — e.g., invoking a runtime call or a smart contract. +pub trait CallbackExecutor { + /// Execute the callback logic for a specific account with the given encoded payload. + /// + /// # Parameters + /// - `account`: The account that initiated the original cross-chain request. + /// - `destination`: The contract address to which the callback should be sent. + /// - `data`: Encoded callback data, typically ABI-encoded input including selector and + /// parameters. + /// - `gas_limit`: The gas limit allowed for executing this callback. + /// - `storage_deposit_limit`: The maximum amount of balance that can be charged from the caller + /// to pay for the storage consumed for this callback. + fn execute( + account: &T::AccountId, + destination: H160, + data: Vec, + gas_limit: Weight, + storage_deposit_limit: BalanceOf, + ) -> DispatchResultWithPostInfo; + + /// Returns the baseline weight required for a single callback execution. + /// + /// This serves as an overhead estimate, useful for pallet-level weight calculations. + fn execution_weight() -> Weight; +} + +/// The specificiation of how data must be encoded before being sent to a contract. +#[derive( + Copy, + Clone, + Debug, + Decode, + DecodeWithMemTracking, + Encode, + Eq, + MaxEncodedLen, + PartialEq, + TypeInfo, +)] +pub enum Encoding { + /// SCALE (Simple Concatenated Aggregate Little-Endian) encoding. + Scale, + /// Solidity ABI (Application Binary Interface) encoding, + SolidityAbi, +} + +/// Trait for encoding a response callback. +pub(crate) trait EncodeCallback { + /// Encodes the data using the specified encoding. + /// + /// # Parameters + /// - `encoding`: The encoding to use. + /// - `selector`: The message selector to be used for the callback. + /// - `id`: The originating message identifier. + fn encode(&self, encoding: Encoding, selector: [u8; 4], id: MessageId) -> Vec; +} + +/// Represents a cross-chain message in the system. +/// +/// Each variant of this enum captures a different state or type of message lifecycle: +/// - A request in progress. +/// - A response received. +/// - A timeout occurred. +/// +/// This is used internally to track, manage, and clean up messages, along with any +/// associated deposits and optional callback metadata. +#[derive(Clone, Debug, Encode, Eq, Decode, MaxEncodedLen, PartialEq, TypeInfo)] +#[scale_info(skip_type_params(T))] +pub enum Message { + /// Represents a pending ISMP request. + /// + /// # Fields + /// - `origin`: The origin of the request. + /// - `commitment`: The cryptographic commitment of the request payload. + /// - `callback`: An optional callback to invoke upon receiving a response. + /// - `deposit`: The total deposit held to cover message and callback fees. + Ismp { + origin: Origin, + commitment: H256, + callback: Option>>, + message_deposit: BalanceOf, + }, + + /// Represents a pending XCM query request. + /// + /// # Fields + /// - `origin`: The origin of the request. + /// - `query_id`: Unique identifier for the XCM query. + /// - `callback`: An optional callback for handling the response. + /// - `deposit`: The deposit held to cover fees for query execution and callback. + XcmQuery { + origin: Origin, + query_id: QueryId, + callback: Option>>, + message_deposit: BalanceOf, + }, + + /// Represents a received ISMP response. + /// + /// # Fields + /// - `origin`: The origin of the request. + /// - `commitment`: The original commitment for the request. + /// - `deposit`: The held deposit for the message, which may be released or burned. + /// - `response`: The encoded response payload, size-bounded by `T::MaxResponseLen`. + IsmpResponse { + origin: H160, + commitment: H256, + message_deposit: BalanceOf, + response: BoundedVec, + }, + + /// Represents a received XCM response. + /// + /// # Fields + /// - `origin`: The origin of the request. + /// - `query_id`: Identifier that matches a previously sent XCM query. + /// - `deposit`: The deposit originally held for this message. + /// - `response`: The deserialized response payload. + XcmResponse { + origin: H160, + query_id: QueryId, + message_deposit: BalanceOf, + response: Response, + }, + + /// Represents an ISMP request that timed out before a response was received. + /// + /// # Fields + /// - `origin`: The origin of the request. + /// - `commitment`: The original commitment of the request. + /// - `deposit`: The deposit held for the request, which may be reclaimed. + IsmpTimeout { + origin: H160, + commitment: H256, + message_deposit: BalanceOf, + callback_deposit: Option>, + }, + + /// Represents an XCM query that timed out before a response was received. + /// + /// # Fields + /// - `origin`: The origin of the request. + /// - `query_id`: The original query ID that timed out. + /// - `deposit`: The deposit held for the query, which may be reclaimed. + XcmTimeout { + origin: H160, + query_id: QueryId, + message_deposit: BalanceOf, + callback_deposit: Option>, + }, +} + +impl Message { + #[cfg(test)] + fn ismp( + origin: Origin, + commitment: H256, + callback: Option>>, + message_deposit: BalanceOf, + ) -> Self { + Self::Ismp { origin, commitment, callback, message_deposit } + } + + #[cfg(any(test, feature = "runtime-benchmarks"))] + fn ismp_response( + origin: H160, + commitment: H256, + message_deposit: BalanceOf, + response: BoundedVec, + ) -> Self { + Self::IsmpResponse { origin, commitment, message_deposit, response } + } + + #[cfg(any(test, feature = "runtime-benchmarks"))] + fn ismp_timeout( + origin: H160, + commitment: H256, + message_deposit: BalanceOf, + callback_deposit: Option>, + ) -> Self { + Self::IsmpTimeout { origin, commitment, message_deposit, callback_deposit } + } + + #[cfg(test)] + fn xcm_query( + origin: Origin, + query_id: QueryId, + callback: Option>>, + message_deposit: BalanceOf, + ) -> Self { + Self::XcmQuery { origin, query_id, callback, message_deposit } + } + + #[cfg(test)] + fn xcm_response( + origin: H160, + query_id: QueryId, + message_deposit: BalanceOf, + response: Response, + ) -> Self { + Self::XcmResponse { origin, query_id, message_deposit, response } + } + + #[cfg(test)] + fn xcm_timeout( + origin: H160, + query_id: QueryId, + message_deposit: BalanceOf, + callback_deposit: Option>, + ) -> Self { + Self::XcmTimeout { origin, query_id, message_deposit, callback_deposit } + } +} + +/// The related message status of a Message. +#[derive(Clone, Debug, Encode, Eq, Decode, MaxEncodedLen, PartialEq, TypeInfo)] +pub enum MessageStatus { + NotFound, + Pending, + Complete, + Timeout, +} + +impl From<&Message> for MessageStatus { + fn from(value: &Message) -> Self { + match *value { + Message::Ismp { .. } => MessageStatus::Pending, + Message::XcmQuery { .. } => MessageStatus::Pending, + Message::IsmpResponse { .. } => MessageStatus::Complete, + Message::XcmResponse { .. } => MessageStatus::Complete, + Message::IsmpTimeout { .. } => MessageStatus::Timeout, + Message::XcmTimeout { .. } => MessageStatus::Timeout, + } + } +} diff --git a/pallets/api-vnext/src/messaging/README.md b/pallets/api-vnext/src/messaging/README.md new file mode 100644 index 000000000..1040989f1 --- /dev/null +++ b/pallets/api-vnext/src/messaging/README.md @@ -0,0 +1,55 @@ +# Messaging API + +The messaging API offers a streamlined interface for cross-chain interactions. The goal is to provide a simplified API that unlocks the power of Polkadot for contracts. + +## ISMP +The following diagram illustrates the flow of the ISMP implementation: + +```mermaid +flowchart TB + A["Contract"] -- Ismp::get/post --> B["messaging::ISMP Precompile"] + B -- transports::ismp::get/post --> n4["Take Deposit"] + n1["runtime::Router"] -- ISMPModule::on_response --> n2["messaging::ISMP Module"] + n2 --> n3["Callback?"] + D["Relayer"] -- "pallet-ismp::handle(messages)" --> n1 + n3 -- "onGetResponse/onPostReponse" --> A + C["pallet-ismp::ISMP Dispatcher"] -.- D + n4 -- IsmpDispatcher::dispatch_request --> C + C --> n5["Persist Request/Message"] + + n4@{ shape: rounded} + n1@{ shape: rect} + n2@{ shape: rect} + n3@{ shape: diam} + D@{ shape: hex} + n5@{ shape: rounded} +``` + +## XCM +The following diagram illustrates the flow of the XCM implementation: + +```mermaid +flowchart TB + A["Contract"] -- Xcm::newQuery --> B["messaging::XCM Precompile"] + B -- transports::xcm::new_query --> n4["Take Deposit"] + n1["xcm_executor"] -- Pallet::xcm_response --> n2["messaging::Pallet"] + n2 --> n3["Callback?"] + D["XCM"] --
--> n1 + n3 -- onQueryResponse --> A + C["pallet-xcm"] -.- D + n4 -- Xcm::new_notify_query --> C + C --> n5["Persist Request/Message"] + A -- Xcm::send --> B + B -- Pallet::send --> C + + n4@{ shape: rounded} + n1@{ shape: rect} + n2@{ shape: rect} + n3@{ shape: diam} + D@{ shape: hex} + n5@{ shape: rounded} +``` + +## Weights + +A description on how fees, blockspace and weights are handled can be found [here](weights.md). diff --git a/pallets/api-vnext/src/messaging/benchmarking.rs b/pallets/api-vnext/src/messaging/benchmarking.rs new file mode 100644 index 000000000..225509207 --- /dev/null +++ b/pallets/api-vnext/src/messaging/benchmarking.rs @@ -0,0 +1,598 @@ +//! Benchmarking setup for pallet_api::messaging + +use alloc::{vec, vec::Vec}; +use core::u64; + +use ::ismp::{ + dispatcher::{DispatchGet, DispatchPost}, + host::StateMachine, + module::IsmpModule, + router::{ + GetRequest, GetResponse, PostRequest, PostResponse, Request, Response, StorageValue, + Timeout, + }, +}; +use ::xcm::latest::{Junctions, Location, Response::ExecutionResult}; +use codec::Encode; +use frame_benchmarking::v2::*; +use frame_support::{ + assert_ok, + pallet_prelude::{DispatchError, IsType, Weight}, + traits::{ + fungible::{Inspect, Mutate, MutateHold}, + EnsureOrigin, Get, Time, + }, +}; +use pallet_revive::{ + precompiles::{ + alloy::primitives as alloy, + run::{H256, U256}, + }, + test_utils::ALICE_ADDR, + Origin::Signed, +}; +use sp_io::hashing::blake2_256; +use sp_runtime::traits::Bounded; + +use super::{ + call_precompile, + precompiles::{ + ismp::v0::{self as ismp, IISMPCalls, IISMP}, + v0::{IMessaging, IMessagingCalls}, + xcm::v0::{self as xcm, BlockNumberOf, IXCMCalls, IXCM}, + }, + set_up_call, + transports::{ + ismp::{get, post, Module, ID}, + xcm::new_query, + }, + Call, Callback, Config, Encoding, Event, HoldReason, IsmpRequests, Message, MessageId, + Messages, Origin, Pallet, +}; +#[cfg(test)] +use crate::mock::{ExtBuilder, Test}; +use crate::{messaging::BalanceOf, TryConvert}; + +type Balances = ::Fungibles; +type HostStateMachine = ::HostStateMachine; +type Ismp = super::precompiles::ismp::v0::Ismp<4, T>; +type Messaging = super::precompiles::v0::Messaging<3, T>; +type Xcm = super::precompiles::xcm::v0::Xcm<5, T>; + +#[benchmarks( + where + // Precompiles + T: pallet_revive::Config< + Currency: Inspect<::AccountId, Balance: Into + TryFrom + TryFrom>, + Hash: IsType, + Time: Time> + >, + // Messaging + T: Config>>, + alloy::U256: TryConvert<<::Fungibles as Inspect>::Balance, Error = DispatchError>, + T: pallet_ismp::Config + pallet_xcm::Config + parachain_info::Config, + u32: From>, + // Timestamp + T: pallet_timestamp::Config +)] +mod benchmarks { + use super::*; + + #[benchmark] + fn block_number() { + let mut call_setup = set_up_call(); + let mut ext = call_setup.ext().0; + let input = IXCMCalls::blockNumber(IXCM::blockNumberCall {}); + + #[block] + { + assert_ok!(call_precompile::, _, u32>(&mut ext, &Xcm::::address(), &input)); + } + } + + #[benchmark] + fn get_response() { + let origin = Origin::::from_address(ALICE_ADDR); + let message = 1; + + Messages::::insert( + message, + Message::ismp_response( + origin.address, + [255; 32].into(), + BalanceOf::::max_value(), + vec![255; T::MaxResponseLen::get() as usize].try_into().unwrap(), + ), + ); + + let mut call_setup = set_up_call(); + call_setup.set_origin(Signed(origin.account)); + let mut ext = call_setup.ext().0; + let input = IMessagingCalls::getResponse(IMessaging::getResponseCall { message }); + + #[block] + { + assert_ok!(call_precompile::, _, u32>( + &mut ext, + &Messaging::::address(), + &input + )); + } + } + + #[benchmark] + fn id() { + let mut call_setup = set_up_call(); + let mut ext = call_setup.ext().0; + let input = IMessagingCalls::id(IMessaging::idCall {}); + + #[block] + { + assert_ok!(call_precompile::, _, u32>( + &mut ext, + &Messaging::::address(), + &input + )); + } + } + + /// Sends a `Get` request using ISMP with varying context and key sizes. + /// + /// # Parameters + /// - `y`: `Linear<0, { T::MaxContextLen::get() }>` Length of the context field (in bytes). + /// - `z`: `Linear<0, { T::MaxKeys::get() }>` Number of keys in the outer keys array. + /// - `a`: `Linear<0, 1>` Whether a callback is attached: + /// - `0`: No callback + /// - `1`: Callback attached + // IMPORTANT NOTE: `skip_meta` and `pov_mode = Measured` currently used due to an issue with the + // usage of the `RequestCommitments` storage item within `pallet_ismp`'s child trie, which + // results in massive proof size values resulting from complexity parameters, preventing + // compilation of the resulting weights. Reducing max limits on pallet config also avoids the + // issue, but results in values which are too small to be useful. See `pallet-contracts` and + // `pallet-revive` benchmarks for similar usage with contract child tries. + #[benchmark(skip_meta, pov_mode = Measured)] + fn ismp_get( + x: Linear<0, { T::MaxContextLen::get() }>, + y: Linear<0, { T::MaxKeys::get() }>, + a: Linear<0, 1>, + ) -> Result<(), BenchmarkError> { + let origin = Origin::::from_address(ALICE_ADDR); + let request = ismp::Get { + destination: u32::MAX, + height: u64::MAX, + timeout: u64::MAX, + context: vec![255; x as usize].into(), + keys: vec![vec![255u8; T::MaxKeyLen::get() as usize].into(); y as usize].into(), + }; + let fee = >::minimum_balance() + .try_convert() + .map_err(|_| BenchmarkError::Stop("failed to convert minimum balance to fee"))?; + + silence_timestamp_genesis_warnings::(); + >::set_balance(&origin.account, >::total_issuance() / 2u32.into()); + + let mut call_setup = set_up_call(); + call_setup.set_origin(Signed(origin.account)); + let mut ext = call_setup.ext().0; + let input = if x == 0 { + IISMPCalls::get_0(IISMP::get_0Call { request, fee }) + } else { + let callback = ismp::Callback { + destination: [255; 20].into(), + encoding: ismp::Encoding::SolidityAbi, + selector: [255; 4].into(), + gasLimit: ismp::Weight { refTime: 100_000, proofSize: 100_000 }, + storageDepositLimit: alloy::U256::from(100_000), + }; + IISMPCalls::get_1(IISMP::get_1Call { request, fee, callback }) + }; + + #[block] + { + assert_ok!(call_precompile::, _, ()>(&mut ext, &Ismp::::address(), &input)); + } + + Ok(()) + } + + /// Handles acceptance of an ISMP POST. + #[benchmark] + fn ismp_on_accept() { + let module = Module::::new(); + let request = PostRequest { + source: StateMachine::Polkadot(u32::MAX), + dest: StateMachine::Polkadot(u32::MAX), + nonce: u64::MAX, + from: [255u8; 32].to_vec(), + to: [255u8; 32].to_vec(), + timeout_timestamp: u64::MAX, + body: vec![255u8; T::MaxDataLen::get() as usize], + }; + + silence_timestamp_genesis_warnings::(); + + #[block] + { + module.on_accept(request).unwrap() + } + } + + /// Handles a response to a previously submitted ISMP request. + /// + /// # Parameters + /// - `x`: `Linear<0, 1>` The type of ISMP response: + /// - `0`: `GetResponse` + /// - `1`: `PostResponse` + #[benchmark] + fn ismp_on_response(x: Linear<0, 1>) { + let origin = Origin::::from_address(ALICE_ADDR); + let fee = >::minimum_balance(); + let callback = Callback::new( + [255; 20].into(), + Encoding::Scale, + [255; 4], + Weight::from_parts(100_000, 100_000), + 100_000u32.into(), + ); + let module = Module::::new(); + + silence_timestamp_genesis_warnings::(); + >::set_balance(&origin.account, u32::MAX.into()); + + let (message_id, commitment, response) = + ismp_request::(x, origin.clone(), fee, callback); + + #[block] + { + module.on_response(response).unwrap() + } + + let event = match x { + 0 => + Event::IsmpGetResponseReceived { dest: origin.address, id: message_id, commitment }, + _ => + Event::IsmpPostResponseReceived { dest: origin.address, id: message_id, commitment }, + }; + assert_has_event::(event.into()) + } + + /// Handles timeout of a pending ISMP request or response. + /// + /// # Parameters + /// - `x`: `Linear<0, 2>` Type of item that timed out: + /// - `0`: `GetRequest` + /// - `1`: `PostRequest` + /// - `2`: `PostResponse` + #[benchmark] + fn ismp_on_timeout(x: Linear<0, 2>) -> Result<(), BenchmarkError> { + let origin = Origin::::from_address(ALICE_ADDR); + let fee = >::minimum_balance(); + let callback = Callback::new( + [255; 20].into(), + Encoding::Scale, + [255; 4], + Weight::from_parts(100_000, 100_000), + 100_000u32.into(), + ); + let module = Module::::new(); + + silence_timestamp_genesis_warnings::(); + >::set_balance(&origin.account, u32::MAX.into()); + + let (_, commitment, response) = ismp_request::(x, origin, fee, callback); + let timeout = match x { + 0 => { + let Response::Get(response) = response else { + return Err(BenchmarkError::Stop("unexpected response")); + }; + Timeout::Request(Request::Get(response.get)) + }, + _ => { + let Response::Post(response) = response else { + return Err(BenchmarkError::Stop("unexpected response")); + }; + match x { + 1 => Timeout::Request(Request::Post(response.post)), + _ => Timeout::Response(response), + } + }, + }; + + #[block] + { + module.on_timeout(timeout).unwrap() + } + + assert_has_event::(Event::::IsmpTimedOut { commitment }.into()); + Ok(()) + } + + /// Sends a `Post` request using ISMP with a variable-sized data payload. + /// + /// # Parameters + /// - `t`: `Linear<0, { T::MaxRecipientLen::get() }>` Length of the `to` field (in bytes). + /// - `x`: `Linear<0, { T::MaxDataLen::get() }>` Length of the `data` field (in bytes). + /// - `y`: `Linear<0, 1>` Whether a callback is attached: + /// - `0`: No callback + /// - `1`: Callback attached + // IMPORTANT NOTE: `skip_meta` and `pov_mode = Measured` currently used due to an issue with the + // usage of the `RequestCommitments` storage item within `pallet_ismp`'s child trie, which + // results in massive proof size values resulting from complexity parameters, preventing + // compilation of the resulting weights. Reducing max limits on pallet config also avoids the + // issue, but results in values which are too small to be useful. See `pallet-contracts` and + // `pallet-revive` benchmarks for similar usage with contract child tries. + #[benchmark(skip_meta, pov_mode = Measured)] + fn ismp_post( + t: Linear<0, { T::MaxRecipientLen::get() }>, + x: Linear<0, { T::MaxDataLen::get() }>, + y: Linear<0, 1>, + ) -> Result<(), BenchmarkError> { + let origin = Origin::::from_address(ALICE_ADDR); + let request = ismp::Post { + destination: u32::MAX, + to: vec![255; t as usize].into(), + timeout: u64::MAX, + data: vec![255; x as usize].into(), + }; + let fee = >::minimum_balance() + .try_convert() + .map_err(|_| BenchmarkError::Stop("failed to convert minimum balance to fee"))?; + + silence_timestamp_genesis_warnings::(); + >::set_balance(&origin.account, >::total_issuance() / 2u32.into()); + + let mut call_setup = set_up_call(); + call_setup.set_origin(Signed(origin.account)); + let mut ext = call_setup.ext().0; + let input = if y == 0 { + IISMPCalls::post_0(IISMP::post_0Call { request, fee }) + } else { + let callback = ismp::Callback { + destination: [255; 20].into(), + encoding: ismp::Encoding::SolidityAbi, + selector: [255; 4].into(), + gasLimit: ismp::Weight { refTime: 100_000, proofSize: 100_000 }, + storageDepositLimit: alloy::U256::from(100_000), + }; + IISMPCalls::post_1(IISMP::post_1Call { request, fee, callback }) + }; + + #[block] + { + assert_ok!(call_precompile::, _, ()>(&mut ext, &Ismp::::address(), &input)); + } + + Ok(()) + } + + #[benchmark] + fn poll_status() { + let origin = Origin::::from_address(ALICE_ADDR); + let message = 1; + + Messages::::insert( + message, + Message::ismp_response( + origin.address, + [255; 32].into(), + BalanceOf::::max_value(), + vec![255; T::MaxResponseLen::get() as usize].try_into().unwrap(), + ), + ); + + let mut call_setup = set_up_call(); + call_setup.set_origin(Signed(origin.account)); + let mut ext = call_setup.ext().0; + let input = IMessagingCalls::pollStatus(IMessaging::pollStatusCall { message }); + + #[block] + { + assert_ok!(call_precompile::, _, u32>( + &mut ext, + &Messaging::::address(), + &input + )); + } + } + + /// # Parameters + /// - `x`: `Linear<1, { T::MaxRemovals::get() }>` The number of message removals to perform + /// (bounded by `MaxRemovals`). + #[benchmark] + fn remove(x: Linear<1, { T::MaxRemovals::get() }>) { + let message_deposit = 50_000u32.into(); + let callback_deposit = 100_000u32.into(); + let origin = Origin::::from_address(ALICE_ADDR); + let messages: Vec = (0..x as MessageId).collect(); + + let mut call_setup = set_up_call(); + call_setup.set_origin(Signed(origin.account.clone())); + let mut ext = call_setup.ext().0; + + >::set_balance(&origin.account, u32::MAX.into()); + for i in &messages { + assert_ok!(T::Fungibles::hold( + &HoldReason::Messaging.into(), + &origin.account, + message_deposit + )); + assert_ok!(T::Fungibles::hold( + &HoldReason::CallbackGas.into(), + &origin.account, + callback_deposit + )); + + let commitment = H256::from(blake2_256(&(i.to_le_bytes()))); + + // Timeout messages release callback deposit hence, are most expensive case for now. + let good_message = Message::ismp_timeout( + origin.address, + commitment.clone(), + message_deposit, + Some(callback_deposit), + ); + + Messages::::insert(&i, &good_message); + IsmpRequests::::insert(&commitment, i); + } + + let input = + IMessagingCalls::remove_1(IMessaging::remove_1Call { messages: messages.into() }); + + #[block] + { + assert_ok!(call_precompile::, _, ()>( + &mut ext, + &Messaging::::address(), + &input + )); + } + } + + /// Submits a new XCM query message with an optional callback. + /// + /// # Parameters + /// - `x`: `Linear<0, 1>` Whether a callback is supplied: + /// - `0`: No callback + /// - `1`: Callback attached + #[benchmark] + fn xcm_new_query(x: Linear<0, 1>) { + let origin = Origin::::from_address(ALICE_ADDR); + let responder = Location { parents: 1, interior: Junctions::Here }.encode().into(); + let timeout = u32::from(frame_system::Pallet::::block_number()) + 1_000; + + >::set_balance(&origin.account, u32::MAX.into()); + + let mut call_setup = set_up_call(); + call_setup.set_origin(Signed(origin.account)); + let mut ext = call_setup.ext().0; + let input = if x == 0 { + IXCMCalls::newQuery_0(IXCM::newQuery_0Call { responder, timeout }) + } else { + let callback = xcm::Callback { + destination: [255; 20].into(), + encoding: xcm::Encoding::SolidityAbi, + selector: [0; 4].into(), + gasLimit: xcm::Weight { refTime: 100, proofSize: 100 }, + storageDepositLimit: alloy::U256::from(100), + }; + IXCMCalls::newQuery_1(IXCM::newQuery_1Call { responder, timeout, callback }) + }; + + #[block] + { + assert_ok!(call_precompile::, _, ()>(&mut ext, &Xcm::::address(), &input)); + } + } + + /// Handles a response from an XCM query and executes a callback if present. + /// + /// No benchmark input parameters. A mock response is created and processed. + #[benchmark] + fn xcm_response() { + let origin = Origin::::from_address(ALICE_ADDR); + let responder = Location { parents: 1, interior: Junctions::Here }; + let timeout = frame_system::Pallet::::block_number() + 1u8.into(); + let callback = Some(Callback { + destination: [255; 20].into(), + encoding: Encoding::Scale, + selector: [0; 4], + gas_limit: Weight::from_parts(100, 100), + storage_deposit_limit: 100u8.into(), + }); + let response_origin = T::XcmResponseOrigin::try_successful_origin().unwrap(); + let response = ExecutionResult(None); + + >::set_balance(&origin.account, u32::MAX.into()); + + let (message_id, query_id) = + new_query::(origin.clone(), responder, timeout, callback).unwrap(); + + #[extrinsic_call] + Pallet::::xcm_response(response_origin, query_id, response.clone()); + + assert_has_event::( + Event::XcmResponseReceived { dest: origin.address, id: message_id, query_id, response } + .into(), + ); + } + + impl_benchmark_test_suite!(Pallet, ExtBuilder::new().build(), Test); +} + +// See if `generic_event` has been emitted. +fn assert_has_event(generic_event: ::RuntimeEvent) { + frame_system::Pallet::::assert_has_event(generic_event.into()); +} + +fn ismp_request( + x: u32, + origin: Origin, + fee: BalanceOf, + callback: Callback>, +) -> (MessageId, H256, Response) { + if x == 0 { + // get response + let request = DispatchGet { + dest: StateMachine::Polkadot(u32::MAX), + from: ID.to_vec(), + keys: vec![vec![255u8; T::MaxKeyLen::get() as usize]; T::MaxKeys::get() as usize], + height: u64::MAX, + context: vec![255u8; T::MaxContextLen::get() as usize], + timeout: u64::MAX, + }; + + let value = StorageValue { key: vec![255u8; 1], value: Some(vec![255u8; 1]) }; + let response = GetResponse { + get: GetRequest { + source: HostStateMachine::::get(), + dest: request.dest, + nonce: 0, + from: request.from.clone(), + keys: request.keys.clone(), + height: request.height, + context: request.context.clone(), + timeout_timestamp: request.timeout, + }, + values: (0..(T::MaxResponseLen::get() as usize / value.encoded_size()) + .saturating_sub(1)) + .map(|_| value.clone()) + .collect::>(), + }; + + let (id, commitment) = get::(origin, request, fee, Some(callback)).unwrap(); + (id, commitment, Response::Get(response)) + } else { + // post response + let request = DispatchPost { + dest: StateMachine::Polkadot(u32::MAX), + from: ID.to_vec(), + to: ID.to_vec(), + timeout: u64::MAX, + body: vec![255u8; T::MaxDataLen::get() as usize], + }; + + let response = PostResponse { + post: PostRequest { + source: HostStateMachine::::get(), + dest: request.dest, + nonce: 0, + from: request.from.clone(), + to: request.to.clone(), + timeout_timestamp: request.timeout, + body: request.body.clone(), + }, + response: vec![255u8; T::MaxResponseLen::get() as usize - 2], + timeout_timestamp: request.timeout, + }; + + let (id, commitment) = post::(origin, request, fee, Some(callback)).unwrap(); + (id, commitment, Response::Post(response)) + } +} + +// Silence ``pallet_timestamp::UnixTime::now` is called at genesis, invalid value returned: 0` +// warnings +fn silence_timestamp_genesis_warnings() { + pallet_timestamp::Pallet::::set_timestamp(1u32.into()); +} diff --git a/pallets/api-vnext/src/messaging/deposits.rs b/pallets/api-vnext/src/messaging/deposits.rs new file mode 100644 index 000000000..cb905e043 --- /dev/null +++ b/pallets/api-vnext/src/messaging/deposits.rs @@ -0,0 +1,70 @@ +use super::*; + +#[derive(Clone, Debug, Encode, Eq, Decode, MaxEncodedLen, PartialEq, TypeInfo)] +pub enum ProtocolStorageDeposit { + XcmQueries, + IsmpRequests, +} + +/// Calculate the deposit required for the space used for a specific protocol. +pub fn calculate_protocol_deposit>>( + p: ProtocolStorageDeposit, +) -> BalanceOf { + let base: usize = match p { + ProtocolStorageDeposit::XcmQueries => (KeyLenOf::>::get() as usize) + .saturating_add(AccountIdOf::::max_encoded_len()) + .saturating_add(MessageId::max_encoded_len()) + .saturating_add(Option::>>::max_encoded_len()), + + ProtocolStorageDeposit::IsmpRequests => (KeyLenOf::>::get() as usize) + .saturating_add(AccountIdOf::::max_encoded_len()) + .saturating_add(MessageId::max_encoded_len()), + }; + ByteFee::get().saturating_mul(base.saturated_into()) +} + +/// Calculate the deposit for the storage used for the Message enum. +pub fn calculate_message_deposit>>() -> BalanceOf { + ByteFee::get().saturating_mul( + (KeyLenOf::>::get() as usize + Message::::max_encoded_len()) + .saturated_into(), + ) +} + +/// Blanket implementation of generating the deposit for a type that implements MaxEncodedLen. +pub fn calculate_deposit_of>, U: MaxEncodedLen>( +) -> BalanceOf { + ByteFee::get().saturating_mul(U::max_encoded_len().saturated_into()) +} + +#[cfg(test)] +mod tests { + use frame_support::pallet_prelude::Get; + + use super::*; + use crate::mock::*; + + struct Two; + impl Get for Two { + fn get() -> u128 { + 2 + } + } + + #[test] + fn calculate_deposit_of_works() { + ExtBuilder::new().build().execute_with(|| { + // 4 + 4 bytes. + #[derive( + Copy, Clone, Debug, Encode, Eq, Decode, MaxEncodedLen, PartialEq, TypeInfo, + )] + struct Data { + pub a: u32, + pub b: u32, + } + + // 8 * 2 = 16 units + assert_eq!(calculate_deposit_of::(), 16); + }) + } +} diff --git a/pallets/api-vnext/src/messaging/precompiles.rs b/pallets/api-vnext/src/messaging/precompiles.rs new file mode 100644 index 000000000..b6f2bbd4a --- /dev/null +++ b/pallets/api-vnext/src/messaging/precompiles.rs @@ -0,0 +1,19 @@ +use alloc::vec; + +use frame_support::{pallet_prelude as frame, sp_runtime::ModuleError, traits::PalletInfo}; +pub(super) use pallet_revive::precompiles::{ + alloy::{primitives::U256, sol_types::SolCall}, + AddressMatcher::Fixed, + Error, RuntimeCosts, +}; + +use super::*; + +/// APIs for cross-chain messaging using the Interoperable State Machine Protocol (ISMP).. +pub mod ismp; +/// APIs for cross-chain messaging using Polkadot's Cross-Consensus Messaging (XCM). +pub mod xcm; + +/// The first version of the Messaging API. +#[allow(ambiguous_associated_items)] +pub mod v0; diff --git a/pallets/api-vnext/src/messaging/precompiles/interfaces/v0/IISMP.sol b/pallets/api-vnext/src/messaging/precompiles/interfaces/v0/IISMP.sol new file mode 100644 index 000000000..f629e74bd --- /dev/null +++ b/pallets/api-vnext/src/messaging/precompiles/interfaces/v0/IISMP.sol @@ -0,0 +1,387 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.30; + +/** + * @title The ISMP precompile offers a streamlined interface for messaging using the Interoperable State Machine Protocol. + */ +interface IISMP { + /** + * @notice Submit a new ISMP `Get` request. + * @dev Sends a `Get` request through ISMP. + * @param request The ISMP `Get` message containing query details. + * @param fee The fee to be paid to relayers. + * @return id A unique message identifier. + */ + function get( + Get calldata request, + uint256 fee + ) external returns (uint64 id); + + /** + * @notice Submit a new ISMP `Get` request. + * @dev Sends a `Get` request through ISMP with a callback to handle the response. + * @param fee The fee to be paid to relayers. + * @param callback The callback to execute upon receiving a response. + * @return id A unique message identifier. + */ + function get( + Get calldata request, + uint256 fee, + Callback calldata callback + ) external returns (uint64 id); + + /** + * @notice Returns the response to a message (if any). + * @dev A non-existent message identifier will return an empty response, which could also be a valid response depending on the source message. + * @param message The message identifier. + * @return response The response to a message. + */ + function getResponse(uint64 message) external returns (bytes memory response); + + /** + * @notice The identifier of this chain. + * @return id The identifier of this chain. + */ + function id() external returns (uint32 id); + + /** + * @notice Polls the status of a message. + * @param message The message identifier to poll. + * @return status The status of the message. + */ + function pollStatus(uint64 message) external returns (MessageStatus status); + + /** + * @notice Submit a new ISMP `Post` request. + * @dev Sends a `Post` message through ISMP with arbitrary data. + * @param request The ISMP `Post` message containing the payload. + * @param fee The fee to be paid to relayers. + * @return id A unique message identifier. + */ + function post( + Post calldata request, + uint256 fee + ) external returns (uint64 id); + + /** + * @notice Submit a new ISMP `Post` request. + * @dev Sends a `Post` message through ISMP with arbitrary data and a callback. + * @param request The ISMP `Post` message containing the payload. + * @param fee The fee to be paid to relayers. + * @param callback The callback to execute upon receiving a response. + * @return id A unique message identifier. + */ + function post( + Post calldata request, + uint256 fee, + Callback calldata callback + ) external returns (uint64 id); + + /** + * @notice Remove a completed or timed-out message. + * @dev Allows users to clean up storage and reclaim deposits for messages that have concluded. + * @param message The message identifier to remove. + */ + function remove(uint64 message) external; + + /** + * @notice Remove a batch of completed or timed-out messages. + * @dev Allows users to clean up storage and reclaim deposits for messages that have concluded. + * @param messages A set of message identifiers to remove (bounded by `MaxRemovals`). + */ + function remove(uint64[] calldata messages) external; + + /// @notice A GET request, intended to be used for sending outgoing requests + struct Get { + /// @custom:property The destination state machine of this request. + uint32 destination; + /// @custom:property Height at which to read the state machine. + uint64 height; + /// @custom:property Relative from the current timestamp at which this request expires in seconds. + uint64 timeout; + /// @custom:property Some application-specific metadata relating to this request. + bytes context; + /// @custom:property Raw Storage keys that would be used to fetch the values from the counterparty. + bytes[] keys; + } + + /// @notice A POST request, intended to be used for sending outgoing requests. + struct Post { + /// @custom:property The destination state machine of this request. + uint32 destination; + /// @custom:property The receiving module identifier/contract address on the destination chain. + bytes to; + /// @custom:property Relative from the current timestamp at which this request expires in seconds. + uint64 timeout; + /// @custom:property Encoded request data. + bytes data; + } + + /// @notice A verified storage value. + struct StorageValue{ + /// @custom:property The request storage key. + bytes key; + /// @custom:property The verified value. + Value value; + } + + /// @notice A verified storage value. + struct Value { + /// @custom:property Whether a value exists. + bool exists; + /// @custom:property The verified value. + bytes value; + } + + /** + * @notice A GET has been dispatched via ISMP. + * @param origin The origin of the request. + * @param id The identifier of the message. + * @param commitment The ISMP request commitment. + */ + event GetDispatched(address origin, uint64 id, bytes32 commitment); + + /** + * @notice A GET has been dispatched via ISMP. + * @param origin The origin of the request. + * @param id The identifier of the message. + * @param commitment The ISMP request commitment. + * @param callback The callback to be used to return the response. + */ + event GetDispatched(address origin, uint64 id, bytes32 commitment, Callback callback); + + /** + * @notice A POST has been dispatched via ISMP. + * @param origin The origin of the request. + * @param id The identifier of the message. + * @param commitment The ISMP request commitment. + */ + event PostDispatched(address origin, uint64 id, bytes32 commitment); + + /** + * @notice A POST has been dispatched via ISMP. + * @param origin The origin of the request. + * @param id The identifier of the message. + * @param commitment The ISMP request commitment. + * @param callback The callback to be used to return the response. + */ + event PostDispatched(address origin, uint64 id, bytes32 commitment, Callback callback); + + /// @dev The context exceeds the maximum allowed size. + error MaxContextExceeded(); + /// @dev The data exceeds the maximum allowed size. + error MaxDataExceeded(); + /// @dev A key exceeds the maximum allowed size. + error MaxKeyExceeded(); + /// @dev The number of keys exceeds the maximum allowed size. + error MaxKeysExceeded(); + /// @dev The length of the receiving module identifier/address exceeds the maximum allowed size. + error MaxRecipientExceeded(); +} + +/** + * @title A callback for handling responses to ISMP `Get` requests. + */ +interface IGetResponse { + /** + * @notice Handles a response to an ISMP `Get` request. + * @param id The identifier of the originating message. + * @param response The values derived from the state proof. + */ + function onGetResponse(uint64 id, IISMP.StorageValue[] memory response) external; +} + +/** + * @title A callback for handling responses to ISMP `Post` requests. + */ +interface IPostResponse { + /** + * @notice Handles a response to an ISMP `Post` request. + * @param id The identifier of the originating message. + * @param response The response message. + */ + function onPostResponse(uint64 id, bytes memory response) external; +} + +/// @notice A message callback. +struct Callback { + /// @custom:property The contract address to which the callback should be sent. + address destination; + /// @custom:property The encoding used for the data going to the contract. + Encoding encoding; + /// @custom:property The message selector to be used for the callback. + bytes4 selector; + /// @custom:property The pre-paid weight used as a gas limit for the callback. + Weight gasLimit; + /// @custom:property The storage deposit limit for the callback. + uint256 storageDepositLimit; +} + +/** + * @notice The specificiation of how data must be encoded before being sent to a contract. + */ +enum Encoding { + Scale, + SolidityAbi +} + +/** + * @notice The status of a message. + */ +enum MessageStatus { + NotFound, + Pending, + Complete, + Timeout +} + +/** + * @notice One or more messages have been removed for the account. + * @param account The origin of the messages. + * @param messages The messages which were removed. + */ +event Removed(address account, uint64[] messages); + +/// @notice The weight of/for a transaction. +struct Weight { + /// @custom:property The weight of computational time used based on some reference hardware. + uint64 refTime; + /// @custom:property The weight of storage space used by proof of validity. + uint64 proofSize; +} + +/// @dev The specified encoding is invalid. +error InvalidEncoding(); +/// @dev The message was not found. +error MessageNotFound(); +/// @dev The request is pending. +error RequestPending(); +/// @dev The number of messages exceeds the limit. +error TooManyMessages(); + +/// @notice An arithmetic error. +error Arithmetic(ArithmeticError); +/// @title Arithmetic errors. +enum ArithmeticError { + /// @notice Underflow. + Underflow, + /// @notice Overflow. + Overflow, + /// @notice Division by zero. + DivisionByZero +} + +/// @notice Reason why a dispatch call failed. +error Dispatch(DispatchError); +/// @title Reason why a dispatch call failed. +enum DispatchError { + /// @notice Some error occurred. + Other, + /// @notice Failed to lookup some data. + CannotLookup, + /// @notice A bad origin. + BadOrigin, + /// @notice A custom error in a module. + Module, + /// @notice At least one consumer is remaining so the account cannot be destroyed. + ConsumerRemaining, + /// @notice There are no providers so the account cannot be created. + NoProviders, + /// @notice There are too many consumers so the account cannot be created. + TooManyConsumers, + /// @notice An error to do with tokens. + Token, + /// @notice An arithmetic error. + Arithmetic, + /// @notice The number of transactional layers has been reached, or we are not in a + /// transactional layer. + Transactional, + /// @notice Resources exhausted, e.g. attempt to read/write data which is too large to manipulate. + Exhausted, + /// @notice The state is corrupt; this is generally not going to fix itself. + Corruption, + /// @notice Some resource (e.g. a preimage) is unavailable right now. This might fix itself later. + Unavailable, + /// @notice Root origin is not allowed. + RootNotAllowed, + /// @notice An error with tries. + Trie +} + +/** + * @notice Reason why a pallet call failed. + * @param index Module index, matching the metadata module index. + * @param error Module specific error value. + */ +error Module(uint8 index, bytes4 error); + +/// @notice An error to do with tokens. +error Token(TokenError); +/// @title Description of what went wrong when trying to complete an operation on a token. +enum TokenError { + /// @notice Funds are unavailable. + FundsUnavailable, + /// @notice Some part of the balance gives the only provider reference to the account and thus cannot be (re)moved. + OnlyProvider, + /// @notice Account cannot exist with the funds that would be given. + BelowMinimum, + /// @notice Account cannot be created. + CannotCreate, + /// @notice The token in question is unknown. + Unknown, + /// @notice Funds exist but are frozen. + Frozen, + /// @notice Operation is not supported by the token. + Unsupported, + /// @notice Account cannot be created for a held balance. + CannotCreateHold, + /// @notice Withdrawal would cause unwanted loss of account. + NotExpendable, + /// @notice Account cannot receive the tokens. + Blocked +} + +/// @notice The number of transactional layers has been reached, or we are not in a transactional layer. +error Transactional(TransactionalError); +/// @title Errors related to transactional storage layers. +enum TransactionalError { + /// @notice Too many transactional layers have been spawned. + LimitReached, + /// @notice A transactional layer was expected, but does not exist. + NoLayer +} + +/// @notice An error with tries. +error Trie(TrieError); +/// @title A runtime friendly error type for tries. +enum TrieError { + /// @notice Attempted to create a trie with a state root not in the DB. + InvalidStateRoot, + /// @notice Trie item not found in the database, + IncompleteDatabase, + /// @notice A value was found in the trie with a nibble key that was not byte-aligned. + ValueAtIncompleteKey, + /// @notice Corrupt Trie item. + DecoderError, + /// @notice Hash is not value. + InvalidHash, + /// @notice The statement being verified contains multiple key-value pairs with the same key. + DuplicateKey, + /// @notice The proof contains at least one extraneous node. + ExtraneousNode, + /// @notice The proof contains at least one extraneous value which should have been omitted from the + /// proof. + ExtraneousValue, + /// @notice The proof contains at least one extraneous hash reference the should have been omitted. + ExtraneousHashReference, + /// @notice The proof contains an invalid child reference that exceeds the hash length. + InvalidChildReference, + /// @notice The proof indicates that an expected value was not found in the trie. + ValueMismatch, + /// @notice The proof is missing trie nodes required to verify. + IncompleteProof, + /// @notice The root hash computed from the proof is incorrect. + RootMismatch, + /// @notice One of the proof nodes could not be decoded. + DecodeError +} diff --git a/pallets/api-vnext/src/messaging/precompiles/interfaces/v0/IMessaging.sol b/pallets/api-vnext/src/messaging/precompiles/interfaces/v0/IMessaging.sol new file mode 100644 index 000000000..bc1d0beca --- /dev/null +++ b/pallets/api-vnext/src/messaging/precompiles/interfaces/v0/IMessaging.sol @@ -0,0 +1,195 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.30; + +/** + * @title The messaging precompile offers a general interface for cross-chain messaging operations. + */ +interface IMessaging { + /** + * @notice Returns the response to a message (if any). + * @dev A non-existent message identifier will return an empty response, which could also be a valid response depending on the source message. + * @param message The message identifier. + * @return response The response to a message. + */ + function getResponse( + uint64 message + ) external returns (bytes memory response); + + /** + * @notice The identifier of this chain. + * @return id The identifier of this chain. + */ + function id() external returns (uint32 id); + + /** + * @notice Polls the status of a message. + * @param message The message identifier to poll. + * @return status The status of the message. + */ + function pollStatus(uint64 message) external returns (MessageStatus status); + + /** + * @notice Remove a completed or timed-out message. + * @dev Allows users to clean up storage and reclaim deposits for messages that have concluded. + * @param message The identifier of the message to remove. + */ + function remove(uint64 message) external; + + /** + * @notice Remove a batch of completed or timed-out messages. + * @dev Allows users to clean up storage and reclaim deposits for messages that have concluded. + * @param messages A set of identifiers of messages to remove (bounded by `MaxRemovals`). + */ + function remove(uint64[] calldata messages) external; + + /** + * @notice The status of a message. + */ + enum MessageStatus { + NotFound, + Pending, + Complete, + Timeout + } + + /** + * @notice One or more messages have been removed for the account. + * @param account The origin of the messages. + * @param messages The messages which were removed. + */ + event Removed(address account, uint64[] messages); + + /// @dev The message was not found. + error MessageNotFound(); + /// @dev The request is pending. + error RequestPending(); + /// @dev The number of messages exceeds the limit. + error TooManyMessages(); +} + +/// @notice An arithmetic error. +error Arithmetic(ArithmeticError); +/// @title Arithmetic errors. +enum ArithmeticError { + /// @notice Underflow. + Underflow, + /// @notice Overflow. + Overflow, + /// @notice Division by zero. + DivisionByZero +} + +/// @notice Reason why a dispatch call failed. +error Dispatch(DispatchError); +/// @title Reason why a dispatch call failed. +enum DispatchError { + /// @notice Some error occurred. + Other, + /// @notice Failed to lookup some data. + CannotLookup, + /// @notice A bad origin. + BadOrigin, + /// @notice A custom error in a module. + Module, + /// @notice At least one consumer is remaining so the account cannot be destroyed. + ConsumerRemaining, + /// @notice There are no providers so the account cannot be created. + NoProviders, + /// @notice There are too many consumers so the account cannot be created. + TooManyConsumers, + /// @notice An error to do with tokens. + Token, + /// @notice An arithmetic error. + Arithmetic, + /// @notice The number of transactional layers has been reached, or we are not in a + /// transactional layer. + Transactional, + /// @notice Resources exhausted, e.g. attempt to read/write data which is too large to manipulate. + Exhausted, + /// @notice The state is corrupt; this is generally not going to fix itself. + Corruption, + /// @notice Some resource (e.g. a preimage) is unavailable right now. This might fix itself later. + Unavailable, + /// @notice Root origin is not allowed. + RootNotAllowed, + /// @notice An error with tries. + Trie +} + +/** + * @notice Reason why a pallet call failed. + * @param index Module index, matching the metadata module index. + * @param error Module specific error value. + */ +error Module(uint8 index, bytes4 error); + +/// @notice An error to do with tokens. +error Token(TokenError); +/// @title Description of what went wrong when trying to complete an operation on a token. +enum TokenError { + /// @notice Funds are unavailable. + FundsUnavailable, + /// @notice Some part of the balance gives the only provider reference to the account and thus cannot be (re)moved. + OnlyProvider, + /// @notice Account cannot exist with the funds that would be given. + BelowMinimum, + /// @notice Account cannot be created. + CannotCreate, + /// @notice The token in question is unknown. + Unknown, + /// @notice Funds exist but are frozen. + Frozen, + /// @notice Operation is not supported by the token. + Unsupported, + /// @notice Account cannot be created for a held balance. + CannotCreateHold, + /// @notice Withdrawal would cause unwanted loss of account. + NotExpendable, + /// @notice Account cannot receive the tokens. + Blocked +} + +/// @notice The number of transactional layers has been reached, or we are not in a transactional layer. +error Transactional(TransactionalError); +/// @title Errors related to transactional storage layers. +enum TransactionalError { + /// @notice Too many transactional layers have been spawned. + LimitReached, + /// @notice A transactional layer was expected, but does not exist. + NoLayer +} + +/// @notice An error with tries. +error Trie(TrieError); +/// @title A runtime friendly error type for tries. +enum TrieError { + /// @notice Attempted to create a trie with a state root not in the DB. + InvalidStateRoot, + /// @notice Trie item not found in the database, + IncompleteDatabase, + /// @notice A value was found in the trie with a nibble key that was not byte-aligned. + ValueAtIncompleteKey, + /// @notice Corrupt Trie item. + DecoderError, + /// @notice Hash is not value. + InvalidHash, + /// @notice The statement being verified contains multiple key-value pairs with the same key. + DuplicateKey, + /// @notice The proof contains at least one extraneous node. + ExtraneousNode, + /// @notice The proof contains at least one extraneous value which should have been omitted from the + /// proof. + ExtraneousValue, + /// @notice The proof contains at least one extraneous hash reference the should have been omitted. + ExtraneousHashReference, + /// @notice The proof contains an invalid child reference that exceeds the hash length. + InvalidChildReference, + /// @notice The proof indicates that an expected value was not found in the trie. + ValueMismatch, + /// @notice The proof is missing trie nodes required to verify. + IncompleteProof, + /// @notice The root hash computed from the proof is incorrect. + RootMismatch, + /// @notice One of the proof nodes could not be decoded. + DecodeError +} diff --git a/pallets/api-vnext/src/messaging/precompiles/interfaces/v0/IXCM.sol b/pallets/api-vnext/src/messaging/precompiles/interfaces/v0/IXCM.sol new file mode 100644 index 000000000..5d5bb672b --- /dev/null +++ b/pallets/api-vnext/src/messaging/precompiles/interfaces/v0/IXCM.sol @@ -0,0 +1,322 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.30; + +/** + * @title The XCM precompile offers a streamlined interface for messaging using Polkadot's Cross-Consensus Messaging (XCM). + * @dev An extension of https://github.com/paritytech/polkadot-sdk/blob/master/polkadot/xcm/pallet-xcm/src/precompiles/IXcm.sol + */ +interface IXCM { + + /** + * @notice The current block number. + */ + function blockNumber() external view returns (uint32 result); + + /** + * @notice Execute an XCM message from a local, signed, origin. + * @param message A SCALE-encoded versioned XCM message. + * @param weight The maximum allowed weight for execution. + * @return result A SCALE-encoded dispatch result. + */ + function execute( + bytes calldata message, + Weight calldata weight + ) external returns (bytes memory result); + + /** + * @notice Returns the response to a message (if any). + * @dev A non-existent message identifier will return an empty response, which could also be a valid response depending on the source message. + * @param message The message identifier. + * @return response The response to a message. + */ + function getResponse(uint64 message) external returns (bytes memory response); + + /** + * @notice The identifier of this chain. + * @return id The identifier of this chain. + */ + function id() external returns (uint32 id); + + /** + * @notice Initiate a new XCM query. + * @dev Starts a query using the XCM interface, specifying a responder and timeout block. + * @param responder A SCALE-encoded versioned location of the XCM responder. + * @param timeout Block number after which the query should timeout. A future block number is required. + * @return id A unique message identifier. + * @return queryId The XCM query identifier. + */ + function newQuery( + bytes calldata responder, + uint32 timeout + ) external returns (uint64 id, uint64 queryId); + + /** + * @notice Initiate a new XCM query. + * @dev Starts a query using the XCM interface, specifying a responder and timeout block. + * @param responder A SCALE-encoded versioned location of the XCM responder. + * @param timeout Block number after which the query should timeout. A future block number is required. + * @param callback The callback to execute upon receiving a response. + * @return id A unique message identifier. + * @return queryId The XCM query identifier. + */ + function newQuery( + bytes calldata responder, + uint32 timeout, + Callback calldata callback + ) external returns (uint64 id, uint64 queryId); + + /** + * @notice Polls the status of a message. + * @param message The message identifier to poll. + * @return status The status of the message. + */ + function pollStatus(uint64 message) external returns (MessageStatus status); + + /** + * @notice Remove a completed or timed-out message. + * @dev Allows users to clean up storage and reclaim deposits for messages that have concluded. + * @param message The message identifier to remove. + */ + function remove(uint64 message) external; + + /** + * @notice Remove a batch of completed or timed-out messages. + * @dev Allows users to clean up storage and reclaim deposits for messages that have concluded. + * @param messages A set of message identifiers to remove (bounded by `MaxRemovals`). + */ + function remove(uint64[] calldata messages) external; + + /** + * @notice Send an XCM from a given origin. + * @param destination The SCALE-encoded versioned location for the destination of the message. + * @param message A SCALE-encoded versioned XCM message. + * @return result A SCALE-encoded dispatch result. + */ + function send( + bytes calldata destination, + bytes calldata message + ) external returns (bytes memory result); + + /** + * @notice A XCM query has been created. + * @param account The origin of the request. + * @param id The identifier of the message. + * @param queryId The identifier of the created XCM query. + */ + event QueryCreated(address account, uint64 id, uint64 queryId); + + /** + * @notice A XCM query has been created. + * @param account The origin of the request. + * @param id The identifier of the message. + * @param queryId The identifier of the created XCM query. + * @param callback The callback to be used to return the response. + */ + event QueryCreated(address account, uint64 id, uint64 queryId, Callback callback); + + /// @dev The input failed to decode. + error DecodingFailed(); + /// @dev Timeouts must be in the future. + error FutureTimeoutMandatory(); + /// @dev Timeouts must be in the future. + error FundsUnavailable(); + /// @dev Message block limit has been reached for this expiry block. Try a different timeout. + error MaxMessageTimeoutPerBlockReached(); + /// @dev Failed to convert origin. + error OriginConversionFailed(); +} + +/** + * @title A callback for handling responses to XCM queries. + */ +interface IQueryResponse { + /** + * @notice Handles a response to an ISMP `Post` request. + * @param id The identifier of the originating message. + * @param response The response message. + */ + function onQueryResponse(uint64 id, bytes memory response) external; +} + +/// @notice A message callback. +struct Callback { + /// @custom:property The contract address to which the callback should be sent. + address destination; + /// @custom:property The encoding used for the data going to the contract. + Encoding encoding; + /// @custom:property The message selector to be used for the callback. + bytes4 selector; + /// @custom:property The pre-paid weight used as a gas limit for the callback. + Weight gasLimit; + /// @custom:property The storage deposit limit for the callback. + uint256 storageDepositLimit; +} + +/** + * @notice The specificiation of how data must be encoded before being sent to a contract. + */ +enum Encoding { + Scale, + SolidityAbi +} + +/** + * @notice One or more messages have been removed for the account. + * @param account The origin of the messages. + * @param messages The messages which were removed. + */ +event Removed(address account, uint64[] messages); + +/** + * @notice The status of a message. + */ +enum MessageStatus { + NotFound, + Pending, + Complete, + Timeout +} + +/// @notice The weight of/for a transaction. +struct Weight { + /// @custom:property The weight of computational time used based on some reference hardware. + uint64 refTime; + /// @custom:property The weight of storage space used by proof of validity. + uint64 proofSize; +} + +/// @dev The specified encoding is invalid. +error InvalidEncoding(); +/// @dev The message was not found. +error MessageNotFound(); +/// @dev The request is pending. +error RequestPending(); +/// @dev The number of messages exceeds the limit. +error TooManyMessages(); + +/// @notice An arithmetic error. +error Arithmetic(ArithmeticError); +/// @title Arithmetic errors. +enum ArithmeticError { + /// @notice Underflow. + Underflow, + /// @notice Overflow. + Overflow, + /// @notice Division by zero. + DivisionByZero +} + +/// @notice Reason why a dispatch call failed. +error Dispatch(DispatchError); +/// @title Reason why a dispatch call failed. +enum DispatchError { + /// @notice Some error occurred. + Other, + /// @notice Failed to lookup some data. + CannotLookup, + /// @notice A bad origin. + BadOrigin, + /// @notice A custom error in a module. + Module, + /// @notice At least one consumer is remaining so the account cannot be destroyed. + ConsumerRemaining, + /// @notice There are no providers so the account cannot be created. + NoProviders, + /// @notice There are too many consumers so the account cannot be created. + TooManyConsumers, + /// @notice An error to do with tokens. + Token, + /// @notice An arithmetic error. + Arithmetic, + /// @notice The number of transactional layers has been reached, or we are not in a + /// transactional layer. + Transactional, + /// @notice Resources exhausted, e.g. attempt to read/write data which is too large to manipulate. + Exhausted, + /// @notice The state is corrupt; this is generally not going to fix itself. + Corruption, + /// @notice Some resource (e.g. a preimage) is unavailable right now. This might fix itself later. + Unavailable, + /// @notice Root origin is not allowed. + RootNotAllowed, + /// @notice An error with tries. + Trie +} + +/** + * @notice Reason why a pallet call failed. + * @param index Module index, matching the metadata module index. + * @param error Module specific error value. + */ +error Module(uint8 index, bytes4 error); + +/// @notice An error to do with tokens. +error Token(TokenError); +/// @title Description of what went wrong when trying to complete an operation on a token. +enum TokenError { + /// @notice Funds are unavailable. + FundsUnavailable, + /// @notice Some part of the balance gives the only provider reference to the account and thus cannot be (re)moved. + OnlyProvider, + /// @notice Account cannot exist with the funds that would be given. + BelowMinimum, + /// @notice Account cannot be created. + CannotCreate, + /// @notice The token in question is unknown. + Unknown, + /// @notice Funds exist but are frozen. + Frozen, + /// @notice Operation is not supported by the token. + Unsupported, + /// @notice Account cannot be created for a held balance. + CannotCreateHold, + /// @notice Withdrawal would cause unwanted loss of account. + NotExpendable, + /// @notice Account cannot receive the tokens. + Blocked +} + +/// @notice The number of transactional layers has been reached, or we are not in a transactional layer. +error Transactional(TransactionalError); +/// @title Errors related to transactional storage layers. +enum TransactionalError { + /// @notice Too many transactional layers have been spawned. + LimitReached, + /// @notice A transactional layer was expected, but does not exist. + NoLayer +} + +/// @notice An error with tries. +error Trie(TrieError); +/// @title A runtime friendly error type for tries. +enum TrieError { + /// @notice Attempted to create a trie with a state root not in the DB. + InvalidStateRoot, + /// @notice Trie item not found in the database, + IncompleteDatabase, + /// @notice A value was found in the trie with a nibble key that was not byte-aligned. + ValueAtIncompleteKey, + /// @notice Corrupt Trie item. + DecoderError, + /// @notice Hash is not value. + InvalidHash, + /// @notice The statement being verified contains multiple key-value pairs with the same key. + DuplicateKey, + /// @notice The proof contains at least one extraneous node. + ExtraneousNode, + /// @notice The proof contains at least one extraneous value which should have been omitted from the + /// proof. + ExtraneousValue, + /// @notice The proof contains at least one extraneous hash reference the should have been omitted. + ExtraneousHashReference, + /// @notice The proof contains an invalid child reference that exceeds the hash length. + InvalidChildReference, + /// @notice The proof indicates that an expected value was not found in the trie. + ValueMismatch, + /// @notice The proof is missing trie nodes required to verify. + IncompleteProof, + /// @notice The root hash computed from the proof is incorrect. + RootMismatch, + /// @notice One of the proof nodes could not be decoded. + DecodeError +} diff --git a/pallets/api-vnext/src/messaging/precompiles/ismp.rs b/pallets/api-vnext/src/messaging/precompiles/ismp.rs new file mode 100644 index 000000000..550379ddf --- /dev/null +++ b/pallets/api-vnext/src/messaging/precompiles/ismp.rs @@ -0,0 +1,5 @@ +use super::*; + +/// The first version of the ISMP messaging API. +#[allow(ambiguous_associated_items)] +pub mod v0; diff --git a/pallets/api-vnext/src/messaging/precompiles/ismp/v0.rs b/pallets/api-vnext/src/messaging/precompiles/ismp/v0.rs new file mode 100644 index 000000000..759d27661 --- /dev/null +++ b/pallets/api-vnext/src/messaging/precompiles/ismp/v0.rs @@ -0,0 +1,991 @@ +use ::ismp::{ + dispatcher::{DispatchGet, DispatchPost}, + host::StateMachine, +}; +use frame_support::{ + ensure, + traits::{tokens::fungible::Inspect, Get as _}, +}; +pub(crate) use IISMP::{Get, *}; + +use super::*; +use crate::{ + messaging::transports::ismp::{get, post, ID}, + TryConvert, +}; + +sol!( + #![sol(extra_derives(Debug, PartialEq))] + "src/messaging/precompiles/interfaces/v0/IISMP.sol" +); + +/// The ISMP precompile offers a streamlined interface for messaging using the Interoperable State +/// Machine Protocol. +pub struct Ismp(PhantomData); +impl< + const FIXED: u16, + T: frame_system::Config + + pallet_revive::Config + + parachain_info::Config + + Config< + Fungibles: Inspect< + T::AccountId, + Balance: TryConvert, + >, + >, + > Precompile for Ismp +where + U256: TryConvert< + <::Fungibles as Inspect>::Balance, + Error = frame::DispatchError, + >, +{ + type Interface = IISMPCalls; + type T = T; + + const HAS_CONTRACT_INFO: bool = false; + const MATCHER: AddressMatcher = + Fixed(NonZero::new(FIXED).expect("expected non-zero precompile address")); + + fn call( + _address: &[u8; 20], + input: &Self::Interface, + env: &mut impl Ext, + ) -> Result, pallet_revive::precompiles::Error> { + match input { + IISMPCalls::get_0(get_0Call { request, fee }) => { + env.charge(::WeightInfo::ismp_get( + request.context.len().try_convert()?, + request.keys.len().try_convert()?, + 0, + ))?; + let message = try_get::(request)?; + + let (origin, id, commitment) = (|| { + let origin = Origin::try_from(env.caller())?; + let fee = (*fee).try_convert()?; + let address = origin.address(); + + let (id, commitment) = get::(origin, message, fee, None)?; + + Ok((address, id, commitment)) + })() + .map_err(Self::map_err)?; + + let event = GetDispatched_0 { origin, id, commitment: commitment.0.into() }; + deposit_event(env, event)?; + Ok(get_0Call::abi_encode_returns(&id)) + }, + IISMPCalls::get_1(get_1Call { request, fee, callback }) => { + env.charge(::WeightInfo::ismp_get( + request.context.len().try_convert()?, + request.keys.len().try_convert()?, + 1, + ))?; + let message = try_get::(request)?; + let cb = callback.try_into()?; + + let (origin, id, commitment) = (|| { + let origin = Origin::try_from(env.caller())?; + let fee = (*fee).try_convert()?; + let address = origin.address(); + + let (id, commitment) = get::(origin, message, fee, Some(cb))?; + + Ok((address, id, commitment)) + })() + .map_err(Self::map_err)?; + + let commitment = commitment.0.into(); + let event = GetDispatched_1 { origin, id, commitment, callback: callback.clone() }; + deposit_event(env, event)?; + Ok(get_1Call::abi_encode_returns(&id)) + }, + IISMPCalls::getResponse(getResponseCall { message }) => { + env.charge(::WeightInfo::get_response())?; + + let response = super::get::(message).into(); + + Ok(getResponseCall::abi_encode_returns(&response)) + }, + IISMPCalls::id(idCall {}) => { + env.charge(::WeightInfo::id())?; + + let id = id::(); + + Ok(idCall::abi_encode_returns(&id)) + }, + IISMPCalls::pollStatus(pollStatusCall { message }) => { + env.charge(::WeightInfo::poll_status())?; + + let status = poll_status::(message).into(); + + Ok(pollStatusCall::abi_encode_returns(&status)) + }, + IISMPCalls::post_0(post_0Call { request, fee }) => { + env.charge(::WeightInfo::ismp_post( + request.to.len().try_convert()?, + request.data.len().try_convert()?, + 0, + ))?; + let message = try_post::(request)?; + + let (origin, id, commitment) = (|| { + let origin: Origin<_> = env.caller().try_into()?; + let fee = (*fee).try_convert()?; + let address = origin.address(); + + let (id, commitment) = post::(origin, message, fee, None)?; + + Ok((address, id, commitment)) + })() + .map_err(Self::map_err)?; + + let event = PostDispatched_0 { origin, id, commitment: commitment.0.into() }; + deposit_event(env, event)?; + Ok(post_0Call::abi_encode_returns(&id)) + }, + IISMPCalls::post_1(post_1Call { request, fee, callback }) => { + env.charge(::WeightInfo::ismp_post( + request.to.len().try_convert()?, + request.data.len().try_convert()?, + 1, + ))?; + let message = try_post::(request)?; + let cb = callback.try_into()?; + + let (origin, id, commitment) = (|| { + let origin: Origin<_> = env.caller().try_into()?; + let fee = (*fee).try_convert()?; + let address = origin.address(); + + let (id, commitment) = post::(origin, message, fee, Some(cb))?; + + Ok((address, id, commitment)) + })() + .map_err(Self::map_err)?; + + let commitment = commitment.0.into(); + let event = PostDispatched_1 { origin, id, commitment, callback: callback.clone() }; + deposit_event(env, event)?; + Ok(post_0Call::abi_encode_returns(&id)) + }, + IISMPCalls::remove_0(remove_0Call { message }) => { + env.charge(::WeightInfo::remove(1))?; + + let account = (|| { + let origin = Origin::try_from(env.caller())?; + let address = origin.address(); + + remove::(origin, &[*message])?; + + Ok(address) + })() + .map_err(Self::map_err)?; + + deposit_event(env, Removed { account, messages: vec![*message] })?; + Ok(remove_0Call::abi_encode_returns(&remove_0Return {})) + }, + IISMPCalls::remove_1(remove_1Call { messages }) => { + let messages_len = messages.len().try_convert()?; + env.charge(::WeightInfo::remove(messages_len))?; + + let account = (|| { + let origin = Origin::try_from(env.caller())?; + let address = origin.address(); + + remove::(origin, messages)?; + + Ok(address) + })() + .map_err(Self::map_err)?; + + deposit_event(env, Removed { account, messages: messages.clone() })?; + Ok(remove_1Call::abi_encode_returns(&remove_1Return {})) + }, + } + } +} + +impl Ismp { + /// The address of the precompile. + pub const fn address() -> [u8; 20] { + fixed_address(FIXED) + } + + // Maps select, domain-specific dispatch errors to messaging errors. All others are mapped to + // more generic runtime errors. + fn map_err(e: frame::DispatchError) -> Error { + use frame::DispatchError::*; + match e { + Arithmetic(error) => self::Arithmetic::from(error).into(), + Module(ModuleError { index, error, .. }) => { + if Some(index as usize) == T::PalletInfo::index::>() { + use messaging::Error::{self, *}; + match Error::::decode(&mut error.as_slice()) { + Ok(MessageNotFound) => return self::MessageNotFound.into(), + Ok(RequestPending) => return self::RequestPending.into(), + Ok(TooManyMessages) => return self::TooManyMessages.into(), + _ => {}, + } + } + + self::Module { index, error: error.into() }.into() + }, + Token(error) => self::Token::from(error).into(), + Transactional(error) => self::Transactional::from(error).into(), + Trie(error) => self::Trie::from(error).into(), + other => self::Dispatch::from(other).into(), + } + } +} + +// Encoding of custom errors via `Error(String)`. +impl_from_sol_error! { + // ISMP + IISMP::MaxContextExceeded, + IISMP::MaxDataExceeded, + IISMP::MaxKeyExceeded, + IISMP::MaxKeysExceeded, + IISMP::MaxRecipientExceeded, + // Messaging + InvalidEncoding, + MessageNotFound, + RequestPending, + TooManyMessages, + // Generic + Arithmetic, + Dispatch, + Module, + Token, + Transactional, + Trie +} + +fn try_get(value: &Get) -> Result { + ensure!(value.context.len() as u32 <= T::MaxContextLen::get(), IISMP::MaxContextExceeded); + ensure!(value.keys.len() as u32 <= T::MaxKeys::get(), IISMP::MaxKeysExceeded); + ensure!( + value.keys.iter().all(|k| k.len() as u32 <= T::MaxKeyLen::get()), + IISMP::MaxKeyExceeded + ); + Ok(DispatchGet { + dest: StateMachine::Polkadot(value.destination), + from: ID.into(), + keys: value.keys.iter().map(|key| key.to_vec()).collect(), + height: value.height.into(), + context: value.context.to_vec(), + timeout: value.timeout, + }) +} + +fn try_post(value: &Post) -> Result { + ensure!(value.to.len() as u32 <= T::MaxRecipientLen::get(), IISMP::MaxRecipientExceeded); + ensure!(value.data.len() as u32 <= T::MaxDataLen::get(), IISMP::MaxDataExceeded); + Ok(DispatchPost { + dest: StateMachine::Polkadot(value.destination), + from: ID.into(), + to: value.to.to_vec(), + timeout: value.timeout, + body: value.data.to_vec(), + }) +} + +impl EncodeCallback for Vec<::ismp::router::StorageValue> { + fn encode(&self, encoding: messaging::Encoding, selector: [u8; 4], id: MessageId) -> Vec { + use messaging::Encoding::*; + match encoding { + Scale => [selector.to_vec(), (id, self).encode()].concat(), + SolidityAbi => { + // Use interface to encode call data + let call = IGetResponse::onGetResponseCall { + id, + // Clones required for ABI encoding of dynamic bytes type. + response: self + .into_iter() + .map(|v| IISMP::StorageValue { + key: v.key.clone().into(), + value: v.value.as_ref().map_or_else( + || IISMP::Value { exists: false, value: Default::default() }, + |v| IISMP::Value { exists: true, value: v.clone().into() }, + ), + }) + .collect(), + }; + let mut data = call.abi_encode(); + debug_assert_eq!(data[..4], selector); + // Replace selector with that provided at request + data.splice(0..4, selector); + data + }, + } + } +} + +impl EncodeCallback for Vec { + fn encode(&self, encoding: messaging::Encoding, selector: [u8; 4], id: MessageId) -> Vec { + use messaging::Encoding::*; + match encoding { + Scale => [selector.to_vec(), (id, self).encode()].concat(), + SolidityAbi => { + // Use interface to encode call data. Clone required for ABI encoding of dynamic + // bytes type. + let call = IPostResponse::onPostResponseCall { id, response: self.clone().into() }; + let mut data = call.abi_encode(); + debug_assert_eq!(data[..4], selector); + // Replace selector with that provided at request + data.splice(0..4, selector); + data + }, + } + } +} + +impl TryFrom<&Callback> for super::Callback +where + U256: TryConvert, +{ + type Error = Error; + + fn try_from(callback: &Callback) -> Result { + Ok(Self::new( + (*callback.destination.0).into(), + (&callback.encoding).try_into()?, + callback.selector.0, + (&callback.gasLimit).into(), + callback.storageDepositLimit.try_convert()?, + )) + } +} + +impl TryFrom<&Encoding> for super::Encoding { + type Error = Error; + + fn try_from(encoding: &Encoding) -> Result { + match encoding { + Encoding::Scale => Ok(Self::Scale), + Encoding::SolidityAbi => Ok(Self::SolidityAbi), + Encoding::__Invalid => Err(InvalidEncoding.into()), + } + } +} + +impl From for Arithmetic { + fn from(error: frame_support::sp_runtime::ArithmeticError) -> Self { + use frame_support::sp_runtime::ArithmeticError::*; + Self(match error { + Underflow => ArithmeticError::Underflow, + Overflow => ArithmeticError::Overflow, + DivisionByZero => ArithmeticError::DivisionByZero, + }) + } +} + +impl From for Dispatch { + fn from(error: frame::DispatchError) -> Self { + use frame::DispatchError::*; + Self(match error { + Other(_) => DispatchError::Other, + CannotLookup => DispatchError::CannotLookup, + BadOrigin => DispatchError::BadOrigin, + Module(_) => DispatchError::Module, + ConsumerRemaining => DispatchError::ConsumerRemaining, + NoProviders => DispatchError::NoProviders, + TooManyConsumers => DispatchError::TooManyConsumers, + Token(_) => DispatchError::Token, + Arithmetic(_) => DispatchError::Arithmetic, + Transactional(_) => DispatchError::Transactional, + Exhausted => DispatchError::Exhausted, + Corruption => DispatchError::Corruption, + Unavailable => DispatchError::Unavailable, + RootNotAllowed => DispatchError::RootNotAllowed, + Trie(_) => DispatchError::Trie, + }) + } +} + +impl From for Module { + fn from(error: frame_support::sp_runtime::ModuleError) -> Self { + Self { index: error.index, error: error.error.into() } + } +} + +impl From for Token { + fn from(error: frame_support::sp_runtime::TokenError) -> Self { + use frame_support::sp_runtime::TokenError::*; + Self(match error { + FundsUnavailable => TokenError::FundsUnavailable, + OnlyProvider => TokenError::OnlyProvider, + BelowMinimum => TokenError::BelowMinimum, + CannotCreate => TokenError::CannotCreate, + UnknownAsset => TokenError::Unknown, + Frozen => TokenError::Frozen, + Unsupported => TokenError::Unsupported, + CannotCreateHold => TokenError::CannotCreateHold, + NotExpendable => TokenError::NotExpendable, + Blocked => TokenError::Blocked, + }) + } +} + +impl From for Transactional { + fn from(error: frame_support::sp_runtime::TransactionalError) -> Self { + use frame_support::sp_runtime::TransactionalError::*; + Self(match error { + LimitReached => TransactionalError::LimitReached, + NoLayer => TransactionalError::NoLayer, + }) + } +} + +impl From for Trie { + fn from(error: frame_support::traits::TrieError) -> Self { + use frame_support::traits::TrieError::*; + Self(match error { + InvalidStateRoot => TrieError::InvalidStateRoot, + IncompleteDatabase => TrieError::IncompleteDatabase, + ValueAtIncompleteKey => TrieError::ValueAtIncompleteKey, + DecoderError => TrieError::DecoderError, + InvalidHash => TrieError::InvalidHash, + DuplicateKey => TrieError::DuplicateKey, + ExtraneousNode => TrieError::ExtraneousNode, + ExtraneousValue => TrieError::ExtraneousValue, + ExtraneousHashReference => TrieError::ExtraneousHashReference, + InvalidChildReference => TrieError::InvalidChildReference, + ValueMismatch => TrieError::ValueMismatch, + IncompleteProof => TrieError::IncompleteProof, + RootMismatch => TrieError::RootMismatch, + DecodeError => TrieError::DecodeError, + }) + } +} + +impl From for self::MessageStatus { + fn from(value: messaging::MessageStatus) -> Self { + use messaging::MessageStatus::*; + match value { + NotFound => Self::NotFound, + Pending => Self::Pending, + Complete => Self::Complete, + Timeout => Self::Timeout, + } + } +} + +impl From<&Weight> for super::Weight { + fn from(weight: &Weight) -> Self { + Self::from_parts(weight.refTime, weight.proofSize) + } +} + +#[cfg(test)] +mod tests { + use ::ismp::router::{GetRequest, PostRequest, Request}; + use frame_support::{ + assert_ok, + traits::{Get, UnixTime}, + weights::Weight, + }; + use mock::{ExtBuilder, *}; + use pallet_revive::{ + precompiles::{ + alloy::sol_types::{SolInterface, SolType}, + Error, + }, + test_utils::{ALICE, ALICE_ADDR}, + }; + use sp_io::hashing::keccak_256; + + use super::{IISMPCalls::*, MessageStatus::*, *}; + + type MaxContextLen = ::MaxContextLen; + type MaxDataLen = ::MaxDataLen; + type MaxKeyLen = ::MaxKeyLen; + type MaxKeys = ::MaxKeys; + type MaxRecipientLen = ::MaxRecipientLen; + type MaxRemovals = ::MaxRemovals; + type Messages = crate::messaging::Messages; + type Origin = super::Origin; + + const ADDRESS: [u8; 20] = fixed_address(ISMP); + const GET_MESSAGE_DEPOSIT: u128 = 131_290; + const POST_MESSAGE_DEPOSIT: u128 = 134_415; + + #[test] + fn get_reverts_when_max_context_exceeded() { + let origin = ALICE; + ExtBuilder::new().build().execute_with(|| { + let request = IISMP::Get { + destination: 0, + height: u64::default(), + timeout: u64::default(), + context: vec![255u8; >::get() as usize + 1].into(), + keys: Vec::default(), + }; + let input = get_0(get_0Call { request, fee: U256::ZERO }); + assert_revert!(call_precompile::(&origin, &input), MaxContextExceeded); + }); + } + + #[test] + fn get_reverts_when_max_keys_exceeded() { + let origin = ALICE; + ExtBuilder::new().build().execute_with(|| { + let request = IISMP::Get { + destination: 0, + height: u64::default(), + timeout: u64::default(), + context: Vec::default().into(), + keys: vec![vec![].into(); >::get() as usize + 1], + }; + let input = get_0(get_0Call { request, fee: U256::ZERO }); + assert_revert!(call_precompile::(&origin, &input), MaxKeysExceeded); + }); + } + + #[test] + fn get_reverts_when_max_key_exceeded() { + let origin = ALICE; + ExtBuilder::new().build().execute_with(|| { + let request = IISMP::Get { + destination: 0, + height: u64::default(), + timeout: u64::default(), + context: Vec::default().into(), + keys: vec![vec![0u8; >::get() as usize + 1].into()], + }; + let input = get_0(get_0Call { request, fee: U256::ZERO }); + assert_revert!(call_precompile::(&origin, &input), MaxKeyExceeded); + }); + } + + #[test] + fn get_works() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let message = 1; + let request = IISMP::Get { + destination: 1_000, + height: u64::MAX, + timeout: u64::MAX, + context: vec![255u8; 64].into(), + keys: vec![vec![255u8; 32].into()].into(), + }; + let fee = U256::from(100); + ExtBuilder::new() + .with_balances(vec![(origin.account.clone(), 1 * UNIT)]) // message deposit + .with_message_id(message) + .build() + .execute_with(|| { + let commitment = get_hash(&request); + + assert_eq!( + call_precompile::(&origin.account, &get_0(get_0Call { request, fee })).unwrap(), + message + ); + + let event = GetDispatched_0 { origin: origin.address(), id: message, commitment: commitment.0.into() }; + assert_last_event(ADDRESS, event); + assert!(matches!( + Messages::get(message), + Some(Message::Ismp { origin: o, commitment: c, callback, message_deposit }) + if o == origin && c == commitment && callback.is_none() && message_deposit == GET_MESSAGE_DEPOSIT) + ); + }); + } + + #[test] + fn get_with_callback_works() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let message = 1; + let request = IISMP::Get { + destination: 1_000, + height: u64::MAX, + timeout: u64::MAX, + context: vec![255u8; 64].into(), + keys: vec![vec![255u8; 32].into()].into(), + }; + let fee = U256::from(100); + let callback = Callback { + destination: [255u8; 20].into(), + encoding: super::Encoding::Scale, + selector: [255u8; 4].into(), + gasLimit: super::Weight { refTime: 100, proofSize: 10 }, + storageDepositLimit: U256::from(100), + }; + ExtBuilder::new() + .with_balances(vec![(origin.account.clone(), 1 * UNIT)]) // message deposit + .with_message_id(message) + .build() + .execute_with(|| { + let commitment = get_hash(&request); + + assert_eq!( + call_precompile::(&origin.account, &get_1(get_1Call { request, fee, callback: callback.clone() })).unwrap(), + message + ); + + let event = GetDispatched_1 { origin: origin.address(), id: message, commitment: commitment.0.into(), callback: callback.clone() }; + assert_last_event(ADDRESS, event); + assert!(matches!( + Messages::get(message), + Some(Message::Ismp { origin: o, commitment: c, callback: cb, message_deposit }) + if o == origin && c == commitment && cb == Some((&callback).try_into().unwrap()) && message_deposit == GET_MESSAGE_DEPOSIT) + ); + }); + } + + #[test] + fn get_response_works() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let message = 1; + let response = b"ismp response".to_vec(); + ExtBuilder::new() + .with_messages(vec![( + origin.account.clone(), + message, + Message::ismp_response( + origin.address, + H256::default(), + 0, + response.clone().try_into().unwrap(), + ), + 0, + )]) + .build() + .execute_with(|| { + assert_eq!( + call_precompile::>( + &origin.account, + &getResponse(getResponseCall { message }) + ) + .unwrap(), + response + ); + }); + } + + #[test] + fn poll_status_works() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let expected = [(0, NotFound), (1, Pending), (2, Complete), (3, Timeout)]; + let messages = [ + (1, Message::ismp(origin.clone(), H256::default(), None, 0)), + (2, Message::ismp_response(origin.address, H256::default(), 0, BoundedVec::default())), + (3, Message::ismp_timeout(origin.address, H256::default(), 0, None)), + ]; + ExtBuilder::new() + .with_messages(messages.map(|(i, m)| (origin.account.clone(), i, m, 0)).to_vec()) + .build() + .execute_with(|| { + for (message, expected) in expected { + assert_eq!( + call_precompile::( + &origin.account, + &pollStatus(pollStatusCall { message }) + ) + .unwrap(), + expected.into() + ); + } + }); + } + + #[test] + fn post_reverts_when_max_recipient_exceeded() { + let origin = ALICE; + let request = IISMP::Post { + destination: 0, + to: vec![255u8; >::get() as usize + 1].into(), + timeout: u64::default(), + data: vec![255u8; >::get() as usize].into(), + }; + let fee = U256::from(100); + ExtBuilder::new().build().execute_with(|| { + let input = post_0(post_0Call { request, fee }); + assert_revert!(call_precompile::(&origin, &input), MaxRecipientExceeded); + }); + } + + #[test] + fn post_reverts_when_max_data_exceeded() { + let origin = ALICE; + let request = IISMP::Post { + destination: 0, + to: vec![255u8; >::get() as usize].into(), + timeout: u64::default(), + data: vec![255u8; >::get() as usize + 1].into(), + }; + let fee = U256::from(100); + ExtBuilder::new().build().execute_with(|| { + let input = post_0(post_0Call { request, fee }); + assert_revert!(call_precompile::(&origin, &input), MaxDataExceeded); + }); + } + + #[test] + fn post_works() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let message = 1; + let request = IISMP::Post { + destination: 1_000, + to: vec![255u8; 20].into(), + timeout: u64::MAX, + data: vec![255u8; 1024].into(), + }; + let fee = U256::from(100); + ExtBuilder::new() + .with_balances(vec![(origin.account.clone(), 1 * UNIT)]) // message deposit + .with_message_id(message) + .build() + .execute_with(|| { + let commitment = post_hash(&request); + + assert_eq!( + call_precompile::(&origin.account, &post_0(post_0Call { request, fee })).unwrap(), + message + ); + + let event = PostDispatched_0 { origin: origin.address(), id: message, commitment: commitment.0.into() }; + assert_last_event(ADDRESS, event); + assert!(matches!( + Messages::get( message), + Some(Message::Ismp { origin: o, commitment: c, callback, message_deposit }) + if o == origin && c == commitment && callback.is_none() && message_deposit == POST_MESSAGE_DEPOSIT) + ); + }); + } + + #[test] + fn post_with_callback_works() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let message = 1; + let request = IISMP::Post { + destination: 1_000, + to: vec![255u8; 20].into(), + timeout: u64::MAX, + data: vec![255u8; 1024].into(), + }; + let fee = U256::from(100); + let callback = Callback { + destination: [255u8; 20].into(), + encoding: super::Encoding::Scale, + selector: [255u8; 4].into(), + gasLimit: super::Weight { refTime: 100, proofSize: 10 }, + storageDepositLimit: U256::from(100), + }; + ExtBuilder::new() + .with_balances(vec![(origin.account.clone(), 1 * UNIT)]) // message deposit + .with_message_id(message) + .build() + .execute_with(|| { + let commitment = post_hash(&request); + + assert_eq!( + call_precompile::(&origin.account, &post_1(post_1Call { request, fee, callback: callback.clone() })).unwrap(), + message + ); + + let event = PostDispatched_1 { origin: origin.address(), id: message, commitment: commitment.0.into(), callback: callback.clone() }; + assert_last_event(ADDRESS, event); + assert!(matches!( + Messages::get(message), + Some(Message::Ismp { origin: o, commitment: c, callback: cb, message_deposit }) + if o == origin && c == commitment && cb == Some((&callback).try_into().unwrap()) && message_deposit == POST_MESSAGE_DEPOSIT) + ); + }); + } + + #[test] + fn remove_reverts_when_message_pending() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let message = 1; + ExtBuilder::new() + .with_messages(vec![( + origin.account.clone(), + message, + Message::xcm_query(origin.clone(), 0, None, 0), + 0, + )]) + .build() + .execute_with(|| { + assert_revert!( + call_precompile::<()>(&origin.account, &remove_0(remove_0Call { message })), + RequestPending + ); + }); + } + + #[test] + fn remove_reverts_when_message_not_found() { + let origin = ALICE; + let message = 1; + ExtBuilder::new().build().execute_with(|| { + assert_revert!( + call_precompile::<()>(&origin, &remove_0(remove_0Call { message })), + MessageNotFound + ); + }); + } + + #[test] + fn remove_works() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let message = 1; + ExtBuilder::new() + .with_messages(vec![( + origin.account.clone(), + message, + Message::ismp_response(origin.address, H256::default(), 0, BoundedVec::default()), + 0, + )]) + .build() + .execute_with(|| { + assert_ok!(call_precompile::<()>( + &origin.account, + &remove_0(remove_0Call { message }) + )); + + let account = origin.address(); + assert_last_event(ADDRESS, Removed { account, messages: vec![message] }); + }); + } + + #[test] + fn remove_many_reverts_when_message_pending() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let message = Message::xcm_response(origin.address, 0, 0, Response::Null); + let messages = >::get() as u64; + ExtBuilder::new() + .with_messages( + (0..messages - 1) + .map(|i| (origin.account.clone(), i, message.clone(), 0)) + .chain(vec![( + origin.account.clone(), + messages, + Message::xcm_query(origin.clone(), 0, None, 0), + 0, + )]) + .collect(), + ) + .build() + .execute_with(|| { + assert_revert!( + call_precompile::<()>( + &origin.account, + &remove_1(remove_1Call { messages: (0..messages).collect() }) + ), + MessageNotFound + ); + }); + } + + #[test] + fn remove_many_reverts_when_message_not_found() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let message = Message::xcm_response(origin.address, 0, 0, Response::Null); + let messages = >::get() as u64; + ExtBuilder::new() + .with_messages( + (0..messages - 1) + .map(|i| (origin.account.clone(), i, message.clone(), 0)) + .collect(), + ) + .build() + .execute_with(|| { + assert_revert!( + call_precompile::<()>( + &origin.account, + &remove_1(remove_1Call { messages: (0..messages).collect() }) + ), + MessageNotFound + ); + }); + } + + #[test] + fn remove_many_reverts_when_too_many_messages() { + let origin = ALICE; + let messages = >::get() as u64 + 1; + ExtBuilder::new().build().execute_with(|| { + assert_revert!( + call_precompile::<()>( + &origin, + &remove_1(remove_1Call { messages: (0..messages).collect() }) + ), + TooManyMessages + ); + }); + } + + #[test] + fn remove_many_works() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let messages = 10; + let message = + Message::ismp_response(origin.address, H256::default(), 0, BoundedVec::default()); + ExtBuilder::new() + .with_messages( + (0..messages).map(|i| (origin.account.clone(), i, message.clone(), 0)).collect(), + ) + .build() + .execute_with(|| { + let messages: Vec<_> = (0..messages).collect(); + assert_ok!(call_precompile::<()>( + &origin.account, + &remove_1(remove_1Call { messages: messages.clone() }) + )); + + let account = origin.address(); + assert_last_event(ADDRESS, Removed { account, messages }); + }); + } + + fn call_precompile::RustType>>( + origin: &AccountId, + input: &IISMPCalls, + ) -> Result { + bare_call::( + RuntimeOrigin::signed(origin.clone()), + ADDRESS.into(), + 0, + Weight::MAX, + DepositLimit::Balance(u128::MAX), + input.abi_encode(), + ) + } + + fn get_hash(request: &IISMP::Get) -> H256 { + keccak_256( + Request::Get(GetRequest { + source: StateMachine::Polkadot(2_000), + dest: StateMachine::Polkadot(request.destination), + nonce: pallet_ismp::Nonce::::get(), + from: ID.to_vec(), + keys: request.keys.iter().map(|key| key.to_vec()).collect(), + height: request.height, + context: request.context.to_vec(), + timeout_timestamp: Timestamp::now().as_secs() + request.timeout, + }) + .encode() + .as_ref(), + ) + .into() + } + + fn post_hash(request: &IISMP::Post) -> H256 { + keccak_256( + Request::Post(PostRequest { + source: StateMachine::Polkadot(2_000), + dest: StateMachine::Polkadot(request.destination), + nonce: pallet_ismp::Nonce::::get(), + from: ID.to_vec(), + to: request.to.to_vec(), + timeout_timestamp: Timestamp::now().as_secs() + request.timeout, + body: request.data.to_vec(), + }) + .encode() + .as_ref(), + ) + .into() + } +} diff --git a/pallets/api-vnext/src/messaging/precompiles/v0.rs b/pallets/api-vnext/src/messaging/precompiles/v0.rs new file mode 100644 index 000000000..e18cc7d3a --- /dev/null +++ b/pallets/api-vnext/src/messaging/precompiles/v0.rs @@ -0,0 +1,497 @@ +pub(crate) use IMessaging::*; +pub(crate) use IMessagingCalls; + +use super::*; +use crate::{ + messaging::{ + self, + precompiles::v0::IMessaging::{ + getResponseCall, pollStatusCall, remove_0Call, remove_0Return, remove_1Call, + }, + Config, + }, + TryConvert, +}; + +sol!( + #![sol(extra_derives(Debug, PartialEq))] + "src/messaging/precompiles/interfaces/v0/IMessaging.sol" +); + +pub struct Messaging(PhantomData); +impl< + const FIXED: u16, + T: frame_system::Config + pallet_revive::Config + parachain_info::Config + Config, + > Precompile for Messaging +{ + type Interface = IMessagingCalls; + type T = T; + + const HAS_CONTRACT_INFO: bool = false; + const MATCHER: AddressMatcher = + Fixed(NonZero::new(FIXED).expect("expected non-zero precompile address")); + + fn call( + _address: &[u8; 20], + input: &Self::Interface, + env: &mut impl Ext, + ) -> Result, pallet_revive::precompiles::Error> { + match input { + IMessagingCalls::getResponse(getResponseCall { message }) => { + env.charge(::WeightInfo::get_response())?; + + let response = get::(message).into(); + + Ok(getResponseCall::abi_encode_returns(&response)) + }, + IMessagingCalls::id(idCall {}) => { + env.charge(::WeightInfo::id())?; + + let id = id::(); + + Ok(idCall::abi_encode_returns(&id)) + }, + IMessagingCalls::pollStatus(pollStatusCall { message }) => { + env.charge(::WeightInfo::poll_status())?; + + let status = poll_status::(message).into(); + + Ok(pollStatusCall::abi_encode_returns(&status)) + }, + IMessagingCalls::remove_0(remove_0Call { message }) => { + env.charge(::WeightInfo::remove(1))?; + + let account = (|| { + let origin = Origin::try_from(env.caller())?; + let address = origin.address(); + + remove::(origin, &[*message])?; + + Ok(address) + })() + .map_err(Self::map_err)?; + + deposit_event(env, Removed { account, messages: vec![*message] })?; + Ok(remove_0Call::abi_encode_returns(&remove_0Return {})) + }, + IMessagingCalls::remove_1(remove_1Call { messages }) => { + let messages_len = messages.len().try_convert()?; + env.charge(::WeightInfo::remove(messages_len))?; + + let account = (|| { + let origin = Origin::try_from(env.caller())?; + let address = origin.address(); + + remove::(origin, messages)?; + + Ok(address) + })() + .map_err(Self::map_err)?; + + deposit_event(env, Removed { account, messages: messages.clone() })?; + Ok(remove_1Call::abi_encode_returns(&remove_1Return {})) + }, + } + } +} + +impl Messaging { + /// The address of the precompile. + pub const fn address() -> [u8; 20] { + fixed_address(FIXED) + } + + // Maps select, domain-specific dispatch errors to messaging errors. All others are mapped to + // more generic runtime errors. + fn map_err(e: frame::DispatchError) -> Error { + use frame::DispatchError::*; + match e { + Arithmetic(error) => self::Arithmetic::from(error).into(), + Module(ModuleError { index, error, .. }) => { + if Some(index as usize) == T::PalletInfo::index::>() { + use messaging::Error::{self, *}; + match Error::::decode(&mut error.as_slice()) { + Ok(MessageNotFound) => return IMessaging::MessageNotFound.into(), + Ok(RequestPending) => return IMessaging::RequestPending.into(), + Ok(TooManyMessages) => return IMessaging::TooManyMessages.into(), + _ => {}, + } + } + + self::Module { index, error: error.into() }.into() + }, + Token(error) => self::Token::from(error).into(), + Transactional(error) => self::Transactional::from(error).into(), + Trie(error) => self::Trie::from(error).into(), + other => self::Dispatch::from(other).into(), + } + } +} + +// Encoding of custom errors via `Error(String)`. +impl_from_sol_error! { + // Messaging + IMessaging::MessageNotFound, + IMessaging::RequestPending, + IMessaging::TooManyMessages, + // Generic + Arithmetic, + Dispatch, + Module, + Token, + Transactional, + Trie +} + +impl From for Arithmetic { + fn from(error: frame_support::sp_runtime::ArithmeticError) -> Self { + use frame_support::sp_runtime::ArithmeticError::*; + Self(match error { + Underflow => ArithmeticError::Underflow, + Overflow => ArithmeticError::Overflow, + DivisionByZero => ArithmeticError::DivisionByZero, + }) + } +} + +impl From for Dispatch { + fn from(error: frame::DispatchError) -> Self { + use frame::DispatchError::*; + Self(match error { + Other(_) => DispatchError::Other, + CannotLookup => DispatchError::CannotLookup, + BadOrigin => DispatchError::BadOrigin, + Module(_) => DispatchError::Module, + ConsumerRemaining => DispatchError::ConsumerRemaining, + NoProviders => DispatchError::NoProviders, + TooManyConsumers => DispatchError::TooManyConsumers, + Token(_) => DispatchError::Token, + Arithmetic(_) => DispatchError::Arithmetic, + Transactional(_) => DispatchError::Transactional, + Exhausted => DispatchError::Exhausted, + Corruption => DispatchError::Corruption, + Unavailable => DispatchError::Unavailable, + RootNotAllowed => DispatchError::RootNotAllowed, + Trie(_) => DispatchError::Trie, + }) + } +} + +impl From for Module { + fn from(error: frame_support::sp_runtime::ModuleError) -> Self { + Self { index: error.index, error: error.error.into() } + } +} + +impl From for Token { + fn from(error: frame_support::sp_runtime::TokenError) -> Self { + use frame_support::sp_runtime::TokenError::*; + Self(match error { + FundsUnavailable => TokenError::FundsUnavailable, + OnlyProvider => TokenError::OnlyProvider, + BelowMinimum => TokenError::BelowMinimum, + CannotCreate => TokenError::CannotCreate, + UnknownAsset => TokenError::Unknown, + Frozen => TokenError::Frozen, + Unsupported => TokenError::Unsupported, + CannotCreateHold => TokenError::CannotCreateHold, + NotExpendable => TokenError::NotExpendable, + Blocked => TokenError::Blocked, + }) + } +} + +impl From for Transactional { + fn from(error: frame_support::sp_runtime::TransactionalError) -> Self { + use frame_support::sp_runtime::TransactionalError::*; + Self(match error { + LimitReached => TransactionalError::LimitReached, + NoLayer => TransactionalError::NoLayer, + }) + } +} + +impl From for Trie { + fn from(error: frame_support::traits::TrieError) -> Self { + use frame_support::traits::TrieError::*; + Self(match error { + InvalidStateRoot => TrieError::InvalidStateRoot, + IncompleteDatabase => TrieError::IncompleteDatabase, + ValueAtIncompleteKey => TrieError::ValueAtIncompleteKey, + DecoderError => TrieError::DecoderError, + InvalidHash => TrieError::InvalidHash, + DuplicateKey => TrieError::DuplicateKey, + ExtraneousNode => TrieError::ExtraneousNode, + ExtraneousValue => TrieError::ExtraneousValue, + ExtraneousHashReference => TrieError::ExtraneousHashReference, + InvalidChildReference => TrieError::InvalidChildReference, + ValueMismatch => TrieError::ValueMismatch, + IncompleteProof => TrieError::IncompleteProof, + RootMismatch => TrieError::RootMismatch, + DecodeError => TrieError::DecodeError, + }) + } +} + +impl From for IMessaging::MessageStatus { + fn from(value: messaging::MessageStatus) -> Self { + use messaging::MessageStatus::*; + match value { + NotFound => Self::NotFound, + Pending => Self::Pending, + Complete => Self::Complete, + Timeout => Self::Timeout, + } + } +} + +#[cfg(test)] +mod tests { + use ::xcm::latest::Response; + use frame_support::{assert_ok, weights::Weight}; + use mock::{ExtBuilder, *}; + use pallet_revive::{ + precompiles::{ + alloy::sol_types::{SolInterface, SolType}, + Error, + }, + test_utils::ALICE, + }; + + use super::{super::MessageStatus::*, IMessagingCalls::*, *}; + + const ADDRESS: [u8; 20] = fixed_address(MESSAGING); + + type MaxRemovals = ::MaxRemovals; + type Origin = super::Origin; + + #[test] + fn get_response_works() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let expected = [ + (0, Vec::default()), + (1, b"ismp response".to_vec()), + (2, Encode::encode(&Response::Null)), + ]; + let messages = [ + ( + 1, + Message::ismp_response( + origin.address, + H256::default(), + 0, + b"ismp response".to_vec().try_into().unwrap(), + ), + ), + (2, Message::xcm_response(origin.address, 0, 0, Response::Null)), + ]; + ExtBuilder::new() + .with_messages(messages.map(|(i, m)| (origin.account.clone(), i, m, 0)).to_vec()) + .build() + .execute_with(|| { + for (message, expected) in expected { + let input = getResponse(getResponseCall { message }); + assert_eq!( + call_precompile::>(&origin.account, &input).unwrap(), + expected + ); + } + }); + } + + #[test] + fn id_works() { + let origin = ALICE; + ExtBuilder::new().build().execute_with(|| { + let para_id = u32::from(ParachainInfo::parachain_id()); + assert_eq!( + call_precompile::(&origin, &IMessagingCalls::id(idCall {})).unwrap(), + para_id + ); + }); + } + + #[test] + fn poll_status_works() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let expected = [(0, NotFound), (1, Pending), (2, Complete), (3, Timeout)]; + let messages = [ + (1, Message::xcm_query(origin.clone(), 0, None, 0)), + (2, Message::xcm_response(origin.address, 0, 0, Response::Null)), + (3, Message::xcm_timeout(origin.address, 0, 0, None)), + ]; + ExtBuilder::new() + .with_messages(messages.map(|(i, m)| (origin.account.clone(), i, m, 0)).to_vec()) + .build() + .execute_with(|| { + for (message, expected) in expected { + assert_eq!( + call_precompile::( + &origin.account, + &pollStatus(pollStatusCall { message }) + ) + .unwrap(), + expected.into() + ); + } + }); + } + + #[test] + fn remove_reverts_when_message_pending() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let message = 1; + ExtBuilder::new() + .with_messages(vec![( + origin.account.clone(), + message, + Message::xcm_query(origin.clone(), 0, None, 0), + 0, + )]) + .build() + .execute_with(|| { + assert_revert!( + call_precompile::<()>(&origin.account, &remove_0(remove_0Call { message })), + RequestPending + ); + }); + } + + #[test] + fn remove_reverts_when_message_not_found() { + let origin = ALICE; + let message = 1; + ExtBuilder::new().build().execute_with(|| { + assert_revert!( + call_precompile::<()>(&origin, &remove_0(remove_0Call { message })), + MessageNotFound + ); + }); + } + + #[test] + fn remove_works() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let message = 1; + ExtBuilder::new() + .with_messages(vec![( + origin.account.clone(), + message, + Message::xcm_response(origin.address, 0, 0, Response::Null), + 0, + )]) + .build() + .execute_with(|| { + assert_ok!(call_precompile::<()>( + &origin.account, + &remove_0(remove_0Call { message }) + )); + + let account = origin.address(); + assert_last_event(ADDRESS, Removed { account, messages: vec![message] }); + }); + } + + #[test] + fn remove_many_reverts_when_message_pending() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let message = Message::xcm_response(origin.address, 0, 0, Response::Null); + let messages = >::get() as u64; + ExtBuilder::new() + .with_messages( + (0..messages - 1) + .map(|i| (origin.account.clone(), i, message.clone(), 0)) + .chain(vec![( + origin.account.clone(), + messages, + Message::xcm_query(origin.clone(), 0, None, 0), + 0, + )]) + .collect(), + ) + .build() + .execute_with(|| { + assert_revert!( + call_precompile::<()>( + &origin.account, + &remove_1(remove_1Call { messages: (0..messages).collect() }) + ), + MessageNotFound + ); + }); + } + + #[test] + fn remove_many_reverts_when_message_not_found() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let message = Message::xcm_response(origin.address, 0, 0, Response::Null); + let messages = >::get() as u64; + ExtBuilder::new() + .with_messages( + (0..messages - 1) + .map(|i| (origin.account.clone(), i, message.clone(), 0)) + .collect(), + ) + .build() + .execute_with(|| { + assert_revert!( + call_precompile::<()>( + &origin.account, + &remove_1(remove_1Call { messages: (0..messages).collect() }) + ), + MessageNotFound + ); + }); + } + + #[test] + fn remove_many_reverts_when_too_many_messages() { + let origin = ALICE; + let messages = >::get() as u64 + 1; + ExtBuilder::new().build().execute_with(|| { + assert_revert!( + call_precompile::<()>( + &origin, + &remove_1(remove_1Call { messages: (0..messages).collect() }) + ), + TooManyMessages + ); + }); + } + + #[test] + fn remove_many_works() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let messages = 10; + let message = Message::xcm_response(origin.address, 0, 0, Response::Null); + ExtBuilder::new() + .with_messages( + (0..messages).map(|i| (origin.account.clone(), i, message.clone(), 0)).collect(), + ) + .build() + .execute_with(|| { + let messages: Vec<_> = (0..messages).collect(); + assert_ok!(call_precompile::<()>( + &origin.account, + &remove_1(remove_1Call { messages: messages.clone() }) + )); + + let account = origin.address(); + assert_last_event(ADDRESS, Removed { account, messages }); + }); + } + + fn call_precompile::RustType>>( + origin: &AccountId, + input: &IMessagingCalls, + ) -> Result { + bare_call::( + RuntimeOrigin::signed(origin.clone()), + ADDRESS.into(), + 0, + Weight::MAX, + DepositLimit::Balance(u128::MAX), + input.abi_encode(), + ) + } +} diff --git a/pallets/api-vnext/src/messaging/precompiles/xcm.rs b/pallets/api-vnext/src/messaging/precompiles/xcm.rs new file mode 100644 index 000000000..66e5f8a58 --- /dev/null +++ b/pallets/api-vnext/src/messaging/precompiles/xcm.rs @@ -0,0 +1,5 @@ +use super::*; + +/// The first version of the XCM messaging API. +#[allow(ambiguous_associated_items)] +pub mod v0; diff --git a/pallets/api-vnext/src/messaging/precompiles/xcm/v0.rs b/pallets/api-vnext/src/messaging/precompiles/xcm/v0.rs new file mode 100644 index 000000000..ef6a09af4 --- /dev/null +++ b/pallets/api-vnext/src/messaging/precompiles/xcm/v0.rs @@ -0,0 +1,980 @@ +use ::xcm::{VersionedLocation, VersionedXcm, MAX_XCM_DECODE_DEPTH}; +use codec::{DecodeAll, DecodeLimit}; +use pallet_xcm::WeightInfo as _; +use sp_runtime::traits::{Block, Header}; +pub(crate) use IXCM::*; + +use super::*; +use crate::{ + messaging::{transports::xcm::new_query, Config}, + TryConvert, +}; + +sol!( + #![sol(extra_derives(Debug, PartialEq))] + "src/messaging/precompiles/interfaces/v0/IXCM.sol" +); + +pub(crate) type BlockNumberOf = + <<::Block as Block>::Header as Header>::Number; + +/// The XCM precompile offers a streamlined interface for messaging using Polkadot's Cross-Consensus +/// Messaging (XCM). +pub struct Xcm(PhantomData); +impl< + const FIXED: u16, + T: frame_system::Config + + pallet_revive::Config + + pallet_xcm::Config + + parachain_info::Config + + Config, + > Precompile for Xcm +where + BlockNumberOf: From, + u32: From>, + U256: TryConvert< + <::Fungibles as Inspect>::Balance, + Error = frame::DispatchError, + >, +{ + type Interface = IXCMCalls; + type T = T; + + const HAS_CONTRACT_INFO: bool = false; + const MATCHER: AddressMatcher = + Fixed(NonZero::new(FIXED).expect("expected non-zero precompile address")); + + fn call( + _address: &[u8; 20], + input: &Self::Interface, + env: &mut impl Ext, + ) -> Result, Error> { + match input { + IXCMCalls::blockNumber(blockNumberCall {}) => { + env.charge(::WeightInfo::block_number())?; + + let block_number = u32::from(frame_system::Pallet::::block_number()); + + Ok(blockNumberCall::abi_encode_returns(&block_number)) + }, + IXCMCalls::execute(executeCall { message, weight }) => { + // Based on https://github.com/paritytech/polkadot-sdk/blob/master/polkadot/xcm/pallet-xcm/src/precompiles.rs + let weight = weight.into(); + let charged = env.charge(weight)?; + let message = VersionedXcm::decode_all_with_depth_limit( + MAX_XCM_DECODE_DEPTH, + &mut &message[..], + ) + .map_err(|_| Error::from(IXCM::DecodingFailed))? + .into(); + + let result = >::execute( + to_runtime_origin(env.caller()), + message, + weight, + ); + + if let Ok(result) = result { + // Adjust weight + if let Some(actual_weight) = result.actual_weight { + // TODO: replace with `env.adjust_gas(charged, result.weight);` once + // #8693 lands + env.gas_meter_mut() + .adjust_gas(charged, RuntimeCosts::Precompile(actual_weight)); + } + } + + Ok(executeCall::abi_encode_returns(&result.encode().into())) + }, + IXCMCalls::getResponse(getResponseCall { message }) => { + env.charge(::WeightInfo::get_response())?; + + let response = get::(message).into(); + + Ok(getResponseCall::abi_encode_returns(&response)) + }, + IXCMCalls::id(idCall {}) => { + env.charge(::WeightInfo::id())?; + + let id = id::(); + + Ok(idCall::abi_encode_returns(&id)) + }, + IXCMCalls::newQuery_0(newQuery_0Call { responder, timeout }) => { + env.charge(::WeightInfo::xcm_new_query(0))?; + let location = Location::decode(&mut &responder[..]) + .map_err(|_| Error::from(IXCM::DecodingFailed))?; + + let (account, id, query_id) = (|| { + let origin: Origin<_> = env.caller().try_into()?; + let address = origin.address(); + + let (id, query_id) = new_query::(origin, location, (*timeout).into(), None)?; + + Ok((address, id, query_id)) + })() + .map_err(Self::map_err)?; + + deposit_event(env, QueryCreated_0 { account, id, queryId: query_id })?; + Ok(newQuery_0Call::abi_encode_returns(&newQuery_0Return { id, queryId: query_id })) + }, + IXCMCalls::newQuery_1(newQuery_1Call { responder, timeout, callback }) => { + env.charge(::WeightInfo::xcm_new_query(1))?; + let location = Location::decode(&mut &responder[..]) + .map_err(|_| Error::from(IXCM::DecodingFailed))?; + let cb = callback.try_into()?; + + let (account, id, query_id) = (|| { + let origin: Origin<_> = env.caller().try_into()?; + let address = origin.address(); + + let (id, query_id) = + new_query::(origin, location, (*timeout).into(), Some(cb))?; + + Ok((address, id, query_id)) + })() + .map_err(Self::map_err)?; + + let event = + QueryCreated_1 { account, id, callback: callback.clone(), queryId: query_id }; + deposit_event(env, event)?; + Ok(newQuery_1Call::abi_encode_returns(&newQuery_1Return { id, queryId: query_id })) + }, + IXCMCalls::pollStatus(pollStatusCall { message }) => { + env.charge(::WeightInfo::poll_status())?; + + let status = poll_status::(message).into(); + + Ok(pollStatusCall::abi_encode_returns(&status)) + }, + IXCMCalls::remove_0(remove_0Call { message }) => { + env.charge(::WeightInfo::remove(1))?; + + let account = (|| { + let origin = Origin::try_from(env.caller())?; + let address = origin.address(); + + remove::(origin, &[*message])?; + + Ok(address) + })() + .map_err(Self::map_err)?; + + deposit_event(env, Removed { account, messages: vec![*message] })?; + Ok(remove_0Call::abi_encode_returns(&remove_0Return {})) + }, + IXCMCalls::remove_1(remove_1Call { messages }) => { + let messages_len = messages.len().try_convert()?; + env.charge(::WeightInfo::remove(messages_len))?; + + let account = (|| { + let origin = Origin::try_from(env.caller())?; + let address = origin.address(); + + remove::(origin, messages)?; + + Ok(address) + })() + .map_err(Self::map_err)?; + + deposit_event(env, Removed { account, messages: messages.clone() })?; + Ok(remove_1Call::abi_encode_returns(&remove_1Return {})) + }, + IXCMCalls::send(sendCall { destination, message }) => { + // Based on https://github.com/paritytech/polkadot-sdk/blob/master/polkadot/xcm/pallet-xcm/src/precompiles.rs + env.charge(::WeightInfo::send())?; + let destination = VersionedLocation::decode_all(&mut &destination[..]) + .map_err(|_| Error::from(IXCM::DecodingFailed))? + .into(); + let message = VersionedXcm::decode_all_with_depth_limit( + MAX_XCM_DECODE_DEPTH, + &mut &message[..], + ) + .map_err(|_| Error::from(IXCM::DecodingFailed))? + .into(); + + let result = >::send( + to_runtime_origin(env.caller()), + destination, + message, + ); + + Ok(sendCall::abi_encode_returns(&result.encode().into())) + }, + } + } +} + +impl Xcm { + /// The address of the precompile. + pub const fn address() -> [u8; 20] { + fixed_address(FIXED) + } + + // Maps select, domain-specific dispatch errors to messaging errors. All others are mapped to + // more generic runtime errors. + fn map_err(e: frame::DispatchError) -> Error { + use frame::DispatchError::*; + match e { + Arithmetic(error) => self::Arithmetic::from(error).into(), + Module(ModuleError { index, error, .. }) => { + if Some(index as usize) == T::PalletInfo::index::>() { + use messaging::Error::{self, *}; + match Error::::decode(&mut error.as_slice()) { + Ok(FutureTimeoutMandatory) => return IXCM::FutureTimeoutMandatory.into(), + Ok(MaxMessageTimeoutPerBlockReached) => + return IXCM::MaxMessageTimeoutPerBlockReached.into(), + Ok(MessageNotFound) => return self::MessageNotFound.into(), + Ok(OriginConversionFailed) => IXCM::OriginConversionFailed.into(), + Ok(RequestPending) => return self::RequestPending.into(), + Ok(TooManyMessages) => return self::TooManyMessages.into(), + _ => {}, + } + } + + self::Module { index, error: error.into() }.into() + }, + Token(sp_runtime::TokenError::FundsUnavailable) => IXCM::FundsUnavailable.into(), + Token(error) => self::Token::from(error).into(), + Transactional(error) => self::Transactional::from(error).into(), + Trie(error) => self::Trie::from(error).into(), + other => self::Dispatch::from(other).into(), + } + } +} + +// Encoding of custom errors via `Error(String)`. +impl_from_sol_error! { + // XCM + IXCM::DecodingFailed, + IXCM::FundsUnavailable, + IXCM::FutureTimeoutMandatory, + IXCM::MaxMessageTimeoutPerBlockReached, + IXCM::OriginConversionFailed, + // Messaging + InvalidEncoding, + MessageNotFound, + RequestPending, + TooManyMessages, + // Generic + Arithmetic, + Dispatch, + Module, + Token, + Transactional, + Trie +} + +impl EncodeCallback for Response { + fn encode(&self, encoding: messaging::Encoding, selector: [u8; 4], id: MessageId) -> Vec { + use messaging::Encoding::*; + // XCM responses are always SCALE-encoded. + let response = codec::Encode::encode(&self); + match encoding { + Scale => [selector.to_vec(), (id, response).encode()].concat(), + SolidityAbi => { + let call = IQueryResponse::onQueryResponseCall { id, response: response.into() }; + let mut data = call.abi_encode(); + debug_assert_eq!(data[..4], selector); + // Replace selector with that provided at request + data.splice(0..4, selector); + data + }, + } + } +} + +impl TryFrom<&Callback> for super::Callback +where + U256: TryConvert, +{ + type Error = Error; + + fn try_from(callback: &Callback) -> Result { + Ok(Self::new( + (*callback.destination.0).into(), + (&callback.encoding).try_into()?, + callback.selector.0, + (&callback.gasLimit).into(), + callback.storageDepositLimit.try_convert()?, + )) + } +} + +impl TryFrom<&Encoding> for super::Encoding { + type Error = Error; + + fn try_from(encoding: &Encoding) -> Result { + match encoding { + Encoding::Scale => Ok(Self::Scale), + Encoding::SolidityAbi => Ok(Self::SolidityAbi), + Encoding::__Invalid => Err(InvalidEncoding.into()), + } + } +} + +impl From for Arithmetic { + fn from(error: frame_support::sp_runtime::ArithmeticError) -> Self { + use frame_support::sp_runtime::ArithmeticError::*; + Self(match error { + Underflow => ArithmeticError::Underflow, + Overflow => ArithmeticError::Overflow, + DivisionByZero => ArithmeticError::DivisionByZero, + }) + } +} + +impl From for Dispatch { + fn from(error: frame::DispatchError) -> Self { + use frame::DispatchError::*; + Self(match error { + Other(_) => DispatchError::Other, + CannotLookup => DispatchError::CannotLookup, + BadOrigin => DispatchError::BadOrigin, + Module(_) => DispatchError::Module, + ConsumerRemaining => DispatchError::ConsumerRemaining, + NoProviders => DispatchError::NoProviders, + TooManyConsumers => DispatchError::TooManyConsumers, + Token(_) => DispatchError::Token, + Arithmetic(_) => DispatchError::Arithmetic, + Transactional(_) => DispatchError::Transactional, + Exhausted => DispatchError::Exhausted, + Corruption => DispatchError::Corruption, + Unavailable => DispatchError::Unavailable, + RootNotAllowed => DispatchError::RootNotAllowed, + Trie(_) => DispatchError::Trie, + }) + } +} + +impl From for Module { + fn from(error: frame_support::sp_runtime::ModuleError) -> Self { + Self { index: error.index, error: error.error.into() } + } +} + +impl From for Token { + fn from(error: frame_support::sp_runtime::TokenError) -> Self { + use frame_support::sp_runtime::TokenError::*; + Self(match error { + FundsUnavailable => TokenError::FundsUnavailable, + OnlyProvider => TokenError::OnlyProvider, + BelowMinimum => TokenError::BelowMinimum, + CannotCreate => TokenError::CannotCreate, + UnknownAsset => TokenError::Unknown, + Frozen => TokenError::Frozen, + Unsupported => TokenError::Unsupported, + CannotCreateHold => TokenError::CannotCreateHold, + NotExpendable => TokenError::NotExpendable, + Blocked => TokenError::Blocked, + }) + } +} + +impl From for Transactional { + fn from(error: frame_support::sp_runtime::TransactionalError) -> Self { + use frame_support::sp_runtime::TransactionalError::*; + Self(match error { + LimitReached => TransactionalError::LimitReached, + NoLayer => TransactionalError::NoLayer, + }) + } +} + +impl From for Trie { + fn from(error: frame_support::traits::TrieError) -> Self { + use frame_support::traits::TrieError::*; + Self(match error { + InvalidStateRoot => TrieError::InvalidStateRoot, + IncompleteDatabase => TrieError::IncompleteDatabase, + ValueAtIncompleteKey => TrieError::ValueAtIncompleteKey, + DecoderError => TrieError::DecoderError, + InvalidHash => TrieError::InvalidHash, + DuplicateKey => TrieError::DuplicateKey, + ExtraneousNode => TrieError::ExtraneousNode, + ExtraneousValue => TrieError::ExtraneousValue, + ExtraneousHashReference => TrieError::ExtraneousHashReference, + InvalidChildReference => TrieError::InvalidChildReference, + ValueMismatch => TrieError::ValueMismatch, + IncompleteProof => TrieError::IncompleteProof, + RootMismatch => TrieError::RootMismatch, + DecodeError => TrieError::DecodeError, + }) + } +} + +impl From for self::MessageStatus { + fn from(value: messaging::MessageStatus) -> Self { + use messaging::MessageStatus::*; + match value { + NotFound => Self::NotFound, + Pending => Self::Pending, + Complete => Self::Complete, + Timeout => Self::Timeout, + } + } +} + +impl From<&Weight> for super::Weight { + fn from(weight: &Weight) -> Self { + Self::from_parts(weight.refTime, weight.proofSize) + } +} + +impl From for Weight { + fn from(weight: super::Weight) -> Self { + Self { refTime: weight.ref_time(), proofSize: weight.proof_size() } + } +} + +#[cfg(test)] +mod tests { + use ::xcm::{ + latest::{Junction::Parachain, Response, Xcm}, + v5::WeightLimit, + }; + use frame_support::{assert_ok, dispatch::PostDispatchInfo, weights::Weight}; + use mock::{messaging::RESPONSE_LOCATION, ExtBuilder, *}; + use pallet_revive::{ + precompiles::{ + alloy::sol_types::{SolInterface, SolType}, + Error, + }, + test_utils::ALICE, + }; + use pallet_xcm::ExecutionError; + + use super::{IXCMCalls::*, MessageStatus::*, *}; + + type MaxXcmQueryTimeoutsPerBlock = ::MaxXcmQueryTimeoutsPerBlock; + type MaxRemovals = ::MaxRemovals; + type Messages = crate::messaging::Messages; + type Origin = super::Origin; + type XcmQueryTimeouts = crate::messaging::XcmQueryTimeouts; + + const ADDRESS: [u8; 20] = fixed_address(XCM); + const MESSAGE_DEPOSIT: u128 = 129_600; + + #[test] + fn block_number_works() { + let origin = ALICE; + let block_number = 1; + ExtBuilder::new().build().execute_with(|| { + assert_eq!( + call_precompile::(&origin, &blockNumber(blockNumberCall {})).unwrap(), + block_number + ); + }); + } + + #[test] + fn execute_reverts_when_decoding_failed() { + let origin = ALICE; + let message = Vec::default().into(); + let weight = Weight::default().into(); + ExtBuilder::new().build().execute_with(|| { + let input = execute(executeCall { message, weight }); + assert_revert!(call_precompile::<()>(&origin, &input), DecodingFailed); + }); + } + + #[test] + fn execute_works() { + let origin = ALICE; + let asset = (Location::here(), 100); + let xcm = Xcm::<()>::builder() + .withdraw_asset(asset.clone()) + .buy_execution(asset, WeightLimit::Unlimited) + .build(); + let versioned_xcm = VersionedXcm::V5(xcm); + let message = versioned_xcm.encode().into(); + let weight = Weight::from_parts(100_000, 100_000).into(); + ExtBuilder::new().build().execute_with(|| { + let call = execute(executeCall { message, weight }); + let response = call_precompile::>(&origin, &call).unwrap(); + let result = Result::::decode( + &mut response.as_slice(), + ) + .unwrap(); + + // No xcm-executor currently configured in mock runtime + assert_eq!( + result, + Err(DispatchErrorWithPostInfo { + post_info: PostDispatchInfo { + actual_weight: Some(Weight::from_parts(100_000_000, 0)), + pays_fee: Pays::Yes + }, + error: pallet_xcm::Error::::LocalExecutionIncompleteWithError { + index: 0, + error: ExecutionError::Unimplemented + } + .into() + }) + ); + }); + } + + #[test] + fn get_response_works() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let message = 1; + let response = Response::Null; + ExtBuilder::new() + .with_messages(vec![( + origin.account.clone(), + message, + Message::xcm_response(origin.address, 0, 0, response.clone()), + 0, + )]) + .build() + .execute_with(|| { + assert_eq!( + call_precompile::>( + &origin.account, + &getResponse(getResponseCall { message }) + ) + .unwrap(), + Encode::encode(&response) + ); + }); + } + + #[test] + fn id_works() { + let origin = ALICE; + ExtBuilder::new().build().execute_with(|| { + let para_id = u32::from(ParachainInfo::parachain_id()); + assert_eq!( + call_precompile::(&origin, &IXCMCalls::id(idCall {})).unwrap(), + para_id + ); + }); + } + + #[test] + fn new_query_reverts_when_decoding_failed() { + let origin = ALICE; + let responder = Vec::default().into(); + let timeout = 100; + ExtBuilder::new().build().execute_with(|| { + let input = newQuery_0(newQuery_0Call { responder, timeout }); + assert_revert!(call_precompile::<()>(&origin, &input), DecodingFailed); + }); + } + + #[test] + fn new_query_reverts_when_timeout_passed() { + let origin = ALICE; + let responder = RESPONSE_LOCATION.encode().into(); + let timeout = 0; + ExtBuilder::new().build().execute_with(|| { + let input = newQuery_0(newQuery_0Call { responder, timeout }); + assert_revert!(call_precompile::<()>(&origin, &input), FutureTimeoutMandatory); + }); + } + + #[test] + fn new_query_reverts_when_max_query_timeouts_reached() { + let origin = ALICE; + let responder = RESPONSE_LOCATION.encode().into(); + let timeout = 2; + ExtBuilder::new().build().execute_with(|| { + let current_block = frame_system::Pallet::::block_number(); + XcmQueryTimeouts::set( + current_block + timeout, + vec![0; MaxXcmQueryTimeoutsPerBlock::get() as usize].try_into().unwrap(), + ); + + let input = newQuery_0(newQuery_0Call { responder, timeout }); + assert_revert!( + call_precompile::<()>(&origin, &input), + MaxMessageTimeoutPerBlockReached + ); + }); + } + + #[test] + fn new_query_reverts_when_funds_unavailable() { + let origin = ALICE; + let responder = RESPONSE_LOCATION.encode().into(); + let timeout = 2; + ExtBuilder::new().build().execute_with(|| { + let input = newQuery_0(newQuery_0Call { responder, timeout }); + assert_revert!(call_precompile::<()>(&origin, &input), FundsUnavailable); + }); + } + + #[test] + fn new_query_works() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let responder = RESPONSE_LOCATION.encode().into(); + let timeout = 100; + let message = 1; + let query_id = 2; + ExtBuilder::new() + .with_balances(vec![(origin.account.clone(), 1 * UNIT)]) // message deposit + .with_message_id(message) + .with_query_id(query_id) + .build() + .execute_with(|| { + let call = newQuery_0(newQuery_0Call { responder, timeout }); + assert_eq!( + call_precompile::(&origin.account, &call).unwrap(), + message + ); + + let account = origin.address(); + let event = QueryCreated_0 { account, id: message, queryId: query_id }; + assert_last_event(ADDRESS, event); + assert!(matches!( + Messages::get(message), + Some(Message::XcmQuery { origin: o, query_id: qid, callback, message_deposit }) + if o == origin && qid == query_id && callback.is_none() && message_deposit == MESSAGE_DEPOSIT) + ); + }); + } + + #[test] + fn new_query_with_callback_reverts_when_decoding_failed() { + let origin = ALICE; + let responder = Vec::default().into(); + let timeout = 100; + let callback = Callback { + destination: [255u8; 20].into(), + encoding: super::Encoding::Scale, + selector: [255u8; 4].into(), + gasLimit: super::Weight { refTime: 100, proofSize: 10 }, + storageDepositLimit: U256::from(100), + }; + ExtBuilder::new().build().execute_with(|| { + let input = newQuery_1(newQuery_1Call { responder, timeout, callback }); + assert_revert!(call_precompile::<()>(&origin, &input), DecodingFailed); + }); + } + + #[test] + fn new_query_with_callback_reverts_when_timeout_passed() { + let origin = ALICE; + let responder = RESPONSE_LOCATION.encode().into(); + let timeout = 0; + let callback = Callback { + destination: [255u8; 20].into(), + encoding: super::Encoding::Scale, + selector: [255u8; 4].into(), + gasLimit: super::Weight { refTime: 100, proofSize: 10 }, + storageDepositLimit: U256::from(100), + }; + ExtBuilder::new().build().execute_with(|| { + let input = newQuery_1(newQuery_1Call { responder, timeout, callback }); + assert_revert!(call_precompile::<()>(&origin, &input), FutureTimeoutMandatory); + }); + } + + #[test] + fn new_query_with_callback_reverts_when_max_query_timeouts_reached() { + let origin = ALICE; + let responder = RESPONSE_LOCATION.encode().into(); + let timeout = 2; + let callback = Callback { + destination: [255u8; 20].into(), + encoding: super::Encoding::Scale, + selector: [255u8; 4].into(), + gasLimit: super::Weight { refTime: 100, proofSize: 10 }, + storageDepositLimit: U256::from(100), + }; + ExtBuilder::new().build().execute_with(|| { + let current_block = frame_system::Pallet::::block_number(); + XcmQueryTimeouts::set( + current_block + timeout, + vec![0; MaxXcmQueryTimeoutsPerBlock::get() as usize].try_into().unwrap(), + ); + + let input = newQuery_1(newQuery_1Call { responder, timeout, callback }); + assert_revert!( + call_precompile::<()>(&origin, &input), + MaxMessageTimeoutPerBlockReached + ); + }); + } + + #[test] + fn new_query_with_callback_reverts_when_funds_unavailable() { + let origin = ALICE; + let responder = RESPONSE_LOCATION.encode().into(); + let timeout = 2; + let callback = Callback { + destination: [255u8; 20].into(), + encoding: super::Encoding::Scale, + selector: [255u8; 4].into(), + gasLimit: super::Weight { refTime: 100, proofSize: 10 }, + storageDepositLimit: U256::from(100), + }; + ExtBuilder::new().build().execute_with(|| { + let input = newQuery_1(newQuery_1Call { responder, timeout, callback }); + assert_revert!(call_precompile::<()>(&origin, &input), FundsUnavailable); + }); + } + + #[test] + fn new_query_with_callback_works() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let responder = RESPONSE_LOCATION.encode().into(); + let timeout = 100; + let callback = Callback { + destination: [255u8; 20].into(), + encoding: super::Encoding::Scale, + selector: [255u8; 4].into(), + gasLimit: super::Weight { refTime: 100, proofSize: 10 }, + storageDepositLimit: U256::from(100), + }; + let message = 1; + let query_id = 2; + ExtBuilder::new() + .with_balances(vec![(origin.account.clone(), 1 * UNIT)]) // message deposit + .with_message_id(message) + .with_query_id(query_id) + .build() + .execute_with(|| { + let call = newQuery_1(newQuery_1Call { responder, timeout, callback: callback.clone() }); + assert_eq!( + call_precompile::(&origin.account, &call).unwrap(), + message + ); + + let account = origin.address(); + let event = QueryCreated_1 { account, id: message, queryId: query_id, callback: callback.clone() }; + assert_last_event(ADDRESS, event); + assert!(matches!( + Messages::get(message), + Some(Message::XcmQuery { origin: o, query_id: qid, callback: cb, message_deposit }) + if o == origin && qid == query_id && cb == Some((&callback).try_into().unwrap()) && message_deposit == MESSAGE_DEPOSIT) + ); + }); + } + + #[test] + fn poll_status_works() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let expected = [(0, NotFound), (1, Pending), (2, Complete), (3, Timeout)]; + let messages = [ + (1, Message::xcm_query(origin.clone(), 0, None, 0)), + (2, Message::xcm_response(origin.address, 0, 0, Response::Null)), + (3, Message::xcm_timeout(origin.address, 0, 0, None)), + ]; + ExtBuilder::new() + .with_messages(messages.map(|(i, m)| (origin.account.clone(), i, m, 0)).to_vec()) + .build() + .execute_with(|| { + for (message, expected) in expected { + assert_eq!( + call_precompile::( + &origin.account, + &pollStatus(pollStatusCall { message }) + ) + .unwrap(), + expected.into() + ); + } + }); + } + + #[test] + fn remove_reverts_when_message_pending() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let message = 1; + ExtBuilder::new() + .with_messages(vec![( + origin.account.clone(), + message, + Message::xcm_query(origin.clone(), 0, None, 0), + 0, + )]) + .build() + .execute_with(|| { + assert_revert!( + call_precompile::<()>(&origin.account, &remove_0(remove_0Call { message })), + RequestPending + ); + }); + } + + #[test] + fn remove_reverts_when_message_not_found() { + let origin = ALICE; + let message = 1; + ExtBuilder::new().build().execute_with(|| { + assert_revert!( + call_precompile::<()>(&origin, &remove_0(remove_0Call { message })), + MessageNotFound + ); + }); + } + + #[test] + fn remove_works() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let message = 1; + ExtBuilder::new() + .with_messages(vec![( + origin.account.clone(), + message, + Message::xcm_response(origin.address, 0, 0, Response::Null), + 0, + )]) + .build() + .execute_with(|| { + assert_ok!(call_precompile::<()>( + &origin.account, + &remove_0(remove_0Call { message }) + )); + + let account = origin.address(); + assert_last_event(ADDRESS, Removed { account, messages: vec![message] }); + }); + } + + #[test] + fn remove_many_reverts_when_message_pending() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let message = Message::xcm_response(origin.address, 0, 0, Response::Null); + let messages = >::get() as u64; + ExtBuilder::new() + .with_messages( + (0..messages - 1) + .map(|i| (origin.account.clone(), i, message.clone(), 0)) + .chain(vec![( + origin.account.clone(), + messages, + Message::xcm_query(origin.clone(), 0, None, 0), + 0, + )]) + .collect(), + ) + .build() + .execute_with(|| { + assert_revert!( + call_precompile::<()>( + &origin.account, + &remove_1(remove_1Call { messages: (0..messages).collect() }) + ), + MessageNotFound + ); + }); + } + + #[test] + fn remove_many_reverts_when_message_not_found() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let message = Message::xcm_response(origin.address, 0, 0, Response::Null); + let messages = >::get() as u64; + ExtBuilder::new() + .with_messages( + (0..messages - 1) + .map(|i| (origin.account.clone(), i, message.clone(), 0)) + .collect(), + ) + .build() + .execute_with(|| { + assert_revert!( + call_precompile::<()>( + &origin.account, + &remove_1(remove_1Call { messages: (0..messages).collect() }) + ), + MessageNotFound + ); + }); + } + + #[test] + fn remove_many_reverts_when_too_many_messages() { + let origin = ALICE; + let messages = >::get() as u64 + 1; + ExtBuilder::new().build().execute_with(|| { + assert_revert!( + call_precompile::<()>( + &origin, + &remove_1(remove_1Call { messages: (0..messages).collect() }) + ), + TooManyMessages + ); + }); + } + + #[test] + fn remove_many_works() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let messages = 10; + let message = Message::xcm_response(origin.address, 0, 0, Response::Null); + ExtBuilder::new() + .with_messages( + (0..messages).map(|i| (origin.account.clone(), i, message.clone(), 0)).collect(), + ) + .build() + .execute_with(|| { + let messages: Vec<_> = (0..messages).collect(); + assert_ok!(call_precompile::<()>( + &origin.account, + &remove_1(remove_1Call { messages: messages.clone() }) + )); + + let account = origin.address(); + assert_last_event(ADDRESS, Removed { account, messages }); + }); + } + + #[test] + fn send_reverts_when_decoding_failed() { + let origin = ALICE; + let destination = Location::new(1, [Parachain(1000).into()]); + let versioned_location = VersionedLocation::V5(destination); + let destination = versioned_location.encode().into(); + ExtBuilder::new().build().execute_with(|| { + let input = send(sendCall { + destination: Vec::default().into(), + message: Vec::default().into(), + }); + assert_revert!(call_precompile::<()>(&origin, &input), DecodingFailed); + + let input = send(sendCall { destination, message: Vec::default().into() }); + assert_revert!(call_precompile::<()>(&origin, &input), DecodingFailed); + }); + } + + #[test] + fn send_works() { + let origin = ALICE; + let destination = Location::new(1, [Parachain(1000).into()]); + let versioned_location = VersionedLocation::V5(destination); + let destination = versioned_location.encode().into(); + let asset = (Location::here(), 100); + let xcm = Xcm::<()>::builder() + .withdraw_asset(asset.clone()) + .buy_execution(asset, WeightLimit::Unlimited) + .build(); + let versioned_xcm = VersionedXcm::V5(xcm); + let message = versioned_xcm.encode().into(); + ExtBuilder::new().build().execute_with(|| { + let call = send(sendCall { destination, message }); + let response = call_precompile::>(&origin, &call).unwrap(); + let result = + Result::<(), frame::DispatchError>::decode(&mut response.as_slice()).unwrap(); + // No xcm router currently configured in mock runtime + assert_eq!(result, Err(pallet_xcm::Error::::Unreachable.into())); + }); + } + + fn call_precompile::RustType>>( + origin: &AccountId, + input: &IXCMCalls, + ) -> Result { + bare_call::( + RuntimeOrigin::signed(origin.clone()), + ADDRESS.into(), + 0, + Weight::MAX, + DepositLimit::Balance(u128::MAX), + input.abi_encode(), + ) + } +} diff --git a/pallets/api-vnext/src/messaging/tests.rs b/pallets/api-vnext/src/messaging/tests.rs new file mode 100644 index 000000000..1201f668a --- /dev/null +++ b/pallets/api-vnext/src/messaging/tests.rs @@ -0,0 +1,762 @@ +use frame_support::{ + assert_noop, assert_ok, + dispatch::PostDispatchInfo, + storage::{with_transaction, TransactionOutcome}, + traits::fungible::InspectHold, + weights::WeightToFee as _, +}; +use sp_runtime::TokenError::FundsUnavailable; +use HoldReason::*; + +use super::{CallbackExecutor as _, WeightInfo as _, *}; +use crate::mock::*; + +type CallbackExecutor = ::CallbackExecutor; +type Error = super::Error; +type Fungibles = ::Fungibles; +type IsmpRequests = super::IsmpRequests; +type Message = super::Message; +type Messages = super::Messages; +type Origin = super::Origin; +type WeightInfo = ::WeightInfo; +type WeightToFee = ::WeightToFee; +type XcmQueries = super::XcmQueries; + +mod remove { + use super::*; + + #[test] + fn message_not_found() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let message = 0; + ExtBuilder::new().build().execute_with(|| { + assert_noop!(remove(origin, &[message]), Error::MessageNotFound); + }) + } + + #[test] + fn only_originator_can_remove() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let messages = [ + Message::ismp_response(origin.address, H256::zero(), 0, BoundedVec::default()), + Message::ismp_timeout(origin.address, H256::zero(), 0, None), + Message::xcm_response(origin.address, 0, 0, Response::Null), + Message::xcm_timeout(origin.address, 0, 0, None), + ]; + let messages_len = messages.len(); + let caller = Origin::from((BOB_ADDR, BOB)); + ExtBuilder::new() + .with_messages( + messages + .into_iter() + .enumerate() + .map(|(i, m)| (origin.account.clone(), i as MessageId, m, 0)) + .collect(), + ) + .build() + .execute_with(|| { + for message in 0..messages_len { + assert_noop!( + remove(caller.clone(), &[message as MessageId]), + DispatchError::BadOrigin + ); + } + }) + } + + #[test] + fn multiple_messages_remove_works() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let deposit: Balance = 100; + // An ismp response can always be removed. + let message = + Message::ismp_response(origin.address, H256::default(), deposit, BoundedVec::default()); + let messages = 3; + let endowment = existential_deposit() + deposit * messages as Balance; + ExtBuilder::new() + .with_balances(vec![(origin.account.clone(), endowment)]) + .with_messages( + (0..messages) + .map(|i| (origin.account.clone(), i, message.clone(), deposit)) + .collect(), + ) + .build() + .execute_with(|| { + let messages = (0..messages).collect::>(); + assert_ok!(remove(origin, &messages)); + + for id in messages { + assert!(Messages::get(id).is_none(), "message should have been removed."); + } + }); + } + + #[test] + fn deposit_is_returned_if_try_remove_is_ok() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let deposit: Balance = 100; + // An ismp response can always be removed. + let message = + Message::ismp_response(origin.address, H256::default(), deposit, BoundedVec::default()); + let id = 1; + ExtBuilder::new() + .with_balances(vec![(origin.account.clone(), existential_deposit() + deposit)]) + .with_messages(vec![(origin.account.clone(), id, message, deposit)]) + .build() + .execute_with(|| { + let free_balance = Balances::free_balance(&origin.account); + + assert_ok!(remove(origin.clone(), &[id])); + + assert_eq!(Balances::free_balance(&origin.account), free_balance + deposit); + }); + } + + #[test] + fn deposit_is_not_returned_if_try_remove_is_noop() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let deposit: Balance = 100; + let message = Message::ismp(origin.clone(), H256::default(), None, deposit); + let id = 1; + ExtBuilder::new() + .with_balances(vec![(origin.account.clone(), existential_deposit() + deposit)]) + .with_messages(vec![(origin.account.clone(), id, message, deposit)]) + .build() + .execute_with(|| { + let free_balance = Balances::free_balance(&origin.account); + + assert_noop!(remove(origin.clone(), &[id]), Error::RequestPending); + + assert_eq!(Balances::free_balance(&origin.account), free_balance); + }); + } + + #[test] + fn multiple_messages_rolls_back_if_one_fails() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let deposit: Balance = 100; + let good_message = + Message::ismp_response(origin.address, H256::default(), deposit, BoundedVec::default()); + let erroneous_message = Message::ismp(origin.clone(), H256::default(), None, deposit); + let messages = 5; + let endowment = existential_deposit() + deposit * messages as Balance; + ExtBuilder::new() + .with_balances(vec![(origin.account.clone(), endowment)]) + .with_messages( + (0..messages - 1) + .map(|i| (origin.account.clone(), i, good_message.clone(), deposit)) + .chain([(origin.account.clone(), messages - 1, erroneous_message, deposit)]) + .collect(), + ) + .build() + .execute_with(|| { + let messages = (0..messages).collect::>(); + let free_balance = Balances::free_balance(&origin.account); + + assert_noop!(remove(origin.clone(), &messages), Error::RequestPending); + + for message in messages { + assert!(Messages::get(message).is_some()); + } + assert_eq!(Balances::free_balance(&origin.account), free_balance); + }); + } + + // Basic remove tests to ensure storage is cleaned. + #[test] + fn remove_ismp_message() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let commitment = H256::default(); + let id = 1; + let deposit = 100; + let message = Message::ismp(origin.clone(), commitment, None, deposit); + ExtBuilder::new() + .with_balances(vec![(origin.account.clone(), existential_deposit() + deposit)]) + .build() + .execute_with(|| { + Messages::insert(id, &message); + IsmpRequests::insert(commitment, &id); + assert_ok!(Fungibles::hold(&Messaging.into(), &origin.account, deposit)); + + assert_noop!(remove(origin.clone(), &[id]), Error::RequestPending); + + assert!( + Messages::get(id).is_some(), + "Message should not have been removed but has." + ); + assert!( + IsmpRequests::get(commitment).is_some(), + "Message should not have been removed but has." + ); + }) + } + + #[test] + fn remove_ismp_response() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let commitment = H256::default(); + let id = 1; + let deposit = 100; + let message = + Message::ismp_response(origin.address, commitment, deposit, BoundedVec::default()); + ExtBuilder::new() + .with_balances(vec![(origin.account.clone(), existential_deposit() + deposit)]) + .build() + .execute_with(|| { + Messages::insert(id, &message); + IsmpRequests::insert(commitment, &id); + assert_ok!(Fungibles::hold(&Messaging.into(), &origin.account, deposit)); + + assert_ok!(remove(origin, &[id])); + + assert!(Messages::get(id).is_none(), "Message should have been removed but hasnt."); + assert!( + IsmpRequests::get(commitment).is_none(), + "Request should have been removed but hasnt." + ); + }) + } + + #[test] + fn remove_ismp_timeout() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let commitment = H256::default(); + let deposit = 100; + let callback_deposit = 100_000; + let id = 1; + let message = + Message::ismp_timeout(origin.address, commitment, deposit, Some(callback_deposit)); + let endowment = existential_deposit() + deposit + callback_deposit; + ExtBuilder::new() + .with_balances(vec![(origin.account.clone(), endowment)]) + .build() + .execute_with(|| { + assert_ok!(Fungibles::hold(&Messaging.into(), &origin.account, deposit)); + assert_ok!(Fungibles::hold(&CallbackGas.into(), &origin.account, callback_deposit)); + + Messages::insert(id, &message); + IsmpRequests::insert(commitment, id); + + assert_ok!(remove(origin.clone(), &[id])); + + assert!(Messages::get(id).is_none(), "Message should have been removed but hasnt."); + assert!( + IsmpRequests::get(commitment).is_none(), + "Request should have been removed but hasnt." + ); + assert_eq!(Balances::total_balance_on_hold(&origin.account), 0); + }) + } + + #[test] + fn remove_xcm_query() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let query_id = 42; + let id = 1; + let deposit = 100; + let message = Message::xcm_query(origin.clone(), query_id, None, deposit); + ExtBuilder::new() + .with_balances(vec![(origin.account.clone(), existential_deposit() + deposit)]) + .build() + .execute_with(|| { + Messages::insert(id, &message); + XcmQueries::insert(query_id, &id); + assert_ok!(Fungibles::hold(&Messaging.into(), &origin.account, deposit)); + + assert_noop!(remove(origin, &[id]), Error::RequestPending); + assert!( + Messages::get(id).is_some(), + "Message should not have been removed but has" + ); + assert!( + XcmQueries::get(query_id).is_some(), + "Message should not have been removed but has." + ); + }) + } + + #[test] + fn remove_xcm_response() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let query_id = 42; + let id = 1; + let message_deposit = 100; + let message = + Message::xcm_response(origin.address, query_id, message_deposit, Response::default()); + ExtBuilder::new() + .with_balances(vec![(origin.account.clone(), existential_deposit() + message_deposit)]) + .build() + .execute_with(|| { + Messages::insert(id, &message); + XcmQueries::insert(query_id, &id); + assert_ok!(Fungibles::hold(&Messaging.into(), &origin.account, message_deposit)); + + assert_ok!(remove(origin, &[id])); + + assert!(Messages::get(id).is_none(), "Message should have been removed but hasnt"); + assert!( + XcmQueries::get(query_id).is_none(), + "Message should have been removed but hasnt." + ); + }) + } + + #[test] + fn remove_xcm_timeout() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let query_id = 42; + let id = 1; + let message_deposit = 100; + let callback_deposit = 100_000; + let message = + Message::xcm_timeout(origin.address, query_id, message_deposit, Some(callback_deposit)); + let endowment = existential_deposit() + message_deposit + callback_deposit; + ExtBuilder::new() + .with_balances(vec![(origin.account.clone(), endowment)]) + .build() + .execute_with(|| { + assert_ok!(Fungibles::hold(&Messaging.into(), &origin.account, message_deposit)); + assert_ok!(Fungibles::hold(&CallbackGas.into(), &origin.account, callback_deposit)); + + Messages::insert(id, &message); + XcmQueries::insert(query_id, id); + + assert_ok!(remove(origin.clone(), &[id])); + + assert!(Messages::get(id).is_none(), "Message should have been removed but hasnt"); + assert!( + XcmQueries::get(query_id).is_none(), + "Message should have been removed but hasnt." + ); + + // Assert that all holds specified have been released + assert_eq!(Balances::total_balance_on_hold(&origin.account), 0); + }) + } + + // `remove` is no longer a dispatchable and only callable via a precompile, hence we simply + // wrap calls to it in a transaction to simulate. See additional precompiles tests for + // further assurances. + fn remove(origin: Origin, messages: &[MessageId]) -> DispatchResult { + with_transaction(|| -> TransactionOutcome { + let result = super::remove::(origin, messages); + match &result { + Ok(_) => TransactionOutcome::Commit(result), + Err(_) => TransactionOutcome::Rollback(result), + } + }) + } +} + +mod xcm_response { + use transports::xcm::tests::{deposit, new_query, xcm_response_fee}; + + use super::{ + mock::{messaging::*, Messaging}, + *, + }; + + type BlockWeight = frame_system::BlockWeight; + type Pallet = Messaging; + + #[test] + fn message_not_found() { + ExtBuilder::new().build().execute_with(|| { + assert_noop!( + Pallet::xcm_response(root(), 0, Default::default()), + Error::MessageNotFound + ); + }) + } + + #[test] + fn timeout_messages_are_noop() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let message_id = 1; + let query_id = 42; + let endowment = existential_deposit() + deposit() + xcm_response_fee(); + ExtBuilder::new() + .with_balances(vec![(origin.account.clone(), endowment)]) + .with_message_id(message_id) + .with_query_id(query_id) + .build() + .execute_with(|| { + let timeout = System::block_number() + 1; + + assert_ok!(new_query(origin, RESPONSE_LOCATION, timeout, None)); + + // Update the message to XcmTimedOut + Messages::mutate(message_id, |message| { + let Some(Message::XcmQuery { origin, query_id, message_deposit, .. }): &mut Option< + Message, + > = message + else { + panic!("No message!"); + }; + *message = Some(Message::xcm_timeout( + origin.address, + *query_id, + *message_deposit, + None, + )); + }); + + assert_noop!( + Pallet::xcm_response(root(), query_id, Default::default()), + Error::RequestTimedOut + ); + }) + } + + #[test] + fn assert_event_no_callback() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let id = 1; + let query_id = 42; + let response = Response::Null; + let endowment = existential_deposit() + deposit() + xcm_response_fee(); + ExtBuilder::new() + .with_balances(vec![(origin.account.clone(), endowment)]) + .with_message_id(id) + .with_query_id(query_id) + .build() + .execute_with(|| { + let timeout = System::block_number() + 1; + assert_ok!(new_query(origin.clone(), RESPONSE_LOCATION, timeout, None)); + + assert_ok!(Pallet::xcm_response(root(), query_id, response.clone())); + + assert!(events().contains(&Event::XcmResponseReceived { + dest: origin.address, + id, + query_id, + response + })); + }) + } + + #[test] + fn assert_message_is_stored_for_polling_no_callback() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let id = 1; + let query_id = 42; + let response = Response::ExecutionResult(None); + let endowment = existential_deposit() + deposit() + xcm_response_fee(); + ExtBuilder::new() + .with_balances(vec![(origin.account.clone(), endowment)]) + .with_message_id(id) + .with_query_id(query_id) + .build() + .execute_with(|| { + let timeout = System::block_number() + 1; + assert_ok!(new_query(origin, RESPONSE_LOCATION, timeout, None)); + + assert_ok!(Pallet::xcm_response(root(), query_id, response.clone())); + + let Some(Message::XcmResponse { query_id: q, response: r, .. }): Option = + Messages::get(id) + else { + panic!("wrong message type"); + }; + + assert_eq!(q, query_id); + assert_eq!(r, response); + }) + } + + #[test] + fn message_is_removed_after_successfull_callback_execution() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let id = 1; + let query_id = 42; + let response = Response::ExecutionResult(None); + let callback = + Callback::new(H160::zero(), Encoding::Scale, [1; 4], 100.into(), 100u8.into()); + let callback_fee = WeightToFee::weight_to_fee(&callback.gas_limit); + let endowment = existential_deposit() + deposit() + xcm_response_fee() + callback_fee; + ExtBuilder::new() + .with_balances(vec![(origin.account.clone(), endowment)]) + .with_message_id(id) + .with_query_id(query_id) + .build() + .execute_with(|| { + let timeout = System::block_number() + 1; + + assert_ok!(new_query(origin, RESPONSE_LOCATION, timeout, Some(callback))); + + assert_ok!(Pallet::xcm_response(root(), query_id, response.clone())); + + assert!(Messages::get(id).is_none()); + assert!(XcmQueries::get(query_id).is_none()); + }) + } + + #[test] + fn message_deposit_returned_after_successfull_callback_execution() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let id = 1; + let query_id = 42; + let response = Response::ExecutionResult(None); + let callback = Callback::new(H160::zero(), Encoding::Scale, [1; 4], Zero::zero(), 0); + let endowment = existential_deposit() + deposit() + xcm_response_fee(); + ExtBuilder::new() + .with_balances(vec![(origin.account.clone(), endowment)]) + .with_message_id(id) + .with_query_id(query_id) + .build() + .execute_with(|| { + let timeout = System::block_number() + 1; + + assert_ok!(new_query(origin.clone(), RESPONSE_LOCATION, timeout, Some(callback))); + + let held_balance_pre_release = Balances::total_balance_on_hold(&origin.account); + assert_ne!(held_balance_pre_release, 0); + + assert_ok!(Pallet::xcm_response(root(), query_id, response.clone())); + + let held_balance_post_release = Balances::total_balance_on_hold(&origin.account); + assert_eq!(held_balance_post_release, 0); + }) + } + + // Dont include any callback weight so we can test the xcm_response blockweight mutation. + #[test] + fn assert_blockweight_mutation_no_callback() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let id = 1; + let query_id = 42; + let xcm_response = Response::ExecutionResult(None); + let endowment = existential_deposit() + deposit() + xcm_response_fee(); + ExtBuilder::new() + .with_balances(vec![(origin.account.clone(), endowment)]) + .with_message_id(id) + .with_query_id(query_id) + .build() + .execute_with(|| { + let timeout = System::block_number() + 1; + + let block_weight_pre_call = + BlockWeight::get().get(DispatchClass::Normal).to_owned(); + + assert_ne!( + CallbackExecutor::execution_weight(), + Zero::zero(), + "Please set a callback executor execution_weight to run this test." + ); + assert_ne!( + WeightInfo::xcm_response(), + Zero::zero(), + "Please set an T::WeightInfo::xcm_response() to run this test." + ); + assert_ok!(new_query(origin, RESPONSE_LOCATION, timeout, None)); + + assert_ok!(Pallet::xcm_response(root(), query_id, xcm_response.clone())); + + let block_weight_post_call = + BlockWeight::get().get(DispatchClass::Normal).to_owned(); + + assert_eq!( + block_weight_post_call - block_weight_pre_call, + WeightInfo::xcm_response() + CallbackExecutor::execution_weight() + ) + }) + } +} + +mod call { + use super::*; + + type BlockWeight = frame_system::pallet::BlockWeight; + + #[test] + fn assert_error_event() { + let origin = ALICE; + let weight = Weight::from_parts(100_000, 100_000); + let callback = Callback::new(H160::zero(), Encoding::Scale, [0u8; 4], weight, 100_000); + let message_id = 1; + let data = vec![100u8; 5]; + ExtBuilder::new().build().execute_with(|| { + assert_ok!(call::(&origin, callback, &message_id, &data)); + + System::assert_last_event( + Event::WeightRefundErrored { + message_id, + error: DispatchError::Token(FundsUnavailable), + } + .into(), + ); + }) + } + + // AlwaysSuccessfullCallbackExecutor should return half the weight of the callback.weight + // TODO: there may be a better way of handling this case. + #[test] + fn block_weight_mutation_happens() { + let origin = ALICE; + let weight = Weight::from_parts(10_000_000, 10_000_000); + let callback = Callback::new(H160::zero(), Encoding::Scale, [0u8; 4], weight, 10_000_000); + let id = 1; + let data = vec![100u8; 5]; + let callback_fee = ::WeightToFee::weight_to_fee(&weight); + let endowment = existential_deposit() + callback_fee; + ExtBuilder::new() + .with_balances(vec![(origin.clone(), endowment)]) + .build() + .execute_with(|| { + let block_weight_pre_call = + BlockWeight::get().get(DispatchClass::Normal).to_owned(); + assert_ok!(Fungibles::hold(&CallbackGas.into(), &origin, callback_fee)); + + assert_ok!(call::(&origin, callback, &id, &data)); + + let block_weight_post_call = + BlockWeight::get().get(DispatchClass::Normal).to_owned(); + assert_ne!(block_weight_post_call, Zero::zero()); + // callback weight used in tests is total / 2. + assert_eq!(block_weight_post_call - block_weight_pre_call, weight / 2); + }) + } +} + +mod process_callback_weight { + use super::*; + + #[test] + fn ok_with_weight_returns_weight() { + let weight = Weight::from_parts(100_000, 100_000); + let result = DispatchResultWithPostInfo::Ok(PostDispatchInfo { + actual_weight: Some(weight), + pays_fee: Pays::Yes, + }); + let max_weight = Weight::zero(); + assert_eq!(process_callback_weight(&result, max_weight), weight); + } + + #[test] + fn ok_without_weight_returns_max_weight() { + let result = DispatchResultWithPostInfo::Ok(PostDispatchInfo { + actual_weight: None, + pays_fee: Pays::Yes, + }); + let max_weight = Weight::from_parts(200_000, 200_000); + assert_eq!(process_callback_weight(&result, max_weight), max_weight); + } + + #[test] + fn err_returns_max_weight() { + let result = DispatchResultWithPostInfo::Err(DispatchErrorWithPostInfo { + post_info: Default::default(), + error: Error::InvalidMessage.into(), + }); + let max_weight = Weight::from_parts(200_000, 200_000); + assert_eq!(process_callback_weight(&result, max_weight), max_weight); + } +} + +mod deposit_callback_event { + use super::*; + + #[test] + fn emits_callback_executed_event_on_success() { + let origin = ALICE; + let message_id = 1; + let weight = Weight::from_parts(100_000, 100_000); + let callback = Callback::new(H160::zero(), Encoding::Scale, [0; 4], weight, 100_000); + let result: DispatchResultWithPostInfo = Ok(PostDispatchInfo { + actual_weight: Some(Weight::from_parts(1_000, 0)), + pays_fee: Default::default(), + }); + ExtBuilder::new().build().execute_with(|| { + deposit_callback_event::(origin.clone(), message_id, &callback, &result); + System::assert_last_event( + Event::::CallbackExecuted { origin, id: message_id, callback }.into(), + ); + }); + } + + #[test] + fn emits_callback_failed_event_on_error() { + let origin = BOB; + let message_id = 2; + let weight = Weight::from_parts(100_000, 100_000); + let callback = Callback::new(H160::zero(), Encoding::Scale, [0; 4], weight, 100_000); + let result = DispatchResultWithPostInfo::Err(DispatchErrorWithPostInfo { + post_info: Default::default(), + error: Error::InvalidMessage.into(), + }); + ExtBuilder::new().build().execute_with(|| { + deposit_callback_event::(origin.clone(), message_id, &callback, &result); + + System::assert_last_event( + Event::CallbackFailed { + origin, + id: message_id, + callback, + error: result.unwrap_err(), + } + .into(), + ); + }); + } +} + +mod manage_fees { + use mock::messaging::Treasury; + + use super::*; + + #[test] + fn assert_payback_when_execution_weight_is_less_than_deposit_held() { + let origin = ALICE; + let actual_weight_executed = Weight::from_parts(50_000_000, 70_000_000); + let callback_weight_reserved = Weight::from_parts(100_000_000, 100_000_000); + let deposit = WeightToFee::weight_to_fee(&callback_weight_reserved); + assert!(deposit != 0, "Please set an appropriate weight to fee implementation."); + let endowment = existential_deposit() + deposit; + let fee_account = Treasury::get(); + ExtBuilder::new() + .with_balances(vec![(origin.clone(), endowment)]) + .build() + .execute_with(|| { + // Artificially take the deposit + assert_ok!(Fungibles::hold(&CallbackGas.into(), &origin, deposit)); + + let expected_refund = deposit - WeightToFee::weight_to_fee(&actual_weight_executed); + assert!(expected_refund != 0); + + let fee_pot_payment = deposit - expected_refund; + + let fee_account_pre_handle = Balances::free_balance(&fee_account); + let origin_balance_pre_handle = Balances::free_balance(&origin); + + assert_ok!(manage_fees::( + &origin, + actual_weight_executed, + callback_weight_reserved + )); + + // origin should have been refunded by the tune of expected refund. + // the fee pot should have been increased by fee_pot_payment. + let fee_account_post_handle = Balances::free_balance(&fee_account); + let origin_balance_post_handle = Balances::free_balance(&origin); + + assert_eq!(origin_balance_post_handle - origin_balance_pre_handle, expected_refund); + assert_eq!(fee_account_post_handle, fee_account_pre_handle + fee_pot_payment); + }) + } +} + +pub fn events() -> Vec> { + let result = System::events() + .into_iter() + .map(|r| r.event) + .filter_map(|e| if let RuntimeEvent::Messaging(inner) = e { Some(inner) } else { None }) + .collect(); + + System::reset_events(); + result +} + +fn existential_deposit() -> Balance { + >::get() +} diff --git a/pallets/api-vnext/src/messaging/transports.rs b/pallets/api-vnext/src/messaging/transports.rs new file mode 100644 index 000000000..b46f189f9 --- /dev/null +++ b/pallets/api-vnext/src/messaging/transports.rs @@ -0,0 +1,8 @@ +use frame_support::ensure; + +use super::*; + +/// Messaging using the Interoperable State Machine Protocol (ISMP). +pub mod ismp; +/// Messaging using Polkadot's Cross-Consensus Messaging (XCM). +pub mod xcm; diff --git a/pallets/api-vnext/src/messaging/transports/ismp.rs b/pallets/api-vnext/src/messaging/transports/ismp.rs new file mode 100644 index 000000000..5a013b8dc --- /dev/null +++ b/pallets/api-vnext/src/messaging/transports/ismp.rs @@ -0,0 +1,788 @@ +pub(crate) use ::ismp::dispatcher::{FeeMetadata, IsmpDispatcher}; +use ::ismp::{ + dispatcher::{ + DispatchGet, DispatchPost, + DispatchRequest::{self}, + }, + messaging::hash_request, + module::IsmpModule, + router::{GetResponse, PostRequest, PostResponse, Request, Response, Timeout}, +}; +use frame_support::{ + ensure, + pallet_prelude::Weight, + traits::{fungible::MutateHold, tokens::Precision::Exact, Get as _}, +}; +use pallet_ismp::weights::IsmpModuleWeight; + +use super::{ + super::{Message, Pallet}, + *, +}; + +type GetState = ( + StateMachine, + [u8; 4], + BoundedVec::MaxKeyLen>, ::MaxKeys>, + u64, + BoundedVec::MaxContextLen>, + u64, +); +type PostState = + (StateMachine, [u8; 4], [u8; 4], u64, BoundedVec::MaxDataLen>); +type StateMachine = (u8, u32); + +pub const ID: [u8; 3] = *b"pop"; + +/// Submit a new ISMP `Get` request. +/// +/// This sends a `Get` request through ISMP, optionally with a callback to handle the +/// response. +/// +/// # Parameters +/// - `origin`: The account submitting the request. +/// - `message`: The ISMP `Get` message containing query details. +/// - `fee`: The fee to be paid to relayers. +/// - `callback`: Optional callback to execute upon receiving a response. +/// +/// # Returns +/// A unique identifier for the message. +pub(crate) fn get( + origin: Origin, + message: DispatchGet, + fee: BalanceOf, + callback: Option>>, +) -> Result<(MessageId, H256), DispatchError> { + // Take deposits and fees. + let message_deposit = + calculate_protocol_deposit::(ProtocolStorageDeposit::IsmpRequests) + .saturating_add(calculate_message_deposit::()) + .saturating_add(calculate_deposit_of::>()); + + T::Fungibles::hold(&HoldReason::Messaging.into(), &origin.account, message_deposit)?; + + if let Some(cb) = callback.as_ref() { + T::Fungibles::hold( + &HoldReason::CallbackGas.into(), + &origin.account, + T::WeightToFee::weight_to_fee(&cb.gas_limit), + )?; + } + + // Process message by dispatching request via ISMP. + let commitment = match T::IsmpDispatcher::default().dispatch_request( + DispatchRequest::Get(message), + FeeMetadata { payer: origin.account.clone(), fee }, + ) { + Ok(commitment) => Ok::(commitment), + Err(e) => { + if let Ok(err) = e.downcast::<::ismp::Error>() { + log::error!("ISMP Dispatch failed!! {:?}", err); + } + return Err(Error::::IsmpDispatchFailed.into()); + }, + }?; + // Store commitment for lookup on response, message for querying, + // response/timeout handling. + let id = next_message_id::()?; + IsmpRequests::::insert(commitment, id); + Messages::::insert(id, Message::Ismp { origin, commitment, callback, message_deposit }); + Ok((id, commitment)) +} + +/// Submit a new ISMP `Post` request. +/// +/// Sends a `Post` message through ISMP with arbitrary data and an optional callback. +/// +/// # Parameters +/// - `origin`: The account submitting the request. +/// - `message`: The ISMP `Post` message containing the payload. +/// - `fee`: The fee to be paid to relayers. +/// - `callback`: Optional callback to execute upon receiving a response. +/// +/// # Returns +/// A unique identifier for the message. +pub(crate) fn post( + origin: Origin, + message: DispatchPost, + fee: BalanceOf, + callback: Option>>, +) -> Result<(MessageId, H256), DispatchError> { + // Take deposits and fees. + let message_deposit = + calculate_protocol_deposit::(ProtocolStorageDeposit::IsmpRequests) + .saturating_add(calculate_message_deposit::()) + .saturating_add(calculate_deposit_of::>()); + + T::Fungibles::hold(&HoldReason::Messaging.into(), &origin.account, message_deposit)?; + + if let Some(cb) = callback.as_ref() { + T::Fungibles::hold( + &HoldReason::CallbackGas.into(), + &origin.account, + T::WeightToFee::weight_to_fee(&cb.gas_limit), + )?; + } + + // Process message by dispatching request via ISMP. + let commitment = T::IsmpDispatcher::default() + .dispatch_request( + DispatchRequest::Post(message), + FeeMetadata { payer: origin.account.clone(), fee }, + ) + .map_err(|_| Error::::IsmpDispatchFailed)?; + + // Store commitment for lookup on response, message for querying, + // response/timeout handling. + let id = next_message_id::()?; + IsmpRequests::::insert(commitment, id); + Messages::::insert(id, Message::Ismp { origin, commitment, callback, message_deposit }); + Ok((id, commitment)) +} + +pub(crate) fn process_response( + commitment: &H256, + response_data: impl Encode + EncodeCallback, + event: impl Fn(H160, MessageId) -> Event, +) -> Result<(), anyhow::Error> { + // TODO: handle Solidity encoding size + ensure!( + response_data.encoded_size() <= T::MaxResponseLen::get() as usize, + ::ismp::Error::Custom("Response length exceeds maximum allowed length.".into()) + ); + + let id = IsmpRequests::::get(commitment) + .ok_or(::ismp::Error::Custom("Request not found.".into()))?; + + let Some(Message::Ismp { origin, commitment, callback, message_deposit }) = + Messages::::get(id) + else { + return Err(::ismp::Error::Custom("Message must be an ismp request.".into()).into()); + }; + + // Deposit that the message has been recieved before a potential callback execution. + Pallet::::deposit_event(event(origin.address, id)); + + // Attempt callback with result if specified. + if let Some(callback) = callback { + if call::(&origin.account, callback, &id, &response_data).is_ok() { + // Clean storage, return deposit + Messages::::remove(id); + IsmpRequests::::remove(commitment); + T::Fungibles::release( + &HoldReason::Messaging.into(), + &origin.account, + message_deposit, + Exact, + ) + .map_err(|_| ::ismp::Error::Custom("failed to release message deposit.".into()))?; + + return Ok(()); + } + } + + // No callback or callback error: store response for manual retrieval and removal. + let response: BoundedVec = codec::Encode::encode(&response_data) + .try_into() + .map_err(|_| ::ismp::Error::Custom("response exceeds max".into()))?; + Messages::::insert( + id, + Message::IsmpResponse { origin: origin.address, commitment, message_deposit, response }, + ); + Ok(()) +} + +pub(crate) fn timeout_commitment(commitment: &H256) -> Result<(), anyhow::Error> { + let key = IsmpRequests::::get(commitment).ok_or(::ismp::Error::Custom( + "Request commitment not found while processing timeout.".into(), + ))?; + Messages::::try_mutate(key, |message| { + let Some(Message::Ismp { origin, commitment, message_deposit, callback }) = message else { + return Err(::ismp::Error::Custom("Invalid message".into())); + }; + let callback_deposit = callback.map(|cb| T::WeightToFee::weight_to_fee(&cb.gas_limit)); + *message = Some(Message::IsmpTimeout { + origin: origin.address, + message_deposit: *message_deposit, + commitment: *commitment, + callback_deposit, + }); + Ok(()) + })?; + + Pallet::::deposit_event(Event::::IsmpTimedOut { commitment: *commitment }); + Ok(()) +} + +pub struct Module(PhantomData); +impl Default for Module { + fn default() -> Self { + Self::new() + } +} + +impl Module { + pub fn new() -> Self { + Self(PhantomData) + } +} + +impl IsmpModule for Module { + fn on_accept(&self, _request: PostRequest) -> Result<(), anyhow::Error> { + // ISMP POSTs are currently not supported. + Ok(()) + } + + fn on_response(&self, response: Response) -> Result<(), anyhow::Error> { + // Hash request to determine key for message lookup. + match response { + Response::Get(GetResponse { get, values }) => { + log::debug!(target: "pop-api::messaging::ismp", "StorageValue={:?}", values); + let commitment = hash_request::(&Request::Get(get)); + process_response(&commitment, values, |dest, id| { + Event::::IsmpGetResponseReceived { dest, id, commitment } + }) + }, + Response::Post(PostResponse { post, response, .. }) => { + let commitment = hash_request::(&Request::Post(post)); + process_response(&commitment, response, |dest, id| { + Event::::IsmpPostResponseReceived { dest, id, commitment } + }) + }, + } + } + + fn on_timeout(&self, timeout: Timeout) -> Result<(), anyhow::Error> { + match timeout { + Timeout::Request(request) => { + // hash request to determine key for original request id lookup + let commitment = hash_request::(&request); + timeout_commitment::(&commitment) + }, + Timeout::Response(PostResponse { post, .. }) => { + let commitment = hash_request::(&Request::Post(post)); + timeout_commitment::(&commitment) + }, + } + } +} + +impl IsmpModuleWeight for Module { + fn on_accept(&self, _request: &PostRequest) -> Weight { + T::WeightInfo::ismp_on_accept() + } + + fn on_timeout(&self, timeout: &Timeout) -> Weight { + let x = match timeout { + Timeout::Request(Request::Get(_)) => 0u32, + Timeout::Request(Request::Post(_)) => 1u32, + Timeout::Response(_) => 2u32, + }; + T::WeightInfo::ismp_on_timeout(x) + } + + fn on_response(&self, response: &Response) -> Weight { + let x = match response { + Response::Get(_) => 0, + Response::Post(_) => 1, + }; + T::WeightInfo::ismp_on_response(x) + // Also add actual weight consumed by contract env. + .saturating_add(T::CallbackExecutor::execution_weight()) + } +} + +#[cfg(test)] +mod tests { + use ::ismp::{host::StateMachine, module::IsmpModule, Error as IsmpError}; + use frame_support::{assert_ok, traits::fungible::InspectHold, weights::WeightToFee as _}; + + use super::{super::tests::events, messaging::HoldReason::*, mock::*, *}; + + type Fungibles = ::Fungibles; + type GetState = super::GetState; + type IsmpRequests = super::IsmpRequests; + type MaxContextLen = ::MaxContextLen; + type MaxDataLen = ::MaxDataLen; + type MaxKeyLen = ::MaxKeyLen; + type MaxKeys = ::MaxKeys; + type MaxResponseLen = ::MaxResponseLen; + type Messages = super::Messages; + type OffChainByteFee = ::OffChainByteFee; + type OnChainByteFee = ::OnChainByteFee; + type Origin = super::Origin; + type PostState = super::PostState; + type WeightToFee = ::WeightToFee; + + mod get { + use super::*; + + #[test] + fn takes_deposit() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let weight = Weight::from_parts(100_000_000, 100_000_000); + let callback = + Callback::new(H160::zero(), Encoding::Scale, [1; 4], weight, 100_000_000); + let callback_deposit = WeightToFee::weight_to_fee(&weight); + let fee: Balance = u32::MAX.into(); + let expected_deposit = calculate_protocol_deposit::( + ProtocolStorageDeposit::IsmpRequests, + ) + calculate_message_deposit::() + + calculate_deposit_of::() + + callback_deposit; + let endowment = existential_deposit() + expected_deposit + fee; + ExtBuilder::new() + .with_balances(vec![(origin.account.clone(), endowment)]) + .build() + .execute_with(|| { + let held_balance_pre_hold = Balances::total_balance_on_hold(&origin.account); + assert_eq!(held_balance_pre_hold, 0); + assert!(expected_deposit != 0); + + assert_ok!(get::(origin.clone(), message(), fee, Some(callback))); + + let held_balance_post_hold = Balances::total_balance_on_hold(&origin.account); + assert_eq!(held_balance_post_hold, expected_deposit); + }) + } + + #[test] + fn assert_state() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let id = 1; + let fee: Balance = u32::MAX.into(); + let callback = None; + let deposit = calculate_protocol_deposit::( + ProtocolStorageDeposit::IsmpRequests, + ) + calculate_message_deposit::() + + calculate_deposit_of::(); + let endowment = existential_deposit() + deposit + fee; + ExtBuilder::new() + .with_balances(vec![(origin.account.clone(), endowment)]) + .with_message_id(id) + .build() + .execute_with(|| { + let (id, commitment) = + get::(origin.clone(), message(), fee, callback).unwrap(); + + assert_eq!(IsmpRequests::get(commitment), Some(id)); + let Some(Message::Ismp { + origin: o, + commitment: c, + callback: cb, + message_deposit: d, + }) = Messages::get(id) + else { + panic!("wrong message type"); + }; + assert_eq!((o, c, cb, d), (origin, commitment, callback, deposit)) + }) + } + + #[test] + fn max_len_works() { + let get = message(); + assert_eq!( + GetState::max_encoded_len(), + (get.dest, get.from, get.keys, get.height, get.context, get.timeout) + .encode() + .len() + ) + } + + pub(super) fn message() -> DispatchGet { + DispatchGet { + dest: StateMachine::Polkadot(u32::MAX), + from: ID.into(), + keys: vec![ + vec![255; >::get() as usize]; + >::get() as usize + ], + height: u64::MAX, + context: vec![255; >::get() as usize], + timeout: u64::MAX, + } + } + } + + mod post { + use super::*; + + #[test] + fn takes_deposit() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let weight = Weight::from_parts(100_000_000, 100_000_000); + let callback = + Callback::new(H160::zero(), Encoding::Scale, [1; 4], weight, 100_000_000); + let callback_deposit = ::WeightToFee::weight_to_fee(&weight); + let fee: Balance = u32::MAX.into(); + let expected_deposit = + calculate_protocol_deposit::::OnChainByteFee>( + ProtocolStorageDeposit::IsmpRequests, + ) + calculate_message_deposit::::OnChainByteFee>() + + calculate_deposit_of::() + + callback_deposit; + let endowment = existential_deposit() + expected_deposit + fee; + ExtBuilder::new() + .with_balances(vec![(origin.account.clone(), endowment)]) + .build() + .execute_with(|| { + let held_balance_pre_hold = Balances::total_balance_on_hold(&origin.account); + assert_eq!(held_balance_pre_hold, 0); + assert_ne!(callback_deposit, 0); + assert_ne!(expected_deposit, 0); + + assert_ok!(post::(origin.clone(), message(), fee, Some(callback))); + + let held_balance_post_hold = Balances::total_balance_on_hold(&origin.account); + assert_eq!(held_balance_post_hold, expected_deposit); + }) + } + + #[test] + fn assert_state() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let id = 1; + let fee: Balance = u32::MAX.into(); + let callback = None; + let deposit = calculate_protocol_deposit::( + ProtocolStorageDeposit::IsmpRequests, + ) + calculate_message_deposit::() + + calculate_deposit_of::(); + let endowment = existential_deposit() + deposit + fee; + ExtBuilder::new() + .with_balances(vec![(origin.account.clone(), endowment)]) + .with_message_id(id) + .build() + .execute_with(|| { + let (id, commitment) = + post::(origin.clone(), message(), fee, callback).unwrap(); + + assert_eq!(IsmpRequests::get(commitment), Some(id)); + let Some(Message::Ismp { + origin: o, + commitment: c, + callback: cb, + message_deposit: d, + }) = Messages::get(id) + else { + panic!("wrong message type"); + }; + assert_eq!((o, c, cb, d), (origin, commitment, callback, deposit)) + }) + } + + #[test] + fn max_len_works() { + let post = message(); + assert_eq!( + PostState::max_encoded_len(), + (post.dest, post.from, post.to, post.timeout, post.body).encode().len() + ) + } + + pub(super) fn message() -> DispatchPost { + DispatchPost { + dest: StateMachine::Polkadot(u32::MAX), + from: ID.to_vec(), + to: ID.to_vec(), + timeout: u64::MAX, + body: vec![255; >::get() as usize], + } + } + } + + mod ismp_hooks { + use super::*; + + mod on_accept { + use super::*; + + /// The on_accept must return Ok even when not in use. + /// If an error is returned the receipt is not removed and a replay attack is possible. + #[test] + fn is_ok() { + let module = module(); + ExtBuilder::new().build().execute_with(|| { + assert!(IsmpModule::on_accept(&module, post_request(100usize)).is_ok()) + }) + } + } + + mod timeout_commitment { + use super::*; + + #[test] + fn request_not_found() { + ExtBuilder::new().build().execute_with(|| { + let err = timeout_commitment::(&Default::default()).unwrap_err(); + assert_eq!( + err.downcast::().unwrap(), + IsmpError::Custom( + "Request commitment not found while processing timeout.".into() + ) + ) + }) + } + + #[test] + fn invalid_request() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let id = 1; + let commitment: H256 = [1u8; 32].into(); + let message = Message::xcm_query(origin, 0, None, 100); + ExtBuilder::new().build().execute_with(|| { + IsmpRequests::insert(commitment, id); + Messages::insert(id, &message); + + let err = timeout_commitment::(&commitment).unwrap_err(); + assert_eq!( + err.downcast::().unwrap(), + IsmpError::Custom("Invalid message".into()) + ) + }) + } + + #[test] + fn actually_timesout_assert_event() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let id = 1; + let commitment: H256 = [1u8; 32].into(); + let message_deposit = 100; + let message = Message::ismp(origin, commitment, None, message_deposit); + ExtBuilder::new().build().execute_with(|| { + IsmpRequests::insert(commitment, id); + Messages::insert(id, &message); + + let res = timeout_commitment::(&commitment); + + assert!(res.is_ok(), "{:?}", res.unwrap_err().downcast::().unwrap()); + + if let Some(Message::IsmpTimeout { commitment, .. }) = Messages::get(id) { + assert!(events().contains(&Event::IsmpTimedOut { commitment })) + } else { + panic!("Message not timed out.") + } + }) + } + + #[test] + fn success_callback_releases_deposit() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let response = vec![1u8]; + let commitment = H256::default(); + let id = 1; + let callback = + Callback::new(H160::zero(), Encoding::Scale, [1; 4], 100.into(), 100); + let message_deposit = 100; + let message = + Message::ismp(origin.clone(), commitment, Some(callback), message_deposit); + ExtBuilder::new() + .with_balances(vec![( + origin.account.clone(), + existential_deposit() + message_deposit, + )]) + .build() + .execute_with(|| { + assert_ok!(Fungibles::hold( + &Messaging.into(), + &origin.account, + message_deposit + )); + let post_hold = Balances::free_balance(&origin.account); + + IsmpRequests::insert(commitment, id); + Messages::insert(id, message); + + let res = process_response::(&commitment, response, |dest, id| { + Event::IsmpGetResponseReceived { dest, id, commitment } + }); + + assert!(res.is_ok(), "process_response failed"); + + let post_process = Balances::free_balance(&origin.account); + assert_eq!(post_process - message_deposit, post_hold); + }) + } + } + + mod process_response { + use sp_runtime::bounded_vec; + + use super::*; + + #[test] + fn response_exceeds_max_encoded_len_limit() { + let commitment = H256::zero(); + let response = vec![1u8; >::get() as usize + 1usize]; + ExtBuilder::new().build().execute_with(|| { + let err = process_response::(&commitment, response, |dest, id| { + Event::IsmpGetResponseReceived { dest, id, commitment } + }) + .unwrap_err(); + + assert_eq!( + err.downcast::().unwrap(), + IsmpError::Custom( + "Response length exceeds maximum allowed length.".to_string() + ) + ); + }) + } + + #[test] + fn request_not_found() { + let commitment = H256::zero(); + let response = vec![1u8]; + ExtBuilder::new().build().execute_with(|| { + let err = process_response::(&commitment, response, |dest, id| { + Event::IsmpGetResponseReceived { dest, id, commitment } + }) + .unwrap_err(); + + assert_eq!( + err.downcast::().unwrap(), + IsmpError::Custom("Request not found.".to_string()) + ); + }) + } + + #[test] + fn message_must_be_ismp_request() { + let origin = (ALICE_ADDR, ALICE); + let response = bounded_vec![1u8]; + let commitment = H256::default(); + let id = 1; + let message = Message::ismp_response(origin.0, commitment, 100, response); + ExtBuilder::new().build().execute_with(|| { + IsmpRequests::insert(commitment, id); + Messages::insert(id, message); + + let err = process_response::(&commitment, vec![1u8], |dest, id| { + Event::IsmpGetResponseReceived { dest, id, commitment } + }) + .unwrap_err(); + assert_eq!( + err.downcast::().unwrap(), + IsmpError::Custom("Message must be an ismp request.".to_string()) + ); + }) + } + + #[test] + fn no_callback_saves_response() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let response = vec![1u8]; + let commitment = H256::default(); + let id = 1; + let message = Message::ismp(origin, commitment, None, 100); + ExtBuilder::new().build().execute_with(|| { + IsmpRequests::insert(commitment, id); + Messages::insert(id, message); + + let res = process_response::(&commitment, response, |dest, id| { + Event::IsmpGetResponseReceived { dest, id, commitment } + }); + + assert!(res.is_ok(), "process_response failed"); + + let Some(Message::IsmpResponse { .. }) = Messages::get(id) else { + panic!("wrong message type.") + }; + }) + } + } + + fn module() -> ismp::Module { + ismp::Module::::new() + } + + pub(super) fn post_request(body_len: usize) -> PostRequest { + PostRequest { + source: StateMachine::Polkadot(2000), + dest: StateMachine::Polkadot(2001), + nonce: 100u64, + from: [1u8; 32].to_vec(), + to: [1u8; 32].to_vec(), + timeout_timestamp: 100_000, + body: vec![1u8; body_len], + } + } + } + + mod weight { + use ::ismp::router::GetRequest; + + use super::{CallbackExecutor as _, WeightInfo as _, *}; + + type CallbackExecutor = ::CallbackExecutor; + type Module = super::Module; + type WeightInfo = ::WeightInfo; + + #[test] + fn on_accept() { + assert_eq!( + IsmpModuleWeight::on_accept(&Module::new(), &ismp_hooks::post_request(100)), + WeightInfo::ismp_on_accept() + ) + } + + #[test] + fn on_response() { + let module = Module::new(); + for (response, x) in + [(Response::Get(get_response()), 0), (Response::Post(post_response()), 1)] + { + assert_eq!( + IsmpModuleWeight::on_response(&module, &response), + WeightInfo::ismp_on_response(x) + .saturating_add(CallbackExecutor::execution_weight()) + ); + } + } + + #[test] + fn on_timeout() { + let module = Module::new(); + for (response, x) in [ + (Timeout::Request(Request::Get(get_request())), 0), + (Timeout::Request(Request::Post(ismp_hooks::post_request(100))), 1), + (Timeout::Response(post_response()), 2), + ] { + assert_eq!( + IsmpModuleWeight::on_timeout(&module, &response), + WeightInfo::ismp_on_timeout(x) + ); + } + } + + fn get_request() -> GetRequest { + GetRequest { + source: StateMachine::Polkadot(0), + dest: StateMachine::Polkadot(0), + nonce: 0, + from: Vec::default(), + keys: Vec::default(), + height: 0, + context: Vec::default(), + timeout_timestamp: 0, + } + } + + fn get_response() -> GetResponse { + GetResponse { get: get_request(), values: Vec::default() } + } + + fn post_response() -> PostResponse { + PostResponse { + post: ismp_hooks::post_request(100), + response: Vec::default(), + timeout_timestamp: 0, + } + } + } + + fn existential_deposit() -> Balance { + >::get() + } +} diff --git a/pallets/api-vnext/src/messaging/transports/xcm.rs b/pallets/api-vnext/src/messaging/transports/xcm.rs new file mode 100644 index 000000000..628639749 --- /dev/null +++ b/pallets/api-vnext/src/messaging/transports/xcm.rs @@ -0,0 +1,356 @@ +pub(crate) use ::xcm::latest::{Location, QueryId, Response}; +use xcm_builder::QueryControllerWeightInfo; + +use super::*; +use crate::messaging::{pallet::Call, BlockNumberOf, Config}; + +/// Initiate a new XCM query. +/// +/// Starts a query using the XCM interface, specifying a responder and timeout block. +/// +/// # Parameters +/// - `origin`: The account initiating the query. +/// - `id`: A unique message ID. +/// - `responder`: Location of the XCM responder. +/// - `timeout`: Block number after which the query should timeout. +/// - `callback`: Optional callback for handling the response. +/// +/// # Returns +/// A unique identifier for the message. +pub(crate) fn new_query( + origin: Origin, + responder: Location, + timeout: BlockNumberOf, + callback: Option>>, +) -> Result<(MessageId, QueryId), DispatchError> { + let querier_location = + T::OriginConverter::try_convert(T::RuntimeOrigin::signed(origin.account.clone())) + .map_err(|_| Error::::OriginConversionFailed)?; + + let current_block = frame_system::Pallet::::block_number(); + ensure!(current_block < timeout, Error::::FutureTimeoutMandatory); + + let id = next_message_id::()?; + XcmQueryTimeouts::::try_mutate(current_block.saturating_add(timeout), |bounded_vec| { + bounded_vec + .try_push(id) + .map_err(|_| Error::::MaxMessageTimeoutPerBlockReached) + })?; + + // Take deposits and fees. + let message_deposit = + calculate_protocol_deposit::(ProtocolStorageDeposit::XcmQueries) + .saturating_add(calculate_message_deposit::()); + T::Fungibles::hold(&HoldReason::Messaging.into(), &origin.account, message_deposit)?; + + let mut callback_execution_weight = Weight::zero(); + + if let Some(cb) = callback.as_ref() { + T::Fungibles::hold( + &HoldReason::CallbackGas.into(), + &origin.account, + T::WeightToFee::weight_to_fee(&cb.gas_limit), + )?; + + callback_execution_weight = T::CallbackExecutor::execution_weight(); + } + + let response_prepayment_amount = T::WeightToFee::weight_to_fee( + &T::WeightInfo::xcm_response().saturating_add(callback_execution_weight), + ); + + let credit = T::Fungibles::withdraw( + &origin.account, + response_prepayment_amount, + Precision::Exact, + Preservation::Preserve, + Fortitude::Polite, + )?; + + T::FeeHandler::on_unbalanced(credit); + + // Process message by creating new query via XCM. + // Xcm only uses/stores pallet, index - i.e. (u8,u8), hence the fields in xcm_response + // are ignored. + let notify = Call::::xcm_response { query_id: 0, xcm_response: Default::default() }; + let query_id = T::Xcm::new_notify_query(responder, notify, timeout, querier_location); + + // Store query id for later lookup on response, message for querying status, + // response/timeout handling. + XcmQueries::::insert(query_id, id); + Messages::::insert(id, Message::XcmQuery { origin, query_id, callback, message_deposit }); + Ok((id, query_id)) +} + +/// A handler for the creation of a XCM query notification. +pub trait NotifyQueryHandler { + type WeightInfo: QueryControllerWeightInfo; + /// Attempt to create a new query ID and register it as a query that is yet to respond, and + /// which will call a dispatchable when a response happens. + fn new_notify_query( + responder: impl Into, + notify: Call, + timeout: BlockNumberOf, + match_querier: impl Into, + ) -> QueryId; +} + +#[cfg(test)] +pub(crate) mod tests { + use frame_support::{ + assert_noop, assert_ok, + storage::{with_transaction, TransactionOutcome}, + traits::fungible::InspectHold, + weights::WeightToFee as _, + }; + + use super::{ + super::{Callback, Encoding, HoldReason::*}, + mock::{messaging::*, *}, + CallbackExecutor as _, WeightInfo as _, *, + }; + + type CallbackExecutor = ::CallbackExecutor; + type Error = super::Error; + type Event = super::Event; + type Fungibles = ::Fungibles; + type Messages = super::Messages; + type OnChainByteFee = ::OnChainByteFee; + type Origin = super::Origin; + type WeightInfo = ::WeightInfo; + type WeightToFee = ::WeightToFee; + type XcmQueries = super::XcmQueries; + + #[test] + fn ensure_xcm_response_has_weight() { + assert_ne!( + WeightInfo::xcm_response(), + Weight::zero(), + "Please set a weight for xcm_response to run these tests." + ); + } + + #[test] + fn ensure_xcm_response_fee() { + assert_ne!(WeightToFee::weight_to_fee(&(WeightInfo::xcm_response())), 0); + assert_ne!(WeightToFee::weight_to_fee(&(CallbackExecutor::execution_weight())), 0); + } + + #[test] + fn ensure_callback_executor_has_weight() { + assert_ne!( + CallbackExecutor::execution_weight(), + Weight::zero(), + "Please set a weight for CallbackExecutor::execution_weight to run these tests." + ); + } + + #[test] + fn takes_response_fee_no_callback() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let response_fee = WeightToFee::weight_to_fee(&(WeightInfo::xcm_response())); + let callback = None; + let endowment = existential_deposit() + deposit() + response_fee; + ExtBuilder::new() + .with_balances(vec![(origin.account.clone(), endowment)]) + .build() + .execute_with(|| { + let timeout = System::block_number() + 1; + let balance_pre_transfer = Balances::free_balance(&origin.account); + + assert_ok!(new_query(origin.clone(), RESPONSE_LOCATION, timeout, callback)); + + let balance_post_transfer = Balances::free_balance(&origin.account); + let total_balance_on_hold = Balances::total_balance_on_hold(&origin.account); + assert_eq!( + balance_pre_transfer - balance_post_transfer - total_balance_on_hold, + response_fee + ); + }) + } + + #[test] + fn takes_response_fee_with_callback() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let response_fee = xcm_response_fee(); + let callback = Callback::new(H160::zero(), Encoding::Scale, [1; 4], Weight::zero(), 0); + let endowment = existential_deposit() + deposit() + response_fee; + ExtBuilder::new() + .with_balances(vec![(origin.account.clone(), endowment)]) + .build() + .execute_with(|| { + let timeout = System::block_number() + 1; + assert_ne!(response_fee, 0); + let balance_pre_query = Balances::free_balance(&origin.account); + + assert_ok!(new_query(origin.clone(), RESPONSE_LOCATION, timeout, Some(callback))); + + let balance_post_query = Balances::free_balance(&origin.account); + let total_balance_on_hold = Balances::total_balance_on_hold(&origin.account); + + assert_eq!( + balance_pre_query - balance_post_query - total_balance_on_hold, + response_fee + ); + }) + } + + #[test] + fn takes_callback_hold() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let weight = Weight::from_parts(100_000_000, 100_000_000); + let callback = Callback::new(H160::zero(), Encoding::Scale, [1; 4], weight, 100_000_000); + let callback_deposit = WeightToFee::weight_to_fee(&weight); + let endowment = existential_deposit() + deposit() + xcm_response_fee() + callback_deposit; + ExtBuilder::new() + .with_balances(vec![(origin.account.clone(), endowment)]) + .build() + .execute_with(|| { + let timeout = System::block_number() + 1; + let held_balance_pre_query = + Fungibles::balance_on_hold(&CallbackGas.into(), &origin.account); + assert_eq!(held_balance_pre_query, 0); + assert_ne!(callback_deposit, 0); + + assert_ok!(new_query(origin.clone(), RESPONSE_LOCATION, timeout, Some(callback))); + + let held_balance_post_query = + Fungibles::balance_on_hold(&CallbackGas.into(), &origin.account); + assert_eq!(held_balance_post_query, callback_deposit); + }) + } + + #[test] + fn takes_messaging_hold() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let expected_deposit = deposit(); + let endowment = existential_deposit() + deposit() + xcm_response_fee(); + ExtBuilder::new() + .with_balances(vec![(origin.account.clone(), endowment)]) + .build() + .execute_with(|| { + let timeout = System::block_number() + 1; + let held_balance_pre_hold = + Fungibles::balance_on_hold(&Messaging.into(), &origin.account); + assert_ne!( + expected_deposit, 0, + "set an onchain byte fee with T::OnChainByteFee to run this test." + ); + assert_eq!(held_balance_pre_hold, 0); + + assert_ok!(new_query(origin.clone(), RESPONSE_LOCATION, timeout, None)); + + let held_balance_post_hold = + Fungibles::balance_on_hold(&Messaging.into(), &origin.account); + assert_eq!(held_balance_post_hold, expected_deposit); + }); + } + + #[test] + fn assert_state() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let weight = Weight::from_parts(100_000_000, 100_000_000); + let callback = Callback::new(H160::zero(), Encoding::Scale, [1; 4], weight, 100_000_000); + let callback_deposit = WeightToFee::weight_to_fee(&weight); + let endowment = existential_deposit() + deposit() + xcm_response_fee() + callback_deposit; + let id = 1; + let query_id = 42; + ExtBuilder::new() + .with_balances(vec![(origin.account.clone(), endowment)]) + .with_message_id(id) + .with_query_id(query_id) + .build() + .execute_with(|| { + let timeout = System::block_number() + 1; + + assert_ok!(new_query(origin.clone(), RESPONSE_LOCATION, timeout, Some(callback))); + + let message = Messages::get(id).expect("should exist after xcm_new_query."); + let Message::XcmQuery { query_id: qid, callback: c, .. } = message else { + panic!("Wrong message type.") + }; + assert_eq!(qid, query_id); + assert_eq!(c, Some(callback)); + assert_eq!(XcmQueries::get(query_id), Some(id)); + }) + } + + #[test] + fn xcm_timeouts_must_be_in_the_future() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let endowment = existential_deposit() + deposit() + xcm_response_fee(); + ExtBuilder::new() + .with_balances(vec![(origin.account.clone(), endowment)]) + .build() + .execute_with(|| { + let timeout = System::block_number(); + + assert_noop!( + new_query(origin, RESPONSE_LOCATION, timeout, None), + Error::FutureTimeoutMandatory + ); + }) + } + + #[test] + fn xcm_queries_expire_on_expiry_block() { + let origin = Origin::from((ALICE_ADDR, ALICE)); + let messages = 2; + let query_id = 42; + let endowment = + existential_deposit() + (deposit() + xcm_response_fee()) * messages as Balance; + ExtBuilder::new() + .with_balances(vec![(origin.account.clone(), endowment)]) + .with_query_id(query_id) + .build() + .execute_with(|| { + let timeout = System::block_number() + 10; + for _ in 0..messages { + assert_ok!(new_query(origin.clone(), RESPONSE_LOCATION, timeout, None)); + } + + run_to(timeout + 1); + + for id in 0..messages { + let Some(Message::XcmTimeout { .. }) = Messages::get(id) else { + panic!("Message should be timed out!") + }; + } + let query_ids = (0..messages).map(|id| query_id + id).collect(); + System::assert_has_event(Event::XcmQueriesTimedOut { query_ids }.into()); + }) + } + + pub(crate) fn deposit() -> Balance { + calculate_protocol_deposit::(ProtocolStorageDeposit::XcmQueries) + + calculate_message_deposit::() + } + + fn existential_deposit() -> Balance { + >::get() + } + + // `new_query` is no longer a dispatchable and only callable via a precompile, hence we simply + // wrap calls to it in a transaction to simulate. See additional precompiles tests for + // further assurances. + pub(crate) fn new_query( + origin: Origin, + responder: Location, + timeout: u32, + callback: Option>, + ) -> Result<(MessageId, QueryId), DispatchError> { + with_transaction(|| { + let result = super::new_query::(origin, responder, timeout, callback); + match &result { + Ok(_) => TransactionOutcome::Commit(result), + Err(_) => TransactionOutcome::Rollback(result), + } + }) + } + + pub(crate) fn xcm_response_fee() -> Balance { + WeightToFee::weight_to_fee( + &(WeightInfo::xcm_response() + CallbackExecutor::execution_weight()), + ) + } +} diff --git a/pallets/api-vnext/src/messaging/weights.md b/pallets/api-vnext/src/messaging/weights.md new file mode 100644 index 000000000..188f9144d --- /dev/null +++ b/pallets/api-vnext/src/messaging/weights.md @@ -0,0 +1,81 @@ +# Weights, fees and blockspace + +## Context +In messaging, ISMP messages and XCM response are handled very differently hence, some background is required to appreciate why fees, blockspace and weights are handled as they are. +Generally it comes down to **how the response is initiated** and from this we can deduce how pallet-api must react. +In these cases it is either directly via `call.dispatch(origin)` where call is a type that implements `Dispatchable` or via a transaction, the normal route to dispatch a call. + +Furthermore, on the subject of calling into a contract environment, we have a similar case to using `call.dispatch`, using a method like `bare_call` does not increase block weight or handle fees. We are outside the normal flow of dispatching. + +### XCM +In the case of XCM we are heavily dependant on the __slightly unfinished__ version of pallet-xcm's OnResponse implementation. In the current version (2412) the `RuntimeCall` is decoded and dispatched directly, the function `on_response` returns a weight, which is ignored by the `xcm-executor`. +This means fees are not charged, weight is not tracked and we must handle these ourselves on a pallet level. + +It is important to note that we **must** follow any changes to the `xcm-executor` and `pallet-xcm` regarding `QueryResponse`s closely to avoid any potentially critical issues. Especially around the `max_weight` field in the `QueryResponseInfo` which is **contract defined** and hence a place of vulnerability. + +In our case this `max_weight` will be ignored and setting to `Weight::Unlimited` is the best option from a contract developers perspective. + +The process is then as follows: + +1. Query: + - Charge the caller for the weight of the messaging request only. + - Take a deposit for the (optional) callback execution. + - Take a fee for the response and the cost for submitting the response back to the contract via the `CallbackExecutor`. + +This ensures that fees are paid for the request, the response and we are holding fees for the callback. +The weight used is equal to the request only. + +2. Response: + - Aggregate the response weight and the callback weight and ensure we have enough blockspace for the worst case. + - Execute the callback and return the actual weight used. + - Increase `BlockWeight` by the weight of the response and the callback and callback execution. + - Return any left over weight to the origin. + +The fees have been paid in the `Query` except for the callback gas (which is a deposit). We only need to manage response weight alongside the callback weight and fees. + +### ISMP +For ISMP we are in normal substrate territory, calls are handled via the ismp-pallet's `handle` extrinsic. This greatly simplifies the flow. +ISMP responses are handled by the IsmpModule trait and its weight via IsmpModuleWeights. +The `IsmpModuleWeight` is aggregated into the `pallet-ismp`'s `handle` dispatchable, handling our fees and weights normally for the response weight and the `CallbackExecutor`'s `execution_weight()`. +We still have to manage the callbacks weight. + +The process therefore is much simpler: + +1. Request: + - Charge the caller the weight of the request extrinsic only. + - Take a deposit for the callback execution. + +2. Response: + - Using only the callback weight ensure we have enough blockspace. + - Execute the callback and return weight used. + - Increase blockspace by only weight used. + - Return any left over weight. + +```mermaid +flowchart TD + %% XCM New Query + A(["xcm_new_query"]) --> B{"Callback included?
"} + B -- yes --> C["Take deposit for callback weight"] + B -- no --> D["Take XCM response fee"] + C --> D + + %% XCM Response + E(["xcm_response"]) --> F["xcm-executor"] + F --> G["pallet-xcm::OnResponse"] + G --> H["call.dispatch xcm_response"] + H --> I{"Callback included?"} + I -- yes --> J["Execute callback"] + J --> M{"Success?"} + M -- yes --> K["Refund unused weight"] + K --> N["Increase block weight used"] + I -- no --> L["Save response"] + L --> N + M -- no --> L + + %% ISMP Request and Response + O(["ismp_request"]) --> P{"Callback included?"} + P -- yes --> Q["Take deposit for callback weight"] + + R(["ismp_response"]) --> S["on_response"] + S --> I +``` diff --git a/pallets/api-vnext/src/messaging/weights.rs b/pallets/api-vnext/src/messaging/weights.rs new file mode 100644 index 000000000..c8c174e8b --- /dev/null +++ b/pallets/api-vnext/src/messaging/weights.rs @@ -0,0 +1,420 @@ + +//! Autogenerated weights for `pallet_api_vnext :: messaging` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 49.0.0 +//! DATE: 2025-07-29, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! WORST CASE MAP SIZE: `1000000` +//! HOSTNAME: `R0GUE`, CPU: `` +//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("pop-devnet-dev")`, DB CACHE: `1024` + +// Executed Command: +// ./target/release/pop-node +// benchmark +// pallet +// --chain=pop-devnet-dev +// --wasm-execution=compiled +// --pallet=pallet_api_vnext :: messaging +// --steps=50 +// --repeat=20 +// --json +// --template=./scripts/templates/pallet-weight-template.hbs +// --output=./pallets/api-vnext/src/messaging/weights.rs +// --extrinsic=* + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] +#![allow(missing_docs)] + +use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}}; +use core::marker::PhantomData; + +/// Weight functions needed for `pallet_api_vnext :: messaging`. +pub trait WeightInfo { + fn block_number() -> Weight; + fn get_response() -> Weight; + fn id() -> Weight; + fn ismp_get(x: u32, y: u32, a: u32, ) -> Weight; + fn ismp_on_accept() -> Weight; + fn ismp_on_response(x: u32, ) -> Weight; + fn ismp_on_timeout(x: u32, ) -> Weight; + fn ismp_post(t: u32, x: u32, y: u32, ) -> Weight; + fn poll_status() -> Weight; + fn remove(x: u32, ) -> Weight; + fn xcm_new_query(x: u32, ) -> Weight; + fn xcm_response() -> Weight; +} + +/// Weights for `pallet_api_vnext :: messaging` using the Substrate node and recommended hardware. +pub struct SubstrateWeight(PhantomData); +impl WeightInfo for SubstrateWeight { + fn block_number() -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 1_000_000 picoseconds. + Weight::from_parts(1_000_000, 0) + } + /// Storage: `Messaging::Messages` (r:1 w:0) + /// Proof: `Messaging::Messages` (`max_values`: None, `max_size`: Some(12782), added: 15257, mode: `MaxEncodedLen`) + fn get_response() -> Weight { + // Proof Size summary in bytes: + // Measured: `703` + // Estimated: `16247` + // Minimum execution time: 5_000_000 picoseconds. + Weight::from_parts(6_000_000, 16247) + .saturating_add(T::DbWeight::get().reads(1_u64)) + } + /// Storage: `ParachainInfo::ParachainId` (r:1 w:0) + /// Proof: `ParachainInfo::ParachainId` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`) + fn id() -> Weight { + // Proof Size summary in bytes: + // Measured: `69` + // Estimated: `1489` + // Minimum execution time: 3_000_000 picoseconds. + Weight::from_parts(4_000_000, 1489) + .saturating_add(T::DbWeight::get().reads(1_u64)) + } + /// Storage: `Skipped::Metadata` (r:0 w:0) + /// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// The range of component `x` is `[0, 64]`. + /// The range of component `y` is `[0, 10]`. + /// The range of component `a` is `[0, 1]`. + fn ismp_get(x: u32, y: u32, a: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `804` + // Estimated: `804` + // Minimum execution time: 109_000_000 picoseconds. + Weight::from_parts(136_900_792, 804) + // Standard Error: 5_248 + .saturating_add(Weight::from_parts(30_612, 0).saturating_mul(x.into())) + // Standard Error: 32_193 + .saturating_add(Weight::from_parts(234_612, 0).saturating_mul(y.into())) + // Standard Error: 216_975 + .saturating_add(Weight::from_parts(707_725, 0).saturating_mul(a.into())) + .saturating_add(T::DbWeight::get().reads(7_u64)) + .saturating_add(T::DbWeight::get().writes(7_u64)) + } + fn ismp_on_accept() -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 0_000 picoseconds. + Weight::from_parts(0, 0) + } + /// Storage: `Messaging::IsmpRequests` (r:1 w:1) + /// Proof: `Messaging::IsmpRequests` (`max_values`: None, `max_size`: Some(40), added: 2515, mode: `MaxEncodedLen`) + /// Storage: `Messaging::Messages` (r:1 w:1) + /// Proof: `Messaging::Messages` (`max_values`: None, `max_size`: Some(12782), added: 15257, mode: `MaxEncodedLen`) + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`) + /// Storage: `Balances::Holds` (r:1 w:1) + /// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(229), added: 2704, mode: `MaxEncodedLen`) + /// The range of component `x` is `[0, 1]`. + fn ismp_on_response(_x: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `579` + // Estimated: `16247` + // Minimum execution time: 92_000_000 picoseconds. + Weight::from_parts(104_000_000, 16247) + .saturating_add(T::DbWeight::get().reads(4_u64)) + .saturating_add(T::DbWeight::get().writes(4_u64)) + } + /// Storage: `Messaging::IsmpRequests` (r:1 w:0) + /// Proof: `Messaging::IsmpRequests` (`max_values`: None, `max_size`: Some(40), added: 2515, mode: `MaxEncodedLen`) + /// Storage: `Messaging::Messages` (r:1 w:1) + /// Proof: `Messaging::Messages` (`max_values`: None, `max_size`: Some(12782), added: 15257, mode: `MaxEncodedLen`) + /// The range of component `x` is `[0, 2]`. + fn ismp_on_timeout(x: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `364` + // Estimated: `16247` + // Minimum execution time: 15_000_000 picoseconds. + Weight::from_parts(15_990_331, 16247) + // Standard Error: 18_842 + .saturating_add(Weight::from_parts(133_977, 0).saturating_mul(x.into())) + .saturating_add(T::DbWeight::get().reads(2_u64)) + .saturating_add(T::DbWeight::get().writes(1_u64)) + } + /// Storage: `Skipped::Metadata` (r:0 w:0) + /// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// The range of component `t` is `[0, 32]`. + /// The range of component `x` is `[0, 512]`. + /// The range of component `y` is `[0, 1]`. + fn ismp_post(t: u32, x: u32, y: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `804` + // Estimated: `804` + // Minimum execution time: 108_000_000 picoseconds. + Weight::from_parts(107_002_678, 804) + // Standard Error: 2_159 + .saturating_add(Weight::from_parts(23_191, 0).saturating_mul(t.into())) + // Standard Error: 137 + .saturating_add(Weight::from_parts(4_775, 0).saturating_mul(x.into())) + // Standard Error: 44_992 + .saturating_add(Weight::from_parts(31_581_977, 0).saturating_mul(y.into())) + .saturating_add(T::DbWeight::get().reads(7_u64)) + .saturating_add(T::DbWeight::get().writes(7_u64)) + } + /// Storage: `Messaging::Messages` (r:1 w:0) + /// Proof: `Messaging::Messages` (`max_values`: None, `max_size`: Some(12782), added: 15257, mode: `MaxEncodedLen`) + fn poll_status() -> Weight { + // Proof Size summary in bytes: + // Measured: `703` + // Estimated: `16247` + // Minimum execution time: 5_000_000 picoseconds. + Weight::from_parts(6_000_000, 16247) + .saturating_add(T::DbWeight::get().reads(1_u64)) + } + /// Storage: `Messaging::Messages` (r:100 w:100) + /// Proof: `Messaging::Messages` (`max_values`: None, `max_size`: Some(12782), added: 15257, mode: `MaxEncodedLen`) + /// Storage: `Balances::Holds` (r:1 w:1) + /// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(229), added: 2704, mode: `MaxEncodedLen`) + /// Storage: `Messaging::IsmpRequests` (r:0 w:100) + /// Proof: `Messaging::IsmpRequests` (`max_values`: None, `max_size`: Some(40), added: 2515, mode: `MaxEncodedLen`) + /// The range of component `x` is `[1, 100]`. + fn remove(x: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `421 + x * (109 ±0)` + // Estimated: `3694 + x * (15257 ±0)` + // Minimum execution time: 67_000_000 picoseconds. + Weight::from_parts(13_124_518, 3694) + // Standard Error: 13_474 + .saturating_add(Weight::from_parts(53_672_400, 0).saturating_mul(x.into())) + .saturating_add(T::DbWeight::get().reads(1_u64)) + .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(x.into()))) + .saturating_add(T::DbWeight::get().writes(1_u64)) + .saturating_add(T::DbWeight::get().writes((2_u64).saturating_mul(x.into()))) + .saturating_add(Weight::from_parts(0, 15257).saturating_mul(x.into())) + } + /// Storage: `Messaging::NextMessageId` (r:1 w:1) + /// Proof: `Messaging::NextMessageId` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`) + /// Storage: `Messaging::XcmQueryTimeouts` (r:1 w:1) + /// Proof: `Messaging::XcmQueryTimeouts` (`max_values`: None, `max_size`: Some(814), added: 3289, mode: `MaxEncodedLen`) + /// Storage: `Balances::Holds` (r:1 w:1) + /// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(229), added: 2704, mode: `MaxEncodedLen`) + /// Storage: `PolkadotXcm::QueryCounter` (r:1 w:1) + /// Proof: `PolkadotXcm::QueryCounter` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `Messaging::XcmQueries` (r:0 w:1) + /// Proof: `Messaging::XcmQueries` (`max_values`: None, `max_size`: Some(24), added: 2499, mode: `MaxEncodedLen`) + /// Storage: `Messaging::Messages` (r:0 w:1) + /// Proof: `Messaging::Messages` (`max_values`: None, `max_size`: Some(12782), added: 15257, mode: `MaxEncodedLen`) + /// Storage: `PolkadotXcm::Queries` (r:0 w:1) + /// Proof: `PolkadotXcm::Queries` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// The range of component `x` is `[0, 1]`. + fn xcm_new_query(x: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `342` + // Estimated: `4279` + // Minimum execution time: 67_000_000 picoseconds. + Weight::from_parts(69_351_020, 4279) + // Standard Error: 152_852 + .saturating_add(Weight::from_parts(21_048_979, 0).saturating_mul(x.into())) + .saturating_add(T::DbWeight::get().reads(4_u64)) + .saturating_add(T::DbWeight::get().writes(7_u64)) + } + /// Storage: `Messaging::XcmQueries` (r:1 w:1) + /// Proof: `Messaging::XcmQueries` (`max_values`: None, `max_size`: Some(24), added: 2499, mode: `MaxEncodedLen`) + /// Storage: `Messaging::Messages` (r:1 w:1) + /// Proof: `Messaging::Messages` (`max_values`: None, `max_size`: Some(12782), added: 15257, mode: `MaxEncodedLen`) + /// Storage: `Balances::Holds` (r:1 w:1) + /// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(229), added: 2704, mode: `MaxEncodedLen`) + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`) + fn xcm_response() -> Weight { + // Proof Size summary in bytes: + // Measured: `547` + // Estimated: `16247` + // Minimum execution time: 81_000_000 picoseconds. + Weight::from_parts(81_000_000, 16247) + .saturating_add(T::DbWeight::get().reads(4_u64)) + .saturating_add(T::DbWeight::get().writes(4_u64)) + } +} + +// For backwards compatibility and tests. +impl WeightInfo for () { + fn block_number() -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 1_000_000 picoseconds. + Weight::from_parts(1_000_000, 0) + } + /// Storage: `Messaging::Messages` (r:1 w:0) + /// Proof: `Messaging::Messages` (`max_values`: None, `max_size`: Some(12782), added: 15257, mode: `MaxEncodedLen`) + fn get_response() -> Weight { + // Proof Size summary in bytes: + // Measured: `703` + // Estimated: `16247` + // Minimum execution time: 5_000_000 picoseconds. + Weight::from_parts(6_000_000, 16247) + .saturating_add(RocksDbWeight::get().reads(1_u64)) + } + /// Storage: `ParachainInfo::ParachainId` (r:1 w:0) + /// Proof: `ParachainInfo::ParachainId` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`) + fn id() -> Weight { + // Proof Size summary in bytes: + // Measured: `69` + // Estimated: `1489` + // Minimum execution time: 3_000_000 picoseconds. + Weight::from_parts(4_000_000, 1489) + .saturating_add(RocksDbWeight::get().reads(1_u64)) + } + /// Storage: `Skipped::Metadata` (r:0 w:0) + /// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// The range of component `x` is `[0, 64]`. + /// The range of component `y` is `[0, 10]`. + /// The range of component `a` is `[0, 1]`. + fn ismp_get(x: u32, y: u32, a: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `804` + // Estimated: `804` + // Minimum execution time: 109_000_000 picoseconds. + Weight::from_parts(136_900_792, 804) + // Standard Error: 5_248 + .saturating_add(Weight::from_parts(30_612, 0).saturating_mul(x.into())) + // Standard Error: 32_193 + .saturating_add(Weight::from_parts(234_612, 0).saturating_mul(y.into())) + // Standard Error: 216_975 + .saturating_add(Weight::from_parts(707_725, 0).saturating_mul(a.into())) + .saturating_add(RocksDbWeight::get().reads(7_u64)) + .saturating_add(RocksDbWeight::get().writes(7_u64)) + } + fn ismp_on_accept() -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 0_000 picoseconds. + Weight::from_parts(0, 0) + } + /// Storage: `Messaging::IsmpRequests` (r:1 w:1) + /// Proof: `Messaging::IsmpRequests` (`max_values`: None, `max_size`: Some(40), added: 2515, mode: `MaxEncodedLen`) + /// Storage: `Messaging::Messages` (r:1 w:1) + /// Proof: `Messaging::Messages` (`max_values`: None, `max_size`: Some(12782), added: 15257, mode: `MaxEncodedLen`) + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`) + /// Storage: `Balances::Holds` (r:1 w:1) + /// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(229), added: 2704, mode: `MaxEncodedLen`) + /// The range of component `x` is `[0, 1]`. + fn ismp_on_response(_x: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `579` + // Estimated: `16247` + // Minimum execution time: 92_000_000 picoseconds. + Weight::from_parts(104_000_000, 16247) + .saturating_add(RocksDbWeight::get().reads(4_u64)) + .saturating_add(RocksDbWeight::get().writes(4_u64)) + } + /// Storage: `Messaging::IsmpRequests` (r:1 w:0) + /// Proof: `Messaging::IsmpRequests` (`max_values`: None, `max_size`: Some(40), added: 2515, mode: `MaxEncodedLen`) + /// Storage: `Messaging::Messages` (r:1 w:1) + /// Proof: `Messaging::Messages` (`max_values`: None, `max_size`: Some(12782), added: 15257, mode: `MaxEncodedLen`) + /// The range of component `x` is `[0, 2]`. + fn ismp_on_timeout(x: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `364` + // Estimated: `16247` + // Minimum execution time: 15_000_000 picoseconds. + Weight::from_parts(15_990_331, 16247) + // Standard Error: 18_842 + .saturating_add(Weight::from_parts(133_977, 0).saturating_mul(x.into())) + .saturating_add(RocksDbWeight::get().reads(2_u64)) + .saturating_add(RocksDbWeight::get().writes(1_u64)) + } + /// Storage: `Skipped::Metadata` (r:0 w:0) + /// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// The range of component `t` is `[0, 32]`. + /// The range of component `x` is `[0, 512]`. + /// The range of component `y` is `[0, 1]`. + fn ismp_post(t: u32, x: u32, y: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `804` + // Estimated: `804` + // Minimum execution time: 108_000_000 picoseconds. + Weight::from_parts(107_002_678, 804) + // Standard Error: 2_159 + .saturating_add(Weight::from_parts(23_191, 0).saturating_mul(t.into())) + // Standard Error: 137 + .saturating_add(Weight::from_parts(4_775, 0).saturating_mul(x.into())) + // Standard Error: 44_992 + .saturating_add(Weight::from_parts(31_581_977, 0).saturating_mul(y.into())) + .saturating_add(RocksDbWeight::get().reads(7_u64)) + .saturating_add(RocksDbWeight::get().writes(7_u64)) + } + /// Storage: `Messaging::Messages` (r:1 w:0) + /// Proof: `Messaging::Messages` (`max_values`: None, `max_size`: Some(12782), added: 15257, mode: `MaxEncodedLen`) + fn poll_status() -> Weight { + // Proof Size summary in bytes: + // Measured: `703` + // Estimated: `16247` + // Minimum execution time: 5_000_000 picoseconds. + Weight::from_parts(6_000_000, 16247) + .saturating_add(RocksDbWeight::get().reads(1_u64)) + } + /// Storage: `Messaging::Messages` (r:100 w:100) + /// Proof: `Messaging::Messages` (`max_values`: None, `max_size`: Some(12782), added: 15257, mode: `MaxEncodedLen`) + /// Storage: `Balances::Holds` (r:1 w:1) + /// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(229), added: 2704, mode: `MaxEncodedLen`) + /// Storage: `Messaging::IsmpRequests` (r:0 w:100) + /// Proof: `Messaging::IsmpRequests` (`max_values`: None, `max_size`: Some(40), added: 2515, mode: `MaxEncodedLen`) + /// The range of component `x` is `[1, 100]`. + fn remove(x: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `421 + x * (109 ±0)` + // Estimated: `3694 + x * (15257 ±0)` + // Minimum execution time: 67_000_000 picoseconds. + Weight::from_parts(13_124_518, 3694) + // Standard Error: 13_474 + .saturating_add(Weight::from_parts(53_672_400, 0).saturating_mul(x.into())) + .saturating_add(RocksDbWeight::get().reads(1_u64)) + .saturating_add(RocksDbWeight::get().reads((1_u64).saturating_mul(x.into()))) + .saturating_add(RocksDbWeight::get().writes(1_u64)) + .saturating_add(RocksDbWeight::get().writes((2_u64).saturating_mul(x.into()))) + .saturating_add(Weight::from_parts(0, 15257).saturating_mul(x.into())) + } + /// Storage: `Messaging::NextMessageId` (r:1 w:1) + /// Proof: `Messaging::NextMessageId` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`) + /// Storage: `Messaging::XcmQueryTimeouts` (r:1 w:1) + /// Proof: `Messaging::XcmQueryTimeouts` (`max_values`: None, `max_size`: Some(814), added: 3289, mode: `MaxEncodedLen`) + /// Storage: `Balances::Holds` (r:1 w:1) + /// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(229), added: 2704, mode: `MaxEncodedLen`) + /// Storage: `PolkadotXcm::QueryCounter` (r:1 w:1) + /// Proof: `PolkadotXcm::QueryCounter` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `Messaging::XcmQueries` (r:0 w:1) + /// Proof: `Messaging::XcmQueries` (`max_values`: None, `max_size`: Some(24), added: 2499, mode: `MaxEncodedLen`) + /// Storage: `Messaging::Messages` (r:0 w:1) + /// Proof: `Messaging::Messages` (`max_values`: None, `max_size`: Some(12782), added: 15257, mode: `MaxEncodedLen`) + /// Storage: `PolkadotXcm::Queries` (r:0 w:1) + /// Proof: `PolkadotXcm::Queries` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// The range of component `x` is `[0, 1]`. + fn xcm_new_query(x: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `342` + // Estimated: `4279` + // Minimum execution time: 67_000_000 picoseconds. + Weight::from_parts(69_351_020, 4279) + // Standard Error: 152_852 + .saturating_add(Weight::from_parts(21_048_979, 0).saturating_mul(x.into())) + .saturating_add(RocksDbWeight::get().reads(4_u64)) + .saturating_add(RocksDbWeight::get().writes(7_u64)) + } + /// Storage: `Messaging::XcmQueries` (r:1 w:1) + /// Proof: `Messaging::XcmQueries` (`max_values`: None, `max_size`: Some(24), added: 2499, mode: `MaxEncodedLen`) + /// Storage: `Messaging::Messages` (r:1 w:1) + /// Proof: `Messaging::Messages` (`max_values`: None, `max_size`: Some(12782), added: 15257, mode: `MaxEncodedLen`) + /// Storage: `Balances::Holds` (r:1 w:1) + /// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(229), added: 2704, mode: `MaxEncodedLen`) + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`) + fn xcm_response() -> Weight { + // Proof Size summary in bytes: + // Measured: `547` + // Estimated: `16247` + // Minimum execution time: 81_000_000 picoseconds. + Weight::from_parts(81_000_000, 16247) + .saturating_add(RocksDbWeight::get().reads(4_u64)) + .saturating_add(RocksDbWeight::get().writes(4_u64)) + } +} + diff --git a/pallets/api-vnext/src/mock.rs b/pallets/api-vnext/src/mock.rs new file mode 100644 index 000000000..af6f5124c --- /dev/null +++ b/pallets/api-vnext/src/mock.rs @@ -0,0 +1,489 @@ +use codec::Compact; +use frame_support::{ + assert_ok, derive_impl, + pallet_prelude::ConstU32, + parameter_types, + sp_runtime::{traits::AccountIdLookup, AccountId32, BuildStorage}, + traits::{AsEnsureOriginWithArg, Get, OnInitialize}, + PalletId, +}; +use frame_system::{EnsureRoot, EnsureSigned}; +use pallet_assets::AutoIncAssetId; +pub(crate) use pallet_revive::test_utils::{ALICE, ALICE_ADDR, BOB, BOB_ADDR, CHARLIE}; + +use super::fungibles; + +pub(crate) type AccountId = AccountId32; +pub(crate) type Balance = u128; +type Block = frame_system::mocking::MockBlockU32; +pub(crate) type ExistentialDeposit = ::ExistentialDeposit; +// For terminology in tests. +pub(crate) type TokenId = u32; + +pub(crate) const ERC20: u16 = 2; +pub(crate) const FUNGIBLES: u16 = 1; +#[cfg(feature = "messaging")] +pub(crate) const ISMP: u16 = 4; +#[cfg(feature = "messaging")] +pub(crate) const MESSAGING: u16 = 3; +pub(crate) const UNIT: Balance = 10_000_000_000; +#[cfg(feature = "messaging")] +pub(crate) const XCM: u16 = 5; + +#[frame_support::runtime] +mod runtime { + #[runtime::runtime] + #[runtime::derive( + RuntimeCall, + RuntimeEvent, + RuntimeError, + RuntimeOrigin, + RuntimeFreezeReason, + RuntimeHoldReason, + RuntimeSlashReason, + RuntimeLockId, + RuntimeTask, + RuntimeViewFunction + )] + pub struct Test; + + #[runtime::pallet_index(0)] + pub type Assets = pallet_assets::Pallet; + #[runtime::pallet_index(1)] + pub type Balances = pallet_balances::Pallet; + #[runtime::pallet_index(2)] + pub type Contracts = pallet_revive::Pallet; + #[runtime::pallet_index(3)] + pub type Fungibles = fungibles::Pallet; + #[runtime::pallet_index(4)] + #[runtime::disable_unsigned] + #[cfg(feature = "messaging")] + pub type Ismp = pallet_ismp::Pallet; + #[runtime::pallet_index(5)] + #[cfg(feature = "messaging")] + pub type Messaging = crate::messaging::Pallet; + #[runtime::pallet_index(6)] + pub type ParachainInfo = parachain_info::Pallet; + #[runtime::pallet_index(7)] + pub type System = frame_system::Pallet; + #[runtime::pallet_index(8)] + pub type Timestamp = pallet_timestamp::Pallet; + #[runtime::pallet_index(9)] + #[cfg(feature = "messaging")] + pub type Xcm = pallet_xcm::Pallet; +} + +#[derive_impl(pallet_assets::config_preludes::TestDefaultConfig)] +impl pallet_assets::Config for Test { + type AssetIdParameter = Compact; + type Balance = Balance; + type CallbackHandle = AutoIncAssetId; + type CreateOrigin = AsEnsureOriginWithArg>; + type Currency = Balances; + type ForceOrigin = EnsureRoot; +} + +#[derive_impl(pallet_balances::config_preludes::TestDefaultConfig)] +impl pallet_balances::Config for Test { + type AccountStore = System; + type Balance = Balance; +} + +#[derive_impl(pallet_revive::config_preludes::TestDefaultConfig)] +impl pallet_revive::Config for Test { + type AddressMapper = pallet_revive::AccountId32Mapper; + type Currency = Balances; + type InstantiateOrigin = EnsureSigned; + type Precompiles = ( + fungibles::precompiles::v0::Fungibles, + fungibles::precompiles::erc20::v0::Erc20, + messaging::precompiles::v0::Messaging, + messaging::precompiles::ismp::v0::Ismp, + messaging::precompiles::xcm::v0::Xcm, + ); + type Time = Timestamp; + type UploadOrigin = EnsureSigned; +} + +impl fungibles::Config for Test { + type WeightInfo = (); +} + +#[cfg(feature = "messaging")] +pub(super) mod messaging { + use ::ismp::{host::StateMachine, module::IsmpModule, router::IsmpRouter}; + use ::xcm::latest::{ + InteriorLocation, Junction, Junction::Parachain, Junctions, Location, NetworkId, + }; + use frame_support::{ + dispatch::PostDispatchInfo, + pallet_prelude::{DispatchResultWithPostInfo, EnsureOrigin, Pays, Weight}, + traits::{tokens::imbalance::ResolveTo, Everything, NeverEnsureOrigin, OriginTrait}, + weights::WeightToFee, + }; + use frame_system::EnsureRoot; + use sp_runtime::traits::{AccountIdConversion, TryConvert}; + use xcm_builder::{EnsureXcmOrigin, FixedWeightBounds, SignedToAccountId32}; + + use super::*; + pub(super) use crate::messaging::*; + use crate::{messaging::transports::xcm::NotifyQueryHandler, H160}; + + pub(crate) const RESPONSE_LOCATION: Location = + Location { parents: 1, interior: Junctions::Here }; + + parameter_types! { + pub const MaxInstructions: u32 = 100; + pub const MaxXcmQueryTimeoutsPerBlock: u32 = 10; + pub const OnChainByteFee: Balance = 10; + pub const OffChainByteFee: Balance = 5; + pub const RelayNetwork: Option = Some(NetworkId::Polkadot); + pub Treasury: AccountId = PalletId(*b"py/trsry").into_account_truncating(); + pub UnitWeightCost: Weight = Weight::from_parts(1_000_000_000, 64 * 1024); + pub UniversalLocation: InteriorLocation = Parachain(2_000).into(); + } + + impl pallet_ismp::Config for Test { + type AdminOrigin = EnsureRoot; + type Balance = Balance; + type ConsensusClients = (); + type Coprocessor = Coprocessor; + type Currency = Balances; + type HostStateMachine = HostStateMachine; + type OffchainDB = (); + type Router = AlwaysErrorRouter; + type RuntimeEvent = RuntimeEvent; + type TimestampProvider = Timestamp; + type WeightProvider = (); + } + + #[derive(Default)] + pub struct AlwaysErrorRouter; + impl IsmpRouter for AlwaysErrorRouter { + fn module_for_id(&self, _bytes: Vec) -> Result, anyhow::Error> { + Err(anyhow::anyhow!("not implemented")) + } + } + + pub struct Coprocessor; + impl Get> for Coprocessor { + fn get() -> Option { + Some(HostStateMachine::get()) + } + } + + pub struct HostStateMachine; + impl Get for HostStateMachine { + fn get() -> StateMachine { + StateMachine::Polkadot(2000) + } + } + + impl crate::messaging::Config for Test { + type CallbackExecutor = AlwaysSuccessfullCallbackExecutor; + type FeeHandler = ResolveTo; + type Fungibles = Balances; + type IsmpDispatcher = pallet_ismp::Pallet; + type Keccak256 = Ismp; + type MaxContextLen = ConstU32<64>; + type MaxDataLen = ConstU32<1024>; + type MaxKeyLen = ConstU32<32>; + type MaxKeys = ConstU32<10>; + type MaxRecipientLen = ConstU32<32>; + type MaxRemovals = ConstU32<1024>; + type MaxResponseLen = ConstU32<1024>; + type MaxXcmQueryTimeoutsPerBlock = MaxXcmQueryTimeoutsPerBlock; + type OffChainByteFee = OffChainByteFee; + type OnChainByteFee = OnChainByteFee; + type OriginConverter = AccountToLocation; + type RuntimeHoldReason = RuntimeHoldReason; + type WeightInfo = (); + type WeightToFee = RefTimePlusProofTime; + type Xcm = QueryHandler; + type XcmResponseOrigin = EnsureRootWithResponseSuccess; + } + + pub struct AccountToLocation; + impl TryConvert for AccountToLocation { + fn try_convert(origin: RuntimeOrigin) -> Result { + let signer = origin.into_signer(); + let l = Junctions::from(Junction::AccountId32 { + network: None, + id: signer.expect("No account id, required.").into(), + }) + .into_location(); + Ok(l) + } + } + + /// Will return half of the weight in the post info. + /// Mocking a successfull execution, with refund. + pub struct AlwaysSuccessfullCallbackExecutor(T); + impl CallbackExecutor for AlwaysSuccessfullCallbackExecutor { + fn execute( + _account: &::AccountId, + _contract: H160, + _data: Vec, + gas_limit: sp_runtime::Weight, + _storage_deposit_limit: BalanceOf, + ) -> frame_support::dispatch::DispatchResultWithPostInfo { + DispatchResultWithPostInfo::Ok(PostDispatchInfo { + actual_weight: Some(gas_limit / 2), + pays_fee: Pays::Yes, + }) + } + + // Will be used for prepayment of response fees. + fn execution_weight() -> Weight { + Weight::from_parts(100_000u64, 100_000u64) + } + } + + pub struct EnsureRootWithResponseSuccess; + impl EnsureOrigin for EnsureRootWithResponseSuccess { + type Success = Location; + + fn try_origin(o: RuntimeOrigin) -> Result { + if EnsureRoot::::ensure_origin(o.clone()).is_ok() { + Ok(RESPONSE_LOCATION) + } else { + Err(o) + } + } + + #[cfg(feature = "runtime-benchmarks")] + fn try_successful_origin() -> Result { + Ok(RuntimeOrigin::root()) + } + } + + pub struct QueryHandler; + impl NotifyQueryHandler for QueryHandler { + type WeightInfo = pallet_xcm::Pallet; + + fn new_notify_query( + responder: impl Into, + notify: messaging::Call, + timeout: u32, + match_querier: impl Into, + ) -> u64 { + Xcm::new_notify_query(responder, notify, timeout, match_querier) + } + } + + pub struct RefTimePlusProofTime; + impl WeightToFee for RefTimePlusProofTime { + type Balance = Balance; + + fn weight_to_fee(weight: &Weight) -> Self::Balance { + (weight.ref_time() + weight.proof_size()) as u128 + } + } + + type LocalOriginToLocation = SignedToAccountId32; + + impl pallet_xcm::Config for Test { + type AdminOrigin = NeverEnsureOrigin<()>; + type AdvertisedXcmVersion = (); + type AuthorizedAliasConsideration = (); + type Currency = Balances; + type CurrencyMatcher = (); + type ExecuteXcmOrigin = EnsureXcmOrigin; + type MaxLockers = (); + type MaxRemoteLockConsumers = (); + type RemoteLockConsumerIdentifier = (); + type RuntimeCall = RuntimeCall; + type RuntimeEvent = RuntimeEvent; + type RuntimeOrigin = RuntimeOrigin; + type SendXcmOrigin = EnsureXcmOrigin; + type SovereignAccountOf = (); + type TrustedLockers = (); + type UniversalLocation = UniversalLocation; + type Weigher = FixedWeightBounds; + type WeightInfo = pallet_xcm::TestWeightInfo; + type XcmExecuteFilter = Everything; + type XcmExecutor = (); + type XcmReserveTransferFilter = (); + type XcmRouter = (); + type XcmTeleportFilter = (); + + const VERSION_DISCOVERY_QUEUE_SIZE: u32 = 0; + } +} + +impl parachain_info::Config for Test {} + +#[derive_impl(frame_system::config_preludes::TestDefaultConfig)] +impl frame_system::Config for Test { + type AccountData = pallet_balances::AccountData; + type AccountId = AccountId; + type Block = Block; + type Lookup = AccountIdLookup; +} + +#[derive_impl(pallet_timestamp::config_preludes::TestDefaultConfig)] +impl pallet_timestamp::Config for Test {} + +pub(crate) struct ExtBuilder { + assets: Option>, + asset_accounts: Option>, + asset_metadata: Option, Vec, u8)>>, + balances: Vec<(AccountId, Balance)>, + #[cfg(feature = "messaging")] + messages: Option, Balance)>>, + #[cfg(feature = "messaging")] + next_message_id: Option, + #[cfg(feature = "messaging")] + query_id: Option, +} +impl ExtBuilder { + pub(crate) fn new() -> Self { + Self { + assets: None, + asset_accounts: None, + asset_metadata: None, + balances: vec![(ALICE, ExistentialDeposit::get())], + #[cfg(feature = "messaging")] + messages: None, + #[cfg(feature = "messaging")] + next_message_id: None, + #[cfg(feature = "messaging")] + query_id: None, + } + } + + pub(crate) fn with_assets(mut self, assets: Vec<(TokenId, AccountId, bool, Balance)>) -> Self { + self.assets = Some(assets); + self + } + + pub(crate) fn with_asset_balances( + mut self, + accounts: Vec<(TokenId, AccountId, Balance)>, + ) -> Self { + self.asset_accounts = Some(accounts); + self + } + + pub(crate) fn with_asset_metadata( + mut self, + metadata: Vec<(TokenId, Vec, Vec, u8)>, + ) -> Self { + self.asset_metadata = Some(metadata); + self + } + + pub(crate) fn with_balances(mut self, balances: Vec<(AccountId, Balance)>) -> Self { + self.balances = balances; + self + } + + #[cfg(feature = "messaging")] + pub(crate) fn with_messages( + mut self, + messages: Vec<(AccountId, messaging::MessageId, messaging::Message, Balance)>, + ) -> Self { + self.messages = Some(messages); + self + } + + #[cfg(feature = "messaging")] + pub(crate) fn with_message_id(mut self, id: messaging::MessageId) -> Self { + self.next_message_id = Some(id); + self + } + + #[cfg(feature = "messaging")] + pub(crate) fn with_query_id(mut self, query_id: ::xcm::latest::QueryId) -> Self { + self.query_id = Some(query_id); + self + } + + pub(crate) fn build(mut self) -> sp_io::TestExternalities { + let mut t = frame_system::GenesisConfig::::default().build_storage().unwrap(); + + pallet_balances::GenesisConfig:: { balances: self.balances, ..Default::default() } + .assimilate_storage(&mut t) + .unwrap(); + + pallet_assets::GenesisConfig:: { + assets: self.assets.take().unwrap_or_default(), + metadata: self.asset_metadata.take().unwrap_or_default(), + accounts: self.asset_accounts.take().unwrap_or_default(), + next_asset_id: Some(0), + } + .assimilate_storage(&mut t) + .unwrap(); + + let mut ext = sp_io::TestExternalities::new(t); + ext.execute_with(|| { + System::set_block_number(1); + + #[cfg(feature = "messaging")] + { + if let Some(messages) = self.messages.take() { + for (account, id, message, deposit) in messages { + messaging::Messages::::insert(id, message); + + use frame_support::traits::fungible::MutateHold; + use messaging::HoldReason; + assert_ok!(::Fungibles::hold( + &HoldReason::Messaging.into(), + &account, + deposit + )); + } + } + + if let Some(id) = self.next_message_id.take() { + crate::messaging::NextMessageId::::set(id); + } + + if let Some(query_id) = self.query_id.take() { + use frame_support::pallet_prelude::ValueQuery; + use xcm::latest::QueryId; + + #[frame_support::storage_alias] + type QueryCounter = StorageValue; + + QueryCounter::set(query_id); + } + } + }); + ext + } + + #[cfg(feature = "runtime-benchmarks")] + pub(crate) fn build_with_env( + self, + execute: impl FnOnce(pallet_revive::precompiles::run::CallSetup) -> R, + ) -> R { + self.build().execute_with(|| { + let call_setup = pallet_revive::precompiles::run::CallSetup::::default(); + // let (ext, _) = call_setup.ext(); + execute(call_setup) + }) + } +} + +pub(crate) fn next_block() { + let next_block: u32 = System::block_number() + 1; + System::set_block_number(next_block); + Messaging::on_initialize(next_block); +} + +pub(crate) fn none() -> RuntimeOrigin { + RuntimeOrigin::none() +} + +pub(crate) fn run_to(block_number: u32) { + while System::block_number() < block_number { + next_block(); + } +} +pub(crate) fn root() -> RuntimeOrigin { + RuntimeOrigin::root() +} +pub(crate) fn signed(account: AccountId) -> RuntimeOrigin { + RuntimeOrigin::signed(account) +} diff --git a/pallets/api/src/fungibles/mod.rs b/pallets/api/src/fungibles/mod.rs index 7dd06a926..9ce08e2be 100644 --- a/pallets/api/src/fungibles/mod.rs +++ b/pallets/api/src/fungibles/mod.rs @@ -44,8 +44,6 @@ pub mod pallet { /// Configure the pallet by specifying the parameters and types on which it depends. #[pallet::config] pub trait Config: frame_system::Config + pallet_assets::Config { - /// Because this pallet emits events, it depends on the runtime's definition of an event. - type RuntimeEvent: From> + IsType<::RuntimeEvent>; /// The instance of pallet-assets. type AssetsInstance; /// Weight information for dispatchables in this pallet. diff --git a/pallets/api/src/fungibles/tests.rs b/pallets/api/src/fungibles/tests.rs index 43881ac0a..b66f256a3 100644 --- a/pallets/api/src/fungibles/tests.rs +++ b/pallets/api/src/fungibles/tests.rs @@ -713,7 +713,7 @@ mod read_weights { assert_eq!(total_supply, WeightInfo::total_supply()); assert_eq!(balance_of, WeightInfo::balance_of()); - assert_eq!(allowance, WeightInfo::allowance()); + assert_eq!(allowance, ::allowance()); assert_eq!(token_name, WeightInfo::token_name()); assert_eq!(token_symbol, WeightInfo::token_symbol()); assert_eq!(token_decimals, WeightInfo::token_decimals()); diff --git a/pallets/api/src/messaging/mod.rs b/pallets/api/src/messaging/mod.rs index afaa696cb..7a902f6aa 100644 --- a/pallets/api/src/messaging/mod.rs +++ b/pallets/api/src/messaging/mod.rs @@ -51,9 +51,6 @@ pub mod pallet { /// Configuration of the pallet by specifying the parameters and types on which it depends. #[pallet::config] pub trait Config: frame_system::Config { - /// Because this pallet emits events, it depends on the runtime's definition of an event. - type RuntimeEvent: From> + IsType<::RuntimeEvent>; - type OriginConverter: TryConvert; #[pallet::constant] diff --git a/pallets/api/src/mock.rs b/pallets/api/src/mock.rs index 48caa6caa..24104d754 100644 --- a/pallets/api/src/mock.rs +++ b/pallets/api/src/mock.rs @@ -113,7 +113,6 @@ impl pallet_assets::Config for Test { impl crate::fungibles::Config for Test { type AssetsInstance = AssetsInstance; - type RuntimeEvent = RuntimeEvent; type WeightInfo = (); } @@ -190,7 +189,6 @@ impl pallet_nfts::Config for Test { type MetadataDepositBase = ConstU128<1>; type OffchainPublic = Noop; type OffchainSignature = Noop; - type RuntimeEvent = RuntimeEvent; type StringLimit = ConstU32<50>; type ValueLimit = ConstU32<50>; type WeightInfo = (); @@ -198,7 +196,6 @@ impl pallet_nfts::Config for Test { impl crate::nonfungibles::Config for Test { type NftsInstance = NftsInstance; - type RuntimeEvent = RuntimeEvent; type WeightInfo = (); } diff --git a/pallets/api/src/nonfungibles/mod.rs b/pallets/api/src/nonfungibles/mod.rs index e5e8b2e47..8efe80a08 100644 --- a/pallets/api/src/nonfungibles/mod.rs +++ b/pallets/api/src/nonfungibles/mod.rs @@ -63,8 +63,6 @@ pub mod pallet { /// Configure the pallet by specifying the parameters and types on which it depends. #[pallet::config] pub trait Config: frame_system::Config + pallet_nfts::Config { - /// Because this pallet emits events, it depends on the runtime's definition of an event. - type RuntimeEvent: From> + IsType<::RuntimeEvent>; /// The instance of pallet-nfts. type NftsInstance; /// Weight information for dispatchables in this pallet. diff --git a/pallets/motion/src/benchmarking.rs b/pallets/motion/src/benchmarking.rs index 2bc78cbf0..3f790eebc 100644 --- a/pallets/motion/src/benchmarking.rs +++ b/pallets/motion/src/benchmarking.rs @@ -7,7 +7,7 @@ use super::*; #[allow(unused)] use crate::Pallet as Motion; -fn assert_last_event(generic_event: ::RuntimeEvent) { +fn assert_last_event(generic_event: T::RuntimeEvent) { frame_system::Pallet::::assert_last_event(generic_event.into()); } diff --git a/pallets/motion/src/lib.rs b/pallets/motion/src/lib.rs index 813763fab..8387f2134 100644 --- a/pallets/motion/src/lib.rs +++ b/pallets/motion/src/lib.rs @@ -38,8 +38,6 @@ pub mod pallet { type RuntimeCall: Parameter + UnfilteredDispatchable + GetDispatchInfo; - /// The runtime event type. - type RuntimeEvent: From> + IsType<::RuntimeEvent>; /// Origin that can act as `Root` origin if a collective has achieved a simple majority /// consensus. type SimpleMajorityOrigin: EnsureOrigin; diff --git a/pallets/motion/src/mock.rs b/pallets/motion/src/mock.rs index c562c5d49..4da403b4e 100644 --- a/pallets/motion/src/mock.rs +++ b/pallets/motion/src/mock.rs @@ -74,7 +74,6 @@ impl pallet_collective::Config for Test { impl pallet_motion::Config for Test { type RuntimeCall = RuntimeCall; - type RuntimeEvent = RuntimeEvent; type SimpleMajorityOrigin = pallet_collective::EnsureProportionAtLeast; type SuperMajorityOrigin = diff --git a/pallets/nfts/src/benchmarking.rs b/pallets/nfts/src/benchmarking.rs index affacdce5..8f7128048 100644 --- a/pallets/nfts/src/benchmarking.rs +++ b/pallets/nfts/src/benchmarking.rs @@ -187,7 +187,7 @@ fn add_collection_attribute, I: 'static>( (key, caller, caller_lookup) } -fn assert_last_event, I: 'static>(generic_event: >::RuntimeEvent) { +fn assert_last_event, I: 'static>(generic_event: T::RuntimeEvent) { let events = frame_system::Pallet::::events(); let system_event: ::RuntimeEvent = generic_event.into(); // compare to the last event record diff --git a/pallets/nfts/src/lib.rs b/pallets/nfts/src/lib.rs index 438876d7b..0922f8b89 100644 --- a/pallets/nfts/src/lib.rs +++ b/pallets/nfts/src/lib.rs @@ -138,10 +138,6 @@ pub mod pallet { #[pallet::config] /// The module configuration trait. pub trait Config: frame_system::Config { - /// The overarching event type. - type RuntimeEvent: From> - + IsType<::RuntimeEvent>; - /// Identifier for the collection of item. /// /// SAFETY: The functions in the `Incrementable` trait are fallible. If the functions diff --git a/pallets/nfts/src/mock.rs b/pallets/nfts/src/mock.rs index 1f75fcaf3..20c7159b6 100644 --- a/pallets/nfts/src/mock.rs +++ b/pallets/nfts/src/mock.rs @@ -91,7 +91,6 @@ impl Config for Test { /// Off-chain = signature On-chain - therefore no conversion needed. /// It needs to be From for benchmarking. type OffchainSignature = Signature; - type RuntimeEvent = RuntimeEvent; type StringLimit = ConstU32<50>; type ValueLimit = ConstU32<50>; type WeightInfo = (); diff --git a/pop-api-vnext/.gitignore b/pop-api-vnext/.gitignore new file mode 100644 index 000000000..e4fa8cd88 --- /dev/null +++ b/pop-api-vnext/.gitignore @@ -0,0 +1,11 @@ +.idea/ +# Generated by Cargo +# will have compiled files and executables +debug/ +target/ + +# These are backup files generated by rustfmt +**/*.rs.bk + +# MSVC Windows builds of rustc generate these, which store debugging information +*.pdb diff --git a/pop-api-vnext/Cargo.lock b/pop-api-vnext/Cargo.lock new file mode 100644 index 000000000..3df846c93 --- /dev/null +++ b/pop-api-vnext/Cargo.lock @@ -0,0 +1,6032 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aead" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +dependencies = [ + "crypto-common", + "generic-array", +] + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "getrandom 0.3.3", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "alloy-core" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d47400608fc869727ad81dba058d55f97b29ad8b5c5256d9598523df8f356ab6" +dependencies = [ + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-primitives", + "alloy-rlp", + "alloy-sol-types", +] + +[[package]] +name = "alloy-dyn-abi" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9e8a436f0aad7df8bb47f144095fba61202265d9f5f09a70b0e3227881a668e" +dependencies = [ + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-type-parser", + "alloy-sol-types", + "itoa", + "serde", + "serde_json", + "winnow", +] + +[[package]] +name = "alloy-json-abi" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "459f98c6843f208856f338bfb25e65325467f7aff35dfeb0484d0a76e059134b" +dependencies = [ + "alloy-primitives", + "alloy-sol-type-parser", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-primitives" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cfebde8c581a5d37b678d0a48a32decb51efd7a63a08ce2517ddec26db705c8" +dependencies = [ + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more 2.0.1", + "foldhash", + "hashbrown 0.15.5", + "indexmap", + "itoa", + "k256", + "keccak-asm", + "paste", + "proptest", + "rand 0.9.2", + "ruint", + "rustc-hash 2.1.1", + "serde", + "sha3", + "tiny-keccak", +] + +[[package]] +name = "alloy-rlp" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f70d83b765fdc080dbcd4f4db70d8d23fe4761f2f02ebfa9146b833900634b4" +dependencies = [ + "arrayvec", + "bytes", +] + +[[package]] +name = "alloy-sol-macro" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aedac07a10d4c2027817a43cc1f038313fc53c7ac866f7363239971fd01f9f18" +dependencies = [ + "alloy-sol-macro-expander", + "alloy-sol-macro-input", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "alloy-sol-macro-expander" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24f9a598f010f048d8b8226492b6401104f5a5c1273c2869b72af29b48bb4ba9" +dependencies = [ + "alloy-sol-macro-input", + "const-hex", + "heck", + "indexmap", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.104", + "syn-solidity", + "tiny-keccak", +] + +[[package]] +name = "alloy-sol-macro-input" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f494adf9d60e49aa6ce26dfd42c7417aa6d4343cf2ae621f20e4d92a5ad07d85" +dependencies = [ + "const-hex", + "dunce", + "heck", + "macro-string", + "proc-macro2", + "quote", + "syn 2.0.104", + "syn-solidity", +] + +[[package]] +name = "alloy-sol-type-parser" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52db32fbd35a9c0c0e538b58b81ebbae08a51be029e7ad60e08b60481c2ec6c3" +dependencies = [ + "serde", + "winnow", +] + +[[package]] +name = "alloy-sol-types" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a285b46e3e0c177887028278f04cc8262b76fd3b8e0e20e93cea0a58c35f5ac5" +dependencies = [ + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-macro", + "serde", +] + +[[package]] +name = "anyhow" +version = "1.0.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100" + +[[package]] +name = "approx" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "aquamarine" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21cc1548309245035eb18aa7f0967da6bc65587005170c56e6ef2788a4cf3f4e" +dependencies = [ + "include_dir", + "itertools 0.10.5", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "ark-bls12-377" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb00293ba84f51ce3bd026bd0de55899c4e68f0a39a5728cebae3a73ffdc0a4f" +dependencies = [ + "ark-ec 0.4.2", + "ark-ff 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bls12-381" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c775f0d12169cba7aae4caeb547bb6a50781c7449a8aa53793827c9ec4abf488" +dependencies = [ + "ark-ec 0.4.2", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bls12-381" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3df4dcc01ff89867cd86b0da835f23c3f02738353aaee7dde7495af71363b8d5" +dependencies = [ + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", +] + +[[package]] +name = "ark-ec" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" +dependencies = [ + "ark-ff 0.4.2", + "ark-poly 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "hashbrown 0.13.2", + "itertools 0.10.5", + "num-traits", + "zeroize", +] + +[[package]] +name = "ark-ec" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" +dependencies = [ + "ahash", + "ark-ff 0.5.0", + "ark-poly 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe", + "fnv", + "hashbrown 0.15.5", + "itertools 0.13.0", + "num-bigint", + "num-integer", + "num-traits", + "zeroize", +] + +[[package]] +name = "ark-ed-on-bls12-381-bandersnatch" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1786b2e3832f6f0f7c8d62d5d5a282f6952a1ab99981c54cd52b6ac1d8f02df5" +dependencies = [ + "ark-bls12-381 0.5.0", + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-std 0.5.0", +] + +[[package]] +name = "ark-ff" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" +dependencies = [ + "ark-ff-asm 0.3.0", + "ark-ff-macros 0.3.0", + "ark-serialize 0.3.0", + "ark-std 0.3.0", + "derivative", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.3.3", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "digest 0.10.7", + "itertools 0.10.5", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.4.1", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" +dependencies = [ + "ark-ff-asm 0.5.0", + "ark-ff-macros 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "educe", + "itertools 0.13.0", + "num-bigint", + "num-traits", + "paste", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" +dependencies = [ + "quote", + "syn 2.0.104", +] + +[[package]] +name = "ark-ff-macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" +dependencies = [ + "num-bigint", + "num-traits", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "ark-poly" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" +dependencies = [ + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "hashbrown 0.13.2", +] + +[[package]] +name = "ark-poly" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" +dependencies = [ + "ahash", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe", + "fnv", + "hashbrown 0.15.5", +] + +[[package]] +name = "ark-serialize" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" +dependencies = [ + "ark-std 0.3.0", + "digest 0.9.0", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-serialize-derive 0.4.2", + "ark-std 0.4.0", + "digest 0.10.7", + "num-bigint", +] + +[[package]] +name = "ark-serialize" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" +dependencies = [ + "ark-serialize-derive 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "num-bigint", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "ark-std" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "ark-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "ark-transcript" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47c1c928edb9d8ff24cb5dcb7651d3a98494fff3099eee95c2404cd813a9139f" +dependencies = [ + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "digest 0.10.7", + "rand_core 0.6.4", + "sha3", +] + +[[package]] +name = "ark-vrf" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9501da18569b2afe0eb934fb7afd5a247d238b94116155af4dd068f319adfe6d" +dependencies = [ + "ark-bls12-381 0.5.0", + "ark-ec 0.5.0", + "ark-ed-on-bls12-381-bandersnatch", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "digest 0.10.7", + "rand_chacha 0.3.1", + "sha2 0.10.9", + "w3f-ring-proof", + "zeroize", +] + +[[package]] +name = "array-bytes" +version = "6.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5dde061bd34119e902bbb2d9b90c5692635cf59fb91d582c2b68043f1b8293" + +[[package]] +name = "array-init" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d62b7694a562cdf5a74227903507c56ab2cc8bdd1f781ed5cb4cf9c9f810bfc" + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "async-trait" +version = "0.1.88" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "auto_impl" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "backtrace" +version = "0.3.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets 0.52.6", +] + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base58" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6107fe1be6682a68940da878d9e9f5e90ca5745b3dec9fd1bb393c8777d4f581" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64ct" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" + +[[package]] +name = "binary-merkle-tree" +version = "13.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "hash-db", + "log", + "parity-scale-codec", +] + +[[package]] +name = "bip32" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db40d3dfbeab4e031d78c844642fa0caa0b0db11ce1607ac9d2986dff1405c69" +dependencies = [ + "bs58", + "hmac", + "k256", + "rand_core 0.6.4", + "ripemd", + "secp256k1 0.27.0", + "sha2 0.10.9", + "subtle", + "zeroize", +] + +[[package]] +name = "bip39" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d193de1f7487df1914d3a568b772458861d33f9c54249612cc2893d6915054" +dependencies = [ + "bitcoin_hashes 0.13.0", + "serde", + "unicode-normalization", +] + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + +[[package]] +name = "bitcoin-internals" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9425c3bf7089c983facbae04de54513cce73b41c7f9ff8c845b54e7bc64ebbfb" + +[[package]] +name = "bitcoin-io" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b47c4ab7a93edb0c7198c5535ed9b52b63095f4e9b45279c6736cec4b856baf" + +[[package]] +name = "bitcoin_hashes" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1930a4dabfebb8d7d9992db18ebe3ae2876f0a305fab206fd168df931ede293b" +dependencies = [ + "bitcoin-internals", + "hex-conservative 0.1.2", +] + +[[package]] +name = "bitcoin_hashes" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16" +dependencies = [ + "bitcoin-io", + "hex-conservative 0.2.1", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "blake2b_simd" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06e903a20b159e944f91ec8499fe1e55651480c541ea0a584f5d967c49ad9d99" +dependencies = [ + "arrayref", + "arrayvec", + "constant_time_eq", +] + +[[package]] +name = "blake3" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bounded-collections" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dee8eddd066a8825ec5570528e6880471210fd5d88cb6abbe1cfdd51ca249c33" +dependencies = [ + "jam-codec", + "log", + "parity-scale-codec", + "scale-info", + "serde", +] + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "sha2 0.10.9", + "tinyvec", +] + +[[package]] +name = "byte-slice-cast" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" + +[[package]] +name = "bytemuck" +version = "1.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +dependencies = [ + "serde", +] + +[[package]] +name = "camino" +version = "1.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d07aa9a93b00c76f71bc35d598bed923f6d4f3a9ca5c24b7737ae1a292841c0" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" +dependencies = [ + "camino", + "cargo-platform", + "semver 1.0.26", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "cc" +version = "1.2.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2352e5597e9c544d5e6d9c95190d5d27738ade584fa8db0a16e130e5c2b5296e" +dependencies = [ + "shlex", +] + +[[package]] +name = "cfg-expr" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" +dependencies = [ + "smallvec", +] + +[[package]] +name = "cfg-if" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", + "zeroize", +] + +[[package]] +name = "common-path" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2382f75942f4b3be3690fe4f86365e9c853c1587d6ee58212cebf6e2a9ccd101" + +[[package]] +name = "const-hex" +version = "1.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83e22e0ed40b96a48d3db274f72fd365bd78f67af39b6bbd47e8a15e1c6207ff" +dependencies = [ + "cfg-if", + "cpufeatures", + "hex", + "proptest", + "serde", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "const-random" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" +dependencies = [ + "const-random-macro", +] + +[[package]] +name = "const-random-macro" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" +dependencies = [ + "getrandom 0.2.16", + "once_cell", + "tiny-keccak", +] + +[[package]] +name = "const_env" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e9e4f72c6e3398ca6da372abd9affd8f89781fe728869bbf986206e9af9627e" +dependencies = [ + "const_env_impl", +] + +[[package]] +name = "const_env_impl" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a4f51209740b5e1589e702b3044cdd4562cef41b6da404904192ffffb852d62" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "const_format" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" +dependencies = [ + "const_format_proc_macros", + "konst", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "typenum", +] + +[[package]] +name = "crypto_secretbox" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d6cf87adf719ddf43a805e92c6870a531aedda35ff640442cbaf8674e141e1" +dependencies = [ + "aead", + "cipher", + "generic-array", + "poly1305", + "salsa20", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto", + "rustc_version 0.4.1", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "darling" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.104", +] + +[[package]] +name = "darling_macro" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "const-oid", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive-syn-parse" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d65d7ce8132b7c0e54497a4d9a55a1c2a0912a0d786cf894472ba818fba45762" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "derive-where" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef941ded77d15ca19b40374869ac6000af1c9f2a4c0f3d4c70926287e6364a8f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "derive_more" +version = "0.99.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "derive_more" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +dependencies = [ + "derive_more-impl 1.0.0", +] + +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl 2.0.1", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", + "unicode-xid", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + +[[package]] +name = "docify" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a772b62b1837c8f060432ddcc10b17aae1453ef17617a99bc07789252d2a5896" +dependencies = [ + "docify_macros", +] + +[[package]] +name = "docify_macros" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60e6be249b0a462a14784a99b19bf35a667bb5e09de611738bb7362fa4c95ff7" +dependencies = [ + "common-path", + "derive-syn-parse", + "once_cell", + "proc-macro2", + "quote", + "regex", + "syn 2.0.104", + "termcolor", + "toml", + "walkdir", +] + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979", + "serdect", + "signature", + "spki", +] + +[[package]] +name = "ed25519" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +dependencies = [ + "pkcs8", + "signature", +] + +[[package]] +name = "ed25519-dalek" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" +dependencies = [ + "curve25519-dalek", + "ed25519", + "serde", + "sha2 0.10.9", + "subtle", + "zeroize", +] + +[[package]] +name = "ed25519-zebra" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d9ce6874da5d4415896cd45ffbc4d1cfc0c4f9c079427bd870742c30f2f65a9" +dependencies = [ + "curve25519-dalek", + "ed25519", + "hashbrown 0.14.5", + "hex", + "rand_core 0.6.4", + "sha2 0.10.9", + "zeroize", +] + +[[package]] +name = "educe" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest 0.10.7", + "ff", + "generic-array", + "group", + "pkcs8", + "rand_core 0.6.4", + "sec1", + "serdect", + "subtle", + "zeroize", +] + +[[package]] +name = "enum-ordinalize" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5" +dependencies = [ + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "environmental" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48c92028aaa870e83d51c64e5d4e0b6981b360c522198c23959f219a4e1b15b" + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "ethbloom" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c321610643004cf908ec0f5f2aa0d8f1f8e14b540562a2887a1111ff1ecbf7b" +dependencies = [ + "crunchy", + "fixed-hash", + "impl-codec 0.7.1", + "impl-rlp", + "impl-serde", + "scale-info", + "tiny-keccak", +] + +[[package]] +name = "ethereum-standards" +version = "0.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "alloy-core", +] + +[[package]] +name = "ethereum-types" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ab15ed80916029f878e0267c3a9f92b67df55e79af370bf66199059ae2b4ee3" +dependencies = [ + "ethbloom", + "fixed-hash", + "impl-codec 0.7.1", + "impl-rlp", + "impl-serde", + "primitive-types 0.13.1", + "scale-info", + "uint 0.10.0", +] + +[[package]] +name = "expander" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2c470c71d91ecbd179935b24170459e926382eaaa86b590b78814e180d8a8e2" +dependencies = [ + "blake2", + "file-guard", + "fs-err", + "prettyplease", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "fallible-iterator" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fastrlp" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "fastrlp" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce8dba4714ef14b8274c371879b175aa55b16b30f269663f19d576f380018dc4" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "ff" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +dependencies = [ + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + +[[package]] +name = "file-guard" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21ef72acf95ec3d7dbf61275be556299490a245f017cf084bd23b4f68cf9407c" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", + "rand 0.8.5", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "frame-benchmarking" +version = "28.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "frame-support", + "frame-support-procedural", + "frame-system", + "linregress", + "log", + "parity-scale-codec", + "paste", + "scale-info", + "serde", + "sp-api", + "sp-application-crypto", + "sp-core", + "sp-io", + "sp-runtime", + "sp-runtime-interface", + "sp-storage", + "static_assertions", +] + +[[package]] +name = "frame-decode" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7cb8796f93fa038f979a014234d632e9688a120e745f936e2635123c77537f7" +dependencies = [ + "frame-metadata 21.0.0", + "parity-scale-codec", + "scale-decode", + "scale-info", + "scale-type-resolver", + "sp-crypto-hashing 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "frame-metadata" +version = "20.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26de808fa6461f2485dc51811aefed108850064994fb4a62b3ac21ffa62ac8df" +dependencies = [ + "cfg-if", + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "frame-metadata" +version = "21.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20dfd1d7eae1d94e32e869e2fb272d81f52dd8db57820a373adb83ea24d7d862" +dependencies = [ + "cfg-if", + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "frame-metadata" +version = "23.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8c26fcb0454397c522c05fdad5380c4e622f8a875638af33bff5a320d1fc965" +dependencies = [ + "cfg-if", + "parity-scale-codec", + "scale-info", + "serde", +] + +[[package]] +name = "frame-support" +version = "28.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "aquamarine", + "array-bytes", + "binary-merkle-tree", + "bitflags 1.3.2", + "docify", + "environmental", + "frame-metadata 23.0.0", + "frame-support-procedural", + "impl-trait-for-tuples", + "k256", + "log", + "macro_magic", + "parity-scale-codec", + "paste", + "scale-info", + "serde", + "serde_json", + "sp-api", + "sp-arithmetic", + "sp-core", + "sp-crypto-hashing-proc-macro", + "sp-debug-derive", + "sp-genesis-builder", + "sp-inherents", + "sp-io", + "sp-metadata-ir", + "sp-runtime", + "sp-staking", + "sp-state-machine", + "sp-std", + "sp-tracing", + "sp-trie", + "sp-weights", + "tt-call", +] + +[[package]] +name = "frame-support-procedural" +version = "23.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "Inflector", + "cfg-expr", + "derive-syn-parse", + "docify", + "expander", + "frame-support-procedural-tools", + "itertools 0.11.0", + "macro_magic", + "proc-macro-warning", + "proc-macro2", + "quote", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4)", + "syn 2.0.104", +] + +[[package]] +name = "frame-support-procedural-tools" +version = "10.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "frame-support-procedural-tools-derive", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "frame-support-procedural-tools-derive" +version = "11.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "frame-system" +version = "28.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "cfg-if", + "docify", + "frame-support", + "log", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-version", + "sp-weights", +] + +[[package]] +name = "fs-err" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41" +dependencies = [ + "autocfg", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", + "num_cpus", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", +] + +[[package]] +name = "getrandom_or_panic" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea1015b5a70616b688dc230cfe50c8af89d972cb132d5a622814d29773b10b9" +dependencies = [ + "rand 0.8.5", + "rand_core 0.6.4", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +dependencies = [ + "fallible-iterator", + "stable_deref_trait", +] + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "h2" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hash-db" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e7d7786361d7425ae2fe4f9e407eb0efaa0840f5212d109cc018c40c35c6ab4" + +[[package]] +name = "hash256-std-hasher" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92c171d55b98633f4ed3860808f004099b36c1cc29c42cfc53aa8591b21efcf2" +dependencies = [ + "crunchy", +] + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", +] + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", + "serde", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] + +[[package]] +name = "hex-conservative" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212ab92002354b4819390025006c897e8140934349e8635c9b077f47b4dcbd20" + +[[package]] +name = "hex-conservative" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + +[[package]] +name = "hex-literal" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcaaec4551594c969335c98c903c1397853d4198408ea609190f420500f6be71" + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "humantime" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b112acc8b3adf4b107a8ec20977da0273a8c386765a3ec0229bd500a1443f9f" + +[[package]] +name = "humantime-serde" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57a3db5ea5923d99402c94e9feb261dc5ee9b4efa158b0315f788cf549cc200c" +dependencies = [ + "humantime", + "serde", +] + +[[package]] +name = "hyper" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", +] + +[[package]] +name = "hyper-util" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "hyper", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "impl-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-codec" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d40b9d5e17727407e55028eafc22b2dc68781786e6d7eb8a21103f5058e3a14" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-num-traits" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "803d15461ab0dcc56706adf266158acbc44ccf719bf7d0af30705f58b90a4b8c" +dependencies = [ + "integer-sqrt", + "num-traits", + "uint 0.10.0", +] + +[[package]] +name = "impl-rlp" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54ed8ad1f3877f7e775b8cbf30ed1bd3209a95401817f19a0eb4402d13f8cf90" +dependencies = [ + "rlp 0.6.1", +] + +[[package]] +name = "impl-serde" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a143eada6a1ec4aefa5049037a26a6d597bfd64f8c026d07b77133e02b7dd0b" +dependencies = [ + "serde", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "include_dir" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd" +dependencies = [ + "include_dir_macros", +] + +[[package]] +name = "include_dir_macros" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "indexmap" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" +dependencies = [ + "equivalent", + "hashbrown 0.15.5", + "serde", +] + +[[package]] +name = "ink" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "const_format", + "deranged", + "derive_more 2.0.1", + "ink_env", + "ink_macro", + "ink_metadata", + "ink_prelude", + "ink_primitives", + "ink_storage", + "keccak-const", + "linkme", + "pallet-revive-uapi", + "parity-scale-codec", + "polkavm-derive", + "scale-info", + "sp-io", + "sp-runtime-interface", + "staging-xcm", + "tokio", +] + +[[package]] +name = "ink_allocator" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "ink_codegen" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "blake2", + "derive_more 2.0.1", + "either", + "heck", + "impl-serde", + "ink_ir", + "ink_primitives", + "itertools 0.14.0", + "parity-scale-codec", + "polkavm-derive", + "proc-macro2", + "quote", + "serde", + "serde_json", + "syn 2.0.104", +] + +[[package]] +name = "ink_engine" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "blake2", + "derive_more 2.0.1", + "hex-literal 1.0.0", + "ink_primitives", + "pallet-revive", + "pallet-revive-uapi", + "parity-scale-codec", + "secp256k1 0.30.0", + "sha2 0.10.9", + "sha3", +] + +[[package]] +name = "ink_env" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "blake2", + "cfg-if", + "const_env", + "derive_more 2.0.1", + "hex-literal 1.0.0", + "ink_allocator", + "ink_engine", + "ink_prelude", + "ink_primitives", + "ink_storage_traits", + "num-traits", + "pallet-revive", + "pallet-revive-uapi", + "parity-scale-codec", + "polkavm-derive", + "scale-decode", + "scale-encode", + "scale-info", + "schnorrkel", + "secp256k1 0.30.0", + "sha2 0.10.9", + "sha3", + "sp-io", + "sp-runtime-interface", + "staging-xcm", + "static_assertions", +] + +[[package]] +name = "ink_ir" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "blake2", + "either", + "impl-serde", + "ink_prelude", + "itertools 0.14.0", + "proc-macro2", + "quote", + "sha3", + "syn 2.0.104", +] + +[[package]] +name = "ink_macro" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "ink_codegen", + "ink_ir", + "ink_primitives", + "parity-scale-codec", + "proc-macro2", + "quote", + "syn 2.0.104", + "synstructure", +] + +[[package]] +name = "ink_metadata" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "derive_more 2.0.1", + "impl-serde", + "ink_prelude", + "ink_primitives", + "parity-scale-codec", + "scale-info", + "schemars", + "serde", +] + +[[package]] +name = "ink_prelude" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "ink_primitives" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "alloy-sol-types", + "cfg-if", + "derive_more 2.0.1", + "impl-trait-for-tuples", + "ink_prelude", + "itertools 0.14.0", + "num-traits", + "pallet-revive", + "pallet-revive-uapi", + "parity-scale-codec", + "paste", + "primitive-types 0.13.1", + "scale-decode", + "scale-encode", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime-interface", + "sp-weights", + "xxhash-rust", +] + +[[package]] +name = "ink_storage" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "array-init", + "cfg-if", + "derive_more 2.0.1", + "ink_env", + "ink_metadata", + "ink_prelude", + "ink_primitives", + "ink_storage_traits", + "pallet-revive-uapi", + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "ink_storage_traits" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "ink_metadata", + "ink_prelude", + "ink_primitives", + "parity-scale-codec", + "scale-info", + "sp-io", + "sp-runtime-interface", +] + +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "generic-array", +] + +[[package]] +name = "integer-sqrt" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "276ec31bcb4a9ee45f58bec6f9ec700ae4cf4f4f8f2fa7e06cb406bd5ffdd770" +dependencies = [ + "num-traits", +] + +[[package]] +name = "io-uring" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4" +dependencies = [ + "bitflags 2.9.1", + "cfg-if", + "libc", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "jam-codec" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d72f2fb8cfd27f6c52ea7d0528df594f7f2ed006feac153e9393ec567aafea98" +dependencies = [ + "arrayvec", + "bitvec", + "byte-slice-cast", + "const_format", + "impl-trait-for-tuples", + "jam-codec-derive", + "rustversion", + "serde", +] + +[[package]] +name = "jam-codec-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09985146f40378e13af626964ac9c206d9d9b67c40c70805898d9954f709bcf5" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "k256" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "once_cell", + "serdect", + "sha2 0.10.9", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "keccak-asm" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6" +dependencies = [ + "digest 0.10.7", + "sha3-asm", +] + +[[package]] +name = "keccak-const" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57d8d8ce877200136358e0bbff3a77965875db3af755a11e1fa6b1b3e2df13ea" + +[[package]] +name = "keccak-hash" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e1b8590eb6148af2ea2d75f38e7d29f5ca970d5a4df456b3ef19b8b415d0264" +dependencies = [ + "primitive-types 0.13.1", + "tiny-keccak", +] + +[[package]] +name = "konst" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330f0e13e6483b8c34885f7e6c9f19b1a7bd449c673fbb948a51c99d66ef74f4" +dependencies = [ + "konst_macro_rules", +] + +[[package]] +name = "konst_macro_rules" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4933f3f57a8e9d9da04db23fb153356ecaf00cbd14aee46279c33dc80925c37" + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin", +] + +[[package]] +name = "libc" +version = "0.2.175" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" + +[[package]] +name = "libm" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" + +[[package]] +name = "libredox" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" +dependencies = [ + "bitflags 2.9.1", + "libc", +] + +[[package]] +name = "libsecp256k1" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e79019718125edc905a079a70cfa5f3820bc76139fc91d6f9abc27ea2a887139" +dependencies = [ + "arrayref", + "base64", + "digest 0.9.0", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", + "rand 0.8.5", + "serde", + "sha2 0.9.9", +] + +[[package]] +name = "libsecp256k1-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be9b9bb642d8522a44d533eab56c16c738301965504753b03ad1de3425d5451" +dependencies = [ + "crunchy", + "digest 0.9.0", + "subtle", +] + +[[package]] +name = "libsecp256k1-gen-ecmult" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3038c808c55c87e8a172643a7d87187fc6c4174468159cb3090659d55bcb4809" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "libsecp256k1-gen-genmult" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db8d6ba2cec9eacc40e6e8ccc98931840301f1006e95647ceb2dd5c3aa06f7c" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "linkme" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1b1703c00b2a6a70738920544aa51652532cacddfec2e162d2e29eae01e665c" +dependencies = [ + "linkme-impl", +] + +[[package]] +name = "linkme-impl" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04d55ca5d5a14363da83bf3c33874b8feaa34653e760d5216d7ef9829c88001a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "linregress" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9eda9dcf4f2a99787827661f312ac3219292549c2ee992bf9a6248ffb066bf7" +dependencies = [ + "nalgebra", +] + +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + +[[package]] +name = "lock_api" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" + +[[package]] +name = "macro-string" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "macro_magic" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc33f9f0351468d26fbc53d9ce00a096c8522ecb42f19b50f34f2c422f76d21d" +dependencies = [ + "macro_magic_core", + "macro_magic_macros", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "macro_magic_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1687dc887e42f352865a393acae7cf79d98fab6351cde1f58e9e057da89bf150" +dependencies = [ + "const-random", + "derive-syn-parse", + "macro_magic_core_macros", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "macro_magic_core_macros" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b02abfe41815b5bd98dbd4260173db2c116dda171dc0fe7838cb206333b83308" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "macro_magic_macros" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ea28ee64b88876bf45277ed9a5817c1817df061a74f2b988971a12570e5869" +dependencies = [ + "macro_magic_core", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "matrixmultiply" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06de3016e9fae57a36fd14dba131fccf49f74b40b7fbdb472f96e361ec71a08" +dependencies = [ + "autocfg", + "rawpointer", +] + +[[package]] +name = "memchr" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "memory-db" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6da20dba965bd218a14c3b335b90d3e07c09ede190c7c19b50deb23d418a322" +dependencies = [ + "hash-db", + "hashbrown 0.15.5", +] + +[[package]] +name = "merlin" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" +dependencies = [ + "byteorder", + "keccak", + "rand_core 0.6.4", + "zeroize", +] + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +dependencies = [ + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", +] + +[[package]] +name = "nalgebra" +version = "0.33.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26aecdf64b707efd1310e3544d709c5c0ac61c13756046aaaba41be5c4f66a3b" +dependencies = [ + "approx", + "matrixmultiply", + "num-complex", + "num-rational", + "num-traits", + "simba", + "typenum", +] + +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-format" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a652d9771a63711fd3c3deb670acfbe5c30a4072e664d7a3bf5a9e1056ac72c3" +dependencies = [ + "arrayvec", + "itoa", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_cpus" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "pallet-revive" +version = "0.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "alloy-core", + "derive_more 0.99.20", + "environmental", + "ethereum-standards", + "ethereum-types", + "frame-benchmarking", + "frame-support", + "frame-system", + "hex-literal 0.4.1", + "humantime-serde", + "impl-trait-for-tuples", + "log", + "num-bigint", + "num-integer", + "num-traits", + "pallet-revive-fixtures", + "pallet-revive-proc-macro", + "pallet-revive-uapi", + "pallet-transaction-payment", + "parity-scale-codec", + "paste", + "polkavm", + "polkavm-common", + "rand 0.8.5", + "ripemd", + "rlp 0.6.1", + "scale-info", + "serde", + "sp-api", + "sp-arithmetic", + "sp-consensus-aura", + "sp-consensus-babe", + "sp-consensus-slots", + "sp-core", + "sp-io", + "sp-runtime", + "substrate-bn", + "subxt-signer", +] + +[[package]] +name = "pallet-revive-fixtures" +version = "0.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "anyhow", + "cargo_metadata", + "pallet-revive-uapi", + "polkavm-linker", + "sp-core", + "sp-io", + "toml", +] + +[[package]] +name = "pallet-revive-proc-macro" +version = "0.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "pallet-revive-uapi" +version = "0.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "bitflags 1.3.2", + "pallet-revive-proc-macro", + "parity-scale-codec", + "polkavm-derive", + "scale-info", +] + +[[package]] +name = "pallet-transaction-payment" +version = "28.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "serde", + "sp-io", + "sp-runtime", +] + +[[package]] +name = "parity-bip39" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e69bf016dc406eff7d53a7d3f7cf1c2e72c82b9088aac1118591e36dd2cd3e9" +dependencies = [ + "bitcoin_hashes 0.13.0", + "rand 0.8.5", + "rand_core 0.6.4", + "serde", + "unicode-normalization", +] + +[[package]] +name = "parity-scale-codec" +version = "3.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" +dependencies = [ + "arrayvec", + "bitvec", + "byte-slice-cast", + "bytes", + "const_format", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "rustversion", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "parity-wasm" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1ad0aff30c1da14b1254fcb2af73e1fa9a28670e584a626f53a369d0e157304" + +[[package]] +name = "parking_lot" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "password-hash" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166" +dependencies = [ + "base64ct", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pbkdf2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest 0.10.7", + "hmac", + "password-hash", +] + +[[package]] +name = "pest" +version = "2.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1db05f56d34358a8b1066f67cbb203ee3e7ed2ba674a6263a1d5ec6db2204323" +dependencies = [ + "memchr", + "thiserror 2.0.14", + "ucd-trie", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "polkavm" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa028f713d0613f0f08b8b3367402cb859218854f6b96fcbe39a501862894d6f" +dependencies = [ + "libc", + "log", + "polkavm-assembler", + "polkavm-common", + "polkavm-linux-raw", +] + +[[package]] +name = "polkavm-assembler" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4859a29e1f4ad64610c4bc2bfc40bb9a535068a034933a5b56b5e7a0febf105a" +dependencies = [ + "log", +] + +[[package]] +name = "polkavm-common" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49a5794b695626ba70d29e66e3f4f4835767452a6723f3a0bc20884b07088fe8" +dependencies = [ + "blake3", + "log", + "polkavm-assembler", +] + +[[package]] +name = "polkavm-derive" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95282a203ae1f6828a04ff334145c3f6dc718bba6d3959805d273358b45eab93" +dependencies = [ + "polkavm-derive-impl-macro", +] + +[[package]] +name = "polkavm-derive-impl" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6069dc7995cde6e612b868a02ce48b54397c6d2582bd1b97b63aabbe962cd779" +dependencies = [ + "polkavm-common", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "polkavm-derive-impl-macro" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581d34cafec741dc5ffafbb341933c205b6457f3d76257a9d99fb56687219c91" +dependencies = [ + "polkavm-derive-impl", + "syn 2.0.104", +] + +[[package]] +name = "polkavm-linker" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "beb896023e5bd89bba40311797d8d42490fa4a1fd5256c74820753c5722d1e67" +dependencies = [ + "dirs", + "gimli", + "hashbrown 0.14.5", + "log", + "object", + "polkavm-common", + "regalloc2", + "rustc-demangle", +] + +[[package]] +name = "polkavm-linux-raw" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28919f542476f4158cc71e6c072b1051f38f4b514253594ac3ad80e3c0211fc8" + +[[package]] +name = "poly1305" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +dependencies = [ + "cpufeatures", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "pop-api" +version = "0.1.0" +dependencies = [ + "base64", + "hex", + "ink", + "pop-primitives", + "scale-info", +] + +[[package]] +name = "pop-primitives" +version = "0.0.0" +dependencies = [ + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "prettyplease" +version = "0.2.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff24dfcda44452b9816fff4cd4227e1bb73ff5a2f1bc1105aa92fb8565ce44d2" +dependencies = [ + "proc-macro2", + "syn 2.0.104", +] + +[[package]] +name = "primitive-types" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" +dependencies = [ + "fixed-hash", + "impl-codec 0.6.0", + "uint 0.9.5", +] + +[[package]] +name = "primitive-types" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d15600a7d856470b7d278b3fe0e311fe28c2526348549f8ef2ff7db3299c87f5" +dependencies = [ + "fixed-hash", + "impl-codec 0.7.1", + "impl-num-traits", + "impl-rlp", + "impl-serde", + "scale-info", + "uint 0.10.0", +] + +[[package]] +name = "proc-macro-crate" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "proc-macro-warning" +version = "1.84.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75eea531cfcd120e0851a3f8aed42c4841f78c889eefafd96339c72677ae42c3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "proc-macro2" +version = "1.0.97" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d61789d7719defeb74ea5fe81f2fdfdbd28a803847077cecce2ff14e1472f6f1" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "prometheus" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d33c28a30771f7f96db69893f78b857f7450d7e0237e9c8fc6427a81bae7ed1" +dependencies = [ + "cfg-if", + "fnv", + "lazy_static", + "memchr", + "parking_lot", + "thiserror 1.0.69", +] + +[[package]] +name = "proptest" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fcdab19deb5195a31cf7726a210015ff1496ba1464fd42cb4f537b8b01b471f" +dependencies = [ + "bit-set", + "bit-vec", + "bitflags 2.9.1", + "lazy_static", + "num-traits", + "rand 0.9.2", + "rand_chacha 0.9.0", + "rand_xorshift", + "regex-syntax 0.8.5", + "rusty-fork", + "tempfile", + "unarray", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", + "serde", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.16", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.3", + "serde", +] + +[[package]] +name = "rand_xorshift" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" +dependencies = [ + "rand_core 0.9.3", +] + +[[package]] +name = "rawpointer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" + +[[package]] +name = "redox_syscall" +version = "0.5.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" +dependencies = [ + "bitflags 2.9.1", +] + +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom 0.2.16", + "libredox", + "thiserror 1.0.69", +] + +[[package]] +name = "ref-cast" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "regalloc2" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad156d539c879b7a24a363a2016d77961786e71f48f2e2fc8302a92abd2429a6" +dependencies = [ + "hashbrown 0.13.2", + "log", + "rustc-hash 1.1.0", + "slice-group-by", + "smallvec", +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + +[[package]] +name = "ripemd" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "rlp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +dependencies = [ + "bytes", + "rustc-hex", +] + +[[package]] +name = "rlp" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa24e92bb2a83198bb76d661a71df9f7076b8c420b8696e4d3d97d50d94479e3" +dependencies = [ + "bytes", + "rustc-hex", +] + +[[package]] +name = "ruint" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ecb38f82477f20c5c3d62ef52d7c4e536e38ea9b73fb570a20c5cae0e14bcf6" +dependencies = [ + "alloy-rlp", + "ark-ff 0.3.0", + "ark-ff 0.4.2", + "bytes", + "fastrlp 0.3.1", + "fastrlp 0.4.0", + "num-bigint", + "num-integer", + "num-traits", + "parity-scale-codec", + "primitive-types 0.12.2", + "proptest", + "rand 0.8.5", + "rand 0.9.2", + "rlp 0.5.2", + "ruint-macro", + "serde", + "valuable", + "zeroize", +] + +[[package]] +name = "ruint-macro" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" + +[[package]] +name = "rustc-demangle" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver 1.0.26", +] + +[[package]] +name = "rustix" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" +dependencies = [ + "bitflags 2.9.1", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.60.2", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "rusty-fork" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "safe_arch" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96b02de82ddbe1b636e6170c21be622223aea188ef2e139be0a5b219ec215323" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "salsa20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +dependencies = [ + "cipher", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scale-bits" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27243ab0d2d6235072b017839c5f0cd1a3b1ce45c0f7a715363b0c7d36c76c94" +dependencies = [ + "parity-scale-codec", + "scale-info", + "scale-type-resolver", + "serde", +] + +[[package]] +name = "scale-decode" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d78196772d25b90a98046794ce0fe2588b39ebdfbdc1e45b4c6c85dd43bebad" +dependencies = [ + "parity-scale-codec", + "primitive-types 0.13.1", + "scale-bits", + "scale-decode-derive", + "scale-type-resolver", + "smallvec", + "thiserror 2.0.14", +] + +[[package]] +name = "scale-decode-derive" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f4b54a1211260718b92832b661025d1f1a4b6930fbadd6908e00edd265fa5f7" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "scale-encode" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64901733157f9d25ef86843bd783eda439fac7efb0ad5a615d12d2cf3a29464b" +dependencies = [ + "parity-scale-codec", + "primitive-types 0.13.1", + "scale-bits", + "scale-encode-derive", + "scale-type-resolver", + "smallvec", + "thiserror 2.0.14", +] + +[[package]] +name = "scale-encode-derive" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78a3993a13b4eafa89350604672c8757b7ea84c7c5947d4b3691e3169c96379b" +dependencies = [ + "darling", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "scale-info" +version = "2.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" +dependencies = [ + "bitvec", + "cfg-if", + "derive_more 1.0.0", + "parity-scale-codec", + "scale-info-derive", + "schemars", + "serde", +] + +[[package]] +name = "scale-info-derive" +version = "2.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "scale-type-resolver" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0cded6518aa0bd6c1be2b88ac81bf7044992f0f154bfbabd5ad34f43512abcb" +dependencies = [ + "scale-info", + "smallvec", +] + +[[package]] +name = "scale-value" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca8b26b451ecb7fd7b62b259fa28add63d12ec49bbcac0e01fcb4b5ae0c09aa" +dependencies = [ + "either", + "parity-scale-codec", + "scale-bits", + "scale-decode", + "scale-encode", + "scale-type-resolver", + "thiserror 2.0.14", +] + +[[package]] +name = "schemars" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" +dependencies = [ + "dyn-clone", + "schemars_derive", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.104", +] + +[[package]] +name = "schnellru" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "356285bbf17bea63d9e52e96bd18f039672ac92b55b8cb997d6162a2a37d1649" +dependencies = [ + "ahash", + "cfg-if", + "hashbrown 0.13.2", +] + +[[package]] +name = "schnorrkel" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e9fcb6c2e176e86ec703e22560d99d65a5ee9056ae45a08e13e84ebf796296f" +dependencies = [ + "aead", + "arrayref", + "arrayvec", + "curve25519-dalek", + "getrandom_or_panic", + "merlin", + "rand_core 0.6.4", + "serde_bytes", + "sha2 0.10.9", + "subtle", + "zeroize", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scrypt" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0516a385866c09368f0b5bcd1caff3366aace790fcd46e2bb032697bb172fd1f" +dependencies = [ + "password-hash", + "pbkdf2", + "salsa20", + "sha2 0.10.9", +] + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "serdect", + "subtle", + "zeroize", +] + +[[package]] +name = "secp256k1" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f" +dependencies = [ + "secp256k1-sys 0.8.2", +] + +[[package]] +name = "secp256k1" +version = "0.28.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24b59d129cdadea20aea4fb2352fa053712e5d713eee47d700cd4b2bc002f10" +dependencies = [ + "secp256k1-sys 0.9.2", +] + +[[package]] +name = "secp256k1" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" +dependencies = [ + "bitcoin_hashes 0.14.0", + "rand 0.8.5", + "secp256k1-sys 0.10.1", +] + +[[package]] +name = "secp256k1-sys" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4473013577ec77b4ee3668179ef1186df3146e2cf2d927bd200974c6fe60fd99" +dependencies = [ + "cc", +] + +[[package]] +name = "secp256k1-sys" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d1746aae42c19d583c3c1a8c646bfad910498e2051c551a7f2e3c0c9fbb7eb" +dependencies = [ + "cc", +] + +[[package]] +name = "secp256k1-sys" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" +dependencies = [ + "cc", +] + +[[package]] +name = "secrecy" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91e" +dependencies = [ + "zeroize", +] + +[[package]] +name = "secrecy" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e891af845473308773346dc847b2c23ee78fe442e0472ac50e22a18a93d3ae5a" +dependencies = [ + "zeroize", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +dependencies = [ + "serde", +] + +[[package]] +name = "semver-parser" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" +dependencies = [ + "pest", +] + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_bytes" +version = "0.11.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8437fd221bde2d4ca316d61b90e337e9e702b3820b87d63caa9ba6c02bd06d96" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "serde_json" +version = "1.0.142" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "030fedb782600dcbd6f02d479bf0d817ac3bb40d644745b769d6a96bc3afc5a7" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + +[[package]] +name = "serdect" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" +dependencies = [ + "base16ct", + "serde", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "sha3-asm" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" +dependencies = [ + "cc", + "cfg-if", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest 0.10.7", + "rand_core 0.6.4", +] + +[[package]] +name = "simba" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3a386a501cd104797982c15ae17aafe8b9261315b5d07e3ec803f2ea26be0fa" +dependencies = [ + "approx", + "num-complex", + "num-traits", + "paste", + "wide", +] + +[[package]] +name = "simple-mermaid" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "620a1d43d70e142b1d46a929af51d44f383db9c7a2ec122de2cd992ccfcf3c18" + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[package]] +name = "slice-group-by" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "sp-api" +version = "26.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "docify", + "hash-db", + "log", + "parity-scale-codec", + "scale-info", + "sp-api-proc-macro", + "sp-core", + "sp-externalities", + "sp-metadata-ir", + "sp-runtime", + "sp-runtime-interface", + "sp-state-machine", + "sp-trie", + "sp-version", + "thiserror 1.0.69", +] + +[[package]] +name = "sp-api-proc-macro" +version = "15.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "Inflector", + "blake2", + "expander", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "sp-application-crypto" +version = "30.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde", + "sp-core", + "sp-io", +] + +[[package]] +name = "sp-arithmetic" +version = "23.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "docify", + "integer-sqrt", + "num-traits", + "parity-scale-codec", + "scale-info", + "serde", + "static_assertions", +] + +[[package]] +name = "sp-consensus-aura" +version = "0.32.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "async-trait", + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-application-crypto", + "sp-consensus-slots", + "sp-inherents", + "sp-runtime", + "sp-timestamp", +] + +[[package]] +name = "sp-consensus-babe" +version = "0.32.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "async-trait", + "parity-scale-codec", + "scale-info", + "serde", + "sp-api", + "sp-application-crypto", + "sp-consensus-slots", + "sp-core", + "sp-inherents", + "sp-runtime", + "sp-timestamp", +] + +[[package]] +name = "sp-consensus-slots" +version = "0.32.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde", + "sp-timestamp", +] + +[[package]] +name = "sp-core" +version = "28.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "ark-vrf", + "array-bytes", + "bitflags 1.3.2", + "blake2", + "bounded-collections", + "bs58", + "dyn-clone", + "ed25519-zebra", + "futures", + "hash-db", + "hash256-std-hasher", + "impl-serde", + "itertools 0.11.0", + "k256", + "libsecp256k1", + "log", + "merlin", + "parity-bip39", + "parity-scale-codec", + "parking_lot", + "paste", + "primitive-types 0.13.1", + "rand 0.8.5", + "scale-info", + "schnorrkel", + "secp256k1 0.28.2", + "secrecy 0.8.0", + "serde", + "sha2 0.10.9", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4)", + "sp-debug-derive", + "sp-externalities", + "sp-runtime-interface", + "sp-std", + "sp-storage", + "ss58-registry", + "substrate-bip39", + "thiserror 1.0.69", + "tracing", + "w3f-bls", + "zeroize", +] + +[[package]] +name = "sp-crypto-hashing" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc9927a7f81334ed5b8a98a4a978c81324d12bd9713ec76b5c68fd410174c5eb" +dependencies = [ + "blake2b_simd", + "byteorder", + "digest 0.10.7", + "sha2 0.10.9", + "sha3", + "twox-hash", +] + +[[package]] +name = "sp-crypto-hashing" +version = "0.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "blake2b_simd", + "byteorder", + "digest 0.10.7", + "sha2 0.10.9", + "sha3", + "twox-hash", +] + +[[package]] +name = "sp-crypto-hashing-proc-macro" +version = "0.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "quote", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4)", + "syn 2.0.104", +] + +[[package]] +name = "sp-debug-derive" +version = "14.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "sp-externalities" +version = "0.25.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "environmental", + "parity-scale-codec", + "sp-storage", +] + +[[package]] +name = "sp-genesis-builder" +version = "0.8.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde_json", + "sp-api", + "sp-runtime", +] + +[[package]] +name = "sp-inherents" +version = "26.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "async-trait", + "impl-trait-for-tuples", + "parity-scale-codec", + "scale-info", + "sp-runtime", + "thiserror 1.0.69", +] + +[[package]] +name = "sp-io" +version = "30.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "bytes", + "docify", + "ed25519-dalek", + "libsecp256k1", + "log", + "parity-scale-codec", + "polkavm-derive", + "rustversion", + "secp256k1 0.28.2", + "sp-core", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4)", + "sp-externalities", + "sp-keystore", + "sp-runtime-interface", + "sp-state-machine", + "sp-tracing", + "sp-trie", + "tracing", + "tracing-core", +] + +[[package]] +name = "sp-keystore" +version = "0.34.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "parity-scale-codec", + "parking_lot", + "sp-core", + "sp-externalities", +] + +[[package]] +name = "sp-metadata-ir" +version = "0.6.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "frame-metadata 23.0.0", + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "sp-panic-handler" +version = "13.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "backtrace", + "regex", +] + +[[package]] +name = "sp-runtime" +version = "31.0.1" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "binary-merkle-tree", + "docify", + "either", + "hash256-std-hasher", + "impl-trait-for-tuples", + "log", + "num-traits", + "parity-scale-codec", + "paste", + "rand 0.8.5", + "scale-info", + "serde", + "simple-mermaid", + "sp-application-crypto", + "sp-arithmetic", + "sp-core", + "sp-io", + "sp-std", + "sp-trie", + "sp-weights", + "tracing", + "tuplex", +] + +[[package]] +name = "sp-runtime-interface" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "bytes", + "impl-trait-for-tuples", + "parity-scale-codec", + "polkavm-derive", + "primitive-types 0.13.1", + "sp-externalities", + "sp-runtime-interface-proc-macro", + "sp-std", + "sp-storage", + "sp-tracing", + "sp-wasm-interface", + "static_assertions", +] + +[[package]] +name = "sp-runtime-interface-proc-macro" +version = "17.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "Inflector", + "expander", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "sp-staking" +version = "26.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "impl-trait-for-tuples", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core", + "sp-runtime", +] + +[[package]] +name = "sp-state-machine" +version = "0.35.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "hash-db", + "log", + "parity-scale-codec", + "parking_lot", + "rand 0.8.5", + "smallvec", + "sp-core", + "sp-externalities", + "sp-panic-handler", + "sp-trie", + "thiserror 1.0.69", + "tracing", + "trie-db", +] + +[[package]] +name = "sp-std" +version = "14.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" + +[[package]] +name = "sp-storage" +version = "19.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "impl-serde", + "parity-scale-codec", + "ref-cast", + "serde", + "sp-debug-derive", +] + +[[package]] +name = "sp-timestamp" +version = "26.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "async-trait", + "parity-scale-codec", + "sp-inherents", + "sp-runtime", + "thiserror 1.0.69", +] + +[[package]] +name = "sp-tracing" +version = "16.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "parity-scale-codec", + "regex", + "tracing", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "sp-trie" +version = "29.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "ahash", + "hash-db", + "memory-db", + "nohash-hasher", + "parity-scale-codec", + "parking_lot", + "rand 0.8.5", + "scale-info", + "schnellru", + "sp-core", + "sp-externalities", + "substrate-prometheus-endpoint", + "thiserror 1.0.69", + "tracing", + "trie-db", + "trie-root", +] + +[[package]] +name = "sp-version" +version = "29.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "impl-serde", + "parity-scale-codec", + "parity-wasm", + "scale-info", + "serde", + "sp-crypto-hashing-proc-macro", + "sp-runtime", + "sp-std", + "sp-version-proc-macro", + "thiserror 1.0.69", +] + +[[package]] +name = "sp-version-proc-macro" +version = "13.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "parity-scale-codec", + "proc-macro-warning", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "sp-wasm-interface" +version = "20.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "anyhow", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", +] + +[[package]] +name = "sp-weights" +version = "27.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "bounded-collections", + "parity-scale-codec", + "scale-info", + "serde", + "smallvec", + "sp-arithmetic", + "sp-debug-derive", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "ss58-registry" +version = "1.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19409f13998e55816d1c728395af0b52ec066206341d939e22e7766df9b494b8" +dependencies = [ + "Inflector", + "num-format", + "proc-macro2", + "quote", + "serde", + "serde_json", + "unicode-xid", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "staging-xcm" +version = "7.0.1" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "array-bytes", + "bounded-collections", + "derive-where", + "environmental", + "frame-support", + "hex-literal 0.4.1", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "scale-info", + "serde", + "sp-runtime", + "sp-weights", + "xcm-procedural", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "substrate-bip39" +version = "0.4.7" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "hmac", + "pbkdf2", + "schnorrkel", + "sha2 0.10.9", + "zeroize", +] + +[[package]] +name = "substrate-bn" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b5bbfa79abbae15dd642ea8176a21a635ff3c00059961d1ea27ad04e5b441c" +dependencies = [ + "byteorder", + "crunchy", + "lazy_static", + "rand 0.8.5", + "rustc-hex", +] + +[[package]] +name = "substrate-prometheus-endpoint" +version = "0.17.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "http-body-util", + "hyper", + "hyper-util", + "log", + "prometheus", + "thiserror 1.0.69", + "tokio", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "subxt-core" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66ef00be9d64885ec94e478a58e4e39d222024b20013ae7df4fc6ece545391aa" +dependencies = [ + "base58", + "blake2", + "derive-where", + "frame-decode", + "frame-metadata 20.0.0", + "hashbrown 0.14.5", + "hex", + "impl-serde", + "keccak-hash", + "parity-scale-codec", + "primitive-types 0.13.1", + "scale-bits", + "scale-decode", + "scale-encode", + "scale-info", + "scale-value", + "serde", + "serde_json", + "sp-crypto-hashing 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "subxt-metadata", + "thiserror 2.0.14", + "tracing", +] + +[[package]] +name = "subxt-metadata" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fff4591673600c4388e21305788282414d26c791b4dee21b7cb0b19c10076f98" +dependencies = [ + "frame-decode", + "frame-metadata 20.0.0", + "hashbrown 0.14.5", + "parity-scale-codec", + "scale-info", + "sp-crypto-hashing 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 2.0.14", +] + +[[package]] +name = "subxt-signer" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a2370298a210ed1df26152db7209a85e0ed8cfbce035309c3b37f7b61755377" +dependencies = [ + "base64", + "bip32", + "bip39", + "cfg-if", + "crypto_secretbox", + "hex", + "hmac", + "keccak-hash", + "parity-scale-codec", + "pbkdf2", + "regex", + "schnorrkel", + "scrypt", + "secp256k1 0.30.0", + "secrecy 0.10.3", + "serde", + "serde_json", + "sha2 0.10.9", + "sp-crypto-hashing 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "subxt-core", + "thiserror 2.0.14", + "zeroize", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn-solidity" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a985ff4ffd7373e10e0fb048110fb11a162e5a4c47f92ddb8787a6f766b769" +dependencies = [ + "paste", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tempfile" +version = "3.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +dependencies = [ + "fastrand", + "getrandom 0.3.3", + "once_cell", + "rustix", + "windows-sys 0.59.0", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b0949c3a6c842cbde3f1686d6eea5a010516deb7085f79db747562d4102f41e" +dependencies = [ + "thiserror-impl 2.0.14", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc5b44b4ab9c2fdd0e0512e6bece8388e214c0749f5862b114cc5b7a25daf227" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "thread_local" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "time" +version = "0.3.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" + +[[package]] +name = "time-macros" +version = "0.2.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinyvec" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.47.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" +dependencies = [ + "backtrace", + "bytes", + "io-uring", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "slab", + "socket2", + "windows-sys 0.59.0", +] + +[[package]] +name = "tokio-util" +version = "0.7.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.22.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "toml_write", + "winnow", +] + +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "time", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "trie-db" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c0670ab45a6b7002c7df369fee950a27cf29ae0474343fd3a15aa15f691e7a6" +dependencies = [ + "hash-db", + "log", + "rustc-hex", + "smallvec", +] + +[[package]] +name = "trie-root" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4ed310ef5ab98f5fa467900ed906cb9232dd5376597e00fd4cba2a449d06c0b" +dependencies = [ + "hash-db", +] + +[[package]] +name = "tt-call" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f195fd851901624eee5a58c4bb2b4f06399148fcd0ed336e6f1cb60a9881df" + +[[package]] +name = "tuplex" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "676ac81d5454c4dcf37955d34fa8626ede3490f744b86ca14a7b90168d2a08aa" + +[[package]] +name = "twox-hash" +version = "1.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" +dependencies = [ + "cfg-if", + "digest 0.10.7", + "rand 0.8.5", + "static_assertions", +] + +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "ucd-trie" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "uint" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "909988d098b2f738727b161a106cfc7cab00c539c2687a8836f8e565976fb53e" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "universal-hash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +dependencies = [ + "crypto-common", + "subtle", +] + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "w3f-bls" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6bfb937b3d12077654a9e43e32a4e9c20177dd9fea0f3aba673e7840bb54f32" +dependencies = [ + "ark-bls12-377", + "ark-bls12-381 0.4.0", + "ark-ec 0.4.2", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-serialize-derive 0.4.2", + "arrayref", + "digest 0.10.7", + "rand 0.8.5", + "rand_chacha 0.3.1", + "rand_core 0.6.4", + "sha2 0.10.9", + "sha3", + "zeroize", +] + +[[package]] +name = "w3f-pcs" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbe7a8d5c914b69392ab3b267f679a2e546fe29afaddce47981772ac71bd02e1" +dependencies = [ + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-poly 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "merlin", +] + +[[package]] +name = "w3f-plonk-common" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aca389e494fe08c5c108b512e2328309036ee1c0bc7bdfdb743fef54d448c8c" +dependencies = [ + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-poly 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "getrandom_or_panic", + "rand_core 0.6.4", + "w3f-pcs", +] + +[[package]] +name = "w3f-ring-proof" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a639379402ad51504575dbd258740383291ac8147d3b15859bdf1ea48c677de" +dependencies = [ + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-poly 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "ark-transcript", + "w3f-pcs", + "w3f-plonk-common", +] + +[[package]] +name = "wait-timeout" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" +dependencies = [ + "libc", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + +[[package]] +name = "wide" +version = "0.7.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce5da8ecb62bcd8ec8b7ea19f69a51275e91299be594ea5cc6ef7819e16cd03" +dependencies = [ + "bytemuck", + "safe_arch", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.3", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + +[[package]] +name = "winnow" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95" +dependencies = [ + "memchr", +] + +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags 2.9.1", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "xcm-procedural" +version = "7.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "Inflector", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "xxhash-rust" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" + +[[package]] +name = "zerocopy" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] diff --git a/pop-api-vnext/Cargo.toml b/pop-api-vnext/Cargo.toml new file mode 100644 index 000000000..393594117 --- /dev/null +++ b/pop-api-vnext/Cargo.toml @@ -0,0 +1,37 @@ +[package] +description = "Enabling smart(er) contracts with the power of Polkadot" +edition = "2021" +license = "GPL-3.0-only" +name = "pop-api" +version = "0.1.0" + +[package.metadata.ink-lang] +abi = "sol" + +[dependencies] +base64 = { version = "0.22.1", default-features = false, features = [ "alloc" ] } +ink = { git = "https://github.com/use-ink/ink", tag = "v6.0.0-alpha.1", default-features = false, features = [ "unstable-hostfn" ] } +pop-primitives = { path = "../primitives", default-features = false } + +[dev-dependencies] +hex = { version = "0.4.3" } +scale-info = { version = "2" } + +[lib] +crate-type = [ "rlib" ] +name = "pop_api" +path = "src/lib.rs" + +[features] +default = [ "std" ] +fungibles = [ ] +messaging = [ ] +nonfungibles = [ ] +std = [ + "ink/std", + "pop-primitives/std", +] + +[lints.rust.unexpected_cfgs] +check-cfg = [ 'cfg(ink_abi, values("ink", "sol", "all"))' ] +level = "warn" diff --git a/pop-api-vnext/README.md b/pop-api-vnext/README.md new file mode 100644 index 000000000..e23059a10 --- /dev/null +++ b/pop-api-vnext/README.md @@ -0,0 +1,63 @@ +## Pop API + +The `pop-api` crate provides a high-level interface that allows smart contracts to seamlessly interact with Pop, a +blockchain built to power innovative and impactful solutions on Polkadot. Designed for stability, simplicity, and +efficiency, the API abstracts away the complexities of the runtime, enabling developers to focus on building powerful +applications rather than managing intricate blockchain details. + +### Design Goals + +- **Simple**: enhance the developer experience by abstracting away the complexities of runtime functionality, making it + easy for developers to build advanced applications. +- **Versioned**: offer a stable, versioned interface that ensures smart contracts stay compatible as the runtime + evolves, enabling seamless integration of new features without disrupting existing contracts. +- **Efficient**: optimise for minimal contract size, having the lowest possible deployment and execution costs. + +### Key Features + +- **Versioned Interface**: Provides backward compatibility, ensuring that existing contract functionality remains stable + as new features are added to the runtime. +- **Error Handling**: Supports rich, versioned error types, enabling contracts to receive and interpret any runtime + error, making troubleshooting and development easier. +- **Use Cases**: + - [Fungibles](./src/fungibles/README.md): Interacting and managing fungible tokens. + - [Messaging](./src/messaging/README.md): Cross chain rails for interaction with other chains using ISMP & XCM. + - In development: + - Non-Fungibles: Interacting and managing non fungible tokens. + - Sponsorship: Allowing smart contracts to sponsor transactions. + - Incentives: Incentivise smart contracts by sharing chain revenue. + +### Getting Started + +Using the API in your ink! smart contract is as easy as adding the `pop-api` crate in your `Cargo.toml`: + +```toml +pop-api = { git = "https://github.com/r0gue-io/pop-node", default-features = false } +``` + +and importing it within the contract source: + +```rust +use pop_api::*; +``` + +Check out the ink! smart contract [examples](./example) using the API. + +### Learn more + +The true strength of the API lies in the Pop runtime, where powerful precompiles provide flexible and +efficient access to all runtime features, while specialized API modules deliver stable, intuitive interfaces for +developers. Together, these elements make the API a powerful tool for creating decentralized applications on Polkadot. + +Want to explore how it all works? Check out: + +- [API Modules](../pallets/api-vnext) + +### Support + +Be part of our passionate community of Web3 builders. [Join our Telegram](https://t.me/onpopio)! + +Feel free to raise issues if anything is unclear, if you have ideas or want to contribute to Pop! + +For any questions related to ink! you can also go to [Polkadot Stack Exchange](https://polkadot.stackexchange.com/) or +ask the [ink! community](https://t.me/inkathon/). diff --git a/pop-api-vnext/examples/.gitignore b/pop-api-vnext/examples/.gitignore new file mode 100644 index 000000000..d60800c86 --- /dev/null +++ b/pop-api-vnext/examples/.gitignore @@ -0,0 +1,9 @@ +# Ignore build artifacts from the local tests sub-crate. +**/target/ + +# Ignore backup files creates by cargo fmt. +**/*.rs.bk + +# Remove Cargo.lock when creating an executable, leave it for libraries +# More information here http://doc.crates.io/guide.html#cargotoml-vs-cargolock +**/Cargo.lock diff --git a/pop-api-vnext/examples/fungibles/Cargo.toml b/pop-api-vnext/examples/fungibles/Cargo.toml new file mode 100644 index 000000000..2e90493ff --- /dev/null +++ b/pop-api-vnext/examples/fungibles/Cargo.toml @@ -0,0 +1,28 @@ +[package] +authors = [ "R0GUE " ] +edition = "2021" +name = "fungibles" +version = "0.1.0" + +[package.metadata.ink-lang] +abi = "all" + +[lib] +path = "lib.rs" + +[dependencies] +ink = { git = "https://github.com/use-ink/ink", tag = "v6.0.0-alpha.1", default-features = false, features = [ "unstable-hostfn" ] } +pop-api = { path = "../../../pop-api-vnext", default-features = false, features = [ "fungibles" ] } + +[dev-dependencies] +hex = { version = "0.4.3" } +scale-info = { version = "2" } + +[features] +default = [ "std" ] +ink-as-dependency = [ ] +std = [ "ink/std", "pop-api/std" ] + +[lints.rust.unexpected_cfgs] +check-cfg = [ 'cfg(ink_abi, values("ink", "sol", "all"))' ] +level = "warn" diff --git a/pop-api-vnext/examples/fungibles/README.md b/pop-api-vnext/examples/fungibles/README.md new file mode 100644 index 000000000..c66d61eb9 --- /dev/null +++ b/pop-api-vnext/examples/fungibles/README.md @@ -0,0 +1,42 @@ +# Erc20 Fungible Token with Pop API + +This [ink!][ink] contract implements a [ERC20-compliant][erc-20] fungible token by leveraging the [Fungibles API][pop-api-fungibles]. Unlike typical token contracts, where the contract itself manages the token, tokens created by this contract are managed directly by Pop. This enables seamless integration and interoperability of the token across the Polkadot ecosystem and its applications. + +As the creator of the token, the contract has permissions to mint and burn tokens, but it can only transfer and approve tokens on its own behalf and requires explicit approval to transfer tokens for other accounts. Instead of users interacting with the contract to handle their token approvals, they interact primarily with Pop’s runtime or the corresponding ERC-20 precompile. + +## Key benefits of using the Pop API + +- The token operates live on the Pop Network, beyond just within the contract. +- Simplify token management with high-level interfaces to significantly reduce contract size and complexity. + +[Learn more how Pop API works.](pop-api) + +## Use Cases + +This contract can serve a variety of purposes where owner-controlled token management is essential. Example use cases include: +- **DAO Token**: A DAO can use this contract to manage a governance token, with the DAO overseeing token issuance and removal based on governance decisions. +- **Staking and Rewards**: This contract supports minting tokens specifically for reward distribution. +- **Loyalty Programs**: Businesses or platforms can use this contract to issue loyalty points, with the owner managing token balances for users based on participation or purchases. + +## Test with Pop Drink + +Since this contract interacts directly with Pop’s runtime through the Pop API, it requires [Pop Drink](https://github.com/r0gue-io/pop-drink) for testing. See how the contract is tested in [tests](./tests.rs). + +## Potential Improvements + +- **Multiple owner management**: Instead of restricting ownership to a single `owner`, the contract could be designed to accommodate multiple owners. + +## Support + +Be part of our passionate community of Web3 builders. [Join our Telegram](https://t.me/onpopio)! + +Feel free to raise issues if anything is unclear, you have ideas or want to contribute to Pop! Examples using the fungibles API are always welcome! + +For any questions related to ink! you can also go to [Polkadot Stack Exchange](https://polkadot.stackexchange.com/) or +ask the [ink! community](https://t.me/inkathon/1). + +[ink]: https://use.ink +[erc-20]: https://ethereum.org/en/developers/docs/standards/tokens/erc-20/ +[pop-api]: https://github.com/r0gue-io/pop-node/tree/main/pop-api/ +[pop-api-fungibles]: https://github.com/r0gue-io/pop-node/tree/main/pop-api-vnext/src/fungibles +[pop-drink]: https://github.com/r0gue-io/pop-drink diff --git a/pop-api-vnext/examples/fungibles/lib.rs b/pop-api-vnext/examples/fungibles/lib.rs new file mode 100644 index 000000000..df26ee989 --- /dev/null +++ b/pop-api-vnext/examples/fungibles/lib.rs @@ -0,0 +1,260 @@ +#![cfg_attr(not(feature = "std"), no_std, no_main)] + +use ink::{prelude::string::String, U256}; +use pop_api::{ + ensure, + fungibles::{ + self as api, + erc20::{extensions::Erc20Metadata, Erc20}, + *, + }, + revert, +}; + +// NOTE: requires `cargo-contract` built from `master` + +#[ink::contract] +pub mod fungibles { + use super::*; + + #[ink(storage)] + pub struct Fungible { + id: TokenId, + owner: Address, + } + + impl Fungible { + /// Instantiate the contract and create a new token. The token identifier will be stored + /// in contract's storage. + /// + /// # Parameters + /// - `name` - The name of the token. + /// - `symbol` - The symbol of the token. + /// - `min_balance` - The minimum balance required for accounts holding this token. + /// - `decimals` - The number of decimals. + /// + /// NOTE: The minimum balance must be non-zero. + // The `min_balance` ensures accounts hold a minimum amount of tokens, preventing tiny, + // inactive balances from bloating the blockchain state and slowing down the network. + #[ink(constructor, payable)] + #[allow(clippy::new_without_default)] + pub fn new( + name: String, + symbol: String, + min_balance: U256, + decimals: u8, + ) -> Result { + let mut instance = Self { id: 0, owner: Self::env().caller() }; + instance.id = api::create(instance.env().address(), min_balance)?; + api::set_metadata(instance.id, name, symbol, decimals)?; + Ok(instance) + } + + /// Creates `value` amount of tokens and assigns them to `account`, increasing the total + /// supply. + /// + /// # Parameters + /// - `account` - The account to be credited with the created tokens. + /// - `value` - The number of tokens to mint. + #[ink(message)] + pub fn mint(&mut self, account: Address, value: U256) -> Result<(), Error> { + self.ensure_owner()?; + api::mint(self.id, account, value)?; + self.env().emit_event(Transfer { from: Address::zero(), to: account, value }); + Ok(()) + } + + /// Increases the allowance of `spender` by `value` amount of tokens. + /// + /// # Parameters + /// - `spender` - The account that is allowed to spend the tokens. + /// - `value` - The number of tokens to increase the allowance by. + #[ink(message)] + pub fn increase_allowance(&mut self, spender: Address, value: U256) -> Result<(), Error> { + self.ensure_owner()?; + let contract = self.env().address(); + + // Validate recipient. + ensure!(spender != contract, InvalidRecipient(spender)); + api::increase_allowance(self.id, spender, value)?; + let allowance = self.allowance(contract, spender); + self.env().emit_event(Approval { owner: contract, spender, value: allowance }); + Ok(()) + } + + /// Decreases the allowance of `spender` by `value` amount of tokens. + /// + /// # Parameters + /// - `spender` - The account that is allowed to spend the tokens. + /// - `value` - The number of tokens to decrease the allowance by. + #[ink(message)] + pub fn decrease_allowance(&mut self, spender: Address, value: U256) -> Result<(), Error> { + self.ensure_owner()?; + let contract = self.env().address(); + + // Validate recipient. + ensure!(spender != contract, InvalidRecipient(spender)); + api::decrease_allowance(self.id, spender, value)?; + let value = self.allowance(contract, spender); + self.env().emit_event(Approval { owner: contract, spender, value }); + Ok(()) + } + + /// Destroys `value` amount of tokens from `account`, reducing the total supply. + /// + /// # Parameters + /// - `account` - The account from which the tokens will be destroyed. + /// - `value` - The number of tokens to destroy. + #[ink(message)] + pub fn burn(&mut self, account: Address, value: U256) -> Result<(), Error> { + self.ensure_owner()?; + api::burn(self.id, account, value)?; + self.env().emit_event(Transfer { from: account, to: Address::zero(), value }); + Ok(()) + } + + /// Transfer the ownership of the contract to another account. + /// + /// # Parameters + /// - `owner` - New owner account. + /// + /// NOTE: the specified owner account is not checked, allowing the zero address to be + /// specified if desired.. + #[ink(message)] + pub fn transfer_ownership(&mut self, owner: Address) -> Result<(), Error> { + self.ensure_owner()?; + self.owner = owner; + Ok(()) + } + + /// Check if the caller is the owner of the contract. + fn ensure_owner(&self) -> Result<(), Error> { + ensure!(self.env().caller() == self.owner, NoPermission); + Ok(()) + } + } + + impl Erc20 for Fungible { + /// Returns the total token supply. + #[ink(message)] + fn totalSupply(&self) -> U256 { + erc20::total_supply(self.id) + } + + /// Returns the account balance for the specified `owner`. + /// + /// # Parameters + /// - `owner` - The account whose balance is being queried. + #[ink(message)] + fn balanceOf(&self, owner: Address) -> U256 { + erc20::balance_of(self.id, owner) + } + + /// Returns the allowance for a `spender` approved by an `owner`. + /// + /// # Parameters + /// - `owner` - The account that owns the tokens. + /// - `spender` - The account that is allowed to spend the tokens. + #[ink(message)] + fn allowance(&self, owner: Address, spender: Address) -> U256 { + erc20::allowance(self.id, owner, spender) + } + + /// Transfers `value` amount of tokens from the contract to account `to` with + /// additional `data` in unspecified format. + /// + /// # Parameters + /// - `to` - The recipient account. + /// - `value` - The number of tokens to transfer. + #[ink(message)] + fn transfer(&mut self, to: Address, value: U256) -> Result { + if let Err(error) = self.ensure_owner() { + revert(&error) + } + let contract = self.env().address(); + + // Validate recipient. + if to == contract { + revert(&InvalidRecipient(to)) + } + + erc20::transfer(self.id, to, value)?; + self.env().emit_event(Transfer { from: contract, to, value }); + Ok(true) + } + + /// Transfers `value` tokens on behalf of `from` to the account `to`. Contract must be + /// pre-approved by `from`. + /// + /// # Parameters + /// - `from` - The account from which the token balance will be withdrawn. + /// - `to` - The recipient account. + /// - `value` - The number of tokens to transfer. + #[ink(message)] + fn transferFrom( + &mut self, + from: Address, + to: Address, + value: U256, + ) -> Result { + if let Err(error) = self.ensure_owner() { + revert(&error) + } + let contract = self.env().address(); + + // A successful transfer reduces the allowance from `from` to the contract and triggers + // an `Approval` event with the updated allowance amount. + erc20::transfer_from(self.id, from, to, value)?; + self.env().emit_event(Transfer { from: contract, to, value }); + self.env().emit_event(Approval { + owner: from, + spender: contract, + value: self.allowance(from, contract), + }); + Ok(true) + } + + /// Approves `spender` to spend `value` amount of tokens on behalf of the contract. + /// + /// Successive calls of this method overwrite previous values. + /// + /// # Parameters + /// - `spender` - The account that is allowed to spend the tokens. + /// - `value` - The number of tokens to approve. + #[ink(message)] + fn approve(&mut self, spender: Address, value: U256) -> Result { + if let Err(error) = self.ensure_owner() { + revert(&error) + } + let contract = self.env().address(); + + // Validate recipient. + if spender == contract { + revert(&InvalidRecipient(spender)); + } + erc20::approve(self.id, spender, value)?; + self.env().emit_event(Approval { owner: contract, spender, value }); + Ok(true) + } + } + + impl Erc20Metadata for Fungible { + /// Returns the token name. + #[ink(message)] + fn name(&self) -> String { + erc20::extensions::name(self.id) + } + + /// Returns the token symbol. + #[ink(message)] + fn symbol(&self) -> String { + erc20::extensions::symbol(self.id) + } + + /// Returns the token decimals. + #[ink(message)] + fn decimals(&self) -> u8 { + erc20::extensions::decimals(self.id) + } + } +} diff --git a/pop-api-vnext/examples/messaging/Cargo.toml b/pop-api-vnext/examples/messaging/Cargo.toml new file mode 100644 index 000000000..c3e423212 --- /dev/null +++ b/pop-api-vnext/examples/messaging/Cargo.toml @@ -0,0 +1,27 @@ +[package] +authors = [ "R0GUE " ] +edition = "2021" +name = "messaging" +version = "0.1.0" + +[package.metadata.ink-lang] +abi = "sol" + +[lib] +path = "lib.rs" + +[dependencies] +ink = { git = "https://github.com/use-ink/ink", tag = "v6.0.0-alpha.1", default-features = false, features = [ "unstable-hostfn" ] } +pop-api = { path = "../../../pop-api-vnext", default-features = false, features = [ "messaging" ] } + +[dev-dependencies] +scale-info = { version = "2" } + +[features] +default = [ "std" ] +ink-as-dependency = [ ] +std = [ "ink/std", "pop-api/std" ] + +[lints.rust.unexpected_cfgs] +check-cfg = [ 'cfg(ink_abi, values("ink", "sol", "all"))' ] +level = "warn" diff --git a/pop-api-vnext/examples/messaging/README.md b/pop-api-vnext/examples/messaging/README.md new file mode 100644 index 000000000..450755cfe --- /dev/null +++ b/pop-api-vnext/examples/messaging/README.md @@ -0,0 +1,28 @@ +# Cross-Chain Messaging with Pop API + +This [ink!][ink] contract leverages the [Messaging API][pop-api-messaging] for integration and interoperability with the Polkadot ecosystem and its applications. + +It demonstrates how a contract can: +- request state from other chains using Polytope's Interoperable State Machine Protocol (ISMP) +- transact using Polkadot's Cross-Consensus Messaging (XCM). + +## Key benefits of using the Pop API + +- Simplify cross-chain interactions with powerful high-level interfaces which minimize complexity. +- Usage of ISMP or XCM messaging to satisfy cross-chain use cases. +- Optional callbacks for asynchronous response notifications. + +[Learn more how Pop API works.](pop-api) + +## Support + +Be part of our passionate community of Web3 builders. [Join our Telegram](https://t.me/onpopio)! + +Feel free to raise issues if anything is unclear, you have ideas or want to contribute to Pop! Examples using the messaging API are always welcome! + +For any questions related to ink! you can also go to [Polkadot Stack Exchange](https://polkadot.stackexchange.com/) or +ask the [ink! community](https://t.me/inkathon/1). + +[ink]: https://use.ink +[pop-api]: https://github.com/r0gue-io/pop-node/tree/main/pop-api/ +[pop-api-messaging]: https://github.com/r0gue-io/pop-node/tree/main/pop-api-vnext/src/messaging diff --git a/pop-api-vnext/examples/messaging/lib.rs b/pop-api-vnext/examples/messaging/lib.rs new file mode 100644 index 000000000..86a68af69 --- /dev/null +++ b/pop-api-vnext/examples/messaging/lib.rs @@ -0,0 +1,381 @@ +#![cfg_attr(not(feature = "std"), no_std, no_main)] + +use ink::{ + env::hash::{Blake2x256, CryptoHash}, + prelude::vec::Vec, + scale::{DecodeAll, Encode}, + storage::Mapping, + xcm::{ + prelude::{ + AccountId32, All, Asset, OriginKind, Parachain, QueryId, QueryResponseInfo, + WeightLimit, Xcm, XcmHash, + }, + DoubleEncoded, VersionedXcm, + }, + SolBytes, U256, +}; +use pop_api::{ + ensure, + messaging::{ + self as api, hashed_account, + ismp::{self, Get, OnGetResponse, StorageValue}, + xcm::{self, Location, OnQueryResponse}, + Bytes, Callback, Encoding, MessageId, + MessageStatus::*, + Weight, + }, + revert, +}; + +// NOTE: requires `cargo-contract` built from `master` + +#[ink::contract] +mod messaging { + + use super::*; + use Error::{DecodingFailed, NoPermission, Overflow}; + + #[cfg(ink_abi = "sol")] + const ENCODING: Encoding = Encoding::SolidityAbi; + #[cfg(any(ink_abi = "all", ink_abi = "ink"))] + const ENCODING: Encoding = Encoding::Scale; + + /// A contract for interacting with chains. + #[ink(storage)] + pub struct Messaging { + /// The owner of the contract. + owner: Address, + /// The weight to be used for callback responses to this contract. + gas_limit: Weight, + /// The storage deposit limit for callback responses to this contract. + storage_deposit_limit: U256, + /// The local message queue. + messages: Mapping, + } + + impl Messaging { + /// Instantiate the contract. + #[ink(constructor, payable)] + #[allow(clippy::new_without_default)] + pub fn new() -> Self { + Self { + owner: Self::env().caller(), + gas_limit: Weight::from_parts(800_000_000, 500_000), + storage_deposit_limit: U256::zero(), // Currently no storage changes on callback. + messages: Mapping::new(), + } + } + + /// Complete a message. + /// + /// # Parameters + /// - `id` - The identifier of the message. + /// + /// NOTE: Only callable by the requestor of the message. + #[ink(message)] + pub fn complete(&mut self, id: MessageId) -> Result, Error> { + match api::poll_status(id) { + NotFound => Err(Error::NotFound), + Pending => Err(Error::Pending), + Complete => { + // Only requestor can remove messages. + ensure!( + self.messages.get(&id).as_ref() == Some(&self.env().caller()), + NoPermission + ); + let result = api::get_response(id); + if let Err(error) = api::remove(id) { + revert(&error) + } + self.messages.remove(&id); + self.env().emit_event(Completed { id, result: result.clone() }); + Ok(Some(result)) + }, + Timeout => { + // Only requestor can remove messages. + ensure!( + self.messages.get(&id).as_ref() == Some(&self.env().caller()), + NoPermission + ); + if let Err(error) = api::remove(id) { + revert(&error) + } + self.messages.remove(&id); + self.env().emit_event(TimedOut { id }); + Ok(None) + }, + } + } + + /// Request some state from a chain at the specified keys and block height. + /// + /// # Parameters + /// - `dest` - The identifier of the destination chain. + /// - `keys` - The storage key(s) used to query state from the remote parachain. + /// - `height` - The block height at which to read the state. + #[ink(message)] + pub fn get( + &mut self, + dest: u32, + keys: Vec, + height: u64, + ) -> Result { + let id = ismp::get( + Get::new(dest, height, 0, SolBytes(Vec::default()), keys.clone()), + U256::zero(), + Some(Callback::new( + self.env().address(), + ENCODING, + 0x9bf78ffb, + self.gas_limit, + self.storage_deposit_limit, + )), + )?; + self.messages.insert(id, &self.env().caller()); + self.env().emit_event(IsmpRequested { id, keys, height }); + Ok(id) + } + + /// Funds the contract's associated account on the destination chain. + /// + /// # Parameters + /// - `dest` - The identifier of the destination chain. + #[ink(message, payable)] + pub fn fund(&mut self, dest: u32) -> Result<(), Error> { + let dest = Location::new(1, Parachain(dest)); + + // Reserve transfer specified assets to contract account on destination. + let amount = u128::try_from(self.env().transferred_value()).map_err(|_| Overflow)?; + let asset: Asset = (Location::parent(), amount).into(); + let beneficiary = hashed_account(api::id(), self.env().account_id()); + let message: Xcm<()> = Xcm::builder_unsafe() + .withdraw_asset(asset.clone()) + .initiate_reserve_withdraw( + asset.clone(), + dest.clone(), + Xcm::builder_unsafe() + .buy_execution(asset.clone(), WeightLimit::Unlimited) + .deposit_asset( + All, + Location::new(0, AccountId32 { network: None, id: beneficiary.0 }), + ) + .build(), + ) + .build(); + if let Err(error) = xcm::execute(VersionedXcm::V5(message), Weight::MAX) { + revert(&error) + } + self.env().emit_event(Funded { + account_id: beneficiary, + value: self.env().transferred_value(), + }); + Ok(()) + } + + /// Sets the limits used for callback responses. + /// + /// # Parameters + /// - `gas_limit` - The new gas limit. + /// - `storage_deposit_limit` - The new storage deposit limit. + #[ink(message)] + pub fn set_limits( + &mut self, + gas_limit: Weight, + storage_deposit_limit: U256, + ) -> Result<(), Error> { + ensure!(self.env().caller() == self.owner, NoPermission); + self.gas_limit = gas_limit; + self.storage_deposit_limit = storage_deposit_limit; + Ok(()) + } + + /// Sends the provided encoded `call` to a destination chain for execution. + /// + /// # Parameters + /// - `dest` - The identifier of the destination chain. + /// - `call` - The encoded call to be dispatched on the destination chain. + /// - `weight` - The weight limit for dispatching the call on the destination chain. + #[ink(message, payable)] + pub fn transact( + &mut self, + dest: u32, + call: Vec, + weight: Weight, + ) -> Result { + let dest = Location::new(1, Parachain(dest)); + let call = + DoubleEncoded::<()>::decode_all(&mut &call[..]).map_err(|_| DecodingFailed)?; + + // Register a new query for receiving a response, used to report transact status. + let (id, query_id) = xcm::new_query( + dest.clone(), + self.env().block_number().saturating_add(100), + Some(Callback::new( + self.env().address(), + ENCODING, + 0x97dbf9fb, + self.gas_limit, + self.storage_deposit_limit, + )), + ); + + // TODO: provide an api function for determining the max weight value for processing the + // reported transact status on the local chain. + let response = QueryResponseInfo { + // Route back to this parachain. + destination: Location::new(1, Parachain(api::id())), + query_id, + max_weight: Weight::from_parts(1_000_000, 5_000), + }; + + // Send transact message. + let amount = u128::try_from(self.env().transferred_value()).map_err(|_| Overflow)?; + let fees: Asset = (Location::parent(), amount).into(); + let message: Xcm<()> = self._transact(call, weight, fees, response); + let mut hash = [0u8; 32]; + Blake2x256::hash(&message.encode(), &mut hash); + if let Err(error) = xcm::send(dest.into_versioned(), VersionedXcm::V5(message)) { + revert(&error) + } + self.messages.insert(id, &self.env().caller()); + self.env().emit_event(XcmRequested { id, query_id, hash }); + + Ok(id) + } + + /// Transfer the ownership of the contract to another account. + /// + /// # Parameters + /// - `owner` - New owner account. + /// + /// NOTE: the specified owner account is not checked, allowing the zero address to be + /// specified if desired.. + #[ink(message)] + pub fn transfer_ownership(&mut self, owner: Address) -> Result<(), Error> { + ensure!(self.env().caller() == self.owner, NoPermission); + self.owner = owner; + Ok(()) + } + + fn _transact( + &self, + call: DoubleEncoded<()>, + weight: Weight, + fees: Asset, + response: QueryResponseInfo, + ) -> Xcm<()> { + let beneficiary = hashed_account(api::id(), self.env().account_id()); + Xcm::builder_unsafe() + .withdraw_asset(fees.clone()) + .buy_execution(fees, WeightLimit::Unlimited) + .set_appendix( + Xcm::builder_unsafe() + .refund_surplus() + .deposit_asset( + All, + Location::new(0, AccountId32 { network: None, id: beneficiary.0 }), + ) + .build(), + ) + .set_error_handler(Xcm::builder_unsafe().report_error(response.clone()).build()) + .transact(OriginKind::SovereignAccount, weight, call) + .report_transact_status(response) + .build() + } + } + + impl OnGetResponse for Messaging { + #[ink(message)] + fn onGetResponse(&mut self, id: MessageId, values: Vec) { + if self.env().caller() != self.env().address() { + revert(&NoPermission); + } + self.env().emit_event(GetCompleted { id, values }); + } + } + + impl OnQueryResponse for Messaging { + #[ink(message)] + fn onQueryResponse(&mut self, id: MessageId, response: Bytes) { + if self.env().caller() != self.env().address() { + revert(&NoPermission); + } + self.env().emit_event(XcmCompleted { id, result: response }); + } + } + + #[derive(ink::SolErrorDecode, ink::SolErrorEncode)] + #[ink::scale_derive(Decode, Encode, TypeInfo)] + pub enum Error { + DecodingFailed, + NoPermission, + NotFound, + Pending, + Overflow, + } + + // Implementing `SolEncode` for `Error` to use variants directly with `revert`. + impl<'a> ink::SolEncode<'a> for Error { + type SolType = (); + + fn encode(&'a self) -> Vec { + ink::primitives::sol::SolErrorEncode::encode(self) + } + + fn to_sol_type(&'a self) -> Self::SolType { + () + } + } + + #[ink::event] + pub struct IsmpRequested { + #[ink(topic)] + pub id: MessageId, + pub keys: Vec, + pub height: u64, + } + + #[ink::event] + pub struct Funded { + #[ink(topic)] + pub account_id: AccountId, + pub value: U256, + } + + #[ink::event] + pub struct XcmRequested { + #[ink(topic)] + pub id: MessageId, + #[ink(topic)] + pub query_id: QueryId, + #[ink(topic)] + pub hash: XcmHash, + } + + #[ink::event] + pub struct Completed { + #[ink(topic)] + pub id: MessageId, + pub result: Bytes, + } + + #[ink::event] + pub struct XcmCompleted { + #[ink(topic)] + pub id: MessageId, + pub result: Bytes, + } + + #[ink::event] + pub struct GetCompleted { + #[ink(topic)] + pub id: MessageId, + pub values: Vec, + } + + #[ink::event] + pub struct TimedOut { + #[ink(topic)] + pub id: MessageId, + } +} diff --git a/pop-api-vnext/integration-tests/Cargo.toml b/pop-api-vnext/integration-tests/Cargo.toml new file mode 100644 index 000000000..584247ce5 --- /dev/null +++ b/pop-api-vnext/integration-tests/Cargo.toml @@ -0,0 +1,59 @@ +[package] +build = "build.rs" +edition = "2021" +name = "pop-api-vnext-integration-tests" +version = "0.1.0" + +[package.metadata.ink-lang] +abi = "all" + +[build-dependencies] +contract-build = { git = "https://github.com/use-ink/cargo-contract", tag = "v6.0.0-alpha.1" } + +[dev-dependencies] +codec.workspace = true +env_logger.workspace = true +frame-support = { workspace = true, default-features = false } +frame-system = { workspace = true, default-features = false } +hex.workspace = true +ismp.workspace = true +log.workspace = true +pallet-api-vnext = { workspace = true, default-features = false, features = [ "fungibles", "messaging" ] } +pallet-assets = { workspace = true, default-features = false } +pallet-balances = { workspace = true, default-features = false } +pallet-ismp = { workspace = true, default-features = false } +pallet-revive = { workspace = true, default-features = false } +pallet-xcm = { workspace = true, default-features = false } +pop-api = { path = "../../pop-api-vnext", default-features = false, features = [ "fungibles", "messaging" ] } +pop-primitives = { workspace = true, default-features = false } +pop-runtime-devnet.workspace = true +pop-runtime-testnet.workspace = true +sp-io = { workspace = true, default-features = false } +sp-runtime = { workspace = true, default-features = false } +xcm.workspace = true +xcm-executor.workspace = true + +[features] +default = [ "devnet", "std" ] +devnet = [ "pop-runtime-devnet/default" ] +std = [ + "codec/std", + "frame-support/std", + "frame-system/std", + "ismp/std", + "pallet-api-vnext/std", + "pallet-assets/std", + "pallet-balances/std", + "pallet-ismp/std", + "pallet-revive/std", + "pallet-xcm/std", + "pop-api/std", + "pop-primitives/std", + "pop-runtime-devnet/std", + "pop-runtime-testnet/std", + "sp-io/std", + "sp-runtime/std", + "xcm-executor/std", + "xcm/std", +] +testnet = [ "pop-runtime-testnet/default" ] diff --git a/pop-api-vnext/integration-tests/build.rs b/pop-api-vnext/integration-tests/build.rs new file mode 100644 index 000000000..21334ac20 --- /dev/null +++ b/pop-api-vnext/integration-tests/build.rs @@ -0,0 +1,58 @@ +use std::{ + fs, + path::{Path, PathBuf}, + process, +}; + +use contract_build::{ + execute, BuildArtifacts, BuildMode, BuildResult, ExecuteArgs, ManifestPath, OutputType, + Verbosity, +}; + +fn main() { + let contracts_dir = PathBuf::from("./contracts/"); + let contract_dirs = match get_subcontract_directories(&contracts_dir) { + Ok(dirs) => dirs, + Err(e) => { + eprintln!("Failed to read contracts directory: {}", e); + process::exit(1); + }, + }; + + for contract in contract_dirs { + if let Err(e) = build_contract(&contract) { + eprintln!("Failed to build contract {}: {}", contract.display(), e); + process::exit(1); + } + } +} + +// Function to retrieve all subdirectories in a given directory. +fn get_subcontract_directories(contracts_dir: &Path) -> Result, String> { + fs::read_dir(contracts_dir) + .map_err(|e| format!("Could not read directory '{}': {}", contracts_dir.display(), e))? + .filter_map(|entry| match entry { + Ok(entry) if entry.path().is_dir() => Some(Ok(entry.path())), + Ok(_) => None, + Err(e) => Some(Err(format!("Error reading directory entry: {}", e))), + }) + .collect() +} + +// Function to build a contract given its directory. +fn build_contract(contract_dir: &Path) -> Result { + let manifest_path = ManifestPath::new(contract_dir.join("Cargo.toml")).map_err(|e| { + format!("Could not retrieve manifest path for {}: {}", contract_dir.display(), e) + })?; + + let args = ExecuteArgs { + build_artifact: BuildArtifacts::CodeOnly, + build_mode: BuildMode::Debug, + manifest_path, + output_type: OutputType::HumanReadable, + verbosity: Verbosity::Default, + ..Default::default() + }; + + execute(args).map_err(|e| format!("Build failed for {}: {}", contract_dir.display(), e)) +} diff --git a/pop-api-vnext/integration-tests/contracts/fungibles/Cargo.lock b/pop-api-vnext/integration-tests/contracts/fungibles/Cargo.lock new file mode 100644 index 000000000..164176ba2 --- /dev/null +++ b/pop-api-vnext/integration-tests/contracts/fungibles/Cargo.lock @@ -0,0 +1,6039 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aead" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +dependencies = [ + "crypto-common", + "generic-array", +] + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "getrandom 0.3.3", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "alloy-core" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d47400608fc869727ad81dba058d55f97b29ad8b5c5256d9598523df8f356ab6" +dependencies = [ + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-primitives", + "alloy-rlp", + "alloy-sol-types", +] + +[[package]] +name = "alloy-dyn-abi" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9e8a436f0aad7df8bb47f144095fba61202265d9f5f09a70b0e3227881a668e" +dependencies = [ + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-type-parser", + "alloy-sol-types", + "itoa", + "serde", + "serde_json", + "winnow", +] + +[[package]] +name = "alloy-json-abi" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "459f98c6843f208856f338bfb25e65325467f7aff35dfeb0484d0a76e059134b" +dependencies = [ + "alloy-primitives", + "alloy-sol-type-parser", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-primitives" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cfebde8c581a5d37b678d0a48a32decb51efd7a63a08ce2517ddec26db705c8" +dependencies = [ + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more 2.0.1", + "foldhash", + "hashbrown 0.15.5", + "indexmap", + "itoa", + "k256", + "keccak-asm", + "paste", + "proptest", + "rand 0.9.2", + "ruint", + "rustc-hash 2.1.1", + "serde", + "sha3", + "tiny-keccak", +] + +[[package]] +name = "alloy-rlp" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f70d83b765fdc080dbcd4f4db70d8d23fe4761f2f02ebfa9146b833900634b4" +dependencies = [ + "arrayvec", + "bytes", +] + +[[package]] +name = "alloy-sol-macro" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aedac07a10d4c2027817a43cc1f038313fc53c7ac866f7363239971fd01f9f18" +dependencies = [ + "alloy-sol-macro-expander", + "alloy-sol-macro-input", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "alloy-sol-macro-expander" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24f9a598f010f048d8b8226492b6401104f5a5c1273c2869b72af29b48bb4ba9" +dependencies = [ + "alloy-sol-macro-input", + "const-hex", + "heck", + "indexmap", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.104", + "syn-solidity", + "tiny-keccak", +] + +[[package]] +name = "alloy-sol-macro-input" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f494adf9d60e49aa6ce26dfd42c7417aa6d4343cf2ae621f20e4d92a5ad07d85" +dependencies = [ + "const-hex", + "dunce", + "heck", + "macro-string", + "proc-macro2", + "quote", + "syn 2.0.104", + "syn-solidity", +] + +[[package]] +name = "alloy-sol-type-parser" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52db32fbd35a9c0c0e538b58b81ebbae08a51be029e7ad60e08b60481c2ec6c3" +dependencies = [ + "serde", + "winnow", +] + +[[package]] +name = "alloy-sol-types" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a285b46e3e0c177887028278f04cc8262b76fd3b8e0e20e93cea0a58c35f5ac5" +dependencies = [ + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-macro", + "serde", +] + +[[package]] +name = "anyhow" +version = "1.0.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100" + +[[package]] +name = "approx" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "aquamarine" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21cc1548309245035eb18aa7f0967da6bc65587005170c56e6ef2788a4cf3f4e" +dependencies = [ + "include_dir", + "itertools 0.10.5", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "ark-bls12-377" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb00293ba84f51ce3bd026bd0de55899c4e68f0a39a5728cebae3a73ffdc0a4f" +dependencies = [ + "ark-ec 0.4.2", + "ark-ff 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bls12-381" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c775f0d12169cba7aae4caeb547bb6a50781c7449a8aa53793827c9ec4abf488" +dependencies = [ + "ark-ec 0.4.2", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bls12-381" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3df4dcc01ff89867cd86b0da835f23c3f02738353aaee7dde7495af71363b8d5" +dependencies = [ + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", +] + +[[package]] +name = "ark-ec" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" +dependencies = [ + "ark-ff 0.4.2", + "ark-poly 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "hashbrown 0.13.2", + "itertools 0.10.5", + "num-traits", + "zeroize", +] + +[[package]] +name = "ark-ec" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" +dependencies = [ + "ahash", + "ark-ff 0.5.0", + "ark-poly 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe", + "fnv", + "hashbrown 0.15.5", + "itertools 0.13.0", + "num-bigint", + "num-integer", + "num-traits", + "zeroize", +] + +[[package]] +name = "ark-ed-on-bls12-381-bandersnatch" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1786b2e3832f6f0f7c8d62d5d5a282f6952a1ab99981c54cd52b6ac1d8f02df5" +dependencies = [ + "ark-bls12-381 0.5.0", + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-std 0.5.0", +] + +[[package]] +name = "ark-ff" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" +dependencies = [ + "ark-ff-asm 0.3.0", + "ark-ff-macros 0.3.0", + "ark-serialize 0.3.0", + "ark-std 0.3.0", + "derivative", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.3.3", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "digest 0.10.7", + "itertools 0.10.5", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.4.1", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" +dependencies = [ + "ark-ff-asm 0.5.0", + "ark-ff-macros 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "educe", + "itertools 0.13.0", + "num-bigint", + "num-traits", + "paste", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" +dependencies = [ + "quote", + "syn 2.0.104", +] + +[[package]] +name = "ark-ff-macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" +dependencies = [ + "num-bigint", + "num-traits", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "ark-poly" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" +dependencies = [ + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "hashbrown 0.13.2", +] + +[[package]] +name = "ark-poly" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" +dependencies = [ + "ahash", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe", + "fnv", + "hashbrown 0.15.5", +] + +[[package]] +name = "ark-serialize" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" +dependencies = [ + "ark-std 0.3.0", + "digest 0.9.0", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-serialize-derive 0.4.2", + "ark-std 0.4.0", + "digest 0.10.7", + "num-bigint", +] + +[[package]] +name = "ark-serialize" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" +dependencies = [ + "ark-serialize-derive 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "num-bigint", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "ark-std" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "ark-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "ark-transcript" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47c1c928edb9d8ff24cb5dcb7651d3a98494fff3099eee95c2404cd813a9139f" +dependencies = [ + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "digest 0.10.7", + "rand_core 0.6.4", + "sha3", +] + +[[package]] +name = "ark-vrf" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9501da18569b2afe0eb934fb7afd5a247d238b94116155af4dd068f319adfe6d" +dependencies = [ + "ark-bls12-381 0.5.0", + "ark-ec 0.5.0", + "ark-ed-on-bls12-381-bandersnatch", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "digest 0.10.7", + "rand_chacha 0.3.1", + "sha2 0.10.9", + "w3f-ring-proof", + "zeroize", +] + +[[package]] +name = "array-bytes" +version = "6.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5dde061bd34119e902bbb2d9b90c5692635cf59fb91d582c2b68043f1b8293" + +[[package]] +name = "array-init" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d62b7694a562cdf5a74227903507c56ab2cc8bdd1f781ed5cb4cf9c9f810bfc" + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "async-trait" +version = "0.1.88" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "auto_impl" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "backtrace" +version = "0.3.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets 0.52.6", +] + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base58" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6107fe1be6682a68940da878d9e9f5e90ca5745b3dec9fd1bb393c8777d4f581" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64ct" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" + +[[package]] +name = "binary-merkle-tree" +version = "13.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "hash-db", + "log", + "parity-scale-codec", +] + +[[package]] +name = "bip32" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db40d3dfbeab4e031d78c844642fa0caa0b0db11ce1607ac9d2986dff1405c69" +dependencies = [ + "bs58", + "hmac", + "k256", + "rand_core 0.6.4", + "ripemd", + "secp256k1 0.27.0", + "sha2 0.10.9", + "subtle", + "zeroize", +] + +[[package]] +name = "bip39" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d193de1f7487df1914d3a568b772458861d33f9c54249612cc2893d6915054" +dependencies = [ + "bitcoin_hashes 0.13.0", + "serde", + "unicode-normalization", +] + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + +[[package]] +name = "bitcoin-internals" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9425c3bf7089c983facbae04de54513cce73b41c7f9ff8c845b54e7bc64ebbfb" + +[[package]] +name = "bitcoin-io" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b47c4ab7a93edb0c7198c5535ed9b52b63095f4e9b45279c6736cec4b856baf" + +[[package]] +name = "bitcoin_hashes" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1930a4dabfebb8d7d9992db18ebe3ae2876f0a305fab206fd168df931ede293b" +dependencies = [ + "bitcoin-internals", + "hex-conservative 0.1.2", +] + +[[package]] +name = "bitcoin_hashes" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16" +dependencies = [ + "bitcoin-io", + "hex-conservative 0.2.1", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "blake2b_simd" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06e903a20b159e944f91ec8499fe1e55651480c541ea0a584f5d967c49ad9d99" +dependencies = [ + "arrayref", + "arrayvec", + "constant_time_eq", +] + +[[package]] +name = "blake3" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bounded-collections" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dee8eddd066a8825ec5570528e6880471210fd5d88cb6abbe1cfdd51ca249c33" +dependencies = [ + "jam-codec", + "log", + "parity-scale-codec", + "scale-info", + "serde", +] + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "sha2 0.10.9", + "tinyvec", +] + +[[package]] +name = "byte-slice-cast" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" + +[[package]] +name = "bytemuck" +version = "1.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +dependencies = [ + "serde", +] + +[[package]] +name = "camino" +version = "1.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d07aa9a93b00c76f71bc35d598bed923f6d4f3a9ca5c24b7737ae1a292841c0" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" +dependencies = [ + "camino", + "cargo-platform", + "semver 1.0.26", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "cc" +version = "1.2.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2352e5597e9c544d5e6d9c95190d5d27738ade584fa8db0a16e130e5c2b5296e" +dependencies = [ + "shlex", +] + +[[package]] +name = "cfg-expr" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" +dependencies = [ + "smallvec", +] + +[[package]] +name = "cfg-if" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", + "zeroize", +] + +[[package]] +name = "common-path" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2382f75942f4b3be3690fe4f86365e9c853c1587d6ee58212cebf6e2a9ccd101" + +[[package]] +name = "const-hex" +version = "1.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83e22e0ed40b96a48d3db274f72fd365bd78f67af39b6bbd47e8a15e1c6207ff" +dependencies = [ + "cfg-if", + "cpufeatures", + "hex", + "proptest", + "serde", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "const-random" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" +dependencies = [ + "const-random-macro", +] + +[[package]] +name = "const-random-macro" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" +dependencies = [ + "getrandom 0.2.16", + "once_cell", + "tiny-keccak", +] + +[[package]] +name = "const_env" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e9e4f72c6e3398ca6da372abd9affd8f89781fe728869bbf986206e9af9627e" +dependencies = [ + "const_env_impl", +] + +[[package]] +name = "const_env_impl" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a4f51209740b5e1589e702b3044cdd4562cef41b6da404904192ffffb852d62" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "const_format" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" +dependencies = [ + "const_format_proc_macros", + "konst", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "typenum", +] + +[[package]] +name = "crypto_secretbox" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d6cf87adf719ddf43a805e92c6870a531aedda35ff640442cbaf8674e141e1" +dependencies = [ + "aead", + "cipher", + "generic-array", + "poly1305", + "salsa20", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto", + "rustc_version 0.4.1", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "darling" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.104", +] + +[[package]] +name = "darling_macro" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "const-oid", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive-syn-parse" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d65d7ce8132b7c0e54497a4d9a55a1c2a0912a0d786cf894472ba818fba45762" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "derive-where" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef941ded77d15ca19b40374869ac6000af1c9f2a4c0f3d4c70926287e6364a8f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "derive_more" +version = "0.99.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "derive_more" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +dependencies = [ + "derive_more-impl 1.0.0", +] + +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl 2.0.1", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", + "unicode-xid", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + +[[package]] +name = "docify" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a772b62b1837c8f060432ddcc10b17aae1453ef17617a99bc07789252d2a5896" +dependencies = [ + "docify_macros", +] + +[[package]] +name = "docify_macros" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60e6be249b0a462a14784a99b19bf35a667bb5e09de611738bb7362fa4c95ff7" +dependencies = [ + "common-path", + "derive-syn-parse", + "once_cell", + "proc-macro2", + "quote", + "regex", + "syn 2.0.104", + "termcolor", + "toml", + "walkdir", +] + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979", + "serdect", + "signature", + "spki", +] + +[[package]] +name = "ed25519" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +dependencies = [ + "pkcs8", + "signature", +] + +[[package]] +name = "ed25519-dalek" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" +dependencies = [ + "curve25519-dalek", + "ed25519", + "serde", + "sha2 0.10.9", + "subtle", + "zeroize", +] + +[[package]] +name = "ed25519-zebra" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d9ce6874da5d4415896cd45ffbc4d1cfc0c4f9c079427bd870742c30f2f65a9" +dependencies = [ + "curve25519-dalek", + "ed25519", + "hashbrown 0.14.5", + "hex", + "rand_core 0.6.4", + "sha2 0.10.9", + "zeroize", +] + +[[package]] +name = "educe" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest 0.10.7", + "ff", + "generic-array", + "group", + "pkcs8", + "rand_core 0.6.4", + "sec1", + "serdect", + "subtle", + "zeroize", +] + +[[package]] +name = "enum-ordinalize" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5" +dependencies = [ + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "environmental" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48c92028aaa870e83d51c64e5d4e0b6981b360c522198c23959f219a4e1b15b" + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "ethbloom" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c321610643004cf908ec0f5f2aa0d8f1f8e14b540562a2887a1111ff1ecbf7b" +dependencies = [ + "crunchy", + "fixed-hash", + "impl-codec 0.7.1", + "impl-rlp", + "impl-serde", + "scale-info", + "tiny-keccak", +] + +[[package]] +name = "ethereum-standards" +version = "0.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "alloy-core", +] + +[[package]] +name = "ethereum-types" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ab15ed80916029f878e0267c3a9f92b67df55e79af370bf66199059ae2b4ee3" +dependencies = [ + "ethbloom", + "fixed-hash", + "impl-codec 0.7.1", + "impl-rlp", + "impl-serde", + "primitive-types 0.13.1", + "scale-info", + "uint 0.10.0", +] + +[[package]] +name = "expander" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2c470c71d91ecbd179935b24170459e926382eaaa86b590b78814e180d8a8e2" +dependencies = [ + "blake2", + "file-guard", + "fs-err", + "prettyplease", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "fallible-iterator" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fastrlp" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "fastrlp" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce8dba4714ef14b8274c371879b175aa55b16b30f269663f19d576f380018dc4" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "ff" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +dependencies = [ + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + +[[package]] +name = "file-guard" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21ef72acf95ec3d7dbf61275be556299490a245f017cf084bd23b4f68cf9407c" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", + "rand 0.8.5", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "frame-benchmarking" +version = "28.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "frame-support", + "frame-support-procedural", + "frame-system", + "linregress", + "log", + "parity-scale-codec", + "paste", + "scale-info", + "serde", + "sp-api", + "sp-application-crypto", + "sp-core", + "sp-io", + "sp-runtime", + "sp-runtime-interface", + "sp-storage", + "static_assertions", +] + +[[package]] +name = "frame-decode" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7cb8796f93fa038f979a014234d632e9688a120e745f936e2635123c77537f7" +dependencies = [ + "frame-metadata 21.0.0", + "parity-scale-codec", + "scale-decode", + "scale-info", + "scale-type-resolver", + "sp-crypto-hashing 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "frame-metadata" +version = "20.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26de808fa6461f2485dc51811aefed108850064994fb4a62b3ac21ffa62ac8df" +dependencies = [ + "cfg-if", + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "frame-metadata" +version = "21.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20dfd1d7eae1d94e32e869e2fb272d81f52dd8db57820a373adb83ea24d7d862" +dependencies = [ + "cfg-if", + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "frame-metadata" +version = "23.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8c26fcb0454397c522c05fdad5380c4e622f8a875638af33bff5a320d1fc965" +dependencies = [ + "cfg-if", + "parity-scale-codec", + "scale-info", + "serde", +] + +[[package]] +name = "frame-support" +version = "28.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "aquamarine", + "array-bytes", + "binary-merkle-tree", + "bitflags 1.3.2", + "docify", + "environmental", + "frame-metadata 23.0.0", + "frame-support-procedural", + "impl-trait-for-tuples", + "k256", + "log", + "macro_magic", + "parity-scale-codec", + "paste", + "scale-info", + "serde", + "serde_json", + "sp-api", + "sp-arithmetic", + "sp-core", + "sp-crypto-hashing-proc-macro", + "sp-debug-derive", + "sp-genesis-builder", + "sp-inherents", + "sp-io", + "sp-metadata-ir", + "sp-runtime", + "sp-staking", + "sp-state-machine", + "sp-std", + "sp-tracing", + "sp-trie", + "sp-weights", + "tt-call", +] + +[[package]] +name = "frame-support-procedural" +version = "23.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "Inflector", + "cfg-expr", + "derive-syn-parse", + "docify", + "expander", + "frame-support-procedural-tools", + "itertools 0.11.0", + "macro_magic", + "proc-macro-warning", + "proc-macro2", + "quote", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4)", + "syn 2.0.104", +] + +[[package]] +name = "frame-support-procedural-tools" +version = "10.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "frame-support-procedural-tools-derive", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "frame-support-procedural-tools-derive" +version = "11.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "frame-system" +version = "28.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "cfg-if", + "docify", + "frame-support", + "log", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-version", + "sp-weights", +] + +[[package]] +name = "fs-err" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41" +dependencies = [ + "autocfg", +] + +[[package]] +name = "fungibles" +version = "0.1.0" +dependencies = [ + "ink", + "pop-api", + "scale-info", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", + "num_cpus", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", +] + +[[package]] +name = "getrandom_or_panic" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea1015b5a70616b688dc230cfe50c8af89d972cb132d5a622814d29773b10b9" +dependencies = [ + "rand 0.8.5", + "rand_core 0.6.4", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +dependencies = [ + "fallible-iterator", + "stable_deref_trait", +] + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "h2" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hash-db" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e7d7786361d7425ae2fe4f9e407eb0efaa0840f5212d109cc018c40c35c6ab4" + +[[package]] +name = "hash256-std-hasher" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92c171d55b98633f4ed3860808f004099b36c1cc29c42cfc53aa8591b21efcf2" +dependencies = [ + "crunchy", +] + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", +] + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", + "serde", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] + +[[package]] +name = "hex-conservative" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212ab92002354b4819390025006c897e8140934349e8635c9b077f47b4dcbd20" + +[[package]] +name = "hex-conservative" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + +[[package]] +name = "hex-literal" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcaaec4551594c969335c98c903c1397853d4198408ea609190f420500f6be71" + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "humantime" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b112acc8b3adf4b107a8ec20977da0273a8c386765a3ec0229bd500a1443f9f" + +[[package]] +name = "humantime-serde" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57a3db5ea5923d99402c94e9feb261dc5ee9b4efa158b0315f788cf549cc200c" +dependencies = [ + "humantime", + "serde", +] + +[[package]] +name = "hyper" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", +] + +[[package]] +name = "hyper-util" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "hyper", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "impl-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-codec" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d40b9d5e17727407e55028eafc22b2dc68781786e6d7eb8a21103f5058e3a14" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-num-traits" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "803d15461ab0dcc56706adf266158acbc44ccf719bf7d0af30705f58b90a4b8c" +dependencies = [ + "integer-sqrt", + "num-traits", + "uint 0.10.0", +] + +[[package]] +name = "impl-rlp" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54ed8ad1f3877f7e775b8cbf30ed1bd3209a95401817f19a0eb4402d13f8cf90" +dependencies = [ + "rlp 0.6.1", +] + +[[package]] +name = "impl-serde" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a143eada6a1ec4aefa5049037a26a6d597bfd64f8c026d07b77133e02b7dd0b" +dependencies = [ + "serde", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "include_dir" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd" +dependencies = [ + "include_dir_macros", +] + +[[package]] +name = "include_dir_macros" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "indexmap" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" +dependencies = [ + "equivalent", + "hashbrown 0.15.5", + "serde", +] + +[[package]] +name = "ink" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "const_format", + "deranged", + "derive_more 2.0.1", + "ink_env", + "ink_macro", + "ink_metadata", + "ink_prelude", + "ink_primitives", + "ink_storage", + "keccak-const", + "linkme", + "pallet-revive-uapi", + "parity-scale-codec", + "polkavm-derive", + "scale-info", + "sp-io", + "sp-runtime-interface", + "staging-xcm", + "tokio", +] + +[[package]] +name = "ink_allocator" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "ink_codegen" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "blake2", + "derive_more 2.0.1", + "either", + "heck", + "impl-serde", + "ink_ir", + "ink_primitives", + "itertools 0.14.0", + "parity-scale-codec", + "polkavm-derive", + "proc-macro2", + "quote", + "serde", + "serde_json", + "syn 2.0.104", +] + +[[package]] +name = "ink_engine" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "blake2", + "derive_more 2.0.1", + "hex-literal 1.0.0", + "ink_primitives", + "pallet-revive", + "pallet-revive-uapi", + "parity-scale-codec", + "secp256k1 0.30.0", + "sha2 0.10.9", + "sha3", +] + +[[package]] +name = "ink_env" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "blake2", + "cfg-if", + "const_env", + "derive_more 2.0.1", + "hex-literal 1.0.0", + "ink_allocator", + "ink_engine", + "ink_prelude", + "ink_primitives", + "ink_storage_traits", + "num-traits", + "pallet-revive", + "pallet-revive-uapi", + "parity-scale-codec", + "polkavm-derive", + "scale-decode", + "scale-encode", + "scale-info", + "schnorrkel", + "secp256k1 0.30.0", + "sha2 0.10.9", + "sha3", + "sp-io", + "sp-runtime-interface", + "staging-xcm", + "static_assertions", +] + +[[package]] +name = "ink_ir" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "blake2", + "either", + "impl-serde", + "ink_prelude", + "itertools 0.14.0", + "proc-macro2", + "quote", + "sha3", + "syn 2.0.104", +] + +[[package]] +name = "ink_macro" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "ink_codegen", + "ink_ir", + "ink_primitives", + "parity-scale-codec", + "proc-macro2", + "quote", + "syn 2.0.104", + "synstructure", +] + +[[package]] +name = "ink_metadata" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "derive_more 2.0.1", + "impl-serde", + "ink_prelude", + "ink_primitives", + "parity-scale-codec", + "scale-info", + "schemars", + "serde", +] + +[[package]] +name = "ink_prelude" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "ink_primitives" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "alloy-sol-types", + "cfg-if", + "derive_more 2.0.1", + "impl-trait-for-tuples", + "ink_prelude", + "itertools 0.14.0", + "num-traits", + "pallet-revive", + "pallet-revive-uapi", + "parity-scale-codec", + "paste", + "primitive-types 0.13.1", + "scale-decode", + "scale-encode", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime-interface", + "sp-weights", + "xxhash-rust", +] + +[[package]] +name = "ink_storage" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "array-init", + "cfg-if", + "derive_more 2.0.1", + "ink_env", + "ink_metadata", + "ink_prelude", + "ink_primitives", + "ink_storage_traits", + "pallet-revive-uapi", + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "ink_storage_traits" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "ink_metadata", + "ink_prelude", + "ink_primitives", + "parity-scale-codec", + "scale-info", + "sp-io", + "sp-runtime-interface", +] + +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "generic-array", +] + +[[package]] +name = "integer-sqrt" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "276ec31bcb4a9ee45f58bec6f9ec700ae4cf4f4f8f2fa7e06cb406bd5ffdd770" +dependencies = [ + "num-traits", +] + +[[package]] +name = "io-uring" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4" +dependencies = [ + "bitflags 2.9.1", + "cfg-if", + "libc", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "jam-codec" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d72f2fb8cfd27f6c52ea7d0528df594f7f2ed006feac153e9393ec567aafea98" +dependencies = [ + "arrayvec", + "bitvec", + "byte-slice-cast", + "const_format", + "impl-trait-for-tuples", + "jam-codec-derive", + "rustversion", + "serde", +] + +[[package]] +name = "jam-codec-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09985146f40378e13af626964ac9c206d9d9b67c40c70805898d9954f709bcf5" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "k256" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "once_cell", + "serdect", + "sha2 0.10.9", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "keccak-asm" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6" +dependencies = [ + "digest 0.10.7", + "sha3-asm", +] + +[[package]] +name = "keccak-const" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57d8d8ce877200136358e0bbff3a77965875db3af755a11e1fa6b1b3e2df13ea" + +[[package]] +name = "keccak-hash" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e1b8590eb6148af2ea2d75f38e7d29f5ca970d5a4df456b3ef19b8b415d0264" +dependencies = [ + "primitive-types 0.13.1", + "tiny-keccak", +] + +[[package]] +name = "konst" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330f0e13e6483b8c34885f7e6c9f19b1a7bd449c673fbb948a51c99d66ef74f4" +dependencies = [ + "konst_macro_rules", +] + +[[package]] +name = "konst_macro_rules" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4933f3f57a8e9d9da04db23fb153356ecaf00cbd14aee46279c33dc80925c37" + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin", +] + +[[package]] +name = "libc" +version = "0.2.175" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" + +[[package]] +name = "libm" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" + +[[package]] +name = "libredox" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" +dependencies = [ + "bitflags 2.9.1", + "libc", +] + +[[package]] +name = "libsecp256k1" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e79019718125edc905a079a70cfa5f3820bc76139fc91d6f9abc27ea2a887139" +dependencies = [ + "arrayref", + "base64", + "digest 0.9.0", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", + "rand 0.8.5", + "serde", + "sha2 0.9.9", +] + +[[package]] +name = "libsecp256k1-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be9b9bb642d8522a44d533eab56c16c738301965504753b03ad1de3425d5451" +dependencies = [ + "crunchy", + "digest 0.9.0", + "subtle", +] + +[[package]] +name = "libsecp256k1-gen-ecmult" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3038c808c55c87e8a172643a7d87187fc6c4174468159cb3090659d55bcb4809" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "libsecp256k1-gen-genmult" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db8d6ba2cec9eacc40e6e8ccc98931840301f1006e95647ceb2dd5c3aa06f7c" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "linkme" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1b1703c00b2a6a70738920544aa51652532cacddfec2e162d2e29eae01e665c" +dependencies = [ + "linkme-impl", +] + +[[package]] +name = "linkme-impl" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04d55ca5d5a14363da83bf3c33874b8feaa34653e760d5216d7ef9829c88001a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "linregress" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9eda9dcf4f2a99787827661f312ac3219292549c2ee992bf9a6248ffb066bf7" +dependencies = [ + "nalgebra", +] + +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + +[[package]] +name = "lock_api" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" + +[[package]] +name = "macro-string" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "macro_magic" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc33f9f0351468d26fbc53d9ce00a096c8522ecb42f19b50f34f2c422f76d21d" +dependencies = [ + "macro_magic_core", + "macro_magic_macros", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "macro_magic_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1687dc887e42f352865a393acae7cf79d98fab6351cde1f58e9e057da89bf150" +dependencies = [ + "const-random", + "derive-syn-parse", + "macro_magic_core_macros", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "macro_magic_core_macros" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b02abfe41815b5bd98dbd4260173db2c116dda171dc0fe7838cb206333b83308" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "macro_magic_macros" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ea28ee64b88876bf45277ed9a5817c1817df061a74f2b988971a12570e5869" +dependencies = [ + "macro_magic_core", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "matrixmultiply" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06de3016e9fae57a36fd14dba131fccf49f74b40b7fbdb472f96e361ec71a08" +dependencies = [ + "autocfg", + "rawpointer", +] + +[[package]] +name = "memchr" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "memory-db" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6da20dba965bd218a14c3b335b90d3e07c09ede190c7c19b50deb23d418a322" +dependencies = [ + "hash-db", + "hashbrown 0.15.5", +] + +[[package]] +name = "merlin" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" +dependencies = [ + "byteorder", + "keccak", + "rand_core 0.6.4", + "zeroize", +] + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +dependencies = [ + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", +] + +[[package]] +name = "nalgebra" +version = "0.33.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26aecdf64b707efd1310e3544d709c5c0ac61c13756046aaaba41be5c4f66a3b" +dependencies = [ + "approx", + "matrixmultiply", + "num-complex", + "num-rational", + "num-traits", + "simba", + "typenum", +] + +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-format" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a652d9771a63711fd3c3deb670acfbe5c30a4072e664d7a3bf5a9e1056ac72c3" +dependencies = [ + "arrayvec", + "itoa", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_cpus" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "pallet-revive" +version = "0.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "alloy-core", + "derive_more 0.99.20", + "environmental", + "ethereum-standards", + "ethereum-types", + "frame-benchmarking", + "frame-support", + "frame-system", + "hex-literal 0.4.1", + "humantime-serde", + "impl-trait-for-tuples", + "log", + "num-bigint", + "num-integer", + "num-traits", + "pallet-revive-fixtures", + "pallet-revive-proc-macro", + "pallet-revive-uapi", + "pallet-transaction-payment", + "parity-scale-codec", + "paste", + "polkavm", + "polkavm-common", + "rand 0.8.5", + "ripemd", + "rlp 0.6.1", + "scale-info", + "serde", + "sp-api", + "sp-arithmetic", + "sp-consensus-aura", + "sp-consensus-babe", + "sp-consensus-slots", + "sp-core", + "sp-io", + "sp-runtime", + "substrate-bn", + "subxt-signer", +] + +[[package]] +name = "pallet-revive-fixtures" +version = "0.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "anyhow", + "cargo_metadata", + "pallet-revive-uapi", + "polkavm-linker", + "sp-core", + "sp-io", + "toml", +] + +[[package]] +name = "pallet-revive-proc-macro" +version = "0.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "pallet-revive-uapi" +version = "0.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "bitflags 1.3.2", + "pallet-revive-proc-macro", + "parity-scale-codec", + "polkavm-derive", + "scale-info", +] + +[[package]] +name = "pallet-transaction-payment" +version = "28.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "serde", + "sp-io", + "sp-runtime", +] + +[[package]] +name = "parity-bip39" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e69bf016dc406eff7d53a7d3f7cf1c2e72c82b9088aac1118591e36dd2cd3e9" +dependencies = [ + "bitcoin_hashes 0.13.0", + "rand 0.8.5", + "rand_core 0.6.4", + "serde", + "unicode-normalization", +] + +[[package]] +name = "parity-scale-codec" +version = "3.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" +dependencies = [ + "arrayvec", + "bitvec", + "byte-slice-cast", + "bytes", + "const_format", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "rustversion", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "parity-wasm" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1ad0aff30c1da14b1254fcb2af73e1fa9a28670e584a626f53a369d0e157304" + +[[package]] +name = "parking_lot" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "password-hash" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166" +dependencies = [ + "base64ct", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pbkdf2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest 0.10.7", + "hmac", + "password-hash", +] + +[[package]] +name = "pest" +version = "2.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1db05f56d34358a8b1066f67cbb203ee3e7ed2ba674a6263a1d5ec6db2204323" +dependencies = [ + "memchr", + "thiserror 2.0.14", + "ucd-trie", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "polkavm" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa028f713d0613f0f08b8b3367402cb859218854f6b96fcbe39a501862894d6f" +dependencies = [ + "libc", + "log", + "polkavm-assembler", + "polkavm-common", + "polkavm-linux-raw", +] + +[[package]] +name = "polkavm-assembler" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4859a29e1f4ad64610c4bc2bfc40bb9a535068a034933a5b56b5e7a0febf105a" +dependencies = [ + "log", +] + +[[package]] +name = "polkavm-common" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49a5794b695626ba70d29e66e3f4f4835767452a6723f3a0bc20884b07088fe8" +dependencies = [ + "blake3", + "log", + "polkavm-assembler", +] + +[[package]] +name = "polkavm-derive" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95282a203ae1f6828a04ff334145c3f6dc718bba6d3959805d273358b45eab93" +dependencies = [ + "polkavm-derive-impl-macro", +] + +[[package]] +name = "polkavm-derive-impl" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6069dc7995cde6e612b868a02ce48b54397c6d2582bd1b97b63aabbe962cd779" +dependencies = [ + "polkavm-common", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "polkavm-derive-impl-macro" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581d34cafec741dc5ffafbb341933c205b6457f3d76257a9d99fb56687219c91" +dependencies = [ + "polkavm-derive-impl", + "syn 2.0.104", +] + +[[package]] +name = "polkavm-linker" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "beb896023e5bd89bba40311797d8d42490fa4a1fd5256c74820753c5722d1e67" +dependencies = [ + "dirs", + "gimli", + "hashbrown 0.14.5", + "log", + "object", + "polkavm-common", + "regalloc2", + "rustc-demangle", +] + +[[package]] +name = "polkavm-linux-raw" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28919f542476f4158cc71e6c072b1051f38f4b514253594ac3ad80e3c0211fc8" + +[[package]] +name = "poly1305" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +dependencies = [ + "cpufeatures", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "pop-api" +version = "0.1.0" +dependencies = [ + "base64", + "ink", + "pop-primitives", +] + +[[package]] +name = "pop-primitives" +version = "0.0.0" +dependencies = [ + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "prettyplease" +version = "0.2.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff24dfcda44452b9816fff4cd4227e1bb73ff5a2f1bc1105aa92fb8565ce44d2" +dependencies = [ + "proc-macro2", + "syn 2.0.104", +] + +[[package]] +name = "primitive-types" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" +dependencies = [ + "fixed-hash", + "impl-codec 0.6.0", + "uint 0.9.5", +] + +[[package]] +name = "primitive-types" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d15600a7d856470b7d278b3fe0e311fe28c2526348549f8ef2ff7db3299c87f5" +dependencies = [ + "fixed-hash", + "impl-codec 0.7.1", + "impl-num-traits", + "impl-rlp", + "impl-serde", + "scale-info", + "uint 0.10.0", +] + +[[package]] +name = "proc-macro-crate" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "proc-macro-warning" +version = "1.84.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75eea531cfcd120e0851a3f8aed42c4841f78c889eefafd96339c72677ae42c3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "proc-macro2" +version = "1.0.97" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d61789d7719defeb74ea5fe81f2fdfdbd28a803847077cecce2ff14e1472f6f1" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "prometheus" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d33c28a30771f7f96db69893f78b857f7450d7e0237e9c8fc6427a81bae7ed1" +dependencies = [ + "cfg-if", + "fnv", + "lazy_static", + "memchr", + "parking_lot", + "thiserror 1.0.69", +] + +[[package]] +name = "proptest" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fcdab19deb5195a31cf7726a210015ff1496ba1464fd42cb4f537b8b01b471f" +dependencies = [ + "bit-set", + "bit-vec", + "bitflags 2.9.1", + "lazy_static", + "num-traits", + "rand 0.9.2", + "rand_chacha 0.9.0", + "rand_xorshift", + "regex-syntax 0.8.5", + "rusty-fork", + "tempfile", + "unarray", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", + "serde", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.16", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.3", + "serde", +] + +[[package]] +name = "rand_xorshift" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" +dependencies = [ + "rand_core 0.9.3", +] + +[[package]] +name = "rawpointer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" + +[[package]] +name = "redox_syscall" +version = "0.5.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" +dependencies = [ + "bitflags 2.9.1", +] + +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom 0.2.16", + "libredox", + "thiserror 1.0.69", +] + +[[package]] +name = "ref-cast" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "regalloc2" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad156d539c879b7a24a363a2016d77961786e71f48f2e2fc8302a92abd2429a6" +dependencies = [ + "hashbrown 0.13.2", + "log", + "rustc-hash 1.1.0", + "slice-group-by", + "smallvec", +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + +[[package]] +name = "ripemd" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "rlp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +dependencies = [ + "bytes", + "rustc-hex", +] + +[[package]] +name = "rlp" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa24e92bb2a83198bb76d661a71df9f7076b8c420b8696e4d3d97d50d94479e3" +dependencies = [ + "bytes", + "rustc-hex", +] + +[[package]] +name = "ruint" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ecb38f82477f20c5c3d62ef52d7c4e536e38ea9b73fb570a20c5cae0e14bcf6" +dependencies = [ + "alloy-rlp", + "ark-ff 0.3.0", + "ark-ff 0.4.2", + "bytes", + "fastrlp 0.3.1", + "fastrlp 0.4.0", + "num-bigint", + "num-integer", + "num-traits", + "parity-scale-codec", + "primitive-types 0.12.2", + "proptest", + "rand 0.8.5", + "rand 0.9.2", + "rlp 0.5.2", + "ruint-macro", + "serde", + "valuable", + "zeroize", +] + +[[package]] +name = "ruint-macro" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" + +[[package]] +name = "rustc-demangle" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver 1.0.26", +] + +[[package]] +name = "rustix" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" +dependencies = [ + "bitflags 2.9.1", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.60.2", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "rusty-fork" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "safe_arch" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96b02de82ddbe1b636e6170c21be622223aea188ef2e139be0a5b219ec215323" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "salsa20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +dependencies = [ + "cipher", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scale-bits" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27243ab0d2d6235072b017839c5f0cd1a3b1ce45c0f7a715363b0c7d36c76c94" +dependencies = [ + "parity-scale-codec", + "scale-info", + "scale-type-resolver", + "serde", +] + +[[package]] +name = "scale-decode" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d78196772d25b90a98046794ce0fe2588b39ebdfbdc1e45b4c6c85dd43bebad" +dependencies = [ + "parity-scale-codec", + "primitive-types 0.13.1", + "scale-bits", + "scale-decode-derive", + "scale-type-resolver", + "smallvec", + "thiserror 2.0.14", +] + +[[package]] +name = "scale-decode-derive" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f4b54a1211260718b92832b661025d1f1a4b6930fbadd6908e00edd265fa5f7" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "scale-encode" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64901733157f9d25ef86843bd783eda439fac7efb0ad5a615d12d2cf3a29464b" +dependencies = [ + "parity-scale-codec", + "primitive-types 0.13.1", + "scale-bits", + "scale-encode-derive", + "scale-type-resolver", + "smallvec", + "thiserror 2.0.14", +] + +[[package]] +name = "scale-encode-derive" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78a3993a13b4eafa89350604672c8757b7ea84c7c5947d4b3691e3169c96379b" +dependencies = [ + "darling", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "scale-info" +version = "2.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" +dependencies = [ + "bitvec", + "cfg-if", + "derive_more 1.0.0", + "parity-scale-codec", + "scale-info-derive", + "schemars", + "serde", +] + +[[package]] +name = "scale-info-derive" +version = "2.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "scale-type-resolver" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0cded6518aa0bd6c1be2b88ac81bf7044992f0f154bfbabd5ad34f43512abcb" +dependencies = [ + "scale-info", + "smallvec", +] + +[[package]] +name = "scale-value" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca8b26b451ecb7fd7b62b259fa28add63d12ec49bbcac0e01fcb4b5ae0c09aa" +dependencies = [ + "either", + "parity-scale-codec", + "scale-bits", + "scale-decode", + "scale-encode", + "scale-type-resolver", + "thiserror 2.0.14", +] + +[[package]] +name = "schemars" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" +dependencies = [ + "dyn-clone", + "schemars_derive", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.104", +] + +[[package]] +name = "schnellru" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "356285bbf17bea63d9e52e96bd18f039672ac92b55b8cb997d6162a2a37d1649" +dependencies = [ + "ahash", + "cfg-if", + "hashbrown 0.13.2", +] + +[[package]] +name = "schnorrkel" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e9fcb6c2e176e86ec703e22560d99d65a5ee9056ae45a08e13e84ebf796296f" +dependencies = [ + "aead", + "arrayref", + "arrayvec", + "curve25519-dalek", + "getrandom_or_panic", + "merlin", + "rand_core 0.6.4", + "serde_bytes", + "sha2 0.10.9", + "subtle", + "zeroize", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scrypt" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0516a385866c09368f0b5bcd1caff3366aace790fcd46e2bb032697bb172fd1f" +dependencies = [ + "password-hash", + "pbkdf2", + "salsa20", + "sha2 0.10.9", +] + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "serdect", + "subtle", + "zeroize", +] + +[[package]] +name = "secp256k1" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f" +dependencies = [ + "secp256k1-sys 0.8.2", +] + +[[package]] +name = "secp256k1" +version = "0.28.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24b59d129cdadea20aea4fb2352fa053712e5d713eee47d700cd4b2bc002f10" +dependencies = [ + "secp256k1-sys 0.9.2", +] + +[[package]] +name = "secp256k1" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" +dependencies = [ + "bitcoin_hashes 0.14.0", + "rand 0.8.5", + "secp256k1-sys 0.10.1", +] + +[[package]] +name = "secp256k1-sys" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4473013577ec77b4ee3668179ef1186df3146e2cf2d927bd200974c6fe60fd99" +dependencies = [ + "cc", +] + +[[package]] +name = "secp256k1-sys" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d1746aae42c19d583c3c1a8c646bfad910498e2051c551a7f2e3c0c9fbb7eb" +dependencies = [ + "cc", +] + +[[package]] +name = "secp256k1-sys" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" +dependencies = [ + "cc", +] + +[[package]] +name = "secrecy" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91e" +dependencies = [ + "zeroize", +] + +[[package]] +name = "secrecy" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e891af845473308773346dc847b2c23ee78fe442e0472ac50e22a18a93d3ae5a" +dependencies = [ + "zeroize", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +dependencies = [ + "serde", +] + +[[package]] +name = "semver-parser" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" +dependencies = [ + "pest", +] + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_bytes" +version = "0.11.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8437fd221bde2d4ca316d61b90e337e9e702b3820b87d63caa9ba6c02bd06d96" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "serde_json" +version = "1.0.142" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "030fedb782600dcbd6f02d479bf0d817ac3bb40d644745b769d6a96bc3afc5a7" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + +[[package]] +name = "serdect" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" +dependencies = [ + "base16ct", + "serde", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "sha3-asm" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" +dependencies = [ + "cc", + "cfg-if", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest 0.10.7", + "rand_core 0.6.4", +] + +[[package]] +name = "simba" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3a386a501cd104797982c15ae17aafe8b9261315b5d07e3ec803f2ea26be0fa" +dependencies = [ + "approx", + "num-complex", + "num-traits", + "paste", + "wide", +] + +[[package]] +name = "simple-mermaid" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "620a1d43d70e142b1d46a929af51d44f383db9c7a2ec122de2cd992ccfcf3c18" + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[package]] +name = "slice-group-by" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "sp-api" +version = "26.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "docify", + "hash-db", + "log", + "parity-scale-codec", + "scale-info", + "sp-api-proc-macro", + "sp-core", + "sp-externalities", + "sp-metadata-ir", + "sp-runtime", + "sp-runtime-interface", + "sp-state-machine", + "sp-trie", + "sp-version", + "thiserror 1.0.69", +] + +[[package]] +name = "sp-api-proc-macro" +version = "15.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "Inflector", + "blake2", + "expander", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "sp-application-crypto" +version = "30.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde", + "sp-core", + "sp-io", +] + +[[package]] +name = "sp-arithmetic" +version = "23.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "docify", + "integer-sqrt", + "num-traits", + "parity-scale-codec", + "scale-info", + "serde", + "static_assertions", +] + +[[package]] +name = "sp-consensus-aura" +version = "0.32.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "async-trait", + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-application-crypto", + "sp-consensus-slots", + "sp-inherents", + "sp-runtime", + "sp-timestamp", +] + +[[package]] +name = "sp-consensus-babe" +version = "0.32.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "async-trait", + "parity-scale-codec", + "scale-info", + "serde", + "sp-api", + "sp-application-crypto", + "sp-consensus-slots", + "sp-core", + "sp-inherents", + "sp-runtime", + "sp-timestamp", +] + +[[package]] +name = "sp-consensus-slots" +version = "0.32.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde", + "sp-timestamp", +] + +[[package]] +name = "sp-core" +version = "28.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "ark-vrf", + "array-bytes", + "bitflags 1.3.2", + "blake2", + "bounded-collections", + "bs58", + "dyn-clone", + "ed25519-zebra", + "futures", + "hash-db", + "hash256-std-hasher", + "impl-serde", + "itertools 0.11.0", + "k256", + "libsecp256k1", + "log", + "merlin", + "parity-bip39", + "parity-scale-codec", + "parking_lot", + "paste", + "primitive-types 0.13.1", + "rand 0.8.5", + "scale-info", + "schnorrkel", + "secp256k1 0.28.2", + "secrecy 0.8.0", + "serde", + "sha2 0.10.9", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4)", + "sp-debug-derive", + "sp-externalities", + "sp-runtime-interface", + "sp-std", + "sp-storage", + "ss58-registry", + "substrate-bip39", + "thiserror 1.0.69", + "tracing", + "w3f-bls", + "zeroize", +] + +[[package]] +name = "sp-crypto-hashing" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc9927a7f81334ed5b8a98a4a978c81324d12bd9713ec76b5c68fd410174c5eb" +dependencies = [ + "blake2b_simd", + "byteorder", + "digest 0.10.7", + "sha2 0.10.9", + "sha3", + "twox-hash", +] + +[[package]] +name = "sp-crypto-hashing" +version = "0.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "blake2b_simd", + "byteorder", + "digest 0.10.7", + "sha2 0.10.9", + "sha3", + "twox-hash", +] + +[[package]] +name = "sp-crypto-hashing-proc-macro" +version = "0.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "quote", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4)", + "syn 2.0.104", +] + +[[package]] +name = "sp-debug-derive" +version = "14.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "sp-externalities" +version = "0.25.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "environmental", + "parity-scale-codec", + "sp-storage", +] + +[[package]] +name = "sp-genesis-builder" +version = "0.8.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde_json", + "sp-api", + "sp-runtime", +] + +[[package]] +name = "sp-inherents" +version = "26.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "async-trait", + "impl-trait-for-tuples", + "parity-scale-codec", + "scale-info", + "sp-runtime", + "thiserror 1.0.69", +] + +[[package]] +name = "sp-io" +version = "30.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "bytes", + "docify", + "ed25519-dalek", + "libsecp256k1", + "log", + "parity-scale-codec", + "polkavm-derive", + "rustversion", + "secp256k1 0.28.2", + "sp-core", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4)", + "sp-externalities", + "sp-keystore", + "sp-runtime-interface", + "sp-state-machine", + "sp-tracing", + "sp-trie", + "tracing", + "tracing-core", +] + +[[package]] +name = "sp-keystore" +version = "0.34.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "parity-scale-codec", + "parking_lot", + "sp-core", + "sp-externalities", +] + +[[package]] +name = "sp-metadata-ir" +version = "0.6.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "frame-metadata 23.0.0", + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "sp-panic-handler" +version = "13.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "backtrace", + "regex", +] + +[[package]] +name = "sp-runtime" +version = "31.0.1" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "binary-merkle-tree", + "docify", + "either", + "hash256-std-hasher", + "impl-trait-for-tuples", + "log", + "num-traits", + "parity-scale-codec", + "paste", + "rand 0.8.5", + "scale-info", + "serde", + "simple-mermaid", + "sp-application-crypto", + "sp-arithmetic", + "sp-core", + "sp-io", + "sp-std", + "sp-trie", + "sp-weights", + "tracing", + "tuplex", +] + +[[package]] +name = "sp-runtime-interface" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "bytes", + "impl-trait-for-tuples", + "parity-scale-codec", + "polkavm-derive", + "primitive-types 0.13.1", + "sp-externalities", + "sp-runtime-interface-proc-macro", + "sp-std", + "sp-storage", + "sp-tracing", + "sp-wasm-interface", + "static_assertions", +] + +[[package]] +name = "sp-runtime-interface-proc-macro" +version = "17.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "Inflector", + "expander", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "sp-staking" +version = "26.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "impl-trait-for-tuples", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core", + "sp-runtime", +] + +[[package]] +name = "sp-state-machine" +version = "0.35.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "hash-db", + "log", + "parity-scale-codec", + "parking_lot", + "rand 0.8.5", + "smallvec", + "sp-core", + "sp-externalities", + "sp-panic-handler", + "sp-trie", + "thiserror 1.0.69", + "tracing", + "trie-db", +] + +[[package]] +name = "sp-std" +version = "14.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" + +[[package]] +name = "sp-storage" +version = "19.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "impl-serde", + "parity-scale-codec", + "ref-cast", + "serde", + "sp-debug-derive", +] + +[[package]] +name = "sp-timestamp" +version = "26.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "async-trait", + "parity-scale-codec", + "sp-inherents", + "sp-runtime", + "thiserror 1.0.69", +] + +[[package]] +name = "sp-tracing" +version = "16.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "parity-scale-codec", + "regex", + "tracing", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "sp-trie" +version = "29.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "ahash", + "hash-db", + "memory-db", + "nohash-hasher", + "parity-scale-codec", + "parking_lot", + "rand 0.8.5", + "scale-info", + "schnellru", + "sp-core", + "sp-externalities", + "substrate-prometheus-endpoint", + "thiserror 1.0.69", + "tracing", + "trie-db", + "trie-root", +] + +[[package]] +name = "sp-version" +version = "29.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "impl-serde", + "parity-scale-codec", + "parity-wasm", + "scale-info", + "serde", + "sp-crypto-hashing-proc-macro", + "sp-runtime", + "sp-std", + "sp-version-proc-macro", + "thiserror 1.0.69", +] + +[[package]] +name = "sp-version-proc-macro" +version = "13.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "parity-scale-codec", + "proc-macro-warning", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "sp-wasm-interface" +version = "20.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "anyhow", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", +] + +[[package]] +name = "sp-weights" +version = "27.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "bounded-collections", + "parity-scale-codec", + "scale-info", + "serde", + "smallvec", + "sp-arithmetic", + "sp-debug-derive", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "ss58-registry" +version = "1.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19409f13998e55816d1c728395af0b52ec066206341d939e22e7766df9b494b8" +dependencies = [ + "Inflector", + "num-format", + "proc-macro2", + "quote", + "serde", + "serde_json", + "unicode-xid", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "staging-xcm" +version = "7.0.1" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "array-bytes", + "bounded-collections", + "derive-where", + "environmental", + "frame-support", + "hex-literal 0.4.1", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "scale-info", + "serde", + "sp-runtime", + "sp-weights", + "xcm-procedural", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "substrate-bip39" +version = "0.4.7" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "hmac", + "pbkdf2", + "schnorrkel", + "sha2 0.10.9", + "zeroize", +] + +[[package]] +name = "substrate-bn" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b5bbfa79abbae15dd642ea8176a21a635ff3c00059961d1ea27ad04e5b441c" +dependencies = [ + "byteorder", + "crunchy", + "lazy_static", + "rand 0.8.5", + "rustc-hex", +] + +[[package]] +name = "substrate-prometheus-endpoint" +version = "0.17.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "http-body-util", + "hyper", + "hyper-util", + "log", + "prometheus", + "thiserror 1.0.69", + "tokio", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "subxt-core" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66ef00be9d64885ec94e478a58e4e39d222024b20013ae7df4fc6ece545391aa" +dependencies = [ + "base58", + "blake2", + "derive-where", + "frame-decode", + "frame-metadata 20.0.0", + "hashbrown 0.14.5", + "hex", + "impl-serde", + "keccak-hash", + "parity-scale-codec", + "primitive-types 0.13.1", + "scale-bits", + "scale-decode", + "scale-encode", + "scale-info", + "scale-value", + "serde", + "serde_json", + "sp-crypto-hashing 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "subxt-metadata", + "thiserror 2.0.14", + "tracing", +] + +[[package]] +name = "subxt-metadata" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fff4591673600c4388e21305788282414d26c791b4dee21b7cb0b19c10076f98" +dependencies = [ + "frame-decode", + "frame-metadata 20.0.0", + "hashbrown 0.14.5", + "parity-scale-codec", + "scale-info", + "sp-crypto-hashing 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 2.0.14", +] + +[[package]] +name = "subxt-signer" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a2370298a210ed1df26152db7209a85e0ed8cfbce035309c3b37f7b61755377" +dependencies = [ + "base64", + "bip32", + "bip39", + "cfg-if", + "crypto_secretbox", + "hex", + "hmac", + "keccak-hash", + "parity-scale-codec", + "pbkdf2", + "regex", + "schnorrkel", + "scrypt", + "secp256k1 0.30.0", + "secrecy 0.10.3", + "serde", + "serde_json", + "sha2 0.10.9", + "sp-crypto-hashing 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "subxt-core", + "thiserror 2.0.14", + "zeroize", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn-solidity" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a985ff4ffd7373e10e0fb048110fb11a162e5a4c47f92ddb8787a6f766b769" +dependencies = [ + "paste", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tempfile" +version = "3.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +dependencies = [ + "fastrand", + "getrandom 0.3.3", + "once_cell", + "rustix", + "windows-sys 0.59.0", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b0949c3a6c842cbde3f1686d6eea5a010516deb7085f79db747562d4102f41e" +dependencies = [ + "thiserror-impl 2.0.14", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc5b44b4ab9c2fdd0e0512e6bece8388e214c0749f5862b114cc5b7a25daf227" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "thread_local" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "time" +version = "0.3.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" + +[[package]] +name = "time-macros" +version = "0.2.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinyvec" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.47.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" +dependencies = [ + "backtrace", + "bytes", + "io-uring", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "slab", + "socket2", + "windows-sys 0.59.0", +] + +[[package]] +name = "tokio-util" +version = "0.7.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.22.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "toml_write", + "winnow", +] + +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "time", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "trie-db" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c0670ab45a6b7002c7df369fee950a27cf29ae0474343fd3a15aa15f691e7a6" +dependencies = [ + "hash-db", + "log", + "rustc-hex", + "smallvec", +] + +[[package]] +name = "trie-root" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4ed310ef5ab98f5fa467900ed906cb9232dd5376597e00fd4cba2a449d06c0b" +dependencies = [ + "hash-db", +] + +[[package]] +name = "tt-call" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f195fd851901624eee5a58c4bb2b4f06399148fcd0ed336e6f1cb60a9881df" + +[[package]] +name = "tuplex" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "676ac81d5454c4dcf37955d34fa8626ede3490f744b86ca14a7b90168d2a08aa" + +[[package]] +name = "twox-hash" +version = "1.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" +dependencies = [ + "cfg-if", + "digest 0.10.7", + "rand 0.8.5", + "static_assertions", +] + +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "ucd-trie" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "uint" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "909988d098b2f738727b161a106cfc7cab00c539c2687a8836f8e565976fb53e" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "universal-hash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +dependencies = [ + "crypto-common", + "subtle", +] + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "w3f-bls" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6bfb937b3d12077654a9e43e32a4e9c20177dd9fea0f3aba673e7840bb54f32" +dependencies = [ + "ark-bls12-377", + "ark-bls12-381 0.4.0", + "ark-ec 0.4.2", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-serialize-derive 0.4.2", + "arrayref", + "digest 0.10.7", + "rand 0.8.5", + "rand_chacha 0.3.1", + "rand_core 0.6.4", + "sha2 0.10.9", + "sha3", + "zeroize", +] + +[[package]] +name = "w3f-pcs" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbe7a8d5c914b69392ab3b267f679a2e546fe29afaddce47981772ac71bd02e1" +dependencies = [ + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-poly 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "merlin", +] + +[[package]] +name = "w3f-plonk-common" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aca389e494fe08c5c108b512e2328309036ee1c0bc7bdfdb743fef54d448c8c" +dependencies = [ + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-poly 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "getrandom_or_panic", + "rand_core 0.6.4", + "w3f-pcs", +] + +[[package]] +name = "w3f-ring-proof" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a639379402ad51504575dbd258740383291ac8147d3b15859bdf1ea48c677de" +dependencies = [ + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-poly 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "ark-transcript", + "w3f-pcs", + "w3f-plonk-common", +] + +[[package]] +name = "wait-timeout" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" +dependencies = [ + "libc", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + +[[package]] +name = "wide" +version = "0.7.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce5da8ecb62bcd8ec8b7ea19f69a51275e91299be594ea5cc6ef7819e16cd03" +dependencies = [ + "bytemuck", + "safe_arch", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.3", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + +[[package]] +name = "winnow" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95" +dependencies = [ + "memchr", +] + +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags 2.9.1", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "xcm-procedural" +version = "7.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "Inflector", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "xxhash-rust" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" + +[[package]] +name = "zerocopy" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] diff --git a/pop-api-vnext/integration-tests/contracts/fungibles/Cargo.toml b/pop-api-vnext/integration-tests/contracts/fungibles/Cargo.toml new file mode 100644 index 000000000..f59e36257 --- /dev/null +++ b/pop-api-vnext/integration-tests/contracts/fungibles/Cargo.toml @@ -0,0 +1,30 @@ +[package] +authors = [ "R0GUE " ] +edition = "2021" +name = "fungibles" +version = "0.1.0" + +# ink! abi required for multiple constructors (fungibles) +[package.metadata.ink-lang] +abi = "all" + +[workspace] + +[dependencies] +ink = { git = "https://github.com/use-ink/ink", tag = "v6.0.0-alpha.1", default-features = false, features = [ "unstable-hostfn" ] } +pop-api = { path = "../../../../pop-api-vnext", default-features = false, features = [ "fungibles" ] } + +[dev-dependencies] +scale-info = { version = "2" } + +[lib] +path = "lib.rs" + +[features] +default = [ "std" ] +ink-as-dependency = [ ] +std = [ "ink/std", "pop-api/std" ] + +[lints.rust.unexpected_cfgs] +check-cfg = [ 'cfg(ink_abi, values("ink", "sol", "all"))' ] +level = "warn" diff --git a/pop-api-vnext/integration-tests/contracts/fungibles/lib.rs b/pop-api-vnext/integration-tests/contracts/fungibles/lib.rs new file mode 100644 index 000000000..f690162f5 --- /dev/null +++ b/pop-api-vnext/integration-tests/contracts/fungibles/lib.rs @@ -0,0 +1,164 @@ +#![cfg_attr(not(feature = "std"), no_std, no_main)] + +use ink::{prelude::string::String, U256}; +use pop_api::fungibles::{self as api, Error, *}; + +#[ink::contract] +pub mod fungibles { + + use super::*; + + #[ink(storage)] + pub struct Fungible; + + impl Fungible { + #[ink(constructor, default, payable)] + #[allow(clippy::new_without_default)] + pub fn new() -> Self { + Self {} + } + + #[ink(constructor, payable)] + pub fn create(min_balance: U256) -> Result { + let contract = Self {}; + // Account of the contract which will be set to the owner of the fungible token. + let owner = contract.env().address(); + let id = api::create(owner, min_balance)?; + contract.env().emit_event(Created { + id, + creator: contract.env().caller(), + admin: owner, + }); + Ok(contract) + } + } + + impl Fungibles for Fungible { + #[ink(message)] + fn transfer(&self, token: TokenId, to: Address, value: U256) -> Result<(), Error> { + api::transfer(token, to, value)?; + self.env().emit_event(Transfer { from: self.env().address(), to, value }); + Ok(()) + } + + #[ink(message)] + fn transferFrom( + &self, + token: TokenId, + from: Address, + to: Address, + value: U256, + ) -> Result<(), Error> { + api::transfer_from(token, from, to, value)?; + self.env().emit_event(Transfer { from, to, value }); + Ok(()) + } + + #[ink(message)] + fn approve(&self, token: TokenId, spender: Address, value: U256) -> Result<(), Error> { + api::approve(token, spender, value)?; + self.env().emit_event(Approval { owner: self.env().address(), spender, value }); + Ok(()) + } + + #[ink(message)] + fn increaseAllowance( + &self, + token: TokenId, + spender: Address, + value: U256, + ) -> Result { + api::increase_allowance(token, spender, value) + } + + #[ink(message)] + fn decreaseAllowance( + &self, + token: TokenId, + spender: Address, + value: U256, + ) -> Result { + api::decrease_allowance(token, spender, value) + } + + #[ink(message)] + fn create(&self, admin: Address, min_balance: U256) -> Result { + let token = api::create(admin, min_balance)?; + self.env() + .emit_event(Created { id: token, creator: self.env().address(), admin }); + Ok(token) + } + + #[ink(message)] + fn startDestroy(&self, token: TokenId) -> Result<(), Error> { + api::start_destroy(token)?; + self.env().emit_event(DestroyStarted { token }); + Ok(()) + } + + #[ink(message)] + fn setMetadata( + &self, + token: TokenId, + name: String, + symbol: String, + decimals: u8, + ) -> Result<(), Error> { + api::set_metadata(token, name.clone(), symbol.clone(), decimals)?; + self.env().emit_event(MetadataSet { token, name, symbol, decimals }); + Ok(()) + } + + #[ink(message)] + fn clearMetadata(&self, token: TokenId) -> Result<(), Error> { + api::clear_metadata(token)?; + self.env().emit_event(MetadataCleared { token }); + Ok(()) + } + + #[ink(message)] + fn mint(&self, token: TokenId, account: Address, value: U256) -> Result<(), Error> { + api::mint(token, account, value) + } + + #[ink(message)] + fn burn(&self, token: TokenId, account: Address, value: U256) -> Result<(), Error> { + api::burn(token, account, value) + } + + #[ink(message)] + fn totalSupply(&self, token: TokenId) -> U256 { + api::total_supply(token) + } + + #[ink(message)] + fn balanceOf(&self, token: TokenId, owner: Address) -> U256 { + api::balance_of(token, owner) + } + + #[ink(message)] + fn allowance(&self, token: TokenId, owner: Address, spender: Address) -> U256 { + api::allowance(token, owner, spender) + } + + #[ink(message)] + fn name(&self, token: TokenId) -> String { + api::name(token) + } + + #[ink(message)] + fn symbol(&self, token: TokenId) -> String { + api::symbol(token) + } + + #[ink(message)] + fn decimals(&self, token: TokenId) -> u8 { + api::decimals(token) + } + + #[ink(message)] + fn exists(&self, token: TokenId) -> bool { + api::exists(token) + } + } +} diff --git a/pop-api-vnext/integration-tests/contracts/messaging/Cargo.lock b/pop-api-vnext/integration-tests/contracts/messaging/Cargo.lock new file mode 100644 index 000000000..35e839124 --- /dev/null +++ b/pop-api-vnext/integration-tests/contracts/messaging/Cargo.lock @@ -0,0 +1,6039 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aead" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +dependencies = [ + "crypto-common", + "generic-array", +] + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "getrandom 0.3.3", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "alloy-core" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d47400608fc869727ad81dba058d55f97b29ad8b5c5256d9598523df8f356ab6" +dependencies = [ + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-primitives", + "alloy-rlp", + "alloy-sol-types", +] + +[[package]] +name = "alloy-dyn-abi" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9e8a436f0aad7df8bb47f144095fba61202265d9f5f09a70b0e3227881a668e" +dependencies = [ + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-type-parser", + "alloy-sol-types", + "itoa", + "serde", + "serde_json", + "winnow", +] + +[[package]] +name = "alloy-json-abi" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "459f98c6843f208856f338bfb25e65325467f7aff35dfeb0484d0a76e059134b" +dependencies = [ + "alloy-primitives", + "alloy-sol-type-parser", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-primitives" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cfebde8c581a5d37b678d0a48a32decb51efd7a63a08ce2517ddec26db705c8" +dependencies = [ + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more 2.0.1", + "foldhash", + "hashbrown 0.15.5", + "indexmap", + "itoa", + "k256", + "keccak-asm", + "paste", + "proptest", + "rand 0.9.2", + "ruint", + "rustc-hash 2.1.1", + "serde", + "sha3", + "tiny-keccak", +] + +[[package]] +name = "alloy-rlp" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f70d83b765fdc080dbcd4f4db70d8d23fe4761f2f02ebfa9146b833900634b4" +dependencies = [ + "arrayvec", + "bytes", +] + +[[package]] +name = "alloy-sol-macro" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aedac07a10d4c2027817a43cc1f038313fc53c7ac866f7363239971fd01f9f18" +dependencies = [ + "alloy-sol-macro-expander", + "alloy-sol-macro-input", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "alloy-sol-macro-expander" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24f9a598f010f048d8b8226492b6401104f5a5c1273c2869b72af29b48bb4ba9" +dependencies = [ + "alloy-sol-macro-input", + "const-hex", + "heck", + "indexmap", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.104", + "syn-solidity", + "tiny-keccak", +] + +[[package]] +name = "alloy-sol-macro-input" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f494adf9d60e49aa6ce26dfd42c7417aa6d4343cf2ae621f20e4d92a5ad07d85" +dependencies = [ + "const-hex", + "dunce", + "heck", + "macro-string", + "proc-macro2", + "quote", + "syn 2.0.104", + "syn-solidity", +] + +[[package]] +name = "alloy-sol-type-parser" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52db32fbd35a9c0c0e538b58b81ebbae08a51be029e7ad60e08b60481c2ec6c3" +dependencies = [ + "serde", + "winnow", +] + +[[package]] +name = "alloy-sol-types" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a285b46e3e0c177887028278f04cc8262b76fd3b8e0e20e93cea0a58c35f5ac5" +dependencies = [ + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-macro", + "serde", +] + +[[package]] +name = "anyhow" +version = "1.0.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100" + +[[package]] +name = "approx" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "aquamarine" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21cc1548309245035eb18aa7f0967da6bc65587005170c56e6ef2788a4cf3f4e" +dependencies = [ + "include_dir", + "itertools 0.10.5", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "ark-bls12-377" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb00293ba84f51ce3bd026bd0de55899c4e68f0a39a5728cebae3a73ffdc0a4f" +dependencies = [ + "ark-ec 0.4.2", + "ark-ff 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bls12-381" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c775f0d12169cba7aae4caeb547bb6a50781c7449a8aa53793827c9ec4abf488" +dependencies = [ + "ark-ec 0.4.2", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bls12-381" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3df4dcc01ff89867cd86b0da835f23c3f02738353aaee7dde7495af71363b8d5" +dependencies = [ + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", +] + +[[package]] +name = "ark-ec" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" +dependencies = [ + "ark-ff 0.4.2", + "ark-poly 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "hashbrown 0.13.2", + "itertools 0.10.5", + "num-traits", + "zeroize", +] + +[[package]] +name = "ark-ec" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" +dependencies = [ + "ahash", + "ark-ff 0.5.0", + "ark-poly 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe", + "fnv", + "hashbrown 0.15.5", + "itertools 0.13.0", + "num-bigint", + "num-integer", + "num-traits", + "zeroize", +] + +[[package]] +name = "ark-ed-on-bls12-381-bandersnatch" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1786b2e3832f6f0f7c8d62d5d5a282f6952a1ab99981c54cd52b6ac1d8f02df5" +dependencies = [ + "ark-bls12-381 0.5.0", + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-std 0.5.0", +] + +[[package]] +name = "ark-ff" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" +dependencies = [ + "ark-ff-asm 0.3.0", + "ark-ff-macros 0.3.0", + "ark-serialize 0.3.0", + "ark-std 0.3.0", + "derivative", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.3.3", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "digest 0.10.7", + "itertools 0.10.5", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.4.1", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" +dependencies = [ + "ark-ff-asm 0.5.0", + "ark-ff-macros 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "educe", + "itertools 0.13.0", + "num-bigint", + "num-traits", + "paste", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" +dependencies = [ + "quote", + "syn 2.0.104", +] + +[[package]] +name = "ark-ff-macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" +dependencies = [ + "num-bigint", + "num-traits", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "ark-poly" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" +dependencies = [ + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "hashbrown 0.13.2", +] + +[[package]] +name = "ark-poly" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" +dependencies = [ + "ahash", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe", + "fnv", + "hashbrown 0.15.5", +] + +[[package]] +name = "ark-serialize" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" +dependencies = [ + "ark-std 0.3.0", + "digest 0.9.0", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-serialize-derive 0.4.2", + "ark-std 0.4.0", + "digest 0.10.7", + "num-bigint", +] + +[[package]] +name = "ark-serialize" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" +dependencies = [ + "ark-serialize-derive 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "num-bigint", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "ark-std" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "ark-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "ark-transcript" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47c1c928edb9d8ff24cb5dcb7651d3a98494fff3099eee95c2404cd813a9139f" +dependencies = [ + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "digest 0.10.7", + "rand_core 0.6.4", + "sha3", +] + +[[package]] +name = "ark-vrf" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9501da18569b2afe0eb934fb7afd5a247d238b94116155af4dd068f319adfe6d" +dependencies = [ + "ark-bls12-381 0.5.0", + "ark-ec 0.5.0", + "ark-ed-on-bls12-381-bandersnatch", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "digest 0.10.7", + "rand_chacha 0.3.1", + "sha2 0.10.9", + "w3f-ring-proof", + "zeroize", +] + +[[package]] +name = "array-bytes" +version = "6.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5dde061bd34119e902bbb2d9b90c5692635cf59fb91d582c2b68043f1b8293" + +[[package]] +name = "array-init" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d62b7694a562cdf5a74227903507c56ab2cc8bdd1f781ed5cb4cf9c9f810bfc" + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "async-trait" +version = "0.1.88" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "auto_impl" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "backtrace" +version = "0.3.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets 0.52.6", +] + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base58" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6107fe1be6682a68940da878d9e9f5e90ca5745b3dec9fd1bb393c8777d4f581" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64ct" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" + +[[package]] +name = "binary-merkle-tree" +version = "13.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "hash-db", + "log", + "parity-scale-codec", +] + +[[package]] +name = "bip32" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db40d3dfbeab4e031d78c844642fa0caa0b0db11ce1607ac9d2986dff1405c69" +dependencies = [ + "bs58", + "hmac", + "k256", + "rand_core 0.6.4", + "ripemd", + "secp256k1 0.27.0", + "sha2 0.10.9", + "subtle", + "zeroize", +] + +[[package]] +name = "bip39" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d193de1f7487df1914d3a568b772458861d33f9c54249612cc2893d6915054" +dependencies = [ + "bitcoin_hashes 0.13.0", + "serde", + "unicode-normalization", +] + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + +[[package]] +name = "bitcoin-internals" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9425c3bf7089c983facbae04de54513cce73b41c7f9ff8c845b54e7bc64ebbfb" + +[[package]] +name = "bitcoin-io" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b47c4ab7a93edb0c7198c5535ed9b52b63095f4e9b45279c6736cec4b856baf" + +[[package]] +name = "bitcoin_hashes" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1930a4dabfebb8d7d9992db18ebe3ae2876f0a305fab206fd168df931ede293b" +dependencies = [ + "bitcoin-internals", + "hex-conservative 0.1.2", +] + +[[package]] +name = "bitcoin_hashes" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16" +dependencies = [ + "bitcoin-io", + "hex-conservative 0.2.1", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "blake2b_simd" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06e903a20b159e944f91ec8499fe1e55651480c541ea0a584f5d967c49ad9d99" +dependencies = [ + "arrayref", + "arrayvec", + "constant_time_eq", +] + +[[package]] +name = "blake3" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bounded-collections" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dee8eddd066a8825ec5570528e6880471210fd5d88cb6abbe1cfdd51ca249c33" +dependencies = [ + "jam-codec", + "log", + "parity-scale-codec", + "scale-info", + "serde", +] + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "sha2 0.10.9", + "tinyvec", +] + +[[package]] +name = "byte-slice-cast" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" + +[[package]] +name = "bytemuck" +version = "1.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +dependencies = [ + "serde", +] + +[[package]] +name = "camino" +version = "1.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d07aa9a93b00c76f71bc35d598bed923f6d4f3a9ca5c24b7737ae1a292841c0" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" +dependencies = [ + "camino", + "cargo-platform", + "semver 1.0.26", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "cc" +version = "1.2.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2352e5597e9c544d5e6d9c95190d5d27738ade584fa8db0a16e130e5c2b5296e" +dependencies = [ + "shlex", +] + +[[package]] +name = "cfg-expr" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" +dependencies = [ + "smallvec", +] + +[[package]] +name = "cfg-if" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", + "zeroize", +] + +[[package]] +name = "common-path" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2382f75942f4b3be3690fe4f86365e9c853c1587d6ee58212cebf6e2a9ccd101" + +[[package]] +name = "const-hex" +version = "1.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83e22e0ed40b96a48d3db274f72fd365bd78f67af39b6bbd47e8a15e1c6207ff" +dependencies = [ + "cfg-if", + "cpufeatures", + "hex", + "proptest", + "serde", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "const-random" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" +dependencies = [ + "const-random-macro", +] + +[[package]] +name = "const-random-macro" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" +dependencies = [ + "getrandom 0.2.16", + "once_cell", + "tiny-keccak", +] + +[[package]] +name = "const_env" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e9e4f72c6e3398ca6da372abd9affd8f89781fe728869bbf986206e9af9627e" +dependencies = [ + "const_env_impl", +] + +[[package]] +name = "const_env_impl" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a4f51209740b5e1589e702b3044cdd4562cef41b6da404904192ffffb852d62" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "const_format" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" +dependencies = [ + "const_format_proc_macros", + "konst", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "typenum", +] + +[[package]] +name = "crypto_secretbox" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d6cf87adf719ddf43a805e92c6870a531aedda35ff640442cbaf8674e141e1" +dependencies = [ + "aead", + "cipher", + "generic-array", + "poly1305", + "salsa20", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto", + "rustc_version 0.4.1", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "darling" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.104", +] + +[[package]] +name = "darling_macro" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "const-oid", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive-syn-parse" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d65d7ce8132b7c0e54497a4d9a55a1c2a0912a0d786cf894472ba818fba45762" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "derive-where" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef941ded77d15ca19b40374869ac6000af1c9f2a4c0f3d4c70926287e6364a8f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "derive_more" +version = "0.99.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "derive_more" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +dependencies = [ + "derive_more-impl 1.0.0", +] + +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl 2.0.1", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", + "unicode-xid", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + +[[package]] +name = "docify" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a772b62b1837c8f060432ddcc10b17aae1453ef17617a99bc07789252d2a5896" +dependencies = [ + "docify_macros", +] + +[[package]] +name = "docify_macros" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60e6be249b0a462a14784a99b19bf35a667bb5e09de611738bb7362fa4c95ff7" +dependencies = [ + "common-path", + "derive-syn-parse", + "once_cell", + "proc-macro2", + "quote", + "regex", + "syn 2.0.104", + "termcolor", + "toml", + "walkdir", +] + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979", + "serdect", + "signature", + "spki", +] + +[[package]] +name = "ed25519" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +dependencies = [ + "pkcs8", + "signature", +] + +[[package]] +name = "ed25519-dalek" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" +dependencies = [ + "curve25519-dalek", + "ed25519", + "serde", + "sha2 0.10.9", + "subtle", + "zeroize", +] + +[[package]] +name = "ed25519-zebra" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d9ce6874da5d4415896cd45ffbc4d1cfc0c4f9c079427bd870742c30f2f65a9" +dependencies = [ + "curve25519-dalek", + "ed25519", + "hashbrown 0.14.5", + "hex", + "rand_core 0.6.4", + "sha2 0.10.9", + "zeroize", +] + +[[package]] +name = "educe" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest 0.10.7", + "ff", + "generic-array", + "group", + "pkcs8", + "rand_core 0.6.4", + "sec1", + "serdect", + "subtle", + "zeroize", +] + +[[package]] +name = "enum-ordinalize" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5" +dependencies = [ + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "environmental" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48c92028aaa870e83d51c64e5d4e0b6981b360c522198c23959f219a4e1b15b" + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "ethbloom" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c321610643004cf908ec0f5f2aa0d8f1f8e14b540562a2887a1111ff1ecbf7b" +dependencies = [ + "crunchy", + "fixed-hash", + "impl-codec 0.7.1", + "impl-rlp", + "impl-serde", + "scale-info", + "tiny-keccak", +] + +[[package]] +name = "ethereum-standards" +version = "0.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "alloy-core", +] + +[[package]] +name = "ethereum-types" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ab15ed80916029f878e0267c3a9f92b67df55e79af370bf66199059ae2b4ee3" +dependencies = [ + "ethbloom", + "fixed-hash", + "impl-codec 0.7.1", + "impl-rlp", + "impl-serde", + "primitive-types 0.13.1", + "scale-info", + "uint 0.10.0", +] + +[[package]] +name = "expander" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2c470c71d91ecbd179935b24170459e926382eaaa86b590b78814e180d8a8e2" +dependencies = [ + "blake2", + "file-guard", + "fs-err", + "prettyplease", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "fallible-iterator" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fastrlp" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "fastrlp" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce8dba4714ef14b8274c371879b175aa55b16b30f269663f19d576f380018dc4" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "ff" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +dependencies = [ + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + +[[package]] +name = "file-guard" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21ef72acf95ec3d7dbf61275be556299490a245f017cf084bd23b4f68cf9407c" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", + "rand 0.8.5", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "frame-benchmarking" +version = "28.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "frame-support", + "frame-support-procedural", + "frame-system", + "linregress", + "log", + "parity-scale-codec", + "paste", + "scale-info", + "serde", + "sp-api", + "sp-application-crypto", + "sp-core", + "sp-io", + "sp-runtime", + "sp-runtime-interface", + "sp-storage", + "static_assertions", +] + +[[package]] +name = "frame-decode" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7cb8796f93fa038f979a014234d632e9688a120e745f936e2635123c77537f7" +dependencies = [ + "frame-metadata 21.0.0", + "parity-scale-codec", + "scale-decode", + "scale-info", + "scale-type-resolver", + "sp-crypto-hashing 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "frame-metadata" +version = "20.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26de808fa6461f2485dc51811aefed108850064994fb4a62b3ac21ffa62ac8df" +dependencies = [ + "cfg-if", + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "frame-metadata" +version = "21.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20dfd1d7eae1d94e32e869e2fb272d81f52dd8db57820a373adb83ea24d7d862" +dependencies = [ + "cfg-if", + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "frame-metadata" +version = "23.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8c26fcb0454397c522c05fdad5380c4e622f8a875638af33bff5a320d1fc965" +dependencies = [ + "cfg-if", + "parity-scale-codec", + "scale-info", + "serde", +] + +[[package]] +name = "frame-support" +version = "28.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "aquamarine", + "array-bytes", + "binary-merkle-tree", + "bitflags 1.3.2", + "docify", + "environmental", + "frame-metadata 23.0.0", + "frame-support-procedural", + "impl-trait-for-tuples", + "k256", + "log", + "macro_magic", + "parity-scale-codec", + "paste", + "scale-info", + "serde", + "serde_json", + "sp-api", + "sp-arithmetic", + "sp-core", + "sp-crypto-hashing-proc-macro", + "sp-debug-derive", + "sp-genesis-builder", + "sp-inherents", + "sp-io", + "sp-metadata-ir", + "sp-runtime", + "sp-staking", + "sp-state-machine", + "sp-std", + "sp-tracing", + "sp-trie", + "sp-weights", + "tt-call", +] + +[[package]] +name = "frame-support-procedural" +version = "23.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "Inflector", + "cfg-expr", + "derive-syn-parse", + "docify", + "expander", + "frame-support-procedural-tools", + "itertools 0.11.0", + "macro_magic", + "proc-macro-warning", + "proc-macro2", + "quote", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4)", + "syn 2.0.104", +] + +[[package]] +name = "frame-support-procedural-tools" +version = "10.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "frame-support-procedural-tools-derive", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "frame-support-procedural-tools-derive" +version = "11.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "frame-system" +version = "28.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "cfg-if", + "docify", + "frame-support", + "log", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-version", + "sp-weights", +] + +[[package]] +name = "fs-err" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41" +dependencies = [ + "autocfg", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", + "num_cpus", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", +] + +[[package]] +name = "getrandom_or_panic" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea1015b5a70616b688dc230cfe50c8af89d972cb132d5a622814d29773b10b9" +dependencies = [ + "rand 0.8.5", + "rand_core 0.6.4", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +dependencies = [ + "fallible-iterator", + "stable_deref_trait", +] + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "h2" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hash-db" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e7d7786361d7425ae2fe4f9e407eb0efaa0840f5212d109cc018c40c35c6ab4" + +[[package]] +name = "hash256-std-hasher" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92c171d55b98633f4ed3860808f004099b36c1cc29c42cfc53aa8591b21efcf2" +dependencies = [ + "crunchy", +] + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", +] + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", + "serde", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] + +[[package]] +name = "hex-conservative" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212ab92002354b4819390025006c897e8140934349e8635c9b077f47b4dcbd20" + +[[package]] +name = "hex-conservative" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + +[[package]] +name = "hex-literal" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcaaec4551594c969335c98c903c1397853d4198408ea609190f420500f6be71" + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "humantime" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b112acc8b3adf4b107a8ec20977da0273a8c386765a3ec0229bd500a1443f9f" + +[[package]] +name = "humantime-serde" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57a3db5ea5923d99402c94e9feb261dc5ee9b4efa158b0315f788cf549cc200c" +dependencies = [ + "humantime", + "serde", +] + +[[package]] +name = "hyper" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", +] + +[[package]] +name = "hyper-util" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "hyper", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "impl-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-codec" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d40b9d5e17727407e55028eafc22b2dc68781786e6d7eb8a21103f5058e3a14" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-num-traits" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "803d15461ab0dcc56706adf266158acbc44ccf719bf7d0af30705f58b90a4b8c" +dependencies = [ + "integer-sqrt", + "num-traits", + "uint 0.10.0", +] + +[[package]] +name = "impl-rlp" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54ed8ad1f3877f7e775b8cbf30ed1bd3209a95401817f19a0eb4402d13f8cf90" +dependencies = [ + "rlp 0.6.1", +] + +[[package]] +name = "impl-serde" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a143eada6a1ec4aefa5049037a26a6d597bfd64f8c026d07b77133e02b7dd0b" +dependencies = [ + "serde", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "include_dir" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd" +dependencies = [ + "include_dir_macros", +] + +[[package]] +name = "include_dir_macros" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "indexmap" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" +dependencies = [ + "equivalent", + "hashbrown 0.15.5", + "serde", +] + +[[package]] +name = "ink" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "const_format", + "deranged", + "derive_more 2.0.1", + "ink_env", + "ink_macro", + "ink_metadata", + "ink_prelude", + "ink_primitives", + "ink_storage", + "keccak-const", + "linkme", + "pallet-revive-uapi", + "parity-scale-codec", + "polkavm-derive", + "scale-info", + "sp-io", + "sp-runtime-interface", + "staging-xcm", + "tokio", +] + +[[package]] +name = "ink_allocator" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "ink_codegen" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "blake2", + "derive_more 2.0.1", + "either", + "heck", + "impl-serde", + "ink_ir", + "ink_primitives", + "itertools 0.14.0", + "parity-scale-codec", + "polkavm-derive", + "proc-macro2", + "quote", + "serde", + "serde_json", + "syn 2.0.104", +] + +[[package]] +name = "ink_engine" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "blake2", + "derive_more 2.0.1", + "hex-literal 1.0.0", + "ink_primitives", + "pallet-revive", + "pallet-revive-uapi", + "parity-scale-codec", + "secp256k1 0.30.0", + "sha2 0.10.9", + "sha3", +] + +[[package]] +name = "ink_env" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "blake2", + "cfg-if", + "const_env", + "derive_more 2.0.1", + "hex-literal 1.0.0", + "ink_allocator", + "ink_engine", + "ink_prelude", + "ink_primitives", + "ink_storage_traits", + "num-traits", + "pallet-revive", + "pallet-revive-uapi", + "parity-scale-codec", + "polkavm-derive", + "scale-decode", + "scale-encode", + "scale-info", + "schnorrkel", + "secp256k1 0.30.0", + "sha2 0.10.9", + "sha3", + "sp-io", + "sp-runtime-interface", + "staging-xcm", + "static_assertions", +] + +[[package]] +name = "ink_ir" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "blake2", + "either", + "impl-serde", + "ink_prelude", + "itertools 0.14.0", + "proc-macro2", + "quote", + "sha3", + "syn 2.0.104", +] + +[[package]] +name = "ink_macro" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "ink_codegen", + "ink_ir", + "ink_primitives", + "parity-scale-codec", + "proc-macro2", + "quote", + "syn 2.0.104", + "synstructure", +] + +[[package]] +name = "ink_metadata" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "derive_more 2.0.1", + "impl-serde", + "ink_prelude", + "ink_primitives", + "parity-scale-codec", + "scale-info", + "schemars", + "serde", +] + +[[package]] +name = "ink_prelude" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "ink_primitives" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "alloy-sol-types", + "cfg-if", + "derive_more 2.0.1", + "impl-trait-for-tuples", + "ink_prelude", + "itertools 0.14.0", + "num-traits", + "pallet-revive", + "pallet-revive-uapi", + "parity-scale-codec", + "paste", + "primitive-types 0.13.1", + "scale-decode", + "scale-encode", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime-interface", + "sp-weights", + "xxhash-rust", +] + +[[package]] +name = "ink_storage" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "array-init", + "cfg-if", + "derive_more 2.0.1", + "ink_env", + "ink_metadata", + "ink_prelude", + "ink_primitives", + "ink_storage_traits", + "pallet-revive-uapi", + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "ink_storage_traits" +version = "6.0.0-alpha.1" +source = "git+https://github.com/use-ink/ink?tag=v6.0.0-alpha.1#2c228d492543b6f0abef4f942b1826cc253c6fe3" +dependencies = [ + "ink_metadata", + "ink_prelude", + "ink_primitives", + "parity-scale-codec", + "scale-info", + "sp-io", + "sp-runtime-interface", +] + +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "generic-array", +] + +[[package]] +name = "integer-sqrt" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "276ec31bcb4a9ee45f58bec6f9ec700ae4cf4f4f8f2fa7e06cb406bd5ffdd770" +dependencies = [ + "num-traits", +] + +[[package]] +name = "io-uring" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4" +dependencies = [ + "bitflags 2.9.1", + "cfg-if", + "libc", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "jam-codec" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d72f2fb8cfd27f6c52ea7d0528df594f7f2ed006feac153e9393ec567aafea98" +dependencies = [ + "arrayvec", + "bitvec", + "byte-slice-cast", + "const_format", + "impl-trait-for-tuples", + "jam-codec-derive", + "rustversion", + "serde", +] + +[[package]] +name = "jam-codec-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09985146f40378e13af626964ac9c206d9d9b67c40c70805898d9954f709bcf5" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "k256" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "once_cell", + "serdect", + "sha2 0.10.9", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "keccak-asm" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6" +dependencies = [ + "digest 0.10.7", + "sha3-asm", +] + +[[package]] +name = "keccak-const" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57d8d8ce877200136358e0bbff3a77965875db3af755a11e1fa6b1b3e2df13ea" + +[[package]] +name = "keccak-hash" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e1b8590eb6148af2ea2d75f38e7d29f5ca970d5a4df456b3ef19b8b415d0264" +dependencies = [ + "primitive-types 0.13.1", + "tiny-keccak", +] + +[[package]] +name = "konst" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330f0e13e6483b8c34885f7e6c9f19b1a7bd449c673fbb948a51c99d66ef74f4" +dependencies = [ + "konst_macro_rules", +] + +[[package]] +name = "konst_macro_rules" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4933f3f57a8e9d9da04db23fb153356ecaf00cbd14aee46279c33dc80925c37" + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin", +] + +[[package]] +name = "libc" +version = "0.2.175" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" + +[[package]] +name = "libm" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" + +[[package]] +name = "libredox" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" +dependencies = [ + "bitflags 2.9.1", + "libc", +] + +[[package]] +name = "libsecp256k1" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e79019718125edc905a079a70cfa5f3820bc76139fc91d6f9abc27ea2a887139" +dependencies = [ + "arrayref", + "base64", + "digest 0.9.0", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", + "rand 0.8.5", + "serde", + "sha2 0.9.9", +] + +[[package]] +name = "libsecp256k1-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be9b9bb642d8522a44d533eab56c16c738301965504753b03ad1de3425d5451" +dependencies = [ + "crunchy", + "digest 0.9.0", + "subtle", +] + +[[package]] +name = "libsecp256k1-gen-ecmult" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3038c808c55c87e8a172643a7d87187fc6c4174468159cb3090659d55bcb4809" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "libsecp256k1-gen-genmult" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db8d6ba2cec9eacc40e6e8ccc98931840301f1006e95647ceb2dd5c3aa06f7c" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "linkme" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1b1703c00b2a6a70738920544aa51652532cacddfec2e162d2e29eae01e665c" +dependencies = [ + "linkme-impl", +] + +[[package]] +name = "linkme-impl" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04d55ca5d5a14363da83bf3c33874b8feaa34653e760d5216d7ef9829c88001a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "linregress" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9eda9dcf4f2a99787827661f312ac3219292549c2ee992bf9a6248ffb066bf7" +dependencies = [ + "nalgebra", +] + +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + +[[package]] +name = "lock_api" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" + +[[package]] +name = "macro-string" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "macro_magic" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc33f9f0351468d26fbc53d9ce00a096c8522ecb42f19b50f34f2c422f76d21d" +dependencies = [ + "macro_magic_core", + "macro_magic_macros", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "macro_magic_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1687dc887e42f352865a393acae7cf79d98fab6351cde1f58e9e057da89bf150" +dependencies = [ + "const-random", + "derive-syn-parse", + "macro_magic_core_macros", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "macro_magic_core_macros" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b02abfe41815b5bd98dbd4260173db2c116dda171dc0fe7838cb206333b83308" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "macro_magic_macros" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ea28ee64b88876bf45277ed9a5817c1817df061a74f2b988971a12570e5869" +dependencies = [ + "macro_magic_core", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "matrixmultiply" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06de3016e9fae57a36fd14dba131fccf49f74b40b7fbdb472f96e361ec71a08" +dependencies = [ + "autocfg", + "rawpointer", +] + +[[package]] +name = "memchr" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "memory-db" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6da20dba965bd218a14c3b335b90d3e07c09ede190c7c19b50deb23d418a322" +dependencies = [ + "hash-db", + "hashbrown 0.15.5", +] + +[[package]] +name = "merlin" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" +dependencies = [ + "byteorder", + "keccak", + "rand_core 0.6.4", + "zeroize", +] + +[[package]] +name = "messaging" +version = "0.1.0" +dependencies = [ + "ink", + "pop-api", + "scale-info", +] + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +dependencies = [ + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", +] + +[[package]] +name = "nalgebra" +version = "0.33.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26aecdf64b707efd1310e3544d709c5c0ac61c13756046aaaba41be5c4f66a3b" +dependencies = [ + "approx", + "matrixmultiply", + "num-complex", + "num-rational", + "num-traits", + "simba", + "typenum", +] + +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-format" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a652d9771a63711fd3c3deb670acfbe5c30a4072e664d7a3bf5a9e1056ac72c3" +dependencies = [ + "arrayvec", + "itoa", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_cpus" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "pallet-revive" +version = "0.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "alloy-core", + "derive_more 0.99.20", + "environmental", + "ethereum-standards", + "ethereum-types", + "frame-benchmarking", + "frame-support", + "frame-system", + "hex-literal 0.4.1", + "humantime-serde", + "impl-trait-for-tuples", + "log", + "num-bigint", + "num-integer", + "num-traits", + "pallet-revive-fixtures", + "pallet-revive-proc-macro", + "pallet-revive-uapi", + "pallet-transaction-payment", + "parity-scale-codec", + "paste", + "polkavm", + "polkavm-common", + "rand 0.8.5", + "ripemd", + "rlp 0.6.1", + "scale-info", + "serde", + "sp-api", + "sp-arithmetic", + "sp-consensus-aura", + "sp-consensus-babe", + "sp-consensus-slots", + "sp-core", + "sp-io", + "sp-runtime", + "substrate-bn", + "subxt-signer", +] + +[[package]] +name = "pallet-revive-fixtures" +version = "0.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "anyhow", + "cargo_metadata", + "pallet-revive-uapi", + "polkavm-linker", + "sp-core", + "sp-io", + "toml", +] + +[[package]] +name = "pallet-revive-proc-macro" +version = "0.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "pallet-revive-uapi" +version = "0.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "bitflags 1.3.2", + "pallet-revive-proc-macro", + "parity-scale-codec", + "polkavm-derive", + "scale-info", +] + +[[package]] +name = "pallet-transaction-payment" +version = "28.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "serde", + "sp-io", + "sp-runtime", +] + +[[package]] +name = "parity-bip39" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e69bf016dc406eff7d53a7d3f7cf1c2e72c82b9088aac1118591e36dd2cd3e9" +dependencies = [ + "bitcoin_hashes 0.13.0", + "rand 0.8.5", + "rand_core 0.6.4", + "serde", + "unicode-normalization", +] + +[[package]] +name = "parity-scale-codec" +version = "3.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" +dependencies = [ + "arrayvec", + "bitvec", + "byte-slice-cast", + "bytes", + "const_format", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "rustversion", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "parity-wasm" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1ad0aff30c1da14b1254fcb2af73e1fa9a28670e584a626f53a369d0e157304" + +[[package]] +name = "parking_lot" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "password-hash" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166" +dependencies = [ + "base64ct", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pbkdf2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest 0.10.7", + "hmac", + "password-hash", +] + +[[package]] +name = "pest" +version = "2.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1db05f56d34358a8b1066f67cbb203ee3e7ed2ba674a6263a1d5ec6db2204323" +dependencies = [ + "memchr", + "thiserror 2.0.14", + "ucd-trie", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "polkavm" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa028f713d0613f0f08b8b3367402cb859218854f6b96fcbe39a501862894d6f" +dependencies = [ + "libc", + "log", + "polkavm-assembler", + "polkavm-common", + "polkavm-linux-raw", +] + +[[package]] +name = "polkavm-assembler" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4859a29e1f4ad64610c4bc2bfc40bb9a535068a034933a5b56b5e7a0febf105a" +dependencies = [ + "log", +] + +[[package]] +name = "polkavm-common" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49a5794b695626ba70d29e66e3f4f4835767452a6723f3a0bc20884b07088fe8" +dependencies = [ + "blake3", + "log", + "polkavm-assembler", +] + +[[package]] +name = "polkavm-derive" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95282a203ae1f6828a04ff334145c3f6dc718bba6d3959805d273358b45eab93" +dependencies = [ + "polkavm-derive-impl-macro", +] + +[[package]] +name = "polkavm-derive-impl" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6069dc7995cde6e612b868a02ce48b54397c6d2582bd1b97b63aabbe962cd779" +dependencies = [ + "polkavm-common", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "polkavm-derive-impl-macro" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581d34cafec741dc5ffafbb341933c205b6457f3d76257a9d99fb56687219c91" +dependencies = [ + "polkavm-derive-impl", + "syn 2.0.104", +] + +[[package]] +name = "polkavm-linker" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "beb896023e5bd89bba40311797d8d42490fa4a1fd5256c74820753c5722d1e67" +dependencies = [ + "dirs", + "gimli", + "hashbrown 0.14.5", + "log", + "object", + "polkavm-common", + "regalloc2", + "rustc-demangle", +] + +[[package]] +name = "polkavm-linux-raw" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28919f542476f4158cc71e6c072b1051f38f4b514253594ac3ad80e3c0211fc8" + +[[package]] +name = "poly1305" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +dependencies = [ + "cpufeatures", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "pop-api" +version = "0.1.0" +dependencies = [ + "base64", + "ink", + "pop-primitives", +] + +[[package]] +name = "pop-primitives" +version = "0.0.0" +dependencies = [ + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "prettyplease" +version = "0.2.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff24dfcda44452b9816fff4cd4227e1bb73ff5a2f1bc1105aa92fb8565ce44d2" +dependencies = [ + "proc-macro2", + "syn 2.0.104", +] + +[[package]] +name = "primitive-types" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" +dependencies = [ + "fixed-hash", + "impl-codec 0.6.0", + "uint 0.9.5", +] + +[[package]] +name = "primitive-types" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d15600a7d856470b7d278b3fe0e311fe28c2526348549f8ef2ff7db3299c87f5" +dependencies = [ + "fixed-hash", + "impl-codec 0.7.1", + "impl-num-traits", + "impl-rlp", + "impl-serde", + "scale-info", + "uint 0.10.0", +] + +[[package]] +name = "proc-macro-crate" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "proc-macro-warning" +version = "1.84.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75eea531cfcd120e0851a3f8aed42c4841f78c889eefafd96339c72677ae42c3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "proc-macro2" +version = "1.0.97" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d61789d7719defeb74ea5fe81f2fdfdbd28a803847077cecce2ff14e1472f6f1" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "prometheus" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d33c28a30771f7f96db69893f78b857f7450d7e0237e9c8fc6427a81bae7ed1" +dependencies = [ + "cfg-if", + "fnv", + "lazy_static", + "memchr", + "parking_lot", + "thiserror 1.0.69", +] + +[[package]] +name = "proptest" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fcdab19deb5195a31cf7726a210015ff1496ba1464fd42cb4f537b8b01b471f" +dependencies = [ + "bit-set", + "bit-vec", + "bitflags 2.9.1", + "lazy_static", + "num-traits", + "rand 0.9.2", + "rand_chacha 0.9.0", + "rand_xorshift", + "regex-syntax 0.8.5", + "rusty-fork", + "tempfile", + "unarray", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", + "serde", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.16", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.3", + "serde", +] + +[[package]] +name = "rand_xorshift" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" +dependencies = [ + "rand_core 0.9.3", +] + +[[package]] +name = "rawpointer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" + +[[package]] +name = "redox_syscall" +version = "0.5.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" +dependencies = [ + "bitflags 2.9.1", +] + +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom 0.2.16", + "libredox", + "thiserror 1.0.69", +] + +[[package]] +name = "ref-cast" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "regalloc2" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad156d539c879b7a24a363a2016d77961786e71f48f2e2fc8302a92abd2429a6" +dependencies = [ + "hashbrown 0.13.2", + "log", + "rustc-hash 1.1.0", + "slice-group-by", + "smallvec", +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + +[[package]] +name = "ripemd" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "rlp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +dependencies = [ + "bytes", + "rustc-hex", +] + +[[package]] +name = "rlp" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa24e92bb2a83198bb76d661a71df9f7076b8c420b8696e4d3d97d50d94479e3" +dependencies = [ + "bytes", + "rustc-hex", +] + +[[package]] +name = "ruint" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ecb38f82477f20c5c3d62ef52d7c4e536e38ea9b73fb570a20c5cae0e14bcf6" +dependencies = [ + "alloy-rlp", + "ark-ff 0.3.0", + "ark-ff 0.4.2", + "bytes", + "fastrlp 0.3.1", + "fastrlp 0.4.0", + "num-bigint", + "num-integer", + "num-traits", + "parity-scale-codec", + "primitive-types 0.12.2", + "proptest", + "rand 0.8.5", + "rand 0.9.2", + "rlp 0.5.2", + "ruint-macro", + "serde", + "valuable", + "zeroize", +] + +[[package]] +name = "ruint-macro" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" + +[[package]] +name = "rustc-demangle" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver 1.0.26", +] + +[[package]] +name = "rustix" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" +dependencies = [ + "bitflags 2.9.1", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.60.2", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "rusty-fork" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "safe_arch" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96b02de82ddbe1b636e6170c21be622223aea188ef2e139be0a5b219ec215323" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "salsa20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +dependencies = [ + "cipher", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scale-bits" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27243ab0d2d6235072b017839c5f0cd1a3b1ce45c0f7a715363b0c7d36c76c94" +dependencies = [ + "parity-scale-codec", + "scale-info", + "scale-type-resolver", + "serde", +] + +[[package]] +name = "scale-decode" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d78196772d25b90a98046794ce0fe2588b39ebdfbdc1e45b4c6c85dd43bebad" +dependencies = [ + "parity-scale-codec", + "primitive-types 0.13.1", + "scale-bits", + "scale-decode-derive", + "scale-type-resolver", + "smallvec", + "thiserror 2.0.14", +] + +[[package]] +name = "scale-decode-derive" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f4b54a1211260718b92832b661025d1f1a4b6930fbadd6908e00edd265fa5f7" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "scale-encode" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64901733157f9d25ef86843bd783eda439fac7efb0ad5a615d12d2cf3a29464b" +dependencies = [ + "parity-scale-codec", + "primitive-types 0.13.1", + "scale-bits", + "scale-encode-derive", + "scale-type-resolver", + "smallvec", + "thiserror 2.0.14", +] + +[[package]] +name = "scale-encode-derive" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78a3993a13b4eafa89350604672c8757b7ea84c7c5947d4b3691e3169c96379b" +dependencies = [ + "darling", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "scale-info" +version = "2.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" +dependencies = [ + "bitvec", + "cfg-if", + "derive_more 1.0.0", + "parity-scale-codec", + "scale-info-derive", + "schemars", + "serde", +] + +[[package]] +name = "scale-info-derive" +version = "2.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "scale-type-resolver" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0cded6518aa0bd6c1be2b88ac81bf7044992f0f154bfbabd5ad34f43512abcb" +dependencies = [ + "scale-info", + "smallvec", +] + +[[package]] +name = "scale-value" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca8b26b451ecb7fd7b62b259fa28add63d12ec49bbcac0e01fcb4b5ae0c09aa" +dependencies = [ + "either", + "parity-scale-codec", + "scale-bits", + "scale-decode", + "scale-encode", + "scale-type-resolver", + "thiserror 2.0.14", +] + +[[package]] +name = "schemars" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" +dependencies = [ + "dyn-clone", + "schemars_derive", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.104", +] + +[[package]] +name = "schnellru" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "356285bbf17bea63d9e52e96bd18f039672ac92b55b8cb997d6162a2a37d1649" +dependencies = [ + "ahash", + "cfg-if", + "hashbrown 0.13.2", +] + +[[package]] +name = "schnorrkel" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e9fcb6c2e176e86ec703e22560d99d65a5ee9056ae45a08e13e84ebf796296f" +dependencies = [ + "aead", + "arrayref", + "arrayvec", + "curve25519-dalek", + "getrandom_or_panic", + "merlin", + "rand_core 0.6.4", + "serde_bytes", + "sha2 0.10.9", + "subtle", + "zeroize", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scrypt" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0516a385866c09368f0b5bcd1caff3366aace790fcd46e2bb032697bb172fd1f" +dependencies = [ + "password-hash", + "pbkdf2", + "salsa20", + "sha2 0.10.9", +] + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "serdect", + "subtle", + "zeroize", +] + +[[package]] +name = "secp256k1" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f" +dependencies = [ + "secp256k1-sys 0.8.2", +] + +[[package]] +name = "secp256k1" +version = "0.28.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24b59d129cdadea20aea4fb2352fa053712e5d713eee47d700cd4b2bc002f10" +dependencies = [ + "secp256k1-sys 0.9.2", +] + +[[package]] +name = "secp256k1" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" +dependencies = [ + "bitcoin_hashes 0.14.0", + "rand 0.8.5", + "secp256k1-sys 0.10.1", +] + +[[package]] +name = "secp256k1-sys" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4473013577ec77b4ee3668179ef1186df3146e2cf2d927bd200974c6fe60fd99" +dependencies = [ + "cc", +] + +[[package]] +name = "secp256k1-sys" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d1746aae42c19d583c3c1a8c646bfad910498e2051c551a7f2e3c0c9fbb7eb" +dependencies = [ + "cc", +] + +[[package]] +name = "secp256k1-sys" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" +dependencies = [ + "cc", +] + +[[package]] +name = "secrecy" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91e" +dependencies = [ + "zeroize", +] + +[[package]] +name = "secrecy" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e891af845473308773346dc847b2c23ee78fe442e0472ac50e22a18a93d3ae5a" +dependencies = [ + "zeroize", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +dependencies = [ + "serde", +] + +[[package]] +name = "semver-parser" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" +dependencies = [ + "pest", +] + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_bytes" +version = "0.11.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8437fd221bde2d4ca316d61b90e337e9e702b3820b87d63caa9ba6c02bd06d96" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "serde_json" +version = "1.0.142" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "030fedb782600dcbd6f02d479bf0d817ac3bb40d644745b769d6a96bc3afc5a7" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + +[[package]] +name = "serdect" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" +dependencies = [ + "base16ct", + "serde", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "sha3-asm" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" +dependencies = [ + "cc", + "cfg-if", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest 0.10.7", + "rand_core 0.6.4", +] + +[[package]] +name = "simba" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3a386a501cd104797982c15ae17aafe8b9261315b5d07e3ec803f2ea26be0fa" +dependencies = [ + "approx", + "num-complex", + "num-traits", + "paste", + "wide", +] + +[[package]] +name = "simple-mermaid" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "620a1d43d70e142b1d46a929af51d44f383db9c7a2ec122de2cd992ccfcf3c18" + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[package]] +name = "slice-group-by" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "sp-api" +version = "26.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "docify", + "hash-db", + "log", + "parity-scale-codec", + "scale-info", + "sp-api-proc-macro", + "sp-core", + "sp-externalities", + "sp-metadata-ir", + "sp-runtime", + "sp-runtime-interface", + "sp-state-machine", + "sp-trie", + "sp-version", + "thiserror 1.0.69", +] + +[[package]] +name = "sp-api-proc-macro" +version = "15.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "Inflector", + "blake2", + "expander", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "sp-application-crypto" +version = "30.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde", + "sp-core", + "sp-io", +] + +[[package]] +name = "sp-arithmetic" +version = "23.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "docify", + "integer-sqrt", + "num-traits", + "parity-scale-codec", + "scale-info", + "serde", + "static_assertions", +] + +[[package]] +name = "sp-consensus-aura" +version = "0.32.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "async-trait", + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-application-crypto", + "sp-consensus-slots", + "sp-inherents", + "sp-runtime", + "sp-timestamp", +] + +[[package]] +name = "sp-consensus-babe" +version = "0.32.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "async-trait", + "parity-scale-codec", + "scale-info", + "serde", + "sp-api", + "sp-application-crypto", + "sp-consensus-slots", + "sp-core", + "sp-inherents", + "sp-runtime", + "sp-timestamp", +] + +[[package]] +name = "sp-consensus-slots" +version = "0.32.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde", + "sp-timestamp", +] + +[[package]] +name = "sp-core" +version = "28.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "ark-vrf", + "array-bytes", + "bitflags 1.3.2", + "blake2", + "bounded-collections", + "bs58", + "dyn-clone", + "ed25519-zebra", + "futures", + "hash-db", + "hash256-std-hasher", + "impl-serde", + "itertools 0.11.0", + "k256", + "libsecp256k1", + "log", + "merlin", + "parity-bip39", + "parity-scale-codec", + "parking_lot", + "paste", + "primitive-types 0.13.1", + "rand 0.8.5", + "scale-info", + "schnorrkel", + "secp256k1 0.28.2", + "secrecy 0.8.0", + "serde", + "sha2 0.10.9", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4)", + "sp-debug-derive", + "sp-externalities", + "sp-runtime-interface", + "sp-std", + "sp-storage", + "ss58-registry", + "substrate-bip39", + "thiserror 1.0.69", + "tracing", + "w3f-bls", + "zeroize", +] + +[[package]] +name = "sp-crypto-hashing" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc9927a7f81334ed5b8a98a4a978c81324d12bd9713ec76b5c68fd410174c5eb" +dependencies = [ + "blake2b_simd", + "byteorder", + "digest 0.10.7", + "sha2 0.10.9", + "sha3", + "twox-hash", +] + +[[package]] +name = "sp-crypto-hashing" +version = "0.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "blake2b_simd", + "byteorder", + "digest 0.10.7", + "sha2 0.10.9", + "sha3", + "twox-hash", +] + +[[package]] +name = "sp-crypto-hashing-proc-macro" +version = "0.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "quote", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4)", + "syn 2.0.104", +] + +[[package]] +name = "sp-debug-derive" +version = "14.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "sp-externalities" +version = "0.25.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "environmental", + "parity-scale-codec", + "sp-storage", +] + +[[package]] +name = "sp-genesis-builder" +version = "0.8.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde_json", + "sp-api", + "sp-runtime", +] + +[[package]] +name = "sp-inherents" +version = "26.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "async-trait", + "impl-trait-for-tuples", + "parity-scale-codec", + "scale-info", + "sp-runtime", + "thiserror 1.0.69", +] + +[[package]] +name = "sp-io" +version = "30.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "bytes", + "docify", + "ed25519-dalek", + "libsecp256k1", + "log", + "parity-scale-codec", + "polkavm-derive", + "rustversion", + "secp256k1 0.28.2", + "sp-core", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4)", + "sp-externalities", + "sp-keystore", + "sp-runtime-interface", + "sp-state-machine", + "sp-tracing", + "sp-trie", + "tracing", + "tracing-core", +] + +[[package]] +name = "sp-keystore" +version = "0.34.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "parity-scale-codec", + "parking_lot", + "sp-core", + "sp-externalities", +] + +[[package]] +name = "sp-metadata-ir" +version = "0.6.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "frame-metadata 23.0.0", + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "sp-panic-handler" +version = "13.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "backtrace", + "regex", +] + +[[package]] +name = "sp-runtime" +version = "31.0.1" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "binary-merkle-tree", + "docify", + "either", + "hash256-std-hasher", + "impl-trait-for-tuples", + "log", + "num-traits", + "parity-scale-codec", + "paste", + "rand 0.8.5", + "scale-info", + "serde", + "simple-mermaid", + "sp-application-crypto", + "sp-arithmetic", + "sp-core", + "sp-io", + "sp-std", + "sp-trie", + "sp-weights", + "tracing", + "tuplex", +] + +[[package]] +name = "sp-runtime-interface" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "bytes", + "impl-trait-for-tuples", + "parity-scale-codec", + "polkavm-derive", + "primitive-types 0.13.1", + "sp-externalities", + "sp-runtime-interface-proc-macro", + "sp-std", + "sp-storage", + "sp-tracing", + "sp-wasm-interface", + "static_assertions", +] + +[[package]] +name = "sp-runtime-interface-proc-macro" +version = "17.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "Inflector", + "expander", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "sp-staking" +version = "26.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "impl-trait-for-tuples", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core", + "sp-runtime", +] + +[[package]] +name = "sp-state-machine" +version = "0.35.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "hash-db", + "log", + "parity-scale-codec", + "parking_lot", + "rand 0.8.5", + "smallvec", + "sp-core", + "sp-externalities", + "sp-panic-handler", + "sp-trie", + "thiserror 1.0.69", + "tracing", + "trie-db", +] + +[[package]] +name = "sp-std" +version = "14.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" + +[[package]] +name = "sp-storage" +version = "19.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "impl-serde", + "parity-scale-codec", + "ref-cast", + "serde", + "sp-debug-derive", +] + +[[package]] +name = "sp-timestamp" +version = "26.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "async-trait", + "parity-scale-codec", + "sp-inherents", + "sp-runtime", + "thiserror 1.0.69", +] + +[[package]] +name = "sp-tracing" +version = "16.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "parity-scale-codec", + "regex", + "tracing", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "sp-trie" +version = "29.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "ahash", + "hash-db", + "memory-db", + "nohash-hasher", + "parity-scale-codec", + "parking_lot", + "rand 0.8.5", + "scale-info", + "schnellru", + "sp-core", + "sp-externalities", + "substrate-prometheus-endpoint", + "thiserror 1.0.69", + "tracing", + "trie-db", + "trie-root", +] + +[[package]] +name = "sp-version" +version = "29.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "impl-serde", + "parity-scale-codec", + "parity-wasm", + "scale-info", + "serde", + "sp-crypto-hashing-proc-macro", + "sp-runtime", + "sp-std", + "sp-version-proc-macro", + "thiserror 1.0.69", +] + +[[package]] +name = "sp-version-proc-macro" +version = "13.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "parity-scale-codec", + "proc-macro-warning", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "sp-wasm-interface" +version = "20.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "anyhow", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", +] + +[[package]] +name = "sp-weights" +version = "27.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "bounded-collections", + "parity-scale-codec", + "scale-info", + "serde", + "smallvec", + "sp-arithmetic", + "sp-debug-derive", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "ss58-registry" +version = "1.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19409f13998e55816d1c728395af0b52ec066206341d939e22e7766df9b494b8" +dependencies = [ + "Inflector", + "num-format", + "proc-macro2", + "quote", + "serde", + "serde_json", + "unicode-xid", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "staging-xcm" +version = "7.0.1" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "array-bytes", + "bounded-collections", + "derive-where", + "environmental", + "frame-support", + "hex-literal 0.4.1", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "scale-info", + "serde", + "sp-runtime", + "sp-weights", + "xcm-procedural", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "substrate-bip39" +version = "0.4.7" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "hmac", + "pbkdf2", + "schnorrkel", + "sha2 0.10.9", + "zeroize", +] + +[[package]] +name = "substrate-bn" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b5bbfa79abbae15dd642ea8176a21a635ff3c00059961d1ea27ad04e5b441c" +dependencies = [ + "byteorder", + "crunchy", + "lazy_static", + "rand 0.8.5", + "rustc-hex", +] + +[[package]] +name = "substrate-prometheus-endpoint" +version = "0.17.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "http-body-util", + "hyper", + "hyper-util", + "log", + "prometheus", + "thiserror 1.0.69", + "tokio", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "subxt-core" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66ef00be9d64885ec94e478a58e4e39d222024b20013ae7df4fc6ece545391aa" +dependencies = [ + "base58", + "blake2", + "derive-where", + "frame-decode", + "frame-metadata 20.0.0", + "hashbrown 0.14.5", + "hex", + "impl-serde", + "keccak-hash", + "parity-scale-codec", + "primitive-types 0.13.1", + "scale-bits", + "scale-decode", + "scale-encode", + "scale-info", + "scale-value", + "serde", + "serde_json", + "sp-crypto-hashing 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "subxt-metadata", + "thiserror 2.0.14", + "tracing", +] + +[[package]] +name = "subxt-metadata" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fff4591673600c4388e21305788282414d26c791b4dee21b7cb0b19c10076f98" +dependencies = [ + "frame-decode", + "frame-metadata 20.0.0", + "hashbrown 0.14.5", + "parity-scale-codec", + "scale-info", + "sp-crypto-hashing 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 2.0.14", +] + +[[package]] +name = "subxt-signer" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a2370298a210ed1df26152db7209a85e0ed8cfbce035309c3b37f7b61755377" +dependencies = [ + "base64", + "bip32", + "bip39", + "cfg-if", + "crypto_secretbox", + "hex", + "hmac", + "keccak-hash", + "parity-scale-codec", + "pbkdf2", + "regex", + "schnorrkel", + "scrypt", + "secp256k1 0.30.0", + "secrecy 0.10.3", + "serde", + "serde_json", + "sha2 0.10.9", + "sp-crypto-hashing 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "subxt-core", + "thiserror 2.0.14", + "zeroize", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn-solidity" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a985ff4ffd7373e10e0fb048110fb11a162e5a4c47f92ddb8787a6f766b769" +dependencies = [ + "paste", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tempfile" +version = "3.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +dependencies = [ + "fastrand", + "getrandom 0.3.3", + "once_cell", + "rustix", + "windows-sys 0.59.0", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b0949c3a6c842cbde3f1686d6eea5a010516deb7085f79db747562d4102f41e" +dependencies = [ + "thiserror-impl 2.0.14", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc5b44b4ab9c2fdd0e0512e6bece8388e214c0749f5862b114cc5b7a25daf227" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "thread_local" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "time" +version = "0.3.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" + +[[package]] +name = "time-macros" +version = "0.2.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinyvec" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.47.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" +dependencies = [ + "backtrace", + "bytes", + "io-uring", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "slab", + "socket2", + "windows-sys 0.59.0", +] + +[[package]] +name = "tokio-util" +version = "0.7.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.22.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "toml_write", + "winnow", +] + +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "time", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "trie-db" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c0670ab45a6b7002c7df369fee950a27cf29ae0474343fd3a15aa15f691e7a6" +dependencies = [ + "hash-db", + "log", + "rustc-hex", + "smallvec", +] + +[[package]] +name = "trie-root" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4ed310ef5ab98f5fa467900ed906cb9232dd5376597e00fd4cba2a449d06c0b" +dependencies = [ + "hash-db", +] + +[[package]] +name = "tt-call" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f195fd851901624eee5a58c4bb2b4f06399148fcd0ed336e6f1cb60a9881df" + +[[package]] +name = "tuplex" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "676ac81d5454c4dcf37955d34fa8626ede3490f744b86ca14a7b90168d2a08aa" + +[[package]] +name = "twox-hash" +version = "1.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" +dependencies = [ + "cfg-if", + "digest 0.10.7", + "rand 0.8.5", + "static_assertions", +] + +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "ucd-trie" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "uint" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "909988d098b2f738727b161a106cfc7cab00c539c2687a8836f8e565976fb53e" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "universal-hash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +dependencies = [ + "crypto-common", + "subtle", +] + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "w3f-bls" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6bfb937b3d12077654a9e43e32a4e9c20177dd9fea0f3aba673e7840bb54f32" +dependencies = [ + "ark-bls12-377", + "ark-bls12-381 0.4.0", + "ark-ec 0.4.2", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-serialize-derive 0.4.2", + "arrayref", + "digest 0.10.7", + "rand 0.8.5", + "rand_chacha 0.3.1", + "rand_core 0.6.4", + "sha2 0.10.9", + "sha3", + "zeroize", +] + +[[package]] +name = "w3f-pcs" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbe7a8d5c914b69392ab3b267f679a2e546fe29afaddce47981772ac71bd02e1" +dependencies = [ + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-poly 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "merlin", +] + +[[package]] +name = "w3f-plonk-common" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aca389e494fe08c5c108b512e2328309036ee1c0bc7bdfdb743fef54d448c8c" +dependencies = [ + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-poly 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "getrandom_or_panic", + "rand_core 0.6.4", + "w3f-pcs", +] + +[[package]] +name = "w3f-ring-proof" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a639379402ad51504575dbd258740383291ac8147d3b15859bdf1ea48c677de" +dependencies = [ + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-poly 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "ark-transcript", + "w3f-pcs", + "w3f-plonk-common", +] + +[[package]] +name = "wait-timeout" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" +dependencies = [ + "libc", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + +[[package]] +name = "wide" +version = "0.7.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce5da8ecb62bcd8ec8b7ea19f69a51275e91299be594ea5cc6ef7819e16cd03" +dependencies = [ + "bytemuck", + "safe_arch", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.3", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + +[[package]] +name = "winnow" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95" +dependencies = [ + "memchr", +] + +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags 2.9.1", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "xcm-procedural" +version = "7.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?rev=cb629d46ebf00aa65624013a61f9c69ebf02b0b4#cb629d46ebf00aa65624013a61f9c69ebf02b0b4" +dependencies = [ + "Inflector", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "xxhash-rust" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" + +[[package]] +name = "zerocopy" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] diff --git a/pop-api-vnext/integration-tests/contracts/messaging/Cargo.toml b/pop-api-vnext/integration-tests/contracts/messaging/Cargo.toml new file mode 100644 index 000000000..58ff51930 --- /dev/null +++ b/pop-api-vnext/integration-tests/contracts/messaging/Cargo.toml @@ -0,0 +1,29 @@ +[package] +authors = [ "R0GUE " ] +edition = "2021" +name = "messaging" +version = "0.1.0" + +[package.metadata.ink-lang] +abi = "all" + +[workspace] + +[dependencies] +ink = { git = "https://github.com/use-ink/ink", tag = "v6.0.0-alpha.1", default-features = false, features = [ "unstable-hostfn" ] } +pop-api = { path = "../../../../pop-api-vnext", default-features = false, features = [ "messaging" ] } + +[dev-dependencies] +scale-info = { version = "2" } + +[lib] +path = "lib.rs" + +[features] +default = [ "std" ] +ink-as-dependency = [ ] +std = [ "ink/std", "pop-api/std" ] + +[lints.rust.unexpected_cfgs] +check-cfg = [ 'cfg(ink_abi, values("ink", "sol", "all"))' ] +level = "warn" diff --git a/pop-api-vnext/integration-tests/contracts/messaging/lib.rs b/pop-api-vnext/integration-tests/contracts/messaging/lib.rs new file mode 100644 index 000000000..830629ac6 --- /dev/null +++ b/pop-api-vnext/integration-tests/contracts/messaging/lib.rs @@ -0,0 +1,175 @@ +#![cfg_attr(not(feature = "std"), no_std, no_main)] + +use ink::{abi::Sol, contract_ref, prelude::vec::Vec, sol::DynBytes, storage::Mapping, U256}; +use pop_api::{ + messaging::{ + self as api, + ismp::{ + self, Get, Ismp, IsmpCallback, IsmpGetCompleted, IsmpPostCompleted, OnGetResponse, + OnPostResponse, Post, StorageValue, + }, + xcm::{self, OnQueryResponse, QueryId, Xcm, XcmCallback, XcmCompleted}, + Callback, Error, MessageId, MessageStatus, Weight, + }, + Pop, +}; + +#[ink::contract] +pub mod messaging { + use super::*; + + #[ink(storage)] + pub struct Messaging { + /// Successful responses. + responses: Mapping, + } + + impl Messaging { + #[ink(constructor, default, payable)] + #[allow(clippy::new_without_default)] + pub fn new() -> Self { + Self { responses: Mapping::new() } + } + } + + impl api::Messaging for Messaging { + #[ink(message)] + fn getResponse(&self, message: MessageId) -> DynBytes { + api::get_response(message) + } + + #[ink(message)] + fn id(&self) -> u32 { + api::id() + } + + #[ink(message)] + fn pollStatus(&self, message: MessageId) -> MessageStatus { + api::poll_status(message) + } + + #[ink(message)] + fn remove(&self, message: MessageId) -> Result<(), Error> { + api::remove(message)?; + self.responses.remove(&message); + Ok(()) + } + + #[ink(message)] + fn removeMany(&self, messages: Vec) -> Result<(), Error> { + for message in &messages { + self.responses.remove(message); + } + api::remove_many(messages)?; + Ok(()) + } + } + + impl Ismp for Messaging { + #[ink(message)] + fn get(&self, request: Get, fee: U256) -> Result { + ismp::get(request, fee, None) + } + + #[ink(message)] + fn post(&self, request: Post, fee: U256) -> Result { + ismp::post(request, fee, None) + } + } + + impl IsmpCallback for Messaging { + #[ink(message)] + fn get( + &self, + request: Get, + fee: U256, + callback: Callback, + ) -> Result { + ismp::get(request, fee, Some(callback)) + } + + #[ink(message)] + fn post( + &self, + request: Post, + fee: U256, + callback: Callback, + ) -> Result { + ismp::post(request, fee, Some(callback)) + } + } + + impl OnGetResponse for Messaging { + #[ink(message)] + fn onGetResponse(&mut self, id: MessageId, response: Vec) { + // Adding state requires storage deposit limit to be defined on callback. Deposit is + // moved from caller to contract and placed on hold. Deposit is claimed by anyone that + // removes state, so adequate controls should be implemented by contract as desired. + self.responses.insert(id, &Response::IsmpGet(response.clone())); + self.env().emit_event(IsmpGetCompleted { id, response }); + } + } + + impl OnPostResponse for Messaging { + #[ink(message)] + fn onPostResponse(&mut self, id: MessageId, response: DynBytes) { + // Adding state requires storage deposit limit to be defined on callback. Deposit is + // moved from caller to contract and placed on hold. Deposit is claimed by anyone that + // removes state, so adequate controls should be implemented by contract as desired. + self.responses.insert(id, &Response::IsmpPost(response.0.clone())); + self.env().emit_event(IsmpPostCompleted { id, response }); + } + } + + impl Xcm for Messaging { + #[ink(message)] + fn execute(&self, message: DynBytes, weight: Weight) -> DynBytes { + let precompile: contract_ref!(Xcm, Pop, Sol) = xcm::PRECOMPILE_ADDRESS.into(); + precompile.execute(message, weight) + } + + #[ink(message)] + fn newQuery(&self, responder: DynBytes, timeout: BlockNumber) -> (MessageId, QueryId) { + let precompile: contract_ref!(Xcm, Pop, Sol) = xcm::PRECOMPILE_ADDRESS.into(); + precompile.newQuery(responder, timeout) + } + + #[ink(message)] + fn send(&self, destination: DynBytes, message: DynBytes) -> DynBytes { + let precompile: contract_ref!(Xcm, Pop, Sol) = xcm::PRECOMPILE_ADDRESS.into(); + precompile.send(destination, message) + } + } + + impl XcmCallback for Messaging { + #[ink(message)] + fn newQuery( + &self, + responder: DynBytes, + timeout: BlockNumber, + callback: Callback, + ) -> (MessageId, QueryId) { + let precompile: contract_ref!(XcmCallback, Pop, Sol) = xcm::PRECOMPILE_ADDRESS.into(); + precompile.newQuery(responder, timeout, callback) + } + } + + impl OnQueryResponse for Messaging { + #[ink(message)] + fn onQueryResponse(&mut self, id: MessageId, response: DynBytes) { + // Adding state requires storage deposit limit to be defined on callback. Deposit is + // moved from caller to contract and placed on hold. Deposit is claimed by anyone that + // removes state, so adequate controls should be implemented by contract as desired. + self.responses.insert(id, &Response::XcmQuery(response.0.clone())); + self.env().emit_event(XcmCompleted { id, result: response }); + } + } + + #[ink::scale_derive(Encode, Decode, TypeInfo)] + #[cfg_attr(feature = "std", derive(ink::storage::traits::StorageLayout))] + enum Response { + IsmpGet(Vec), + IsmpPost(Vec), + XcmQuery(Vec), + } +} diff --git a/pop-api-vnext/integration-tests/src/fungibles.rs b/pop-api-vnext/integration-tests/src/fungibles.rs new file mode 100644 index 000000000..455fda2cf --- /dev/null +++ b/pop-api-vnext/integration-tests/src/fungibles.rs @@ -0,0 +1,952 @@ +use frame_support::{ + assert_noop, + pallet_prelude::Encode, + traits::fungibles::{ + approvals::Inspect as _, metadata::Inspect as _, roles::Inspect as _, Inspect as _, + }, +}; +use pallet_api_vnext::fungibles::precompiles::v0::IFungibles::{ + allowanceCall, approveCall, balanceOfCall, burnCall, clearMetadataCall, createCall, + decimalsCall, decreaseAllowanceCall, existsCall, increaseAllowanceCall, mintCall, nameCall, + setMetadataCall, startDestroyCall, symbolCall, totalSupplyCall, transferCall, transferFromCall, +}; +use pop_api::{ + errors::{ArithmeticError, TokenError}, + fungibles::{Error::*, *}, + SolErrorDecode, +}; +use pop_primitives::TokenId; +use sp_io::hashing::twox_256; + +use super::*; + +const CONTRACT: &str = "contracts/fungibles/target/ink/fungibles.polkavm"; +const GAS_LIMIT: Weight = Weight::from_parts(6_000_000_000, 110_000); +const INIT_VALUE: Balance = 11 * UNIT; +const STORAGE_DEPOSIT_LIMIT: DepositLimit = DepositLimit::Balance(1 * UNIT); + +#[test] +fn total_supply_works() { + let token = 1; + let endowment = 100; + ExtBuilder::new() + .with_assets(vec![(token, ALICE, false, 1)]) + .with_asset_balances(vec![(token, BOB, endowment)]) + .build() + .execute_with(|| { + let contract = Contract::new(&BOB, 0); + + // Tokens in circulation. + assert_eq!(contract.total_supply(token), Assets::total_supply(token).into()); + assert_eq!(contract.total_supply(token), endowment.into()); + + // No tokens in circulation. + let token = TokenId::MAX; + assert_eq!(contract.total_supply(token), Assets::total_supply(token).into()); + assert_eq!(contract.total_supply(token), 0.into()); + }); +} + +#[test] +fn balance_of_works() { + let token = 1; + let owner = ALICE; + let endowment = 100; + ExtBuilder::new() + .with_assets(vec![(token, BOB, false, 1)]) + .with_asset_balances(vec![(token, owner.clone(), endowment)]) + .build() + .execute_with(|| { + let contract = Contract::new(&CHARLIE, 0); + + // Tokens in circulation. + assert_eq!( + contract.balance_of(token, to_address(&owner)), + Assets::balance(token, &owner).into() + ); + assert_eq!(contract.balance_of(token, to_address(&owner)), endowment.into()); + + // No tokens in circulation. + let token = TokenId::MAX; + assert_eq!( + contract.balance_of(token, to_address(&owner)), + Assets::balance(token, &owner).into() + ); + assert_eq!(contract.balance_of(token, to_address(&owner)), 0.into()); + }); +} + +#[test] +fn allowance_works() { + let token = 1; + let owner = ALICE; + let spender = BOB; + let allowance = 50; + ExtBuilder::new() + .with_assets(vec![(token, CHARLIE, false, 1)]) + .build() + .execute_with(|| { + let contract = Contract::new(&CHARLIE, 0); + + // Tokens in circulation. + approve(&owner, token, &spender, allowance); + assert_eq!( + contract.allowance(token, to_address(&owner), to_address(&spender)), + Assets::allowance(token, &owner, &spender).into() + ); + assert_eq!( + contract.allowance(token, to_address(&owner), to_address(&spender)), + allowance.into() + ); + + // No tokens in circulation. + let token = TokenId::MAX; + assert_eq!( + contract.allowance(token, to_address(&owner), to_address(&spender)), + Assets::allowance(token, &owner, &spender).into() + ); + assert_eq!( + contract.allowance(token, to_address(&owner), to_address(&spender)), + 0.into() + ); + }); +} + +#[test] +fn transfer_works() { + let token = 1; + let owner = ALICE; + let amount: Balance = 100 * UNIT; + let to = BOB; + ExtBuilder::new() + .with_assets(vec![(token, owner.clone(), false, 1)]) + .build() + .execute_with(|| { + let mut contract = Contract::new(&owner, 0); + + // Token does not exist. + assert_noop!(contract.transfer(TokenId::MAX, to_address(&to), 1.into()), Unknown); + // Mint `amount` to contract address. + mint(&owner, token, &contract.account_id(), amount); + // Token is not live, i.e. frozen or being destroyed. + freeze(&owner, token); + assert_noop!(contract.transfer(token, to_address(&to), amount.into()), NotLive); + thaw(&owner, token); + // Not enough balance. + assert_noop!( + contract.transfer(token, to_address(&to), (amount + 1 * UNIT).into()), + InsufficientBalance + ); + // Not enough balance due to ED. + assert_noop!( + contract.transfer(token, to_address(&to), amount.into()), + InsufficientBalance + ); + assert_noop!(contract.transfer(token, H160::zero(), 0.into()), ZeroRecipientAddress); + assert_noop!(contract.transfer(token, to_address(&to), 0.into()), ZeroValue); + // Successful transfer. + let balance_before_transfer = Assets::balance(token, &to); + assert_ok!(contract.transfer(token, to_address(&to), (amount / 2).into())); + let balance_after_transfer = Assets::balance(token, &to); + assert_eq!(balance_after_transfer, balance_before_transfer + amount / 2); + // Successfully emit event. + let from = contract.address; + let to = to_address(&to); + let expected = Transfer { from, to, value: (amount / 2).into() }.encode(); + assert_eq!(contract.last_event(), expected); + // Transfer token to account that does not exist. + assert_noop!( + contract.transfer(token, [255; 20].into(), (amount / 4).into()), + Token(TokenError::CannotCreate) + ); + // Token is not live, i.e. frozen or being destroyed. + start_destroy(&owner, token); + assert_noop!(contract.transfer(token, to, amount.into()), NotLive); + }); +} + +#[test] +fn transfer_from_works() { + let token = 1; + let owner = ALICE; + let amount: Balance = 100 * UNIT; + let to = BOB; + ExtBuilder::new() + .with_assets(vec![(token, owner.clone(), false, 1)]) + .with_asset_balances(vec![(token, owner.clone(), amount)]) + .build() + .execute_with(|| { + let mut contract = Contract::new(&owner, 0); + + // Token does not exist. + let from = to_address(&owner); + assert_noop!( + contract.transfer_from(TokenId::MAX, from, to_address(&to), 1.into()), + Unknown + ); + // Unapproved transfer. + assert_noop!( + contract.transfer_from(token, from, to_address(&to), amount.into()), + Unapproved + ); + // Approve the contract to transfer on behalf of owner. + approve(&owner, token, &contract.account_id(), amount + 1 * UNIT); + // Token is not live, i.e. frozen or being destroyed. + freeze(&owner, token); + assert_noop!( + contract.transfer_from(token, from, to_address(&to), amount.into()), + NotLive + ); + thaw(&owner, token); + // Not enough balance. + assert_noop!( + contract.transfer_from(token, from, to_address(&to), (amount + 1).into()), + InsufficientBalance + ); + assert_noop!( + contract.transfer_from(token, H160::zero(), H160::zero(), 0.into()), + ZeroSenderAddress + ); + assert_noop!( + contract.transfer_from(token, from, H160::zero(), 0.into()), + ZeroRecipientAddress + ); + assert_noop!( + contract.transfer_from(token, from, from, 0.into()), + InvalidRecipient(from) + ); + assert_noop!(contract.transfer_from(token, from, to_address(&to), 0.into()), ZeroValue); + // Successful transfer. + let balance_before_transfer = Assets::balance(token, &to); + assert_ok!(contract.transfer_from( + token, + to_address(&owner), + to_address(&to), + (amount / 2).into() + )); + let balance_after_transfer = Assets::balance(token, &to); + assert_eq!(balance_after_transfer, balance_before_transfer + amount / 2); + // Successfully emit event. + let to = to_address(&to); + let expected = Transfer { from, to, value: (amount / 2).into() }.encode(); + assert_eq!(contract.last_event(), expected); + }); +} + +#[test] +fn approve_works() { + let token = 1; + let owner = ALICE; + let spender = BOB; + let amount: Balance = 100 * UNIT; + ExtBuilder::new() + .with_assets(vec![(token, owner.clone(), false, 1)]) + .with_asset_balances(vec![(token, owner.clone(), amount)]) + .build() + .execute_with(|| { + let mut contract = Contract::new(&owner, 0); + + // Token does not exist. + assert_noop!( + contract.approve(TokenId::MAX, to_address(&spender), amount.into()), + Unknown + ); + // Insufficient contract balance for approval deposit. + assert_noop!( + contract.approve(token, to_address(&spender), amount.into()), + InsufficientBalance + ); + let mut contract = Contract::new(&owner, INIT_VALUE); + // Mint `amount` to contract address. + mint(&owner, token, &contract.account_id(), amount); + // Token is not live, i.e. frozen or being destroyed. + freeze(&owner, token); + assert_noop!(contract.approve(token, to_address(&spender), amount.into()), NotLive); + thaw(&owner, token); + assert_noop!(contract.approve(token, H160::zero(), 0.into()), ZeroRecipientAddress); + // Successful approvals. + assert_eq!(0, Assets::allowance(token, &contract.account_id(), &spender)); + assert_ok!(contract.approve(token, to_address(&spender), amount.into())); + assert_eq!(Assets::allowance(token, &contract.account_id(), &spender), amount); + // Successfully emit event. + let spender = to_address(&spender); + let expected = + Approval { owner: contract.address, spender, value: amount.into() }.encode(); + assert_eq!(contract.last_event(), expected); + // Non-additive, sets new value. + assert_ok!(contract.approve(token, spender, (amount / 2).into())); + assert_eq!( + Assets::allowance(token, &contract.account_id(), &to_account_id(&spender)), + amount / 2 + ); + // Successfully emit event. + let expected = + Approval { owner: contract.address, spender, value: (amount / 2).into() }.encode(); + assert_eq!(contract.last_event(), expected); + // Token is not live, i.e. frozen or being destroyed. + start_destroy(&owner, token); + assert_noop!(contract.approve(token, spender, amount.into()), NotLive); + }); +} + +#[test] +fn increase_allowance_works() { + let token = 1; + let owner = ALICE; + let spender = BOB; + let amount: Balance = 100 * UNIT; + ExtBuilder::new() + .with_assets(vec![(token, owner.clone(), false, 1)]) + .build() + .execute_with(|| { + // Instantiate a contract without balance - test `ConsumerRemaining. + let mut contract = Contract::new(&owner, 0); + // Token does not exist. + assert_noop!( + contract.increase_allowance(TokenId::MAX, to_address(&spender), 1.into()), + Unknown + ); + mint(&owner, token, &contract.account_id(), amount); + // Insufficient contract balance for approval deposit. + assert_noop!( + contract.increase_allowance(token, to_address(&spender), amount.into()), + InsufficientBalance + ); + + // Instantiate a contract with balance. + let mut contract = Contract::new(&owner, INIT_VALUE); + // Create token with Alice as owner and mint `amount` to contract address. + mint(&owner, token, &contract.account_id(), amount); + // Token is not live, i.e. frozen or being destroyed. + freeze(&owner, token); + assert_noop!( + contract.increase_allowance(token, to_address(&spender), amount.into()), + NotLive + ); + thaw(&owner, token); + assert_noop!( + contract.increase_allowance(token, H160::zero(), 0.into()), + ZeroRecipientAddress + ); + assert_noop!( + contract.increase_allowance(token, to_address(&spender), 0.into()), + ZeroValue + ); + // Successful approvals: + assert_eq!(0, Assets::allowance(token, &contract.account_id(), &spender)); + assert_eq!( + contract.increase_allowance(token, to_address(&spender), amount.into()), + Ok(amount.into()) + ); + assert_eq!(Assets::allowance(token, &contract.account_id(), &spender), amount); + // Additive. + assert_eq!( + contract.increase_allowance(token, to_address(&spender), amount.into()), + Ok((amount * 2).into()) + ); + assert_eq!(Assets::allowance(token, &contract.account_id(), &spender), amount * 2); + // Token is not live, i.e. frozen or being destroyed. + start_destroy(&owner, token); + assert_noop!( + contract.increase_allowance(token, to_address(&spender), amount.into()), + NotLive + ); + }); +} + +#[test] +fn decrease_allowance_works() { + let token = 1; + let owner = ALICE; + let spender = BOB; + let amount: Balance = 100 * UNIT; + ExtBuilder::new() + .with_assets(vec![(token, owner.clone(), false, 1)]) + .build() + .execute_with(|| { + let mut contract = Contract::new(&owner, INIT_VALUE); + + // Mint `amount` to contract address, then approve delegate to spend `amount`. + mint(&owner, token, &contract.account_id(), amount); + approve(&contract.account_id(), token, &spender, amount); + // Token is not live, i.e. frozen or being destroyed. + freeze(&owner, token); + assert_noop!( + contract.decrease_allowance(token, to_address(&spender), amount.into()), + NotLive + ); + thaw(&owner, token); + // "Unapproved" error is returned if the current allowance is less than `value`. + assert_noop!( + contract.decrease_allowance(token, to_address(&spender), (amount * 2).into()), + Unapproved + ); + assert_noop!( + contract.decrease_allowance(token, H160::zero(), 0.into()), + ZeroRecipientAddress + ); + assert_noop!( + contract.decrease_allowance(token, to_address(&spender), 0.into()), + ZeroValue + ); + // Successfully decrease allowance. + let amount = amount / 2 - 1 * UNIT; + let allowance_before = Assets::allowance(token, &contract.account_id(), &spender); + assert_eq!( + contract.decrease_allowance(token, to_address(&spender), amount.into()), + Ok((allowance_before - amount).into()) + ); + let allowance_after = Assets::allowance(token, &contract.account_id(), &spender); + assert_eq!(allowance_before - allowance_after, amount); + // Token is not live, i.e. frozen or being destroyed. + start_destroy(&owner, token); + assert_noop!( + contract.decrease_allowance(token, to_address(&spender), amount.into()), + NotLive + ); + }); +} + +#[test] +fn metadata_works() { + let token = 1; + let owner = ALICE; + let name = "name".to_string(); + let symbol = "symbol".to_string(); + let decimals: u8 = 69; + ExtBuilder::new() + .with_assets(vec![(token, owner.clone(), false, 1)]) + .with_asset_metadata(vec![(token, name.clone().into(), symbol.clone().into(), decimals)]) + .build() + .execute_with(|| { + let contract = Contract::new(&owner, 0); + + // Existing token. + assert_eq!(contract.name(token).as_bytes(), Assets::name(token).as_slice()); + assert_eq!(contract.name(token), name); + assert_eq!(contract.symbol(token).as_bytes(), Assets::symbol(token).as_slice()); + assert_eq!(contract.symbol(token), symbol); + assert_eq!(contract.decimals(token), Assets::decimals(token)); + assert_eq!(contract.decimals(token), decimals); + + // Token does not exist. + let token = TokenId::MAX; + assert_eq!(contract.name(token), String::default()); + assert_eq!(contract.symbol(token), String::default()); + assert_eq!(contract.decimals(token), 0); + }); +} + +#[test] +fn create_works() { + let owner = ALICE; + ExtBuilder::new().build().execute_with(|| { + // Instantiate a contract without balance for fees. + let mut contract = Contract::new(&owner, 0); + // No balance to pay for fees. + let admin = to_address(&owner); + assert_noop!(contract.create(admin, 1.into()), InsufficientBalance); + + // Instantiate a contract with insufficient balance for deposit. + let mut contract = Contract::new(&owner, 100); + // No balance to pay the deposit. + assert_noop!(contract.create(admin, 1.into()), InsufficientBalance); + + // Instantiate a contract with enough balance. + let mut contract = Contract::new(&owner, INIT_VALUE); + assert_noop!(contract.create(H160::zero(), 0.into()), ZeroAdminAddress); + // The minimal balance for a token must be non zero. + assert_noop!(contract.create(admin, 0.into()), MinBalanceZero); + // Create token successfully. + let token = contract.create(admin, 1.into()).unwrap(); + assert_eq!(Assets::owner(token), Some(contract.account_id())); + // Successfully emit event. + let expected = Created { id: token, creator: contract.address, admin }.encode(); + assert_eq!(contract.last_event(), expected); + }); +} + +// Testing a contract that creates a token in the constructor. +#[test] +fn instantiate_and_create_fungible_works() { + let token = 1; + let owner = ALICE; + ExtBuilder::new().build().execute_with(|| { + assert!(!Assets::asset_exists(token)); + + // Successfully create a token when instantiating the contract. + let contract = Contract::new_with_create(&owner, INIT_VALUE, 1.into()); + assert_eq!(Assets::owner(token), Some(contract.account_id())); + assert!(Assets::asset_exists(token)); + // Successfully emit event. + let creator = to_address(&owner); + let expected = Created { id: token, creator, admin: contract.address }.encode(); + assert_eq!(contract.last_event(), expected); + }); +} + +#[test] +fn start_destroy_works() { + let token = 0; + let owner = ALICE; + ExtBuilder::new() + .with_assets(vec![(token, owner.clone(), false, 1)]) + .build() + .execute_with(|| { + let mut contract = Contract::new(&owner, INIT_VALUE); + + // Token does not exist. + assert_noop!(contract.start_destroy(TokenId::MAX), Unknown); + // No Permission. + assert_noop!(contract.start_destroy(token), NoPermission); + let token = contract.create(to_address(&owner), 1.into()).unwrap(); + assert_ok!(contract.start_destroy(token)); + // Successfully emit event. + let expected = DestroyStarted { token }.encode(); + assert_eq!(contract.last_event(), expected); + }); +} + +#[test] +fn set_metadata_works() { + let token = 0; + let owner = ALICE; + let name = "name".to_string(); + let symbol = "symbol".to_string(); + let decimals: u8 = 69; + ExtBuilder::new() + .with_assets(vec![(token, owner.clone(), false, 1)]) + .build() + .execute_with(|| { + let mut contract = Contract::new(&owner, INIT_VALUE); + + // Token does not exist. + assert_noop!( + contract.set_metadata(TokenId::MAX, name.clone(), symbol.clone(), decimals), + Unknown + ); + // No Permission. + assert_noop!( + contract.set_metadata(token, name.clone(), symbol.clone(), decimals), + NoPermission + ); + let token = contract.create(to_address(&owner), 1.into()).unwrap(); + // Token is not live, i.e. frozen or being destroyed. + freeze(&owner, token); + assert_noop!( + contract.set_metadata(token, name.clone(), symbol.clone(), decimals), + NotLive + ); + thaw(&owner, token); + // TODO: calling the below with a vector of length `100_000` errors in pallet contracts + // `OutputBufferTooSmall. Added to security analysis issue #131 to revisit. + // Set bad metadata - too large values. + assert_noop!( + contract.set_metadata(token, "n".repeat(1_00), "s".repeat(1_00), decimals), + BadMetadata + ); + // Set metadata successfully. + assert_ok!(contract.set_metadata(token, name.clone(), symbol.clone(), decimals)); + assert_eq!( + (&contract.name(token), &contract.symbol(token), &contract.decimals(token)), + (&name, &symbol, &decimals) + ); + // Successfully emit event. + let expected = MetadataSet { token, name, symbol, decimals }.encode(); + assert_eq!(contract.last_event(), expected); + // Token is not live, i.e. frozen or being destroyed. + start_destroy(&contract.account_id(), token); + assert_noop!(contract.set_metadata(token, "".into(), "".into(), decimals), NotLive); + }); +} + +#[test] +fn clear_metadata_works() { + let token = 0; + let owner = ALICE; + let name = "name".to_string(); + let symbol = "symbol".to_string(); + let decimals: u8 = 69; + ExtBuilder::new() + .with_assets(vec![(token, owner.clone(), false, 1)]) + .build() + .execute_with(|| { + let mut contract = Contract::new(&owner, INIT_VALUE); + + // Token does not exist. + assert_noop!(contract.clear_metadata(TokenId::MAX), Unknown); + // No Permission. + assert_noop!(contract.clear_metadata(token), NoPermission); + let token = contract.create(to_address(&owner), 1.into()).unwrap(); + // Token is not live, i.e. frozen or being destroyed. + freeze(&owner, token); + assert_noop!(contract.clear_metadata(token), NotLive); + thaw(&owner, token); + // No metadata set. + assert_noop!(contract.clear_metadata(token), Unknown); + assert_ok!(contract.set_metadata(token, name, symbol, decimals)); + // Clear metadata successfully. + assert_ok!(contract.clear_metadata(token)); + // Successfully emit event. + let expected = MetadataCleared { token }.encode(); + assert_eq!(contract.last_event(), expected); + // Token is not live, i.e. frozen or being destroyed. + start_destroy(&contract.account_id(), token); + assert_noop!(contract.clear_metadata(token), NotLive); + }); +} + +#[test] +fn exists_works() { + let token = 1; + let owner = ALICE; + ExtBuilder::new() + .with_assets(vec![(token, owner.clone(), false, 1)]) + .build() + .execute_with(|| { + let contract = Contract::new(&owner, 0); + + // Tokens in circulation. + assert_eq!(contract.exists(token), Assets::asset_exists(token)); + + // No tokens in circulation. + let token = TokenId::MAX; + assert_eq!(contract.exists(token), Assets::asset_exists(token)); + }); +} + +#[test] +fn mint_works() { + let token = 0; + let owner = ALICE; + let account = BOB; + let amount: Balance = 100 * UNIT; + ExtBuilder::new() + .with_assets(vec![(token, owner.clone(), false, 1)]) + .build() + .execute_with(|| { + let mut contract = Contract::new(&owner, INIT_VALUE); + + // Token does not exist. + assert_noop!(contract.mint(TokenId::MAX, to_address(&account), amount.into()), Unknown); + // Minting can only be done by the owner. + assert_noop!(contract.mint(token, to_address(&account), amount.into()), NoPermission); + // Contract must be admin in order to be able to mint. + let token = contract.create(contract.address, 2.into()).unwrap(); + // Minimum balance of a token can not be zero. + assert_noop!( + contract.mint(token, to_address(&account), 1.into()), + Token(TokenError::BelowMinimum) + ); + // Token is not live, i.e. frozen or being destroyed. + freeze(&contract.account_id(), token); + assert_noop!(contract.mint(token, to_address(&account), amount.into()), NotLive); + thaw(&contract.account_id(), token); + assert_noop!(contract.mint(token, H160::zero(), 0.into()), ZeroRecipientAddress); + assert_noop!(contract.mint(token, to_address(&account), 0.into()), ZeroValue); + // Successful mint. + let balance_before_mint = Assets::balance(token, &account); + assert_ok!(contract.mint(token, to_address(&account), amount.into())); + let balance_after_mint = Assets::balance(token, &account); + assert_eq!(balance_after_mint, balance_before_mint + amount); + // Account can not hold more tokens than Balance::MAX. + assert_noop!( + contract.mint(token, to_address(&account), Balance::MAX.into()), + Arithmetic(ArithmeticError::Overflow) + ); + // Token is being destroyed. + start_destroy(&contract.account_id(), token); + assert_noop!(contract.mint(token, to_address(&account), amount.into()), Unknown); + }); +} + +#[test] +fn burn_works() { + let token = 0; + let owner = ALICE; + let account = BOB; + let amount: Balance = 100 * UNIT; + ExtBuilder::new() + .with_assets(vec![(token, owner.clone(), false, 1)]) + .with_asset_balances(vec![(token, account.clone(), amount)]) + .build() + .execute_with(|| { + let mut contract = Contract::new(&owner, INIT_VALUE); + + // Token does not exist. + assert_noop!( + contract.burn(TokenId::MAX, to_address(&account), amount.into()), + InsufficientBalance // Balance is checked before burn attempt + ); + // Account has no tokens. + assert_noop!( + contract.burn(token, to_address(&owner), amount.into()), + InsufficientBalance + ); + // Burning can only be done by the manager. + assert_noop!(contract.burn(token, to_address(&account), amount.into()), NoPermission); + // Contract must be admin in order to be able to burn. + let token = contract.create(contract.address, 1.into()).unwrap(); + assert_ok!(contract.mint(token, to_address(&account), (amount * 2).into())); + // Token is not live, i.e. frozen or being destroyed. + freeze(&contract.account_id(), token); + assert_noop!(contract.burn(token, to_address(&account), amount.into()), NotLive); + thaw(&contract.account_id(), token); + assert_noop!(contract.burn(token, H160::zero(), 0.into()), ZeroSenderAddress); + assert_noop!(contract.burn(token, to_address(&account), 0.into()), ZeroValue); + // Successful mint. + let balance_before_burn = Assets::balance(token, &account); + assert_ok!(contract.burn(token, to_address(&account), amount.into())); + let balance_after_burn = Assets::balance(token, &account); + assert_eq!(balance_after_burn, balance_before_burn - amount); + // Token is not live, i.e. frozen or being destroyed. + start_destroy(&contract.account_id(), token); + assert_noop!(contract.burn(token, to_address(&account), amount.into()), NotLive); + }); +} + +// A simple, strongly typed wrapper for the contract. +struct Contract { + address: H160, + creator: AccountId, +} + +impl Contract { + // Create a new instance of the contract through on-chain instantiation. + fn new(origin: &AccountId, value: Balance) -> Self { + let data = vec![]; // Default solidity constructor + let salt = twox_256(&value.to_le_bytes()); + + let address = instantiate( + RuntimeOrigin::signed(origin.clone()), + CONTRACT, + value, + GAS_LIMIT, + STORAGE_DEPOSIT_LIMIT, + data, + Some(salt), + ); + Self { address, creator: origin.clone() } + } + + // Create a new instance of the contract through on-chain instantiation. + fn new_with_create(origin: &AccountId, value: Balance, min_balance: U256) -> Self { + let data = [blake_selector("create").to_vec(), min_balance.encode()].concat(); // Additional constructor via ink abi + let salt = twox_256(&value.to_le_bytes()); + let address = instantiate( + RuntimeOrigin::signed(origin.clone()), + CONTRACT, + value, + GAS_LIMIT, + STORAGE_DEPOSIT_LIMIT, + data, + Some(salt), + ); + Self { address, creator: origin.clone() } + } + + fn allowance(&self, token: TokenId, owner: H160, spender: H160) -> U256 { + let owner = alloy::Address::from(owner.0); + let spender = alloy::Address::from(spender.0); + let call = allowanceCall { token, owner, spender }; + U256::from_little_endian( + self.call::<_, Error>(&self.creator, call, 0).unwrap().as_le_slice(), + ) + } + + fn approve(&mut self, token: TokenId, spender: H160, value: U256) -> Result<(), Error> { + let spender = alloy::Address::from(spender.0); + let value = alloy::U256::from_be_bytes(value.to_big_endian()); + let call = approveCall { token, spender, value }; + self.call(&self.creator, call, 0)?; + Ok(()) + } + + fn balance_of(&self, token: TokenId, owner: H160) -> U256 { + let owner = alloy::Address::from(owner.0); + let call = balanceOfCall { token, owner }; + U256::from_little_endian( + self.call::<_, Error>(&self.creator, call, 0).unwrap().as_le_slice(), + ) + } + + fn burn(&mut self, token: TokenId, account: H160, value: U256) -> Result<(), Error> { + let account = alloy::Address::from(account.0); + let value = alloy::U256::from_be_bytes(value.to_big_endian()); + let call = burnCall { token, account, value }; + self.call(&self.creator, call, 0)?; + Ok(()) + } + + fn clear_metadata(&mut self, token: TokenId) -> Result<(), Error> { + let call = clearMetadataCall { token }; + self.call(&self.creator, call, 0)?; + Ok(()) + } + + fn create(&mut self, admin: H160, min_balance: U256) -> Result { + let admin = alloy::Address::from(admin.0); + let min_balance = alloy::U256::from_be_bytes(min_balance.to_big_endian()); + let call = createCall { admin, minBalance: min_balance }; + self.call(&self.creator, call, 0) + } + + fn decimals(&self, token: TokenId) -> u8 { + let call = decimalsCall { token }; + self.call::<_, Error>(&self.creator, call, 0).unwrap() + } + + fn decrease_allowance( + &mut self, + token: TokenId, + spender: H160, + value: U256, + ) -> Result { + let spender = alloy::Address::from(spender.0); + let value = alloy::U256::from_be_bytes(value.to_big_endian()); + let call = decreaseAllowanceCall { token, spender, value }; + Ok(U256::from_little_endian(self.call(&self.creator, call, 0)?.as_le_slice())) + } + + fn exists(&self, token: TokenId) -> bool { + let call = existsCall { token }; + self.call::<_, Error>(&self.creator, call, 0).unwrap() + } + + fn increase_allowance( + &mut self, + token: TokenId, + spender: H160, + value: U256, + ) -> Result { + let spender = alloy::Address::from(spender.0); + let value = alloy::U256::from_be_bytes(value.to_big_endian()); + let call = increaseAllowanceCall { token, spender, value }; + Ok(U256::from_little_endian(self.call(&self.creator, call, 0)?.as_le_slice())) + } + + fn mint(&mut self, token: TokenId, account: H160, value: U256) -> Result<(), Error> { + let account = alloy::Address::from(account.0); + let value = alloy::U256::from_be_bytes(value.to_big_endian()); + let call = mintCall { token, account, value }; + self.call(&self.creator, call, 0)?; + Ok(()) + } + + fn name(&self, token: TokenId) -> String { + let call = nameCall { token }; + self.call::<_, Error>(&self.creator, call, 0).unwrap() + } + + fn set_metadata( + &mut self, + token: TokenId, + name: String, + symbol: String, + decimals: u8, + ) -> Result<(), Error> { + let call = setMetadataCall { token, name, symbol, decimals }; + self.call(&self.creator, call, 0)?; + Ok(()) + } + + fn start_destroy(&mut self, token: TokenId) -> Result<(), Error> { + let call = startDestroyCall { token }; + self.call(&self.creator, call, 0)?; + Ok(()) + } + + fn symbol(&self, token: TokenId) -> String { + let call = symbolCall { token }; + self.call::<_, Error>(&self.creator, call, 0).unwrap() + } + + fn total_supply(&self, token: TokenId) -> U256 { + let call = totalSupplyCall { token }; + U256::from_little_endian( + self.call::<_, Error>(&self.creator, call, 0).unwrap().as_le_slice(), + ) + } + + fn transfer(&mut self, token: TokenId, to: H160, value: U256) -> Result<(), Error> { + let to = alloy::Address::from(to.0); + let value = alloy::U256::from_be_bytes(value.to_big_endian()); + let call = transferCall { token, to, value }; + self.call(&self.creator, call, 0)?; + Ok(()) + } + + fn transfer_from( + &mut self, + token: TokenId, + from: H160, + to: H160, + value: U256, + ) -> Result<(), Error> { + let from = alloy::Address::from(from.0); + let to = alloy::Address::from(to.0); + let value = alloy::U256::from_be_bytes(value.to_big_endian()); + let call = transferFromCall { token, from, to, value }; + self.call(&self.creator, call, 0)?; + Ok(()) + } + + fn account_id(&self) -> AccountId { + to_account_id(&self.address) + } + + fn call( + &self, + origin: &AccountId, + call: T, + value: Balance, + ) -> Result { + let origin = RuntimeOrigin::signed(origin.clone()); + let dest = self.address.clone(); + let data = call.abi_encode(); + let result = bare_call(origin, dest, value, GAS_LIMIT, STORAGE_DEPOSIT_LIMIT, data) + .expect("should work"); + match result.did_revert() { + true => Err(E::decode(&result.data).expect(&format!( + "unable to decode error value from '{:?}'", + String::from_utf8_lossy(&result.data) + ))), + false => + Ok(T::abi_decode_returns(&result.data).expect("unable to decode success value")), + } + } + + fn last_event(&self) -> Vec { + last_contract_event(&self.address) + } +} + +fn approve(origin: &AccountId, id: TokenId, delegate: &AccountId, amount: Balance) { + assert_ok!(Assets::approve_transfer( + RuntimeOrigin::signed(origin.clone()), + id.into(), + delegate.clone().into(), + amount, + )); +} + +fn freeze(origin: &AccountId, id: TokenId) { + assert_ok!(Assets::freeze_asset(RuntimeOrigin::signed(origin.clone()), id.into())); +} + +fn mint(origin: &AccountId, id: TokenId, beneficiary: &AccountId, amount: Balance) { + assert_ok!(Assets::mint( + RuntimeOrigin::signed(origin.clone()), + id.into(), + beneficiary.clone().into(), + amount, + )); +} + +fn start_destroy(origin: &AccountId, id: TokenId) { + assert_ok!(Assets::start_destroy(RuntimeOrigin::signed(origin.clone()), id.into())); +} + +fn thaw(origin: &AccountId, id: TokenId) { + assert_ok!(Assets::thaw_asset(RuntimeOrigin::signed(origin.clone()), id.into())); +} diff --git a/pop-api-vnext/integration-tests/src/lib.rs b/pop-api-vnext/integration-tests/src/lib.rs new file mode 100644 index 000000000..a48f0818d --- /dev/null +++ b/pop-api-vnext/integration-tests/src/lib.rs @@ -0,0 +1,179 @@ +#![cfg(test)] + +use std::path::Path; + +use frame_support::{assert_ok, weights::Weight}; +use pallet_assets::{Instance1, NextAssetId}; +use pallet_revive::{ + precompiles::alloy::{primitives as alloy, sol_types::SolCall}, + test_utils::{ALICE, BOB, CHARLIE}, + AccountId32Mapper, AddressMapper, Code, DepositLimit, ExecReturnValue, H160, U256, +}; +#[cfg(feature = "devnet")] +use pop_runtime_devnet::{ + AccountId, Assets, Balance, BlockNumber, Messaging, ParachainInfo, PolkadotXcm, Revive, + Runtime, RuntimeEvent, RuntimeOrigin, System, UNIT, +}; +use sp_runtime::{BuildStorage, DispatchError}; + +mod fungibles; +mod messaging; + +const INIT_AMOUNT: Balance = 100_000_000 * UNIT; + +type TokenId = u32; + +// Get the last event from `pallet-revive`. +fn last_contract_event(address: &H160) -> Vec { + let events = System::read_events_for_pallet::>(); + let contract_events = events + .iter() + .filter_map(|event| match event { + pallet_revive::Event::::ContractEmitted { contract, data, .. } + if contract == address => + Some(data.as_slice()), + _ => None, + }) + .collect::>(); + contract_events + .last() + .expect("expected an event for the specified contract") + .to_vec() +} + +fn bare_call( + origin: RuntimeOrigin, + dest: H160, + value: Balance, + gas_limit: Weight, + storage_deposit_limit: DepositLimit, + data: Vec, +) -> Result { + let result = Revive::bare_call(origin, dest, value, gas_limit, storage_deposit_limit, data); + log::info!("contract exec result={result:?}"); + result.result +} + +fn blake_selector(input: &str) -> [u8; 4] { + sp_io::hashing::blake2_256(input.as_bytes())[0..4] + .try_into() + .expect("hash length > 4") +} + +// Deploy, instantiate and return contract address. +fn instantiate( + origin: RuntimeOrigin, + contract: impl AsRef, + value: Balance, + gas_limit: Weight, + storage_deposit_limit: DepositLimit, + data: Vec, + salt: Option<[u8; 32]>, +) -> H160 { + let binary = std::fs::read(contract).expect("could not read .polkavm file"); + + let result = Revive::bare_instantiate( + origin, + value, + gas_limit, + storage_deposit_limit, + Code::Upload(binary), + data, + salt, + ) + .result + .unwrap(); + assert!(!result.result.did_revert(), "deploying contract reverted {:?}", result); + result.addr +} + +fn keccak_selector(input: &str) -> [u8; 4] { + sp_io::hashing::keccak_256(input.as_bytes())[0..4] + .try_into() + .expect("hash length > 4") +} + +fn to_account_id(address: &H160) -> AccountId { + AccountId32Mapper::::to_account_id(address) +} + +fn to_address(account: &AccountId) -> H160 { + AccountId32Mapper::::to_address(account) +} + +pub(crate) struct ExtBuilder { + assets: Option>, + asset_accounts: Option>, + asset_metadata: Option, Vec, u8)>>, +} + +impl ExtBuilder { + pub(crate) fn new() -> Self { + Self { assets: None, asset_accounts: None, asset_metadata: None } + } + + pub(crate) fn with_assets(mut self, assets: Vec<(TokenId, AccountId, bool, Balance)>) -> Self { + self.assets = Some(assets); + self + } + + pub(crate) fn with_asset_balances( + mut self, + accounts: Vec<(TokenId, AccountId, Balance)>, + ) -> Self { + self.asset_accounts = Some(accounts); + self + } + + pub(crate) fn with_asset_metadata( + mut self, + metadata: Vec<(TokenId, Vec, Vec, u8)>, + ) -> Self { + self.asset_metadata = Some(metadata); + self + } + + pub(crate) fn build(mut self) -> sp_io::TestExternalities { + let _ = env_logger::try_init(); + + let mut t = frame_system::GenesisConfig::::default() + .build_storage() + .expect("Frame system builds valid default genesis config"); + + pallet_balances::GenesisConfig:: { + // DJANGO has no initial balance. + balances: vec![(ALICE, INIT_AMOUNT), (BOB, INIT_AMOUNT), (CHARLIE, INIT_AMOUNT)], + ..Default::default() + } + .assimilate_storage(&mut t) + .expect("Pallet balances storage can be assimilated"); + + pallet_assets::GenesisConfig:: { + assets: self.assets.take().unwrap_or_default(), + metadata: self.asset_metadata.take().unwrap_or_default(), + accounts: self.asset_accounts.take().unwrap_or_default(), + next_asset_id: Some(0), + } + .assimilate_storage(&mut t) + .unwrap(); + + let mut ext = sp_io::TestExternalities::new(t); + ext.execute_with(|| { + System::set_block_number(1); + NextAssetId::::put(1); + }); + + ext + } +} + +#[test] +fn selectors_work() { + // Constructors currently still use blake encoding + assert_eq!(hex::encode(blake_selector("new")), "9bae9d5e"); + + // Erc20 selectors + assert_eq!(hex::encode(keccak_selector("exists()")), "267c4ae4"); + assert_eq!(hex::encode(keccak_selector("totalSupply()")), "18160ddd"); + assert_eq!(hex::encode(keccak_selector("balanceOf(address)")), "70a08231"); +} diff --git a/pop-api-vnext/integration-tests/src/messaging.rs b/pop-api-vnext/integration-tests/src/messaging.rs new file mode 100644 index 000000000..0f9849be5 --- /dev/null +++ b/pop-api-vnext/integration-tests/src/messaging.rs @@ -0,0 +1,598 @@ +use codec::{Decode, Encode}; +use pallet_api_vnext::messaging::{ + precompiles::v0::IMessaging::{ + getResponseCall, idCall, pollStatusCall, remove_0Call, MessageStatus, + }, + Event::CallbackExecuted, + Message, MessageId, +}; +use pallet_revive::precompiles::alloy::sol_types::SolEvent; +use pop_api::{ + messaging::{DynBytes, Error}, + SolErrorDecode, +}; +use sp_io::{ + hashing::{keccak_256, twox_256}, + TestExternalities, +}; + +use super::*; + +const ASSET_HUB: u32 = 1_000; +const CONTRACT: &str = "contracts/messaging/target/ink/messaging.polkavm"; +const GAS_LIMIT: Weight = Weight::from_parts(7_500_000_000, 200_000); +const HYPERBRIDGE: u32 = 4_009; +const INIT_VALUE: Balance = 1 * UNIT / 2; +const STORAGE_DEPOSIT_LIMIT: DepositLimit = DepositLimit::Balance(1 * UNIT); + +mod ismp { + use ::ismp::{ + host::StateMachine, + router::{GetResponse, IsmpRouter, PostResponse, Request, Response, StorageValue}, + }; + use pallet_api_vnext::messaging::{ + precompiles::ismp::v0::{ + Callback, Encoding, Weight, + IISMP::{ + get_0Call, get_1Call, post_0Call, post_1Call, Get, GetDispatched_0, + GetDispatched_1, Post, PostDispatched_0, PostDispatched_1, + }, + }, + transports::ismp::ID as ISMP_MODULE_ID, + Event::{IsmpGetResponseReceived, IsmpPostResponseReceived}, + }; + use pallet_ismp::offchain::Leaf; + use pop_api::messaging::ismp::{IsmpGetCompleted, IsmpPostCompleted, PRECOMPILE_ADDRESS}; + #[cfg(feature = "devnet")] + use pop_runtime_devnet::config::ismp::Router; + use sp_runtime::offchain::OffchainOverlayedChange; + + use super::*; + + #[test] + fn get_works() { + let origin = ALICE; + let key = b"some_key".to_vec(); + let timeout = 100_000u64; + let height = 0u64; + let request = Get { + destination: ASSET_HUB, + height, + timeout, + context: b"some_context".to_vec().into(), + keys: vec![key.clone().into()].into(), + }; + let response = vec![StorageValue { key, value: Some(b"some_value".to_vec()) }]; + + // Create a get request. + let mut ext = ExtBuilder::new().build(); + let (contract, id, commitment) = ext.execute_with(|| { + let contract = Contract::new(&origin, INIT_VALUE); + + let id = contract.get(request, U256::zero(), None).unwrap(); + assert_eq!(contract.poll_status(id), MessageStatus::Pending); + let Some(Message::Ismp{ commitment, .. }) = Messaging::get(id) else { panic!() }; + let expected = GetDispatched_0 { origin: contract.address.0.into(), id, commitment: commitment.0.into() }.encode_data(); + assert_eq!(last_contract_event(&PRECOMPILE_ADDRESS), expected); + assert!(System::events().iter().any(|e| { + matches!(e.event, + RuntimeEvent::Ismp(pallet_ismp::Event::Request { dest_chain, source_chain , ..}) + if dest_chain == StateMachine::Polkadot(ASSET_HUB) && source_chain == StateMachine::Polkadot(100) + )})); + + (contract, id, commitment) + }); + + // Look up the request within offchain state in order to provide a response. + let Request::Get(get) = get_ismp_request(&mut ext) else { panic!() }; + + // Provide a response. + ext.execute_with(|| { + let module = Router::default().module_for_id(ISMP_MODULE_ID.to_vec()).unwrap(); + assert_ok!( + module.on_response(Response::Get(GetResponse { get, values: response.clone() })) + ); + System::assert_has_event( + IsmpGetResponseReceived { dest: contract.address, id, commitment }.into(), + ); + + assert_eq!(contract.poll_status(id), MessageStatus::Complete); + assert_eq!(contract.get_response(id).0, response.encode()); + assert_ok!(contract.remove(id)); + }); + } + + #[test] + fn get_with_callback_works() { + let origin = ALICE; + let key = b"some_key".to_vec(); + let timeout = 100_000u64; + let height = 0u64; + let request = Get { + destination: ASSET_HUB, + height, + timeout, + context: b"some_context".to_vec().into(), + keys: vec![key.clone().into()].into(), + }; + let response = vec![StorageValue { key, value: Some(b"some_value".to_vec()) }]; + + // Create a get request with callback. + let mut ext = ExtBuilder::new().build(); + let (contract, id, commitment) = ext.execute_with(|| { + let contract = Contract::new(&origin, INIT_VALUE); + + let callback = Callback { + destination: contract.address.0.into(), + encoding: Encoding::SolidityAbi, + selector: 0x9bf78ffbu32.into(), + gasLimit: Weight { refTime: 1_100_000_000, proofSize: 120_000 }, + storageDepositLimit: alloy::U256::from(1 * UNIT / 5) + }; + let id = contract.get(request, U256::zero(), Some(callback.clone())).unwrap(); + assert_eq!(contract.poll_status(id), MessageStatus::Pending); + let Some(Message::Ismp { commitment, .. }) = Messaging::get(id) else { panic!() }; + let expected = GetDispatched_1 { + origin: contract.address.0.into(), + id, + commitment: commitment.0.into(), + callback, + } + .encode_data(); + assert_eq!(last_contract_event(&PRECOMPILE_ADDRESS), expected); + assert!(System::events().iter().any(|e| { + matches!(e.event, + RuntimeEvent::Ismp(pallet_ismp::Event::Request { dest_chain, source_chain , ..}) + if dest_chain == StateMachine::Polkadot(ASSET_HUB) && source_chain == StateMachine::Polkadot(100) ) + })); + + (contract, id, commitment) + }); + + // Look up the request within offchain state in order to provide a response. + let Request::Get(get) = get_ismp_request(&mut ext) else { panic!() }; + + // Provide a response. + ext.execute_with(|| { + let module = Router::default().module_for_id(ISMP_MODULE_ID.to_vec()).unwrap(); + assert_ok!( + module.on_response(Response::Get(GetResponse { get, values: response.clone() })) + ); + System::assert_has_event( + IsmpGetResponseReceived { dest: contract.address, id, commitment }.into(), + ); + assert!(System::events().iter().any(|e| { + matches!(&e.event, + RuntimeEvent::Messaging(CallbackExecuted { origin, id: message_id, ..}) + if origin == &contract.account_id() && *message_id == id + ) + })); + + assert_eq!( + contract.last_event(), + IsmpGetCompleted { + id, + response: response + .into_iter() + .map(|v| pop_api::messaging::ismp::StorageValue { + key: DynBytes(v.key), + value: v.value.map(|v| DynBytes(v)) + }) + .collect() + } + .encode() + ); + assert_eq!(contract.poll_status(id), MessageStatus::NotFound); + }); + } + + #[test] + fn post_works() { + let origin = ALICE; + let timeout = 100_000u64; + let request = Post { + destination: HYPERBRIDGE, + to: vec![255u8; 20].into(), + timeout, + data: b"some_data".to_vec().into(), + }; + let response = b"some_value".to_vec(); + + // Create a post request. + let mut ext = ExtBuilder::new().build(); + let (contract, id, commitment) = ext.execute_with(|| { + let contract = Contract::new(&origin, INIT_VALUE); + + let id = contract.post(request, U256::zero(), None).unwrap(); + assert_eq!(contract.poll_status(id), MessageStatus::Pending); + let Some(Message::Ismp{ commitment, .. }) = Messaging::get(id) else { panic!() }; + let expected = PostDispatched_0 { origin: contract.address.0.into(), id, commitment: commitment.0.into() }.encode_data(); + assert_eq!(last_contract_event(&PRECOMPILE_ADDRESS), expected); + assert!(System::events().iter().any(|e| { + matches!(e.event, + RuntimeEvent::Ismp(pallet_ismp::Event::Request { dest_chain, source_chain , ..}) + if dest_chain == StateMachine::Polkadot(HYPERBRIDGE) && source_chain == StateMachine::Polkadot(100) + ) + })); + + (contract,id, commitment) + }); + + // Look up the request within offchain state in order to provide a response. + let Request::Post(post) = get_ismp_request(&mut ext) else { panic!() }; + + // Provide a response. + ext.execute_with(|| { + let module = Router::default().module_for_id(ISMP_MODULE_ID.to_vec()).unwrap(); + assert_ok!(module.on_response(Response::Post(PostResponse { + post, + response: response.clone(), + timeout_timestamp: timeout, + }))); + System::assert_has_event( + IsmpPostResponseReceived { dest: contract.address, id, commitment }.into(), + ); + + assert_eq!(contract.poll_status(id), MessageStatus::Complete); + assert_eq!(contract.get_response(id).0, response.encode()); + assert_ok!(contract.remove(id)); + }); + } + + #[test] + fn post_with_callback_works() { + let origin = ALICE; + let timeout = 100_000u64; + let request = Post { + destination: HYPERBRIDGE, + to: vec![255u8; 20].into(), + timeout, + data: b"some_data".to_vec().into(), + }; + let response = b"some_value".to_vec(); + + // Create a post request with callback. + let mut ext = ExtBuilder::new().build(); + let (contract, id, commitment) = ext.execute_with(|| { + let contract = Contract::new(&origin, INIT_VALUE); + + let callback = Callback { + destination: contract.address.0.into(), + encoding: Encoding::SolidityAbi, + selector: 0xbe910d67u32.into(), + gasLimit: Weight { refTime: 850_000_000, proofSize: 120_000 }, + storageDepositLimit: alloy::U256::from(1 * UNIT / 5) + }; + let id = contract.post(request, U256::zero(), Some(callback.clone())).unwrap(); + assert_eq!(contract.poll_status(id), MessageStatus::Pending); + let Some(Message::Ismp{ commitment, .. }) = Messaging::get(id) else { panic!() }; + let expected = PostDispatched_1 { origin: contract.address.0.into(), id, commitment: commitment.0.into(), callback }.encode_data(); + assert_eq!(last_contract_event(&PRECOMPILE_ADDRESS), expected); + assert!(System::events().iter().any(|e| { + matches!(e.event, + RuntimeEvent::Ismp(pallet_ismp::Event::Request { dest_chain, source_chain , ..}) + if dest_chain == StateMachine::Polkadot(HYPERBRIDGE) && source_chain == StateMachine::Polkadot(100) + ) + })); + + (contract, id, commitment) + }); + + // Look up the request within offchain state in order to provide a response. + let Request::Post(post) = get_ismp_request(&mut ext) else { panic!() }; + + // Provide a response. + ext.execute_with(|| { + let module = Router::default().module_for_id(ISMP_MODULE_ID.to_vec()).unwrap(); + assert_ok!(module.on_response(Response::Post(PostResponse { + post, + response: response.clone(), + timeout_timestamp: timeout, + }))); + System::assert_has_event( + IsmpPostResponseReceived { dest: contract.address, id, commitment }.into(), + ); + assert!(System::events().iter().any(|e| { + matches!(&e.event, + RuntimeEvent::Messaging(CallbackExecuted { origin, id: message_id, ..}) + if origin == &contract.account_id() && *message_id == id + ) + })); + + assert_eq!( + contract.last_event(), + IsmpPostCompleted { id, response: DynBytes(response) }.encode() + ); + assert_eq!(contract.poll_status(id), MessageStatus::NotFound); + }); + } + + impl Contract { + fn get( + &self, + request: Get, + fee: U256, + callback: Option, + ) -> Result { + let fee = alloy::U256::from_be_bytes(fee.to_big_endian()); + match callback { + None => { + let call = get_0Call { request, fee }; + self.call(&self.creator, call, 0) + }, + Some(callback) => { + let call = get_1Call { request, fee, callback }; + self.call(&self.creator, call, 0) + }, + } + } + + fn post( + &self, + request: Post, + fee: U256, + callback: Option, + ) -> Result { + let fee = alloy::U256::from_be_bytes(fee.to_big_endian()); + match callback { + None => { + let call = post_0Call { request, fee }; + self.call(&self.creator, call, 0) + }, + Some(callback) => { + let call = post_1Call { request, fee, callback }; + self.call(&self.creator, call, 0) + }, + } + } + } + + // Get the last ismp request. + fn get_ismp_request(ext: &mut TestExternalities) -> Request { + // Get commitment from last ismp request event. + let commitment = ext.execute_with(|| { + System::read_events_for_pallet::>() + .iter() + .filter_map(|e| match e { + pallet_ismp::Event::::Request { commitment, .. } => + Some(commitment.clone()), + _ => None, + }) + .last() + .unwrap() + }); + // Read value from offchain storage overlay, stored via `NoOpMmrTree`. + let key = ("storage".as_bytes().to_vec(), (b"no_op", commitment).encode()); + let request = ext + .overlayed_changes() + .offchain() + .overlay() + .changes() + .filter_map(|c| { + (c.0 == &key).then(|| match c.1.value_ref() { + OffchainOverlayedChange::SetValue(value) => { + match Leaf::decode(&mut &value[..]).unwrap() { + Leaf::Request(req) => Some(req), + Leaf::Response(_) => None, + } + }, + _ => None, + }) + }) + .last() + .flatten() + .unwrap(); + // Ensure the request matches the commitment. + assert_eq!(commitment.0, keccak_256(&request.encode())); + request + } +} + +mod xcm { + use ::xcm::prelude::{Junction, Location, MaybeErrorCode::Success, NetworkId, Response}; + use pallet_api_vnext::messaging::precompiles::xcm::v0::{ + Callback, Encoding, Weight, + IXCM::{newQuery_0Call, newQuery_1Call, QueryCreated_0, QueryCreated_1}, + }; + use pop_api::messaging::xcm::{QueryId, XcmCompleted, PRECOMPILE_ADDRESS}; + use xcm_executor::traits::OnResponse; + + use super::*; + + #[test] + fn id_works() { + let origin = ALICE; + ExtBuilder::new().build().execute_with(|| { + let contract = Contract::new(&origin, INIT_VALUE); + assert_eq!(contract.id(), u32::from(ParachainInfo::parachain_id())); + }); + } + + #[test] + fn query_works() { + let origin = ALICE; + let responder = Location::new(1, [Junction::Parachain(ASSET_HUB)]); + let timeout = 100; + let response = Response::DispatchResult(Success); + ExtBuilder::new().build().execute_with(|| { + let contract = Contract::new(&origin, INIT_VALUE); + + // Create a new query and check its status + let (id, query_id) = contract.new_query(responder.encode(), timeout, None).unwrap(); + assert_eq!(query_id, 0); + assert_eq!(contract.poll_status(id), MessageStatus::Pending); + let expected = + QueryCreated_0 { account: contract.address.0.into(), id, queryId: query_id } + .encode_data(); + assert_eq!(last_contract_event(&PRECOMPILE_ADDRESS), expected); + + // Provide a response. + let querier: Location = Junction::AccountId32 { + network: Some(NetworkId::Polkadot), + id: contract.account_id().into(), + } + .into(); + assert!(PolkadotXcm::expecting_response(&responder, query_id, Some(&querier))); + assert_ok!(Messaging::xcm_response( + pallet_xcm::Origin::Response(responder).into(), + query_id, + response.clone() + )); + + assert_eq!(contract.poll_status(id), MessageStatus::Complete); + assert_eq!(contract.get_response(id).0, response.encode()); + assert_ok!(contract.remove(id)); + }); + } + + #[test] + fn query_with_callback_works() { + let origin = ALICE; + let responder = Location::new(1, [Junction::Parachain(ASSET_HUB)]); + let timeout = 100; + let response = Response::DispatchResult(Success); + ExtBuilder::new().build().execute_with(|| { + let contract = Contract::new(&origin, INIT_VALUE); + + // Create a new query and check its status + let callback = Callback { + destination: contract.address.0.into(), + encoding: Encoding::SolidityAbi, + selector: 0x97dbf9fbu32.into(), + gasLimit: Weight { refTime: 850_000_000, proofSize: 120_000 }, + storageDepositLimit: alloy::U256::from(1 * UNIT / 5), + }; + let (id, query_id) = + contract.new_query(responder.encode(), timeout, Some(callback.clone())).unwrap(); + assert_eq!(query_id, 0); + assert_eq!(contract.poll_status(id), MessageStatus::Pending); + let expected = QueryCreated_1 { + account: contract.address.0.into(), + id, + queryId: query_id, + callback, + } + .encode_data(); + assert_eq!(last_contract_event(&PRECOMPILE_ADDRESS), expected); + + // Provide a response. + let querier: Location = Junction::AccountId32 { + network: Some(NetworkId::Polkadot), + id: contract.account_id().into(), + } + .into(); + assert!(PolkadotXcm::expecting_response(&responder, query_id, Some(&querier))); + assert_ok!(Messaging::xcm_response( + pallet_xcm::Origin::Response(responder).into(), + query_id, + response.clone() + )); + assert!(System::events().iter().any(|e| { + matches!(&e.event, + RuntimeEvent::Messaging(CallbackExecuted { origin, id: message_id, ..}) + if origin == &contract.account_id() && *message_id == id + ) + })); + + assert_eq!( + contract.last_event(), + XcmCompleted { id, result: DynBytes(response.encode()) }.encode() + ); + assert_eq!(contract.poll_status(id), MessageStatus::NotFound); + }); + } + + impl Contract { + fn id(&self) -> u32 { + self.call::<_, Error>(&self.creator, idCall {}, 0).unwrap() + } + + fn new_query( + &self, + responder: Vec, + timeout: BlockNumber, + callback: Option, + ) -> Result<(MessageId, QueryId), xcm::Error> { + match callback { + None => { + let call = newQuery_0Call { responder: responder.into(), timeout }; + let result = self.call(&self.creator, call, 0)?; + Ok((result.id, result.queryId)) + }, + Some(callback) => { + let call = newQuery_1Call { responder: responder.into(), timeout, callback }; + let result = self.call(&self.creator, call, 0)?; + Ok((result.id, result.queryId)) + }, + } + } + } +} + +// A simple, strongly typed wrapper for the contract. +struct Contract { + address: H160, + creator: AccountId, +} +impl Contract { + // Create a new instance of the contract through on-chain instantiation. + fn new(origin: &AccountId, value: Balance) -> Self { + let data = vec![]; // Default solidity constructor + let salt = twox_256(&value.to_le_bytes()); + let address = instantiate( + RuntimeOrigin::signed(origin.clone()), + CONTRACT, + value, + GAS_LIMIT, + STORAGE_DEPOSIT_LIMIT, + data, + Some(salt), + ); + Self { address, creator: origin.clone() } + } + + fn get_response(&self, message: MessageId) -> DynBytes { + let call = getResponseCall { message }; + DynBytes(self.call::<_, Error>(&self.creator, call, 0).unwrap().0.into()) + } + + fn poll_status(&self, message: MessageId) -> MessageStatus { + let call = pollStatusCall { message }; + self.call::<_, Error>(&self.creator, call, 0).unwrap() + } + + fn remove(&self, message: MessageId) -> Result<(), Error> { + let call = remove_0Call { message }; + self.call(&self.creator, call, 0)?; + Ok(()) + } + + fn account_id(&self) -> AccountId { + to_account_id(&self.address) + } + + fn call( + &self, + origin: &AccountId, + call: T, + value: Balance, + ) -> Result { + let origin = RuntimeOrigin::signed(origin.clone()); + let dest = self.address.clone(); + let data = call.abi_encode(); + let result = bare_call(origin, dest, value, GAS_LIMIT, STORAGE_DEPOSIT_LIMIT, data) + .expect("should work"); + match result.did_revert() { + true => Err(E::decode(&result.data).expect(&format!( + "unable to decode error value from '{:?}'", + String::from_utf8_lossy(&result.data) + ))), + false => + Ok(T::abi_decode_returns(&result.data).expect("unable to decode success value")), + } + } + + fn last_event(&self) -> Vec { + last_contract_event(&self.address) + } +} diff --git a/pop-api-vnext/src/errors.rs b/pop-api-vnext/src/errors.rs new file mode 100644 index 000000000..ff449daa5 --- /dev/null +++ b/pop-api-vnext/src/errors.rs @@ -0,0 +1,138 @@ +pub use ink::sol::FixedBytes; + +/// Arithmetic errors. +#[cfg_attr(feature = "std", derive(Debug, PartialEq))] +#[derive(Copy, Clone, ink::SolDecode, ink::SolEncode)] +#[ink::scale_derive(Decode, Encode, TypeInfo)] +pub enum ArithmeticError { + /// Underflow. + Underflow, + /// Overflow. + Overflow, + /// Division by zero. + DivisionByZero, +} + +/// @Reason why a dispatch call failed. +#[cfg_attr(feature = "std", derive(Debug, PartialEq))] +#[derive(Copy, Clone, ink::SolDecode, ink::SolEncode)] +#[ink::scale_derive(Decode, Encode, TypeInfo)] +pub enum DispatchError { + /// Some error occurred. + Other, + /// Failed to lookup some data. + CannotLookup, + /// A bad origin. + BadOrigin, + /// A custom error in a module. + Module, + /// At least one consumer is remaining so the account cannot be destroyed. + ConsumerRemaining, + /// There are no providers so the account cannot be created. + NoProviders, + /// There are too many consumers so the account cannot be created. + TooManyConsumers, + /// An error to do with tokens. + Token, + /// An arithmetic error. + Arithmetic, + /// The number of transactional layers has been reached, or we are not in a transactional + /// layer. + Transactional, + /// Resources exhausted, e.g. attempt to read/write data which is too large to manipulate. + Exhausted, + /// The state is corrupt; this is generally not going to fix itself. + Corruption, + /// Some resource (e.g. a preimage) is unavailable right now. This might fix itself later. + Unavailable, + /// Root origin is not allowed. + RootNotAllowed, + /// An error with tries. + Trie, +} + +/// Reason why a pallet call failed. +#[cfg_attr(feature = "std", derive(Debug, PartialEq))] +#[derive(Clone, ink::SolDecode, ink::SolEncode)] +#[ink::scale_derive(Decode, Encode, TypeInfo)] +pub struct ModuleError { + /// Module index, matching the metadata module index. + pub index: u8, + /// Module specific error value. + pub error: FixedBytes<4>, +} + +/// Description of what went wrong when trying to complete an operation on a token. +#[cfg_attr(feature = "std", derive(Debug, PartialEq))] +#[derive(Copy, Clone, ink::SolDecode, ink::SolEncode)] +#[ink::scale_derive(Decode, Encode, TypeInfo)] +pub enum TokenError { + /// Funds are unavailable. + FundsUnavailable, + /// Some part of the balance gives the only provider reference to the account and thus cannot + /// be (re)moved. + OnlyProvider, + /// Account cannot exist with the funds that would be given. + BelowMinimum, + /// Account cannot be created. + CannotCreate, + /// The token in question is unknown. + Unknown, + /// Funds exist but are frozen. + Frozen, + /// Operation is not supported by the token. + Unsupported, + /// Account cannot be created for a held balance. + CannotCreateHold, + /// Withdrawal would cause unwanted loss of account. + NotExpendable, + /// Account cannot receive the tokens. + Blocked, +} + +/// @Errors related to transactional storage layers. +#[cfg_attr(feature = "std", derive(Debug, PartialEq))] +#[derive(Copy, Clone, ink::SolDecode, ink::SolEncode)] +#[ink::scale_derive(Decode, Encode, TypeInfo)] +pub enum TransactionalError { + /// Too many transactional layers have been spawned. + LimitReached, + /// A transactional layer was expected, but does not exist. + NoLayer, +} + +/// A runtime friendly error type for tries. +#[cfg_attr(feature = "std", derive(Debug, PartialEq))] +#[derive(Copy, Clone, ink::SolDecode, ink::SolEncode)] +#[ink::scale_derive(Decode, Encode, TypeInfo)] +pub enum TrieError { + /// Attempted to create a trie with a state root not in the DB. + InvalidStateRoot, + /// Trie item not found in the database, + IncompleteDatabase, + /// A value was found in the trie with a nibble key that was not byte-aligned. + ValueAtIncompleteKey, + /// Corrupt Trie item. + DecoderError, + /// Hash is not value. + InvalidHash, + /// The statement being verified contains multiple key-value pairs with the same key. + DuplicateKey, + /// The proof contains at least one extraneous node. + ExtraneousNode, + /// The proof contains at least one extraneous value which should have been omitted from the + /// proof. + ExtraneousValue, + /// The proof contains at least one extraneous hash reference the should have been omitted. + ExtraneousHashReference, + /// The proof contains an invalid child reference that exceeds the hash length. + InvalidChildReference, + /// The proof indicates that an expected value was not found in the trie. + ValueMismatch, + /// The proof is missing trie nodes required to verify. + IncompleteProof, + /// The root hash computed from the proof is incorrect. + RootMismatch, + /// One of the proof nodes could not be decoded. + DecodeError, +} diff --git a/pop-api-vnext/src/fungibles.rs b/pop-api-vnext/src/fungibles.rs new file mode 100644 index 000000000..ad69a57a9 --- /dev/null +++ b/pop-api-vnext/src/fungibles.rs @@ -0,0 +1,17 @@ +use ink::{ + contract_ref, + prelude::{string::String, vec::Vec}, + U256, +}; +use sol::Sol; +pub use v0::*; + +use super::*; + +/// APIs for fungible tokens conforming to the ERC20 standard. +pub mod erc20; + +/// The first version of the Fungibles API. +pub mod v0; + +pub type TokenId = u32; diff --git a/pop-api-vnext/src/fungibles/README.md b/pop-api-vnext/src/fungibles/README.md new file mode 100644 index 000000000..88d83b65f --- /dev/null +++ b/pop-api-vnext/src/fungibles/README.md @@ -0,0 +1,18 @@ +## Fungibles API + +The `fungibles` module provides an api for interacting and managing fungible tokens. + +It includes the following interfaces: + +1. `Fungibles` +2. `Erc20` +3. `Erc20Metadata` + +To use it in your contract add the `fungibles` feature to the `pop-api` dependency. + +```toml +# Cargo.toml +pop-api = { git = "https://github.com/r0gue-io/pop-node", default-features = false, features = [ "fungibles" ] } +``` + +Check out the [examples](../../examples/fungibles/) to learn how you can use the fungibles api. diff --git a/pop-api-vnext/src/fungibles/erc20.rs b/pop-api-vnext/src/fungibles/erc20.rs new file mode 100644 index 000000000..3a341144f --- /dev/null +++ b/pop-api-vnext/src/fungibles/erc20.rs @@ -0,0 +1,7 @@ +pub use v0::*; + +use super::{contract_ref, prefixed_address, Address, Pop, Sol, String, TokenId, Vec, U256}; +use crate::ensure; + +/// The first version of the Erc20 API. +pub mod v0; diff --git a/pop-api-vnext/src/fungibles/erc20/v0.rs b/pop-api-vnext/src/fungibles/erc20/v0.rs new file mode 100644 index 000000000..49f72c511 --- /dev/null +++ b/pop-api-vnext/src/fungibles/erc20/v0.rs @@ -0,0 +1,183 @@ +pub use errors::{Error, Error::*}; +pub use events::*; + +use super::*; + +/// Standard ERC-20 errors. See https://eips.ethereum.org/EIPS/eip-6093 for more details. +mod errors; +mod events; + +// Precompile index within the runtime +const PRECOMPILE: u16 = 2; + +/// Interface of the ERC-20 standard. +#[ink::trait_definition] +pub trait Erc20 { + /// Returns the value of tokens in existence. + #[ink(message)] + #[allow(non_snake_case)] + fn totalSupply(&self) -> U256; + + /// Returns the value of tokens owned by `account`. + #[ink(message)] + #[allow(non_snake_case)] + fn balanceOf(&self, account: Address) -> U256; + + /// Moves a `value` amount of tokens from the caller's account to `to`. + /// + /// Returns a boolean value indicating whether the operation succeeded. + /// + /// Emits a [`Transfer`] event. + #[ink(message)] + fn transfer(&mut self, to: Address, value: U256) -> Result; + + /// Returns the remaining number of tokens that `spender` will be allowed to spend + /// on behalf of `owner` through [`transfer_from`]. This is zero by default. + /// + /// This value changes when `approve` or `[`transfer_from`] are called. + #[ink(message)] + fn allowance(&self, owner: Address, spender: Address) -> U256; + + /// Sets a `value` amount of tokens as the allowance of `spender` over the caller's + /// tokens. + /// + /// Returns a boolean value indicating whether the operation succeeded. + /// + /// Emits an [`Approval`] event. + #[ink(message)] + fn approve(&mut self, spender: Address, value: U256) -> Result; + + /// Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. + /// `value` is then deducted from the caller's allowance. + /// + /// Returns a boolean value indicating whether the operation succeeded. + /// + /// Emits a [`Transfer`] event. + #[ink(message)] + #[allow(non_snake_case)] + fn transferFrom(&mut self, from: Address, to: Address, value: U256) -> Result; +} + +/// Returns the value of tokens in existence. +#[inline] +pub fn total_supply(token: TokenId) -> U256 { + let address = prefixed_address(PRECOMPILE, token); + let precompile: contract_ref!(Erc20, Pop, Sol) = address.into(); + precompile.totalSupply() +} + +/// Returns the value of tokens owned by `account`. +#[inline] +pub fn balance_of(token: TokenId, account: Address) -> U256 { + let address = prefixed_address(PRECOMPILE, token); + let precompile: contract_ref!(Erc20, Pop, Sol) = address.into(); + precompile.balanceOf(account) +} + +/// Moves a `value` amount of tokens from the caller's account to `to`. +/// +/// Returns a boolean value indicating whether the operation succeeded. +/// +/// Emits a [`Transfer`] event. +#[inline] +pub fn transfer(token: TokenId, to: Address, value: U256) -> Result { + ensure!(to != Address::zero(), ERC20InvalidReceiver(to)); + ensure!(value != U256::zero(), ERC20InsufficientValue); + + let address = prefixed_address(PRECOMPILE, token); + let mut precompile: contract_ref!(Erc20, Pop, Sol) = address.into(); + precompile.transfer(to, value) +} + +/// Returns the remaining number of tokens that `spender` will be allowed to spend +/// on behalf of `owner` through [`transfer_from`]. This is zero by default. +/// +/// This value changes when `approve` or [`transfer_from`] are called. +#[inline] +pub fn allowance(token: TokenId, owner: Address, spender: Address) -> U256 { + let address = prefixed_address(PRECOMPILE, token); + let precompile: contract_ref!(Erc20, Pop, Sol) = address.into(); + precompile.allowance(owner, spender) +} + +/// Sets a `value` amount of tokens as the allowance of `spender` over the caller's +/// tokens. +/// +/// Returns a boolean value indicating whether the operation succeeded. +/// +/// Emits an [`Approval`] event. +#[inline] +pub fn approve(token: TokenId, spender: Address, value: U256) -> Result { + ensure!(spender != Address::zero(), ERC20InvalidSpender(spender)); + + let address = prefixed_address(PRECOMPILE, token); + let mut precompile: contract_ref!(Erc20, Pop, Sol) = address.into(); + precompile.approve(spender, value) +} + +/// Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. +/// `value` is then deducted from the caller's allowance. +/// +/// Returns a boolean value indicating whether the operation succeeded. +/// +/// Emits a [`Transfer`] event. +#[inline] +pub fn transfer_from( + token: TokenId, + from: Address, + to: Address, + value: U256, +) -> Result { + ensure!(from != Address::zero(), ERC20InvalidSender(from)); + ensure!(to != Address::zero() && to != from, ERC20InvalidReceiver(to)); + ensure!(value != U256::zero(), ERC20InsufficientValue); + + let address = prefixed_address(PRECOMPILE, token); + let mut precompile: contract_ref!(Erc20, Pop, Sol) = address.into(); + precompile.transferFrom(from, to, value) +} + +/// Extensions to the ERC-20 standard. +pub mod extensions { + use super::*; + + /// Interface for the optional metadata functions from the ERC-20 standard. + #[ink::trait_definition] + pub trait Erc20Metadata { + /// Returns the name of the token. + #[ink(message)] + fn name(&self) -> String; + + /// Returns the symbol of the token. + #[ink(message)] + fn symbol(&self) -> String; + + /// Returns the decimals places of the token. + #[ink(message)] + fn decimals(&self) -> u8; + } + + /// Returns the name of the token. + #[inline] + pub fn name(token: TokenId) -> String { + let address = prefixed_address(PRECOMPILE, token); + let precompile: contract_ref!(Erc20Metadata, Pop, Sol) = address.into(); + precompile.name() + } + + /// Returns the symbol of the token. + #[inline] + pub fn symbol(token: TokenId) -> String { + let address = prefixed_address(PRECOMPILE, token); + let precompile: contract_ref!(Erc20Metadata, Pop, Sol) = address.into(); + precompile.symbol() + } + + /// Returns the decimals places of the token. + #[inline] + pub fn decimals(token: TokenId) -> u8 { + let address = prefixed_address(PRECOMPILE, token); + let precompile: contract_ref!(Erc20Metadata, Pop, Sol) = address.into(); + precompile.decimals() + } +} diff --git a/pop-api-vnext/src/fungibles/erc20/v0/errors.rs b/pop-api-vnext/src/fungibles/erc20/v0/errors.rs new file mode 100644 index 000000000..c430e435b --- /dev/null +++ b/pop-api-vnext/src/fungibles/erc20/v0/errors.rs @@ -0,0 +1,282 @@ +use ink::{ + sol::{SolDecode, SolErrorDecode}, + sol_error_selector, +}; + +use super::*; +use crate::{ + errors::{ + ArithmeticError, DispatchError, FixedBytes, ModuleError, TokenError, TransactionalError, + TrieError, + }, + impl_sol_encoding_for_precompile, + sol::PrecompileError, +}; + +#[cfg_attr(feature = "std", derive(Debug, PartialEq))] +#[derive(ink::SolErrorEncode)] +#[ink::scale_derive(Decode, Encode, TypeInfo)] +pub enum Error { + /// An arithmetic error occurred. + Arithmetic(ArithmeticError), + /// Reason why a dispatch call failed. + Dispatch(DispatchError), + /// Indicates a failure with the `spender`’s `allowance`. + ERC20InsufficientAllowance(Address, U256, U256), + /// Indicates an error related to the current `balance` of a `sender`. + ERC20InsufficientBalance(Address, U256, U256), + /// Indicates an error related to a specified `value`. + ERC20InsufficientValue, + /// Indicates a failure with the token `receiver`. + ERC20InvalidReceiver(Address), + /// Indicates a failure with the token `sender`. + ERC20InvalidSender(Address), + /// Indicates a failure with the `spender` to be approved. + ERC20InvalidSpender(Address), + /// Reason why a pallet call failed. + Module { + /// Module index, matching the metadata module index. + index: u8, + /// Module specific error value. + error: FixedBytes<4>, + }, + /// An error to do with tokens. + Token(TokenError), + /// The number of transactional layers has been reached, or we are not in a transactional + /// layer. + Transactional(TransactionalError), + /// An error with tries. + Trie(TrieError), +} + +impl_sol_encoding_for_precompile!(Error); + +impl PrecompileError for Error { + fn decode(data: &[u8]) -> Result { + if data.len() < 4 { + return Err(ink::sol::Error); + } + + match data[..4].try_into().expect("length checked above") { + ARITHMETIC => Ok(Self::Arithmetic(ArithmeticError::decode(&data[4..])?)), + DISPATCH => Ok(Self::Dispatch(DispatchError::decode(&data[4..])?)), + INSUFFICIENT_ALLOWANCE => { + #[derive(ink::SolErrorDecode)] + struct ERC20InsufficientAllowance(Address, U256, U256); + + let decoded = ERC20InsufficientAllowance::decode(data)?; + Ok(Self::ERC20InsufficientAllowance(decoded.0, decoded.1, decoded.2)) + }, + INSUFFICIENT_BALANCE => { + #[derive(ink::SolErrorDecode)] + struct ERC20InsufficientBalance(Address, U256, U256); + + let decoded = ERC20InsufficientBalance::decode(data)?; + Ok(Self::ERC20InsufficientBalance(decoded.0, decoded.1, decoded.2)) + }, + INSUFFICIENT_VALUE => Ok(Self::ERC20InsufficientValue), + INVALID_RECEIVER => { + #[derive(ink::SolErrorDecode)] + struct ERC20InvalidReceiver(Address); + + let decoded = ERC20InvalidReceiver::decode(data)?; + Ok(Self::ERC20InvalidReceiver(decoded.0)) + }, + INVALID_SENDER => { + #[derive(ink::SolErrorDecode)] + struct ERC20InvalidSender(Address); + + let decoded = ERC20InvalidSender::decode(data)?; + Ok(Self::ERC20InvalidSender(decoded.0)) + }, + INVALID_SPENDER => { + #[derive(ink::SolErrorDecode)] + struct ERC20InvalidSpender(Address); + + let decoded = ERC20InvalidSpender::decode(data)?; + Ok(Self::ERC20InvalidSpender(decoded.0)) + }, + MODULE => { + let ModuleError { index, error } = ModuleError::decode(&data[4..])?; + Ok(Self::Module { index, error }) + }, + TOKEN => Ok(Self::Token(TokenError::decode(&data[4..])?)), + TRANSACTIONAL => Ok(Self::Transactional(TransactionalError::decode(&data[4..])?)), + TRIE => Ok(Self::Trie(TrieError::decode(&data[4..])?)), + _ => Err(ink::sol::Error), + } + } +} + +const ARITHMETIC: [u8; 4] = sol_error_selector!("Arithmetic", (u8,)); +const DISPATCH: [u8; 4] = sol_error_selector!("Dispatch", (u8,)); +const INSUFFICIENT_ALLOWANCE: [u8; 4] = + sol_error_selector!("ERC20InsufficientAllowance", (Address, U256, U256)); +const INSUFFICIENT_BALANCE: [u8; 4] = + sol_error_selector!("ERC20InsufficientBalance", (Address, U256, U256)); +const INSUFFICIENT_VALUE: [u8; 4] = sol_error_selector!("ERC20InsufficientValue", ()); +const INVALID_RECEIVER: [u8; 4] = sol_error_selector!("ERC20InvalidReceiver", (Address,)); +const INVALID_SENDER: [u8; 4] = sol_error_selector!("ERC20InvalidSender", (Address,)); +const INVALID_SPENDER: [u8; 4] = sol_error_selector!("ERC20InvalidSpender", (Address,)); +const MODULE: [u8; 4] = sol_error_selector!("Module", (u8, FixedBytes<4>)); +const TOKEN: [u8; 4] = sol_error_selector!("Token", (u8,)); +const TRANSACTIONAL: [u8; 4] = sol_error_selector!("Transactional", (u8,)); +const TRIE: [u8; 4] = sol_error_selector!("Trie", (u8,)); + +#[test] +fn error_decoding_works() { + for (encoded, expected) in [ + ( + "7fdb06c50000000000000000000000000000000000000000000000000000000000000001", + Arithmetic(ArithmeticError::Overflow), + ), + ( + "20c5a2a9000000000000000000000000000000000000000000000000000000000000000d", + Dispatch(DispatchError::RootNotAllowed), + ), + ( + "fb8f41b2000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + ERC20InsufficientAllowance( + [255; 20].into(), + U256::MAX, + U256::MAX, + ), + ), + ( + "e450d38c000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + ERC20InsufficientBalance( + [255; 20].into(), + U256::MAX, + U256::MAX, + ), + ), + ( + "bffe98ad", + ERC20InsufficientValue, + ), + ( + "ec442f05000000000000000000000000ffffffffffffffffffffffffffffffffffffffff", + ERC20InvalidReceiver([255; 20].into()), + ), + ( + "96c6fd1e000000000000000000000000ffffffffffffffffffffffffffffffffffffffff", + ERC20InvalidSender([255; 20].into()), + ), + ( + "94280d62000000000000000000000000ffffffffffffffffffffffffffffffffffffffff", + ERC20InvalidSpender([255; 20].into()), + ), + ( + "3323f3c100000000000000000000000000000000000000000000000000000000000000ffffffffff00000000000000000000000000000000000000000000000000000000", + Module { index: 255, error: FixedBytes([255; 4]) }, + ), + ( + "57fdc3d80000000000000000000000000000000000000000000000000000000000000009", + Token(TokenError::Blocked), + ), + ( + "3008a37e0000000000000000000000000000000000000000000000000000000000000001", + Transactional(TransactionalError::NoLayer), + ), + ( + "3ea87b59000000000000000000000000000000000000000000000000000000000000000d", + Trie(TrieError::DecodeError), + ), + ] { + let data = hex::decode(encoded).unwrap(); + let decoded = ::decode(data.as_slice()).expect(&format!("unable to decode {encoded}")); + assert_eq!(decoded, expected) + } +} + +#[test] +fn error_encoding_works() { + use ink::SolEncode; + + for (result, expected) in [ + ( + Arithmetic(ArithmeticError::Overflow).encode(), + "7fdb06c50000000000000000000000000000000000000000000000000000000000000001", + ), + ( + Dispatch(DispatchError::BadOrigin).encode(), + "20c5a2a90000000000000000000000000000000000000000000000000000000000000002", + ), + ( + ERC20InsufficientAllowance([255u8; 20].into(), U256::MAX, U256::MAX).encode(), + "fb8f41b2000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + ), + ( + ERC20InsufficientBalance([255u8; 20].into(), U256::MAX, U256::MAX).encode(), + "e450d38c000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + ), + (ERC20InsufficientValue.encode(),"bffe98ad"), + ( + ERC20InvalidReceiver([255u8; 20].into()).encode(), + "ec442f05000000000000000000000000ffffffffffffffffffffffffffffffffffffffff" + ), + ( + ERC20InvalidSender([255u8; 20].into()).encode(), + "96c6fd1e000000000000000000000000ffffffffffffffffffffffffffffffffffffffff" + ), + ( + ERC20InvalidSpender([255u8; 20].into()).encode(), + "94280d62000000000000000000000000ffffffffffffffffffffffffffffffffffffffff" + ), + ( + Module{ index: 255, error: FixedBytes([255; 4]) }.encode(), + "3323f3c100000000000000000000000000000000000000000000000000000000000000ffffffffff00000000000000000000000000000000000000000000000000000000", + ), + ( + Token(TokenError::Unknown).encode(), + "57fdc3d80000000000000000000000000000000000000000000000000000000000000004", + ), + ( + Token(TokenError::BelowMinimum).encode(), + "57fdc3d80000000000000000000000000000000000000000000000000000000000000002", + ), + ( + Transactional(TransactionalError::NoLayer).encode(), + "3008a37e0000000000000000000000000000000000000000000000000000000000000001", + ), + ( + Trie(TrieError::DecodeError).encode(), + "3ea87b59000000000000000000000000000000000000000000000000000000000000000d", + ), + ] { + assert_eq!(hex::encode(result), expected) + } +} + +#[test] +fn selectors_work() { + use ink::SolEncode; + + for (encoded, expected) in [ + (Error::Arithmetic(ArithmeticError::Overflow).encode()[..4].to_vec(), ARITHMETIC), + (Error::Dispatch(DispatchError::BadOrigin).encode()[..4].to_vec(), DISPATCH), + ( + Error::ERC20InsufficientAllowance(Address::default(), U256::default(), U256::default()) + .encode(), + INSUFFICIENT_ALLOWANCE, + ), + ( + Error::ERC20InsufficientBalance(Address::default(), U256::default(), U256::default()) + .encode(), + INSUFFICIENT_BALANCE, + ), + (Error::ERC20InsufficientValue.encode(), INSUFFICIENT_VALUE), + (Error::ERC20InvalidReceiver(Address::default()).encode(), INVALID_RECEIVER), + (Error::ERC20InvalidSender(Address::default()).encode(), INVALID_SENDER), + (Error::ERC20InvalidSpender(Address::default()).encode(), INVALID_SPENDER), + (Error::Module { index: 255, error: FixedBytes([255; 4]) }.encode()[..4].to_vec(), MODULE), + (Error::Token(TokenError::Unknown).encode()[..4].to_vec(), TOKEN), + ( + Error::Transactional(TransactionalError::LimitReached).encode()[..4].to_vec(), + TRANSACTIONAL, + ), + (Error::Trie(TrieError::DecodeError).encode()[..4].to_vec(), TRIE), + ] { + assert_eq!(encoded[..4], expected); + } +} diff --git a/pop-api-vnext/src/fungibles/erc20/v0/events.rs b/pop-api-vnext/src/fungibles/erc20/v0/events.rs new file mode 100644 index 000000000..df94f64bc --- /dev/null +++ b/pop-api-vnext/src/fungibles/erc20/v0/events.rs @@ -0,0 +1,32 @@ +use super::*; + +/// Emitted when the allowance of a `spender` for an `owner` is set by a call to +/// [`approve`]. `value` is the new allowance. +#[ink::event] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct Approval { + /// The owner providing the allowance. + #[ink(topic)] + pub owner: Address, + /// The beneficiary of the allowance. + #[ink(topic)] + pub spender: Address, + /// The new allowance amount. + pub value: U256, +} + +/// Emitted when `value` tokens are moved from one account (`from`) to another (`to`). +/// +/// Note that `value` may be zero. +#[ink::event] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct Transfer { + /// The source of the transfer. The zero address when minting. + #[ink(topic)] + pub from: Address, + /// The recipient of the transfer. The zero address when burning. + #[ink(topic)] + pub to: Address, + /// The amount transferred (or minted/burned). + pub value: U256, +} diff --git a/pop-api-vnext/src/fungibles/v0.rs b/pop-api-vnext/src/fungibles/v0.rs new file mode 100644 index 000000000..0e32a2f9d --- /dev/null +++ b/pop-api-vnext/src/fungibles/v0.rs @@ -0,0 +1,451 @@ +pub use errors::{Error, Error::*}; +pub use events::*; + +use super::{ + contract_ref, ensure, erc20::v0 as erc20, fixed_address, Address, Pop, Sol, String, TokenId, + Vec, U256, +}; + +mod errors; +mod events; + +// Precompile index within the runtime +const PRECOMPILE: u16 = 1; + +/// The fungibles API offers a streamlined interface for interacting with fungible +/// tokens. The goal is to provide a simplified, consistent API that adheres to standards in +/// the smart contract space. +#[ink::trait_definition] +pub trait Fungibles { + /// Transfers `value` amount of tokens from the caller's account to account `to`. + /// + /// # Parameters + /// - `token` - The token to transfer. + /// - `to` - The recipient account. + /// - `value` - The number of tokens to transfer. + #[ink(message)] + fn transfer(&self, token: TokenId, to: Address, value: U256) -> Result<(), Error>; + + /// Transfers `value` amount tokens on behalf of `from` to account `to`. + /// + /// # Parameters + /// - `token` - The token to transfer. + /// - `from` - The account from which the token balance will be withdrawn. + /// - `to` - The recipient account. + /// - `value` - The number of tokens to transfer. + #[ink(message)] + #[allow(non_snake_case)] + fn transferFrom( + &self, + token: TokenId, + from: Address, + to: Address, + value: U256, + ) -> Result<(), Error>; + + /// Approves `spender` to spend `value` amount of tokens on behalf of the caller. + /// + /// # Parameters + /// - `token` - The token to approve. + /// - `spender` - The account that is allowed to spend the tokens. + /// - `value` - The number of tokens to approve. + #[ink(message)] + fn approve(&self, token: TokenId, spender: Address, value: U256) -> Result<(), Error>; + + /// Increases the allowance of `spender` by `value` amount of tokens. + /// + /// # Parameters + /// - `token` - The token to have an allowance increased. + /// - `spender` - The account that is allowed to spend the tokens. + /// - `value` - The number of tokens to increase the allowance by. + #[ink(message)] + #[allow(non_snake_case)] + fn increaseAllowance( + &self, + token: TokenId, + spender: Address, + value: U256, + ) -> Result; + + /// Decreases the allowance of `spender` by `value` amount of tokens. + /// + /// # Parameters + /// - `token` - The token to have an allowance decreased. + /// - `spender` - The account that is allowed to spend the tokens. + /// - `value` - The number of tokens to decrease the allowance by. + #[ink(message)] + #[allow(non_snake_case)] + fn decreaseAllowance( + &self, + token: TokenId, + spender: Address, + value: U256, + ) -> Result; + + /// Create a new token with an automatically generated identifier. + /// + /// # Parameters + /// - `admin` - The account that will administer the token. + /// - `min_balance` - The minimum balance required for accounts holding this token. + /// + /// NOTE: The minimum balance must be non-zero. + #[ink(message)] + fn create(&self, admin: Address, min_balance: U256) -> Result; + + /// Start the process of destroying a token. + /// + /// # Parameters + /// - `token` - The token to be destroyed. + #[ink(message)] + #[allow(non_snake_case)] + fn startDestroy(&self, token: TokenId) -> Result<(), Error>; + + /// Set the metadata for a token. + /// + /// # Parameters + /// - `token`: The token to update. + /// - `name`: The user friendly name of this token. + /// - `symbol`: The exchange symbol for this token. + /// - `decimals`: The number of decimals this token uses to represent one unit. + #[ink(message)] + #[allow(non_snake_case)] + fn setMetadata( + &self, + token: TokenId, + name: String, + symbol: String, + decimals: u8, + ) -> Result<(), Error>; + + /// Clear the metadata for a token. + /// + /// # Parameters + /// - `token` - The token to update. + #[ink(message)] + #[allow(non_snake_case)] + fn clearMetadata(&self, token: TokenId) -> Result<(), Error>; + + /// Creates `value` amount of tokens and assigns them to `account`, increasing the total + /// supply. + /// + /// # Parameters + /// - `token` - The token to mint. + /// - `account` - The account to be credited with the created tokens. + /// - `value` - The number of tokens to mint. + #[ink(message)] + fn mint(&self, token: TokenId, account: Address, value: U256) -> Result<(), Error>; + + /// Destroys `value` amount of tokens from `account`, reducing the total supply. + /// + /// # Parameters + /// - `token` - The token to burn. + /// - `account` - The account from which the tokens will be destroyed. + /// - `value` - The number of tokens to destroy. + #[ink(message)] + fn burn(&self, token: TokenId, account: Address, value: U256) -> Result<(), Error>; + + /// Total token supply for a specified token. + /// + /// # Parameters + /// - `token` - The token. + #[ink(message)] + #[allow(non_snake_case)] + fn totalSupply(&self, token: TokenId) -> U256; + + /// Account balance for a specified `token` and `owner`. + /// + /// # Parameters + /// - `token` - The token. + /// - `owner` - The owner of the token. + #[ink(message)] + #[allow(non_snake_case)] + fn balanceOf(&self, token: TokenId, owner: Address) -> U256; + + /// Allowance for a `spender` approved by an `owner`, for a specified `token`. + /// + /// # Parameters + /// - `token` - The token. + /// - `owner` - The owner of the token. + /// - `spender` - The spender with an allowance. + #[ink(message)] + fn allowance(&self, token: TokenId, owner: Address, spender: Address) -> U256; + + /// Name of the specified token. + /// + /// # Parameters + /// - `token` - The token. + #[ink(message)] + fn name(&self, token: TokenId) -> String; + + /// Symbol for the specified token. + /// + /// # Parameters + /// - `token` - The token. + #[ink(message)] + fn symbol(&self, token: TokenId) -> String; + + /// Decimals for the specified token. + /// + /// # Parameters + /// - `token` - The token. + #[ink(message)] + fn decimals(&self, token: TokenId) -> u8; + + /// Whether the specified token exists. + /// + /// # Parameters + /// - `token` - The token. + #[ink(message)] + fn exists(&self, token: TokenId) -> bool; +} + +/// Allowance for a `spender` approved by an `owner`, for a specified `token`. +/// +/// # Parameters +/// - `token` - The token. +/// - `owner` - The owner of the token. +/// - `spender` - The spender with an allowance. +#[inline] +pub fn allowance(token: TokenId, owner: Address, spender: Address) -> U256 { + let address = fixed_address(PRECOMPILE); + let precompile: contract_ref!(Fungibles, Pop, Sol) = address.into(); + precompile.allowance(token, owner, spender) +} + +/// Approves `spender` to spend `value` amount of tokens on behalf of the caller. +/// +/// # Parameters +/// - `token` - The token to approve. +/// - `spender` - The account that is allowed to spend the tokens. +/// - `value` - The number of tokens to approve. +#[inline] +pub fn approve(token: TokenId, spender: Address, value: U256) -> Result<(), Error> { + ensure!(spender != Address::zero(), ZeroRecipientAddress); + + let address = fixed_address(PRECOMPILE); + let precompile: contract_ref!(Fungibles, Pop, Sol) = address.into(); + precompile.approve(token, spender, value) +} + +/// Account balance for a specified `token` and `owner`. +/// +/// # Parameters +/// - `token` - The token. +/// - `owner` - The owner of the token. +#[inline] +pub fn balance_of(token: TokenId, owner: Address) -> U256 { + let address = fixed_address(PRECOMPILE); + let precompile: contract_ref!(Fungibles, Pop, Sol) = address.into(); + precompile.balanceOf(token, owner) +} + +/// Destroys `value` amount of tokens from `account`, reducing the total supply. +/// +/// # Parameters +/// - `token` - The token to burn. +/// - `account` - The account from which the tokens will be destroyed. +/// - `value` - The number of tokens to destroy. +#[inline] +pub fn burn(token: TokenId, account: Address, value: U256) -> Result<(), Error> { + ensure!(account != Address::zero(), ZeroSenderAddress); + ensure!(value != U256::zero(), ZeroValue); + + let address = fixed_address(PRECOMPILE); + let precompile: contract_ref!(Fungibles, Pop, Sol) = address.into(); + precompile.burn(token, account, value) +} + +/// Clear the metadata for a token. +/// +/// # Parameters +/// - `token` - The token to update. +#[inline] +pub fn clear_metadata(token: TokenId) -> Result<(), Error> { + let address = fixed_address(PRECOMPILE); + let precompile: contract_ref!(Fungibles, Pop, Sol) = address.into(); + precompile.clearMetadata(token) +} + +/// Create a new token with an automatically generated identifier. +/// +/// # Parameters +/// - `admin` - The account that will administer the token. +/// - `min_balance` - The minimum balance required for accounts holding this token. +/// +/// NOTE: The minimum balance must be non-zero. +#[inline] +pub fn create(admin: Address, min_balance: U256) -> Result { + ensure!(admin != Address::zero(), ZeroAdminAddress); + ensure!(min_balance != U256::zero(), MinBalanceZero); + + let address = fixed_address(PRECOMPILE); + let precompile: contract_ref!(Fungibles, Pop, Sol) = address.into(); + precompile.create(admin, min_balance) +} + +/// Decimals for the specified token. +/// +/// # Parameters +/// - `token` - The token. +#[inline] +pub fn decimals(token: TokenId) -> u8 { + let address = fixed_address(PRECOMPILE); + let precompile: contract_ref!(Fungibles, Pop, Sol) = address.into(); + precompile.decimals(token) +} + +/// Decreases the allowance of `spender` by `value` amount of tokens. +/// +/// # Parameters +/// - `token` - The token to have an allowance decreased. +/// - `spender` - The account that is allowed to spend the tokens. +/// - `value` - The number of tokens to decrease the allowance by. +pub fn decrease_allowance(token: TokenId, spender: Address, value: U256) -> Result { + ensure!(spender != Address::zero(), ZeroRecipientAddress); + ensure!(value != U256::zero(), ZeroValue); + + let address = fixed_address(PRECOMPILE); + let precompile: contract_ref!(Fungibles, Pop, Sol) = address.into(); + precompile.decreaseAllowance(token, spender, value) +} + +/// Whether the specified token exists. +/// +/// # Parameters +/// - `token` - The token. +#[inline] +pub fn exists(token: TokenId) -> bool { + let address = fixed_address(PRECOMPILE); + let precompile: contract_ref!(Fungibles, Pop, Sol) = address.into(); + precompile.exists(token) +} + +/// Increases the allowance of `spender` by `value` amount of tokens. +/// +/// # Parameters +/// - `token` - The token to have an allowance increased. +/// - `spender` - The account that is allowed to spend the tokens. +/// - `value` - The number of tokens to increase the allowance by. +pub fn increase_allowance(token: TokenId, spender: Address, value: U256) -> Result { + ensure!(spender != Address::zero(), ZeroRecipientAddress); + ensure!(value != U256::zero(), ZeroValue); + + let address = fixed_address(PRECOMPILE); + let precompile: contract_ref!(Fungibles, Pop, Sol) = address.into(); + precompile.increaseAllowance(token, spender, value) +} + +/// Creates `value` amount of tokens and assigns them to `account`, increasing the total +/// supply. +/// +/// # Parameters +/// - `token` - The token to mint. +/// - `account` - The account to be credited with the created tokens. +/// - `value` - The number of tokens to mint. +#[inline] +pub fn mint(token: TokenId, account: Address, value: U256) -> Result<(), Error> { + ensure!(account != Address::zero(), ZeroRecipientAddress); + ensure!(value != U256::zero(), ZeroValue); + + let address = fixed_address(PRECOMPILE); + let precompile: contract_ref!(Fungibles, Pop, Sol) = address.into(); + precompile.mint(token, account, value) +} + +/// Name of the specified token. +/// +/// # Parameters +/// - `token` - The token. +#[inline] +pub fn name(token: TokenId) -> String { + let address = fixed_address(PRECOMPILE); + let precompile: contract_ref!(Fungibles, Pop, Sol) = address.into(); + precompile.name(token) +} + +/// Set the metadata for a token. +/// +/// # Parameters +/// - `token`: The token to update. +/// - `name`: The user friendly name of this token. +/// - `symbol`: The exchange symbol for this token. +/// - `decimals`: The number of decimals this token uses to represent one unit. +#[inline] +pub fn set_metadata( + token: TokenId, + name: String, + symbol: String, + decimals: u8, +) -> Result<(), Error> { + let address = fixed_address(PRECOMPILE); + let precompile: contract_ref!(Fungibles, Pop, Sol) = address.into(); + precompile.setMetadata(token, name, symbol, decimals) +} + +/// Start the process of destroying a token. +/// +/// # Parameters +/// - `token` - The token to be destroyed. +#[inline] +pub fn start_destroy(token: TokenId) -> Result<(), Error> { + let address = fixed_address(PRECOMPILE); + let precompile: contract_ref!(Fungibles, Pop, Sol) = address.into(); + precompile.startDestroy(token) +} + +/// Symbol for the specified token. +/// +/// # Parameters +/// - `token` - The token. +#[inline] +pub fn symbol(token: TokenId) -> String { + let address = fixed_address(PRECOMPILE); + let precompile: contract_ref!(Fungibles, Pop, Sol) = address.into(); + precompile.symbol(token) +} + +/// Total token supply for a specified token. +/// +/// # Parameters +/// - `token` - The token. +#[inline] +pub fn total_supply(token: TokenId) -> U256 { + let address = fixed_address(PRECOMPILE); + let precompile: contract_ref!(Fungibles, Pop, Sol) = address.into(); + precompile.totalSupply(token) +} + +/// Transfers `value` amount of tokens from the caller's account to account `to`. +/// +/// # Parameters +/// - `token` - The token to transfer. +/// - `to` - The recipient account. +/// - `value` - The number of tokens to transfer. +#[inline] +pub fn transfer(token: TokenId, to: Address, value: U256) -> Result<(), Error> { + ensure!(to != Address::zero(), ZeroRecipientAddress); + ensure!(value != U256::zero(), ZeroValue); + + let address = fixed_address(PRECOMPILE); + let precompile: contract_ref!(Fungibles, Pop, Sol) = address.into(); + precompile.transfer(token, to, value) +} + +/// Transfers `value` amount tokens on behalf of `from` to account `to`. +/// +/// # Parameters +/// - `token` - The token to transfer. +/// - `from` - The account from which the token balance will be withdrawn. +/// - `to` - The recipient account. +/// - `value` - The number of tokens to transfer. +#[inline] +pub fn transfer_from(token: TokenId, from: Address, to: Address, value: U256) -> Result<(), Error> { + ensure!(from != Address::zero(), ZeroSenderAddress); + ensure!(to != Address::zero(), ZeroRecipientAddress); + ensure!(to != from, InvalidRecipient(to)); + ensure!(value != U256::zero(), ZeroValue); + + let address = fixed_address(PRECOMPILE); + let precompile: contract_ref!(Fungibles, Pop, Sol) = address.into(); + precompile.transferFrom(token, from, to, value) +} diff --git a/pop-api-vnext/src/fungibles/v0/errors.rs b/pop-api-vnext/src/fungibles/v0/errors.rs new file mode 100644 index 000000000..fe9d522b6 --- /dev/null +++ b/pop-api-vnext/src/fungibles/v0/errors.rs @@ -0,0 +1,250 @@ +use ink::{ + sol::{SolDecode, SolErrorDecode}, + sol_error_selector, +}; + +use super::*; +use crate::{ + errors::{ + ArithmeticError, DispatchError, FixedBytes, ModuleError, TokenError, TransactionalError, + TrieError, + }, + impl_sol_encoding_for_precompile, + sol::PrecompileError, +}; + +#[cfg_attr(feature = "std", derive(Debug, PartialEq))] +#[derive(ink::SolErrorEncode)] +#[ink::scale_derive(Decode, Encode, TypeInfo)] +pub enum Error { + /// An arithmetic error occurred. + Arithmetic(ArithmeticError), + /// The metadata provided is invalid. + BadMetadata, + /// Reason why a dispatch call failed. + Dispatch(DispatchError), + /// The account balance is insufficient. + InsufficientBalance, + /// The token recipient is invalid. + InvalidRecipient(Address), + /// The minimum balance should be non-zero. + MinBalanceZero, + /// Reason why a pallet call failed. + Module { + /// Module index, matching the metadata module index. + index: u8, + /// Module specific error value. + error: FixedBytes<4>, + }, + /// The signing account has no permission to do the operation. + NoPermission, + /// The token is not live, and likely being destroyed. + NotLive, + /// An error to do with tokens. + Token(TokenError), + /// The number of transactional layers has been reached, or we are not in a transactional + /// layer. + Transactional(TransactionalError), + /// An error with tries. + Trie(TrieError), + /// No approval exists that would allow the transfer. + Unapproved, + /// The given token identifier is unknown. + Unknown, + /// The `admin` address cannot be the zero address. + ZeroAdminAddress, + /// The recipient cannot be the zero address. + ZeroRecipientAddress, + /// The sender cannot be the zero address. + ZeroSenderAddress, + /// The specified `value` cannot be zero. + ZeroValue, +} + +impl_sol_encoding_for_precompile!(Error); + +impl PrecompileError for Error { + fn decode(data: &[u8]) -> Result { + if data.len() < 4 { + return Err(ink::sol::Error); + } + + match data[..4].try_into().expect("length checked above") { + ARITHMETIC => Ok(Self::Arithmetic(ArithmeticError::decode(&data[4..])?)), + BAD_METADATA => Ok(Self::BadMetadata), + DISPATCH => Ok(Self::Dispatch(DispatchError::decode(&data[4..])?)), + INSUFFICIENT_BALANCE => Ok(Self::InsufficientBalance), + INVALID_RECIPIENT => { + #[derive(ink::SolErrorDecode)] + struct InvalidRecipient(Address); + + let decoded = InvalidRecipient::decode(&data)?; + Ok(Self::InvalidRecipient(decoded.0)) + }, + MIN_BALANCE_ZERO => Ok(Self::MinBalanceZero), + MODULE => { + let ModuleError { index, error } = ModuleError::decode(&data[4..])?; + Ok(Self::Module { index, error }) + }, + NO_PERMISSION => Ok(Self::NoPermission), + NOT_LIVE => Ok(Self::NotLive), + TOKEN => Ok(Self::Token(TokenError::decode(&data[4..])?)), + TRANSACTIONAL => Ok(Self::Transactional(TransactionalError::decode(&data[4..])?)), + TRIE => Ok(Self::Trie(TrieError::decode(&data[4..])?)), + UNAPPROVED => Ok(Self::Unapproved), + UNKNOWN => Ok(Self::Unknown), + ZERO_ADMIN_ADDRESS => Ok(Self::ZeroAdminAddress), + ZERO_RECIPIENT_ADDRESS => Ok(Self::ZeroRecipientAddress), + ZERO_SENDER_ADDRESS => Ok(Self::ZeroSenderAddress), + ZERO_VALUE => Ok(Self::ZeroValue), + _ => Err(ink::sol::Error), + } + } +} + +const ARITHMETIC: [u8; 4] = sol_error_selector!("Arithmetic", (u8,)); +const BAD_METADATA: [u8; 4] = sol_error_selector!("BadMetadata", ()); +const DISPATCH: [u8; 4] = sol_error_selector!("Dispatch", (u8,)); +const INSUFFICIENT_BALANCE: [u8; 4] = sol_error_selector!("InsufficientBalance", ()); +const INVALID_RECIPIENT: [u8; 4] = sol_error_selector!("InvalidRecipient", (Address,)); +const MIN_BALANCE_ZERO: [u8; 4] = sol_error_selector!("MinBalanceZero", ()); +const MODULE: [u8; 4] = sol_error_selector!("Module", (u8, FixedBytes<4>)); +const NO_PERMISSION: [u8; 4] = sol_error_selector!("NoPermission", ()); +const NOT_LIVE: [u8; 4] = sol_error_selector!("NotLive", ()); +const TOKEN: [u8; 4] = sol_error_selector!("Token", (u8,)); +const TRANSACTIONAL: [u8; 4] = sol_error_selector!("Transactional", (u8,)); +const TRIE: [u8; 4] = sol_error_selector!("Trie", (u8,)); +const UNAPPROVED: [u8; 4] = sol_error_selector!("Unapproved", ()); +const UNKNOWN: [u8; 4] = sol_error_selector!("Unknown", ()); +const ZERO_ADMIN_ADDRESS: [u8; 4] = sol_error_selector!("ZeroAdminAddress", ()); +const ZERO_RECIPIENT_ADDRESS: [u8; 4] = sol_error_selector!("ZeroRecipientAddress", ()); +const ZERO_SENDER_ADDRESS: [u8; 4] = sol_error_selector!("ZeroSenderAddress", ()); +const ZERO_VALUE: [u8; 4] = sol_error_selector!("ZeroValue", ()); + +#[test] +fn error_decoding_works() { + for (encoded, expected) in [ + ( + "7fdb06c50000000000000000000000000000000000000000000000000000000000000001", + Arithmetic(ArithmeticError::Overflow), + ), + ("1ab2b983", BadMetadata), + ( + "20c5a2a9000000000000000000000000000000000000000000000000000000000000000d", + Dispatch(DispatchError::RootNotAllowed), + ), + ("f4d678b8", InsufficientBalance), + ( + "17858bbe000000000000000000000000ffffffffffffffffffffffffffffffffffffffff", + InvalidRecipient([255; 20].into()), + ), + ("5f15618b", MinBalanceZero), + ( + "3323f3c100000000000000000000000000000000000000000000000000000000000000ffffffffff00000000000000000000000000000000000000000000000000000000", + Module { index: 255, error: FixedBytes([255; 4]) }, + ), + ("9d7b369d", NoPermission), + ("baf13b3f", NotLive), + ( + "57fdc3d80000000000000000000000000000000000000000000000000000000000000009", + Token(TokenError::Blocked), + ), + ( + "3008a37e0000000000000000000000000000000000000000000000000000000000000001", + Transactional(TransactionalError::NoLayer), + ), + ( + "3ea87b59000000000000000000000000000000000000000000000000000000000000000d", + Trie(TrieError::DecodeError), + ), + ("91a7df1a", Unapproved), + ("0cf64598", Unknown), + ("3ef39b81", ZeroAdminAddress), + ("ceef9857", ZeroRecipientAddress), + ("ff362bc4", ZeroSenderAddress), + ("7c946ed7", ZeroValue), + ] { + let data = hex::decode(encoded).unwrap(); + let decoded = ::decode(data.as_slice()).expect(&format!("unable to decode {encoded}")); + assert_eq!(decoded, expected) + } +} + +#[test] +fn error_encoding_works() { + use ink::SolEncode; + + for (result, expected) in [ + ( + Arithmetic(ArithmeticError::Overflow).encode(), + "7fdb06c50000000000000000000000000000000000000000000000000000000000000001", + ), + ( + Dispatch(DispatchError::BadOrigin).encode(), + "20c5a2a90000000000000000000000000000000000000000000000000000000000000002", + ), + ( + InvalidRecipient([255u8; 20].into()).encode(), + "17858bbe000000000000000000000000ffffffffffffffffffffffffffffffffffffffff", + ), + (MinBalanceZero.encode(), "5f15618b"), + ( + Module{ index: 255, error: FixedBytes([255; 4]) }.encode(), + "3323f3c100000000000000000000000000000000000000000000000000000000000000ffffffffff00000000000000000000000000000000000000000000000000000000", + ), + (NoPermission.encode(), "9d7b369d"), + ( + Token(TokenError::Unknown).encode(), + "57fdc3d80000000000000000000000000000000000000000000000000000000000000004", + ), + ( + Token(TokenError::BelowMinimum).encode(), + "57fdc3d80000000000000000000000000000000000000000000000000000000000000002", + ), + ( + Transactional(TransactionalError::NoLayer).encode(), + "3008a37e0000000000000000000000000000000000000000000000000000000000000001", + ), + ( + Trie(TrieError::DecodeError).encode(), + "3ea87b59000000000000000000000000000000000000000000000000000000000000000d", + ), + (ZeroAdminAddress.encode(), "3ef39b81"), + (ZeroRecipientAddress.encode(), "ceef9857"), + (ZeroSenderAddress.encode(), "ff362bc4"), + (ZeroValue.encode(), "7c946ed7"), + ] { + assert_eq!(hex::encode(result), expected) + } +} + +#[test] +fn selectors_work() { + use ink::SolEncode; + + for (encoded, expected) in [ + (Error::Arithmetic(ArithmeticError::Overflow).encode()[..4].to_vec(), ARITHMETIC), + (Error::BadMetadata.encode(), BAD_METADATA), + (Error::Dispatch(DispatchError::BadOrigin).encode()[..4].to_vec(), DISPATCH), + (Error::InsufficientBalance.encode(), INSUFFICIENT_BALANCE), + (Error::InvalidRecipient(Address::default()).encode()[..4].to_vec(), INVALID_RECIPIENT), + (Error::MinBalanceZero.encode(), MIN_BALANCE_ZERO), + (Error::Module { index: 255, error: FixedBytes([255; 4]) }.encode()[..4].to_vec(), MODULE), + (Error::NoPermission.encode(), NO_PERMISSION), + (Error::NotLive.encode(), NOT_LIVE), + (Error::Token(TokenError::Unknown).encode()[..4].to_vec(), TOKEN), + ( + Error::Transactional(TransactionalError::LimitReached).encode()[..4].to_vec(), + TRANSACTIONAL, + ), + (Error::Trie(TrieError::DecodeError).encode()[..4].to_vec(), TRIE), + (Error::Unapproved.encode(), UNAPPROVED), + (Error::Unknown.encode(), UNKNOWN), + (Error::ZeroAdminAddress.encode(), ZERO_ADMIN_ADDRESS), + (Error::ZeroRecipientAddress.encode(), ZERO_RECIPIENT_ADDRESS), + (Error::ZeroSenderAddress.encode(), ZERO_SENDER_ADDRESS), + (Error::ZeroValue.encode(), ZERO_VALUE), + ] { + assert_eq!(encoded, expected); + } +} diff --git a/pop-api-vnext/src/fungibles/v0/events.rs b/pop-api-vnext/src/fungibles/v0/events.rs new file mode 100644 index 000000000..266121196 --- /dev/null +++ b/pop-api-vnext/src/fungibles/v0/events.rs @@ -0,0 +1,62 @@ +//! A set of events for use in smart contracts interacting with the fungibles API. +//! +//! The `Transfer` and `Approval` events conform to the ERC-20 standard. The other events +//! (`Create`, `StartDestroy`, `SetMetadata`, `ClearMetadata`) are provided for convenience. +//! +//! These events are not emitted by the API itself but can be used in your contracts to +//! track token operations. Be mindful of the costs associated with emitting events. +//! +//! For more details, refer to [ink! events](https://use.ink/basics/events). + +pub use super::erc20::{Approval, Transfer}; +use super::*; + +/// Event emitted when a token is created. +#[ink::event] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct Created { + /// The token identifier. + #[ink(topic)] + pub id: TokenId, + /// The creator of the token. + #[ink(topic)] + pub creator: Address, + /// The administrator of the token. + #[ink(topic)] + pub admin: Address, +} + +/// Event emitted when a token is in the process of being destroyed. +#[ink::event] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct DestroyStarted { + /// The token. + #[ink(topic)] + pub token: TokenId, +} + +/// Event emitted when new metadata is set for a token. +#[ink::event] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct MetadataSet { + /// The token. + #[ink(topic)] + pub token: TokenId, + /// The name of the token. + #[ink(topic)] + pub name: String, + /// The symbol of the token. + #[ink(topic)] + pub symbol: String, + /// The decimals of the token. + pub decimals: u8, +} + +/// Event emitted when metadata is cleared for a token. +#[ink::event] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct MetadataCleared { + /// The token. + #[ink(topic)] + pub token: TokenId, +} diff --git a/pop-api-vnext/src/lib.rs b/pop-api-vnext/src/lib.rs new file mode 100644 index 000000000..cc2f37d78 --- /dev/null +++ b/pop-api-vnext/src/lib.rs @@ -0,0 +1,74 @@ +//! The `pop-api` crate provides an API for smart contracts to interact with the Pop Network +//! runtime. +//! +//! This crate abstracts away complexities to deliver a streamlined developer experience while +//! supporting multiple API versions to ensure backward compatibility. It is designed with a focus +//! on stability, future-proofing, and storage efficiency, allowing developers to easily integrate +//! powerful runtime features into their contracts without unnecessary overhead. + +#![cfg_attr(not(feature = "std"), no_std, no_main)] + +use ink::Address; +pub use sol::{revert, SolErrorDecode}; + +/// An index to a block. +pub type BlockNumber = u32; +/// The onchain environment provided by Pop. +pub type Pop = ink::env::DefaultEnvironment; + +/// The various general errors which may occur. +pub mod errors; +/// APIs for fungible tokens. +#[cfg(feature = "fungibles")] +pub mod fungibles; +/// APIs for cross-chain messaging. +#[cfg(feature = "messaging")] +pub mod messaging; +/// Types and utilities for working with Solidity ABI encoding. +pub mod sol; + +#[macro_export] +macro_rules! ensure { + ( $x:expr, $y:expr $(,)? ) => {{ + if !$x { + return Err($y.into()); + } + }}; +} + +/// Calculates the address of a precompile at index `n`. +#[inline] +const fn fixed_address(n: u16) -> Address { + let shifted = (n as u32) << 16; + + let suffix = shifted.to_be_bytes(); + let mut address = [0u8; 20]; + let mut i = 16; + while i < address.len() { + address[i] = suffix[i - 16]; + i = i + 1; + } + ink::H160(address) +} + +/// Calculates the address of a precompile at index `n` and with some additional prefix. +#[cfg(feature = "fungibles")] +#[inline] +fn prefixed_address(n: u16, prefix: u32) -> Address { + let mut address = fixed_address(n); + address.0[..4].copy_from_slice(&prefix.to_be_bytes()); + address +} + +#[test] +fn fixed_address_works() { + assert_eq!(hex::encode(fixed_address(100)), "0000000000000000000000000000000000640000") +} + +#[test] +fn prefixed_address_works() { + assert_eq!( + hex::encode(prefixed_address(101, u32::MAX)), + "ffffffff00000000000000000000000000650000" + ); +} diff --git a/pop-api-vnext/src/messaging.rs b/pop-api-vnext/src/messaging.rs new file mode 100644 index 000000000..b7eefa658 --- /dev/null +++ b/pop-api-vnext/src/messaging.rs @@ -0,0 +1,58 @@ +use ink::{ + contract_ref, + env::hash::{Blake2x256, CryptoHash}, + prelude::vec::Vec, + primitives::AccountId, + scale::{Compact, Encode}, + sol::FixedBytes, + U256, +}; +pub use ink::{primitives::Weight, sol::DynBytes}; +use sol::Sol; +pub use v0::*; + +use super::*; + +/// APIs for messaging using the Interoperable State Machine Protocol (ISMP). +pub mod ismp; +/// APIs for messaging using Polkadot's Cross-Consensus Messaging (XCM). +pub mod xcm; + +/// The first version of the Messaging API. +pub mod v0; + +pub type MessageId = u64; + +/// Calculate the hashed account identifier for a given parachain and account. +/// +/// # Parameters +/// - `para_id`: The parachain identifier. +/// - `account_id`: The account identifier. +pub fn hashed_account(para_id: u32, account_id: AccountId) -> AccountId { + let location = ( + b"SiblingChain", + Compact::::from(para_id), + Encode::encode(&(b"AccountId32", account_id.0)), + ) + .encode(); + let mut output = [0u8; 32]; + Blake2x256::hash(&location, &mut output); + AccountId::from(output) +} + +#[test] +fn hashed_account_works() { + let account_id: [u8; 32] = [ + 27, 2, 24, 17, 104, 5, 173, 98, 25, 32, 36, 0, 82, 159, 11, 212, 178, 11, 39, 219, 14, 178, + 226, 179, 216, 62, 19, 85, 226, 17, 80, 179, + ]; + let location = ( + b"SiblingChain", + Compact::::from(4001), + Encode::encode(&(b"AccountId32", account_id)), + ) + .encode(); + let mut output = [0u8; 32]; + Blake2x256::hash(&location, &mut output); + println!("{output:?}") +} diff --git a/pop-api-vnext/src/messaging/README.md b/pop-api-vnext/src/messaging/README.md new file mode 100644 index 000000000..527e768eb --- /dev/null +++ b/pop-api-vnext/src/messaging/README.md @@ -0,0 +1,20 @@ +## Messaging API + +The `messaging` module provides an api for cross-chain interactions. + +It includes the following interfaces: + +1. `Messaging`: a general interface for cross-chain messaging operations. +2. `Ismp`: a streamlined interface for messaging using the Interoperable State Machine Protocol. +3. `IsmpCallback`: as above, but with additional callback functionality. +4. `Xcm`: a streamlined interface for messaging using Polkadot's Cross-Consensus Messaging (XCM). +5. `XcmCallback`: as above, but with additional callback functionality. + +To use it in your contract add the `messaging` feature to the `pop-api` dependency. + +```toml +# Cargo.toml +pop-api = { git = "https://github.com/r0gue-io/pop-node", default-features = false, features = [ "messaging" ] } +``` + +Check out the [examples](../../examples/messaging/) to learn how you can use the messaging api. diff --git a/pop-api-vnext/src/messaging/ismp.rs b/pop-api-vnext/src/messaging/ismp.rs new file mode 100644 index 000000000..bf14130b7 --- /dev/null +++ b/pop-api-vnext/src/messaging/ismp.rs @@ -0,0 +1,6 @@ +pub use v0::*; + +use super::{contract_ref, fixed_address, MessageId, MessageStatus, Pop, Sol, Vec, U256}; + +/// The first version of the ISMP API. +pub mod v0; diff --git a/pop-api-vnext/src/messaging/ismp/v0.rs b/pop-api-vnext/src/messaging/ismp/v0.rs new file mode 100644 index 000000000..76421bd78 --- /dev/null +++ b/pop-api-vnext/src/messaging/ismp/v0.rs @@ -0,0 +1,347 @@ +pub use errors::{Error, Error::*}; +use ink::{sol::DynBytes, Address}; + +use super::{super::v0::Callback, *}; + +mod errors; + +// Precompile index within the runtime +const PRECOMPILE: u16 = 4; +/// The address of the ISMP precompile. +pub const PRECOMPILE_ADDRESS: Address = fixed_address(PRECOMPILE); + +/// The ISMP precompile offers a streamlined interface for messaging using the Interoperable State +/// Machine Protocol. +#[ink::trait_definition] +pub trait Ismp { + /// Submit a new ISMP `Get` request. + /// + /// # Parameters + /// - `request` - The ISMP `Get` message containing query details. + /// - `fee` - The fee to be paid to relayers. + /// + /// # Returns + /// A unique message identifier. + #[ink(message)] + fn get(&self, request: Get, fee: U256) -> Result; + + /// Submit a new ISMP `Post` request. + /// + /// Sends a `Post` message through ISMP with arbitrary data. + /// + /// # Parameters + /// - `request` - The ISMP `Post` message containing the payload. + /// - `fee` - The fee to be paid to relayers. + /// + /// # Returns + /// A unique message identifier. + #[ink(message)] + fn post(&self, request: Post, fee: U256) -> Result; +} + +/// The ISMP precompile offers a streamlined interface for messaging using the Interoperable State +/// Machine Protocol. +#[ink::trait_definition] +pub trait IsmpCallback { + /// Submit a new ISMP `Get` request. + /// + /// # Parameters + /// - `request` - The ISMP `Get` message containing query details. + /// - `fee` - The fee to be paid to relayers. + /// - `callback` - The callback to execute upon receiving a response. + /// + /// # Returns + /// A unique message identifier. + #[ink(message)] + fn get(&self, request: Get, fee: U256, callback: Callback) -> Result; + + /// Submit a new ISMP `Post` request. + /// + /// Sends a `Post` message through ISMP with arbitrary data. + /// + /// # Parameters + /// - `request` - The ISMP `Post` message containing the payload. + /// - `fee` - The fee to be paid to relayers. + /// - `callback` - The callback to execute upon receiving a response. + /// + /// # Returns + /// A unique message identifier. + #[ink(message)] + fn post(&self, request: Post, fee: U256, callback: Callback) -> Result; +} + +/// The messaging interface of the ISMP precompile offers a general interface for cross-chain +/// messaging operations. +/// +/// This convenience trait simply provides access to general cross-chain messaging operations via +/// the ISMP precompile, so that users need only use a single precompile if desired. +#[ink::trait_definition] +pub trait Messaging { + /// Returns the response to a message. + /// + /// A non-existent message identifier will return an empty response, which could also be a valid + /// response depending on the source message. + /// + /// # Parameters + /// - `message` - The message identifier. + #[ink(message)] + #[allow(non_snake_case)] + fn getResponse(&self, message: MessageId) -> DynBytes; + + /// The identifier of this chain. + /// + /// # Returns + /// The identifier of this chain. + #[ink(message)] + fn id(&self) -> u32; + + /// Polls the status of a message. + /// + /// # Parameters + /// - `message` - The message identifier to poll. + #[ink(message)] + #[allow(non_snake_case)] + fn pollStatus(&self, message: MessageId) -> MessageStatus; + + /// Remove a completed or timed-out message. + /// + /// Allows users to clean up storage and reclaim deposits for messages that have concluded. + /// + /// # Parameters + /// - `message` - The identifier of the message to remove. + #[ink(message)] + fn remove(&self, message: MessageId) -> Result<(), Error>; + + /// Remove a batch of completed or timed-out messages. + /// + /// Allows users to clean up storage and reclaim deposits for messages that have concluded. + /// + /// # Parameters + /// - `messages` - A set of identifiers of messages to remove (bounded by `MaxRemovals`). + #[ink(message)] + #[allow(non_snake_case)] + fn removeMany(&self, messages: Vec) -> Result<(), Error>; +} + +/// Submit a new ISMP `Get` request. +/// +/// # Parameters +/// - `request` - The ISMP `Get` message containing query details. +/// - `fee` - The fee to be paid to relayers. +/// - `callback` - An optional callback to execute upon receiving a response. +/// +/// # Returns +/// A unique message identifier. +#[inline] +pub fn get(request: Get, fee: U256, callback: Option) -> Result { + match callback { + None => { + let precompile: contract_ref!(Ismp, Pop, Sol) = PRECOMPILE_ADDRESS.into(); + precompile.get(request, fee) + }, + Some(callback) => { + let precompile: contract_ref!(IsmpCallback, Pop, Sol) = PRECOMPILE_ADDRESS.into(); + precompile.get(request, fee, callback) + }, + } +} + +/// Returns the response to a message. +/// +/// A non-existent message identifier will return an empty response, which could also be a valid +/// response depending on the source message. +/// +/// # Parameters +/// - `message` - The message identifier. +#[inline] +pub fn get_response(message: MessageId) -> DynBytes { + let precompile: contract_ref!(Messaging, Pop, Sol) = PRECOMPILE_ADDRESS.into(); + precompile.getResponse(message) +} + +/// The identifier of this chain. +/// +/// NOTE: this is a precompile call and therefore has associated costs. +#[inline] +pub fn id() -> u32 { + let precompile: contract_ref!(Messaging, Pop, Sol) = PRECOMPILE_ADDRESS.into(); + precompile.id() +} + +/// Polls the status of a message. +/// +/// # Parameters +/// - `message` - The message identifier to poll. +#[inline] +pub fn poll_status(message: MessageId) -> MessageStatus { + let precompile: contract_ref!(Messaging, Pop, Sol) = PRECOMPILE_ADDRESS.into(); + precompile.pollStatus(message) +} + +/// Submit a new ISMP `Post` request. +/// +/// Sends a `Post` message through ISMP with arbitrary data. +/// +/// # Parameters +/// - `request` - The ISMP `Post` message containing the payload. +/// - `fee` - The fee to be paid to relayers. +/// - `callback` - An optional callback to execute upon receiving a response. +/// +/// # Returns +/// A unique message identifier. +#[inline] +pub fn post(request: Post, fee: U256, callback: Option) -> Result { + match callback { + None => { + let precompile: contract_ref!(Ismp, Pop, Sol) = PRECOMPILE_ADDRESS.into(); + precompile.post(request, fee) + }, + Some(callback) => { + let precompile: contract_ref!(IsmpCallback, Pop, Sol) = PRECOMPILE_ADDRESS.into(); + precompile.post(request, fee, callback) + }, + } +} + +/// Remove a completed or timed-out message. +/// +/// Allows users to clean up storage and reclaim deposits for messages that have concluded. +/// +/// # Parameters +/// - `message` - The identifier of the message to remove. +#[inline] +pub fn remove(message: MessageId) -> Result<(), Error> { + let precompile: contract_ref!(Messaging, Pop, Sol) = PRECOMPILE_ADDRESS.into(); + precompile.remove(message) +} + +/// Remove a batch of completed or timed-out messages. +/// +/// Allows users to clean up storage and reclaim deposits for messages that have concluded. +/// +/// # Parameters +/// - `messages` - A set of identifiers of messages to remove (bounded by `MaxRemovals`). +#[inline] +pub fn remove_many(messages: Vec) -> Result<(), Error> { + let precompile: contract_ref!(Messaging, Pop, Sol) = PRECOMPILE_ADDRESS.into(); + precompile.removeMany(messages) +} + +/// A GET request, intended to be used for sending outgoing requests. +#[ink::scale_derive(Encode, Decode, TypeInfo)] +#[derive(ink::SolDecode, ink::SolEncode)] +pub struct Get { + /// The destination state machine of this request. + pub destination: u32, + /// Height at which to read the state machine. + pub height: u64, + /// Relative from the current timestamp at which this request expires in seconds. + pub timeout: u64, + /// Some application-specific metadata relating to this request. + pub context: DynBytes, + /// Raw Storage keys that would be used to fetch the values from the counterparty. + pub keys: Vec, +} + +impl Get { + /// Creates a new GET request, intended to be used for sending outgoing requests. + /// + /// # Parameters + /// - `destination` - The destination state machine of this request. + /// - `height` - Height at which to read the state machine. + /// - `timeout` - Relative from the current timestamp at which this request expires in seconds. + /// - `context` - Some application-specific metadata relating to this request. + /// - `keys` - Raw Storage keys that would be used to fetch the values from the counterparty. + pub fn new( + destination: u32, + height: u64, + timeout: u64, + context: DynBytes, + keys: Vec, + ) -> Self { + Self { destination, height, timeout, context, keys } + } +} + +/// A POST request, intended to be used for sending outgoing requests. +#[ink::scale_derive(Encode, Decode, TypeInfo)] +#[derive(ink::SolDecode, ink::SolEncode)] +pub struct Post { + /// The destination state machine of this request. + pub destination: u32, + /// The receiving module identifier/contract address on the destination chain. + pub to: DynBytes, + /// Relative from the current timestamp at which this request expires in seconds. + pub timeout: u64, + /// Encoded request data. + pub data: DynBytes, +} + +impl Post { + /// Creates a new POST request, intended to be used for sending outgoing requests. + /// + /// # Parameters + /// - `destination` - The destination state machine of this request. + /// - `to` - The receiving module identifier/contract address on the destination chain. + /// - `timeout` - Relative from the current timestamp at which this request expires in seconds. + /// - `data` - Encoded request data. + pub fn new(destination: u32, to: DynBytes, timeout: u64, data: Vec) -> Self { + Self { destination, to, timeout, data: DynBytes(data) } + } +} + +/// A verified storage value. +#[ink::scale_derive(Encode, Decode, TypeInfo)] +#[derive(Clone, Debug, ink::SolDecode, ink::SolEncode)] +pub struct StorageValue { + /// The request storage key. + pub key: DynBytes, + /// The verified value. + pub value: Option, +} + +/// A callback for handling responses to ISMP `Get` requests. +#[ink::trait_definition] +pub trait OnGetResponse { + /// Handles a response to an ISMP `Get` request. + /// + /// # Parameters + /// - `id` - The identifier of the originating message. + /// - `response` - The values derived from the state proof. + #[ink(message)] + #[allow(non_snake_case)] + fn onGetResponse(&mut self, id: MessageId, response: Vec); +} + +/// A callback for handling responses to ISMP `Post` requests. +#[ink::trait_definition] +pub trait OnPostResponse { + /// Handles a response to an ISMP `Post` request. + /// + /// # Parameters + /// - `id` - The identifier of the originating message. + /// - `response` - The response message. + #[ink(message)] + #[allow(non_snake_case)] + fn onPostResponse(&mut self, id: MessageId, response: DynBytes); +} + +/// Event emitted when a ISMP `Get` request is completed. +#[ink::event] +pub struct IsmpGetCompleted { + /// The identifier of the originating message. + #[ink(topic)] + pub id: MessageId, + /// The values derived from the state proof. + pub response: Vec, +} + +/// Event emitted when a ISMP `Post` request is completed. +#[ink::event] +pub struct IsmpPostCompleted { + /// The identifier of the originating message. + #[ink(topic)] + pub id: MessageId, + /// The response message. + pub response: DynBytes, +} diff --git a/pop-api-vnext/src/messaging/ismp/v0/errors.rs b/pop-api-vnext/src/messaging/ismp/v0/errors.rs new file mode 100644 index 000000000..1d502cbc6 --- /dev/null +++ b/pop-api-vnext/src/messaging/ismp/v0/errors.rs @@ -0,0 +1,131 @@ +use ink::{sol::SolDecode, sol_error_selector}; + +use super::*; +use crate::{ + errors::{ + ArithmeticError, DispatchError, FixedBytes, ModuleError, TokenError, TransactionalError, + TrieError, + }, + impl_sol_encoding_for_precompile, + messaging::v0::errors::{ + ARITHMETIC, DISPATCH, MESSAGE_NOT_FOUND, MODULE, REQUEST_PENDING, TOKEN, TOO_MANY_MESSAGES, + TRANSACTIONAL, TRIE, + }, + sol::PrecompileError, +}; + +#[cfg_attr(feature = "std", derive(Debug, PartialEq))] +#[derive(ink::SolErrorEncode)] +#[ink::scale_derive(Decode, Encode, TypeInfo)] +pub enum Error { + /// An arithmetic error occurred. + Arithmetic(ArithmeticError), + /// Reason why a dispatch call failed. + Dispatch(DispatchError), + /// The context exceeds the maximum allowed size. + MaxContextExceeded, + /// The data exceeds the maximum allowed size. + MaxDataExceeded, + /// A key exceeds the maximum allowed size. + MaxKeyExceeded, + /// The number of keys exceeds the maximum allowed size. + MaxKeysExceeded, + /// The message was not found. + MessageNotFound, + /// Reason why a pallet call failed. + Module { + /// Module index, matching the metadata module index. + index: u8, + /// Module specific error value. + error: FixedBytes<4>, + }, + /// The request is pending. + RequestPending, + /// An error to do with tokens. + Token(TokenError), + /// The number of messages exceeds the limit. + TooManyMessages, + /// The number of transactional layers has been reached, or we are not in a transactional + /// layer. + Transactional(TransactionalError), + /// An error with tries. + Trie(TrieError), +} + +impl_sol_encoding_for_precompile!(Error); + +impl PrecompileError for Error { + fn decode(data: &[u8]) -> Result { + if data.len() < 4 { + return Err(ink::sol::Error); + } + + match data[..4].try_into().expect("length checked above") { + ARITHMETIC => Ok(Self::Arithmetic(ArithmeticError::decode(&data[4..])?)), + DISPATCH => Ok(Self::Dispatch(DispatchError::decode(&data[4..])?)), + MAX_CONTEXT_EXCEEDED => Ok(Self::MaxContextExceeded), + MAX_DATA_EXCEEDED => Ok(Self::MaxDataExceeded), + MAX_KEY_EXCEEDED => Ok(Self::MaxKeyExceeded), + MAX_KEYS_EXCEEDED => Ok(Self::MaxKeysExceeded), + MESSAGE_NOT_FOUND => Ok(Self::MessageNotFound), + MODULE => { + let ModuleError { index, error } = ModuleError::decode(&data[4..])?; + Ok(Self::Module { index, error }) + }, + REQUEST_PENDING => Ok(Self::RequestPending), + TOKEN => Ok(Self::Token(TokenError::decode(&data[4..])?)), + TOO_MANY_MESSAGES => Ok(Self::TooManyMessages), + TRANSACTIONAL => Ok(Self::Transactional(TransactionalError::decode(&data[4..])?)), + TRIE => Ok(Self::Trie(TrieError::decode(&data[4..])?)), + _ => Err(ink::sol::Error), + } + } +} + +const MAX_CONTEXT_EXCEEDED: [u8; 4] = sol_error_selector!("MaxContextExceeded", ()); +const MAX_DATA_EXCEEDED: [u8; 4] = sol_error_selector!("MaxDataExceeded", ()); +const MAX_KEY_EXCEEDED: [u8; 4] = sol_error_selector!("MaxKeyExceeded", ()); +const MAX_KEYS_EXCEEDED: [u8; 4] = sol_error_selector!("MaxKeysExceeded", ()); + +#[test] +fn error_decoding_works() { + use ink::sol::SolErrorDecode; + + for (encoded, expected) in [ + ( + "7fdb06c50000000000000000000000000000000000000000000000000000000000000001", + Arithmetic(ArithmeticError::Overflow), + ), + ( + "20c5a2a9000000000000000000000000000000000000000000000000000000000000000d", + Dispatch(DispatchError::RootNotAllowed), + ), + ("8ad49075", MaxContextExceeded), + ("deadaa39", MaxDataExceeded), + ("3d903c2e", MaxKeyExceeded), + ("81463867", MaxKeysExceeded), + ("28915ac7", MessageNotFound), + ( + "3323f3c100000000000000000000000000000000000000000000000000000000000000ffffffffff00000000000000000000000000000000000000000000000000000000", + Module { index: 255, error: FixedBytes([255; 4]) }, + ), + ("806d0f74", RequestPending), + ( + "57fdc3d80000000000000000000000000000000000000000000000000000000000000009", + Token(TokenError::Blocked), + ), + ("1ec0b2f7", TooManyMessages), + ( + "3008a37e0000000000000000000000000000000000000000000000000000000000000001", + Transactional(TransactionalError::NoLayer), + ), + ( + "3ea87b59000000000000000000000000000000000000000000000000000000000000000d", + Trie(TrieError::DecodeError), + ), + ] { + let data = hex::decode(encoded).unwrap(); + let decoded = ::decode(data.as_slice()).expect(&format!("unable to decode {encoded}")); + assert_eq!(decoded, expected) + } +} diff --git a/pop-api-vnext/src/messaging/v0.rs b/pop-api-vnext/src/messaging/v0.rs new file mode 100644 index 000000000..84241a1e1 --- /dev/null +++ b/pop-api-vnext/src/messaging/v0.rs @@ -0,0 +1,192 @@ +pub use errors::{Error, Error::*}; + +use super::*; + +pub(crate) mod errors; + +// Precompile index within the runtime +const PRECOMPILE: u16 = 3; +/// The address of the messaging precompile. +pub const PRECOMPILE_ADDRESS: Address = fixed_address(PRECOMPILE); + +/// The messaging precompile offers a general interface for cross-chain messaging operations. +#[ink::trait_definition] +pub trait Messaging { + /// Returns the response to a message. + /// + /// A non-existent message identifier will return an empty response, which could also be a valid + /// response depending on the source message. + /// + /// # Parameters + /// - `message` - The message identifier. + #[ink(message)] + #[allow(non_snake_case)] + fn getResponse(&self, message: MessageId) -> DynBytes; + + /// The identifier of this chain. + /// + /// # Returns + /// The identifier of this chain. + #[ink(message)] + fn id(&self) -> u32; + + /// Polls the status of a message. + /// + /// # Parameters + /// - `message` - The message identifier to poll. + #[ink(message)] + #[allow(non_snake_case)] + fn pollStatus(&self, message: MessageId) -> MessageStatus; + + /// Remove a completed or timed-out message. + /// + /// Allows users to clean up storage and reclaim deposits for messages that have concluded. + /// + /// # Parameters + /// - `message` - The identifier of the message to remove. + #[ink(message)] + fn remove(&self, message: MessageId) -> Result<(), Error>; + + /// Remove a batch of completed or timed-out messages. + /// + /// Allows users to clean up storage and reclaim deposits for messages that have concluded. + /// + /// # Parameters + /// - `messages` - A set of identifiers of messages to remove (bounded by `MaxRemovals`). + #[ink(message)] + #[allow(non_snake_case)] + fn removeMany(&self, messages: Vec) -> Result<(), Error>; +} + +/// A message callback. +#[ink::scale_derive(Decode, Encode, TypeInfo)] +#[derive(ink::SolDecode, ink::SolEncode)] +pub struct Callback { + /// The contract address to which the callback should be sent. + destination: Address, + /// The encoding used for the data going to the contract. + encoding: Encoding, + /// The message selector to be used for the callback. + selector: FixedBytes<4>, + /// The pre-paid weight used as a gas limit for the callback. + gas_limit: Weight, + /// The storage deposit limit for the callback. + storage_deposit_limit: U256, +} + +impl Callback { + /// Creates a new callback with the specified encoding, selector, and weight. + /// + /// # Parameters + /// - `destination` - The contract address to which the callback should be sent. + /// - `encoding` - The encoding used for the data going to the contract. + /// - `selector` - The message selector to be used for the callback. + /// - `gas_limit` - The pre-paid weight used as a gas limit for the callback. + /// - `storage_deposit_limit` - The storage deposit limit for the callback. + pub fn new( + destination: Address, + encoding: Encoding, + selector: u32, + gas_limit: Weight, + storage_deposit_limit: U256, + ) -> Self { + Self { + destination, + encoding, + selector: FixedBytes(selector.to_be_bytes()), + gas_limit, + storage_deposit_limit, + } + } +} + +/// The specificiation of how data must be encoded before being sent to a contract. +#[derive(Copy, Clone, ink::SolDecode, ink::SolEncode)] +#[ink::scale_derive(Decode, Encode, TypeInfo)] +#[repr(u8)] +pub enum Encoding { + /// SCALE (Simple Concatenated Aggregate Little-Endian) encoding. + Scale, + /// Solidity ABI (Application Binary Interface) encoding, + SolidityAbi, +} + +/// The status of a message. +#[derive(Copy, Clone, ink::SolDecode, ink::SolEncode, PartialEq)] +#[ink::scale_derive(Decode, Encode, TypeInfo)] +#[cfg_attr(feature = "std", derive(Debug))] +#[repr(u8)] +pub enum MessageStatus { + NotFound = 0, + Pending = 1, + Complete = 2, + Timeout = 3, +} + +/// One or more messages have been removed for the account. +#[ink::event] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct Removed { + /// The origin of the messages. + #[ink(topic)] + pub account: Address, + /// The messages which were removed. + #[ink(topic)] + pub messages: Vec, +} + +/// Returns the response to a message. +/// +/// A non-existent message identifier will return an empty response, which could also be a valid +/// response depending on the source message. +/// +/// # Parameters +/// - `message` - The message identifier. +#[inline] +pub fn get_response(message: MessageId) -> DynBytes { + let precompile: contract_ref!(Messaging, Pop, Sol) = PRECOMPILE_ADDRESS.into(); + precompile.getResponse(message) +} + +/// The identifier of this chain. +/// +/// NOTE: this is a precompile call and therefore has associated costs. +#[inline] +pub fn id() -> u32 { + let precompile: contract_ref!(Messaging, Pop, Sol) = PRECOMPILE_ADDRESS.into(); + precompile.id() +} + +/// Polls the status of a message. +/// +/// # Parameters +/// - `message` - The message identifier to poll. +#[inline] +pub fn poll_status(message: MessageId) -> MessageStatus { + let precompile: contract_ref!(Messaging, Pop, Sol) = PRECOMPILE_ADDRESS.into(); + precompile.pollStatus(message) +} + +/// Remove a completed or timed-out message. +/// +/// Allows users to clean up storage and reclaim deposits for messages that have concluded. +/// +/// # Parameters +/// - `message` - The identifier of the message to remove. +#[inline] +pub fn remove(message: MessageId) -> Result<(), Error> { + let precompile: contract_ref!(Messaging, Pop, Sol) = PRECOMPILE_ADDRESS.into(); + precompile.remove(message) +} + +/// Remove a batch of completed or timed-out messages. +/// +/// Allows users to clean up storage and reclaim deposits for messages that have concluded. +/// +/// # Parameters +/// - `messages` - A set of identifiers of messages to remove (bounded by `MaxRemovals`). +#[inline] +pub fn remove_many(messages: Vec) -> Result<(), Error> { + let precompile: contract_ref!(Messaging, Pop, Sol) = PRECOMPILE_ADDRESS.into(); + precompile.removeMany(messages) +} diff --git a/pop-api-vnext/src/messaging/v0/errors.rs b/pop-api-vnext/src/messaging/v0/errors.rs new file mode 100644 index 000000000..87da6d706 --- /dev/null +++ b/pop-api-vnext/src/messaging/v0/errors.rs @@ -0,0 +1,113 @@ +use ink::{sol::SolDecode, sol_error_selector}; + +use super::*; +use crate::{ + errors::{ + ArithmeticError, DispatchError, ModuleError, TokenError, TransactionalError, TrieError, + }, + impl_sol_encoding_for_precompile, + sol::PrecompileError, +}; + +#[cfg_attr(feature = "std", derive(Debug, PartialEq))] +#[derive(ink::SolErrorEncode)] +#[ink::scale_derive(Decode, Encode, TypeInfo)] +pub enum Error { + /// An arithmetic error occurred. + Arithmetic(ArithmeticError), + /// Reason why a dispatch call failed. + Dispatch(DispatchError), + /// The message was not found. + MessageNotFound, + /// Reason why a pallet call failed. + Module { + /// Module index, matching the metadata module index. + index: u8, + /// Module specific error value. + error: FixedBytes<4>, + }, + /// The request is pending. + RequestPending, + /// An error to do with tokens. + Token(TokenError), + /// The number of messages exceeds the limit. + TooManyMessages, + /// The number of transactional layers has been reached, or we are not in a transactional + /// layer. + Transactional(TransactionalError), + /// An error with tries. + Trie(TrieError), +} + +impl_sol_encoding_for_precompile!(Error); + +impl PrecompileError for Error { + fn decode(data: &[u8]) -> Result { + if data.len() < 4 { + return Err(ink::sol::Error); + } + + match data[..4].try_into().expect("length checked above") { + ARITHMETIC => Ok(Self::Arithmetic(ArithmeticError::decode(&data[4..])?)), + DISPATCH => Ok(Self::Dispatch(DispatchError::decode(&data[4..])?)), + MESSAGE_NOT_FOUND => Ok(Self::MessageNotFound), + MODULE => { + let ModuleError { index, error } = ModuleError::decode(&data[4..])?; + Ok(Self::Module { index, error }) + }, + REQUEST_PENDING => Ok(Self::RequestPending), + TOKEN => Ok(Self::Token(TokenError::decode(&data[4..])?)), + TOO_MANY_MESSAGES => Ok(Self::TooManyMessages), + TRANSACTIONAL => Ok(Self::Transactional(TransactionalError::decode(&data[4..])?)), + TRIE => Ok(Self::Trie(TrieError::decode(&data[4..])?)), + _ => Err(ink::sol::Error), + } + } +} + +pub(crate) const ARITHMETIC: [u8; 4] = sol_error_selector!("Arithmetic", (u8,)); +pub(crate) const DISPATCH: [u8; 4] = sol_error_selector!("Dispatch", (u8,)); +pub(crate) const MESSAGE_NOT_FOUND: [u8; 4] = sol_error_selector!("MessageNotFound", ()); +pub(crate) const MODULE: [u8; 4] = sol_error_selector!("Module", (u8, FixedBytes<4>)); +pub(crate) const REQUEST_PENDING: [u8; 4] = sol_error_selector!("RequestPending", ()); +pub(crate) const TOKEN: [u8; 4] = sol_error_selector!("Token", (u8,)); +pub(crate) const TOO_MANY_MESSAGES: [u8; 4] = sol_error_selector!("TooManyMessages", ()); +pub(crate) const TRANSACTIONAL: [u8; 4] = sol_error_selector!("Transactional", (u8,)); +pub(crate) const TRIE: [u8; 4] = sol_error_selector!("Trie", (u8,)); + +#[test] +fn error_decoding_works() { + for (encoded, expected) in [ + ( + "7fdb06c50000000000000000000000000000000000000000000000000000000000000001", + Arithmetic(ArithmeticError::Overflow), + ), + ( + "20c5a2a9000000000000000000000000000000000000000000000000000000000000000d", + Dispatch(DispatchError::RootNotAllowed), + ), + ("28915ac7", MessageNotFound), + ( + "3323f3c100000000000000000000000000000000000000000000000000000000000000ffffffffff00000000000000000000000000000000000000000000000000000000", + Module { index: 255, error: FixedBytes([255; 4]) }, + ), + ("806d0f74", RequestPending), + ( + "57fdc3d80000000000000000000000000000000000000000000000000000000000000009", + Token(TokenError::Blocked), + ), + ("1ec0b2f7", TooManyMessages), + ( + "3008a37e0000000000000000000000000000000000000000000000000000000000000001", + Transactional(TransactionalError::NoLayer), + ), + ( + "3ea87b59000000000000000000000000000000000000000000000000000000000000000d", + Trie(TrieError::DecodeError), + ), + ] { + let data = hex::decode(encoded).unwrap(); + let decoded = ::decode(data.as_slice()).expect(&format!("unable to decode {encoded}")); + assert_eq!(decoded, expected) + } +} diff --git a/pop-api-vnext/src/messaging/xcm.rs b/pop-api-vnext/src/messaging/xcm.rs new file mode 100644 index 000000000..03c243a5a --- /dev/null +++ b/pop-api-vnext/src/messaging/xcm.rs @@ -0,0 +1,10 @@ +use ink::scale::Encode; +pub use v0::*; + +use super::{ + contract_ref, fixed_address, BlockNumber, DynBytes, MessageId, MessageStatus, Pop, Sol, Vec, + Weight, +}; + +/// The first version of the XCM API. +pub mod v0; diff --git a/pop-api-vnext/src/messaging/xcm/v0.rs b/pop-api-vnext/src/messaging/xcm/v0.rs new file mode 100644 index 000000000..bc861d551 --- /dev/null +++ b/pop-api-vnext/src/messaging/xcm/v0.rs @@ -0,0 +1,279 @@ +pub use errors::{Error, Error::*}; +pub use ink::xcm::prelude::{Location, VersionedLocation, VersionedResponse, VersionedXcm}; +use ink::{scale::Decode, Address}; + +use super::{super::v0::Callback, *}; + +mod errors; + +pub type QueryId = u64; + +// Precompile index within the runtime +const PRECOMPILE: u16 = 5; +/// The address of the XCM precompile. +pub const PRECOMPILE_ADDRESS: Address = fixed_address(PRECOMPILE); + +/// The XCM precompile offers a streamlined interface for messaging using Polkadot's Cross-Consensus +/// Messaging (XCM). +#[ink::trait_definition] +pub trait Xcm { + /// Execute an XCM message from a local, signed, origin. + /// + /// # Parameters + /// - `message` - A SCALE-encoded versioned XCM message. + /// - `weight` - The maximum allowed weight for execution. + /// + /// # Returns + /// A SCALE-encoded dispatch result. + #[ink(message)] + fn execute(&self, message: DynBytes, weight: Weight) -> DynBytes; + + /// Initiate a new XCM query. + /// + /// Starts a query using the XCM interface, specifying a responder and timeout block. + /// + /// # Parameters + /// - `responder` - A SCALE-encoded versioned location of the XCM responder. + /// - `timeout` - Block number after which the query should timeout. + /// + /// # Returns + /// A unique query identifier. + #[ink(message)] + #[allow(non_snake_case)] + fn newQuery(&self, responder: DynBytes, timeout: BlockNumber) -> (MessageId, QueryId); + + /// Send an XCM from a given origin. + /// + /// # Parameters + /// - `destination` - The SCALE-encoded versioned location for the destination of the message. + /// - `message` - A SCALE-encoded versioned XCM message. + /// + /// # Returns + /// A SCALE-encoded dispatch result. + #[ink(message)] + fn send(&self, destination: DynBytes, message: DynBytes) -> DynBytes; +} + +/// The XCM precompile offers a streamlined interface for messaging using Polkadot's Cross-Consensus +/// Messaging (XCM). +#[ink::trait_definition] +pub trait XcmCallback { + /// Initiate a new XCM query. + /// + /// Starts a query using the XCM interface, specifying a responder and timeout block. + /// + /// # Parameters + /// - `responder` - A SCALE-encoded versioned location of the XCM responder. + /// - `timeout` - Block number after which the query should timeout. + /// - `callback` - The callback to execute upon receiving a response. + /// + /// # Returns + /// A unique query identifier. + #[ink(message)] + #[allow(non_snake_case)] + fn newQuery( + &self, + responder: DynBytes, + timeout: BlockNumber, + callback: Callback, + ) -> (MessageId, QueryId); +} + +/// The messaging interface of the XCM precompile offers a general interface for cross-chain +/// messaging operations. +/// +/// This convenience trait simply provides access to general cross-chain messaging operations via +/// the XCM precompile, so that users need only use a single precompile if desired. +#[ink::trait_definition] +pub trait Messaging { + /// Returns the response to a message. + /// + /// A non-existent message identifier will return an empty response, which could also be a valid + /// response depending on the source message. + /// + /// # Parameters + /// - `message` - The message identifier. + #[ink(message)] + #[allow(non_snake_case)] + fn getResponse(&self, message: MessageId) -> DynBytes; + + /// The identifier of this chain. + /// + /// # Returns + /// The identifier of this chain. + #[ink(message)] + fn id(&self) -> u32; + + /// Polls the status of a message. + /// + /// # Parameters + /// - `message` - The message identifier to poll. + #[ink(message)] + #[allow(non_snake_case)] + fn pollStatus(&self, message: MessageId) -> MessageStatus; + + /// Remove a completed or timed-out message. + /// + /// Allows users to clean up storage and reclaim deposits for messages that have concluded. + /// + /// # Parameters + /// - `message` - The identifier of the message to remove. + #[ink(message)] + fn remove(&self, message: MessageId); + + /// Remove a batch of completed or timed-out messages. + /// + /// Allows users to clean up storage and reclaim deposits for messages that have concluded. + /// + /// # Parameters + /// - `messages` - A set of identifiers of messages to remove (bounded by `MaxRemovals`). + #[ink(message)] + #[allow(non_snake_case)] + fn removeMany(&self, messages: Vec); +} + +/// Execute an XCM message from a local, signed, origin. +/// +/// # Parameters +/// - `message` - A XCM message. +/// - `weight` - The maximum allowed weight for execution. +/// +/// # Returns +/// A SCALE-encoded dispatch result. +#[inline] +pub fn execute(message: VersionedXcm, weight: Weight) -> Result<(), Error> { + let precompile: contract_ref!(Xcm, Pop, Sol) = PRECOMPILE_ADDRESS.into(); + let result = precompile.execute(DynBytes(message.encode()), weight); + Result::<(), ()>::decode(&mut result.0.as_slice()) + .map_err(|_| Error::DecodingFailed)? + .map_err(|_| Error::ExecutionFailed(result)) +} + +/// Returns the response to a message. +/// +/// A non-existent message identifier will return an empty response, which could also be a valid +/// response depending on the source message. +/// +/// # Parameters +/// - `message` - The message identifier. +#[inline] +pub fn get_response(message: MessageId) -> DynBytes { + let precompile: contract_ref!(Messaging, Pop, Sol) = PRECOMPILE_ADDRESS.into(); + precompile.getResponse(message) +} + +/// The identifier of this chain. +/// +/// NOTE: this is a precompile call and therefore has associated costs. +#[inline] +pub fn id() -> u32 { + let precompile: contract_ref!(Messaging, Pop, Sol) = PRECOMPILE_ADDRESS.into(); + precompile.id() +} + +/// Initiate a new XCM query. +/// +/// Starts a query using the XCM interface, specifying a responder and timeout block. +/// +/// # Parameters +/// - `responder` - The location of the XCM responder. +/// - `timeout` - Block number after which the query should timeout. +/// - `callback` - An optional callback to execute upon receiving a response. +/// +/// # Returns +/// A unique query identifier. +#[inline] +pub fn new_query( + responder: Location, + timeout: BlockNumber, + callback: Option, +) -> (MessageId, QueryId) { + let responder = DynBytes(responder.encode()); + match callback { + None => { + let precompile: contract_ref!(Xcm, Pop, Sol) = PRECOMPILE_ADDRESS.into(); + precompile.newQuery(responder, timeout) + }, + Some(callback) => { + let precompile: contract_ref!(XcmCallback, Pop, Sol) = PRECOMPILE_ADDRESS.into(); + precompile.newQuery(responder, timeout, callback) + }, + } +} + +/// Polls the status of a message. +/// +/// # Parameters +/// - `message` - The message identifier to poll. +#[inline] +pub fn poll_status(message: MessageId) -> MessageStatus { + let precompile: contract_ref!(Messaging, Pop, Sol) = PRECOMPILE_ADDRESS.into(); + precompile.pollStatus(message) +} + +/// Remove a completed or timed-out message. +/// +/// Allows users to clean up storage and reclaim deposits for messages that have concluded. +/// +/// # Parameters +/// - `message` - The identifier of the message to remove. +#[inline] +pub fn remove(message: MessageId) { + let precompile: contract_ref!(Messaging, Pop, Sol) = PRECOMPILE_ADDRESS.into(); + precompile.remove(message) +} + +/// Remove a batch of completed or timed-out messages. +/// +/// Allows users to clean up storage and reclaim deposits for messages that have concluded. +/// +/// # Parameters +/// - `messages` - A set of identifiers of messages to remove (bounded by `MaxRemovals`). +#[inline] +pub fn remove_many(messages: Vec) { + let precompile: contract_ref!(Messaging, Pop, Sol) = PRECOMPILE_ADDRESS.into(); + precompile.removeMany(messages) +} + +/// Send an XCM from a given origin. +/// +/// # Parameters +/// - `destination` - The destination of the message. +/// - `message` - A XCM message. +/// +/// # Returns +/// A SCALE-encoded dispatch result. +#[inline] +pub fn send( + destination: VersionedLocation, + message: VersionedXcm, +) -> Result<(), Error> { + let precompile: contract_ref!(Xcm, Pop, Sol) = PRECOMPILE_ADDRESS.into(); + let result = precompile.send(DynBytes(destination.encode()), DynBytes(message.encode())); + Result::<(), ()>::decode(&mut result.0.as_slice()) + .map_err(|_| Error::DecodingFailed)? + .map_err(|_| Error::SendingFailed(result)) +} + +/// A callback for handling responses to XCM queries. +#[ink::trait_definition] +pub trait OnQueryResponse { + /// Handles a response to a XCM query. + /// + /// # Parameters + /// - `id` - The identifier of the originating message. + /// - `response` - The response message. + #[ink(message)] + #[allow(non_snake_case)] + fn onQueryResponse(&mut self, id: MessageId, response: DynBytes); +} + +/// Event emitted when a XCM query is completed. +#[ink::event] +pub struct XcmCompleted { + /// The identifier of the originating message. + #[ink(topic)] + pub id: MessageId, + /// The response message. + pub result: DynBytes, +} diff --git a/pop-api-vnext/src/messaging/xcm/v0/errors.rs b/pop-api-vnext/src/messaging/xcm/v0/errors.rs new file mode 100644 index 000000000..cb9bd516e --- /dev/null +++ b/pop-api-vnext/src/messaging/xcm/v0/errors.rs @@ -0,0 +1,150 @@ +use ink::{sol::SolDecode, sol_error_selector}; + +use super::*; +use crate::{ + errors::{ + ArithmeticError, DispatchError, FixedBytes, ModuleError, TokenError, TransactionalError, + TrieError, + }, + impl_sol_encoding_for_precompile, + messaging::v0::errors::{ + ARITHMETIC, DISPATCH, MESSAGE_NOT_FOUND, MODULE, REQUEST_PENDING, TOKEN, TOO_MANY_MESSAGES, + TRANSACTIONAL, TRIE, + }, + sol::PrecompileError, +}; + +#[cfg_attr(feature = "std", derive(Debug, PartialEq))] +#[derive(ink::SolErrorEncode)] +#[ink::scale_derive(Decode, Encode, TypeInfo)] +pub enum Error { + /// An arithmetic error occurred. + Arithmetic(ArithmeticError), + /// The input failed to decode. + DecodingFailed, + /// Reason why a dispatch call failed. + Dispatch(DispatchError), + /// The execution of a XCM message failed. + ExecutionFailed(DynBytes), + /// Timeouts must be in the future. + FutureTimeoutMandatory, + /// Message block limit has been reached for this expiry block. Try a different timeout. + MaxMessageTimeoutPerBlockReached, + /// The message was not found. + MessageNotFound, + /// Reason why a pallet call failed. + Module { + /// Module index, matching the metadata module index. + index: u8, + /// Module specific error value. + error: FixedBytes<4>, + }, + /// Failed to convert origin. + OriginConversionFailed, + /// The request is pending. + RequestPending, + /// The sending of a XCM message failed. + SendingFailed(DynBytes), + /// An error to do with tokens. + Token(TokenError), + /// The number of messages exceeds the limit. + TooManyMessages, + /// The number of transactional layers has been reached, or we are not in a transactional + /// layer. + Transactional(TransactionalError), + /// An error with tries. + Trie(TrieError), +} + +impl_sol_encoding_for_precompile!(Error); + +impl PrecompileError for Error { + fn decode(data: &[u8]) -> Result { + if data.len() < 4 { + return Err(ink::sol::Error); + } + + match data[..4].try_into().expect("length checked above") { + ARITHMETIC => Ok(Self::Arithmetic(::decode(&data[4..])?)), + DECODING_FAILED => Ok(Self::DecodingFailed), + DISPATCH => Ok(Self::Dispatch(::decode(&data[4..])?)), + EXECUTION_FAILED => + Ok(Self::ExecutionFailed(::decode(&data[4..])?)), + FUTURE_TIMEOUT_MANDATORY => Ok(Self::FutureTimeoutMandatory), + MAX_MESSAGE_TIMEOUT_PER_BLOCK_REACHED => Ok(Self::MaxMessageTimeoutPerBlockReached), + MESSAGE_NOT_FOUND => Ok(Self::MessageNotFound), + MODULE => { + let ModuleError { index, error } = ::decode(&data[4..])?; + Ok(Self::Module { index, error }) + }, + ORIGIN_CONVERSION_FAILED => Ok(Self::OriginConversionFailed), + REQUEST_PENDING => Ok(Self::RequestPending), + SENDING_FAILED => Ok(Self::SendingFailed(::decode(&data[4..])?)), + TOKEN => Ok(Self::Token(::decode(&data[4..])?)), + TOO_MANY_MESSAGES => Ok(Self::TooManyMessages), + TRANSACTIONAL => + Ok(Self::Transactional(::decode(&data[4..])?)), + TRIE => Ok(Self::Trie(::decode(&data[4..])?)), + _ => Err(ink::sol::Error), + } + } +} + +const DECODING_FAILED: [u8; 4] = sol_error_selector!("DecodingFailed", ()); +const EXECUTION_FAILED: [u8; 4] = sol_error_selector!("ExecutionFailed", (DynBytes,)); +const FUTURE_TIMEOUT_MANDATORY: [u8; 4] = sol_error_selector!("FutureTimeoutMandatory", ()); +const MAX_MESSAGE_TIMEOUT_PER_BLOCK_REACHED: [u8; 4] = + sol_error_selector!("MaxMessageTimeoutPerBlockReached", ()); +const ORIGIN_CONVERSION_FAILED: [u8; 4] = sol_error_selector!("OriginConversionFailed", ()); +const SENDING_FAILED: [u8; 4] = sol_error_selector!("SendingFailed", (DynBytes,)); + +#[test] +fn error_decoding_works() { + use ink::sol::SolErrorDecode; + + for (encoded, expected) in [ + ( + "7fdb06c50000000000000000000000000000000000000000000000000000000000000001", + Arithmetic(ArithmeticError::Overflow), + ), + ("72065cff", DecodingFailed), + ( + "20c5a2a9000000000000000000000000000000000000000000000000000000000000000d", + Dispatch(DispatchError::RootNotAllowed), + ), + ( + "15fcd67500000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000", + ExecutionFailed(DynBytes(Vec::default())) + ), + ("885a28b2", FutureTimeoutMandatory), + ("fc952e0b", MaxMessageTimeoutPerBlockReached), + ("28915ac7", MessageNotFound), + ( + "3323f3c100000000000000000000000000000000000000000000000000000000000000ffffffffff00000000000000000000000000000000000000000000000000000000", + Module { index: 255, error: FixedBytes([255; 4]) }, + ), + ("8926fba8", OriginConversionFailed), + ("806d0f74", RequestPending), + ( + "0ff105a200000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000", + SendingFailed(DynBytes(Vec::default())) + ), + ( + "57fdc3d80000000000000000000000000000000000000000000000000000000000000009", + Token(TokenError::Blocked), + ), + ("1ec0b2f7", TooManyMessages), + ( + "3008a37e0000000000000000000000000000000000000000000000000000000000000001", + Transactional(TransactionalError::NoLayer), + ), + ( + "3ea87b59000000000000000000000000000000000000000000000000000000000000000d", + Trie(TrieError::DecodeError), + ), + ] { + let data = hex::decode(encoded).unwrap(); + let decoded = ::decode(data.as_slice()).expect(&format!("unable to decode {encoded}")); + assert_eq!(decoded, expected) + } +} diff --git a/pop-api-vnext/src/sol.rs b/pop-api-vnext/src/sol.rs new file mode 100644 index 000000000..b2d8fe9c5 --- /dev/null +++ b/pop-api-vnext/src/sol.rs @@ -0,0 +1,55 @@ +pub use ink::{abi::Sol, primitives::sol::SolErrorDecode, SolEncode}; + +/// Reverts the current contract execution, rolling back any changes and returning the specified +/// `error`. +// Helper until Solidity support added for Rust errors for automatic reversion based on returning an +// error. +pub fn revert(error: &impl for<'a> SolEncode<'a>) -> ! { + use ink::env::{return_value_solidity, ReturnFlags}; + return_value_solidity(ReturnFlags::REVERT, error) +} + +// Decoding of an error from a precompile, where custom errors have been base64 encoded. +pub(crate) trait PrecompileError: Sized { + fn decode(data: &[u8]) -> Result; +} + +#[macro_export] +macro_rules! impl_sol_encoding_for_precompile { + ($($type:ty),*) => { + $( + impl ink::sol::SolErrorDecode for $type { + fn decode(data: &[u8]) -> Result { + use base64::{engine::general_purpose::STANDARD as BASE64, Engine as _}; + use ink::{prelude::string::String, sol_error_selector}; + use crate::sol::PrecompileError; + + // Check if `Error(string)` + pub(crate) const ERROR: [u8; 4] = sol_error_selector!("Error", (String,)); + if data.len() < 4 || data[..4] != ERROR { + return ::decode(data); + } + + // Decode as `Error(string)`, then via `base64::decode` and finally decode into `Error` + #[derive(ink::SolErrorDecode)] + pub(crate) struct Error(pub(crate) String); + let error = Error::decode(data)?; + let data = BASE64.decode(error.0).map_err(|_| ink::sol::Error)?; + return ::decode(data.as_slice()); + } + } + + impl<'a> ink::SolEncode<'a> for $type { + type SolType = (); + + fn encode(&'a self) -> Vec { + ink::primitives::sol::SolErrorEncode::encode(self) + } + + fn to_sol_type(&'a self) -> Self::SolType { + () + } + } + )* + }; +} diff --git a/pop-api/Cargo.lock b/pop-api/Cargo.lock index b00e272fd..ba83a109c 100644 --- a/pop-api/Cargo.lock +++ b/pop-api/Cargo.lock @@ -428,6 +428,12 @@ dependencies = [ "syn 2.0.101", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "autocfg" version = "1.4.0" @@ -470,7 +476,7 @@ checksum = "89e25b6adfb930f02d1981565a6e5d9c547ac15a96606256d3b59040e5cd4ca3" [[package]] name = "binary-merkle-tree" version = "16.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "hash-db", "log", @@ -1163,10 +1169,16 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + [[package]] name = "frame-benchmarking" -version = "40.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "frame-support", "frame-support-procedural", @@ -1179,19 +1191,19 @@ dependencies = [ "serde", "sp-api", "sp-application-crypto", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0", + "sp-io 41.0.1", "sp-runtime", - "sp-runtime-interface 29.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-runtime-interface 30.0.0", + "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "static_assertions", ] [[package]] name = "frame-metadata" -version = "20.0.0" +version = "23.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26de808fa6461f2485dc51811aefed108850064994fb4a62b3ac21ffa62ac8df" +checksum = "d8c26fcb0454397c522c05fdad5380c4e622f8a875638af33bff5a320d1fc965" dependencies = [ "cfg-if", "parity-scale-codec", @@ -1201,8 +1213,8 @@ dependencies = [ [[package]] name = "frame-support" -version = "40.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "aquamarine", "array-bytes", @@ -1222,28 +1234,28 @@ dependencies = [ "serde", "serde_json", "sp-api", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-arithmetic 27.0.0", + "sp-core 37.0.0", "sp-crypto-hashing-proc-macro", - "sp-debug-derive 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-debug-derive 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-genesis-builder", "sp-inherents", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-io 41.0.1", "sp-metadata-ir", "sp-runtime", "sp-staking", - "sp-state-machine 0.45.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-tracing 17.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-trie 39.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-weights 31.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-state-machine 0.46.0", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-tracing 17.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-trie 40.0.0", + "sp-weights 32.0.0", "tt-call", ] [[package]] name = "frame-support-procedural" -version = "33.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "34.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "Inflector", "cfg-expr", @@ -1256,14 +1268,14 @@ dependencies = [ "proc-macro-warning", "proc-macro2", "quote", - "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "syn 2.0.101", ] [[package]] name = "frame-support-procedural-tools" version = "13.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 3.3.0", @@ -1275,7 +1287,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "12.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "proc-macro2", "quote", @@ -1284,8 +1296,8 @@ dependencies = [ [[package]] name = "frame-system" -version = "40.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "cfg-if", "docify", @@ -1294,11 +1306,11 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0", + "sp-io 41.0.1", "sp-runtime", "sp-version", - "sp-weights 31.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-weights 32.0.0", ] [[package]] @@ -1467,6 +1479,25 @@ dependencies = [ "subtle", ] +[[package]] +name = "h2" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + [[package]] name = "hash-db" version = "0.16.0" @@ -1508,6 +1539,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" dependencies = [ "allocator-api2", + "equivalent", + "foldhash", ] [[package]] @@ -1564,6 +1597,87 @@ dependencies = [ "hmac 0.8.1", ] +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", +] + +[[package]] +name = "hyper-util" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "hyper", + "pin-project-lite", + "tokio", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -2111,6 +2225,17 @@ dependencies = [ "hash-db", ] +[[package]] +name = "memory-db" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e300c54e3239a86f9c61cc63ab0f03862eb40b1c6e065dc6fd6ceaeff6da93d" +dependencies = [ + "foldhash", + "hash-db", + "hashbrown 0.15.3", +] + [[package]] name = "merlin" version = "3.0.0" @@ -2132,6 +2257,17 @@ dependencies = [ "adler2", ] +[[package]] +name = "mio" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +dependencies = [ + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.59.0", +] + [[package]] name = "nalgebra" version = "0.33.2" @@ -2286,8 +2422,8 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0", + "sp-io 41.0.1", "sp-runtime", ] @@ -2423,6 +2559,12 @@ version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "31ff33982a807d8567645d4784b9b5d7ab87bcb494f534a57cadd9012688e102" +[[package]] +name = "polkavm-common" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed9e5af472f729fcf3b3c1cf17508ddbb3505259dd6e2ee0fb5a29e105d22" + [[package]] name = "polkavm-derive" version = "0.9.1" @@ -2441,6 +2583,15 @@ dependencies = [ "polkavm-derive-impl-macro 0.18.0", ] +[[package]] +name = "polkavm-derive" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "176144f8661117ea95fa7cf868c9a62d6b143e8a2ebcb7582464c3faade8669a" +dependencies = [ + "polkavm-derive-impl-macro 0.24.0", +] + [[package]] name = "polkavm-derive-impl" version = "0.9.0" @@ -2465,6 +2616,18 @@ dependencies = [ "syn 2.0.101", ] +[[package]] +name = "polkavm-derive-impl" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5a21844afdfcc10c92b9ef288ccb926211af27478d1730fcd55e4aec710179d" +dependencies = [ + "polkavm-common 0.24.0", + "proc-macro2", + "quote", + "syn 2.0.101", +] + [[package]] name = "polkavm-derive-impl-macro" version = "0.9.0" @@ -2485,6 +2648,16 @@ dependencies = [ "syn 2.0.101", ] +[[package]] +name = "polkavm-derive-impl-macro" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba0ef0f17ad81413ea1ca5b1b67553aedf5650c88269b673d3ba015c83bc2651" +dependencies = [ + "polkavm-derive-impl 0.24.0", + "syn 2.0.101", +] + [[package]] name = "pop-api" version = "0.0.0" @@ -2495,7 +2668,7 @@ dependencies = [ "pallet-nfts", "parity-scale-codec", "pop-primitives", - "sp-io 40.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-io 40.0.1", ] [[package]] @@ -2608,6 +2781,20 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "prometheus" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d33c28a30771f7f96db69893f78b857f7450d7e0237e9c8fc6427a81bae7ed1" +dependencies = [ + "cfg-if", + "fnv", + "lazy_static", + "memchr", + "parking_lot", + "thiserror", +] + [[package]] name = "quote" version = "1.0.40" @@ -3175,10 +3362,20 @@ version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + [[package]] name = "sp-api" -version = "36.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "docify", "hash-db", @@ -3186,21 +3383,21 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-api-proc-macro", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0", + "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-metadata-ir", "sp-runtime", - "sp-runtime-interface 29.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-state-machine 0.45.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-trie 39.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-runtime-interface 30.0.0", + "sp-state-machine 0.46.0", + "sp-trie 40.0.0", "sp-version", "thiserror", ] [[package]] name = "sp-api-proc-macro" -version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "23.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "Inflector", "blake2", @@ -3213,14 +3410,14 @@ dependencies = [ [[package]] name = "sp-application-crypto" -version = "40.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0", + "sp-io 41.0.1", ] [[package]] @@ -3240,8 +3437,8 @@ dependencies = [ [[package]] name = "sp-arithmetic" -version = "26.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "27.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "docify", "integer-sqrt", @@ -3289,7 +3486,7 @@ dependencies = [ "sp-crypto-hashing 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-debug-derive 14.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-externalities 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-runtime-interface 29.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-runtime-interface 29.0.1", "sp-std 14.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-storage 22.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "ss58-registry", @@ -3302,8 +3499,8 @@ dependencies = [ [[package]] name = "sp-core" -version = "36.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "ark-vrf", "array-bytes", @@ -3311,7 +3508,7 @@ dependencies = [ "blake2", "bounded-collections", "bs58", - "dyn-clonable", + "dyn-clone", "ed25519-zebra", "futures", "hash-db", @@ -3333,14 +3530,15 @@ dependencies = [ "secp256k1", "secrecy", "serde", - "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-debug-derive 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime-interface 29.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sha2 0.10.9", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-debug-derive 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime-interface 30.0.0", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "ss58-registry", - "substrate-bip39 0.6.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "substrate-bip39 0.6.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "thiserror", "tracing", "w3f-bls", @@ -3364,7 +3562,7 @@ dependencies = [ [[package]] name = "sp-crypto-hashing" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "blake2b_simd", "byteorder", @@ -3377,10 +3575,10 @@ dependencies = [ [[package]] name = "sp-crypto-hashing-proc-macro" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "quote", - "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "syn 2.0.101", ] @@ -3398,7 +3596,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "14.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "proc-macro2", "quote", @@ -3419,17 +3617,17 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.30.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "environmental", "parity-scale-codec", - "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "sp-genesis-builder" -version = "0.17.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.18.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "parity-scale-codec", "scale-info", @@ -3440,8 +3638,8 @@ dependencies = [ [[package]] name = "sp-inherents" -version = "36.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -3466,22 +3664,22 @@ dependencies = [ "polkavm-derive 0.18.0", "rustversion", "secp256k1", - "sp-core 36.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 36.1.0", "sp-crypto-hashing 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-externalities 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-keystore 0.42.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-runtime-interface 29.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-state-machine 0.45.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-keystore 0.42.0", + "sp-runtime-interface 29.0.1", + "sp-state-machine 0.45.0", "sp-tracing 17.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-trie 39.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-trie 39.1.0", "tracing", "tracing-core", ] [[package]] name = "sp-io" -version = "40.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "41.0.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "bytes", "docify", @@ -3489,17 +3687,17 @@ dependencies = [ "libsecp256k1", "log", "parity-scale-codec", - "polkavm-derive 0.18.0", + "polkavm-derive 0.24.0", "rustversion", "secp256k1", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-keystore 0.42.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime-interface 29.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-state-machine 0.45.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-tracing 17.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-trie 39.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0", + "sp-crypto-hashing 0.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-keystore 0.43.0", + "sp-runtime-interface 30.0.0", + "sp-state-machine 0.46.0", + "sp-tracing 17.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-trie 40.0.0", "tracing", "tracing-core", ] @@ -3512,25 +3710,25 @@ checksum = "45f893398a5330e28f219662c7a0afa174fb068d8f82d2a9990016c4b0bc4369" dependencies = [ "parity-scale-codec", "parking_lot", - "sp-core 36.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 36.1.0", "sp-externalities 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sp-keystore" -version = "0.42.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.43.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "parity-scale-codec", "parking_lot", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0", + "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] name = "sp-metadata-ir" -version = "0.10.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.11.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "frame-metadata", "parity-scale-codec", @@ -3550,7 +3748,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "13.0.2" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "backtrace", "regex", @@ -3558,8 +3756,8 @@ dependencies = [ [[package]] name = "sp-runtime" -version = "41.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "42.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "binary-merkle-tree", "docify", @@ -3575,12 +3773,12 @@ dependencies = [ "serde", "simple-mermaid", "sp-application-crypto", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-io 40.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-trie 39.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-weights 31.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-arithmetic 27.0.0", + "sp-core 37.0.0", + "sp-io 41.0.1", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-trie 40.0.0", + "sp-weights 32.0.0", "tracing", "tuplex", ] @@ -3597,30 +3795,30 @@ dependencies = [ "polkavm-derive 0.18.0", "primitive-types", "sp-externalities 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-runtime-interface-proc-macro 18.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-runtime-interface-proc-macro 18.0.0", "sp-std 14.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-storage 22.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-tracing 17.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-wasm-interface 21.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-wasm-interface 21.0.1", "static_assertions", ] [[package]] name = "sp-runtime-interface" -version = "29.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "30.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "bytes", "impl-trait-for-tuples", "parity-scale-codec", - "polkavm-derive 0.18.0", + "polkavm-derive 0.24.0", "primitive-types", - "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-runtime-interface-proc-macro 18.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-tracing 17.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-wasm-interface 21.0.1 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-runtime-interface-proc-macro 19.0.0", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-storage 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-tracing 17.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-wasm-interface 22.0.0", "static_assertions", ] @@ -3640,8 +3838,8 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" -version = "18.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "19.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "Inflector", "expander", @@ -3653,14 +3851,14 @@ dependencies = [ [[package]] name = "sp-staking" -version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "39.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", "scale-info", "serde", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0", "sp-runtime", ] @@ -3676,10 +3874,10 @@ dependencies = [ "parking_lot", "rand", "smallvec", - "sp-core 36.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 36.1.0", "sp-externalities 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-panic-handler 13.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-trie 39.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-trie 39.1.0", "thiserror", "tracing", "trie-db", @@ -3687,8 +3885,8 @@ dependencies = [ [[package]] name = "sp-state-machine" -version = "0.45.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "0.46.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "hash-db", "log", @@ -3696,10 +3894,10 @@ dependencies = [ "parking_lot", "rand", "smallvec", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-panic-handler 13.0.2 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-trie 39.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0", + "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-panic-handler 13.0.2 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "sp-trie 40.0.0", "thiserror", "tracing", "trie-db", @@ -3714,7 +3912,7 @@ checksum = "12f8ee986414b0a9ad741776762f4083cd3a5128449b982a3919c4df36874834" [[package]] name = "sp-std" version = "14.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" [[package]] name = "sp-storage" @@ -3732,13 +3930,13 @@ dependencies = [ [[package]] name = "sp-storage" version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "impl-serde 0.5.0", "parity-scale-codec", "ref-cast", "serde", - "sp-debug-derive 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-debug-derive 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -3756,7 +3954,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "17.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "parity-scale-codec", "tracing", @@ -3772,14 +3970,14 @@ checksum = "a555bf4c42ca89e2e7bf2f11308806dad13cdbd7f8fd60cf2649f12b6ee809bf" dependencies = [ "ahash", "hash-db", - "memory-db", + "memory-db 0.32.0", "nohash-hasher", "parity-scale-codec", "parking_lot", "rand", "scale-info", "schnellru", - "sp-core 36.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 36.1.0", "sp-externalities 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", "thiserror", "tracing", @@ -3789,20 +3987,23 @@ dependencies = [ [[package]] name = "sp-trie" -version = "39.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "40.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "ahash", + "foldhash", "hash-db", - "memory-db", + "hashbrown 0.15.3", + "memory-db 0.34.0", "nohash-hasher", "parity-scale-codec", "parking_lot", "rand", "scale-info", "schnellru", - "sp-core 36.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-core 37.0.0", + "sp-externalities 0.30.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", + "substrate-prometheus-endpoint", "thiserror", "tracing", "trie-db", @@ -3811,8 +4012,8 @@ dependencies = [ [[package]] name = "sp-version" -version = "39.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "40.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "impl-serde 0.5.0", "parity-scale-codec", @@ -3821,7 +4022,7 @@ dependencies = [ "serde", "sp-crypto-hashing-proc-macro", "sp-runtime", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", "sp-version-proc-macro", "thiserror", ] @@ -3829,7 +4030,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "15.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "parity-scale-codec", "proc-macro-warning", @@ -3852,8 +4053,8 @@ dependencies = [ [[package]] name = "sp-wasm-interface" -version = "21.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "22.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "anyhow", "impl-trait-for-tuples", @@ -3872,22 +4073,22 @@ dependencies = [ "scale-info", "serde", "smallvec", - "sp-arithmetic 26.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-arithmetic 26.1.0", "sp-debug-derive 14.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sp-weights" -version = "31.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +version = "32.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "bounded-collections", "parity-scale-codec", "scale-info", "serde", "smallvec", - "sp-arithmetic 26.1.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", - "sp-debug-derive 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4)", + "sp-arithmetic 27.0.0", + "sp-debug-derive 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506)", ] [[package]] @@ -3930,7 +4131,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-weights 31.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-weights 31.1.0", "xcm-procedural", ] @@ -3962,7 +4163,7 @@ dependencies = [ [[package]] name = "substrate-bip39" version = "0.6.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2503-4#0548e837980715584bfdea1fb907c9a6b3186bc2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" dependencies = [ "hmac 0.12.1", "pbkdf2", @@ -3971,6 +4172,20 @@ dependencies = [ "zeroize", ] +[[package]] +name = "substrate-prometheus-endpoint" +version = "0.17.2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2506#6fd693e6d9cfa46cd2acbcb41cd5b0451a62d67c" +dependencies = [ + "http-body-util", + "hyper", + "hyper-util", + "log", + "prometheus", + "thiserror", + "tokio", +] + [[package]] name = "subtle" version = "2.6.1" @@ -4110,6 +4325,35 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" +[[package]] +name = "tokio" +version = "1.45.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "socket2", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-util" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + [[package]] name = "toml" version = "0.8.22" @@ -4446,7 +4690,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys", + "windows-sys 0.59.0", ] [[package]] @@ -4455,6 +4699,15 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", +] + [[package]] name = "windows-sys" version = "0.59.0" diff --git a/pop-api/integration-tests/contracts/create_token_in_constructor/Cargo.lock b/pop-api/integration-tests/contracts/create_token_in_constructor/Cargo.lock index dd0e00d82..3f1b9cf9f 100644 --- a/pop-api/integration-tests/contracts/create_token_in_constructor/Cargo.lock +++ b/pop-api/integration-tests/contracts/create_token_in_constructor/Cargo.lock @@ -1928,9 +1928,9 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "3.7.4" +version = "3.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9fde3d0718baf5bc92f577d652001da0f8d54cd03a7974e118d04fc888dc23d" +checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" dependencies = [ "arrayvec", "bitvec", @@ -1945,9 +1945,9 @@ dependencies = [ [[package]] name = "parity-scale-codec-derive" -version = "3.7.4" +version = "3.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581c837bb6b9541ce7faa9377c20616e4fb7650f6b0f68bc93c827ee504fb7b3" +checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", diff --git a/pop-api/integration-tests/contracts/fungibles/Cargo.lock b/pop-api/integration-tests/contracts/fungibles/Cargo.lock index d3cc173ca..54544517d 100644 --- a/pop-api/integration-tests/contracts/fungibles/Cargo.lock +++ b/pop-api/integration-tests/contracts/fungibles/Cargo.lock @@ -1928,9 +1928,9 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "3.7.4" +version = "3.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9fde3d0718baf5bc92f577d652001da0f8d54cd03a7974e118d04fc888dc23d" +checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" dependencies = [ "arrayvec", "bitvec", @@ -1945,9 +1945,9 @@ dependencies = [ [[package]] name = "parity-scale-codec-derive" -version = "3.7.4" +version = "3.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581c837bb6b9541ce7faa9377c20616e4fb7650f6b0f68bc93c827ee504fb7b3" +checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", diff --git a/pop-api/integration-tests/contracts/messaging/Cargo.lock b/pop-api/integration-tests/contracts/messaging/Cargo.lock index 3abae3911..a717eb46e 100644 --- a/pop-api/integration-tests/contracts/messaging/Cargo.lock +++ b/pop-api/integration-tests/contracts/messaging/Cargo.lock @@ -1928,9 +1928,9 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "3.7.4" +version = "3.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9fde3d0718baf5bc92f577d652001da0f8d54cd03a7974e118d04fc888dc23d" +checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" dependencies = [ "arrayvec", "bitvec", @@ -1945,9 +1945,9 @@ dependencies = [ [[package]] name = "parity-scale-codec-derive" -version = "3.7.4" +version = "3.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581c837bb6b9541ce7faa9377c20616e4fb7650f6b0f68bc93c827ee504fb7b3" +checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", diff --git a/pop-api/integration-tests/contracts/nonfungibles/Cargo.lock b/pop-api/integration-tests/contracts/nonfungibles/Cargo.lock index cf3ad145e..05c4c5a97 100644 --- a/pop-api/integration-tests/contracts/nonfungibles/Cargo.lock +++ b/pop-api/integration-tests/contracts/nonfungibles/Cargo.lock @@ -1948,9 +1948,9 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "3.7.4" +version = "3.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9fde3d0718baf5bc92f577d652001da0f8d54cd03a7974e118d04fc888dc23d" +checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" dependencies = [ "arrayvec", "bitvec", @@ -1965,9 +1965,9 @@ dependencies = [ [[package]] name = "parity-scale-codec-derive" -version = "3.7.4" +version = "3.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581c837bb6b9541ce7faa9377c20616e4fb7650f6b0f68bc93c827ee504fb7b3" +checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", diff --git a/runtime/common/src/genesis.rs b/runtime/common/src/genesis.rs index dd3d327fa..ae2115888 100644 --- a/runtime/common/src/genesis.rs +++ b/runtime/common/src/genesis.rs @@ -1,5 +1,3 @@ -#[cfg(not(feature = "std"))] -use alloc::format; use alloc::vec::Vec; use parachains_common::AccountId; diff --git a/runtime/common/src/weights/cumulus_pallet_xcmp_queue.rs b/runtime/common/src/weights/cumulus_pallet_xcmp_queue.rs index 30bc13290..256bf8114 100644 --- a/runtime/common/src/weights/cumulus_pallet_xcmp_queue.rs +++ b/runtime/common/src/weights/cumulus_pallet_xcmp_queue.rs @@ -65,6 +65,7 @@ impl cumulus_pallet_xcmp_queue::WeightInfo for WeightIn .saturating_add(T::DbWeight::get().reads(4)) .saturating_add(T::DbWeight::get().writes(3)) } + // NOTE: copied from polkadot-sdk until benchmarks can be re-run /// Storage: `XcmpQueue::QueueConfig` (r:1 w:0) /// Proof: `XcmpQueue::QueueConfig` (`max_values`: Some(1), `max_size`: Some(12), added: 507, mode: `MaxEncodedLen`) /// Storage: `MessageQueue::BookStateFor` (r:1 w:1) @@ -75,15 +76,77 @@ impl cumulus_pallet_xcmp_queue::WeightInfo for WeightIn /// Proof: `XcmpQueue::InboundXcmpSuspended` (`max_values`: Some(1), `max_size`: Some(4002), added: 4497, mode: `MaxEncodedLen`) /// Storage: `MessageQueue::Pages` (r:0 w:1) /// Proof: `MessageQueue::Pages` (`max_values`: None, `max_size`: Some(105521), added: 107996, mode: `MaxEncodedLen`) - fn enqueue_2_empty_xcmp_messages() -> Weight { + /// The range of component `n` is `[0, 1000]`. + fn enqueue_n_empty_xcmp_messages(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `151` // Estimated: `5487` - // Minimum execution time: 22_251_000 picoseconds. - Weight::from_parts(22_846_000, 0) - .saturating_add(Weight::from_parts(0, 5487)) - .saturating_add(T::DbWeight::get().reads(4)) - .saturating_add(T::DbWeight::get().writes(3)) + // Minimum execution time: 7_000_000 picoseconds. + Weight::from_parts(8_987_577, 5487) + // Standard Error: 313 + .saturating_add(Weight::from_parts(94_980, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().reads(4_u64)) + .saturating_add(T::DbWeight::get().writes(3_u64)) + } + /// Storage: `XcmpQueue::QueueConfig` (r:1 w:0) + /// Proof: `XcmpQueue::QueueConfig` (`max_values`: Some(1), `max_size`: Some(12), added: 507, mode: `MaxEncodedLen`) + /// Storage: `MessageQueue::BookStateFor` (r:1 w:1) + /// Proof: `MessageQueue::BookStateFor` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + /// Storage: `MessageQueue::Pages` (r:1 w:1) + /// Proof: `MessageQueue::Pages` (`max_values`: None, `max_size`: Some(105521), added: 107996, mode: `MaxEncodedLen`) + /// Storage: `XcmpQueue::InboundXcmpSuspended` (r:1 w:0) + /// Proof: `XcmpQueue::InboundXcmpSuspended` (`max_values`: Some(1), `max_size`: Some(4002), added: 4497, mode: `MaxEncodedLen`) + /// The range of component `n` is `[0, 105457]`. + fn enqueue_empty_xcmp_message_at(n: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `334 + n * (1 ±0)` + // Estimated: `108986` + // Minimum execution time: 12_000_000 picoseconds. + Weight::from_parts(11_015_940, 108986) + // Standard Error: 32 + .saturating_add(Weight::from_parts(911, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().reads(4_u64)) + .saturating_add(T::DbWeight::get().writes(2_u64)) + } + /// Storage: `XcmpQueue::QueueConfig` (r:1 w:0) + /// Proof: `XcmpQueue::QueueConfig` (`max_values`: Some(1), `max_size`: Some(12), added: 507, mode: `MaxEncodedLen`) + /// Storage: `MessageQueue::BookStateFor` (r:1 w:1) + /// Proof: `MessageQueue::BookStateFor` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + /// Storage: `MessageQueue::ServiceHead` (r:1 w:1) + /// Proof: `MessageQueue::ServiceHead` (`max_values`: Some(1), `max_size`: Some(5), added: 500, mode: `MaxEncodedLen`) + /// Storage: `XcmpQueue::InboundXcmpSuspended` (r:1 w:0) + /// Proof: `XcmpQueue::InboundXcmpSuspended` (`max_values`: Some(1), `max_size`: Some(4002), added: 4497, mode: `MaxEncodedLen`) + /// Storage: `MessageQueue::Pages` (r:0 w:100) + /// Proof: `MessageQueue::Pages` (`max_values`: None, `max_size`: Some(105521), added: 107996, mode: `MaxEncodedLen`) + /// The range of component `n` is `[0, 100]`. + fn enqueue_n_full_pages(n: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `186` + // Estimated: `5487` + // Minimum execution time: 7_000_000 picoseconds. + Weight::from_parts(7_000_000, 5487) + // Standard Error: 20_150 + .saturating_add(Weight::from_parts(20_690_483, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().reads(4_u64)) + .saturating_add(T::DbWeight::get().writes(2_u64)) + .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(n.into()))) + } + /// Storage: `XcmpQueue::QueueConfig` (r:1 w:0) + /// Proof: `XcmpQueue::QueueConfig` (`max_values`: Some(1), `max_size`: Some(12), added: 507, mode: `MaxEncodedLen`) + /// Storage: `MessageQueue::BookStateFor` (r:1 w:1) + /// Proof: `MessageQueue::BookStateFor` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + /// Storage: `MessageQueue::Pages` (r:1 w:1) + /// Proof: `MessageQueue::Pages` (`max_values`: None, `max_size`: Some(105521), added: 107996, mode: `MaxEncodedLen`) + /// Storage: `XcmpQueue::InboundXcmpSuspended` (r:1 w:0) + /// Proof: `XcmpQueue::InboundXcmpSuspended` (`max_values`: Some(1), `max_size`: Some(4002), added: 4497, mode: `MaxEncodedLen`) + fn enqueue_1000_small_xcmp_messages() -> Weight { + // Proof Size summary in bytes: + // Measured: `53067` + // Estimated: `108986` + // Minimum execution time: 139_000_000 picoseconds. + Weight::from_parts(148_000_000, 108986) + .saturating_add(T::DbWeight::get().reads(4_u64)) + .saturating_add(T::DbWeight::get().writes(2_u64)) } /// Storage: `XcmpQueue::OutboundXcmpStatus` (r:1 w:1) /// Proof: `XcmpQueue::OutboundXcmpStatus` (`max_values`: Some(1), `max_size`: Some(1282), added: 1777, mode: `MaxEncodedLen`) diff --git a/runtime/common/src/weights/pallet_assets.rs b/runtime/common/src/weights/pallet_assets.rs index 1be48c443..0d38324d7 100644 --- a/runtime/common/src/weights/pallet_assets.rs +++ b/runtime/common/src/weights/pallet_assets.rs @@ -492,4 +492,35 @@ impl pallet_assets::WeightInfo for WeightInfo { .saturating_add(T::DbWeight::get().reads(4_u64)) .saturating_add(T::DbWeight::get().writes(4_u64)) } + // NOTE: copied from polkadot-sdk until benchmarks can be re-run + /// Storage: `Assets::Asset` (r:1 w:0) + /// Proof: `Assets::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) + fn total_issuance() -> Weight { + // Proof Size summary in bytes: + // Measured: `418` + // Estimated: `3675` + // Minimum execution time: 8_792_000 picoseconds. + Weight::from_parts(9_095_000, 3675) + .saturating_add(T::DbWeight::get().reads(1_u64)) + } + /// Storage: `Assets::Account` (r:1 w:0) + /// Proof: `Assets::Account` (`max_values`: None, `max_size`: Some(134), added: 2609, mode: `MaxEncodedLen`) + fn balance() -> Weight { + // Proof Size summary in bytes: + // Measured: `255` + // Estimated: `3599` + // Minimum execution time: 8_924_000 picoseconds. + Weight::from_parts(9_407_000, 3599) + .saturating_add(T::DbWeight::get().reads(1_u64)) + } + /// Storage: `Assets::Approvals` (r:1 w:0) + /// Proof: `Assets::Approvals` (`max_values`: None, `max_size`: Some(148), added: 2623, mode: `MaxEncodedLen`) + fn allowance() -> Weight { + // Proof Size summary in bytes: + // Measured: `350` + // Estimated: `3613` + // Minimum execution time: 11_348_000 picoseconds. + Weight::from_parts(11_882_000, 3613) + .saturating_add(T::DbWeight::get().reads(1_u64)) + } } diff --git a/runtime/common/src/weights/pallet_revive.rs b/runtime/common/src/weights/pallet_revive.rs index f031145bd..3c5b28302 100644 --- a/runtime/common/src/weights/pallet_revive.rs +++ b/runtime/common/src/weights/pallet_revive.rs @@ -994,4 +994,25 @@ impl pallet_revive::WeightInfo for WeightInfo { // Standard Error: 10 .saturating_add(Weight::from_parts(77_239, 0).saturating_mul(r.into())) } + // NOTE: copied from polkadot-sdk until benchmarks can be re-run + /// Storage: `Revive::ContractInfoOf` (r:1 w:1) + /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`) + /// Storage: `System::Account` (r:1 w:0) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `Measured`) + /// The range of component `d` is `[0, 1]`. + /// The range of component `i` is `[0, 262144]`. + fn seal_call_precompile(d: u32, i: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `0 + d * (453 ±0)` + // Estimated: `1959 + d * (1959 ±0)` + // Minimum execution time: 19_412_000 picoseconds. + Weight::from_parts(3_906_222, 1959) + // Standard Error: 378_943 + .saturating_add(Weight::from_parts(16_405_804, 0).saturating_mul(d.into())) + // Standard Error: 2 + .saturating_add(Weight::from_parts(1_205, 0).saturating_mul(i.into())) + .saturating_add(T::DbWeight::get().reads((2_u64).saturating_mul(d.into()))) + .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(d.into()))) + .saturating_add(Weight::from_parts(0, 1959).saturating_mul(d.into())) + } } diff --git a/runtime/devnet/Cargo.toml b/runtime/devnet/Cargo.toml index 79376a1c1..c88fde03c 100644 --- a/runtime/devnet/Cargo.toml +++ b/runtime/devnet/Cargo.toml @@ -25,6 +25,7 @@ smallvec.workspace = true # Local pallet-api.workspace = true +pallet-api-vnext = { workspace = true, features = [ "fungibles", "messaging" ] } pallet-nfts.workspace = true pop-chain-extension.workspace = true pop-primitives.workspace = true @@ -105,7 +106,7 @@ pallet-ismp-runtime-api.workspace = true [dev-dependencies] enumflags2.workspace = true env_logger.workspace = true -hex.workspace = true +sp-keyring.workspace = true [features] default = [ "std" ] @@ -133,6 +134,7 @@ std = [ "ismp-parachain/std", "ismp/std", "log/std", + "pallet-api-vnext/std", "pallet-api/std", "pallet-assets/std", "pallet-aura/std", @@ -197,6 +199,7 @@ runtime-benchmarks = [ "frame-support/runtime-benchmarks", "frame-system-benchmarking/runtime-benchmarks", "frame-system/runtime-benchmarks", + "pallet-api-vnext/runtime-benchmarks", "pallet-api/runtime-benchmarks", "pallet-assets/runtime-benchmarks", "pallet-balances/runtime-benchmarks", diff --git a/runtime/devnet/src/config/api/mod.rs b/runtime/devnet/src/config/api/mod.rs index e49a4c7d9..fc45577ac 100644 --- a/runtime/devnet/src/config/api/mod.rs +++ b/runtime/devnet/src/config/api/mod.rs @@ -3,16 +3,22 @@ use core::marker::PhantomData; use codec::Decode; use cumulus_primitives_core::Weight; -use frame_support::traits::Contains; +use frame_support::{ + dispatch::PostDispatchInfo, + pallet_prelude::{DispatchResultWithPostInfo, EnsureOrigin, Pays}, + parameter_types, + sp_runtime::DispatchError, + traits::Contains, +}; pub(crate) use pallet_api::Extension; use pallet_api::{extension::*, Read}; -use sp_core::ConstU8; -use sp_runtime::DispatchError; +use sp_core::{ConstU32, ConstU8}; use versioning::*; use crate::{ config::assets::{TrustBackedAssetsInstance, TrustBackedNftsInstance}, - fungibles, nonfungibles, Runtime, RuntimeCall, RuntimeEvent, + fungibles, nonfungibles, AccountId, Balance, Balances, BlockNumber, DealWithFees, Ismp, + Runtime, RuntimeCall, RuntimeHoldReason, TransactionByteFee, H160, }; mod versioning; @@ -83,13 +89,11 @@ impl RuntimeResult { impl fungibles::Config for Runtime { type AssetsInstance = TrustBackedAssetsInstance; - type RuntimeEvent = RuntimeEvent; type WeightInfo = fungibles::weights::SubstrateWeight; } impl nonfungibles::Config for Runtime { type NftsInstance = TrustBackedNftsInstance; - type RuntimeEvent = RuntimeEvent; type WeightInfo = (); } @@ -220,6 +224,149 @@ impl Contains for Filter { } } +impl pallet_api_vnext::fungibles::Config for Runtime { + type WeightInfo = (); +} + +mod messaging { + use pallet_api_vnext::messaging; + use pallet_xcm::Origin; + use xcm::latest::Location; + + use super::*; + use crate::config::xcm::LocalOriginToLocation; + + parameter_types! { + pub const MaxXcmQueryTimeoutsPerBlock: u32 = 100; + } + + impl messaging::Config for Runtime { + type CallbackExecutor = CallbackExecutor; + type FeeHandler = DealWithFees; + type Fungibles = Balances; + type IsmpDispatcher = Ismp; + type Keccak256 = Ismp; + type MaxContextLen = ConstU32<64>; + type MaxDataLen = ConstU32<512>; + type MaxKeyLen = ConstU32<8>; + type MaxKeys = ConstU32<10>; + type MaxRecipientLen = ConstU32<32>; + // TODO: size appropriately + type MaxRemovals = ConstU32<100>; + // TODO: ensure within the contract buffer bounds + type MaxResponseLen = ConstU32<512>; + type MaxXcmQueryTimeoutsPerBlock = MaxXcmQueryTimeoutsPerBlock; + type OffChainByteFee = TransactionByteFee; + type OnChainByteFee = TransactionByteFee; + type OriginConverter = LocalOriginToLocation; + type RuntimeHoldReason = RuntimeHoldReason; + type WeightInfo = (); + type WeightToFee = ::WeightToFee; + type Xcm = QueryHandler; + type XcmResponseOrigin = EnsureResponse; + } + + pub struct CallbackExecutor; + #[cfg(not(feature = "runtime-benchmarks"))] + impl messaging::CallbackExecutor for CallbackExecutor { + fn execute( + account: &AccountId, + contract: H160, + data: Vec, + gas_limit: Weight, + storage_deposit_limit: Balance, + ) -> DispatchResultWithPostInfo { + use frame_support::dispatch::DispatchErrorWithPostInfo; + use pallet_revive::DepositLimit; + + use crate::{Revive, RuntimeOrigin}; + + let mut output = Revive::bare_call( + RuntimeOrigin::signed(account.clone()), + contract, + Default::default(), + gas_limit, + DepositLimit::Balance(storage_deposit_limit), + data, + ); + + log::debug!(target: "pop-api", "callback weight consumed={:?}, weight required={:?}", output.gas_consumed, output.gas_required); + if let Ok(return_value) = &output.result { + let pallet_revive::ExecReturnValue { flags: _, data } = return_value; + log::debug!(target: "pop-api::extension", "return data={:?}", data); + if return_value.did_revert() { + output.result = Err(pallet_revive::Error::::ContractReverted.into()); + } + } + + let post_info = + PostDispatchInfo { actual_weight: Some(output.gas_consumed), pays_fee: Pays::No }; + + output + .result + .map(|_| post_info) + .map_err(|e| DispatchErrorWithPostInfo { post_info, error: e }) + } + + fn execution_weight() -> Weight { + use pallet_revive::WeightInfo; + ::WeightInfo::call() + } + } + #[cfg(feature = "runtime-benchmarks")] + impl messaging::CallbackExecutor for CallbackExecutor { + /// A successfull callback is the most expensive case. + fn execute( + _account: &AccountId, + _contract: H160, + _data: Vec, + gas_limit: Weight, + _storage_deposit_limit: Balance, + ) -> frame_support::dispatch::DispatchResultWithPostInfo { + DispatchResultWithPostInfo::Ok(PostDispatchInfo { + actual_weight: Some(gas_limit / 2), + pays_fee: Pays::Yes, + }) + } + + fn execution_weight() -> sp_runtime::Weight { + Default::default() + } + } + + pub struct EnsureResponse; + impl> + From> EnsureOrigin for EnsureResponse { + type Success = Location; + + fn try_origin(o: O) -> Result { + o.into().and_then(|o| match o { + Origin::Response(location) => Ok(location), + r => Err(O::from(r)), + }) + } + + #[cfg(feature = "runtime-benchmarks")] + fn try_successful_origin() -> Result { + Ok(Origin::Response(Location { parents: 1, interior: xcm::latest::Junctions::Here }) + .into()) + } + } + + pub struct QueryHandler; + impl messaging::transports::xcm::NotifyQueryHandler for QueryHandler { + type WeightInfo = pallet_xcm::Pallet; + + fn new_notify_query( + responder: impl Into, + notify: messaging::Call, + timeout: BlockNumber, + match_querier: impl Into, + ) -> u64 { + crate::PolkadotXcm::new_notify_query(responder, notify, timeout, match_querier) + } + } +} + #[cfg(test)] mod tests { use codec::Encode; diff --git a/runtime/devnet/src/config/assets.rs b/runtime/devnet/src/config/assets.rs index 487f0fe7c..6da67f82c 100644 --- a/runtime/devnet/src/config/assets.rs +++ b/runtime/devnet/src/config/assets.rs @@ -90,7 +90,6 @@ impl pallet_nfts::Config for Runtime { type MetadataDepositBase = NftsMetadataDepositBase; type OffchainPublic = ::Signer; type OffchainSignature = Signature; - type RuntimeEvent = RuntimeEvent; type StringLimit = ConstU32<256>; type ValueLimit = ConstU32<256>; type WeightInfo = pallet_nfts::weights::SubstrateWeight; diff --git a/runtime/devnet/src/config/contracts.rs b/runtime/devnet/src/config/contracts.rs index 576d78051..8e7b3e831 100644 --- a/runtime/devnet/src/config/contracts.rs +++ b/runtime/devnet/src/config/contracts.rs @@ -9,10 +9,20 @@ use pop_runtime_common::{DepositPerByte, DepositPerItem, UNIT}; use super::api::{self, Config}; use crate::{ - deposit, Balance, Balances, Perbill, PolkadotXcm, Runtime, RuntimeCall, RuntimeEvent, - RuntimeHoldReason, Timestamp, TransactionPayment, + config::assets::TrustBackedAssetsInstance, deposit, Balance, Balances, Perbill, Runtime, + RuntimeCall, RuntimeEvent, RuntimeHoldReason, Timestamp, TransactionPayment, }; +type Erc20 = + pallet_api_vnext::fungibles::precompiles::erc20::v0::Erc20; +type Fungibles = + pallet_api_vnext::fungibles::precompiles::v0::Fungibles; +type Ismp = + pallet_api_vnext::messaging::precompiles::ismp::v0::Ismp; +type Messaging = + pallet_api_vnext::messaging::precompiles::v0::Messaging; +type Xcm = pallet_api_vnext::messaging::precompiles::xcm::v0::Xcm; + fn schedule() -> pallet_contracts::Schedule { pallet_contracts::Schedule { limits: pallet_contracts::Limits { @@ -90,9 +100,6 @@ impl pallet_contracts::Config for Runtime { impl pallet_revive::Config for Runtime { type AddressMapper = pallet_revive::AccountId32Mapper; - // No runtime dispatchables are callable from contracts. - type CallFilter = Nothing; - type ChainExtension = (); type ChainId = ChainId; type CodeHashLockupDepositPercent = CodeHashLockupDepositPercent; type Currency = Balances; @@ -105,6 +112,18 @@ impl pallet_revive::Config for Runtime { type NativeToEthRatio = NativeToEthRatio; // 512 MB. Used in an integrity test that verifies the runtime has enough memory. type PVFMemory = ConstU32<{ 512 * 1024 * 1024 }>; + type Precompiles = ( + // 1: `Fungibles` precompile v0 using `TrustBackedAssetsInstance` instances + Fungibles<1, TrustBackedAssetsInstance>, + // 2: `Erc20` precompile v0 using `TrustBackedAssetsInstance` instances + Erc20<2, TrustBackedAssetsInstance>, + // 3: `Messaging` precompile v0 + Messaging<3>, + // 4: `Ismp` precompile v0 + Ismp<4>, + // 5: `Xcm` precompile v0 + Xcm<5>, + ); type RuntimeCall = RuntimeCall; type RuntimeEvent = RuntimeEvent; type RuntimeHoldReason = RuntimeHoldReason; @@ -116,7 +135,6 @@ impl pallet_revive::Config for Runtime { type UploadOrigin = EnsureSigned; type WeightInfo = pallet_revive::weights::SubstrateWeight; type WeightPrice = TransactionPayment; - type Xcm = PolkadotXcm; } impl TryFrom for pallet_revive::Call { @@ -139,3 +157,82 @@ fn contracts_prevents_runtime_calls() { TypeId::of::() ); } + +#[cfg(test)] +mod tests { + use frame_support::{assert_ok, traits::fungible::Mutate}; + use pallet_api_vnext::fungibles::precompiles::{erc20::v0::IERC20, v0::IFungibles::*}; + use pallet_revive::{ + precompiles::alloy::{primitives, sol_types::SolCall}, + AddressMapper, + }; + use sp_core::{bytes::to_hex, H160}; + use sp_keyring::Sr25519Keyring::{Alice, Bob}; + use sp_runtime::Weight; + + use super::*; + use crate::{Assets, Revive, RuntimeOrigin, System}; + + type AccountId32Mapper = pallet_revive::AccountId32Mapper; + type Asset = pallet_assets::Asset; + type NextAssetId = pallet_assets::NextAssetId; + + fn new_test_ext() -> sp_io::TestExternalities { + let mut ext = sp_io::TestExternalities::new_empty(); + ext.execute_with(|| { + System::set_block_number(1); + Balances::set_balance(&Alice.to_account_id(), 1_000 * UNIT); + Balances::set_balance(&Bob.to_account_id(), 1 * UNIT); + NextAssetId::put(1); + }); + ext + } + + #[test] + fn fungibles_precompiles_work() { + let caller = Alice.to_account_id(); + let origin = RuntimeOrigin::signed(caller.clone()); + let origin_addr = AccountId32Mapper::to_address(&caller); + let token = 1; + let fungibles_addr: H160 = Fungibles::<1, TrustBackedAssetsInstance>::address().into(); + let erc20_addr: H160 = Erc20::<2, TrustBackedAssetsInstance>::address(token).into(); + let total_supply: Balance = 10_000; + let gas_limit = Weight::from_parts(600_000_000, 10_000); + new_test_ext().execute_with(|| { + assert_ok!(Revive::map_account(origin.clone())); + assert_ok!(Revive::map_account(RuntimeOrigin::signed(Bob.to_account_id()))); + + // Create a token via fungibles precompile + println!("IFungibles precompile: {}", to_hex(&fungibles_addr.0, false)); + let call = + createCall { admin: origin_addr.0.into(), minBalance: primitives::U256::from(1) } + .abi_encode(); + println!("IFungibles.create: {}", to_hex(&call, false)); + assert_ok!(Revive::call(origin.clone(), fungibles_addr, 0, gas_limit, 0, call)); + let asset_details = Asset::get(token).unwrap(); + assert_eq!(asset_details.owner, caller); + assert_eq!(asset_details.admin, caller); + + // Mint via fungibles precompile + let call = mintCall { + token, + account: origin_addr.0.into(), + value: primitives::U256::from(total_supply), + } + .abi_encode(); + println!("IFungibles.mint: {}", to_hex(&call, false)); + assert_ok!(Revive::call(origin.clone(), fungibles_addr, 0, gas_limit, 0, call)); + + // Transfer via erc20 precompile + println!("IERC20 precompile: {}", to_hex(&erc20_addr.0, false)); + let call = IERC20::transferCall { + to: AccountId32Mapper::to_address(&Bob.to_account_id()).0.into(), + value: primitives::U256::from(total_supply / 2), + } + .abi_encode(); + println!("IERC20.transfer: {}", to_hex(&call, false)); + assert_ok!(Revive::call(origin.clone(), erc20_addr, 0, gas_limit, 0, call)); + assert_eq!(Assets::balance(token, &Bob.to_account_id()), total_supply / 2); + }) + } +} diff --git a/runtime/devnet/src/config/ismp.rs b/runtime/devnet/src/config/ismp.rs index 3b0693e8c..793f91381 100644 --- a/runtime/devnet/src/config/ismp.rs +++ b/runtime/devnet/src/config/ismp.rs @@ -2,7 +2,7 @@ use alloc::{boxed::Box, vec::Vec}; use frame_support::traits::Get; use frame_system::EnsureRoot; -use ismp::{host::StateMachine, module::IsmpModule, router::IsmpRouter}; +use ismp::{error::Error, host::StateMachine, module::IsmpModule, router::IsmpRouter}; use ismp_parachain::ParachainConsensusClient; use crate::{ @@ -21,7 +21,7 @@ impl pallet_ismp::Config for Runtime { type Router = Router; type RuntimeEvent = RuntimeEvent; type TimestampProvider = Timestamp; - type WeightProvider = (); + type WeightProvider = WeightProvider; } impl ismp_parachain::Config for Runtime { @@ -47,6 +47,24 @@ impl Get for HostStateMachine { pub struct Router; impl IsmpRouter for Router { fn module_for_id(&self, id: Vec) -> Result, anyhow::Error> { - Err(anyhow::anyhow!("Module not found: {:?}", id)) + use pallet_api_vnext::messaging::transports::ismp as messaging; + match id { + id if id == messaging::ID => Ok(Box::new(messaging::Module::::new())), + _ => Err(Error::ModuleNotFound(id).into()), + } + } +} + +pub struct WeightProvider; +impl pallet_ismp::weights::WeightProvider for WeightProvider { + fn module_callback( + dest_module: pallet_ismp::ModuleId, + ) -> Option> { + use pallet_api_vnext::messaging::transports::ismp as messaging; + match dest_module.to_bytes() { + dest_module if dest_module == messaging::ID => + Some(Box::new(messaging::Module::::new())), + _ => None, + } } } diff --git a/runtime/devnet/src/config/mod.rs b/runtime/devnet/src/config/mod.rs index 61ae08273..6f684efda 100644 --- a/runtime/devnet/src/config/mod.rs +++ b/runtime/devnet/src/config/mod.rs @@ -2,7 +2,8 @@ mod api; // Public due to pop api integration tests crate. pub mod assets; mod contracts; -mod ismp; +// Public due to pop api integration tests crate. +pub mod ismp; mod proxy; // Public due to integration tests crate. pub mod xcm; diff --git a/runtime/devnet/src/lib.rs b/runtime/devnet/src/lib.rs index dee597b64..409cd4b89 100644 --- a/runtime/devnet/src/lib.rs +++ b/runtime/devnet/src/lib.rs @@ -22,7 +22,6 @@ use ::ismp::{ host::StateMachine, router::{Request, Response}, }; -use codec::Encode; use config::xcm::{RelayLocation, XcmOriginToTransactDispatchOrigin}; use cumulus_pallet_parachain_system::{RelayChainState, RelayNumberMonotonicallyIncreases}; use cumulus_pallet_weight_reclaim::StorageWeightReclaim; @@ -30,13 +29,16 @@ use cumulus_primitives_core::{AggregateMessageOrigin, ParaId}; use frame_metadata_hash_extension::CheckMetadataHash; use frame_support::{ derive_impl, - dispatch::{DispatchClass, DispatchInfo}, + dispatch::DispatchClass, genesis_builder_helper::{build_state, get_preset}, parameter_types, traits::{ - fungible::HoldConsideration, tokens::nonfungibles_v2::Inspect, ConstBool, ConstU32, - ConstU64, ConstU8, Contains, EitherOfDiverse, EqualPrivilegeOnly, EverythingBut, - LinearStoragePrice, TransformOrigin, VariantCountOf, + fungible, + fungible::HoldConsideration, + tokens::{imbalance::ResolveTo, nonfungibles_v2::Inspect}, + ConstBool, ConstU32, ConstU64, ConstU8, Contains, EitherOfDiverse, EqualPrivilegeOnly, + EverythingBut, Imbalance, LinearStoragePrice, OnUnbalanced, TransformOrigin, + VariantCountOf, }, weights::{ ConstantMultiplier, Weight, WeightToFeeCoefficient, WeightToFeeCoefficients, @@ -64,9 +66,9 @@ use polkadot_runtime_common::xcm_sender::NoPriceForMessageDelivery; use polkadot_runtime_common::{BlockHashCount, SlowAdjustingFeeUpdate}; pub use pop_runtime_common::{ deposit, AuraId, Balance, BlockNumber, Hash, Nonce, Signature, AVERAGE_ON_INITIALIZE_RATIO, - BLOCK_PROCESSING_VELOCITY, DAYS, EXISTENTIAL_DEPOSIT, HOURS, MAXIMUM_BLOCK_WEIGHT, MICRO_UNIT, - MILLI_UNIT, MINUTES, NORMAL_DISPATCH_RATIO, RELAY_CHAIN_SLOT_DURATION_MILLIS, SLOT_DURATION, - UNINCLUDED_SEGMENT_CAPACITY, UNIT, + BLOCK_PROCESSING_VELOCITY, DAYS, EXISTENTIAL_DEPOSIT, HOURS, MAXIMUM_BLOCK_WEIGHT, + MAX_POV_SIZE, MICRO_UNIT, MILLI_UNIT, MINUTES, NORMAL_DISPATCH_RATIO, + RELAY_CHAIN_SLOT_DURATION_MILLIS, SLOT_DURATION, UNINCLUDED_SEGMENT_CAPACITY, UNIT, }; use smallvec::smallvec; use sp_api::impl_runtime_apis; @@ -75,7 +77,7 @@ use sp_core::{crypto::KeyTypeId, Get, OpaqueMetadata, H256, U256}; pub use sp_runtime::BuildStorage; use sp_runtime::{ generic, impl_opaque_keys, - traits::{BlakeTwo256, Block as BlockT, IdentifyAccount, TransactionExtension, Verify}, + traits::{AccountIdConversion, BlakeTwo256, Block as BlockT, IdentifyAccount, Verify}, transaction_validity::{TransactionSource, TransactionValidity}, ApplyExtrinsicResult, }; @@ -263,7 +265,7 @@ parameter_types! { // `DeletionWeightLimit` and `DeletionQueueDepth` depend on those to parameterize // the lazy contract deletion. pub RuntimeBlockLength: BlockLength = - BlockLength::max_with_normal_ratio(5 * 1024 * 1024, NORMAL_DISPATCH_RATIO); + BlockLength::max_with_normal_ratio(MAX_POV_SIZE, NORMAL_DISPATCH_RATIO); pub RuntimeBlockWeights: BlockWeights = BlockWeights::builder() .base_block(BlockExecutionWeight::get()) .for_class(DispatchClass::all(), |weights| { @@ -383,12 +385,29 @@ impl pallet_balances::Config for Runtime { parameter_types! { /// Relay Chain `TransactionByteFee` / 10 pub const TransactionByteFee: Balance = 10 * MICRO_UNIT; + pub Treasury: AccountId = PalletId(*b"py/trsry").into_account_truncating(); +} + +/// DealWithFees is used to handle fees and tips in the OnChargeTransaction trait, +/// by implementing OnUnbalanced. +pub struct DealWithFees; +impl OnUnbalanced> for DealWithFees { + fn on_unbalanceds( + mut fees_then_tips: impl Iterator>, + ) { + if let Some(mut fees) = fees_then_tips.next() { + if let Some(tips) = fees_then_tips.next() { + tips.merge_into(&mut fees); + } + ResolveTo::::on_unbalanced(fees); + } + } } impl pallet_transaction_payment::Config for Runtime { type FeeMultiplierUpdate = SlowAdjustingFeeUpdate; type LengthToFee = ConstantMultiplier; - type OnChargeTransaction = pallet_transaction_payment::FungibleAdapter; + type OnChargeTransaction = pallet_transaction_payment::FungibleAdapter; type OperationalFeeMultiplier = ConstU8<5>; type RuntimeEvent = RuntimeEvent; type WeightInfo = (); @@ -421,6 +440,7 @@ impl cumulus_pallet_parachain_system::Config for Runtime { type DmpQueue = frame_support::traits::EnqueueWithOrigin; type OnSystemEvent = (); type OutboundXcmpMessageSource = XcmpQueue; + type RelayParentOffset = ConstU32<0>; type ReservedDmpWeight = ReservedDmpWeight; type ReservedXcmpWeight = ReservedXcmpWeight; type RuntimeEvent = RuntimeEvent; @@ -706,6 +726,10 @@ mod runtime { pub type Fungibles = fungibles::Pallet; #[runtime::pallet_index(151)] pub type NonFungibles = nonfungibles::Pallet; + #[runtime::pallet_index(152)] + pub type FungiblesvNext = pallet_api_vnext::fungibles::Pallet; + #[runtime::pallet_index(153)] + pub type Messaging = pallet_api_vnext::messaging::Pallet; } #[cfg(feature = "runtime-benchmarks")] @@ -724,6 +748,8 @@ mod benches { [cumulus_pallet_parachain_system, ParachainSystem] [cumulus_pallet_xcmp_queue, XcmpQueue] [cumulus_pallet_weight_reclaim, WeightReclaim] + [pallet_api_vnext::fungibles, FungiblesvNext] + [pallet_api_vnext::messaging, Messaging] ); } @@ -1038,25 +1064,29 @@ impl_runtime_apis! { fn eth_transact(tx: pallet_revive::evm::GenericTransaction) -> Result, pallet_revive::EthTransactError> { - let blockweights: BlockWeights = ::BlockWeights::get(); + use pallet_revive::{ + codec::Encode, evm::runtime::EthExtra, + sp_runtime::traits::{TransactionExtension, Block as BlockT} + }; + + let tx_fee = |pallet_call, mut dispatch_info: pallet_revive::DispatchInfo| { + let call = + ::RuntimeCall::from(pallet_call); + dispatch_info.extension_weight = + EthExtraImpl::get_eth_extension(0, 0u32.into()).weight(&call); - let tx_fee = |pallet_call, mut dispatch_info: DispatchInfo| { - let call = RuntimeCall::Revive(pallet_call); - dispatch_info.extension_weight = EthExtraImpl::get_eth_extension(0, 0u32.into()).weight(&call); - let uxt: UncheckedExtrinsic = generic::UncheckedExtrinsic::new_bare(call).into(); + let uxt: ::Extrinsic = + pallet_revive::sp_runtime::generic::UncheckedExtrinsic::new_bare(call).into(); - pallet_transaction_payment::Pallet::::compute_fee( + TransactionPayment::compute_fee( uxt.encoded_size() as u32, &dispatch_info, 0u32.into(), ) }; - Revive::bare_eth_transact( - tx, - blockweights.max_block, - tx_fee, - ) + let blockweights = ::BlockWeights::get(); + Revive::dry_run_eth_transact(tx, blockweights.max_block, tx_fee) } fn call( @@ -1067,6 +1097,7 @@ impl_runtime_apis! { storage_deposit_limit: Option, input_data: Vec, ) -> pallet_revive::ContractResult { + Revive::prepare_dry_run(&origin); Revive::bare_call( RuntimeOrigin::signed(origin), dest, @@ -1087,6 +1118,7 @@ impl_runtime_apis! { salt: Option<[u8; 32]>, ) -> pallet_revive::ContractResult { + Revive::prepare_dry_run(&origin); Revive::bare_instantiate( RuntimeOrigin::signed(origin), value, @@ -1111,6 +1143,13 @@ impl_runtime_apis! { ) } + fn get_storage_var_key( + address: pallet_revive::H160, + key: Vec + ) -> pallet_revive::GetStorageResult { + Revive::get_storage_var_key(address, key) + } + fn get_storage( address: H160, key: [u8; 32], @@ -1123,20 +1162,21 @@ impl_runtime_apis! { fn trace_block( block: Block, - config: pallet_revive::evm::TracerConfig - ) -> Vec<(u32, pallet_revive::evm::CallTrace)> { - use pallet_revive::tracing::trace; - let mut tracer = config.build(Revive::evm_gas_from_weight); + tracer_type: pallet_revive::evm::TracerType + ) -> Vec<(u32, pallet_revive::evm::Trace)> { + use pallet_revive::{sp_runtime::traits::Block, tracing::trace}; + let mut tracer = Revive::evm_tracer(tracer_type); let mut traces = vec![]; let (header, extrinsics) = block.deconstruct(); Executive::initialize_block(&header); for (index, ext) in extrinsics.into_iter().enumerate() { - trace(&mut tracer, || { + let t = tracer.as_tracing(); + trace(t, || { let _ = Executive::apply_extrinsic(ext); }); - if let Some(tx_trace) = tracer.collect_traces().pop() { + if let Some(tx_trace) = tracer.collect_trace() { traces.push((index as u32, tx_trace)); } } @@ -1147,16 +1187,17 @@ impl_runtime_apis! { fn trace_tx( block: Block, tx_index: u32, - config: pallet_revive::evm::TracerConfig - ) -> Option { - use pallet_revive::tracing::trace; - let mut tracer = config.build(Revive::evm_gas_from_weight); + tracer_type: pallet_revive::evm::TracerType + ) -> Option { + use pallet_revive::{sp_runtime::traits::Block, tracing::trace}; + let mut tracer = Revive::evm_tracer(tracer_type); let (header, extrinsics) = block.deconstruct(); Executive::initialize_block(&header); for (index, ext) in extrinsics.into_iter().enumerate() { if index as u32 == tx_index { - trace(&mut tracer, || { + let t = tracer.as_tracing(); + trace(t, || { let _ = Executive::apply_extrinsic(ext); }); break; @@ -1165,24 +1206,25 @@ impl_runtime_apis! { } } - tracer.collect_traces().pop() + tracer.collect_trace() } fn trace_call( tx: pallet_revive::evm::GenericTransaction, - config: pallet_revive::evm::TracerConfig) - -> Result + tracer_type: pallet_revive::evm::TracerType + ) -> Result { use pallet_revive::tracing::trace; - let mut tracer = config.build(Revive::evm_gas_from_weight); - let result = trace(&mut tracer, || Self::eth_transact(tx)); + let mut tracer = Revive::evm_tracer(tracer_type); + let t = tracer.as_tracing(); + let result = trace(t, || Self::eth_transact(tx)); - if let Some(trace) = tracer.collect_traces().pop() { + if let Some(trace) = tracer.collect_trace() { Ok(trace) } else if let Err(err) = result { Err(err) } else { - Ok(Default::default()) + Ok(tracer.empty_trace()) } } } diff --git a/runtime/mainnet/src/apis.rs b/runtime/mainnet/src/apis.rs index ab1529337..c2903d5f7 100644 --- a/runtime/mainnet/src/apis.rs +++ b/runtime/mainnet/src/apis.rs @@ -1,18 +1,16 @@ use alloc::{vec, vec::Vec}; -use codec::Encode; use frame_support::{ - dispatch::DispatchInfo, genesis_builder_helper::{build_state, get_preset}, traits::nonfungibles_v2::Inspect, weights::{Weight, WeightToFee as _}, }; -use pallet_revive::{evm::runtime::EthExtra, AddressMapper}; +use pallet_revive::AddressMapper; use sp_api::impl_runtime_apis; use sp_consensus_aura::sr25519::AuthorityId as AuraId; use sp_core::{crypto::KeyTypeId, OpaqueMetadata, H160, U256}; use sp_runtime::{ - traits::{Block as BlockT, TransactionExtension}, + traits::Block as BlockT, transaction_validity::{TransactionSource, TransactionValidity}, ApplyExtrinsicResult, }; @@ -30,10 +28,10 @@ use xcm_runtime_apis::{ // Local module imports use super::{ config::{monetary::fee::WeightToFee, system::RuntimeBlockWeights, xcm as xcm_config}, - AccountId, Balance, Block, BlockNumber, BlockWeights, EthExtraImpl, Executive, - ExtrinsicInclusionMode, InherentDataExt, Nfts, Nonce, OriginCaller, ParachainSystem, - PolkadotXcm, Revive, Runtime, RuntimeCall, RuntimeEvent, RuntimeGenesisConfig, RuntimeOrigin, - SessionKeys, System, TransactionPayment, UncheckedExtrinsic, VERSION, + AccountId, Balance, Block, BlockNumber, EthExtraImpl, Executive, ExtrinsicInclusionMode, + InherentDataExt, Nfts, Nonce, OriginCaller, ParachainSystem, PolkadotXcm, Revive, Runtime, + RuntimeCall, RuntimeEvent, RuntimeGenesisConfig, RuntimeOrigin, SessionKeys, System, + TransactionPayment, VERSION, }; impl_runtime_apis! { @@ -438,25 +436,29 @@ impl_runtime_apis! { fn eth_transact(tx: pallet_revive::evm::GenericTransaction) -> Result, pallet_revive::EthTransactError> { - let blockweights: BlockWeights = ::BlockWeights::get(); + use pallet_revive::{ + codec::Encode, evm::runtime::EthExtra, + sp_runtime::traits::{TransactionExtension, Block as BlockT} + }; + + let tx_fee = |pallet_call, mut dispatch_info: pallet_revive::DispatchInfo| { + let call = + ::RuntimeCall::from(pallet_call); + dispatch_info.extension_weight = + EthExtraImpl::get_eth_extension(0, 0u32.into()).weight(&call); - let tx_fee = |pallet_call, mut dispatch_info: DispatchInfo| { - let call = RuntimeCall::Revive(pallet_call); - dispatch_info.extension_weight = EthExtraImpl::get_eth_extension(0, 0u32.into()).weight(&call); - let uxt: UncheckedExtrinsic = sp_runtime::generic::UncheckedExtrinsic::new_bare(call).into(); + let uxt: ::Extrinsic = + pallet_revive::sp_runtime::generic::UncheckedExtrinsic::new_bare(call).into(); - pallet_transaction_payment::Pallet::::compute_fee( + TransactionPayment::compute_fee( uxt.encoded_size() as u32, &dispatch_info, 0u32.into(), ) }; - Revive::bare_eth_transact( - tx, - blockweights.max_block, - tx_fee, - ) + let blockweights = ::BlockWeights::get(); + Revive::dry_run_eth_transact(tx, blockweights.max_block, tx_fee) } fn call( @@ -467,6 +469,7 @@ impl_runtime_apis! { storage_deposit_limit: Option, input_data: Vec, ) -> pallet_revive::ContractResult { + Revive::prepare_dry_run(&origin); Revive::bare_call( RuntimeOrigin::signed(origin), dest, @@ -487,6 +490,7 @@ impl_runtime_apis! { salt: Option<[u8; 32]>, ) -> pallet_revive::ContractResult { + Revive::prepare_dry_run(&origin); Revive::bare_instantiate( RuntimeOrigin::signed(origin), value, @@ -511,6 +515,13 @@ impl_runtime_apis! { ) } + fn get_storage_var_key( + address: pallet_revive::H160, + key: Vec + ) -> pallet_revive::GetStorageResult { + Revive::get_storage_var_key(address, key) + } + fn get_storage( address: H160, key: [u8; 32], @@ -523,20 +534,21 @@ impl_runtime_apis! { fn trace_block( block: Block, - config: pallet_revive::evm::TracerConfig - ) -> Vec<(u32, pallet_revive::evm::CallTrace)> { - use pallet_revive::tracing::trace; - let mut tracer = config.build(Revive::evm_gas_from_weight); + tracer_type: pallet_revive::evm::TracerType + ) -> Vec<(u32, pallet_revive::evm::Trace)> { + use pallet_revive::{sp_runtime::traits::Block, tracing::trace}; + let mut tracer = Revive::evm_tracer(tracer_type); let mut traces = vec![]; let (header, extrinsics) = block.deconstruct(); Executive::initialize_block(&header); for (index, ext) in extrinsics.into_iter().enumerate() { - trace(&mut tracer, || { + let t = tracer.as_tracing(); + trace(t, || { let _ = Executive::apply_extrinsic(ext); }); - if let Some(tx_trace) = tracer.collect_traces().pop() { + if let Some(tx_trace) = tracer.collect_trace() { traces.push((index as u32, tx_trace)); } } @@ -547,16 +559,17 @@ impl_runtime_apis! { fn trace_tx( block: Block, tx_index: u32, - config: pallet_revive::evm::TracerConfig - ) -> Option { - use pallet_revive::tracing::trace; - let mut tracer = config.build(Revive::evm_gas_from_weight); + tracer_type: pallet_revive::evm::TracerType + ) -> Option { + use pallet_revive::{sp_runtime::traits::Block, tracing::trace}; + let mut tracer = Revive::evm_tracer(tracer_type); let (header, extrinsics) = block.deconstruct(); Executive::initialize_block(&header); for (index, ext) in extrinsics.into_iter().enumerate() { if index as u32 == tx_index { - trace(&mut tracer, || { + let t = tracer.as_tracing(); + trace(t, || { let _ = Executive::apply_extrinsic(ext); }); break; @@ -565,24 +578,25 @@ impl_runtime_apis! { } } - tracer.collect_traces().pop() + tracer.collect_trace() } fn trace_call( tx: pallet_revive::evm::GenericTransaction, - config: pallet_revive::evm::TracerConfig) - -> Result + tracer_type: pallet_revive::evm::TracerType + ) -> Result { use pallet_revive::tracing::trace; - let mut tracer = config.build(Revive::evm_gas_from_weight); - let result = trace(&mut tracer, || Self::eth_transact(tx)); + let mut tracer = Revive::evm_tracer(tracer_type); + let t = tracer.as_tracing(); + let result = trace(t, || Self::eth_transact(tx)); - if let Some(trace) = tracer.collect_traces().pop() { + if let Some(trace) = tracer.collect_trace() { Ok(trace) } else if let Err(err) = result { Err(err) } else { - Ok(Default::default()) + Ok(tracer.empty_trace()) } } } @@ -594,7 +608,6 @@ fn metadata_api_implemented() { use codec::Decode; use frame_metadata::{RuntimeMetadata, RuntimeMetadataPrefixed}; - const V16_UNSTABLE: u32 = u32::MAX; fn assert>() { let opaque_meta: OpaqueMetadata = T::metadata(); @@ -606,7 +619,7 @@ fn metadata_api_implemented() { panic!("Expected metadata V14"); }; - assert_eq!(T::metadata_versions(), vec![14, 15, V16_UNSTABLE]); + assert_eq!(T::metadata_versions(), vec![14, 15, 16]); let version = 15; let opaque_meta = T::metadata_at_version(version).expect("V15 should exist"); @@ -620,8 +633,17 @@ fn metadata_api_implemented() { assert!(!metadata.apis.is_empty()); assert!(!metadata.pallets.is_empty()); - // Ensure metadata v16 is not provided. - assert!(T::metadata_at_version(16).is_none()); + let version = 16; + let opaque_meta = T::metadata_at_version(version).expect("V16 should exist"); + let prefixed_meta_bytes = opaque_meta.deref(); + assert_eq!(prefixed_meta_bytes, Runtime::metadata_at_version(version).unwrap().deref()); + let prefixed_meta = RuntimeMetadataPrefixed::decode(&mut &prefixed_meta_bytes[..]).unwrap(); + // Ensure that we have the V16 variant. + let RuntimeMetadata::V16(metadata) = prefixed_meta.1 else { + panic!("Expected metadata V16"); + }; + assert!(!metadata.apis.is_empty()); + assert!(!metadata.pallets.is_empty()); } sp_io::TestExternalities::new_empty().execute_with(|| assert::()); } diff --git a/runtime/mainnet/src/benchmarks.rs b/runtime/mainnet/src/benchmarks.rs index ef1e23adb..f2032556b 100644 --- a/runtime/mainnet/src/benchmarks.rs +++ b/runtime/mainnet/src/benchmarks.rs @@ -6,6 +6,7 @@ use frame_support::parameter_types; pub use pallet_xcm::benchmarking::Pallet as PalletXcmBenchmark; use xcm::prelude::{ Asset, AssetId, Fungible, Here, InteriorLocation, Junction, Location, NetworkId, Response, + WeightLimit, }; use xcm_executor::traits::ConvertLocation; @@ -208,8 +209,11 @@ impl pallet_xcm_benchmarks::generic::Config for Runtime { Ok((origin, ticket, assets)) } - fn fee_asset() -> Result { - Ok(Asset { id: AssetId(RelayLocation::get()), fun: Fungible(1_000_000 * UNIT) }) + fn worst_case_for_trader() -> Result<(Asset, WeightLimit), BenchmarkError> { + Ok(( + Asset { id: AssetId(RelayLocation::get()), fun: Fungible(1_000_000 * UNIT) }, + WeightLimit::Limited(Weight::from_parts(5000, 5000)), + )) } fn unlockable_asset() -> Result<(Location, Location, Asset), BenchmarkError> { diff --git a/runtime/mainnet/src/config/governance.rs b/runtime/mainnet/src/config/governance.rs index c9ff16553..03ba8cd20 100644 --- a/runtime/mainnet/src/config/governance.rs +++ b/runtime/mainnet/src/config/governance.rs @@ -1,8 +1,6 @@ -use frame_support::{ - parameter_types, - traits::{EitherOfDiverse, NeverEnsureOrigin}, - weights::Weight, -}; +#[cfg(not(feature = "runtime-benchmarks"))] +use frame_support::traits::NeverEnsureOrigin; +use frame_support::{parameter_types, traits::EitherOfDiverse, weights::Weight}; use frame_system::EnsureRoot; use pallet_collective::EnsureProportionAtLeast; use parachains_common::BlockNumber; @@ -60,7 +58,6 @@ impl pallet_collective::Config for Runtime { impl pallet_motion::Config for Runtime { type RuntimeCall = RuntimeCall; - type RuntimeEvent = RuntimeEvent; #[cfg(not(feature = "runtime-benchmarks"))] // Simple majority is disabled. type SimpleMajorityOrigin = NeverEnsureOrigin<()>; diff --git a/runtime/mainnet/src/config/revive.rs b/runtime/mainnet/src/config/revive.rs index 204de546e..88a99511c 100644 --- a/runtime/mainnet/src/config/revive.rs +++ b/runtime/mainnet/src/config/revive.rs @@ -1,13 +1,13 @@ use frame_support::{ parameter_types, - traits::{ConstBool, ConstU32, ConstU64, Nothing}, + traits::{ConstBool, ConstU32, ConstU64}, }; use frame_system::EnsureSigned; use crate::{ config::monetary::{DepositPerByte, DepositPerItem}, - weights, Balances, Perbill, PolkadotXcm, Runtime, RuntimeCall, RuntimeEvent, RuntimeHoldReason, - Timestamp, TransactionPayment, UNIT, + weights, Balances, Perbill, Runtime, RuntimeCall, RuntimeEvent, RuntimeHoldReason, Timestamp, + TransactionPayment, UNIT, }; // 18 decimals @@ -20,9 +20,6 @@ parameter_types! { impl pallet_revive::Config for Runtime { type AddressMapper = pallet_revive::AccountId32Mapper; - // No runtime dispatchables are callable from contracts. - type CallFilter = Nothing; - type ChainExtension = (); // EVM chain id. 3,395 is a unique ID still. type ChainId = ConstU64<3_395>; // 30 percent of storage deposit held for using a code hash. @@ -37,6 +34,7 @@ impl pallet_revive::Config for Runtime { type NativeToEthRatio = NativeToEthRatio; // 512 MB. Used in an integrity test that verifies the runtime has enough memory. type PVFMemory = ConstU32<{ 512 * 1024 * 1024 }>; + type Precompiles = (); type RuntimeCall = RuntimeCall; type RuntimeEvent = RuntimeEvent; type RuntimeHoldReason = RuntimeHoldReason; @@ -48,7 +46,6 @@ impl pallet_revive::Config for Runtime { type UploadOrigin = EnsureSigned; type WeightInfo = weights::pallet_revive::WeightInfo; type WeightPrice = TransactionPayment; - type Xcm = PolkadotXcm; } impl TryFrom for pallet_revive::Call { @@ -84,13 +81,8 @@ mod tests { } #[test] - fn call_filter_is_nothing() { - assert_eq!(TypeId::of::<::CallFilter>(), TypeId::of::(),); - } - - #[test] - fn chain_extension_is_unset() { - assert_eq!(TypeId::of::<::ChainExtension>(), TypeId::of::<()>(),); + fn precompiles_is_unset() { + assert_eq!(TypeId::of::<::Precompiles>(), TypeId::of::<()>(),); } #[test] @@ -204,12 +196,4 @@ mod tests { TypeId::of::>(), ); } - - #[test] - fn xcm_is_pallet_xcm() { - assert_eq!( - TypeId::of::<::Xcm>(), - TypeId::of::>(), - ); - } } diff --git a/runtime/mainnet/src/config/system.rs b/runtime/mainnet/src/config/system.rs index 24aecb5b1..33fb200f3 100644 --- a/runtime/mainnet/src/config/system.rs +++ b/runtime/mainnet/src/config/system.rs @@ -3,7 +3,7 @@ use frame_support::traits::{ConstU32, ConstU64, Contains, EnqueueWithOrigin, Eve use pallet_balances::Call as BalancesCall; use polkadot_runtime_common::BlockHashCount; use pop_runtime_common::{ - Nonce, AVERAGE_ON_INITIALIZE_RATIO, MAXIMUM_BLOCK_WEIGHT, NORMAL_DISPATCH_RATIO, + Nonce, AVERAGE_ON_INITIALIZE_RATIO, MAXIMUM_BLOCK_WEIGHT, MAX_POV_SIZE, NORMAL_DISPATCH_RATIO, }; use sp_runtime::traits::AccountIdLookup; @@ -30,7 +30,7 @@ parameter_types! { /// Defines the length limit in bytes for a block. // BlockLength is created with max for Operational & Mandatory and normal * max for Normal `DispatchClass`. pub RuntimeBlockLength: BlockLength = - BlockLength::max_with_normal_ratio(5 * 1024 * 1024, NORMAL_DISPATCH_RATIO); + BlockLength::max_with_normal_ratio(MAX_POV_SIZE, NORMAL_DISPATCH_RATIO); /// Defines the block weight in terms of the different `DispatchClass` limits. pub RuntimeBlockWeights: BlockWeights = BlockWeights::builder() @@ -154,6 +154,7 @@ impl cumulus_pallet_parachain_system::Config for Runtime { type DmpQueue = EnqueueWithOrigin; type OnSystemEvent = (); type OutboundXcmpMessageSource = XcmpQueue; + type RelayParentOffset = ConstU32<0>; type ReservedDmpWeight = ReservedDmpWeight; type ReservedXcmpWeight = ReservedXcmpWeight; type RuntimeEvent = RuntimeEvent; diff --git a/runtime/testnet/src/config/api/mod.rs b/runtime/testnet/src/config/api/mod.rs index 8bf971e02..591494042 100644 --- a/runtime/testnet/src/config/api/mod.rs +++ b/runtime/testnet/src/config/api/mod.rs @@ -21,7 +21,7 @@ use crate::{ assets::TrustBackedAssetsInstance, monetary::TransactionByteFee, xcm::LocalOriginToLocation, }, fungibles, AccountId, Balances, BlockNumber, Contracts, Ismp, PolkadotXcm, Runtime, - RuntimeCall, RuntimeEvent, RuntimeHoldReason, + RuntimeCall, RuntimeHoldReason, }; mod versioning; @@ -106,7 +106,6 @@ impl messaging::Config for Runtime { // TODO: ensure within the contract buffer bounds type MaxResponseLen = ConstU32<1024>; type OriginConverter = LocalOriginToLocation; - type RuntimeEvent = RuntimeEvent; type RuntimeHoldReason = RuntimeHoldReason; type Xcm = QueryHandler; type XcmResponseOrigin = EnsureResponse; @@ -191,7 +190,6 @@ impl NotifyQueryHandler for QueryHandler { impl fungibles::Config for Runtime { type AssetsInstance = TrustBackedAssetsInstance; - type RuntimeEvent = RuntimeEvent; type WeightInfo = fungibles::weights::SubstrateWeight; } diff --git a/runtime/testnet/src/config/contracts.rs b/runtime/testnet/src/config/contracts.rs index 85811da27..e5bb2b307 100644 --- a/runtime/testnet/src/config/contracts.rs +++ b/runtime/testnet/src/config/contracts.rs @@ -9,8 +9,8 @@ use pop_runtime_common::{DepositPerByte, DepositPerItem, UNIT}; use super::api::{self, Config}; use crate::{ - deposit, Balance, Balances, Perbill, PolkadotXcm, Runtime, RuntimeCall, RuntimeEvent, - RuntimeHoldReason, Timestamp, TransactionPayment, + deposit, Balance, Balances, Perbill, Runtime, RuntimeCall, RuntimeEvent, RuntimeHoldReason, + Timestamp, TransactionPayment, }; fn schedule() -> pallet_contracts::Schedule { @@ -88,9 +88,6 @@ impl pallet_contracts::Config for Runtime { impl pallet_revive::Config for Runtime { type AddressMapper = pallet_revive::AccountId32Mapper; - // No runtime dispatchables are callable from contracts. - type CallFilter = Nothing; - type ChainExtension = (); // EVM chain id. 3,395 is a unique ID still. type ChainId = ConstU64<3_395>; // 30 percent of storage deposit held for using a code hash. @@ -105,6 +102,7 @@ impl pallet_revive::Config for Runtime { type NativeToEthRatio = NativeToEthRatio; // 512 MB. Used in an integrity test that verifies the runtime has enough memory. type PVFMemory = ConstU32<{ 512 * 1024 * 1024 }>; + type Precompiles = (); type RuntimeCall = RuntimeCall; type RuntimeEvent = RuntimeEvent; type RuntimeHoldReason = RuntimeHoldReason; @@ -116,7 +114,6 @@ impl pallet_revive::Config for Runtime { type UploadOrigin = EnsureSigned; type WeightInfo = pallet_revive::weights::SubstrateWeight; type WeightPrice = TransactionPayment; - type Xcm = PolkadotXcm; } impl TryFrom for pallet_revive::Call { diff --git a/runtime/testnet/src/config/governance.rs b/runtime/testnet/src/config/governance.rs index 0ef617e8c..2d481a98d 100644 --- a/runtime/testnet/src/config/governance.rs +++ b/runtime/testnet/src/config/governance.rs @@ -51,7 +51,6 @@ impl pallet_collective::Config for Runtime { impl pallet_motion::Config for Runtime { type RuntimeCall = RuntimeCall; - type RuntimeEvent = RuntimeEvent; // Simple majority is disabled. type SimpleMajorityOrigin = NeverEnsureOrigin<()>; // At least 3/4 of the council vote is needed. diff --git a/runtime/testnet/src/config/system.rs b/runtime/testnet/src/config/system.rs index de3d1eb8e..32a6c70e2 100644 --- a/runtime/testnet/src/config/system.rs +++ b/runtime/testnet/src/config/system.rs @@ -12,8 +12,6 @@ use sp_runtime::{ Perbill, }; -#[cfg(not(feature = "runtime-benchmarks"))] -use crate::Revive; use crate::{ weights::RocksDbWeight, AccountId, AggregateMessageOrigin, Aura, BalancesCall, Block, BlockExecutionWeight, BlockLength, BlockWeights, DispatchClass, ExtrinsicBaseWeight, @@ -31,7 +29,7 @@ parameter_types! { // `DeletionWeightLimit` and `DeletionQueueDepth` depend on those to parameterize // the lazy contract deletion. pub RuntimeBlockLength: BlockLength = - BlockLength::max_with_normal_ratio(5 * 1024 * 1024, NORMAL_DISPATCH_RATIO); + BlockLength::max_with_normal_ratio(pop_runtime_common::MAX_POV_SIZE, NORMAL_DISPATCH_RATIO); pub RuntimeBlockWeights: BlockWeights = BlockWeights::builder() .base_block(BlockExecutionWeight::get()) .for_class(DispatchClass::all(), |weights| { @@ -149,6 +147,7 @@ impl cumulus_pallet_parachain_system::Config for Runtime { type DmpQueue = frame_support::traits::EnqueueWithOrigin; type OnSystemEvent = (); type OutboundXcmpMessageSource = XcmpQueue; + type RelayParentOffset = ConstU32<0>; type ReservedDmpWeight = ReservedDmpWeight; type ReservedXcmpWeight = ReservedXcmpWeight; type RuntimeEvent = RuntimeEvent; diff --git a/runtime/testnet/src/lib.rs b/runtime/testnet/src/lib.rs index a75865641..c0f4362ad 100644 --- a/runtime/testnet/src/lib.rs +++ b/runtime/testnet/src/lib.rs @@ -23,13 +23,12 @@ use ::ismp::{ host::StateMachine, router::{Request, Response}, }; -use codec::Encode; use config::system::ConsensusHook; use cumulus_pallet_parachain_system::RelayChainState; use cumulus_primitives_core::AggregateMessageOrigin; use frame_metadata_hash_extension::CheckMetadataHash; use frame_support::{ - dispatch::{DispatchClass, DispatchInfo}, + dispatch::DispatchClass, genesis_builder_helper::{build_state, get_preset}, parameter_types, traits::{ @@ -51,10 +50,7 @@ use pallet_api::{fungibles, messaging}; use pallet_balances::Call as BalancesCall; use pallet_ismp::offchain::{Leaf, Proof, ProofKeys}; use pallet_nfts_sdk as pallet_nfts; -use pallet_revive::{ - evm::{runtime::EthExtra, H160}, - AddressMapper, -}; +use pallet_revive::{evm::H160, AddressMapper}; use pallet_transaction_payment::ChargeTransactionPayment; // Polkadot imports use polkadot_runtime_common::SlowAdjustingFeeUpdate; @@ -71,7 +67,7 @@ use sp_core::{crypto::KeyTypeId, OpaqueMetadata, H256, U256}; pub use sp_runtime::BuildStorage; use sp_runtime::{ generic, impl_opaque_keys, - traits::{BlakeTwo256, Block as BlockT, Get, IdentifyAccount, TransactionExtension, Verify}, + traits::{BlakeTwo256, Block as BlockT, Get, IdentifyAccount, Verify}, transaction_validity::{TransactionSource, TransactionValidity}, ApplyExtrinsicResult, }; @@ -83,7 +79,7 @@ use weights::{BlockExecutionWeight, ExtrinsicBaseWeight}; // XCM Imports use xcm::{latest::prelude::BodyId, VersionedAsset, VersionedLocation}; -use crate::config::{assets::TrustBackedAssetsInstance, system::RuntimeBlockWeights}; +use crate::config::system::RuntimeBlockWeights; /// Some way of identifying an account on the chain. We intentionally make it equivalent /// to the public key of our transaction signing scheme. @@ -714,25 +710,29 @@ impl_runtime_apis! { fn eth_transact(tx: pallet_revive::evm::GenericTransaction) -> Result, pallet_revive::EthTransactError> { - let blockweights: BlockWeights = ::BlockWeights::get(); + use pallet_revive::{ + codec::Encode, evm::runtime::EthExtra, + sp_runtime::traits::{TransactionExtension, Block as BlockT} + }; - let tx_fee = |pallet_call, mut dispatch_info: DispatchInfo| { - let call = RuntimeCall::Revive(pallet_call); - dispatch_info.extension_weight = EthExtraImpl::get_eth_extension(0, 0u32.into()).weight(&call); - let uxt: UncheckedExtrinsic = sp_runtime::generic::UncheckedExtrinsic::new_bare(call).into(); + let tx_fee = |pallet_call, mut dispatch_info: pallet_revive::DispatchInfo| { + let call = + ::RuntimeCall::from(pallet_call); + dispatch_info.extension_weight = + EthExtraImpl::get_eth_extension(0, 0u32.into()).weight(&call); - pallet_transaction_payment::Pallet::::compute_fee( + let uxt: ::Extrinsic = + pallet_revive::sp_runtime::generic::UncheckedExtrinsic::new_bare(call).into(); + + TransactionPayment::compute_fee( uxt.encoded_size() as u32, &dispatch_info, 0u32.into(), ) }; - Revive::bare_eth_transact( - tx, - blockweights.max_block, - tx_fee, - ) + let blockweights = ::BlockWeights::get(); + Revive::dry_run_eth_transact(tx, blockweights.max_block, tx_fee) } fn call( @@ -743,6 +743,7 @@ impl_runtime_apis! { storage_deposit_limit: Option, input_data: Vec, ) -> pallet_revive::ContractResult { + Revive::prepare_dry_run(&origin); Revive::bare_call( RuntimeOrigin::signed(origin), dest, @@ -763,6 +764,7 @@ impl_runtime_apis! { salt: Option<[u8; 32]>, ) -> pallet_revive::ContractResult { + Revive::prepare_dry_run(&origin); Revive::bare_instantiate( RuntimeOrigin::signed(origin), value, @@ -787,6 +789,13 @@ impl_runtime_apis! { ) } + fn get_storage_var_key( + address: pallet_revive::H160, + key: Vec + ) -> pallet_revive::GetStorageResult { + Revive::get_storage_var_key(address, key) + } + fn get_storage( address: H160, key: [u8; 32], @@ -799,20 +808,21 @@ impl_runtime_apis! { fn trace_block( block: Block, - config: pallet_revive::evm::TracerConfig - ) -> Vec<(u32, pallet_revive::evm::CallTrace)> { - use pallet_revive::tracing::trace; - let mut tracer = config.build(Revive::evm_gas_from_weight); + tracer_type: pallet_revive::evm::TracerType + ) -> Vec<(u32, pallet_revive::evm::Trace)> { + use pallet_revive::{sp_runtime::traits::Block, tracing::trace}; + let mut tracer = Revive::evm_tracer(tracer_type); let mut traces = vec![]; let (header, extrinsics) = block.deconstruct(); Executive::initialize_block(&header); for (index, ext) in extrinsics.into_iter().enumerate() { - trace(&mut tracer, || { + let t = tracer.as_tracing(); + trace(t, || { let _ = Executive::apply_extrinsic(ext); }); - if let Some(tx_trace) = tracer.collect_traces().pop() { + if let Some(tx_trace) = tracer.collect_trace() { traces.push((index as u32, tx_trace)); } } @@ -823,16 +833,17 @@ impl_runtime_apis! { fn trace_tx( block: Block, tx_index: u32, - config: pallet_revive::evm::TracerConfig - ) -> Option { - use pallet_revive::tracing::trace; - let mut tracer = config.build(Revive::evm_gas_from_weight); + tracer_type: pallet_revive::evm::TracerType + ) -> Option { + use pallet_revive::{sp_runtime::traits::Block, tracing::trace}; + let mut tracer = Revive::evm_tracer(tracer_type); let (header, extrinsics) = block.deconstruct(); Executive::initialize_block(&header); for (index, ext) in extrinsics.into_iter().enumerate() { if index as u32 == tx_index { - trace(&mut tracer, || { + let t = tracer.as_tracing(); + trace(t, || { let _ = Executive::apply_extrinsic(ext); }); break; @@ -841,24 +852,25 @@ impl_runtime_apis! { } } - tracer.collect_traces().pop() + tracer.collect_trace() } fn trace_call( tx: pallet_revive::evm::GenericTransaction, - config: pallet_revive::evm::TracerConfig) - -> Result + tracer_type: pallet_revive::evm::TracerType + ) -> Result { use pallet_revive::tracing::trace; - let mut tracer = config.build(Revive::evm_gas_from_weight); - let result = trace(&mut tracer, || Self::eth_transact(tx)); + let mut tracer = Revive::evm_tracer(tracer_type); + let t = tracer.as_tracing(); + let result = trace(t, || Self::eth_transact(tx)); - if let Some(trace) = tracer.collect_traces().pop() { + if let Some(trace) = tracer.collect_trace() { Ok(trace) } else if let Err(err) = result { Err(err) } else { - Ok(Default::default()) + Ok(tracer.empty_trace()) } } } @@ -1051,7 +1063,6 @@ fn metadata_api_implemented() { use codec::Decode; use frame_metadata::{RuntimeMetadata, RuntimeMetadataPrefixed}; - const V16_UNSTABLE: u32 = u32::MAX; fn assert>() { let opaque_meta: OpaqueMetadata = T::metadata(); @@ -1063,7 +1074,7 @@ fn metadata_api_implemented() { panic!("Expected metadata V14"); }; - assert_eq!(T::metadata_versions(), vec![14, 15, V16_UNSTABLE]); + assert_eq!(T::metadata_versions(), vec![14, 15, 16]); let version = 15; let opaque_meta = T::metadata_at_version(version).expect("V15 should exist"); @@ -1077,8 +1088,17 @@ fn metadata_api_implemented() { assert!(!metadata.apis.is_empty()); assert!(!metadata.pallets.is_empty()); - // Ensure metadata v16 is not provided. - assert!(T::metadata_at_version(16).is_none()); + let version = 16; + let opaque_meta = T::metadata_at_version(version).expect("V16 should exist"); + let prefixed_meta_bytes = opaque_meta.deref(); + assert_eq!(prefixed_meta_bytes, Runtime::metadata_at_version(version).unwrap().deref()); + let prefixed_meta = RuntimeMetadataPrefixed::decode(&mut &prefixed_meta_bytes[..]).unwrap(); + // Ensure that we have the V16 variant. + let RuntimeMetadata::V16(metadata) = prefixed_meta.1 else { + panic!("Expected metadata V16"); + }; + assert!(!metadata.apis.is_empty()); + assert!(!metadata.pallets.is_empty()); } sp_io::TestExternalities::new_empty().execute_with(|| assert::()); } diff --git a/rust-toolchain.toml b/rust-toolchain.toml index eb05f02ab..e8e108397 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,6 +1,4 @@ [toolchain] -# Release of Rust 1.87.0 introduced issues on CI making tests involving instantiation of wasm smart contracts fail. -# Pinning version to stable 1.86 until resolved. -channel = "1.86" +channel = "stable" components = [ "clippy", "llvm-tools-preview", "rust-src", "rustfmt" ] targets = [ "wasm32v1-none" ]