difftreelog
Merge pull request #1004 from UniqueNetwork/feature/update-polkadot-1.1
in: master
Upgrade to polkadot 1.1.0
181 files changed
.docker/forkless-config/zombienet-forkless-data.tomldiffbeforeafterboth--- a/.docker/forkless-config/zombienet-forkless-data.toml
+++ /dev/null
@@ -1,83 +0,0 @@
-[settings]
-provider = "native"
-
-[relaychain]
-default_command = "/polkadot/target/release/polkadot"
-default_args = [ "-lparachain::candidate_validation=debug", "-lxcm=trace", ]
-chain = "{{ RELAY_CHAIN_TYPE }}-local"
-
- [[relaychain.nodes]]
- name = "relay-alice"
- rpc_port = 9844
- p2p_port = 30444
- prometheus_port = 33044
- prometheus = false
- # Zombienet does not grant the default balance to nodes created with [[nodes]].
- balance = 2000000000000
-
- [[relaychain.nodes]]
- name = "relay-bob"
- rpc_port = 9855
- p2p_port = 30555
- prometheus_port = 33055
- prometheus = false
- # Zombienet does not grant the default balance to nodes created with [[nodes]].
- balance = 2000000000000
-
- [[relaychain.nodes]]
- name = "relay-charlie"
- rpc_port = 9866
- p2p_port = 30666
- prometheus_port = 33066
- prometheus = false
- # Zombienet does not grant the default balance to nodes created with [[nodes]].
- balance = 2000000000000
-
- [[relaychain.nodes]]
- name = "relay-dave"
- rpc_port = 9877
- p2p_port = 30777
- prometheus_port = 33077
- prometheus = false
- # Zombienet does not grant the default balance to nodes created with [[nodes]].
- balance = 2000000000000
-
- [[relaychain.nodes]]
- name = "relay-eve"
- rpc_port = 9888
- p2p_port = 3088
- prometheus_port = 33088
- prometheus = false
- # Zombienet does not grant the default balance to nodes created with [[nodes]].
- balance = 2000000000000
-
-[[parachains]]
-id = 1000
-chain_spec_modifier_commands = [[
- "chainql",
- "--tla-code=rawSpec=import '{{'raw'|chainSpec}}'",
- "--tla-str=forkFrom={{ REPLICA_FROM }}",
- "fork.jsonnet",
-]]
-
- [[parachains.collators]]
- name = "alice"
- command = "/unique-chain/current/release/unique-collator"
- rpc_port = 9944
- p2p_port = 31200
- prometheus_port = 33144
- prometheus = false
- args = [
- "-lxcm=trace,parity_ws::handler=debug,jsonrpsee_core=trace,jsonrpsee-core=trace,jsonrpsee_ws_server=debug",
- ]
-
- [[parachains.collators]]
- name = "bob"
- command = "/unique-chain/current/release/unique-collator"
- rpc_port = 9945
- p2p_port = 31201
- prometheus_port = 33155
- prometheus = false
- args = [
- "-lxcm=trace,parity_ws::handler=debug,jsonrpsee_core=trace,jsonrpsee-core=trace,jsonrpsee_ws_server=debug",
- ]
.docker/forkless-config/zombienet-forkless-nodata.tomldiffbeforeafterboth--- a/.docker/forkless-config/zombienet-forkless-nodata.toml
+++ /dev/null
@@ -1,39 +0,0 @@
-[settings]
-provider = "native"
-
-[relaychain]
-default_command = "/polkadot/target/release/polkadot"
-default_args = [ "-lparachain::candidate_validation=debug", "-lxcm=trace", ]
-chain = "{{ RELAY_CHAIN_TYPE }}-local"
-
- [[relaychain.nodes]]
- name = "relay-alice"
- rpc_port = 9844
- p2p_port = 30444
-
- [[relaychain.node_groups]]
- name = "relay"
- count = 4
-
-[[parachains]]
-id = 1000
-
- [[parachains.collators]]
- name = "alice"
- command = "/unique-chain/current/release/unique-collator"
- rpc_port = 9944
- p2p_port = 31200
- args = [
- "-lxcm=trace,parity_ws::handler=debug,jsonrpsee_core=trace,jsonrpsee-core=trace,jsonrpsee_ws_server=debug",
- "--ws-max-connections=1000",
- ]
-
- [[parachains.collators]]
- name = "bob"
- command = "/unique-chain/current/release/unique-collator"
- rpc_port = 9945
- p2p_port = 31201
- args = [
- "-lxcm=trace,parity_ws::handler=debug,jsonrpsee_core=trace,jsonrpsee-core=trace,jsonrpsee_ws_server=debug",
- "--ws-max-connections=1000",
- ]
.githooks/pre-commitdiffbeforeafterboth--- a/.githooks/pre-commit
+++ b/.githooks/pre-commit
@@ -20,7 +20,7 @@
exit 1
fi
-STAGED_TEST_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep ".ts$\|.js$")
+STAGED_TEST_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep "\.ts$\|\.js$")
if [[ "$STAGED_TEST_FILES" = "" ]]; then
echo -e "${GREEN}eslint succeded${NC}"
@@ -39,4 +39,4 @@
exit 1
fi
-exit $?
\ No newline at end of file
+exit $?
.rustfmt.tomldiffbeforeafterboth--- a/.rustfmt.toml
+++ b/.rustfmt.toml
@@ -1,2 +1,3 @@
+group_imports = "stdexternalcrate"
hard_tabs = true
-reorder_imports = false
+imports_granularity = "crate"
Cargo.lockdiffbeforeafterboth1144 packageslockfile v3
Might be heavy and slow!
addr2line
0.19.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97depends onused byaddr2line
0.20.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3depends onused byadler
1.0.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35feused byaead
0.3.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7fc95d1bdb8e6666b2b217308eeeb09f2d6728d104be3e31916cc74d15420331depends onused byaead
0.4.3crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877depends onaead
0.5.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0depends onused byaes
0.6.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum884391ef1066acaa41e766ba8f596341b96e93ce34f9a43e7d24bf0a0eaf0561depends onused byaes
0.7.5crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8used byaes
0.8.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2depends onused byaes-gcm
0.9.4crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdf5f85a83a7d8b0442b6aa7b504b8212c1733da07b98aae43d4bc21b2cb3cdf6used byaes-gcm
0.10.2crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum209b47e8954a928e1d72e86eca7000ebb6655fe1436d33eefc2201cad027e237used byaes-soft
0.6.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbe14c7498ea50828a38d0e24a765ed2effe92a705885b57d029cd67d45744072depends onused byaesni
0.10.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumea2e11f5e94c2f7d386164cc2aa1f97823fed6f259e486940a71c174dd01b0cedepends onused byahash
0.7.6crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47used byahash
0.8.3crates.io↘ 4↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2faho-corasick
1.0.4crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6748e8def348ed4d14996fa801f4122cd763fff530258cdc03f64b25f89d3a5adepends onalways-assert
0.1.3crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4436e0292ab1bb631b42973c61205e704475fe8126af845c8d923c0996328127android_system_properties
0.1.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311depends onused byandroid-tzdata
0.1.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0used byansi_term
0.12.1crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2depends onanstream
0.3.2crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163depends onused byanstyle
1.0.1crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecdanstyle-parse
0.2.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333depends onused byanstyle-query
1.0.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494bdepends onused byanstyle-wincon
1.0.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc677ab05e09154296dd37acecd46420c17b9713e8366facafa8fc0885167cf4cdepends onused byanyhow
1.0.74crates.io↘ 0↖ 22sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8c6f84b74db2535ebae81eede2f39b947dcbf01d093ae5f791e5dd414a1bf289used by- cumulus-client-consensus-proposer
0.1.0 - jsonrpsee-core
0.16.2 - jsonrpsee-types
0.16.2 - mmr-rpc
4.0.0-dev - netlink-packet-core
0.4.2 - netlink-packet-route
0.12.0 - netlink-packet-utils
0.5.2 - prost-derive
0.11.9 - sc-executor-wasmtime
0.10.0-dev - sp-wasm-interface
7.0.0 - tiny-bip39
1.0.0 - uc-rpc
0.1.4 - wasm-opt
0.112.0 - wasm-opt-cxx-sys
0.112.0 - wasm-opt-sys
0.112.0 - wasmtime
8.0.1 - wasmtime-cache
8.0.1 - wasmtime-cranelift
8.0.1 - wasmtime-cranelift-shared
8.0.1 - wasmtime-environ
8.0.1 - wasmtime-jit
8.0.1 - wasmtime-runtime
8.0.1
- cumulus-client-consensus-proposer
app-promotion-rpc
0.1.0workspace↘ 5↖ 6approx
0.5.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6depends onused byarc-swap
1.6.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6array-bytes
4.2.0crates.io↘ 0↖ 14sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf52f63c5c1316a16a4b35eaac8b76a98248961a533f061684cb2a7cb0eafb6c6used by- frame-benchmarking-cli
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - sc-cli
0.10.0-dev - sc-consensus-beefy
4.0.0-dev - sc-consensus-grandpa
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-offchain
4.0.0-dev - sc-rpc-spec-v2
0.10.0-dev - sp-core
7.0.0
- frame-benchmarking-cli
array-bytes
6.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd9b1c5a481ec30a5abd8dfbd94ab5cf1bb4e9a66be7f1b3b322f2f1170c200fdarrayref
0.3.7crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545arrayvec
0.5.2crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068barrayvec
0.7.4crates.io↘ 0↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711asn1-rs
0.3.1crates.io↘ 8↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum30ff05a702273012438132f449575dbc804e27b2f3cbe3069aa237d26c98fa33depends onasn1-rs
0.5.2crates.io↘ 8↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7f6fd5ddaf0351dff5b8da21b2fb4ff8e08ddd02857f0bf69c47639106c0fff0depends onasn1-rs-derive
0.1.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdb8b7511298d5b7784b40b092d9e9dcd3a627a5707e4b5e507931ab0d44eeebfused byasn1-rs-derive
0.4.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6cused byasn1-rs-impl
0.1.0crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42eddepends onused byassert_matches
1.5.0crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9async-channel
1.9.0crates.io↘ 3↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35async-io
1.13.0crates.io↘ 12↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2afdepends onused byasync-lock
2.8.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582bdepends onasync-recursion
1.0.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0e97ce7de6cf12de5d7226c73f5ba9811622f4db3a5b91b55c53e987e5f91cbadepends onasync-trait
0.1.73crates.io↘ 3↖ 58sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0depends onused by- cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-consensus-proposer
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-consensus
2.0.0-dev - fc-db
2.0.0-dev - interceptor
0.8.2 - jsonrpsee-core
0.16.2 - jsonrpsee-http-client
0.16.2 - libp2p-request-response
0.24.1 - libp2p-webrtc
0.4.0-alpha.4 - orchestra
0.0.5 - polkadot-client
0.9.43 - polkadot-network-bridge
0.9.43 - polkadot-node-core-candidate-validation
0.9.43 - polkadot-node-core-parachains-inherent
0.9.43 - polkadot-node-network-protocol
0.9.43 - polkadot-node-subsystem-types
0.9.43 - polkadot-node-subsystem-util
0.9.43 - polkadot-overseer
0.9.43 - polkadot-service
0.9.43 - rtp
0.6.8 - sc-authority-discovery
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-beefy
4.0.0-dev - sc-consensus-grandpa
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-service
0.10.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-inherents
4.0.0-dev - sp-timestamp
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - substrate-rpc-client
0.10.0-dev - trust-dns-proto
0.22.0 - try-runtime-cli
0.10.0-dev - turn
0.6.1 - webrtc
0.6.0 - webrtc-dtls
0.7.1 - webrtc-ice
0.9.1 - webrtc-sctp
0.7.0 - webrtc-srtp
0.9.1 - webrtc-util
0.7.0
- cumulus-client-consensus-aura
asynchronous-codec
0.6.2crates.io↘ 5↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4057f2c32adbb2fc158e22fb38433c8e9bbf76b75a4732c7c0cbaf695fb65568atomic-waker
1.1.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1181e1e0d1fce796a03db1ae795d67167da795f9cf4a39c37589e85ef57f26d3used byatty
0.2.14crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8depends onauto_impl
1.1.0crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfee3da8ef1276b0bee5dd1c7258010d8fffd31801447323115a25560e1327b89used byautocfg
1.1.0crates.io↘ 0↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fabacktrace
0.3.68crates.io↘ 7↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12depends onbase-x
0.2.11crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270used bybase16ct
0.1.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678ccebase16ct
0.2.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cfbase64
0.13.1crates.io↘ 0↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8base64
0.21.2crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3dbase64ct
1.6.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5bbeef
0.5.2crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1depends onbinary-merkle-tree
4.0.0-devgithub.com/paritytech/substrate↘ 2↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onbincode
1.3.3crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcaddepends onbindgen
0.65.1crates.io↘ 13↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcfdf7b466f9a4903edc73f95d6d2bcd5baf8ae620638762244d3f60143643cc5depends onused bybitflags
1.3.2crates.io↘ 0↖ 16sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718aused bybitflags
2.4.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635used bybitvec
1.0.1crates.io↘ 4↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9cdepends onused by- kusama-runtime
0.9.43 - parity-scale-codec
3.6.4 - polkadot-collator-protocol
0.9.43 - polkadot-node-core-approval-voting
0.9.43 - polkadot-node-core-av-store
0.9.43 - polkadot-node-core-backing
0.9.43 - polkadot-node-core-provisioner
0.9.43 - polkadot-primitives
0.9.43 - polkadot-runtime
0.9.43 - polkadot-runtime-common
0.9.43 - polkadot-runtime-parachains
0.9.43 - scale-info
2.9.0 - westend-runtime
0.9.43
- kusama-runtime
blake2
0.10.6crates.io↘ 1↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efedepends onblake2b_simd
1.0.1crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3c2f0dc9a68c6317d884f97cc36cf5a3d20ba14ce404227df55e1af708ab04bcblake2s_simd
1.0.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6637f448b9e61dfadbdcbae9a885fadee1f3eaffb1f8d3c1965d3ade8bdfd44fused byblake3
1.4.1crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum199c42ab6972d92c9f8995f086273d25c42fc0f7b2a1fcefba465c1352d25ba5used byblock-buffer
0.7.3crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688bblock-buffer
0.9.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4depends onused byblock-buffer
0.10.4crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71depends onused byblock-modes
0.7.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum57a0e8073e8baa88212fb5823574c02ebccb395136ba9a164ab89379ec6072f0depends onused byblock-padding
0.1.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5depends onused byblock-padding
0.2.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2caeused bybondrewd
0.1.14crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6d1660fac8d3acced44dac64453fafedf5aab2de196b932c727e63e4ae42d1ccdepends onbondrewd-derive
0.3.18crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum723da0dee1eef38edc021b0793f892bdc024500c6a5b0727a2efe16f0e0a6977depends onused bybounded-collections
0.1.8crates.io↘ 4↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumeb5b05133427c07c4776906f673ccf36c21b102c9829c641a5b56bd151d44fd6bounded-vec
0.7.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum68534a48cbf63a4b1323c433cf21238c9ec23711e0df13b08c33e5c2082663cedepends onbs58
0.4.0crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3bstr
1.6.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6798148dccfbff0fae41c7574d2fa8f1ef3492fba0face179de5d8d447d67b05depends onused bybuild-helper
0.1.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbdce191bf3fa4995ce948c8c83b4640a1745457a149e73c6db75b4ffe36aad5fdepends onbumpalo
3.13.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1byte-slice-cast
1.2.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0cused bybyte-tools
0.3.1crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7bytemuck
1.13.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eeaused bybyteorder
1.4.3crates.io↘ 0↖ 17sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610used bybytes
1.4.0crates.io↘ 0↖ 41sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70beused by- asynchronous-codec
0.6.2 - cumulus-pallet-parachain-system
0.1.0 - ethereum
0.14.0 - h2
0.3.20 - http
0.2.9 - http-body
0.4.5 - hyper
0.14.27 - interceptor
0.8.2 - libp2p
0.51.3 - libp2p-kad
0.43.3 - libp2p-noise
0.42.2 - libp2p-quic
0.7.0-alpha.3 - libp2p-webrtc
0.4.0-alpha.4 - multistream-select
0.12.1 - netlink-proto
0.10.0 - netlink-sys
0.8.5 - parity-scale-codec
3.6.4 - polkadot-network-bridge
0.9.43 - prost
0.11.9 - prost-build
0.11.9 - quick-protobuf-codec
0.1.0 - quinn-proto
0.9.4 - rlp
0.5.2 - rtcp
0.7.2 - rtp
0.6.8 - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-offchain
4.0.0-dev - soketto
0.7.1 - sp-io
7.0.0 - sp-runtime-interface
7.0.0 - tokio
1.31.0 - tokio-util
0.7.8 - tower-http
0.4.3 - unsigned-varint
0.7.1 - webrtc
0.6.0 - webrtc-data
0.6.0 - webrtc-media
0.5.1 - webrtc-sctp
0.7.0 - webrtc-srtp
0.9.1 - webrtc-util
0.7.0
- asynchronous-codec
bzip2-sys
0.1.11+1.0.8crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdcdepends onused bycamino
1.1.6crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9cdepends onused bycargo_metadata
0.15.4crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumeee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73acargo-platform
0.1.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2cfa25e60aea747ec7e1124f238816749faa93759c6ff5b31f1ccdda137f4479depends onused bycc
1.0.82crates.io↘ 2↖ 19sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum305fe645edc1442a0fa8b6726ba61d422798d37a52e12eaecf4b022ebbb88f01depends onused by- backtrace
0.3.68 - blake3
1.4.1 - bzip2-sys
0.1.11+1.0.8 - cxx
1.0.105 - cxx-build
1.0.105 - errno-dragonfly
0.1.2 - iana-time-zone-haiku
0.1.2 - librocksdb-sys
0.11.0+8.1.1 - libz-sys
1.1.12 - link-cplusplus
1.0.9 - lz4-sys
1.9.4 - psm
0.1.21 - ring
0.16.20 - secp256k1-sys
0.6.1 - tikv-jemalloc-sys
0.5.4+5.3.0-patched - wasm-opt-sys
0.112.0 - wasmtime-runtime
8.0.1 - webrtc-util
0.7.0 - zstd-sys
2.0.8+zstd.1.5.5
- backtrace
ccm
0.3.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5aca1a8fbc20b50ac9673ff014abfb2b5f4085ee1a850d408f14a159c5853ac7depends onused bycexpr
0.6.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766depends onused bycfg_aliases
0.1.1crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89ecfg-expr
0.15.4crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb40ccee03b5175c18cde8f37e7d2a33bcef6f8ec8f7cc0d81090d1bb380949c9depends oncfg-if
1.0.0crates.io↘ 0↖ 56sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbaf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fdused by- aes
0.7.5 - aes
0.8.3 - ahash
0.8.3 - async-io
1.13.0 - backtrace
0.3.68 - blake3
1.4.1 - chacha20
0.8.2 - ckb-merkle-mountain-range
0.5.2 - cpp_demangle
0.3.5 - crc32fast
1.3.2 - crossbeam-channel
0.5.8 - crossbeam-deque
0.8.3 - crossbeam-epoch
0.9.15 - crossbeam-queue
0.3.8 - crossbeam-utils
0.8.16 - curve25519-dalek
4.0.0-rc.1 - directories-next
2.0.0 - filetime
0.2.22 - frame-metadata
15.1.0 - frame-system
4.0.0-dev - getrandom
0.1.16 - getrandom
0.2.10 - instant
0.1.12 - k256
0.13.1 - libloading
0.7.4 - mockall
0.11.4 - mockall_derive
0.11.4 - nix
0.24.3 - packed_simd_2
0.3.8 - parking_lot_core
0.8.6 - parking_lot_core
0.9.8 - polling
2.8.0 - polyval
0.5.3 - polyval
0.6.1 - prometheus
0.13.3 - sc-executor-wasmtime
0.10.0-dev - scale-info
2.9.0 - schnellru
0.2.1 - sha-1
0.9.8 - sha1
0.10.5 - sha2
0.9.9 - sha2
0.10.7 - tempfile
3.7.1 - thread_local
1.1.7 - tracing
0.1.37 - trust-dns-proto
0.22.0 - trust-dns-resolver
0.22.0 - twox-hash
1.6.3 - wasm-bindgen
0.2.87 - wasm-bindgen-futures
0.4.37 - wasmtime
8.0.1 - wasmtime-asm-macros
8.0.1 - wasmtime-jit
8.0.1 - wasmtime-jit-icache-coherence
8.0.1 - wasmtime-runtime
8.0.1 - winreg
0.50.0
- aes
chacha20
0.8.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5c80e5460aa66fe3b91d40bcbdab953a597b60053e34d684ac6903f863b680a6used bychacha20poly1305
0.9.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma18446b09be63d457bbec447509e85f662f32952b035ce892290396bc0b0cff5used bychrono
0.4.26crates.io↘ 7↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5depends oncid
0.8.6crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf6ed9c8b2d17acb8110c46f1da5bf4a696d745e1474a16db0cd2b49cd0249bf2used bycipher
0.2.5crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801depends oncipher
0.3.0crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7depends oncipher
0.4.4crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3daddepends onckb-merkle-mountain-range
0.5.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum56ccb671c5921be8a84686e6212ca184cb1d7c51cadcdbfcbd1cc3f042f5dfb8depends onused byclang-sys
1.6.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6fdepends onused byclap
4.3.21crates.io↘ 3↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc27cdf28c0f604ba3f512b0c9a409f8de8513e4816705deb0498b627e7c3a3fdclap_builder
4.3.21crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum08a9f1ab5e9f01a9b81f202e8562eb9a10de70abf9eaeac1be465c28b75aa4aaused byclap_derive
4.3.12crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum54a9bb5758fc5dfe728d1019941681eccaf0cf8a4189b692a0ee2f2ecf90a050used byclap_lex
0.5.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1bused bycoarsetime
0.1.23crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma90d114103adbc625300f346d4d09dfb4ab1c4a8df6868435dd903392ecf4354codespan-reporting
0.11.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6edepends onused bycolorchoice
1.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumacbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7used bycomfy-table
6.2.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7e959d788268e3bf9d35ace83e81b124190378e4c91c9067524675e33394b8baconcurrent-queue
2.2.0crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum62ec6771ecfa0762d24683ee5a32ad78487a3d3afdc0fb8cae19d2c5deb50b7cdepends onconsole
0.15.7crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8used byconst-oid
0.9.5crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6fused byconstant_time_eq
0.2.6crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum21a53c0a4d288377e7415b53dcfc3c04da5cdc2cc95c8d5ac178b58f0b861ad6constant_time_eq
0.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2used byconvert_case
0.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0eused bycore-foundation
0.9.3crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146depends oncore-foundation-sys
0.8.4crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efacore2
0.4.0crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505depends oncpp_demangle
0.3.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumeeaa953eaad386a53111e47172c2fedba671e5684c8dd601a5f474f4f118710fdepends onused bycpu-time
1.0.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume9e393a7668fe1fad3075085b86c781883000b4ede868f43627b34a87c8b7deddepends oncpufeatures
0.2.9crates.io↘ 1↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1depends oncranelift-bforest
0.95.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1277fbfa94bc82c8ec4af2ded3e639d49ca5f7f3c7eeab2c66accd135ece4e70depends onused bycranelift-codegen
0.95.1crates.io↘ 12↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc6e8c31ad3b2270e9aeec38723888fe1b0ace3bea2b06b3f749ccf46661d3220depends oncranelift-codegen-meta
0.95.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc8ac5ac30d62b2d66f12651f6b606dbdfd9c2cfd0908de6b387560a277c5c9dadepends onused bycranelift-entity
0.95.1crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum40099d38061b37e505e63f89bab52199037a72b931ad4868d9089ff7268660b0depends oncranelift-frontend
0.95.1crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum64a25d9d0a0ae3079c463c34115ec59507b4707175454f0eee0891e83e30e82dcranelift-isle
0.95.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum80de6a7d0486e4acbd5f9f87ec49912bf4c8fb6aea00087b989685460d4469baused bycranelift-native
0.95.1crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbb6b03e0e03801c4b3fd8ce0758a94750c07a44e7944cc0ffbf0d3f2e7c79b00cranelift-wasm
0.95.1crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumff3220489a3d928ad91e59dd7aeaa8b3de18afb554a6211213673a71c90737acdepends onused bycrc
3.0.1crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum86ec7a15cbe22e59248fc7eadb1907dab5ba09372595da4d73dd805ed4417dfedepends oncrc-catalog
2.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9cace84e55f07e7301bae1c519df89cdad8cc3cd868413d3fdbdeca9ff3db484used bycrc32fast
1.3.2crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880ddepends oncrossbeam-channel
0.5.8crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200depends onused bycrossbeam-deque
0.8.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cefused bycrossbeam-epoch
0.9.15crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7used bycrossbeam-queue
0.3.8crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353adddepends oncrossbeam-utils
0.8.16crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294depends oncrunchy
0.2.2crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7crypto-bigint
0.4.9crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17efcrypto-bigint
0.5.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcf4c2f4e1afd912bc40bfd6fed5d9dc1f288e0ba01bfcc835cc5bc3eb13efe15used bycrypto-common
0.1.6crates.io↘ 3↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3crypto-mac
0.8.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeabdepends onused bycrypto-mac
0.11.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714depends onused byctr
0.8.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761eadepends onused byctr
0.9.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835depends onused bycumulus-client-cli
0.1.0github.com/paritytech/cumulus↘ 8↖ 2sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019depends oncumulus-client-collator
0.1.0github.com/paritytech/cumulus↘ 16↖ 2sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019depends on- cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-primitives-core
0.1.0 - futures
0.3.28 - parity-scale-codec
3.6.4 - parking_lot
0.12.1 - polkadot-node-primitives
0.9.43 - polkadot-node-subsystem
0.9.43 - polkadot-overseer
0.9.43 - polkadot-primitives
0.9.43 - sc-client-api
4.0.0-dev - sp-api
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-runtime
7.0.0 - tracing
0.1.37
- cumulus-client-consensus-common
cumulus-client-consensus-aura
0.1.0github.com/paritytech/cumulus↘ 31↖ 1sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019depends on- async-trait
0.1.73 - cumulus-client-collator
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-consensus-proposer
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-interface
0.1.0 - futures
0.3.28 - parity-scale-codec
3.6.4 - polkadot-node-primitives
0.9.43 - polkadot-overseer
0.9.43 - polkadot-primitives
0.9.43 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-telemetry
4.0.0-dev - sp-api
4.0.0-dev - sp-application-crypto
7.0.0 - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-keystore
0.13.0 - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - sp-timestamp
4.0.0-dev - substrate-prometheus-endpoint
0.10.0-dev - tracing
0.1.37
used by- async-trait
cumulus-client-consensus-common
0.1.0github.com/paritytech/cumulus↘ 19↖ 4sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019depends on- async-trait
0.1.73 - cumulus-client-pov-recovery
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-relay-chain-interface
0.1.0 - dyn-clone
1.0.12 - futures
0.3.28 - log
0.4.20 - parity-scale-codec
3.6.4 - polkadot-primitives
0.9.43 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - schnellru
0.2.1 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-runtime
7.0.0 - sp-trie
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev - tracing
0.1.37
- async-trait
cumulus-client-consensus-proposer
0.1.0github.com/paritytech/cumulus↘ 8↖ 1sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019depends oncumulus-client-network
0.1.0github.com/paritytech/cumulus↘ 16↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019depends on- async-trait
0.1.73 - cumulus-relay-chain-interface
0.1.0 - futures
0.3.28 - futures-timer
3.0.2 - parity-scale-codec
3.6.4 - parking_lot
0.12.1 - polkadot-node-primitives
0.9.43 - polkadot-parachain
0.9.43 - polkadot-primitives
0.9.43 - sc-client-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - tracing
0.1.37
- async-trait
cumulus-client-pov-recovery
0.1.0github.com/paritytech/cumulus↘ 17↖ 2sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019depends on- async-trait
0.1.73 - cumulus-primitives-core
0.1.0 - cumulus-relay-chain-interface
0.1.0 - futures
0.3.28 - futures-timer
3.0.2 - parity-scale-codec
3.6.4 - polkadot-node-primitives
0.9.43 - polkadot-node-subsystem
0.9.43 - polkadot-overseer
0.9.43 - polkadot-primitives
0.9.43 - rand
0.8.5 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sp-consensus
0.10.0-dev - sp-maybe-compressed-blob
4.1.0-dev - sp-runtime
7.0.0 - tracing
0.1.37
- async-trait
cumulus-client-service
0.1.0github.com/paritytech/cumulus↘ 28↖ 1sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019depends on- cumulus-client-cli
0.1.0 - cumulus-client-collator
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - futures
0.3.28 - polkadot-primitives
0.9.43 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-network
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-rpc
4.0.0-dev - sc-service
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-utils
4.0.0-dev - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-runtime
7.0.0 - sp-transaction-pool
4.0.0-dev
used by- cumulus-client-cli
cumulus-pallet-aura-ext
0.1.0github.com/paritytech/cumulus↘ 9↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019depends oncumulus-pallet-dmp-queue
0.1.0github.com/paritytech/cumulus↘ 10↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019depends oncumulus-pallet-parachain-system
0.1.0github.com/paritytech/cumulus↘ 22↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019depends on- bytes
1.4.0 - cumulus-pallet-parachain-system-proc-macro
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - environmental
1.1.4 - frame-support
4.0.0-dev - frame-system
4.0.0-dev - impl-trait-for-tuples
0.2.2 - log
0.4.20 - parity-scale-codec
3.6.4 - polkadot-parachain
0.9.43 - scale-info
2.9.0 - sp-core
7.0.0 - sp-externalities
0.13.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - sp-std
5.0.0 - sp-trie
7.0.0 - sp-version
5.0.0 - xcm
0.9.43
- bytes
cumulus-pallet-parachain-system-proc-macro
0.1.0github.com/paritytech/cumulus↘ 4↖ 1sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019cumulus-pallet-xcm
0.1.0github.com/paritytech/cumulus↘ 9↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019depends oncumulus-pallet-xcmp-queue
0.1.0github.com/paritytech/cumulus↘ 13↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019depends oncumulus-primitives-core
0.1.0github.com/paritytech/cumulus↘ 10↖ 24sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019depends onused by- cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-primitives-timestamp
0.1.0 - cumulus-primitives-utility
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - cumulus-test-relay-sproof-builder
0.1.0 - opal-runtime
0.9.43 - orml-xtokens
0.4.1-dev - parachain-info
0.1.0 - quartz-runtime
0.9.43 - unique-node
0.9.43 - unique-runtime
0.9.43 - up-common
0.9.43
- cumulus-client-collator
cumulus-primitives-parachain-inherent
0.1.0github.com/paritytech/cumulus↘ 16↖ 4sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019depends on- async-trait
0.1.73 - cumulus-primitives-core
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-test-relay-sproof-builder
0.1.0 - parity-scale-codec
3.6.4 - sc-client-api
4.0.0-dev - scale-info
2.9.0 - sp-api
4.0.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - sp-std
5.0.0 - sp-storage
7.0.0 - sp-trie
7.0.0 - tracing
0.1.37
- async-trait
cumulus-primitives-timestamp
0.1.0github.com/paritytech/cumulus↘ 6↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019depends oncumulus-primitives-utility
0.1.0github.com/paritytech/cumulus↘ 11↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019depends oncumulus-relay-chain-inprocess-interface
0.1.0github.com/paritytech/cumulus↘ 18↖ 2sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019depends on- async-trait
0.1.73 - cumulus-primitives-core
0.1.0 - cumulus-relay-chain-interface
0.1.0 - futures
0.3.28 - futures-timer
3.0.2 - polkadot-cli
0.9.43 - polkadot-client
0.9.43 - polkadot-service
0.9.43 - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sp-api
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-runtime
7.0.0 - sp-state-machine
0.13.0
- async-trait
cumulus-relay-chain-interface
0.1.0github.com/paritytech/cumulus↘ 11↖ 10sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019depends onused by- cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - unique-node
0.9.43
- cumulus-client-consensus-aura
cumulus-relay-chain-minimal-node
0.1.0github.com/paritytech/cumulus↘ 31↖ 2sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019depends on- array-bytes
6.1.0 - async-trait
0.1.73 - cumulus-primitives-core
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - futures
0.3.28 - lru
0.9.0 - polkadot-availability-recovery
0.9.43 - polkadot-collator-protocol
0.9.43 - polkadot-core-primitives
0.9.43 - polkadot-network-bridge
0.9.43 - polkadot-node-collation-generation
0.9.43 - polkadot-node-core-runtime-api
0.9.43 - polkadot-node-network-protocol
0.9.43 - polkadot-node-subsystem-util
0.9.43 - polkadot-overseer
0.9.43 - polkadot-primitives
0.9.43 - sc-authority-discovery
0.10.0-dev - sc-client-api
4.0.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-service
0.10.0-dev - sc-tracing
4.0.0-dev - sc-utils
4.0.0-dev - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-runtime
7.0.0 - tokio
1.31.0 - tracing
0.1.37
- array-bytes
cumulus-relay-chain-rpc-interface
0.1.0github.com/paritytech/cumulus↘ 23↖ 1sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019depends on- async-trait
0.1.73 - cumulus-primitives-core
0.1.0 - cumulus-relay-chain-interface
0.1.0 - futures
0.3.28 - futures-timer
3.0.2 - jsonrpsee
0.16.2 - lru
0.9.0 - parity-scale-codec
3.6.4 - polkadot-overseer
0.9.43 - sc-client-api
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-service
0.10.0-dev - serde
1.0.183 - serde_json
1.0.105 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
7.0.0 - sp-state-machine
0.13.0 - sp-storage
7.0.0 - tokio
1.31.0 - tracing
0.1.37 - url
2.4.0
- async-trait
cumulus-test-relay-sproof-builder
0.1.0github.com/paritytech/cumulus↘ 6↖ 1sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019depends oncurve25519-dalek
2.1.3crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4a9b85542f99a2dfa2a1b8e192662741c9859a846b296bef1c92ef9b58b5a216used bycurve25519-dalek
3.2.0crates.io↘ 5↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61curve25519-dalek
4.0.0-rc.1crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8d4ba9852b42210c7538b75484f9daa0655e9a3ac04f693747bb0f02cf3cfe16used bycxx
1.0.105crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum666a3ec767f4bbaf0dcfcc3b4ea048b90520b254fdf88813e763f4c762636c14cxx-build
1.0.105crates.io↘ 7↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum162bec16c4cc28b19e26db0197b60ba5480fdb9a4cbf0f4c6c104a937741b78edepends oncxxbridge-flags
1.0.105crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd6e8c238aadc4b9f2c00269d04c87abb23f96dd240803872536eed1a304bb40eused bycxxbridge-macro
1.0.105crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum59d9ffb4193dd22180b8d5747b1e095c3d9c9c665ce39b0483a488948f437e06depends onused bydarling
0.14.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850depends onused bydarling_core
0.14.4crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0darling_macro
0.14.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48edepends onused bydata-encoding
2.4.0crates.io↘ 0↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308data-encoding-macro
0.1.13crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc904b33cc60130e1aeea4956ab803d08a3f4a0ca82d64ed757afac3891f2bb99used bydata-encoding-macro-internal
0.1.11crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8fdf3fce3ce863539ec1d7fd1b6dcc3c645663376b43ed376bbf887733e4f772depends onused byder
0.6.1crates.io↘ 3↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4deder
0.7.8crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1cdepends onder-parser
7.0.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfe398ac75057914d7d07307bf67dc7f3f574a26783b4fc7805a20ffa9f506e82used byder-parser
8.2.0crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdbd676fbbab537128ef0278adb5576cf363cff6aa22a7b24effe97347cfab61ederanged
0.3.7crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7684a49fb1af197853ef7b2ee694bc1f5b4179556f1e5710e1760c5db6f5e929used byderivative
2.2.0crates.io↘ 3↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770bdepends onderive_builder
0.11.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd07adf7be193b71cc36b193d0f5fe60b918a3a9db4dad0449f57bcfd519704a3depends onused byderive_builder_core
0.11.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1f91d4cfa921f1c05904dc3c57b4a32c38aed3340cce209f3a6fd1478babafc4used byderive_builder_macro
0.11.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8f0314b72bed045f3a68671b3c86328386762c93f82d98c65c3cb5e5f573dd68depends onused byderive_more
0.99.17crates.io↘ 5↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321used by- polkadot-availability-distribution
0.9.43 - polkadot-dispute-distribution
0.9.43 - polkadot-node-core-approval-voting
0.9.43 - polkadot-node-network-protocol
0.9.43 - polkadot-node-subsystem-types
0.9.43 - polkadot-node-subsystem-util
0.9.43 - polkadot-parachain
0.9.43 - polkadot-runtime-parachains
0.9.43 - prioritized-metered-channel
0.2.0 - reed-solomon-novelpoly
1.0.0 - scale-info
2.9.0
- polkadot-availability-distribution
derive-syn-parse
0.1.5crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume79116f119dd1dba1abf1f3405f03b9b0e79a27a3883864bfebded8a3dc768cddepends ondifflib
0.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8used bydigest
0.8.1crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5depends ondigest
0.9.0crates.io↘ 1↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066depends ondigest
0.10.7crates.io↘ 4↖ 18sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292directories
4.0.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf51c5d4ddabd36886dd3e1438cb358cdcb0d7c499cb99cb4ac2e38e18b5cb210depends onused bydirectories-next
2.0.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum339ee130d97a610ea5a5872d2bbb130fdf68884ff09d3028b81bec8a1ac23bbcdepends onused bydirs-sys
0.3.7crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6depends onused bydirs-sys-next
0.1.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4ddepends onused bydisplaydoc
0.2.4crates.io↘ 3↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175ddepends ondowncast
0.11.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1used bydowncast-rs
1.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650used bydtoa
1.0.9crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653used bydyn-clonable
0.9.0crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4e9232f0e607a262ceb9bd5141a3dfb3e4db6994b31989bbfd845878cba59fd4depends onused bydyn-clonable-impl
0.9.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum558e40ea573c374cf53507fd240b7ee2f5477df7cfebdb97323ec61c719399c5depends onused bydyn-clone
1.0.12crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum304e6508efa593091e97a9abbc10f90aa7ca635b6d2784feff3c89d41dd12272ecdsa
0.14.8crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5cused byecdsa
0.16.8crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4used byed25519
1.5.3crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7depends onused byed25519-dalek
1.0.1crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9ded25519-zebra
3.1.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7c24f403d068ad0b359e577a77f92392118be3f3c927538f2bb544a5ecd828c6used byeither
1.9.0crates.io↘ 0↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07elliptic-curve
0.12.3crates.io↘ 14↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3depends onelliptic-curve
0.13.5crates.io↘ 11↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum968405c8fdc9b3bf4df0a6638858cc0b52462836ab6b1c87377785dd09cf1c0bdepends onused byencode_unicode
0.3.6crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831fused byenum-as-inner
0.5.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc9720bba047d567ffc8a3cba48bf19126600e249ab7f128e9233e6376976a116used byenumflags2
0.7.7crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc041f5090df68b32bcd905365fd51769c8b9d553fe87fde0b683534f10c01bd2depends onenumflags2_derive
0.7.7crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5e9a1f9f7d83e59740248a6e14ecf93929ade55027844dfcea78beafccc15745depends onused byenumn
0.1.11crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb893c4eb2dc092c811165f84dc7447fae16fb66521717968c34c509b39b1a5c5depends onused byenv_logger
0.9.3crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7env_logger
0.10.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0used byenvironmental
1.1.4crates.io↘ 0↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume48c92028aaa870e83d51c64e5d4e0b6981b360c522198c23959f219a4e1b15bequivalent
1.0.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5used byerrno
0.3.2crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4ferrno-dragonfly
0.1.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bfdepends onused byethbloom
0.13.0crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60depends onused byethereum
0.14.0crates.io↘ 10↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6a89fb87a9e103f71b903b80b670200b54cc67a07578f070681f1fffb7396fb7depends onethereum-types
0.14.1crates.io↘ 8↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8eedepends onevent-listener
2.5.3crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0evm
0.39.1github.com/rust-blockchain/evm↘ 13↖ 4sourcegit+https://github.com/rust-blockchain/evm?rev=b7b82c7e1fc57b7449d6dfa6826600de37cc1e65#b7b82c7e1fc57b7449d6dfa6826600de37cc1e65depends onevm-coder
0.4.2crates.io↘ 5↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb88ae5a449e7e9dfef59c0dd2df396bc56d81a6f4e297490c0c64aa73f7f7ad4depends onevm-coder-procedural
0.4.2crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6223c1063c1f53380b4b9aaf2e4d82eba4808c661c61265619b804b09b7a6b1aused byevm-coder-substrate-procedural
0.1.0workspace↘ 3↖ 1evm-core
0.39.0github.com/rust-blockchain/evm↘ 4↖ 4sourcegit+https://github.com/rust-blockchain/evm?rev=b7b82c7e1fc57b7449d6dfa6826600de37cc1e65#b7b82c7e1fc57b7449d6dfa6826600de37cc1e65evm-gasometer
0.39.0github.com/rust-blockchain/evm↘ 4↖ 1sourcegit+https://github.com/rust-blockchain/evm?rev=b7b82c7e1fc57b7449d6dfa6826600de37cc1e65#b7b82c7e1fc57b7449d6dfa6826600de37cc1e65used byevm-runtime
0.39.0github.com/rust-blockchain/evm↘ 5↖ 2sourcegit+https://github.com/rust-blockchain/evm?rev=b7b82c7e1fc57b7449d6dfa6826600de37cc1e65#b7b82c7e1fc57b7449d6dfa6826600de37cc1e65used byexit-future
0.2.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume43f2f1833d64e33f15592464d6fdd70f349dda7b1a53088eb83cd94014008c5depends onused byexpander
0.0.4crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma718c0675c555c5f976fff4ea9e2c150fa06cefa201cadef87cfbf9324075881used byexpander
0.0.6crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3774182a5df13c3d1690311ad32fbe913feef26baba609fa2dd5f72042bd2ab6used byexpander
1.0.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf360349150728553f92e4c997a16af8915f418d3a0f21b440d34c5632f16ed84used byexpander
2.0.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5f86a749cf851891866c10515ef6c299b5c69661465e9c3bbe7e07a2b77fb0f7used byfallible-iterator
0.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7used byfastrand
1.9.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501bedepends onused byfastrand
2.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764used byfatality
0.0.6crates.io↘ 2↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2ad875162843b0d046276327afe0136e9ed3a23d5a754210fb6f1f33610d39abdepends onused by- polkadot-availability-distribution
0.9.43 - polkadot-availability-recovery
0.9.43 - polkadot-collator-protocol
0.9.43 - polkadot-dispute-distribution
0.9.43 - polkadot-network-bridge
0.9.43 - polkadot-node-core-backing
0.9.43 - polkadot-node-core-dispute-coordinator
0.9.43 - polkadot-node-core-provisioner
0.9.43 - polkadot-node-network-protocol
0.9.43 - polkadot-node-subsystem-util
0.9.43 - polkadot-statement-distribution
0.9.43
- polkadot-availability-distribution
fatality-proc-macro
0.0.6crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf5aa1e3ae159e592ad222dc90c5acbad632b527779ba88486abe92782ab268bddepends onused byfc-consensus
2.0.0-devgithub.com/uniquenetwork/unique-frontier↘ 9↖ 1sourcegit+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.43#3ae25048cce709349b242e8ad3c54ada2b321564depends onused byfc-db
2.0.0-devgithub.com/uniquenetwork/unique-frontier↘ 13↖ 4sourcegit+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.43#3ae25048cce709349b242e8ad3c54ada2b321564depends onfc-mapping-sync
2.0.0-devgithub.com/uniquenetwork/unique-frontier↘ 14↖ 3sourcegit+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.43#3ae25048cce709349b242e8ad3c54ada2b321564depends onfc-rpc
2.0.0-devgithub.com/uniquenetwork/unique-frontier↘ 43↖ 2sourcegit+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.43#3ae25048cce709349b242e8ad3c54ada2b321564depends on- ethereum
0.14.0 - ethereum-types
0.14.1 - evm
0.39.1 - fc-db
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc-core
1.1.0-dev - fc-storage
1.0.0-dev - fp-ethereum
1.0.0-dev - fp-evm
3.0.0-dev - fp-rpc
3.0.0-dev - fp-storage
2.0.0 - futures
0.3.28 - hex
0.4.3 - jsonrpsee
0.16.2 - libsecp256k1
0.7.1 - log
0.4.20 - lru
0.8.1 - pallet-evm
6.0.0-dev - parity-scale-codec
3.6.4 - prometheus
0.13.3 - rand
0.8.5 - rlp
0.5.2 - sc-client-api
4.0.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-rpc
4.0.0-dev - sc-service
0.10.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sc-utils
4.0.0-dev - serde
1.0.183 - sp-api
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-io
7.0.0 - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - sp-storage
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev - tokio
1.31.0
- ethereum
fc-rpc-core
1.1.0-devgithub.com/uniquenetwork/unique-frontier↘ 6↖ 3sourcegit+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.43#3ae25048cce709349b242e8ad3c54ada2b321564depends onfc-storage
1.0.0-devgithub.com/uniquenetwork/unique-frontier↘ 11↖ 2sourcegit+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.43#3ae25048cce709349b242e8ad3c54ada2b321564depends onfdlimit
0.2.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2c4c9e43643f5a3be4ca5b67d26b98031ff9db6806c3440ae32e02e3ceac3f1bdepends onused byff
0.12.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160depends onff
0.13.0crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449depends onfiat-crypto
0.1.20crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume825f6987101665dea6ec934c09ec6d721de7bc1bf92248e1d5810c8cd636b77used byfile-per-thread-logger
0.1.6crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum84f2e425d9790201ba4af4630191feac6dcc98765b118d4d18e91d23c2353866depends onused byfiletime
0.2.22crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0finality-grandpa
0.16.2crates.io↘ 8↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum36530797b9bf31cd4ff126dcfee8170f86b00cfdcea3269d73133cc0415945c3depends onfixed-hash
0.8.0crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534fixedbitset
0.4.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80used byflate2
1.0.27crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010used byfloat-cmp
0.9.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4depends onused byfnv
1.0.7crates.io↘ 0↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1fork-tree
3.0.0github.com/paritytech/substrate↘ 1↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onform_urlencoded
1.2.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652depends onused byfp-account
1.0.0-devgithub.com/uniquenetwork/unique-frontier↘ 12↖ 1sourcegit+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.43#3ae25048cce709349b242e8ad3c54ada2b321564depends onused byfp-consensus
2.0.0-devgithub.com/uniquenetwork/unique-frontier↘ 5↖ 3sourcegit+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.43#3ae25048cce709349b242e8ad3c54ada2b321564fp-ethereum
1.0.0-devgithub.com/uniquenetwork/unique-frontier↘ 7↖ 2sourcegit+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.43#3ae25048cce709349b242e8ad3c54ada2b321564depends onfp-evm
3.0.0-devgithub.com/uniquenetwork/unique-frontier↘ 9↖ 12sourcegit+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.43#3ae25048cce709349b242e8ad3c54ada2b321564depends onfp-rpc
3.0.0-devgithub.com/uniquenetwork/unique-frontier↘ 10↖ 11sourcegit+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.43#3ae25048cce709349b242e8ad3c54ada2b321564depends onfp-self-contained
1.0.0-devgithub.com/uniquenetwork/unique-frontier↘ 5↖ 3sourcegit+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.43#3ae25048cce709349b242e8ad3c54ada2b321564fp-storage
2.0.0github.com/uniquenetwork/unique-frontier↘ 2↖ 6sourcegit+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.43#3ae25048cce709349b242e8ad3c54ada2b321564depends onfragile
2.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaaused byframe-benchmarking
4.0.0-devgithub.com/paritytech/substrate↘ 18↖ 74sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends on- frame-support
4.0.0-dev - frame-support-procedural
4.0.0-dev - frame-system
4.0.0-dev - linregress
0.5.2 - log
0.4.20 - parity-scale-codec
3.6.4 - paste
1.0.14 - scale-info
2.9.0 - serde
1.0.183 - sp-api
4.0.0-dev - sp-application-crypto
7.0.0 - sp-core
7.0.0 - sp-io
7.0.0 - sp-runtime
7.0.0 - sp-runtime-interface
7.0.0 - sp-std
5.0.0 - sp-storage
7.0.0 - static_assertions
1.1.0
used by- frame-benchmarking-cli
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - kusama-runtime
0.9.43 - opal-runtime
0.9.43 - pallet-app-promotion
0.2.1 - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collator-selection
5.0.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.14 - pallet-configuration
0.2.0 - pallet-conviction-voting
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-election-provider-support-benchmarking
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-migration
0.1.1 - pallet-fast-unstake
4.0.0-dev - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.11 - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-maintenance
0.1.0 - pallet-membership
4.0.0-dev - pallet-message-queue
7.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nis
4.0.0-dev - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nonfungible
0.1.14 - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-refungible
0.2.13 - pallet-scheduler
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-structure
0.1.2 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.2.1 - pallet-unique-scheduler-v2
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-whitelist
4.0.0-dev - pallet-xcm
0.9.43 - pallet-xcm-benchmarks
0.9.43 - polkadot-client
0.9.43 - polkadot-runtime
0.9.43 - polkadot-runtime-common
0.9.43 - polkadot-runtime-parachains
0.9.43 - quartz-runtime
0.9.43 - rococo-runtime
0.9.43 - uc-rpc
0.1.4 - unique-node
0.9.43 - unique-runtime
0.9.43 - westend-runtime
0.9.43 - xcm-executor
0.9.43
- frame-support
frame-benchmarking-cli
4.0.0-devgithub.com/paritytech/substrate↘ 40↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends on- Inflector
0.11.4 - array-bytes
4.2.0 - chrono
0.4.26 - clap
4.3.21 - comfy-table
6.2.0 - frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - gethostname
0.2.3 - handlebars
4.3.7 - itertools
0.10.5 - lazy_static
1.4.0 - linked-hash-map
0.5.6 - log
0.4.20 - parity-scale-codec
3.6.4 - rand
0.8.5 - rand_pcg
0.3.1 - sc-block-builder
0.10.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-executor
0.10.0-dev - sc-service
0.10.0-dev - sc-sysinfo
6.0.0-dev - serde
1.0.183 - serde_json
1.0.105 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
7.0.0 - sp-database
4.0.0-dev - sp-externalities
0.13.0 - sp-inherents
4.0.0-dev - sp-keystore
0.13.0 - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - sp-std
5.0.0 - sp-storage
7.0.0 - sp-trie
7.0.0 - thiserror
1.0.46 - thousands
0.2.0
- Inflector
frame-election-provider-solution-type
4.0.0-devgithub.com/paritytech/substrate↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40frame-election-provider-support
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 11sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused by- kusama-runtime
0.9.43 - pallet-bags-list
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-election-provider-support-benchmarking
4.0.0-dev - pallet-fast-unstake
4.0.0-dev - pallet-nomination-pools-benchmarking
1.0.0 - pallet-offences-benchmarking
4.0.0-dev - pallet-staking
4.0.0-dev - polkadot-runtime
0.9.43 - polkadot-runtime-common
0.9.43 - westend-runtime
0.9.43
- kusama-runtime
frame-executive
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onframe-metadata
15.1.0crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum878babb0b136e731cc77ec2fd883ff02745ff21e6fb662729953d44923df009cframe-remote-externalities
0.10.0-devgithub.com/paritytech/substrate↘ 14↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused byframe-support
4.0.0-devgithub.com/paritytech/substrate↘ 27↖ 118sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends on- bitflags
1.3.2 - environmental
1.1.4 - frame-metadata
15.1.0 - frame-support-procedural
4.0.0-dev - impl-trait-for-tuples
0.2.2 - k256
0.13.1 - log
0.4.20 - once_cell
1.18.0 - parity-scale-codec
3.6.4 - paste
1.0.14 - scale-info
2.9.0 - serde
1.0.183 - smallvec
1.11.0 - sp-api
4.0.0-dev - sp-arithmetic
6.0.0 - sp-core
7.0.0 - sp-core-hashing-proc-macro
5.0.0 - sp-debug-derive
5.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-runtime
7.0.0 - sp-staking
4.0.0-dev - sp-state-machine
0.13.0 - sp-std
5.0.0 - sp-tracing
6.0.0 - sp-weights
4.0.0 - tt-call
1.0.9
used by- cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-utility
0.1.0 - fp-ethereum
1.0.0-dev - fp-evm
3.0.0-dev - fp-self-contained
1.0.0-dev - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-try-runtime
0.10.0-dev - kusama-runtime
0.9.43 - kusama-runtime-constants
0.9.43 - opal-runtime
0.9.43 - orml-tokens
0.4.1-dev - orml-traits
0.4.1-dev - orml-utilities
0.4.1-dev - orml-vesting
0.4.1-dev - orml-xcm-support
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-app-promotion
0.2.1 - pallet-aura
4.0.0-dev - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-balances-adapter
0.1.0 - pallet-base-fee
1.0.0 - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collator-selection
5.0.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.14 - pallet-configuration
0.2.0 - pallet-conviction-voting
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-evm-transaction-payment
0.1.1 - pallet-fast-unstake
4.0.0-dev - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.11 - pallet-gov-origins
0.2.1 - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-maintenance
0.1.0 - pallet-membership
4.0.0-dev - pallet-message-queue
7.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nis
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nonfungible
0.1.14 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-refungible
0.2.13 - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-structure
0.1.2 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-test-utils
0.1.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.2.1 - pallet-unique-scheduler-v2
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-whitelist
4.0.0-dev - pallet-xcm
0.9.43 - pallet-xcm-benchmarks
0.9.43 - parachain-info
0.1.0 - polkadot-parachain
0.9.43 - polkadot-runtime
0.9.43 - polkadot-runtime-common
0.9.43 - polkadot-runtime-constants
0.9.43 - polkadot-runtime-parachains
0.9.43 - polkadot-service
0.9.43 - quartz-runtime
0.9.43 - rococo-runtime
0.9.43 - rococo-runtime-constants
0.9.43 - tests
0.1.1 - unique-runtime
0.9.43 - up-common
0.9.43 - up-data-structs
0.2.2 - westend-runtime
0.9.43 - westend-runtime-constants
0.9.43 - xcm-builder
0.9.43 - xcm-executor
0.9.43
- bitflags
frame-support-procedural
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onframe-support-procedural-tools
4.0.0-devgithub.com/paritytech/substrate↘ 5↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onframe-support-procedural-tools-derive
3.0.0github.com/paritytech/substrate↘ 3↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onframe-system
4.0.0-devgithub.com/paritytech/substrate↘ 12↖ 102sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused by- cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - kusama-runtime
0.9.43 - opal-runtime
0.9.43 - orml-tokens
0.4.1-dev - orml-vesting
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-app-promotion
0.2.1 - pallet-aura
4.0.0-dev - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-balances-adapter
0.1.0 - pallet-base-fee
1.0.0 - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collator-selection
5.0.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.14 - pallet-configuration
0.2.0 - pallet-conviction-voting
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-election-provider-support-benchmarking
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-evm-transaction-payment
0.1.1 - pallet-fast-unstake
4.0.0-dev - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.11 - pallet-gov-origins
0.2.1 - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-maintenance
0.1.0 - pallet-membership
4.0.0-dev - pallet-message-queue
7.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nis
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nonfungible
0.1.14 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-refungible
0.2.13 - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-structure
0.1.2 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-test-utils
0.1.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.2.1 - pallet-unique-scheduler-v2
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-whitelist
4.0.0-dev - pallet-xcm
0.9.43 - pallet-xcm-benchmarks
0.9.43 - parachain-info
0.1.0 - polkadot-client
0.9.43 - polkadot-runtime
0.9.43 - polkadot-runtime-common
0.9.43 - polkadot-runtime-parachains
0.9.43 - quartz-runtime
0.9.43 - rococo-runtime
0.9.43 - tests
0.1.1 - unique-runtime
0.9.43 - westend-runtime
0.9.43 - xcm-builder
0.9.43
- cumulus-pallet-aura-ext
frame-system-benchmarking
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onframe-system-rpc-runtime-api
4.0.0-devgithub.com/paritytech/substrate↘ 2↖ 10sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onframe-try-runtime
0.10.0-devgithub.com/paritytech/substrate↘ 5↖ 9sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40fs-err
2.9.0crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0845fa252299212f0389d64ba26f34fa32cfe41588355f21ed507c59a0f64541fs2
0.4.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213depends onused byfs4
0.6.6crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2eeb4ed9e12f43b7fa0baae3f9cdda28352770132ef2e09a23760c29cae8bd47depends onused byfunty
2.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9cused byfutures
0.3.28crates.io↘ 7↖ 121sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40depends onused by- cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-primitives-timestamp
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - exit-future
0.2.0 - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - finality-grandpa
0.16.2 - frame-remote-externalities
0.10.0-dev - if-watch
3.0.1 - libp2p
0.51.3 - libp2p-core
0.39.2 - libp2p-dns
0.39.0 - libp2p-identify
0.42.2 - libp2p-kad
0.43.3 - libp2p-mdns
0.43.1 - libp2p-noise
0.42.2 - libp2p-ping
0.42.0 - libp2p-quic
0.7.0-alpha.3 - libp2p-request-response
0.24.1 - libp2p-swarm
0.42.2 - libp2p-tcp
0.39.0 - libp2p-tls
0.1.0 - libp2p-wasm-ext
0.39.0 - libp2p-webrtc
0.4.0-alpha.4 - libp2p-websocket
0.41.0 - libp2p-yamux
0.43.1 - mick-jaeger
0.1.8 - mmr-gadget
4.0.0-dev - multistream-select
0.12.1 - netlink-proto
0.10.0 - netlink-sys
0.8.5 - orchestra
0.0.5 - polkadot-approval-distribution
0.9.43 - polkadot-availability-bitfield-distribution
0.9.43 - polkadot-availability-distribution
0.9.43 - polkadot-availability-recovery
0.9.43 - polkadot-cli
0.9.43 - polkadot-client
0.9.43 - polkadot-collator-protocol
0.9.43 - polkadot-dispute-distribution
0.9.43 - polkadot-gossip-support
0.9.43 - polkadot-network-bridge
0.9.43 - polkadot-node-collation-generation
0.9.43 - polkadot-node-core-approval-voting
0.9.43 - polkadot-node-core-av-store
0.9.43 - polkadot-node-core-backing
0.9.43 - polkadot-node-core-bitfield-signing
0.9.43 - polkadot-node-core-candidate-validation
0.9.43 - polkadot-node-core-chain-api
0.9.43 - polkadot-node-core-chain-selection
0.9.43 - polkadot-node-core-dispute-coordinator
0.9.43 - polkadot-node-core-parachains-inherent
0.9.43 - polkadot-node-core-provisioner
0.9.43 - polkadot-node-core-pvf
0.9.43 - polkadot-node-core-pvf-checker
0.9.43 - polkadot-node-core-pvf-worker
0.9.43 - polkadot-node-core-runtime-api
0.9.43 - polkadot-node-metrics
0.9.43 - polkadot-node-network-protocol
0.9.43 - polkadot-node-primitives
0.9.43 - polkadot-node-subsystem-types
0.9.43 - polkadot-node-subsystem-util
0.9.43 - polkadot-overseer
0.9.43 - polkadot-service
0.9.43 - polkadot-statement-distribution
0.9.43 - prioritized-metered-channel
0.2.0 - rtnetlink
0.10.1 - rw-stream-sink
0.3.0 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-beefy
4.0.0-dev - sc-consensus-beefy-rpc
4.0.0-dev - sc-consensus-grandpa
0.10.0-dev - sc-consensus-grandpa-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-informant
0.10.0-dev - sc-network
0.10.0-dev - sc-network-bitswap
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-offchain
4.0.0-dev - sc-peerset
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sc-storage-monitor
0.1.0 - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sc-utils
4.0.0-dev - soketto
0.7.1 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-io
7.0.0 - sp-keystore
0.13.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-test-utils
4.0.0-dev - turn
0.6.1 - unique-node
0.9.43 - wasm-timer
0.2.5 - yamux
0.10.2
- cumulus-client-collator
futures-channel
0.3.28crates.io↘ 2↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2depends onfutures-core
0.3.28crates.io↘ 0↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8cfutures-executor
0.3.28crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0used byfutures-io
0.3.28crates.io↘ 0↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964futures-lite
1.13.0crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bcedepends onused byfutures-macro
0.3.28crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72depends onused byfutures-rustls
0.22.2crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd2411eed028cdf8c8034eaf21f9915f956b6c3abec4d4c7949ee67f0721127bddepends onfutures-sink
0.3.28crates.io↘ 0↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6efutures-task
0.3.28crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65futures-timer
3.0.2crates.io↘ 0↖ 46sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2cused by- cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-mapping-sync
2.0.0-dev - finality-grandpa
0.16.2 - jsonrpsee-core
0.16.2 - libp2p
0.51.3 - libp2p-core
0.39.2 - libp2p-identify
0.42.2 - libp2p-kad
0.43.3 - libp2p-ping
0.42.0 - libp2p-quic
0.7.0-alpha.3 - libp2p-swarm
0.42.2 - libp2p-tcp
0.39.0 - libp2p-webrtc
0.4.0-alpha.4 - orchestra
0.0.5 - polkadot-collator-protocol
0.9.43 - polkadot-dispute-distribution
0.9.43 - polkadot-gossip-support
0.9.43 - polkadot-node-core-approval-voting
0.9.43 - polkadot-node-core-av-store
0.9.43 - polkadot-node-core-candidate-validation
0.9.43 - polkadot-node-core-chain-selection
0.9.43 - polkadot-node-core-parachains-inherent
0.9.43 - polkadot-node-core-provisioner
0.9.43 - polkadot-node-core-pvf
0.9.43 - polkadot-node-metrics
0.9.43 - polkadot-overseer
0.9.43 - prioritized-metered-channel
0.2.0 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-grandpa
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-informant
0.10.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev - sc-transaction-pool
4.0.0-dev - sc-utils
4.0.0-dev - sp-timestamp
4.0.0-dev
- cumulus-client-network
futures-util
0.3.28crates.io↘ 10↖ 13sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533depends onfxhash
0.2.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50cdepends onused bygeneric-array
0.12.4crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bddepends onused bygeneric-array
0.14.7crates.io↘ 3↖ 20sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9agethostname
0.2.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862edepends ongetrandom
0.1.16crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fcegetrandom
0.2.10crates.io↘ 3↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbe4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427ghash
0.4.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1583cc1656d7839fd3732b80cf4f38850336cdb9b8ded1cd399ca62958de3c99depends onused byghash
0.5.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd930750de5717d2dd0b8c0d42c076c0e884c81a73e6cab859bbd2339c71e3e40depends onused bygimli
0.27.3crates.io↘ 3↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2eglob
0.3.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9bglobset
0.4.13crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum759c97c1e17c55525b57192c06a267cda0ac5210b222d6b82189a2338fa1c13dused bygroup
0.12.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7depends onused bygroup
0.13.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63depends onused byh2
0.3.20crates.io↘ 11↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049depends onused byhandlebars
4.3.7crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum83c3372087601b532857d332f5957cbae686da52bb7810bf038c3e3c3cc2fa0dhash-db
0.15.2crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd23bd4e7b5eda0d0f3a307e8b381fdc8ba9000f26fbe912250c0a4cc3956364ahash-db
0.16.0crates.io↘ 0↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8e7d7786361d7425ae2fe4f9e407eb0efaa0840f5212d109cc018c40c35c6ab4hash256-std-hasher
0.15.2crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum92c171d55b98633f4ed3860808f004099b36c1cc29c42cfc53aa8591b21efcf2depends onhashbrown
0.12.3crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888depends onhashbrown
0.13.2crates.io↘ 1↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510edepends onhashbrown
0.14.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437aused byheck
0.4.1crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8hermit-abi
0.1.19crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33depends onused byhermit-abi
0.3.2crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668bhex
0.4.3crates.io↘ 0↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70hex-literal
0.4.1crates.io↘ 0↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46hkdf
0.12.3crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437depends onhmac
0.8.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840depends onused byhmac
0.11.0crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69bdepends onhmac
0.12.1crates.io↘ 1↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5edepends onhmac-drbg
0.3.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1depends onused byhostname
0.3.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867depends onused byhttp
0.2.9crates.io↘ 3↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482depends onhttp-body
0.4.5crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1used byhttp-range-header
0.3.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumadd0ab9360ddbd88cfeb3bd9574a1d85cfdfa14db10b3e21d3700dbc4328758fused byhttparse
1.8.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904used byhttpdate
1.0.3crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdf3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9used byhumantime
2.1.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4hyper
0.14.27crates.io↘ 16↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468depends onhyper-rustls
0.23.2crates.io↘ 8↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1788965e61b367cd03a62950836d5cd41560c3577d90e40e0819373194d1661cdepends oniana-time-zone
0.1.57crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613depends onused byiana-time-zone-haiku
0.1.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269fdepends onused byident_case
1.0.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39used byidna
0.2.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8used byidna
0.4.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917cused byif-addrs
0.7.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcbc0fa01ffc752e9dbc72818cdb072cd028b86be5e09dd04c5a643704fe101a9depends onused byif-watch
3.0.1crates.io↘ 11↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma9465340214b296cd17a0009acdb890d6160010b8adf8f78a00d0d7ab270f79fdepends onimpl-codec
0.6.0crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2fdepends onimpl-rlp
0.3.0crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808depends onimpl-serde
0.4.0crates.io↘ 1↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cddepends onimpl-trait-for-tuples
0.2.2crates.io↘ 3↖ 22sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395ebdepends onused by- cumulus-pallet-parachain-system
0.1.0 - evm-coder
0.4.2 - fp-evm
3.0.0-dev - frame-support
4.0.0-dev - opal-runtime
0.9.43 - orml-traits
0.4.1-dev - pallet-authorship
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-session
4.0.0-dev - pallet-treasury
4.0.0-dev - parity-scale-codec
3.6.4 - polkadot-runtime-common
0.9.43 - quartz-runtime
0.9.43 - sp-inherents
4.0.0-dev - sp-runtime
7.0.0 - sp-runtime-interface
7.0.0 - sp-wasm-interface
7.0.0 - unique-runtime
0.9.43 - up-sponsorship
0.1.0 - xcm
0.9.43 - xcm-builder
0.9.43 - xcm-executor
0.9.43
- cumulus-pallet-parachain-system
indexmap
1.9.3crates.io↘ 3↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99depends onindexmap
2.0.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65ddepends onused byindicatif
0.17.6crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0b297dc40733f23a0e52728a58fa9489a5b7638a324932de16b41adc3ef80730Inflector
0.11.4crates.io↘ 2↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3depends oninout
0.1.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5depends onused byinstant
0.1.12crates.io↘ 1↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2cdepends oninteger-encoding
3.0.4crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8bb03732005da905c88227371639bf1ad885cc712789c011c31c5fb3ab3ccf02used byinteger-sqrt
0.1.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum276ec31bcb4a9ee45f58bec6f9ec700ae4cf4f4f8f2fa7e06cb406bd5ffdd770depends onused byinterceptor
0.8.2crates.io↘ 11↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1e8a11ae2da61704edada656798b61c94b35ecac2c58eb955156987d5e6be90bdepends onused byio-lifetimes
1.0.11crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumeae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2used byip_network
0.4.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaa2f047c0a98b2f299aa5d6d7088443570faae494e9ae1305e48be000c9e0eb1ipconfig
0.3.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997fused byipnet
2.8.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6is-terminal
0.4.9crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8bitertools
0.10.5crates.io↘ 1↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473depends onitoa
1.0.9crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaf150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38jobserver
0.1.26crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2depends onused byjs-sys
0.3.64crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935adepends onjsonrpsee
0.16.2crates.io↘ 7↖ 23sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7d291e3a5818a2384645fd9756362e6d89cf0541b0b916fa7702ea4a9833608edepends onused by- cumulus-relay-chain-rpc-interface
0.1.0 - fc-rpc
2.0.0-dev - fc-rpc-core
1.1.0-dev - frame-remote-externalities
0.10.0-dev - mmr-rpc
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - polkadot-rpc
0.9.43 - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-beefy-rpc
4.0.0-dev - sc-consensus-grandpa-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-rpc-server
4.0.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - substrate-frame-rpc-system
4.0.0-dev - substrate-rpc-client
0.10.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - uc-rpc
0.1.4 - unique-node
0.9.43 - unique-rpc
0.1.2
- cumulus-relay-chain-rpc-interface
jsonrpsee-client-transport
0.16.2crates.io↘ 13↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum965de52763f2004bc91ac5bcec504192440f0b568a5d621c59d9dbd6f886c3fbdepends onused byjsonrpsee-core
0.16.2crates.io↘ 20↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma4e70b4439a751a5de7dd5ed55eacff78ebf4ffe0fc009cb1ebb11417f5b536bdepends onjsonrpsee-http-client
0.16.2crates.io↘ 11↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcc345b0a43c6bc49b947ebeb936e886a419ee3d894421790c969cc56040542addepends onused byjsonrpsee-proc-macros
0.16.2crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbaa6da1e4199c10d7b1d0a6e5e8bd8e55f351163b6f4b3cbb044672a69bd4c1cused byjsonrpsee-server
0.16.2crates.io↘ 14↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1fb69dad85df79527c019659a992498d03f8495390496da2f07e6c24c2b356fcdepends onused byjsonrpsee-types
0.16.2crates.io↘ 6↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5bd522fe1ce3702fd94812965d7bb7a3364b1c9aba743944c5a00529aae80f8cjsonrpsee-ws-client
0.16.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0b83daeecfc6517cfe210df24e570fb06213533dfb990318fae781f4c7119dd9used byk256
0.13.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bccused bykeccak
0.1.4crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940depends onkusama-runtime
0.9.43github.com/paritytech/polkadot↘ 92↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends on- bitvec
1.0.1 - frame-benchmarking
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - hex-literal
0.4.1 - kusama-runtime-constants
0.9.43 - log
0.4.20 - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collective
4.0.0-dev - pallet-conviction-voting
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-election-provider-support-benchmarking
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-fast-unstake
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-membership
4.0.0-dev - pallet-message-queue
7.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nis
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nomination-pools-runtime-api
1.0.0-dev - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-staking-runtime-api
4.0.0-dev - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-whitelist
4.0.0-dev - pallet-xcm
0.9.43 - pallet-xcm-benchmarks
0.9.43 - parity-scale-codec
3.6.4 - polkadot-primitives
0.9.43 - polkadot-runtime-common
0.9.43 - polkadot-runtime-parachains
0.9.43 - rustc-hex
2.1.0 - scale-info
2.9.0 - serde
1.0.183 - serde_derive
1.0.183 - smallvec
1.11.0 - sp-api
4.0.0-dev - sp-arithmetic
6.0.0 - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-beefy
4.0.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
5.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - static_assertions
1.1.0 - substrate-wasm-builder
5.0.0-dev - xcm
0.9.43 - xcm-builder
0.9.43 - xcm-executor
0.9.43
- bitvec
kusama-runtime-constants
0.9.43github.com/paritytech/polkadot↘ 7↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends onused bykvdb
0.13.0crates.io↘ 1↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume7d770dcb02bf6835887c3a979b5107a04ff4bbde97a5f0928d27404a155add9depends onkvdb-memorydb
0.13.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbf7a85fe66f9ff9cd74e169fdd2c94c6e1e74c412c99a73b4df3200b5d3760b2depends onused bykvdb-rocksdb
0.19.0crates.io↘ 6↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb644c70b92285f66bfc2032922a79000ea30af7bc2ab31902992a5dcb9b434f6lazy_static
1.4.0crates.io↘ 0↖ 26sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646used by- Inflector
0.11.4 - bindgen
0.65.1 - console
0.15.7 - frame-benchmarking-cli
4.0.0-dev - mockall
0.11.4 - polkadot-node-jaeger
0.9.43 - prometheus
0.13.3 - prost-build
0.11.9 - sc-tracing
4.0.0-dev - sc-utils
4.0.0-dev - sharded-slab
0.1.4 - sp-consensus-beefy
4.0.0-dev - sp-core
7.0.0 - sp-keyring
7.0.0 - sp-panic-handler
5.0.0 - sp-trie
7.0.0 - spinners
4.1.0 - stun
0.4.4 - tracing-log
0.1.3 - tracing-subscriber
0.2.25 - trust-dns-proto
0.22.0 - trust-dns-resolver
0.22.0 - webrtc
0.6.0 - webrtc-util
0.7.0 - x509-parser
0.13.2 - x509-parser
0.14.0
- Inflector
lazycell
1.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55used bylibc
0.2.147crates.io↘ 0↖ 78sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3used by- android_system_properties
0.1.5 - atty
0.2.14 - backtrace
0.3.68 - bzip2-sys
0.1.11+1.0.8 - cc
1.0.82 - clang-sys
1.6.1 - coarsetime
0.1.23 - console
0.15.7 - core-foundation
0.9.3 - cpu-time
1.0.0 - cpufeatures
0.2.9 - cranelift-native
0.95.1 - dirs-sys
0.3.7 - dirs-sys-next
0.1.2 - errno
0.3.2 - errno-dragonfly
0.1.2 - fdlimit
0.2.1 - filetime
0.2.22 - fs2
0.4.3 - gethostname
0.2.3 - getrandom
0.1.16 - getrandom
0.2.10 - hermit-abi
0.1.19 - hostname
0.3.1 - if-addrs
0.7.0 - io-lifetimes
1.0.11 - jobserver
0.1.26 - libp2p-tcp
0.39.0 - librocksdb-sys
0.11.0+8.1.1 - lz4
1.24.0 - lz4-sys
1.9.4 - mach
0.3.2 - memmap2
0.5.10 - mio
0.8.8 - netlink-packet-core
0.4.2 - netlink-packet-route
0.12.0 - netlink-sys
0.8.5 - nix
0.24.3 - num_cpus
1.16.0 - parity-db
0.4.10 - parking_lot_core
0.8.6 - parking_lot_core
0.9.8 - polkadot-node-core-pvf
0.9.43 - polkadot-node-core-pvf-worker
0.9.43 - polling
2.8.0 - rand
0.7.3 - rand
0.8.5 - ring
0.16.20 - rocksdb
0.21.0 - rpassword
7.2.0 - rtoolbox
0.0.1 - rustix
0.36.15 - rustix
0.37.23 - rustix
0.38.8 - sc-executor-wasmtime
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-tracing
4.0.0-dev - security-framework
2.9.2 - security-framework-sys
2.9.1 - signal-hook-registry
1.4.1 - socket2
0.4.9 - socket2
0.5.3 - static_init
0.5.2 - static_init
1.0.3 - system-configuration-sys
0.5.0 - tikv-jemalloc-ctl
0.5.4 - tikv-jemalloc-sys
0.5.4+5.3.0-patched - time
0.1.45 - tokio
1.31.0 - wasm-opt
0.112.0 - wasmtime
8.0.1 - wasmtime-jit-icache-coherence
8.0.1 - wasmtime-runtime
8.0.1 - webrtc-util
0.7.0 - which
4.4.0 - zstd-safe
5.0.2+zstd.1.5.2 - zstd-safe
6.0.6 - zstd-sys
2.0.8+zstd.1.5.5
- android_system_properties
libloading
0.7.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9fdepends onused bylibm
0.1.4crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7fc7aa29613bd6a620df431842069224d8bc9011086b1db4c0e0cd47fa03ec9aused bylibm
0.2.7crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4used bylibp2p
0.51.3crates.io↘ 26↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf210d259724eae82005b5c48078619b7745edb7b76de370b03f8ba59ea103097depends on- bytes
1.4.0 - futures
0.3.28 - futures-timer
3.0.2 - getrandom
0.2.10 - instant
0.1.12 - libp2p-allow-block-list
0.1.1 - libp2p-connection-limits
0.1.0 - libp2p-core
0.39.2 - libp2p-dns
0.39.0 - libp2p-identify
0.42.2 - libp2p-identity
0.1.2 - libp2p-kad
0.43.3 - libp2p-mdns
0.43.1 - libp2p-metrics
0.12.0 - libp2p-noise
0.42.2 - libp2p-ping
0.42.0 - libp2p-quic
0.7.0-alpha.3 - libp2p-request-response
0.24.1 - libp2p-swarm
0.42.2 - libp2p-tcp
0.39.0 - libp2p-wasm-ext
0.39.0 - libp2p-webrtc
0.4.0-alpha.4 - libp2p-websocket
0.41.0 - libp2p-yamux
0.43.1 - multiaddr
0.17.1 - pin-project
1.1.3
- bytes
libp2p-allow-block-list
0.1.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum510daa05efbc25184458db837f6f9a5143888f1caa742426d92e1833ddd38a50used bylibp2p-connection-limits
0.1.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4caa33f1d26ed664c4fe2cca81a08c8e07d4c1c04f2f4ac7655c2dd85467fda0used bylibp2p-core
0.39.2crates.io↘ 20↖ 19sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3c1df63c0b582aa434fb09b2d86897fa2b419ffeccf934b36f87fcedc8e835c2depends onused by- libp2p
0.51.3 - libp2p-allow-block-list
0.1.1 - libp2p-connection-limits
0.1.0 - libp2p-dns
0.39.0 - libp2p-identify
0.42.2 - libp2p-kad
0.43.3 - libp2p-mdns
0.43.1 - libp2p-metrics
0.12.0 - libp2p-noise
0.42.2 - libp2p-ping
0.42.0 - libp2p-quic
0.7.0-alpha.3 - libp2p-request-response
0.24.1 - libp2p-swarm
0.42.2 - libp2p-tcp
0.39.0 - libp2p-tls
0.1.0 - libp2p-wasm-ext
0.39.0 - libp2p-webrtc
0.4.0-alpha.4 - libp2p-websocket
0.41.0 - libp2p-yamux
0.43.1
- libp2p
libp2p-dns
0.39.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum146ff7034daae62077c415c2376b8057368042df6ab95f5432ad5e88568b1554depends onused bylibp2p-identify
0.42.2crates.io↘ 14↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5455f472243e63b9c497ff320ded0314254a9eb751799a39c283c6f20b793f3cdepends onlibp2p-identity
0.1.2crates.io↘ 10↖ 19sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9e2d584751cecb2aabaa56106be6be91338a60a0f4e420cf2af639204f596fc1depends onused by- libp2p
0.51.3 - libp2p-allow-block-list
0.1.1 - libp2p-connection-limits
0.1.0 - libp2p-core
0.39.2 - libp2p-identify
0.42.2 - libp2p-kad
0.43.3 - libp2p-mdns
0.43.1 - libp2p-noise
0.42.2 - libp2p-quic
0.7.0-alpha.3 - libp2p-request-response
0.24.1 - libp2p-swarm
0.42.2 - libp2p-tls
0.1.0 - libp2p-webrtc
0.4.0-alpha.4 - sc-cli
0.10.0-dev - sc-consensus
0.10.0-dev - sc-network-bitswap
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-light
0.10.0-dev - sc-peerset
4.0.0-dev
- libp2p
libp2p-kad
0.43.3crates.io↘ 20↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum39d5ef876a2b2323d63c258e63c2f8e36f205fe5a11f0b3095d59635650790ffdepends onlibp2p-mdns
0.43.1crates.io↘ 13↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum19983e1f949f979a928f2c603de1cf180cc0dc23e4ac93a62651ccb18341460bdepends onused bylibp2p-metrics
0.12.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma42ec91e227d7d0dafa4ce88b333cdf5f277253873ab087555c92798db2ddd46depends onused bylibp2p-noise
0.42.2crates.io↘ 15↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9c3673da89d29936bc6435bafc638e2f184180d554ce844db65915113f86ec5edepends onlibp2p-ping
0.42.0crates.io↘ 9↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3e57759c19c28a73ef1eb3585ca410cefb72c1a709fcf6de1612a378e4219202depends onlibp2p-quic
0.7.0-alpha.3crates.io↘ 14↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc6b26abd81cd2398382a1edfe739b539775be8a90fa6914f39b2ab49571ec735depends onused bylibp2p-request-response
0.24.1crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7ffdb374267d42dc5ed5bc53f6e601d4a64ac5964779c6e40bb9e4f14c1e30d5depends onused bylibp2p-swarm
0.42.2crates.io↘ 13↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum903b3d592d7694e56204d211f29d31bc004be99386644ba8731fc3e3ef27b296depends onlibp2p-swarm-derive
0.32.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0fba456131824ab6acd4c7bf61e9c0f0a3014b5fc9868ccb8e10d344594cdc4fdepends onused bylibp2p-tcp
0.39.0crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum33d33698596d7722d85d3ab0c86c2c322254fce1241e91208e3679b4eb3026cfdepends onused bylibp2p-tls
0.1.0crates.io↘ 11↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumff08d13d0dc66e5e9ba6279c1de417b84fa0d0adc3b03e5732928c180ec02781depends onused bylibp2p-wasm-ext
0.39.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum77dff9d32353a5887adb86c8afc1de1a94d9e8c3bc6df8b2201d7cdf5c848f43depends onused bylibp2p-webrtc
0.4.0-alpha.4crates.io↘ 23↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdba48592edbc2f60b4bc7c10d65445b0c3964c07df26fdf493b6880d33be36f8depends on- async-trait
0.1.73 - asynchronous-codec
0.6.2 - bytes
1.4.0 - futures
0.3.28 - futures-timer
3.0.2 - hex
0.4.3 - if-watch
3.0.1 - libp2p-core
0.39.2 - libp2p-identity
0.1.2 - libp2p-noise
0.42.2 - log
0.4.20 - multihash
0.17.0 - quick-protobuf
0.8.1 - quick-protobuf-codec
0.1.0 - rand
0.8.5 - rcgen
0.9.3 - serde
1.0.183 - stun
0.4.4 - thiserror
1.0.46 - tinytemplate
1.2.1 - tokio
1.31.0 - tokio-util
0.7.8 - webrtc
0.6.0
used by- async-trait
libp2p-websocket
0.41.0crates.io↘ 11↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum111273f7b3d3510524c752e8b7a5314b7f7a1fee7e68161c01a7d72cbb06db9fdepends onused bylibp2p-yamux
0.43.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4dcd21d950662700a385d4c6d68e2f5f54d778e97068cdd718522222ef513bdaused bylibrocksdb-sys
0.11.0+8.1.1crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd3386f101bcb4bd252d8e9d2fb41ec3b0862a15a62b478c355b2982efa469e3edepends onused bylibsecp256k1
0.7.1crates.io↘ 11↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum95b09eff1b35ed3b33b877ced3a691fc7a481919c7e29c53c906226fcf55e2a1depends onlibsecp256k1-core
0.3.0crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5be9b9bb642d8522a44d533eab56c16c738301965504753b03ad1de3425d5451depends onlibsecp256k1-gen-ecmult
0.3.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3038c808c55c87e8a172643a7d87187fc6c4174468159cb3090659d55bcb4809depends onused bylibsecp256k1-gen-genmult
0.3.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3db8d6ba2cec9eacc40e6e8ccc98931840301f1006e95647ceb2dd5c3aa06f7cdepends onused bylibz-sys
1.1.12crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd97137b25e321a73eef1418d1d5d2eda4d77e12813f8e6dead84bc52c5870a7bdepends onlink-cplusplus
1.0.9crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9d240c6f7e1ba3a28b0249f774e6a9dd0175054b52dfbb61b16eb8505c3785c9depends onused bylinked_hash_set
0.1.4crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum47186c6da4d81ca383c7c47c1bfc80f4b95f4720514d860a5407aaf4233f9588depends onused bylinked-hash-map
0.5.6crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770flinregress
0.5.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4de0b5f52a9f84544d268f5fabb71b38962d6aa3c6600b8bcd27d44ccf9c9c45depends onused bylinux-raw-sys
0.1.4crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4used bylinux-raw-sys
0.3.8crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519used bylinux-raw-sys
0.4.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503used bylock_api
0.4.10crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16depends onlog
0.4.20crates.io↘ 0↖ 191sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8fused by- async-io
1.13.0 - binary-merkle-tree
4.0.0-dev - bounded-collections
0.1.8 - cranelift-codegen
0.95.1 - cranelift-frontend
0.95.1 - cranelift-wasm
0.95.1 - cumulus-client-consensus-common
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-utility
0.1.0 - env_logger
0.9.3 - env_logger
0.10.0 - evm
0.39.1 - fc-db
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - file-per-thread-logger
0.1.6 - finality-grandpa
0.16.2 - fp-account
1.0.0-dev - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-remote-externalities
0.10.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - globset
0.4.13 - handlebars
4.3.7 - hyper-rustls
0.23.2 - if-watch
3.0.1 - interceptor
0.8.2 - kusama-runtime
0.9.43 - libp2p-core
0.39.2 - libp2p-dns
0.39.0 - libp2p-identify
0.42.2 - libp2p-identity
0.1.2 - libp2p-kad
0.43.3 - libp2p-mdns
0.43.1 - libp2p-noise
0.42.2 - libp2p-ping
0.42.0 - libp2p-quic
0.7.0-alpha.3 - libp2p-swarm
0.42.2 - libp2p-tcp
0.39.0 - libp2p-webrtc
0.4.0-alpha.4 - libp2p-websocket
0.41.0 - libp2p-yamux
0.43.1 - mmr-gadget
4.0.0-dev - multiaddr
0.17.1 - multistream-select
0.12.1 - netlink-proto
0.10.0 - netlink-sys
0.8.5 - opal-runtime
0.9.43 - pallet-app-promotion
0.2.1 - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collator-selection
5.0.0 - pallet-collective
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-evm
6.0.0-dev - pallet-fast-unstake
4.0.0-dev - pallet-foreign-assets
0.1.0 - pallet-grandpa
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-membership
4.0.0-dev - pallet-message-queue
7.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-staking-reward-fn
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-structure
0.1.2 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-unique
0.2.1 - pallet-unique-scheduler-v2
0.1.0 - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.43 - pallet-xcm-benchmarks
0.9.43 - parity-db
0.4.10 - polkadot-cli
0.9.43 - polkadot-node-jaeger
0.9.43 - polkadot-node-metrics
0.9.43 - polkadot-performance-test
0.9.43 - polkadot-runtime
0.9.43 - polkadot-runtime-common
0.9.43 - polkadot-runtime-parachains
0.9.43 - polkadot-service
0.9.43 - polling
2.8.0 - prost-build
0.11.9 - quartz-runtime
0.9.43 - regalloc2
0.6.1 - rococo-runtime
0.9.43 - rtnetlink
0.10.1 - rustls
0.19.1 - rustls
0.20.8 - sc-allocator
4.1.0-dev - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-beefy
4.0.0-dev - sc-consensus-beefy-rpc
4.0.0-dev - sc-consensus-grandpa
0.10.0-dev - sc-consensus-grandpa-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-executor-wasmtime
0.10.0-dev - sc-informant
0.10.0-dev - sc-network
0.10.0-dev - sc-network-bitswap
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-peerset
4.0.0-dev - sc-proposer-metrics
0.10.0-dev - sc-rpc
4.0.0-dev - sc-rpc-server
4.0.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sc-state-db
0.10.0-dev - sc-storage-monitor
0.1.0 - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sc-utils
4.0.0-dev - soketto
0.7.1 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-grandpa
4.0.0-dev - sp-core
7.0.0 - sp-io
7.0.0 - sp-mmr-primitives
4.0.0-dev - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - sp-statement-store
4.0.0-dev - sp-timestamp
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - sp-wasm-interface
7.0.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-prometheus-endpoint
0.10.0-dev - substrate-rpc-client
0.10.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - thrift
0.15.0 - tracing
0.1.37 - tracing-log
0.1.3 - trie-db
0.24.0 - trie-db
0.27.1 - try-runtime-cli
0.10.0-dev - turn
0.6.1 - unique-node
0.9.43 - unique-runtime
0.9.43 - wasm-bindgen-backend
0.2.87 - wasmtime
8.0.1 - wasmtime-cache
8.0.1 - wasmtime-cranelift
8.0.1 - wasmtime-environ
8.0.1 - wasmtime-jit
8.0.1 - wasmtime-runtime
8.0.1 - webrtc
0.6.0 - webrtc-data
0.6.0 - webrtc-dtls
0.7.1 - webrtc-ice
0.9.1 - webrtc-mdns
0.5.2 - webrtc-sctp
0.7.0 - webrtc-srtp
0.9.1 - webrtc-util
0.7.0 - westend-runtime
0.9.43 - xcm
0.9.43 - xcm-builder
0.9.43 - xcm-executor
0.9.43 - yamux
0.10.2
- async-io
lru
0.8.1crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb6e8aaa3f231bb4bd57b84b2d5dc3ae7f350265df8aa96492e0bc394a1571909depends onlru
0.9.0crates.io↘ 1↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum71e7d46de488603ffdd5f30afbc64fbba2378214a2c3a2fb83abf3d33126df17depends onused by- cumulus-relay-chain-minimal-node
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - polkadot-availability-distribution
0.9.43 - polkadot-availability-recovery
0.9.43 - polkadot-dispute-distribution
0.9.43 - polkadot-node-core-approval-voting
0.9.43 - polkadot-node-core-dispute-coordinator
0.9.43 - polkadot-node-core-runtime-api
0.9.43 - polkadot-node-subsystem-util
0.9.43 - polkadot-overseer
0.9.43 - polkadot-service
0.9.43
- cumulus-relay-chain-minimal-node
lru
0.10.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum718e8fae447df0c7e1ba7f5189829e63fd536945c8988d61444c19039f16b670depends onused bylru-cache
0.1.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1cdepends onused bylz4
1.24.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7e9e2dd86df36ce760a60f6ff6ad526f7ba1f14ba0356f8254fb6905e6494df1depends onused bylz4-sys
1.9.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum57d27b317e207b10f69f5e75494119e391a96f48861ae870d1da6edac98ca900depends onused bymach
0.3.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afadepends onused bymaplit
1.0.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651dused bymatch_cfg
0.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4used bymatchers
0.0.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf099785f7595cc4b4553a174ce30dd7589ef93391ff414dbb67f62392b9e0ce1depends onused bymatrixmultiply
0.3.7crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum090126dc04f95dc0d1c1c91f61bdd474b3930ca064c1edc8a849da2c6cbe1e77depends onused bymd-5
0.10.5crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9cadepends onmemchr
2.5.0crates.io↘ 0↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566dmemfd
0.6.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumffc89ccdc6e10d6907450f753537ebc5c5d3460d2e4e62ea74bd571db62c0f9edepends onused bymemmap2
0.5.10crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327depends onmemoffset
0.6.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79cedepends onused bymemoffset
0.8.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1depends onused bymemoffset
0.9.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406cdepends onused bymemory_units
0.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3used bymemory-db
0.32.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum808b50db46293432a45e63bc15ea51e0ab4c0a1647b8eb114e31a3e698dd6fbedepends onused bymerlin
2.0.1crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4e261cf0f8b3c42ded9f7d2bb59dea03aa52bc8a1cbc7482f9fc3fd1229d3b42mick-jaeger
0.1.8crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum69672161530e8aeca1d1400fbf3f1a1747ff60ea604265a4e906c2442df20532depends onused byminimal-lexical
0.2.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79aused byminiz_oxide
0.7.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7depends onused bymio
0.8.8crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2used bymmr-gadget
4.0.0-devgithub.com/paritytech/substrate↘ 12↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused bymmr-rpc
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused bymockall
0.11.4crates.io↘ 7↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4c84490118f2ee2d74570d114f3d0493cbf02790df303d2707606c3e14e07c96depends onmockall_derive
0.11.4crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum22ce75669015c4f47b289fd4d4f56e894e4c96003ffdf3ac51313126f94c6cbbused bymultiaddr
0.17.1crates.io↘ 11↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2b36f567c7099511fa8612bbbb52dda2419ce0bdbacf31714e3a5ffdb766d3bddepends onmultibase
0.9.1crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9b3539ec3c1f04ac9748a260728e855f261b4977f5c3406612c884564f329404used bymultihash
0.16.3crates.io↘ 9↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1c346cf9999c631f002d8f977c4eaeaa0e6386f16007202308d0b3757522c2ccdepends onused bymultihash
0.17.0crates.io↘ 5↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum835d6ff01d610179fbce3de1694d007e500bf33a7f29689838941d6bf783ae40multihash-derive
0.8.0crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfc076939022111618a5026d3be019fd8b366e76314538ff9a1b59ffbcbf98bcddepends onmultimap
0.8.3crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6aused bymultistream-select
0.12.1crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc8552ab875c1313b97b8d20cb857b9fd63e2d1d6a0a1b53ce9821e575405f27aused bynalgebra
0.32.3crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum307ed9b18cc2423f29e83f84fd23a8e73628727990181f18641a8b5dc2ab1caadepends onused bynalgebra-macros
0.2.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum91761aed67d03ad966ef783ae962ef9bbaca728d2dd7ceb7939ec110fffad998depends onused bynames
0.13.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume7d66043b25d4a6cccb23619d10c19c25304b355a7dccd4a8e11423dd2382146depends onused bynanorand
0.7.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3netlink-packet-core
0.4.2crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum345b8ab5bd4e71a2986663e88c56856699d060e78e152e6e9d7966fcd5491297netlink-packet-route
0.12.0crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd9ea4302b9759a7a88242299225ea3688e63c85ea136371bb6cf94fd674efaabdepends onused bynetlink-packet-utils
0.5.2crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0ede8a08c71ad5a95cdd0e4e52facd37190977039a4704eb82a283f713747d34netlink-proto
0.10.0crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum65b4b14489ab424703c092062176d52ba55485a89c076b4f9db05092b7223aa6depends onused bynetlink-sys
0.8.5crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6471bf08e7ac0135876a9581bf3217ef0333c191c128d34878079f42ee150411used bynix
0.24.3crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069nohash-hasher
0.2.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451used bynom
7.1.3crates.io↘ 2↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4adepends onnormalize-line-endings
0.3.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5beused bynum_cpus
1.16.0crates.io↘ 2↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43depends onnum_enum
0.5.11crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9depends onnum_enum
0.6.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1depends onused bynum_enum_derive
0.5.11crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799depends onused bynum_enum_derive
0.6.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6used bynum-bigint
0.4.3crates.io↘ 3↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75fnum-complex
0.4.4crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214depends onused bynum-format
0.4.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma652d9771a63711fd3c3deb670acfbe5c30a4072e664d7a3bf5a9e1056ac72c3depends onused bynum-integer
0.1.45crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9depends onnum-rational
0.4.1crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0num-traits
0.2.16crates.io↘ 1↖ 21sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2depends onused by- approx
0.5.1 - asn1-rs
0.3.1 - asn1-rs
0.5.2 - chrono
0.4.26 - der-parser
7.0.0 - der-parser
8.2.0 - finality-grandpa
0.16.2 - float-cmp
0.9.0 - integer-sqrt
0.1.5 - nalgebra
0.32.3 - num-bigint
0.4.3 - num-complex
0.4.4 - num-integer
0.1.45 - num-rational
0.4.1 - ordered-float
1.1.1 - orml-traits
0.4.1-dev - sc-consensus-babe
0.10.0-dev - sc-transaction-pool
4.0.0-dev - simba
0.8.1 - sp-arithmetic
6.0.0 - wasmi_core
0.2.1
- approx
number_prefix
0.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3used byobject
0.30.4crates.io↘ 4↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum03b4680b86d9cfafba8fc491dc9b6df26b68cf40e9e6cd73909194759a63c385object
0.31.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1depends onused byoid-registry
0.4.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum38e20717fa0541f39bd146692035c37bedfa532b3e5071b35761082407546b2adepends onused byoid-registry
0.6.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9bedf36ffb6ba96c2eb7144ef6270557b52e54b20c0a8e1eb2ff99a6c6959bffdepends ononce_cell
1.18.0crates.io↘ 0↖ 22sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576dused by- ahash
0.7.6 - ahash
0.8.3 - clap
4.3.21 - coarsetime
0.1.23 - cxx-build
1.0.105 - frame-support
4.0.0-dev - k256
0.13.1 - libp2p-core
0.39.2 - libp2p-noise
0.42.2 - pest_meta
2.7.2 - proc-macro-crate
1.3.1 - ring
0.16.20 - sc-executor-wasmtime
0.10.0-dev - sc-offchain
4.0.0-dev - sc-tracing
4.0.0-dev - thread_local
1.1.7 - tiny-bip39
1.0.0 - tracing-core
0.1.31 - wasm-bindgen-backend
0.2.87 - wasmtime
8.0.1 - wasmtime-jit-debug
8.0.1 - which
4.4.0
- ahash
opal-runtime
0.9.43workspace↘ 104↖ 2depends on- app-promotion-rpc
0.1.0 - cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-timestamp
0.1.0 - cumulus-primitives-utility
0.1.0 - derivative
2.2.0 - evm-coder
0.4.2 - fp-evm
3.0.0-dev - fp-rpc
3.0.0-dev - fp-self-contained
1.0.0-dev - frame-benchmarking
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - hex-literal
0.4.1 - impl-trait-for-tuples
0.2.2 - log
0.4.20 - num_enum
0.5.11 - orml-tokens
0.4.1-dev - orml-traits
0.4.1-dev - orml-vesting
0.4.1-dev - orml-xcm-support
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-app-promotion
0.2.1 - pallet-aura
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-balances-adapter
0.1.0 - pallet-base-fee
1.0.0 - pallet-collator-selection
5.0.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.14 - pallet-configuration
0.2.0 - pallet-democracy
4.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-evm-precompile-simple
2.0.0-dev - pallet-evm-transaction-payment
0.1.1 - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.11 - pallet-gov-origins
0.2.1 - pallet-identity
4.0.0-dev - pallet-inflation
0.1.1 - pallet-maintenance
0.1.0 - pallet-membership
4.0.0-dev - pallet-nonfungible
0.1.14 - pallet-preimage
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-refungible
0.2.13 - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-structure
0.1.2 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-test-utils
0.1.0 - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.2.1 - pallet-unique-scheduler-v2
0.1.0 - pallet-utility
4.0.0-dev - pallet-xcm
0.9.43 - parachain-info
0.1.0 - parity-scale-codec
3.6.4 - polkadot-parachain
0.9.43 - precompile-utils-macro
0.1.0 - scale-info
2.9.0 - serde
1.0.183 - smallvec
1.11.0 - sp-api
4.0.0-dev - sp-arithmetic
6.0.0 - sp-block-builder
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-std
5.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - substrate-wasm-builder
5.0.0-dev - up-common
0.9.43 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - up-rpc
0.1.3 - up-sponsorship
0.1.0 - xcm
0.9.43 - xcm-builder
0.9.43 - xcm-executor
0.9.43
used by- app-promotion-rpc
opaque-debug
0.2.3crates.io↘ 0↖ 2opaque-debug
0.3.0crates.io↘ 0↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5openssl-probe
0.1.5crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cfused byorchestra
0.0.5crates.io↘ 9↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum227585216d05ba65c7ab0a0450a3cf2cbd81a98862a54c4df8e14d5ac6adb015depends onorchestra-proc-macro
0.0.5crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2871aadd82a2c216ee68a69837a526dfe788ecbe74c4c5038a6acdbff6653066depends onused byordered-float
1.1.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3305af35278dd29f46fcdd139e0b1fbfae2153f0e5928b39b035542dd31e37b7depends onused byorml-tokens
0.4.1-devgithub.com/open-web3-stack/open-runtime-module-library↘ 9↖ 4sourcegit+https://github.com/open-web3-stack/open-runtime-module-library?branch=polkadot-v0.9.43#28a2e6f0df9540d91db4018c7ecebb8bfc217a2adepends onorml-traits
0.4.1-devgithub.com/open-web3-stack/open-runtime-module-library↘ 12↖ 6sourcegit+https://github.com/open-web3-stack/open-runtime-module-library?branch=polkadot-v0.9.43#28a2e6f0df9540d91db4018c7ecebb8bfc217a2adepends onorml-utilities
0.4.1-devgithub.com/open-web3-stack/open-runtime-module-library↘ 7↖ 1sourcegit+https://github.com/open-web3-stack/open-runtime-module-library?branch=polkadot-v0.9.43#28a2e6f0df9540d91db4018c7ecebb8bfc217a2adepends onused byorml-vesting
0.4.1-devgithub.com/open-web3-stack/open-runtime-module-library↘ 8↖ 3sourcegit+https://github.com/open-web3-stack/open-runtime-module-library?branch=polkadot-v0.9.43#28a2e6f0df9540d91db4018c7ecebb8bfc217a2adepends onorml-xcm-support
0.4.1-devgithub.com/open-web3-stack/open-runtime-module-library↘ 7↖ 4sourcegit+https://github.com/open-web3-stack/open-runtime-module-library?branch=polkadot-v0.9.43#28a2e6f0df9540d91db4018c7ecebb8bfc217a2adepends onorml-xtokens
0.4.1-devgithub.com/open-web3-stack/open-runtime-module-library↘ 14↖ 3sourcegit+https://github.com/open-web3-stack/open-runtime-module-library?branch=polkadot-v0.9.43#28a2e6f0df9540d91db4018c7ecebb8bfc217a2adepends onp256
0.11.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum51f44edd08f51e2ade572f141051021c5af22677e42b7dd28a88155151c33594used byp384
0.11.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdfc8c5bf642dde52bb9e87c0ecd8ca5a76faac2eeed98dedb7c717997e1080aaused bypacked_simd_2
0.3.8crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1914cd452d8fccd6f9db48147b29fd4ae05bea9dc5d9ad578509f72415de282depends onused bypallet-app-promotion
0.2.1workspace↘ 16↖ 3depends on- frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.20 - pallet-common
0.1.14 - pallet-configuration
0.2.0 - pallet-evm
6.0.0-dev - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-unique
0.2.1 - parity-scale-codec
3.6.4 - scale-info
2.9.0 - sp-core
7.0.0 - sp-runtime
7.0.0 - sp-std
5.0.0 - up-data-structs
0.2.2
- frame-benchmarking
pallet-aura
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-authority-discovery
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-authorship
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 15sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused by- kusama-runtime
0.9.43 - opal-runtime
0.9.43 - pallet-babe
4.0.0-dev - pallet-beefy
4.0.0-dev - pallet-collator-selection
5.0.0 - pallet-grandpa
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-staking
4.0.0-dev - polkadot-runtime
0.9.43 - polkadot-runtime-common
0.9.43 - polkadot-runtime-parachains
0.9.43 - quartz-runtime
0.9.43 - rococo-runtime
0.9.43 - unique-runtime
0.9.43 - westend-runtime
0.9.43
- kusama-runtime
pallet-babe
4.0.0-devgithub.com/paritytech/substrate↘ 17↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends on- frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.20 - pallet-authorship
4.0.0-dev - pallet-session
4.0.0-dev - pallet-timestamp
4.0.0-dev - parity-scale-codec
3.6.4 - scale-info
2.9.0 - sp-application-crypto
7.0.0 - sp-consensus-babe
0.10.0-dev - sp-core
7.0.0 - sp-io
7.0.0 - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
5.0.0
- frame-benchmarking
pallet-bags-list
4.0.0-devgithub.com/paritytech/substrate↘ 13↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-balances
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 20sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused by- kusama-runtime
0.9.43 - opal-runtime
0.9.43 - pallet-bags-list
4.0.0-dev - pallet-balances-adapter
0.1.0 - pallet-collator-selection
5.0.0 - pallet-foreign-assets
0.1.0 - pallet-identity
4.0.0-dev - pallet-inflation
0.1.1 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-treasury
4.0.0-dev - polkadot-runtime
0.9.43 - polkadot-runtime-common
0.9.43 - polkadot-runtime-parachains
0.9.43 - quartz-runtime
0.9.43 - rococo-runtime
0.9.43 - tests
0.1.1 - unique-runtime
0.9.43 - westend-runtime
0.9.43
- kusama-runtime
pallet-balances-adapter
0.1.0workspace↘ 15↖ 5depends on- evm-coder
0.4.2 - frame-support
4.0.0-dev - frame-system
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-common
0.1.14 - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-transaction-payment
0.1.1 - pallet-structure
0.1.2 - parity-scale-codec
3.6.4 - scale-info
2.9.0 - sp-core
7.0.0 - sp-runtime
7.0.0 - sp-std
5.0.0 - up-data-structs
0.2.2
- evm-coder
pallet-base-fee
1.0.0github.com/uniquenetwork/unique-frontier↘ 7↖ 3sourcegit+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.43#3ae25048cce709349b242e8ad3c54ada2b321564depends onpallet-beefy
4.0.0-devgithub.com/paritytech/substrate↘ 12↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-beefy-mmr
4.0.0-devgithub.com/paritytech/substrate↘ 17↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused bypallet-bounties
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-child-bounties
4.0.0-devgithub.com/paritytech/substrate↘ 12↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-collator-selection
5.0.0workspace↘ 20↖ 3depends on- frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.20 - pallet-aura
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-session
4.0.0-dev - pallet-timestamp
4.0.0-dev - parity-scale-codec
3.6.4 - rand
0.8.5 - scale-info
2.9.0 - serde
1.0.183 - sp-consensus-aura
0.10.0-dev - sp-core
7.0.0 - sp-io
7.0.0 - sp-runtime
7.0.0 - sp-staking
4.0.0-dev - sp-std
5.0.0 - sp-tracing
6.0.0
- frame-benchmarking
pallet-collective
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-common
0.1.14workspace↘ 15↖ 14depends onused bypallet-configuration
0.2.0workspace↘ 14↖ 4depends onpallet-conviction-voting
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-democracy
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-election-provider-multi-phase
4.0.0-devgithub.com/paritytech/substrate↘ 16↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends on- frame-benchmarking
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.20 - pallet-election-provider-support-benchmarking
4.0.0-dev - parity-scale-codec
3.6.4 - rand
0.8.5 - scale-info
2.9.0 - sp-arithmetic
6.0.0 - sp-core
7.0.0 - sp-io
7.0.0 - sp-npos-elections
4.0.0-dev - sp-runtime
7.0.0 - sp-std
5.0.0 - strum
0.24.1
- frame-benchmarking
pallet-election-provider-support-benchmarking
4.0.0-devgithub.com/paritytech/substrate↘ 6↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-elections-phragmen
5.0.0-devgithub.com/paritytech/substrate↘ 11↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-ethereum
4.0.0-devgithub.com/uniquenetwork/unique-frontier↘ 16↖ 5sourcegit+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.43#3ae25048cce709349b242e8ad3c54ada2b321564depends onpallet-evm
6.0.0-devgithub.com/uniquenetwork/unique-frontier↘ 19↖ 23sourcegit+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.43#3ae25048cce709349b242e8ad3c54ada2b321564depends onused by- app-promotion-rpc
0.1.0 - fc-rpc
2.0.0-dev - opal-runtime
0.9.43 - pallet-app-promotion
0.2.1 - pallet-balances-adapter
0.1.0 - pallet-common
0.1.14 - pallet-ethereum
4.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-evm-transaction-payment
0.1.1 - pallet-fungible
0.1.11 - pallet-nonfungible
0.1.14 - pallet-refungible
0.2.13 - pallet-structure
0.1.2 - pallet-unique
0.2.1 - quartz-runtime
0.9.43 - tests
0.1.1 - uc-rpc
0.1.4 - unique-runtime
0.9.43 - up-common
0.9.43 - up-data-structs
0.2.2 - up-rpc
0.1.3
- app-promotion-rpc
pallet-evm-coder-substrate
0.1.3workspace↘ 13↖ 11depends onpallet-evm-contract-helpers
0.3.0workspace↘ 13↖ 4depends onpallet-evm-migration
0.1.1workspace↘ 10↖ 4pallet-evm-precompile-simple
2.0.0-devgithub.com/uniquenetwork/unique-frontier↘ 3↖ 3sourcegit+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.43#3ae25048cce709349b242e8ad3c54ada2b321564depends onpallet-evm-transaction-payment
0.1.1workspace↘ 10↖ 5depends onpallet-fast-unstake
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-foreign-assets
0.1.0workspace↘ 16↖ 3depends onpallet-fungible
0.1.11workspace↘ 14↖ 5depends onpallet-gov-origins
0.2.1workspace↘ 4↖ 3pallet-grandpa
4.0.0-devgithub.com/paritytech/substrate↘ 16↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends on- frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.20 - pallet-authorship
4.0.0-dev - pallet-session
4.0.0-dev - parity-scale-codec
3.6.4 - scale-info
2.9.0 - sp-application-crypto
7.0.0 - sp-consensus-grandpa
4.0.0-dev - sp-core
7.0.0 - sp-io
7.0.0 - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
5.0.0
- frame-benchmarking
pallet-identity
4.0.0-devworkspace↘ 11↖ 0pallet-identity
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-im-online
4.0.0-devgithub.com/paritytech/substrate↘ 13↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-indices
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-maintenance
0.1.0workspace↘ 7↖ 3pallet-membership
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-message-queue
7.0.0-devgithub.com/paritytech/substrate↘ 12↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-mmr
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-multisig
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-nis
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-nomination-pools
1.0.0github.com/paritytech/substrate↘ 10↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-nomination-pools-benchmarking
1.0.0github.com/paritytech/substrate↘ 13↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-nomination-pools-runtime-api
1.0.0-devgithub.com/paritytech/substrate↘ 4↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40pallet-nonfungible
0.1.14workspace↘ 15↖ 5depends onpallet-offences
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-offences-benchmarking
4.0.0-devgithub.com/paritytech/substrate↘ 17↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends on- frame-benchmarking
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.20 - pallet-babe
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-offences
4.0.0-dev - pallet-session
4.0.0-dev - pallet-staking
4.0.0-dev - parity-scale-codec
3.6.4 - scale-info
2.9.0 - sp-runtime
7.0.0 - sp-staking
4.0.0-dev - sp-std
5.0.0
- frame-benchmarking
pallet-preimage
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-proxy
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-ranked-collective
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-recovery
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-referenda
4.0.0-devgithub.com/paritytech/substrate↘ 12↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-refungible
0.2.13workspace↘ 14↖ 5depends onpallet-scheduler
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-session
4.0.0-devgithub.com/paritytech/substrate↘ 14↖ 18sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused by- kusama-runtime
0.9.43 - opal-runtime
0.9.43 - pallet-authority-discovery
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-collator-selection
5.0.0 - pallet-grandpa
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-staking
4.0.0-dev - polkadot-runtime
0.9.43 - polkadot-runtime-common
0.9.43 - polkadot-runtime-parachains
0.9.43 - quartz-runtime
0.9.43 - rococo-runtime
0.9.43 - unique-runtime
0.9.43 - westend-runtime
0.9.43
- kusama-runtime
pallet-session-benchmarking
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-society
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-staking
4.0.0-devgithub.com/paritytech/substrate↘ 16↖ 10sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends on- frame-benchmarking
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.20 - pallet-authorship
4.0.0-dev - pallet-session
4.0.0-dev - parity-scale-codec
3.6.4 - rand_chacha
0.2.2 - scale-info
2.9.0 - serde
1.0.183 - sp-application-crypto
7.0.0 - sp-io
7.0.0 - sp-runtime
7.0.0 - sp-staking
4.0.0-dev - sp-std
5.0.0
- frame-benchmarking
pallet-staking-reward-curve
4.0.0-devgithub.com/paritytech/substrate↘ 4↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40pallet-staking-reward-fn
4.0.0-devgithub.com/paritytech/substrate↘ 2↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-staking-runtime-api
4.0.0-devgithub.com/paritytech/substrate↘ 2↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-state-trie-migration
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-structure
0.1.2workspace↘ 10↖ 8depends onpallet-sudo
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-template-transaction-payment
3.0.0github.com/uniquenetwork/pallet-sponsoring↘ 13↖ 3sourcegit+https://github.com/uniquenetwork/pallet-sponsoring?branch=polkadot-v0.9.43#bd6e4a2a97b1415c22f96512b857d9615cbe2f81depends onpallet-test-utils
0.1.0workspace↘ 6↖ 3pallet-timestamp
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 14sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused by- kusama-runtime
0.9.43 - opal-runtime
0.9.43 - pallet-aura
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-collator-selection
5.0.0 - pallet-session
4.0.0-dev - polkadot-runtime
0.9.43 - polkadot-runtime-common
0.9.43 - polkadot-runtime-parachains
0.9.43 - quartz-runtime
0.9.43 - rococo-runtime
0.9.43 - tests
0.1.1 - unique-runtime
0.9.43 - westend-runtime
0.9.43
- kusama-runtime
pallet-tips
4.0.0-devgithub.com/paritytech/substrate↘ 12↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-transaction-payment
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 13sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused by- kusama-runtime
0.9.43 - opal-runtime
0.9.43 - pallet-template-transaction-payment
3.0.0 - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - polkadot-client
0.9.43 - polkadot-runtime
0.9.43 - polkadot-runtime-common
0.9.43 - quartz-runtime
0.9.43 - rococo-runtime
0.9.43 - tests
0.1.1 - unique-runtime
0.9.43 - westend-runtime
0.9.43 - xcm-builder
0.9.43
- kusama-runtime
pallet-transaction-payment-rpc
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-transaction-payment-rpc-runtime-api
4.0.0-devgithub.com/paritytech/substrate↘ 5↖ 11sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-treasury
4.0.0-devgithub.com/paritytech/substrate↘ 10↖ 11sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-unique
0.2.1workspace↘ 19↖ 5depends on- ethereum
0.14.0 - evm-coder
0.4.2 - frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.20 - pallet-balances-adapter
0.1.0 - pallet-common
0.1.14 - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-nonfungible
0.1.14 - pallet-refungible
0.2.13 - parity-scale-codec
3.6.4 - scale-info
2.9.0 - sp-core
7.0.0 - sp-io
7.0.0 - sp-runtime
7.0.0 - sp-std
5.0.0 - up-data-structs
0.2.2
- ethereum
pallet-unique-scheduler-v2
0.1.0workspace↘ 12↖ 2pallet-utility
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-vesting
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-whitelist
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onpallet-xcm
0.9.43github.com/paritytech/polkadot↘ 14↖ 9sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends onpallet-xcm-benchmarks
0.9.43github.com/paritytech/polkadot↘ 12↖ 3sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends onparachain-info
0.1.0github.com/paritytech/cumulus↘ 5↖ 3sourcegit+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019depends onparity-db
0.4.10crates.io↘ 12↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum78f19d20a0d2cc52327a88d131fa1c4ea81ea4a04714aedcfeca2dd410049cf8depends onparity-scale-codec
3.6.4crates.io↘ 7↖ 245sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdd8e946cc0cc711189c0b0249fb8b599cbeeab9784d83c415719368bb8d4ac64depends onused by- app-promotion-rpc
0.1.0 - bounded-collections
0.1.8 - cumulus-client-cli
0.1.0 - cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-primitives-timestamp
0.1.0 - cumulus-primitives-utility
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - cumulus-test-relay-sproof-builder
0.1.0 - ethereum
0.14.0 - evm
0.39.1 - evm-core
0.39.0 - fc-db
2.0.0-dev - fc-rpc
2.0.0-dev - fc-storage
1.0.0-dev - finality-grandpa
0.16.2 - fork-tree
3.0.0 - fp-account
1.0.0-dev - fp-consensus
2.0.0-dev - fp-ethereum
1.0.0-dev - fp-evm
3.0.0-dev - fp-rpc
3.0.0-dev - fp-self-contained
1.0.0-dev - fp-storage
2.0.0 - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-metadata
15.1.0 - frame-remote-externalities
0.10.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - impl-codec
0.6.0 - kusama-runtime
0.9.43 - mmr-gadget
4.0.0-dev - mmr-rpc
4.0.0-dev - opal-runtime
0.9.43 - orml-tokens
0.4.1-dev - orml-traits
0.4.1-dev - orml-utilities
0.4.1-dev - orml-vesting
0.4.1-dev - orml-xcm-support
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-app-promotion
0.2.1 - pallet-aura
4.0.0-dev - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-balances-adapter
0.1.0 - pallet-base-fee
1.0.0 - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collator-selection
5.0.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.14 - pallet-configuration
0.2.0 - pallet-conviction-voting
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-election-provider-support-benchmarking
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-evm-transaction-payment
0.1.1 - pallet-fast-unstake
4.0.0-dev - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.11 - pallet-gov-origins
0.2.1 - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-maintenance
0.1.0 - pallet-membership
4.0.0-dev - pallet-message-queue
7.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nis
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nomination-pools-runtime-api
1.0.0-dev - pallet-nonfungible
0.1.14 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-refungible
0.2.13 - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-staking-runtime-api
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-structure
0.1.2 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-test-utils
0.1.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.2.1 - pallet-unique-scheduler-v2
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-whitelist
4.0.0-dev - pallet-xcm
0.9.43 - pallet-xcm-benchmarks
0.9.43 - parachain-info
0.1.0 - polkadot-availability-distribution
0.9.43 - polkadot-availability-recovery
0.9.43 - polkadot-core-primitives
0.9.43 - polkadot-dispute-distribution
0.9.43 - polkadot-erasure-coding
0.9.43 - polkadot-network-bridge
0.9.43 - polkadot-node-collation-generation
0.9.43 - polkadot-node-core-approval-voting
0.9.43 - polkadot-node-core-av-store
0.9.43 - polkadot-node-core-candidate-validation
0.9.43 - polkadot-node-core-chain-selection
0.9.43 - polkadot-node-core-dispute-coordinator
0.9.43 - polkadot-node-core-pvf
0.9.43 - polkadot-node-core-pvf-worker
0.9.43 - polkadot-node-jaeger
0.9.43 - polkadot-node-metrics
0.9.43 - polkadot-node-network-protocol
0.9.43 - polkadot-node-primitives
0.9.43 - polkadot-node-subsystem-util
0.9.43 - polkadot-parachain
0.9.43 - polkadot-primitives
0.9.43 - polkadot-runtime
0.9.43 - polkadot-runtime-common
0.9.43 - polkadot-runtime-metrics
0.9.43 - polkadot-runtime-parachains
0.9.43 - polkadot-statement-distribution
0.9.43 - polkadot-statement-table
0.9.43 - quartz-runtime
0.9.43 - rococo-runtime
0.9.43 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-block-builder
0.10.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-beefy
4.0.0-dev - sc-consensus-beefy-rpc
4.0.0-dev - sc-consensus-epochs
0.10.0-dev - sc-consensus-grandpa
0.10.0-dev - sc-consensus-grandpa-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-executor
0.10.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-offchain
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sc-state-db
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-transaction-pool
4.0.0-dev - scale-info
2.9.0 - slot-range-helper
0.9.43 - sp-api
4.0.0-dev - sp-application-crypto
7.0.0 - sp-arithmetic
6.0.0 - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-beefy
4.0.0-dev - sp-consensus-grandpa
4.0.0-dev - sp-consensus-slots
0.10.0-dev - sp-core
7.0.0 - sp-externalities
0.13.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-keystore
0.13.0 - sp-metadata-ir
0.1.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-runtime
7.0.0 - sp-runtime-interface
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-state-machine
0.13.0 - sp-statement-store
4.0.0-dev - sp-storage
7.0.0 - sp-timestamp
4.0.0-dev - sp-tracing
6.0.0 - sp-transaction-storage-proof
4.0.0-dev - sp-trie
7.0.0 - sp-version
5.0.0 - sp-version-proc-macro
4.0.0-dev - sp-wasm-interface
7.0.0 - sp-weights
4.0.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - tests
0.1.1 - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.4 - unique-node
0.9.43 - unique-runtime
0.9.43 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - up-rpc
0.1.3 - westend-runtime
0.9.43 - xcm
0.9.43 - xcm-builder
0.9.43 - xcm-executor
0.9.43
- app-promotion-rpc
parity-scale-codec-derive
3.6.4crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2a296c3079b5fefbc499e1de58dc26c09b1b9a5952d26694ee89f04a43ebbb3eused byparity-send-wrapper
0.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaa9777aa91b8ad9dd5aaa04a9b6bcb02c7f1deb952fca5a66034d5e63afc5c6fused byparity-wasm
0.45.0crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume1ad0aff30c1da14b1254fcb2af73e1fa9a28670e584a626f53a369d0e157304parking
2.1.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum14f2252c834a40ed9bb5422029649578e63aa341ac401f74e719dd1afda8394eparking_lot
0.11.2crates.io↘ 3↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99parking_lot
0.12.1crates.io↘ 2↖ 47sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228fdepends onused by- cumulus-client-collator
0.1.0 - cumulus-client-network
0.1.0 - fc-db
2.0.0-dev - fc-mapping-sync
2.0.0-dev - finality-grandpa
0.16.2 - jsonrpsee-core
0.16.2 - kvdb-memorydb
0.13.0 - kvdb-rocksdb
0.19.0 - libp2p-core
0.39.2 - libp2p-dns
0.39.0 - libp2p-quic
0.7.0-alpha.3 - libp2p-websocket
0.41.0 - parity-db
0.4.10 - polkadot-network-bridge
0.9.43 - polkadot-node-jaeger
0.9.43 - polkadot-overseer
0.9.43 - prometheus
0.13.3 - prometheus-client
0.19.0 - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-beefy
4.0.0-dev - sc-consensus-beefy-rpc
4.0.0-dev - sc-consensus-grandpa
0.10.0-dev - sc-executor
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-offchain
4.0.0-dev - sc-peerset
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sc-state-db
0.10.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-utils
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
7.0.0 - sp-database
4.0.0-dev - sp-keystore
0.13.0 - sp-state-machine
0.13.0 - sp-trie
7.0.0 - tokio
1.31.0 - trust-dns-resolver
0.22.0 - yamux
0.10.2
- cumulus-client-collator
parking_lot_core
0.8.6crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dcparking_lot_core
0.9.8crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447used bypartial_sort
0.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7924d1d0ad836f665c9065e26d016c673ece3993f30d340068b16f282afc1156used bypaste
1.0.14crates.io↘ 0↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumde3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4cpbkdf2
0.8.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd95f5254224e617595d2cc3cc73ff0a5eaf2637519e25f03388154e9378b6ffadepends onused bypbkdf2
0.11.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917depends onused bypeeking_take_while
0.1.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099used bypem
1.1.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8depends onused bypem-rfc7468
0.6.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum24d159833a9105500e0398934e205e0773f0b27529557134ecfc51c27646adacdepends onused bypercent-encoding
2.3.0crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94pest
2.7.2crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1acb4a4365a13f749a93f1a094a7805e5cfa0955373a9de860d962eaa3a5fe5adepends onpest_derive
2.7.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum666d00490d4ac815001da55838c500eafb0320019bbaa44444137c48b443a853depends onused bypest_generator
2.7.2crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum68ca01446f50dbda87c1786af8770d535423fa8a53aec03b8f4e3d7eb10e0929used bypest_meta
2.7.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum56af0a30af74d0445c0bf6d9d051c979b516a1a5af790d251daee76005420a48depends onused bypetgraph
0.6.3crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4depends onpin-project
1.1.3crates.io↘ 1↖ 14sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422depends onused by- jsonrpsee-client-transport
0.16.2 - libp2p
0.51.3 - libp2p-core
0.39.2 - multistream-select
0.12.1 - orchestra
0.0.5 - polkadot-node-core-pvf
0.9.43 - polkadot-node-subsystem-util
0.9.43 - rw-stream-sink
0.3.0 - sc-network
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-service
0.10.0-dev - sc-telemetry
4.0.0-dev - tokio-retry
0.3.0 - tracing-futures
0.2.5
- jsonrpsee-client-transport
pin-project-internal
1.1.3crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405depends onused bypin-project-lite
0.1.12crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777used bypin-project-lite
0.2.12crates.io↘ 0↖ 11sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum12cc1b0bf1727a77a54b6654e7b5f1af8604923edc8b81885f8ec92f9e3f0a05pin-utils
0.1.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184pkcs8
0.9.0crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4bapkcs8
0.10.2crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7pkg-config
0.3.27crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964platforms
2.0.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume8d0eef3571242013a0d5dc84861c3ae4a652e56e12adf8bdc26ff5f8cb34c94platforms
3.0.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume3d7ddaed09e0eb771a79ab0fd64609ba0afb0a8366421957936ad14cbd13630used bypolkadot-approval-distribution
0.9.43github.com/paritytech/polkadot↘ 9↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends onused bypolkadot-availability-bitfield-distribution
0.9.43github.com/paritytech/polkadot↘ 7↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends onused bypolkadot-availability-distribution
0.9.43github.com/paritytech/polkadot↘ 16↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends on- derive_more
0.99.17 - fatality
0.0.6 - futures
0.3.28 - lru
0.9.0 - parity-scale-codec
3.6.4 - polkadot-erasure-coding
0.9.43 - polkadot-node-network-protocol
0.9.43 - polkadot-node-primitives
0.9.43 - polkadot-node-subsystem
0.9.43 - polkadot-node-subsystem-util
0.9.43 - polkadot-primitives
0.9.43 - rand
0.8.5 - sp-core
7.0.0 - sp-keystore
0.13.0 - thiserror
1.0.46 - tracing-gum
0.9.43
used by- derive_more
polkadot-availability-recovery
0.9.43github.com/paritytech/polkadot↘ 14↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends on- fatality
0.0.6 - futures
0.3.28 - lru
0.9.0 - parity-scale-codec
3.6.4 - polkadot-erasure-coding
0.9.43 - polkadot-node-network-protocol
0.9.43 - polkadot-node-primitives
0.9.43 - polkadot-node-subsystem
0.9.43 - polkadot-node-subsystem-util
0.9.43 - polkadot-primitives
0.9.43 - rand
0.8.5 - sc-network
0.10.0-dev - thiserror
1.0.46 - tracing-gum
0.9.43
- fatality
polkadot-cli
0.9.43github.com/paritytech/polkadot↘ 22↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends on- clap
4.3.21 - frame-benchmarking-cli
4.0.0-dev - futures
0.3.28 - log
0.4.20 - polkadot-client
0.9.43 - polkadot-node-core-pvf-worker
0.9.43 - polkadot-node-metrics
0.9.43 - polkadot-performance-test
0.9.43 - polkadot-service
0.9.43 - sc-cli
0.10.0-dev - sc-executor
0.10.0-dev - sc-service
0.10.0-dev - sc-storage-monitor
0.1.0 - sc-sysinfo
6.0.0-dev - sc-tracing
4.0.0-dev - sp-core
7.0.0 - sp-io
7.0.0 - sp-keyring
7.0.0 - sp-maybe-compressed-blob
4.1.0-dev - substrate-build-script-utils
3.0.0 - thiserror
1.0.46 - try-runtime-cli
0.10.0-dev
- clap
polkadot-client
0.9.43github.com/paritytech/polkadot↘ 35↖ 3sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends on- async-trait
0.1.73 - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-system
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - futures
0.3.28 - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - polkadot-core-primitives
0.9.43 - polkadot-node-core-parachains-inherent
0.9.43 - polkadot-primitives
0.9.43 - polkadot-runtime
0.9.43 - polkadot-runtime-common
0.9.43 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-executor
0.10.0-dev - sc-service
0.10.0-dev - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-beefy
4.0.0-dev - sp-consensus-grandpa
4.0.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-keyring
7.0.0 - sp-mmr-primitives
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-storage
7.0.0 - sp-timestamp
4.0.0-dev - sp-transaction-pool
4.0.0-dev
- async-trait
polkadot-collator-protocol
0.9.43github.com/paritytech/polkadot↘ 15↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends on- always-assert
0.1.3 - bitvec
1.0.1 - fatality
0.0.6 - futures
0.3.28 - futures-timer
3.0.2 - polkadot-node-network-protocol
0.9.43 - polkadot-node-primitives
0.9.43 - polkadot-node-subsystem
0.9.43 - polkadot-node-subsystem-util
0.9.43 - polkadot-primitives
0.9.43 - sp-core
7.0.0 - sp-keystore
0.13.0 - sp-runtime
7.0.0 - thiserror
1.0.46 - tracing-gum
0.9.43
- always-assert
polkadot-core-primitives
0.9.43github.com/paritytech/polkadot↘ 5↖ 6sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25polkadot-dispute-distribution
0.9.43github.com/paritytech/polkadot↘ 18↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends on- derive_more
0.99.17 - fatality
0.0.6 - futures
0.3.28 - futures-timer
3.0.2 - indexmap
1.9.3 - lru
0.9.0 - parity-scale-codec
3.6.4 - polkadot-erasure-coding
0.9.43 - polkadot-node-network-protocol
0.9.43 - polkadot-node-primitives
0.9.43 - polkadot-node-subsystem
0.9.43 - polkadot-node-subsystem-util
0.9.43 - polkadot-primitives
0.9.43 - sc-network
0.10.0-dev - sp-application-crypto
7.0.0 - sp-keystore
0.13.0 - thiserror
1.0.46 - tracing-gum
0.9.43
used by- derive_more
polkadot-erasure-coding
0.9.43github.com/paritytech/polkadot↘ 7↖ 7sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends onpolkadot-gossip-support
0.9.43github.com/paritytech/polkadot↘ 13↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends onused bypolkadot-network-bridge
0.9.43github.com/paritytech/polkadot↘ 16↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends on- always-assert
0.1.3 - async-trait
0.1.73 - bytes
1.4.0 - fatality
0.0.6 - futures
0.3.28 - parity-scale-codec
3.6.4 - parking_lot
0.12.1 - polkadot-node-metrics
0.9.43 - polkadot-node-network-protocol
0.9.43 - polkadot-node-subsystem
0.9.43 - polkadot-overseer
0.9.43 - polkadot-primitives
0.9.43 - sc-network
0.10.0-dev - sp-consensus
0.10.0-dev - thiserror
1.0.46 - tracing-gum
0.9.43
- always-assert
polkadot-node-collation-generation
0.9.43github.com/paritytech/polkadot↘ 11↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends onpolkadot-node-core-approval-voting
0.9.43github.com/paritytech/polkadot↘ 22↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends on- bitvec
1.0.1 - derive_more
0.99.17 - futures
0.3.28 - futures-timer
3.0.2 - kvdb
0.13.0 - lru
0.9.0 - merlin
2.0.1 - parity-scale-codec
3.6.4 - polkadot-node-jaeger
0.9.43 - polkadot-node-primitives
0.9.43 - polkadot-node-subsystem
0.9.43 - polkadot-node-subsystem-util
0.9.43 - polkadot-overseer
0.9.43 - polkadot-primitives
0.9.43 - sc-keystore
4.0.0-dev - schnorrkel
0.9.1 - sp-application-crypto
7.0.0 - sp-consensus
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-runtime
7.0.0 - thiserror
1.0.46 - tracing-gum
0.9.43
used by- bitvec
polkadot-node-core-av-store
0.9.43github.com/paritytech/polkadot↘ 14↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends onused bypolkadot-node-core-backing
0.9.43github.com/paritytech/polkadot↘ 12↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends onused bypolkadot-node-core-bitfield-signing
0.9.43github.com/paritytech/polkadot↘ 8↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends onused bypolkadot-node-core-candidate-validation
0.9.43github.com/paritytech/polkadot↘ 13↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends on- async-trait
0.1.73 - futures
0.3.28 - futures-timer
3.0.2 - parity-scale-codec
3.6.4 - polkadot-node-core-pvf
0.9.43 - polkadot-node-metrics
0.9.43 - polkadot-node-primitives
0.9.43 - polkadot-node-subsystem
0.9.43 - polkadot-node-subsystem-util
0.9.43 - polkadot-parachain
0.9.43 - polkadot-primitives
0.9.43 - sp-maybe-compressed-blob
4.1.0-dev - tracing-gum
0.9.43
used by- async-trait
polkadot-node-core-chain-api
0.9.43github.com/paritytech/polkadot↘ 8↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends onused bypolkadot-node-core-chain-selection
0.9.43github.com/paritytech/polkadot↘ 10↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends onused bypolkadot-node-core-dispute-coordinator
0.9.43github.com/paritytech/polkadot↘ 12↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends onused bypolkadot-node-core-parachains-inherent
0.9.43github.com/paritytech/polkadot↘ 10↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends onpolkadot-node-core-provisioner
0.9.43github.com/paritytech/polkadot↘ 11↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends onused bypolkadot-node-core-pvf
0.9.43github.com/paritytech/polkadot↘ 20↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends on- always-assert
0.1.3 - futures
0.3.28 - futures-timer
3.0.2 - libc
0.2.147 - parity-scale-codec
3.6.4 - pin-project
1.1.3 - polkadot-core-primitives
0.9.43 - polkadot-node-metrics
0.9.43 - polkadot-node-primitives
0.9.43 - polkadot-parachain
0.9.43 - polkadot-primitives
0.9.43 - rand
0.8.5 - slotmap
1.0.6 - sp-core
7.0.0 - sp-maybe-compressed-blob
4.1.0-dev - sp-tracing
6.0.0 - sp-wasm-interface
7.0.0 - substrate-build-script-utils
3.0.0 - tokio
1.31.0 - tracing-gum
0.9.43
- always-assert
polkadot-node-core-pvf-checker
0.9.43github.com/paritytech/polkadot↘ 9↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends onused bypolkadot-node-core-pvf-worker
0.9.43github.com/paritytech/polkadot↘ 22↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends on- assert_matches
1.5.0 - cpu-time
1.0.0 - futures
0.3.28 - libc
0.2.147 - parity-scale-codec
3.6.4 - polkadot-node-core-pvf
0.9.43 - polkadot-parachain
0.9.43 - polkadot-primitives
0.9.43 - rayon
1.7.0 - sc-executor
0.10.0-dev - sc-executor-common
0.10.0-dev - sc-executor-wasmtime
0.10.0-dev - sp-core
7.0.0 - sp-externalities
0.13.0 - sp-io
7.0.0 - sp-maybe-compressed-blob
4.1.0-dev - sp-tracing
6.0.0 - substrate-build-script-utils
3.0.0 - tempfile
3.7.1 - tikv-jemalloc-ctl
0.5.4 - tokio
1.31.0 - tracing-gum
0.9.43
- assert_matches
polkadot-node-core-runtime-api
0.9.43github.com/paritytech/polkadot↘ 8↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends onpolkadot-node-jaeger
0.9.43github.com/paritytech/polkadot↘ 11↖ 7sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends onpolkadot-node-metrics
0.9.43github.com/paritytech/polkadot↘ 12↖ 9sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends onpolkadot-node-network-protocol
0.9.43github.com/paritytech/polkadot↘ 16↖ 14sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends onused by- cumulus-relay-chain-minimal-node
0.1.0 - polkadot-approval-distribution
0.9.43 - polkadot-availability-bitfield-distribution
0.9.43 - polkadot-availability-distribution
0.9.43 - polkadot-availability-recovery
0.9.43 - polkadot-collator-protocol
0.9.43 - polkadot-dispute-distribution
0.9.43 - polkadot-gossip-support
0.9.43 - polkadot-network-bridge
0.9.43 - polkadot-node-subsystem-types
0.9.43 - polkadot-node-subsystem-util
0.9.43 - polkadot-overseer
0.9.43 - polkadot-service
0.9.43 - polkadot-statement-distribution
0.9.43
- cumulus-relay-chain-minimal-node
polkadot-node-primitives
0.9.43github.com/paritytech/polkadot↘ 15↖ 28sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends onused by- cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - polkadot-approval-distribution
0.9.43 - polkadot-availability-distribution
0.9.43 - polkadot-availability-recovery
0.9.43 - polkadot-collator-protocol
0.9.43 - polkadot-dispute-distribution
0.9.43 - polkadot-erasure-coding
0.9.43 - polkadot-node-collation-generation
0.9.43 - polkadot-node-core-approval-voting
0.9.43 - polkadot-node-core-av-store
0.9.43 - polkadot-node-core-backing
0.9.43 - polkadot-node-core-candidate-validation
0.9.43 - polkadot-node-core-chain-selection
0.9.43 - polkadot-node-core-dispute-coordinator
0.9.43 - polkadot-node-core-provisioner
0.9.43 - polkadot-node-core-pvf
0.9.43 - polkadot-node-core-pvf-checker
0.9.43 - polkadot-node-jaeger
0.9.43 - polkadot-node-network-protocol
0.9.43 - polkadot-node-subsystem-types
0.9.43 - polkadot-node-subsystem-util
0.9.43 - polkadot-overseer
0.9.43 - polkadot-performance-test
0.9.43 - polkadot-service
0.9.43 - polkadot-statement-distribution
0.9.43
- cumulus-client-collator
polkadot-node-subsystem
0.9.43github.com/paritytech/polkadot↘ 3↖ 26sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25used by- cumulus-client-collator
0.1.0 - cumulus-client-pov-recovery
0.1.0 - polkadot-approval-distribution
0.9.43 - polkadot-availability-bitfield-distribution
0.9.43 - polkadot-availability-distribution
0.9.43 - polkadot-availability-recovery
0.9.43 - polkadot-collator-protocol
0.9.43 - polkadot-dispute-distribution
0.9.43 - polkadot-gossip-support
0.9.43 - polkadot-network-bridge
0.9.43 - polkadot-node-collation-generation
0.9.43 - polkadot-node-core-approval-voting
0.9.43 - polkadot-node-core-av-store
0.9.43 - polkadot-node-core-backing
0.9.43 - polkadot-node-core-bitfield-signing
0.9.43 - polkadot-node-core-candidate-validation
0.9.43 - polkadot-node-core-chain-api
0.9.43 - polkadot-node-core-chain-selection
0.9.43 - polkadot-node-core-dispute-coordinator
0.9.43 - polkadot-node-core-parachains-inherent
0.9.43 - polkadot-node-core-provisioner
0.9.43 - polkadot-node-core-pvf-checker
0.9.43 - polkadot-node-core-runtime-api
0.9.43 - polkadot-node-subsystem-util
0.9.43 - polkadot-service
0.9.43 - polkadot-statement-distribution
0.9.43
- cumulus-client-collator
polkadot-node-subsystem-types
0.9.43github.com/paritytech/polkadot↘ 16↖ 4sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends on- async-trait
0.1.73 - derive_more
0.99.17 - futures
0.3.28 - orchestra
0.0.5 - polkadot-node-jaeger
0.9.43 - polkadot-node-network-protocol
0.9.43 - polkadot-node-primitives
0.9.43 - polkadot-primitives
0.9.43 - polkadot-statement-table
0.9.43 - sc-network
0.10.0-dev - smallvec
1.11.0 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-consensus-babe
0.10.0-dev - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.46
- async-trait
polkadot-node-subsystem-util
0.9.43github.com/paritytech/polkadot↘ 26↖ 19sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends on- async-trait
0.1.73 - derive_more
0.99.17 - fatality
0.0.6 - futures
0.3.28 - futures-channel
0.3.28 - itertools
0.10.5 - kvdb
0.13.0 - lru
0.9.0 - parity-db
0.4.10 - parity-scale-codec
3.6.4 - parking_lot
0.11.2 - pin-project
1.1.3 - polkadot-node-jaeger
0.9.43 - polkadot-node-metrics
0.9.43 - polkadot-node-network-protocol
0.9.43 - polkadot-node-primitives
0.9.43 - polkadot-node-subsystem
0.9.43 - polkadot-overseer
0.9.43 - polkadot-primitives
0.9.43 - prioritized-metered-channel
0.2.0 - rand
0.8.5 - sp-application-crypto
7.0.0 - sp-core
7.0.0 - sp-keystore
0.13.0 - thiserror
1.0.46 - tracing-gum
0.9.43
used by- cumulus-relay-chain-minimal-node
0.1.0 - polkadot-availability-bitfield-distribution
0.9.43 - polkadot-availability-distribution
0.9.43 - polkadot-availability-recovery
0.9.43 - polkadot-collator-protocol
0.9.43 - polkadot-dispute-distribution
0.9.43 - polkadot-gossip-support
0.9.43 - polkadot-node-collation-generation
0.9.43 - polkadot-node-core-approval-voting
0.9.43 - polkadot-node-core-av-store
0.9.43 - polkadot-node-core-backing
0.9.43 - polkadot-node-core-bitfield-signing
0.9.43 - polkadot-node-core-candidate-validation
0.9.43 - polkadot-node-core-chain-selection
0.9.43 - polkadot-node-core-dispute-coordinator
0.9.43 - polkadot-node-core-provisioner
0.9.43 - polkadot-node-core-pvf-checker
0.9.43 - polkadot-service
0.9.43 - polkadot-statement-distribution
0.9.43
- async-trait
polkadot-overseer
0.9.43github.com/paritytech/polkadot↘ 16↖ 14sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends on- async-trait
0.1.73 - futures
0.3.28 - futures-timer
3.0.2 - lru
0.9.0 - orchestra
0.0.5 - parking_lot
0.12.1 - polkadot-node-metrics
0.9.43 - polkadot-node-network-protocol
0.9.43 - polkadot-node-primitives
0.9.43 - polkadot-node-subsystem-types
0.9.43 - polkadot-primitives
0.9.43 - sc-client-api
4.0.0-dev - sp-api
4.0.0-dev - sp-core
7.0.0 - tikv-jemalloc-ctl
0.5.4 - tracing-gum
0.9.43
used by- cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - polkadot-network-bridge
0.9.43 - polkadot-node-core-approval-voting
0.9.43 - polkadot-node-core-av-store
0.9.43 - polkadot-node-core-parachains-inherent
0.9.43 - polkadot-node-core-pvf-checker
0.9.43 - polkadot-node-subsystem
0.9.43 - polkadot-node-subsystem-util
0.9.43 - polkadot-service
0.9.43
- async-trait
polkadot-parachain
0.9.43github.com/paritytech/polkadot↘ 10↖ 16sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends onused by- cumulus-client-network
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-primitives-core
0.1.0 - opal-runtime
0.9.43 - polkadot-node-core-candidate-validation
0.9.43 - polkadot-node-core-pvf
0.9.43 - polkadot-node-core-pvf-worker
0.9.43 - polkadot-node-primitives
0.9.43 - polkadot-primitives
0.9.43 - polkadot-runtime-parachains
0.9.43 - polkadot-service
0.9.43 - quartz-runtime
0.9.43 - rococo-runtime
0.9.43 - unique-runtime
0.9.43 - westend-runtime
0.9.43 - xcm-builder
0.9.43
- cumulus-client-network
polkadot-performance-test
0.9.43github.com/paritytech/polkadot↘ 11↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends onused bypolkadot-primitives
0.9.43github.com/paritytech/polkadot↘ 19↖ 59sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends on- bitvec
1.0.1 - hex-literal
0.4.1 - parity-scale-codec
3.6.4 - polkadot-core-primitives
0.9.43 - polkadot-parachain
0.9.43 - scale-info
2.9.0 - serde
1.0.183 - sp-api
4.0.0-dev - sp-application-crypto
7.0.0 - sp-arithmetic
6.0.0 - sp-authority-discovery
4.0.0-dev - sp-consensus-slots
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-keystore
0.13.0 - sp-runtime
7.0.0 - sp-staking
4.0.0-dev - sp-std
5.0.0
used by- cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - cumulus-test-relay-sproof-builder
0.1.0 - kusama-runtime
0.9.43 - kusama-runtime-constants
0.9.43 - polkadot-approval-distribution
0.9.43 - polkadot-availability-bitfield-distribution
0.9.43 - polkadot-availability-distribution
0.9.43 - polkadot-availability-recovery
0.9.43 - polkadot-client
0.9.43 - polkadot-collator-protocol
0.9.43 - polkadot-dispute-distribution
0.9.43 - polkadot-erasure-coding
0.9.43 - polkadot-gossip-support
0.9.43 - polkadot-network-bridge
0.9.43 - polkadot-node-collation-generation
0.9.43 - polkadot-node-core-approval-voting
0.9.43 - polkadot-node-core-av-store
0.9.43 - polkadot-node-core-backing
0.9.43 - polkadot-node-core-bitfield-signing
0.9.43 - polkadot-node-core-candidate-validation
0.9.43 - polkadot-node-core-chain-api
0.9.43 - polkadot-node-core-chain-selection
0.9.43 - polkadot-node-core-dispute-coordinator
0.9.43 - polkadot-node-core-parachains-inherent
0.9.43 - polkadot-node-core-provisioner
0.9.43 - polkadot-node-core-pvf
0.9.43 - polkadot-node-core-pvf-checker
0.9.43 - polkadot-node-core-pvf-worker
0.9.43 - polkadot-node-core-runtime-api
0.9.43 - polkadot-node-jaeger
0.9.43 - polkadot-node-metrics
0.9.43 - polkadot-node-network-protocol
0.9.43 - polkadot-node-primitives
0.9.43 - polkadot-node-subsystem-types
0.9.43 - polkadot-node-subsystem-util
0.9.43 - polkadot-overseer
0.9.43 - polkadot-performance-test
0.9.43 - polkadot-rpc
0.9.43 - polkadot-runtime
0.9.43 - polkadot-runtime-common
0.9.43 - polkadot-runtime-constants
0.9.43 - polkadot-runtime-metrics
0.9.43 - polkadot-runtime-parachains
0.9.43 - polkadot-service
0.9.43 - polkadot-statement-distribution
0.9.43 - polkadot-statement-table
0.9.43 - rococo-runtime
0.9.43 - rococo-runtime-constants
0.9.43 - tracing-gum
0.9.43 - unique-node
0.9.43 - westend-runtime
0.9.43 - westend-runtime-constants
0.9.43
- bitvec
polkadot-rpc
0.9.43github.com/paritytech/polkadot↘ 25↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends on- jsonrpsee
0.16.2 - mmr-rpc
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - polkadot-primitives
0.9.43 - sc-chain-spec
4.0.0-dev - sc-client-api
4.0.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-beefy
4.0.0-dev - sc-consensus-beefy-rpc
4.0.0-dev - sc-consensus-epochs
0.10.0-dev - sc-consensus-grandpa
0.10.0-dev - sc-consensus-grandpa-rpc
0.10.0-dev - sc-rpc
4.0.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-transaction-pool-api
4.0.0-dev - sp-api
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-keystore
0.13.0 - sp-runtime
7.0.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev
used by- jsonrpsee
polkadot-runtime
0.9.43github.com/paritytech/polkadot↘ 88↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends on- bitvec
1.0.1 - frame-benchmarking
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - hex-literal
0.4.1 - log
0.4.20 - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collective
4.0.0-dev - pallet-conviction-voting
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-election-provider-support-benchmarking
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-fast-unstake
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-membership
4.0.0-dev - pallet-message-queue
7.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nomination-pools-runtime-api
1.0.0-dev - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-staking-reward-curve
4.0.0-dev - pallet-staking-runtime-api
4.0.0-dev - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-whitelist
4.0.0-dev - pallet-xcm
0.9.43 - parity-scale-codec
3.6.4 - polkadot-primitives
0.9.43 - polkadot-runtime-common
0.9.43 - polkadot-runtime-constants
0.9.43 - polkadot-runtime-parachains
0.9.43 - rustc-hex
2.1.0 - scale-info
2.9.0 - serde
1.0.183 - serde_derive
1.0.183 - smallvec
1.11.0 - sp-api
4.0.0-dev - sp-arithmetic
6.0.0 - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-beefy
4.0.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
5.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - static_assertions
1.1.0 - substrate-wasm-builder
5.0.0-dev - xcm
0.9.43 - xcm-builder
0.9.43 - xcm-executor
0.9.43
- bitvec
polkadot-runtime-common
0.9.43github.com/paritytech/polkadot↘ 39↖ 11sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends on- bitvec
1.0.1 - frame-benchmarking
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - impl-trait-for-tuples
0.2.2 - libsecp256k1
0.7.1 - log
0.4.20 - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-fast-unstake
4.0.0-dev - pallet-session
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-staking-reward-fn
4.0.0-dev - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-vesting
4.0.0-dev - parity-scale-codec
3.6.4 - polkadot-primitives
0.9.43 - polkadot-runtime-parachains
0.9.43 - rustc-hex
2.1.0 - scale-info
2.9.0 - serde
1.0.183 - serde_derive
1.0.183 - slot-range-helper
0.9.43 - sp-api
4.0.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-npos-elections
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
5.0.0 - static_assertions
1.1.0 - xcm
0.9.43
- bitvec
polkadot-runtime-constants
0.9.43github.com/paritytech/polkadot↘ 7↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends onpolkadot-runtime-metrics
0.9.43github.com/paritytech/polkadot↘ 5↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25polkadot-runtime-parachains
0.9.43github.com/paritytech/polkadot↘ 38↖ 6sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends on- bitflags
1.3.2 - bitvec
1.0.1 - derive_more
0.99.17 - frame-benchmarking
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - log
0.4.20 - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-message-queue
7.0.0-dev - pallet-session
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-timestamp
4.0.0-dev - pallet-vesting
4.0.0-dev - parity-scale-codec
3.6.4 - polkadot-parachain
0.9.43 - polkadot-primitives
0.9.43 - polkadot-runtime-metrics
0.9.43 - rand
0.8.5 - rand_chacha
0.3.1 - rustc-hex
2.1.0 - scale-info
2.9.0 - serde
1.0.183 - sp-api
4.0.0-dev - sp-application-crypto
7.0.0 - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-keystore
0.13.0 - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
5.0.0 - static_assertions
1.1.0 - xcm
0.9.43 - xcm-executor
0.9.43
- bitflags
polkadot-service
0.9.43github.com/paritytech/polkadot↘ 102↖ 3sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends on- async-trait
0.1.73 - frame-benchmarking-cli
4.0.0-dev - frame-support
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - futures
0.3.28 - hex-literal
0.4.1 - kusama-runtime
0.9.43 - kvdb
0.13.0 - kvdb-rocksdb
0.19.0 - log
0.4.20 - lru
0.9.0 - mmr-gadget
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - parity-db
0.4.10 - polkadot-approval-distribution
0.9.43 - polkadot-availability-bitfield-distribution
0.9.43 - polkadot-availability-distribution
0.9.43 - polkadot-availability-recovery
0.9.43 - polkadot-client
0.9.43 - polkadot-collator-protocol
0.9.43 - polkadot-dispute-distribution
0.9.43 - polkadot-gossip-support
0.9.43 - polkadot-network-bridge
0.9.43 - polkadot-node-collation-generation
0.9.43 - polkadot-node-core-approval-voting
0.9.43 - polkadot-node-core-av-store
0.9.43 - polkadot-node-core-backing
0.9.43 - polkadot-node-core-bitfield-signing
0.9.43 - polkadot-node-core-candidate-validation
0.9.43 - polkadot-node-core-chain-api
0.9.43 - polkadot-node-core-chain-selection
0.9.43 - polkadot-node-core-dispute-coordinator
0.9.43 - polkadot-node-core-parachains-inherent
0.9.43 - polkadot-node-core-provisioner
0.9.43 - polkadot-node-core-pvf-checker
0.9.43 - polkadot-node-core-runtime-api
0.9.43 - polkadot-node-network-protocol
0.9.43 - polkadot-node-primitives
0.9.43 - polkadot-node-subsystem
0.9.43 - polkadot-node-subsystem-types
0.9.43 - polkadot-node-subsystem-util
0.9.43 - polkadot-overseer
0.9.43 - polkadot-parachain
0.9.43 - polkadot-primitives
0.9.43 - polkadot-rpc
0.9.43 - polkadot-runtime
0.9.43 - polkadot-runtime-constants
0.9.43 - polkadot-runtime-parachains
0.9.43 - polkadot-statement-distribution
0.9.43 - rococo-runtime
0.9.43 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-block-builder
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-beefy
4.0.0-dev - sc-consensus-grandpa
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-executor
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sc-transaction-pool
4.0.0-dev - serde
1.0.183 - serde_json
1.0.105 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-beefy
4.0.0-dev - sp-consensus-grandpa
4.0.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-keystore
0.13.0 - sp-mmr-primitives
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-state-machine
0.13.0 - sp-storage
7.0.0 - sp-timestamp
4.0.0-dev - sp-transaction-pool
4.0.0-dev - sp-trie
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.46 - tracing-gum
0.9.43 - westend-runtime
0.9.43
- async-trait
polkadot-statement-distribution
0.9.43github.com/paritytech/polkadot↘ 14↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends onused bypolkadot-statement-table
0.9.43github.com/paritytech/polkadot↘ 3↖ 2sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25polling
2.8.0crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dcedepends onused bypoly1305
0.7.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum048aeb476be11a4b6ca432ca569e375810de9294ae78f4774e78ea98a9246edeused bypolyval
0.5.3crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1used bypolyval
0.6.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd52cff9d1d4dee5fe6d03729099f4a310a41179e0a10dbf542039873f2e826fbused byportable-atomic
1.4.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf32154ba0af3a075eefa1eda8bb414ee928f62303a54ea85b8d6638ff1a6ee9eused byppv-lite86
0.2.17crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6deprecompile-utils-macro
0.1.0workspace↘ 5↖ 3predicates
2.1.5crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum59230a63c37f3e18569bdb90e4a89cbf5bf8b06fea0b84e65ea10cc4df47addddepends onused bypredicates-core
1.0.6crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174predicates-tree
1.0.9crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecfdepends onused byprettyplease
0.1.25crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86depends onused byprettyplease
0.2.12crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6c64d9ba0963cdcea2e1b2230fbae2bab30eb25a174be395c41e764bfb65dd62depends onused byprimitive-types
0.12.1crates.io↘ 6↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9f3486ccba82358b11a77516035647c34ba167dfa53312630de83b12bd4f3d66prioritized-metered-channel
0.2.0crates.io↘ 8↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum382698e48a268c832d0b181ed438374a6bb708a82a8ca273bb0f61c74cf209c4depends onproc-macro-crate
1.3.1crates.io↘ 2↖ 17sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919depends onused by- cumulus-pallet-parachain-system-proc-macro
0.1.0 - fatality-proc-macro
0.0.6 - frame-election-provider-solution-type
4.0.0-dev - frame-support-procedural-tools
4.0.0-dev - jsonrpsee-proc-macros
0.16.2 - multihash-derive
0.8.0 - num_enum_derive
0.6.1 - orchestra-proc-macro
0.0.5 - pallet-staking-reward-curve
4.0.0-dev - parity-scale-codec-derive
3.6.4 - sc-chain-spec-derive
4.0.0-dev - sc-tracing-proc-macro
4.0.0-dev - scale-info-derive
2.9.0 - sp-api-proc-macro
4.0.0-dev - sp-runtime-interface-proc-macro
6.0.0 - substrate-test-utils-derive
0.10.0-dev - tracing-gum-proc-macro
0.9.43
- cumulus-pallet-parachain-system-proc-macro
proc-macro-error
1.0.4crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumda25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38cproc-macro-error-attr
1.0.4crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869used byproc-macro-warning
0.3.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0e99670bafb56b9a106419397343bdbc8b8742c3cc449fec6345f86173f47cd4depends onproc-macro2
1.0.66crates.io↘ 1↖ 83sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9depends onused by- asn1-rs-derive
0.1.0 - asn1-rs-derive
0.4.0 - asn1-rs-impl
0.1.0 - async-recursion
1.0.4 - async-trait
0.1.73 - auto_impl
1.1.0 - bindgen
0.65.1 - bondrewd-derive
0.3.18 - clap_derive
4.3.12 - cumulus-pallet-parachain-system-proc-macro
0.1.0 - cxx-build
1.0.105 - cxxbridge-macro
1.0.105 - darling_core
0.14.4 - derivative
2.2.0 - derive-syn-parse
0.1.5 - derive_builder_core
0.11.2 - derive_more
0.99.17 - displaydoc
0.2.4 - dyn-clonable-impl
0.9.0 - enum-as-inner
0.5.1 - enumflags2_derive
0.7.7 - enumn
0.1.11 - evm-coder-procedural
0.4.2 - evm-coder-substrate-procedural
0.1.0 - expander
0.0.4 - expander
0.0.6 - expander
1.0.0 - expander
2.0.0 - fatality-proc-macro
0.0.6 - frame-election-provider-solution-type
4.0.0-dev - frame-support-procedural
4.0.0-dev - frame-support-procedural-tools
4.0.0-dev - frame-support-procedural-tools-derive
3.0.0 - futures-macro
0.3.28 - impl-trait-for-tuples
0.2.2 - jsonrpsee-proc-macros
0.16.2 - mockall_derive
0.11.4 - multihash-derive
0.8.0 - nalgebra-macros
0.2.1 - num_enum_derive
0.5.11 - num_enum_derive
0.6.1 - orchestra-proc-macro
0.0.5 - pallet-staking-reward-curve
4.0.0-dev - parity-scale-codec-derive
3.6.4 - pest_generator
2.7.2 - pin-project-internal
1.1.3 - precompile-utils-macro
0.1.0 - prettyplease
0.1.25 - prettyplease
0.2.12 - proc-macro-error
1.0.4 - proc-macro-error-attr
1.0.4 - proc-macro-warning
0.3.1 - prometheus-client-derive-encode
0.4.2 - prost-derive
0.11.9 - quote
1.0.32 - ref-cast-impl
1.0.19 - rlp-derive
0.1.0 - sc-chain-spec-derive
4.0.0-dev - sc-tracing-proc-macro
4.0.0-dev - scale-info-derive
2.9.0 - serde_derive
1.0.183 - sp-api-proc-macro
4.0.0-dev - sp-core-hashing-proc-macro
5.0.0 - sp-debug-derive
5.0.0 - sp-runtime-interface-proc-macro
6.0.0 - sp-version-proc-macro
4.0.0-dev - spez
0.1.2 - ss58-registry
1.42.0 - static_init_macro
0.5.0 - static_init_macro
1.0.2 - strum_macros
0.24.3 - substrate-test-utils-derive
0.10.0-dev - syn
1.0.109 - syn
2.0.28 - synstructure
0.12.6 - thiserror-impl
1.0.46 - tokio-macros
2.1.0 - tracing-attributes
0.1.26 - tracing-gum-proc-macro
0.9.43 - wasm-bindgen-backend
0.2.87 - wasm-bindgen-macro-support
0.2.87 - xcm-procedural
0.9.43 - zeroize_derive
1.4.2
- asn1-rs-derive
prometheus
0.13.3crates.io↘ 6↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum449811d15fbdf5ceb5c1144416066429cf82316e2ec8ce0c1f6f8a02e7bbcf8cprometheus-client
0.19.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5d6fa99d535dd930d1249e6c79cb3c2915f9172a540fe2b02a4c8f9ca954721eused byprometheus-client-derive-encode
0.4.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8depends onused byprost
0.11.9crates.io↘ 2↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cddepends onprost-build
0.11.9crates.io↘ 14↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270depends onprost-derive
0.11.9crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4used byprost-types
0.11.9crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum213622a1460818959ac1181aaeb2dc9c7f63df720db7d788b3e24eacd1983e13depends onused bypsm
0.1.21crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874depends onused byquartz-runtime
0.9.43workspace↘ 103↖ 2depends on- app-promotion-rpc
0.1.0 - cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-timestamp
0.1.0 - cumulus-primitives-utility
0.1.0 - derivative
2.2.0 - evm-coder
0.4.2 - fp-evm
3.0.0-dev - fp-rpc
3.0.0-dev - fp-self-contained
1.0.0-dev - frame-benchmarking
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - hex-literal
0.4.1 - impl-trait-for-tuples
0.2.2 - log
0.4.20 - num_enum
0.5.11 - orml-tokens
0.4.1-dev - orml-traits
0.4.1-dev - orml-vesting
0.4.1-dev - orml-xcm-support
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-app-promotion
0.2.1 - pallet-aura
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-balances-adapter
0.1.0 - pallet-base-fee
1.0.0 - pallet-collator-selection
5.0.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.14 - pallet-configuration
0.2.0 - pallet-democracy
4.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-evm-precompile-simple
2.0.0-dev - pallet-evm-transaction-payment
0.1.1 - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.11 - pallet-gov-origins
0.2.1 - pallet-identity
4.0.0-dev - pallet-inflation
0.1.1 - pallet-maintenance
0.1.0 - pallet-membership
4.0.0-dev - pallet-nonfungible
0.1.14 - pallet-preimage
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-refungible
0.2.13 - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-structure
0.1.2 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-test-utils
0.1.0 - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.2.1 - pallet-utility
4.0.0-dev - pallet-xcm
0.9.43 - parachain-info
0.1.0 - parity-scale-codec
3.6.4 - polkadot-parachain
0.9.43 - precompile-utils-macro
0.1.0 - scale-info
2.9.0 - serde
1.0.183 - smallvec
1.11.0 - sp-api
4.0.0-dev - sp-arithmetic
6.0.0 - sp-block-builder
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-std
5.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - substrate-wasm-builder
5.0.0-dev - up-common
0.9.43 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - up-rpc
0.1.3 - up-sponsorship
0.1.0 - xcm
0.9.43 - xcm-builder
0.9.43 - xcm-executor
0.9.43
used by- app-promotion-rpc
quick-error
1.2.3crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0used byquick-protobuf
0.8.1crates.io↘ 1↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9d6da84cc204722a989e01ba2f6e1e276e190f22263d0cb6ce8526fcdb0d2e1fdepends onquick-protobuf-codec
0.1.0crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1693116345026436eb2f10b677806169c1a1260c1c60eaaffe3fb5a29ae23d8bquicksink
0.1.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum77de3c815e5a160b1539c6592796801df2043ae35e123b46d73380cfa57af858used byquinn-proto
0.9.4crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf31999cfc7927c4e212e60fd50934ab40e8e8bfd2d493d6095d2d306bc0764d9depends onused byquote
1.0.32crates.io↘ 1↖ 85sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965depends onused by- asn1-rs-derive
0.1.0 - asn1-rs-derive
0.4.0 - asn1-rs-impl
0.1.0 - async-recursion
1.0.4 - async-trait
0.1.73 - auto_impl
1.1.0 - bindgen
0.65.1 - bondrewd-derive
0.3.18 - clap_derive
4.3.12 - cumulus-pallet-parachain-system-proc-macro
0.1.0 - cxx-build
1.0.105 - cxxbridge-macro
1.0.105 - darling_core
0.14.4 - darling_macro
0.14.4 - derivative
2.2.0 - derive-syn-parse
0.1.5 - derive_builder_core
0.11.2 - derive_more
0.99.17 - displaydoc
0.2.4 - dyn-clonable-impl
0.9.0 - enum-as-inner
0.5.1 - enumflags2_derive
0.7.7 - enumn
0.1.11 - evm-coder-procedural
0.4.2 - evm-coder-substrate-procedural
0.1.0 - expander
0.0.4 - expander
0.0.6 - expander
1.0.0 - expander
2.0.0 - fatality-proc-macro
0.0.6 - frame-election-provider-solution-type
4.0.0-dev - frame-support-procedural
4.0.0-dev - frame-support-procedural-tools
4.0.0-dev - frame-support-procedural-tools-derive
3.0.0 - futures-macro
0.3.28 - impl-trait-for-tuples
0.2.2 - jsonrpsee-proc-macros
0.16.2 - libp2p-swarm-derive
0.32.0 - mockall_derive
0.11.4 - multihash-derive
0.8.0 - nalgebra-macros
0.2.1 - num_enum_derive
0.5.11 - num_enum_derive
0.6.1 - orchestra-proc-macro
0.0.5 - pallet-staking-reward-curve
4.0.0-dev - parity-scale-codec-derive
3.6.4 - pest_generator
2.7.2 - pin-project-internal
1.1.3 - polkadot-performance-test
0.9.43 - precompile-utils-macro
0.1.0 - proc-macro-error
1.0.4 - proc-macro-error-attr
1.0.4 - proc-macro-warning
0.3.1 - prometheus-client-derive-encode
0.4.2 - prost-derive
0.11.9 - ref-cast-impl
1.0.19 - rlp-derive
0.1.0 - sc-chain-spec-derive
4.0.0-dev - sc-tracing-proc-macro
4.0.0-dev - scale-info-derive
2.9.0 - serde_derive
1.0.183 - sp-api-proc-macro
4.0.0-dev - sp-core-hashing-proc-macro
5.0.0 - sp-debug-derive
5.0.0 - sp-runtime-interface-proc-macro
6.0.0 - sp-version-proc-macro
4.0.0-dev - spez
0.1.2 - ss58-registry
1.42.0 - static_init_macro
0.5.0 - static_init_macro
1.0.2 - struct-versioning
0.1.0 - strum_macros
0.24.3 - substrate-test-utils-derive
0.10.0-dev - syn
1.0.109 - syn
2.0.28 - synstructure
0.12.6 - thiserror-impl
1.0.46 - tokio-macros
2.1.0 - tracing-attributes
0.1.26 - tracing-gum-proc-macro
0.9.43 - wasm-bindgen-backend
0.2.87 - wasm-bindgen-macro
0.2.87 - wasm-bindgen-macro-support
0.2.87 - xcm-procedural
0.9.43 - zeroize_derive
1.4.2
- asn1-rs-derive
radium
0.7.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09used byrand
0.7.3crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03rand
0.8.5crates.io↘ 3↖ 62sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404used by- cumulus-client-pov-recovery
0.1.0 - fc-rpc
2.0.0-dev - fixed-hash
0.8.0 - frame-benchmarking-cli
4.0.0-dev - interceptor
0.8.2 - jsonrpsee-core
0.16.2 - libp2p-core
0.39.2 - libp2p-identity
0.1.2 - libp2p-kad
0.43.3 - libp2p-mdns
0.43.1 - libp2p-noise
0.42.2 - libp2p-ping
0.42.0 - libp2p-quic
0.7.0-alpha.3 - libp2p-request-response
0.24.1 - libp2p-swarm
0.42.2 - libp2p-webrtc
0.4.0-alpha.4 - libsecp256k1
0.7.1 - mick-jaeger
0.1.8 - names
0.13.0 - pallet-collator-selection
5.0.0 - pallet-election-provider-multi-phase
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - parity-db
0.4.10 - polkadot-approval-distribution
0.9.43 - polkadot-availability-bitfield-distribution
0.9.43 - polkadot-availability-distribution
0.9.43 - polkadot-availability-recovery
0.9.43 - polkadot-gossip-support
0.9.43 - polkadot-node-core-provisioner
0.9.43 - polkadot-node-core-pvf
0.9.43 - polkadot-node-network-protocol
0.9.43 - polkadot-node-subsystem-util
0.9.43 - polkadot-runtime-parachains
0.9.43 - quinn-proto
0.9.4 - rtp
0.6.8 - sc-authority-discovery
0.10.0-dev - sc-cli
0.10.0-dev - sc-consensus-grandpa
0.10.0-dev - sc-network
0.10.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sdp
0.5.3 - soketto
0.7.1 - sp-core
7.0.0 - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - stun
0.4.4 - tiny-bip39
1.0.0 - tokio-retry
0.3.0 - trust-dns-proto
0.22.0 - turn
0.6.1 - twox-hash
1.6.3 - wasmtime-runtime
8.0.1 - webrtc
0.6.0 - webrtc-dtls
0.7.1 - webrtc-ice
0.9.1 - webrtc-media
0.5.1 - webrtc-sctp
0.7.0 - webrtc-util
0.7.0 - yamux
0.10.2
- cumulus-client-pov-recovery
rand_chacha
0.2.2crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402depends onrand_chacha
0.3.1crates.io↘ 2↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88depends onrand_core
0.5.1crates.io↘ 1↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19depends onrand_core
0.6.4crates.io↘ 1↖ 19sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922cdepends onrand_hc
0.2.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613cdepends onused byrand_pcg
0.3.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum59cad018caf63deb318e5a4586d99a24424a364f40f1e5778c29aca23f4fc73edepends onrawpointer
0.2.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3used byrayon
1.7.0crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03bdepends onrayon-core
1.11.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8dused byrcgen
0.9.3crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6413f3de1edee53342e6138e75b56d32e7bc6e332b3bd62d497b1929d4cfbcddrcgen
0.10.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumffbe84efe2f38dea12e9bfc1f65377fdf03e53a18cb3b995faedf7934c7e785bdepends onused byredox_syscall
0.2.16crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519adepends onredox_syscall
0.3.5crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29depends onredox_users
0.4.3crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2breed-solomon-novelpoly
1.0.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3bd8f48b2066e9f69ab192797d66da804d1935bf22763204ed3675740cb0f221ref-cast
1.0.19crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum61ef7e18e8841942ddb1cf845054f8008410030a3997875d9e49b7a363063df1depends onused byref-cast-impl
1.0.19crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2dfaf0c85b766276c797f3791f5bc6d5bd116b41d53049af2789666b0c0bc9fadepends onused byregalloc2
0.6.1crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum80535183cae11b149d618fbd3c37e38d7cda589d82d7769e196ca9a9042d7621used byregex
1.9.3crates.io↘ 4↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum81bc1d4caf89fac26a70747fe603c130093b53c773888797a6329091246d651aregex-automata
0.1.10crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132depends onused byregex-automata
0.3.6crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfed1ceff11a1dddaee50c9dc8e4938bd106e9d89ae372f192311e7da498e3b69used byregex-syntax
0.6.29crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1used byregex-syntax
0.7.4crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2resolv-conf
0.7.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00depends onused byrfc6979
0.3.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabbdepends onused byrfc6979
0.4.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2depends onused byring
0.16.20crates.io↘ 7↖ 16sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fcripemd
0.1.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09fdepends onrlp
0.5.2crates.io↘ 3↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ecdepends onrlp-derive
0.1.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672adepends onused byrocksdb
0.21.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbb6f170a4041d50a0ce04b0d2e14916d6ca863ea2e422689a5b694395d299ffedepends onused byrococo-runtime
0.9.43github.com/paritytech/polkadot↘ 80↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends on- binary-merkle-tree
4.0.0-dev - frame-benchmarking
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - hex-literal
0.4.1 - log
0.4.20 - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collective
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-membership
4.0.0-dev - pallet-message-queue
7.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nis
4.0.0-dev - pallet-offences
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-sudo
4.0.0-dev - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.43 - pallet-xcm-benchmarks
0.9.43 - parity-scale-codec
3.6.4 - polkadot-parachain
0.9.43 - polkadot-primitives
0.9.43 - polkadot-runtime-common
0.9.43 - polkadot-runtime-parachains
0.9.43 - rococo-runtime-constants
0.9.43 - scale-info
2.9.0 - serde
1.0.183 - serde_derive
1.0.183 - smallvec
1.11.0 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-beefy
4.0.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-mmr-primitives
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
5.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - static_assertions
1.1.0 - substrate-wasm-builder
5.0.0-dev - xcm
0.9.43 - xcm-builder
0.9.43 - xcm-executor
0.9.43
used by- binary-merkle-tree
rococo-runtime-constants
0.9.43github.com/paritytech/polkadot↘ 7↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends onused byrpassword
7.2.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6678cf63ab3491898c0d021b493c94c9b221d91295294a2a5746eacbe5928322depends onused byrtcp
0.7.2crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1919efd6d4a6a85d13388f9487549bb8e359f17198cc03ffd72f79b553873691rtnetlink
0.10.1crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum322c53fd76a18698f1c27381d58091de3a043d356aa5bd0d510608b565f469a0depends onused byrtoolbox
0.0.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum034e22c514f5c0cb8a10ff341b9b048b5ceb21591f31c8f44c43b960f9b3524adepends onused byrtp
0.6.8crates.io↘ 6↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma2a095411ff00eed7b12e4c6a118ba984d113e1079582570d56a5ee723f11f80rustc_version
0.4.0crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366depends onused byrustc-demangle
0.1.23crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76rustc-hash
1.1.0crates.io↘ 0↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2rustc-hex
2.1.0crates.io↘ 0↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6rusticata-macros
4.1.0crates.io↘ 1↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfaf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632depends onrustix
0.36.15crates.io↘ 6↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc37f1bd5ef1b5422177b7646cba67430579cfe2ace80f284fee876bca52ad941rustix
0.37.23crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06used byrustix
0.38.8crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum19ed4fa021d81c8392ce04db050a3da9a60299050b7ae1cf482d862b54a7218frustls
0.19.1crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7used byrustls
0.20.8crates.io↘ 4↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2fdepends onrustls-native-certs
0.6.3crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00rustls-pemfile
1.0.3crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2depends onused byrustversion
1.0.14crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4used byrw-stream-sink
0.3.0crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum26338f5e09bb721b85b135ea05af7767c90b52f6de4f087d4f4a3a9d64e7dc04ryu
1.0.15crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741used bysafe_arch
0.7.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf398075ce1e6a179b46f51bd88d0598b92b00d3551f1a2d4ac49e771b56ac354depends onused bysame-file
1.0.6crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502depends onused bysc-allocator
4.1.0-devgithub.com/paritytech/substrate↘ 4↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40sc-authority-discovery
0.10.0-devgithub.com/paritytech/substrate↘ 22↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends on- async-trait
0.1.73 - futures
0.3.28 - futures-timer
3.0.2 - ip_network
0.4.1 - libp2p
0.51.3 - log
0.4.20 - multihash
0.17.0 - parity-scale-codec
3.6.4 - prost
0.11.9 - prost-build
0.11.9 - rand
0.8.5 - sc-client-api
4.0.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
7.0.0 - sp-keystore
0.13.0 - sp-runtime
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.46
- async-trait
sc-basic-authorship
0.10.0-devgithub.com/paritytech/substrate↘ 16↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends on- futures
0.3.28 - futures-timer
3.0.2 - log
0.4.20 - parity-scale-codec
3.6.4 - sc-block-builder
0.10.0-dev - sc-client-api
4.0.0-dev - sc-proposer-metrics
0.10.0-dev - sc-telemetry
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-runtime
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev
- futures
sc-block-builder
0.10.0-devgithub.com/paritytech/substrate↘ 8↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onsc-chain-spec
4.0.0-devgithub.com/paritytech/substrate↘ 12↖ 10sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onsc-chain-spec-derive
4.0.0-devgithub.com/paritytech/substrate↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40used bysc-cli
0.10.0-devgithub.com/paritytech/substrate↘ 33↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends on- array-bytes
4.2.0 - chrono
0.4.26 - clap
4.3.21 - fdlimit
0.2.1 - futures
0.3.28 - libp2p-identity
0.1.2 - log
0.4.20 - names
0.13.0 - parity-scale-codec
3.6.4 - rand
0.8.5 - regex
1.9.3 - rpassword
7.2.0 - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-service
0.10.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-utils
4.0.0-dev - serde
1.0.183 - serde_json
1.0.105 - sp-blockchain
4.0.0-dev - sp-core
7.0.0 - sp-keyring
7.0.0 - sp-keystore
0.13.0 - sp-panic-handler
5.0.0 - sp-runtime
7.0.0 - sp-version
5.0.0 - thiserror
1.0.46 - tiny-bip39
1.0.0 - tokio
1.31.0
- array-bytes
sc-client-api
4.0.0-devgithub.com/paritytech/substrate↘ 20↖ 52sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends on- fnv
1.0.7 - futures
0.3.28 - log
0.4.20 - parity-scale-codec
3.6.4 - parking_lot
0.12.1 - sc-executor
0.10.0-dev - sc-transaction-pool-api
4.0.0-dev - sc-utils
4.0.0-dev - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-database
4.0.0-dev - sp-externalities
0.13.0 - sp-keystore
0.13.0 - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - sp-statement-store
4.0.0-dev - sp-storage
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev
used by- cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - fc-storage
1.0.0-dev - frame-benchmarking-cli
4.0.0-dev - mmr-gadget
4.0.0-dev - polkadot-client
0.9.43 - polkadot-node-core-chain-api
0.9.43 - polkadot-overseer
0.9.43 - polkadot-rpc
0.9.43 - polkadot-service
0.9.43 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-block-builder
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-beefy
4.0.0-dev - sc-consensus-epochs
0.10.0-dev - sc-consensus-grandpa
0.10.0-dev - sc-consensus-grandpa-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-informant
0.10.0-dev - sc-network
0.10.0-dev - sc-network-bitswap
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-offchain
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - uc-rpc
0.1.4 - unique-node
0.9.43 - unique-rpc
0.1.2
- fnv
sc-client-db
0.10.0-devgithub.com/paritytech/substrate↘ 19↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends on- hash-db
0.16.0 - kvdb
0.13.0 - kvdb-memorydb
0.13.0 - kvdb-rocksdb
0.19.0 - linked-hash-map
0.5.6 - log
0.4.20 - parity-db
0.4.10 - parity-scale-codec
3.6.4 - parking_lot
0.12.1 - sc-client-api
4.0.0-dev - sc-state-db
0.10.0-dev - schnellru
0.2.1 - sp-arithmetic
6.0.0 - sp-blockchain
4.0.0-dev - sp-core
7.0.0 - sp-database
4.0.0-dev - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - sp-trie
7.0.0
- hash-db
sc-consensus
0.10.0-devgithub.com/paritytech/substrate↘ 18↖ 19sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends on- async-trait
0.1.73 - futures
0.3.28 - futures-timer
3.0.2 - libp2p-identity
0.1.2 - log
0.4.20 - mockall
0.11.4 - parking_lot
0.12.1 - sc-client-api
4.0.0-dev - sc-utils
4.0.0-dev - serde
1.0.183 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.46
used by- cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - fc-consensus
2.0.0-dev - polkadot-client
0.9.43 - polkadot-service
0.9.43 - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-beefy
4.0.0-dev - sc-consensus-epochs
0.10.0-dev - sc-consensus-grandpa
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-service
0.10.0-dev - unique-node
0.9.43
- async-trait
sc-consensus-aura
0.10.0-devgithub.com/paritytech/substrate↘ 22↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends on- async-trait
0.1.73 - futures
0.3.28 - log
0.4.20 - parity-scale-codec
3.6.4 - sc-block-builder
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-telemetry
4.0.0-dev - sp-api
4.0.0-dev - sp-application-crypto
7.0.0 - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-keystore
0.13.0 - sp-runtime
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.46
- async-trait
sc-consensus-babe
0.10.0-devgithub.com/paritytech/substrate↘ 29↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends on- async-trait
0.1.73 - fork-tree
3.0.0 - futures
0.3.28 - log
0.4.20 - num-bigint
0.4.3 - num-rational
0.4.1 - num-traits
0.2.16 - parity-scale-codec
3.6.4 - parking_lot
0.12.1 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-keystore
4.0.0-dev - sc-telemetry
4.0.0-dev - scale-info
2.9.0 - sp-api
4.0.0-dev - sp-application-crypto
7.0.0 - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-keystore
0.13.0 - sp-runtime
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.46
- async-trait
sc-consensus-babe-rpc
0.10.0-devgithub.com/paritytech/substrate↘ 15↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused bysc-consensus-beefy
4.0.0-devgithub.com/paritytech/substrate↘ 29↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends on- array-bytes
4.2.0 - async-channel
1.9.0 - async-trait
0.1.73 - fnv
1.0.7 - futures
0.3.28 - log
0.4.20 - parity-scale-codec
3.6.4 - parking_lot
0.12.1 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-utils
4.0.0-dev - sp-api
4.0.0-dev - sp-application-crypto
7.0.0 - sp-arithmetic
6.0.0 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-beefy
4.0.0-dev - sp-core
7.0.0 - sp-keystore
0.13.0 - sp-mmr-primitives
4.0.0-dev - sp-runtime
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.46 - wasm-timer
0.2.5
- array-bytes
sc-consensus-beefy-rpc
4.0.0-devgithub.com/paritytech/substrate↘ 12↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused bysc-consensus-epochs
0.10.0-devgithub.com/paritytech/substrate↘ 6↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onsc-consensus-grandpa
0.10.0-devgithub.com/paritytech/substrate↘ 33↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends on- ahash
0.8.3 - array-bytes
4.2.0 - async-trait
0.1.73 - dyn-clone
1.0.12 - finality-grandpa
0.16.2 - fork-tree
3.0.0 - futures
0.3.28 - futures-timer
3.0.2 - log
0.4.20 - parity-scale-codec
3.6.4 - parking_lot
0.12.1 - rand
0.8.5 - sc-block-builder
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-telemetry
4.0.0-dev - sc-utils
4.0.0-dev - serde_json
1.0.105 - sp-api
4.0.0-dev - sp-application-crypto
7.0.0 - sp-arithmetic
6.0.0 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-grandpa
4.0.0-dev - sp-core
7.0.0 - sp-keystore
0.13.0 - sp-runtime
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.46
- ahash
sc-consensus-grandpa-rpc
0.10.0-devgithub.com/paritytech/substrate↘ 13↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused bysc-consensus-manual-seal
0.10.0-devgithub.com/paritytech/substrate↘ 28↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends on- assert_matches
1.5.0 - async-trait
0.1.73 - futures
0.3.28 - futures-timer
3.0.2 - jsonrpsee
0.16.2 - log
0.4.20 - parity-scale-codec
3.6.4 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-epochs
0.10.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - serde
1.0.183 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-keystore
0.13.0 - sp-runtime
7.0.0 - sp-timestamp
4.0.0-dev - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.46
used by- assert_matches
sc-consensus-slots
0.10.0-devgithub.com/paritytech/substrate↘ 16↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends on- async-trait
0.1.73 - futures
0.3.28 - futures-timer
3.0.2 - log
0.4.20 - parity-scale-codec
3.6.4 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-telemetry
4.0.0-dev - sp-arithmetic
6.0.0 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-slots
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-runtime
7.0.0 - sp-state-machine
0.13.0
- async-trait
sc-executor
0.10.0-devgithub.com/paritytech/substrate↘ 15↖ 11sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onsc-executor-common
0.10.0-devgithub.com/paritytech/substrate↘ 5↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onsc-executor-wasmtime
0.10.0-devgithub.com/paritytech/substrate↘ 11↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onsc-informant
0.10.0-devgithub.com/paritytech/substrate↘ 9↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused bysc-keystore
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onsc-network
0.10.0-devgithub.com/paritytech/substrate↘ 38↖ 26sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends on- array-bytes
4.2.0 - async-channel
1.9.0 - async-trait
0.1.73 - asynchronous-codec
0.6.2 - bytes
1.4.0 - either
1.9.0 - fnv
1.0.7 - futures
0.3.28 - futures-timer
3.0.2 - ip_network
0.4.1 - libp2p
0.51.3 - linked_hash_set
0.1.4 - log
0.4.20 - lru
0.8.1 - mockall
0.11.4 - parity-scale-codec
3.6.4 - parking_lot
0.12.1 - pin-project
1.1.3 - rand
0.8.5 - sc-block-builder
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-network-common
0.10.0-dev - sc-peerset
4.0.0-dev - sc-utils
4.0.0-dev - serde
1.0.183 - serde_json
1.0.105 - smallvec
1.11.0 - snow
0.9.2 - sp-arithmetic
6.0.0 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-runtime
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.46 - unsigned-varint
0.7.1 - zeroize
1.6.0
used by- cumulus-client-service
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - fc-rpc
2.0.0-dev - polkadot-availability-recovery
0.9.43 - polkadot-dispute-distribution
0.9.43 - polkadot-gossip-support
0.9.43 - polkadot-network-bridge
0.9.43 - polkadot-node-jaeger
0.9.43 - polkadot-node-network-protocol
0.9.43 - polkadot-node-subsystem-types
0.9.43 - polkadot-service
0.9.43 - sc-authority-discovery
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-consensus-beefy
4.0.0-dev - sc-consensus-grandpa
0.10.0-dev - sc-informant
0.10.0-dev - sc-network-bitswap
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev - unique-node
0.9.43 - unique-rpc
0.1.2
- array-bytes
sc-network-bitswap
0.10.0-devgithub.com/paritytech/substrate↘ 14↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused bysc-network-common
0.10.0-devgithub.com/paritytech/substrate↘ 21↖ 16sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends on- array-bytes
4.2.0 - async-trait
0.1.73 - bitflags
1.3.2 - bytes
1.4.0 - futures
0.3.28 - futures-timer
3.0.2 - libp2p-identity
0.1.2 - parity-scale-codec
3.6.4 - prost-build
0.11.9 - sc-consensus
0.10.0-dev - sc-peerset
4.0.0-dev - sc-utils
4.0.0-dev - serde
1.0.183 - smallvec
1.11.0 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-grandpa
4.0.0-dev - sp-runtime
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.46 - zeroize
1.6.0
used by- cumulus-relay-chain-minimal-node
0.1.0 - fc-rpc
2.0.0-dev - polkadot-service
0.9.43 - sc-authority-discovery
0.10.0-dev - sc-cli
0.10.0-dev - sc-consensus-beefy
4.0.0-dev - sc-consensus-grandpa
0.10.0-dev - sc-informant
0.10.0-dev - sc-network
0.10.0-dev - sc-network-bitswap
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev
- array-bytes
sc-network-gossip
0.10.0-devgithub.com/paritytech/substrate↘ 12↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onsc-network-light
0.10.0-devgithub.com/paritytech/substrate↘ 16↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused bysc-network-sync
0.10.0-devgithub.com/paritytech/substrate↘ 28↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends on- array-bytes
4.2.0 - async-channel
1.9.0 - async-trait
0.1.73 - fork-tree
3.0.0 - futures
0.3.28 - futures-timer
3.0.2 - libp2p
0.51.3 - log
0.4.20 - lru
0.8.1 - mockall
0.11.4 - parity-scale-codec
3.6.4 - prost
0.11.9 - prost-build
0.11.9 - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-peerset
4.0.0-dev - sc-utils
4.0.0-dev - smallvec
1.11.0 - sp-arithmetic
6.0.0 - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-grandpa
4.0.0-dev - sp-core
7.0.0 - sp-runtime
7.0.0 - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.46
- array-bytes
sc-network-transactions
0.10.0-devgithub.com/paritytech/substrate↘ 13↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onsc-offchain
4.0.0-devgithub.com/paritytech/substrate↘ 24↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends on- array-bytes
4.2.0 - bytes
1.4.0 - fnv
1.0.7 - futures
0.3.28 - futures-timer
3.0.2 - hyper
0.14.27 - hyper-rustls
0.23.2 - libp2p
0.51.3 - num_cpus
1.16.0 - once_cell
1.18.0 - parity-scale-codec
3.6.4 - parking_lot
0.12.1 - rand
0.8.5 - sc-client-api
4.0.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-peerset
4.0.0-dev - sc-utils
4.0.0-dev - sp-api
4.0.0-dev - sp-core
7.0.0 - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - threadpool
1.8.1 - tracing
0.1.37
- array-bytes
sc-peerset
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onsc-proposer-metrics
0.10.0-devgithub.com/paritytech/substrate↘ 2↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40sc-rpc
4.0.0-devgithub.com/paritytech/substrate↘ 24↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends on- futures
0.3.28 - jsonrpsee
0.16.2 - log
0.4.20 - parity-scale-codec
3.6.4 - parking_lot
0.12.1 - sc-block-builder
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-client-api
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sc-utils
4.0.0-dev - serde_json
1.0.105 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
7.0.0 - sp-keystore
0.13.0 - sp-offchain
4.0.0-dev - sp-rpc
6.0.0 - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-statement-store
4.0.0-dev - sp-version
5.0.0 - tokio
1.31.0
- futures
sc-rpc-api
0.10.0-devgithub.com/paritytech/substrate↘ 12↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onsc-rpc-server
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onsc-rpc-spec-v2
0.10.0-devgithub.com/paritytech/substrate↘ 19↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends on- array-bytes
4.2.0 - futures
0.3.28 - futures-util
0.3.28 - hex
0.4.3 - jsonrpsee
0.16.2 - log
0.4.20 - parity-scale-codec
3.6.4 - parking_lot
0.12.1 - sc-chain-spec
4.0.0-dev - sc-client-api
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - serde
1.0.183 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
7.0.0 - sp-runtime
7.0.0 - sp-version
5.0.0 - thiserror
1.0.46 - tokio-stream
0.1.14
used by- array-bytes
sc-service
0.10.0-devgithub.com/paritytech/substrate↘ 59↖ 15sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends on- async-trait
0.1.73 - directories
4.0.1 - exit-future
0.2.0 - futures
0.3.28 - futures-timer
3.0.2 - jsonrpsee
0.16.2 - log
0.4.20 - parity-scale-codec
3.6.4 - parking_lot
0.12.1 - pin-project
1.1.3 - rand
0.8.5 - sc-block-builder
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-executor
0.10.0-dev - sc-informant
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-network-bitswap
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-offchain
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-server
4.0.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-storage-monitor
0.1.0 - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sc-utils
4.0.0-dev - serde
1.0.183 - serde_json
1.0.105 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-externalities
0.13.0 - sp-keystore
0.13.0 - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-state-machine
0.13.0 - sp-storage
7.0.0 - sp-transaction-pool
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - sp-trie
7.0.0 - sp-version
5.0.0 - static_init
1.0.3 - substrate-prometheus-endpoint
0.10.0-dev - tempfile
3.7.1 - thiserror
1.0.46 - tokio
1.31.0 - tracing
0.1.37 - tracing-futures
0.2.5
used by- cumulus-client-cli
0.1.0 - cumulus-client-service
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-rpc
2.0.0-dev - frame-benchmarking-cli
4.0.0-dev - polkadot-cli
0.9.43 - polkadot-client
0.9.43 - polkadot-node-metrics
0.9.43 - polkadot-service
0.9.43 - sc-cli
0.10.0-dev - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.4 - unique-node
0.9.43 - unique-rpc
0.1.2
- async-trait
sc-state-db
0.10.0-devgithub.com/paritytech/substrate↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40used bysc-storage-monitor
0.1.0github.com/paritytech/substrate↘ 9↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onsc-sync-state-rpc
0.10.0-devgithub.com/paritytech/substrate↘ 12↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onsc-sysinfo
6.0.0-devgithub.com/paritytech/substrate↘ 12↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onsc-telemetry
4.0.0-devgithub.com/paritytech/substrate↘ 12↖ 14sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused by- cumulus-client-consensus-aura
0.1.0 - cumulus-client-service
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - polkadot-service
0.9.43 - sc-basic-authorship
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-grandpa
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-service
0.10.0-dev - sc-sysinfo
6.0.0-dev - unique-node
0.9.43
- cumulus-client-consensus-aura
sc-tracing
4.0.0-devgithub.com/paritytech/substrate↘ 24↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends on- ansi_term
0.12.1 - atty
0.2.14 - chrono
0.4.26 - lazy_static
1.4.0 - libc
0.2.147 - log
0.4.20 - once_cell
1.18.0 - parking_lot
0.12.1 - regex
1.9.3 - rustc-hash
1.1.0 - sc-client-api
4.0.0-dev - sc-rpc-server
4.0.0-dev - sc-tracing-proc-macro
4.0.0-dev - serde
1.0.183 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
7.0.0 - sp-rpc
6.0.0 - sp-runtime
7.0.0 - sp-tracing
6.0.0 - thiserror
1.0.46 - tracing
0.1.37 - tracing-log
0.1.3 - tracing-subscriber
0.2.25
- ansi_term
sc-tracing-proc-macro
4.0.0-devgithub.com/paritytech/substrate↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40used bysc-transaction-pool
4.0.0-devgithub.com/paritytech/substrate↘ 20↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends on- async-trait
0.1.73 - futures
0.3.28 - futures-timer
3.0.2 - linked-hash-map
0.5.6 - log
0.4.20 - num-traits
0.2.16 - parity-scale-codec
3.6.4 - parking_lot
0.12.1 - sc-client-api
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sc-utils
4.0.0-dev - serde
1.0.183 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
7.0.0 - sp-runtime
7.0.0 - sp-tracing
6.0.0 - sp-transaction-pool
4.0.0-dev - substrate-prometheus-endpoint
0.10.0-dev - thiserror
1.0.46
- async-trait
sc-transaction-pool-api
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 11sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onsc-utils
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 20sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused by- cumulus-client-service
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-beefy
4.0.0-dev - sc-consensus-grandpa
0.10.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-offchain
4.0.0-dev - sc-peerset
4.0.0-dev - sc-rpc
4.0.0-dev - sc-service
0.10.0-dev - sc-storage-monitor
0.1.0 - sc-telemetry
4.0.0-dev - sc-transaction-pool
4.0.0-dev
- cumulus-client-service
scale-info
2.9.0crates.io↘ 6↖ 148sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum35c0a159d0c45c12b20c5a844feb1fe4bea86e28f17b92a5f0c42193634d3782depends onused by- bounded-collections
0.1.8 - cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - ethbloom
0.13.0 - ethereum
0.14.0 - ethereum-types
0.14.1 - evm
0.39.1 - evm-core
0.39.0 - finality-grandpa
0.16.2 - fp-account
1.0.0-dev - fp-evm
3.0.0-dev - fp-rpc
3.0.0-dev - fp-self-contained
1.0.0-dev - frame-benchmarking
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-metadata
15.1.0 - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - kusama-runtime
0.9.43 - opal-runtime
0.9.43 - orml-tokens
0.4.1-dev - orml-traits
0.4.1-dev - orml-utilities
0.4.1-dev - orml-vesting
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-app-promotion
0.2.1 - pallet-aura
4.0.0-dev - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-balances-adapter
0.1.0 - pallet-base-fee
1.0.0 - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collator-selection
5.0.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.14 - pallet-configuration
0.2.0 - pallet-conviction-voting
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-evm-transaction-payment
0.1.1 - pallet-fast-unstake
4.0.0-dev - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.11 - pallet-gov-origins
0.2.1 - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-maintenance
0.1.0 - pallet-membership
4.0.0-dev - pallet-message-queue
7.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nis
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nonfungible
0.1.14 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-refungible
0.2.13 - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-structure
0.1.2 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-test-utils
0.1.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.2.1 - pallet-unique-scheduler-v2
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-whitelist
4.0.0-dev - pallet-xcm
0.9.43 - pallet-xcm-benchmarks
0.9.43 - parachain-info
0.1.0 - polkadot-core-primitives
0.9.43 - polkadot-parachain
0.9.43 - polkadot-primitives
0.9.43 - polkadot-runtime
0.9.43 - polkadot-runtime-common
0.9.43 - polkadot-runtime-parachains
0.9.43 - primitive-types
0.12.1 - quartz-runtime
0.9.43 - rococo-runtime
0.9.43 - sc-consensus-babe
0.10.0-dev - sc-rpc-api
0.10.0-dev - sp-api
4.0.0-dev - sp-application-crypto
7.0.0 - sp-arithmetic
6.0.0 - sp-authority-discovery
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-beefy
4.0.0-dev - sp-consensus-grandpa
4.0.0-dev - sp-consensus-slots
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-metadata-ir
0.1.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-statement-store
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - sp-trie
7.0.0 - sp-version
5.0.0 - sp-weights
4.0.0 - substrate-state-trie-migration-rpc
4.0.0-dev - tests
0.1.1 - unique-runtime
0.9.43 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - westend-runtime
0.9.43 - xcm
0.9.43 - xcm-builder
0.9.43
- bounded-collections
scale-info-derive
2.9.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum912e55f6d20e0e80d63733872b40e1227c0bce1e1ab81ba67d696339bfd7fd29used byschannel
0.1.22crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88depends onused byschnellru
0.2.1crates.io↘ 3↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum772575a524feeb803e5b0fcbc6dd9f367e579488197c94c6e4023aad2305774ddepends onschnorrkel
0.9.1crates.io↘ 10↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum021b403afe70d81eea68f6ea12f6b3c9588e5d536a94c3bf80f15e7faa267862depends onscopeguard
1.2.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49scratch
1.0.7crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma3cf7c11c38cb994f3d40e8a8cde3bbd1f72a435e4c49e85d6553d8312306152used bysct
0.6.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228cedepends onused bysct
0.7.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4depends onused bysdp
0.5.3crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4d22a5ef407871893fd72b4562ee15e4742269b173959db4b8df6f538c414e13used bysec1
0.3.0crates.io↘ 6↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928sec1
0.7.3crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dcused bysecp256k1
0.24.3crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6b1629c9c557ef9b293568b338dddfc8208c98a18c59d722a9d53f859d9c9b62depends onused bysecp256k1-sys
0.6.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum83080e2c2fc1006e625be82e5d1eb6a43b7fd9578b617fcc55814daf286bba4bdepends onused bysecrecy
0.8.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91edepends onused bysecurity-framework
2.9.2crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4dedepends onused bysecurity-framework-sys
2.9.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7adepends onused bysemver
0.6.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7a3186ec9e65071a2095434b1f5bb24838d4e8e130f584c790f6033c79943537depends onused bysemver
1.0.18crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918depends onsemver-parser
0.7.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3used byserde
1.0.183crates.io↘ 1↖ 135sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum32ac8da02677876d532745a130fc9d8e6edfa81a269b107c5b00829b91d8eb3cdepends onused by- beef
0.5.2 - bincode
1.3.3 - bounded-collections
0.1.8 - bstr
1.6.0 - camino
1.1.6 - cargo-platform
0.1.3 - cargo_metadata
0.15.4 - cid
0.8.6 - cranelift-entity
0.95.1 - cumulus-relay-chain-rpc-interface
0.1.0 - ed25519-dalek
1.0.1 - ethereum
0.14.0 - evm
0.39.1 - evm-core
0.39.0 - fc-rpc
2.0.0-dev - fc-rpc-core
1.1.0-dev - fp-account
1.0.0-dev - fp-evm
3.0.0-dev - fp-self-contained
1.0.0-dev - fp-storage
2.0.0 - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-metadata
15.1.0 - frame-remote-externalities
0.10.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - handlebars
4.3.7 - impl-serde
0.4.0 - indexmap
1.9.3 - jsonrpsee-core
0.16.2 - jsonrpsee-http-client
0.16.2 - jsonrpsee-server
0.16.2 - jsonrpsee-types
0.16.2 - kusama-runtime
0.9.43 - libp2p-webrtc
0.4.0-alpha.4 - libsecp256k1
0.7.1 - mmr-rpc
4.0.0-dev - multiaddr
0.17.1 - opal-runtime
0.9.43 - orml-tokens
0.4.1-dev - orml-traits
0.4.1-dev - orml-utilities
0.4.1-dev - orml-vesting
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-collator-selection
5.0.0 - pallet-conviction-voting
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-foreign-assets
0.1.0 - pallet-offences
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-xcm
0.9.43 - parity-scale-codec
3.6.4 - polkadot-node-primitives
0.9.43 - polkadot-parachain
0.9.43 - polkadot-primitives
0.9.43 - polkadot-runtime
0.9.43 - polkadot-runtime-common
0.9.43 - polkadot-runtime-parachains
0.9.43 - polkadot-service
0.9.43 - quartz-runtime
0.9.43 - rococo-runtime
0.9.43 - rtp
0.6.8 - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-beefy-rpc
4.0.0-dev - sc-consensus-grandpa-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-rpc-api
0.10.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - scale-info
2.9.0 - semver
1.0.18 - serde_json
1.0.105 - serde_spanned
0.6.3 - sp-application-crypto
7.0.0 - sp-arithmetic
6.0.0 - sp-consensus-babe
0.10.0-dev - sp-consensus-beefy
4.0.0-dev - sp-consensus-grandpa
4.0.0-dev - sp-consensus-slots
0.10.0-dev - sp-core
7.0.0 - sp-keystore
0.13.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-rpc
6.0.0 - sp-runtime
7.0.0 - sp-staking
4.0.0-dev - sp-storage
7.0.0 - sp-version
5.0.0 - sp-weights
4.0.0 - ss58-registry
1.42.0 - substrate-rpc-client
0.10.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - time
0.3.25 - tinytemplate
1.2.1 - toml
0.5.11 - toml
0.7.6 - toml_datetime
0.6.3 - toml_edit
0.19.14 - tracing-serde
0.1.3 - tracing-subscriber
0.2.25 - try-runtime-cli
0.10.0-dev - unique-node
0.9.43 - unique-rpc
0.1.2 - unique-runtime
0.9.43 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - wasmtime
8.0.1 - wasmtime-cache
8.0.1 - wasmtime-environ
8.0.1 - wasmtime-jit
8.0.1 - wasmtime-types
8.0.1 - webrtc
0.6.0 - webrtc-dtls
0.7.1 - webrtc-ice
0.9.1 - westend-runtime
0.9.43 - xcm
0.9.43
- beef
serde_derive
1.0.183crates.io↘ 3↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaafe972d60b0b9bee71a91b92fee2d4fb3c9d7e8f6b179aa99f27203d99a4816depends onserde_json
1.0.105crates.io↘ 3↖ 30sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360depends onused by- cargo_metadata
0.15.4 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-rpc-core
1.1.0-dev - frame-benchmarking-cli
4.0.0-dev - handlebars
4.3.7 - jsonrpsee-core
0.16.2 - jsonrpsee-http-client
0.16.2 - jsonrpsee-server
0.16.2 - jsonrpsee-types
0.16.2 - polkadot-service
0.9.43 - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-consensus-grandpa
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-peerset
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-rpc-server
4.0.0-dev - sc-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - ss58-registry
1.42.0 - tinytemplate
1.2.1 - tracing-subscriber
0.2.25 - try-runtime-cli
0.10.0-dev - unique-node
0.9.43 - webrtc
0.6.0 - webrtc-ice
0.9.1
- cargo_metadata
serde_spanned
0.6.3crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186depends onused bysha-1
0.9.8crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6used bysha1
0.10.5crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3depends onused bysha2
0.8.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69used bysha2
0.9.9crates.io↘ 5↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800sha2
0.10.7crates.io↘ 3↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8depends onsha3
0.8.2crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdd26bc0e7a2e3a7c959bc494caf58b72ee0c71d67704e9520f736ca7e4853ecfused bysha3
0.10.8crates.io↘ 2↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60depends onsha3-const
0.1.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb04774de876479a8f712e787f8271b14712971329a4be66c6dff144db7cfc343used bysharded-slab
0.1.4crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31depends onused byshlex
1.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3used bysignal-hook-registry
1.4.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1depends onused bysignature
1.6.4crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7cdepends onsignature
2.1.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500depends onused bysimba
0.8.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum061507c94fc6ab4ba1c9a0305018408e312e17c041eb63bef8aa726fa33aceaeused bysiphasher
0.3.10crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225deused byslab
0.4.8crates.io↘ 1↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2ddepends onslice-group-by
0.3.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7used byslot-range-helper
0.9.43github.com/paritytech/polkadot↘ 5↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25slotmap
1.0.6crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342depends onused bysmallvec
1.11.0crates.io↘ 0↖ 42sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9used by- cfg-expr
0.15.4 - cranelift-codegen
0.95.1 - cranelift-frontend
0.95.1 - cranelift-wasm
0.95.1 - fc-db
2.0.0-dev - frame-support
4.0.0-dev - kusama-runtime
0.9.43 - kusama-runtime-constants
0.9.43 - kvdb
0.13.0 - kvdb-rocksdb
0.19.0 - libp2p-core
0.39.2 - libp2p-dns
0.39.0 - libp2p-identify
0.42.2 - libp2p-kad
0.43.3 - libp2p-mdns
0.43.1 - libp2p-request-response
0.24.1 - libp2p-swarm
0.42.2 - multistream-select
0.12.1 - opal-runtime
0.9.43 - pallet-configuration
0.2.0 - parking_lot_core
0.8.6 - parking_lot_core
0.9.8 - polkadot-node-subsystem-types
0.9.43 - polkadot-runtime
0.9.43 - polkadot-runtime-constants
0.9.43 - quartz-runtime
0.9.43 - regalloc2
0.6.1 - rococo-runtime
0.9.43 - rococo-runtime-constants
0.9.43 - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-sync
0.10.0-dev - sp-state-machine
0.13.0 - sp-weights
4.0.0 - tracing-subscriber
0.2.25 - trie-db
0.24.0 - trie-db
0.27.1 - trust-dns-proto
0.22.0 - trust-dns-resolver
0.22.0 - unique-runtime
0.9.43 - westend-runtime
0.9.43 - westend-runtime-constants
0.9.43
- cfg-expr
snap
1.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5e9f0ab6ef7eb7353d9119c170a436d1bf248eea575ac42d19d12f4e34130831used bysnow
0.9.2crates.io↘ 9↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5ccba027ba85743e09d15c03296797cad56395089b832b48b5a5217880f57733depends onsocket2
0.4.9crates.io↘ 2↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662depends onsocket2
0.5.3crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877depends onused bysoketto
0.7.1crates.io↘ 9↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2depends onsp-api
4.0.0-devgithub.com/paritytech/substrate↘ 13↖ 80sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused by- app-promotion-rpc
0.1.0 - cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-service
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-consensus
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - fc-storage
1.0.0-dev - fp-rpc
3.0.0-dev - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-support
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - kusama-runtime
0.9.43 - mmr-gadget
4.0.0-dev - mmr-rpc
4.0.0-dev - opal-runtime
0.9.43 - pallet-beefy-mmr
4.0.0-dev - pallet-nomination-pools-runtime-api
1.0.0-dev - pallet-staking-runtime-api
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-whitelist
4.0.0-dev - polkadot-client
0.9.43 - polkadot-node-subsystem-types
0.9.43 - polkadot-overseer
0.9.43 - polkadot-primitives
0.9.43 - polkadot-rpc
0.9.43 - polkadot-runtime
0.9.43 - polkadot-runtime-common
0.9.43 - polkadot-runtime-parachains
0.9.43 - polkadot-service
0.9.43 - quartz-runtime
0.9.43 - rococo-runtime
0.9.43 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-block-builder
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-beefy
4.0.0-dev - sc-consensus-grandpa
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-executor
0.10.0-dev - sc-offchain
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-beefy
4.0.0-dev - sp-consensus-grandpa
4.0.0-dev - sp-mmr-primitives
4.0.0-dev - sp-offchain
4.0.0-dev - sp-session
4.0.0-dev - sp-statement-store
4.0.0-dev - sp-transaction-pool
4.0.0-dev - substrate-frame-rpc-system
4.0.0-dev - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.4 - unique-node
0.9.43 - unique-rpc
0.1.2 - unique-runtime
0.9.43 - up-pov-estimate-rpc
0.1.0 - up-rpc
0.1.3 - westend-runtime
0.9.43
- app-promotion-rpc
sp-api-proc-macro
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused bysp-application-crypto
7.0.0github.com/paritytech/substrate↘ 6↖ 29sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40used by- cumulus-client-consensus-aura
0.1.0 - cumulus-pallet-aura-ext
0.1.0 - frame-benchmarking
4.0.0-dev - pallet-aura
4.0.0-dev - pallet-authority-discovery
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-staking
4.0.0-dev - polkadot-dispute-distribution
0.9.43 - polkadot-gossip-support
0.9.43 - polkadot-node-core-approval-voting
0.9.43 - polkadot-node-primitives
0.9.43 - polkadot-node-subsystem-util
0.9.43 - polkadot-primitives
0.9.43 - polkadot-runtime-parachains
0.9.43 - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-beefy
4.0.0-dev - sc-consensus-grandpa
0.10.0-dev - sc-keystore
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-beefy
4.0.0-dev - sp-consensus-grandpa
4.0.0-dev - sp-runtime
7.0.0 - sp-statement-store
4.0.0-dev
- cumulus-client-consensus-aura
sp-arithmetic
6.0.0github.com/paritytech/substrate↘ 7↖ 29sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused by- frame-election-provider-support
4.0.0-dev - frame-support
4.0.0-dev - kusama-runtime
0.9.43 - opal-runtime
0.9.43 - orml-tokens
0.4.1-dev - pallet-configuration
0.2.0 - pallet-election-provider-multi-phase
4.0.0-dev - pallet-message-queue
7.0.0-dev - pallet-nis
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-staking-reward-fn
4.0.0-dev - polkadot-primitives
0.9.43 - polkadot-runtime
0.9.43 - quartz-runtime
0.9.43 - sc-client-db
0.10.0-dev - sc-consensus-beefy
4.0.0-dev - sc-consensus-grandpa
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-network
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-peerset
4.0.0-dev - sc-utils
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-runtime
7.0.0 - sp-weights
4.0.0 - unique-runtime
0.9.43 - xcm-builder
0.9.43 - xcm-executor
0.9.43
- frame-election-provider-support
sp-authority-discovery
4.0.0-devgithub.com/paritytech/substrate↘ 6↖ 11sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onsp-block-builder
4.0.0-devgithub.com/paritytech/substrate↘ 5↖ 19sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40used by- cumulus-client-consensus-aura
0.1.0 - fc-consensus
2.0.0-dev - fc-rpc
2.0.0-dev - kusama-runtime
0.9.43 - opal-runtime
0.9.43 - polkadot-client
0.9.43 - polkadot-rpc
0.9.43 - polkadot-runtime
0.9.43 - polkadot-service
0.9.43 - quartz-runtime
0.9.43 - rococo-runtime
0.9.43 - sc-block-builder
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - substrate-frame-rpc-system
4.0.0-dev - unique-node
0.9.43 - unique-rpc
0.1.2 - unique-runtime
0.9.43 - westend-runtime
0.9.43
- cumulus-client-consensus-aura
sp-blockchain
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 53sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused by- cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-service
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - fc-db
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - fc-storage
1.0.0-dev - frame-benchmarking-cli
4.0.0-dev - mmr-gadget
4.0.0-dev - mmr-rpc
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - polkadot-client
0.9.43 - polkadot-node-core-chain-api
0.9.43 - polkadot-node-core-parachains-inherent
0.9.43 - polkadot-rpc
0.9.43 - polkadot-service
0.9.43 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-block-builder
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-beefy
4.0.0-dev - sc-consensus-epochs
0.10.0-dev - sc-consensus-grandpa
0.10.0-dev - sc-consensus-grandpa-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-informant
0.10.0-dev - sc-network
0.10.0-dev - sc-network-bitswap
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-rpc
4.0.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - substrate-frame-rpc-system
4.0.0-dev - uc-rpc
0.1.4 - unique-node
0.9.43 - unique-rpc
0.1.2
- cumulus-client-consensus-aura
sp-consensus
0.10.0-devgithub.com/paritytech/substrate↘ 8↖ 37sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused by- cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-consensus-proposer
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - fc-consensus
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - mmr-gadget
4.0.0-dev - polkadot-client
0.9.43 - polkadot-network-bridge
0.9.43 - polkadot-node-core-approval-voting
0.9.43 - polkadot-node-core-av-store
0.9.43 - polkadot-rpc
0.9.43 - polkadot-service
0.9.43 - sc-basic-authorship
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-beefy
4.0.0-dev - sc-consensus-grandpa
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-service
0.10.0-dev - sp-blockchain
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev
- cumulus-client-collator
sp-consensus-aura
0.10.0-devgithub.com/paritytech/substrate↘ 11↖ 12sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onsp-consensus-babe
0.10.0-devgithub.com/paritytech/substrate↘ 14↖ 17sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused by- cumulus-relay-chain-minimal-node
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - kusama-runtime
0.9.43 - pallet-babe
4.0.0-dev - polkadot-client
0.9.43 - polkadot-node-core-runtime-api
0.9.43 - polkadot-node-primitives
0.9.43 - polkadot-node-subsystem-types
0.9.43 - polkadot-rpc
0.9.43 - polkadot-runtime
0.9.43 - polkadot-service
0.9.43 - rococo-runtime
0.9.43 - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - try-runtime-cli
0.10.0-dev - westend-runtime
0.9.43
- cumulus-relay-chain-minimal-node
sp-consensus-beefy
4.0.0-devgithub.com/paritytech/substrate↘ 12↖ 11sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onsp-consensus-grandpa
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onsp-consensus-slots
0.10.0-devgithub.com/paritytech/substrate↘ 5↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40sp-core
7.0.0github.com/paritytech/substrate↘ 37↖ 170sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends on- array-bytes
4.2.0 - bitflags
1.3.2 - blake2
0.10.6 - bounded-collections
0.1.8 - bs58
0.4.0 - dyn-clonable
0.9.0 - ed25519-zebra
3.1.0 - futures
0.3.28 - hash-db
0.16.0 - hash256-std-hasher
0.15.2 - impl-serde
0.4.0 - lazy_static
1.4.0 - libsecp256k1
0.7.1 - log
0.4.20 - merlin
2.0.1 - parity-scale-codec
3.6.4 - parking_lot
0.12.1 - paste
1.0.14 - primitive-types
0.12.1 - rand
0.8.5 - regex
1.9.3 - scale-info
2.9.0 - schnorrkel
0.9.1 - secp256k1
0.24.3 - secrecy
0.8.0 - serde
1.0.183 - sp-core-hashing
5.0.0 - sp-debug-derive
5.0.0 - sp-externalities
0.13.0 - sp-runtime-interface
7.0.0 - sp-std
5.0.0 - sp-storage
7.0.0 - ss58-registry
1.42.0 - substrate-bip39
0.4.4 - thiserror
1.0.46 - tiny-bip39
1.0.0 - zeroize
1.6.0
used by- cumulus-client-cli
0.1.0 - cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-service
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-db
2.0.0-dev - fc-rpc
2.0.0-dev - fp-account
1.0.0-dev - fp-consensus
2.0.0-dev - fp-evm
3.0.0-dev - fp-rpc
3.0.0-dev - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-remote-externalities
0.10.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - kusama-runtime
0.9.43 - kusama-runtime-constants
0.9.43 - mmr-gadget
4.0.0-dev - mmr-rpc
4.0.0-dev - opal-runtime
0.9.43 - orml-traits
0.4.1-dev - pallet-app-promotion
0.2.1 - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances-adapter
0.1.0 - pallet-base-fee
1.0.0 - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collator-selection
5.0.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.14 - pallet-configuration
0.2.0 - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-evm-transaction-payment
0.1.1 - pallet-fungible
0.1.11 - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-maintenance
0.1.0 - pallet-membership
4.0.0-dev - pallet-message-queue
7.0.0-dev - pallet-mmr
4.0.0-dev - pallet-nis
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nonfungible
0.1.14 - pallet-preimage
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-refungible
0.2.13 - pallet-session
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - pallet-unique
0.2.1 - pallet-unique-scheduler-v2
0.1.0 - pallet-utility
4.0.0-dev - pallet-xcm
0.9.43 - polkadot-availability-distribution
0.9.43 - polkadot-cli
0.9.43 - polkadot-client
0.9.43 - polkadot-collator-protocol
0.9.43 - polkadot-core-primitives
0.9.43 - polkadot-erasure-coding
0.9.43 - polkadot-gossip-support
0.9.43 - polkadot-node-collation-generation
0.9.43 - polkadot-node-core-pvf
0.9.43 - polkadot-node-core-pvf-worker
0.9.43 - polkadot-node-jaeger
0.9.43 - polkadot-node-primitives
0.9.43 - polkadot-node-subsystem-util
0.9.43 - polkadot-overseer
0.9.43 - polkadot-parachain
0.9.43 - polkadot-primitives
0.9.43 - polkadot-runtime
0.9.43 - polkadot-runtime-common
0.9.43 - polkadot-runtime-constants
0.9.43 - polkadot-runtime-parachains
0.9.43 - polkadot-service
0.9.43 - polkadot-statement-table
0.9.43 - quartz-runtime
0.9.43 - rococo-runtime
0.9.43 - rococo-runtime-constants
0.9.43 - sc-allocator
4.1.0-dev - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-block-builder
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-beefy
4.0.0-dev - sc-consensus-beefy-rpc
4.0.0-dev - sc-consensus-grandpa
0.10.0-dev - sc-consensus-grandpa-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-executor
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-offchain
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sc-state-db
0.10.0-dev - sc-storage-monitor
0.1.0 - sc-sysinfo
6.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sp-api
4.0.0-dev - sp-application-crypto
7.0.0 - sp-consensus
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-beefy
4.0.0-dev - sp-consensus-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-keyring
7.0.0 - sp-keystore
0.13.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-offchain
4.0.0-dev - sp-rpc
6.0.0 - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-state-machine
0.13.0 - sp-statement-store
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - sp-trie
7.0.0 - sp-weights
4.0.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - tests
0.1.1 - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.4 - unique-node
0.9.43 - unique-runtime
0.9.43 - up-common
0.9.43 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - up-rpc
0.1.3 - westend-runtime
0.9.43 - westend-runtime-constants
0.9.43 - xcm-executor
0.9.43
- array-bytes
sp-core-hashing
5.0.0github.com/paritytech/substrate↘ 7↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40sp-core-hashing-proc-macro
5.0.0github.com/paritytech/substrate↘ 4↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40sp-database
4.0.0-devgithub.com/paritytech/substrate↘ 2↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onsp-debug-derive
5.0.0github.com/paritytech/substrate↘ 3↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onsp-externalities
0.13.0github.com/paritytech/substrate↘ 4↖ 14sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40used by- cumulus-pallet-parachain-system
0.1.0 - frame-benchmarking-cli
4.0.0-dev - polkadot-node-core-pvf-worker
0.9.43 - sc-client-api
4.0.0-dev - sc-executor
0.10.0-dev - sc-service
0.10.0-dev - sp-core
7.0.0 - sp-io
7.0.0 - sp-keystore
0.13.0 - sp-runtime-interface
7.0.0 - sp-state-machine
0.13.0 - sp-statement-store
4.0.0-dev - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.4
- cumulus-pallet-parachain-system
sp-inherents
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 34sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused by- cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-proposer
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-primitives-timestamp
0.1.0 - frame-benchmarking-cli
4.0.0-dev - frame-support
4.0.0-dev - kusama-runtime
0.9.43 - opal-runtime
0.9.43 - pallet-timestamp
4.0.0-dev - polkadot-client
0.9.43 - polkadot-node-core-parachains-inherent
0.9.43 - polkadot-primitives
0.9.43 - polkadot-runtime
0.9.43 - polkadot-runtime-common
0.9.43 - polkadot-runtime-parachains
0.9.43 - polkadot-service
0.9.43 - quartz-runtime
0.9.43 - rococo-runtime
0.9.43 - sc-basic-authorship
0.10.0-dev - sc-block-builder
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sp-block-builder
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-timestamp
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - try-runtime-cli
0.10.0-dev - unique-runtime
0.9.43 - westend-runtime
0.9.43
- cumulus-client-consensus-aura
sp-io
7.0.0github.com/paritytech/substrate↘ 19↖ 87sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends on- bytes
1.4.0 - ed25519
1.5.3 - ed25519-dalek
1.0.1 - futures
0.3.28 - libsecp256k1
0.7.1 - log
0.4.20 - parity-scale-codec
3.6.4 - rustversion
1.0.14 - secp256k1
0.24.3 - sp-core
7.0.0 - sp-externalities
0.13.0 - sp-keystore
0.13.0 - sp-runtime-interface
7.0.0 - sp-state-machine
0.13.0 - sp-std
5.0.0 - sp-tracing
6.0.0 - sp-trie
7.0.0 - tracing
0.1.37 - tracing-core
0.1.31
used by- cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-utility
0.1.0 - fc-rpc
2.0.0-dev - fc-storage
1.0.0-dev - fp-account
1.0.0-dev - frame-benchmarking
4.0.0-dev - frame-executive
4.0.0-dev - frame-remote-externalities
0.10.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - kusama-runtime
0.9.43 - opal-runtime
0.9.43 - orml-traits
0.4.1-dev - orml-utilities
0.4.1-dev - orml-vesting
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collator-selection
5.0.0 - pallet-collective
4.0.0-dev - pallet-configuration
0.2.0 - pallet-conviction-voting
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-migration
0.1.1 - pallet-evm-precompile-simple
2.0.0-dev - pallet-fast-unstake
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-membership
4.0.0-dev - pallet-message-queue
7.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-unique
0.2.1 - pallet-unique-scheduler-v2
0.1.0 - pallet-utility
4.0.0-dev - pallet-xcm
0.9.43 - pallet-xcm-benchmarks
0.9.43 - polkadot-cli
0.9.43 - polkadot-node-core-pvf-worker
0.9.43 - polkadot-primitives
0.9.43 - polkadot-runtime
0.9.43 - polkadot-runtime-common
0.9.43 - polkadot-runtime-parachains
0.9.43 - polkadot-service
0.9.43 - quartz-runtime
0.9.43 - rococo-runtime
0.9.43 - sc-executor
0.10.0-dev - sc-sysinfo
6.0.0-dev - sp-application-crypto
7.0.0 - sp-consensus-beefy
4.0.0-dev - sp-runtime
7.0.0 - tests
0.1.1 - try-runtime-cli
0.10.0-dev - unique-node
0.9.43 - unique-runtime
0.9.43 - westend-runtime
0.9.43 - xcm-builder
0.9.43 - xcm-executor
0.9.43
- bytes
sp-keyring
7.0.0github.com/paritytech/substrate↘ 4↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40sp-keystore
0.13.0github.com/paritytech/substrate↘ 7↖ 34sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused by- cumulus-client-consensus-aura
0.1.0 - frame-benchmarking-cli
4.0.0-dev - polkadot-availability-distribution
0.9.43 - polkadot-collator-protocol
0.9.43 - polkadot-dispute-distribution
0.9.43 - polkadot-gossip-support
0.9.43 - polkadot-node-core-backing
0.9.43 - polkadot-node-core-bitfield-signing
0.9.43 - polkadot-node-core-pvf-checker
0.9.43 - polkadot-node-primitives
0.9.43 - polkadot-node-subsystem-util
0.9.43 - polkadot-primitives
0.9.43 - polkadot-rpc
0.9.43 - polkadot-runtime-parachains
0.9.43 - polkadot-service
0.9.43 - polkadot-statement-distribution
0.9.43 - sc-authority-discovery
0.10.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-beefy
4.0.0-dev - sc-consensus-grandpa
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-keystore
4.0.0-dev - sc-rpc
4.0.0-dev - sc-service
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-grandpa
4.0.0-dev - sp-io
7.0.0 - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.4 - unique-node
0.9.43
- cumulus-client-consensus-aura
sp-maybe-compressed-blob
4.1.0-devgithub.com/paritytech/substrate↘ 2↖ 10sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused by- cumulus-client-pov-recovery
0.1.0 - polkadot-cli
0.9.43 - polkadot-node-collation-generation
0.9.43 - polkadot-node-core-candidate-validation
0.9.43 - polkadot-node-core-pvf
0.9.43 - polkadot-node-core-pvf-worker
0.9.43 - polkadot-node-primitives
0.9.43 - polkadot-performance-test
0.9.43 - sc-executor-common
0.10.0-dev - substrate-wasm-builder
5.0.0-dev
- cumulus-client-pov-recovery
sp-metadata-ir
0.1.0github.com/paritytech/substrate↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40used bysp-mmr-primitives
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 11sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onsp-npos-elections
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onsp-offchain
4.0.0-devgithub.com/paritytech/substrate↘ 3↖ 12sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40sp-panic-handler
5.0.0github.com/paritytech/substrate↘ 3↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40sp-rpc
6.0.0github.com/paritytech/substrate↘ 3↖ 5sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onsp-runtime
7.0.0github.com/paritytech/substrate↘ 15↖ 210sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused by- app-promotion-rpc
0.1.0 - cumulus-client-cli
0.1.0 - cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-consensus-proposer
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-client-service
0.1.0 - cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-primitives-utility
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - cumulus-test-relay-sproof-builder
0.1.0 - fc-consensus
2.0.0-dev - fc-db
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - fc-storage
1.0.0-dev - fp-account
1.0.0-dev - fp-consensus
2.0.0-dev - fp-evm
3.0.0-dev - fp-rpc
3.0.0-dev - fp-self-contained
1.0.0-dev - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-remote-externalities
0.10.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-try-runtime
0.10.0-dev - kusama-runtime
0.9.43 - kusama-runtime-constants
0.9.43 - mmr-gadget
4.0.0-dev - mmr-rpc
4.0.0-dev - opal-runtime
0.9.43 - orml-tokens
0.4.1-dev - orml-traits
0.4.1-dev - orml-utilities
0.4.1-dev - orml-vesting
0.4.1-dev - orml-xcm-support
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-app-promotion
0.2.1 - pallet-aura
4.0.0-dev - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-balances-adapter
0.1.0 - pallet-base-fee
1.0.0 - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collator-selection
5.0.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.14 - pallet-conviction-voting
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-election-provider-support-benchmarking
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-transaction-payment
0.1.1 - pallet-fast-unstake
4.0.0-dev - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.11 - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-membership
4.0.0-dev - pallet-message-queue
7.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nis
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nonfungible
0.1.14 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-refungible
0.2.13 - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.2.1 - pallet-unique-scheduler-v2
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-whitelist
4.0.0-dev - pallet-xcm
0.9.43 - pallet-xcm-benchmarks
0.9.43 - polkadot-client
0.9.43 - polkadot-collator-protocol
0.9.43 - polkadot-core-primitives
0.9.43 - polkadot-node-core-approval-voting
0.9.43 - polkadot-node-primitives
0.9.43 - polkadot-parachain
0.9.43 - polkadot-primitives
0.9.43 - polkadot-rpc
0.9.43 - polkadot-runtime
0.9.43 - polkadot-runtime-common
0.9.43 - polkadot-runtime-constants
0.9.43 - polkadot-runtime-parachains
0.9.43 - polkadot-service
0.9.43 - quartz-runtime
0.9.43 - rococo-runtime
0.9.43 - rococo-runtime-constants
0.9.43 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-block-builder
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-beefy
4.0.0-dev - sc-consensus-beefy-rpc
4.0.0-dev - sc-consensus-epochs
0.10.0-dev - sc-consensus-grandpa
0.10.0-dev - sc-consensus-grandpa-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-informant
0.10.0-dev - sc-network
0.10.0-dev - sc-network-bitswap
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-offchain
4.0.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sc-sync-state-rpc
0.10.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - slot-range-helper
0.9.43 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-beefy
4.0.0-dev - sp-consensus-grandpa
4.0.0-dev - sp-inherents
4.0.0-dev - sp-keyring
7.0.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-offchain
4.0.0-dev - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-statement-store
4.0.0-dev - sp-timestamp
4.0.0-dev - sp-transaction-pool
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - sp-version
5.0.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-rpc-client
0.10.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - tests
0.1.1 - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.4 - unique-node
0.9.43 - unique-rpc
0.1.2 - unique-runtime
0.9.43 - up-common
0.9.43 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - up-rpc
0.1.3 - westend-runtime
0.9.43 - westend-runtime-constants
0.9.43 - xcm-builder
0.9.43 - xcm-executor
0.9.43
- app-promotion-rpc
sp-runtime-interface
7.0.0github.com/paritytech/substrate↘ 11↖ 8sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onsp-runtime-interface-proc-macro
6.0.0github.com/paritytech/substrate↘ 5↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40used bysp-session
4.0.0-devgithub.com/paritytech/substrate↘ 7↖ 19sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused by- kusama-runtime
0.9.43 - opal-runtime
0.9.43 - pallet-babe
4.0.0-dev - pallet-beefy
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - polkadot-client
0.9.43 - polkadot-runtime
0.9.43 - polkadot-runtime-common
0.9.43 - polkadot-runtime-parachains
0.9.43 - polkadot-service
0.9.43 - quartz-runtime
0.9.43 - rococo-runtime
0.9.43 - sc-rpc
4.0.0-dev - sc-service
0.10.0-dev - unique-node
0.9.43 - unique-runtime
0.9.43 - westend-runtime
0.9.43
- kusama-runtime
sp-staking
4.0.0-devgithub.com/paritytech/substrate↘ 6↖ 22sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40used by- frame-support
4.0.0-dev - kusama-runtime
0.9.43 - pallet-babe
4.0.0-dev - pallet-beefy
4.0.0-dev - pallet-collator-selection
5.0.0 - pallet-fast-unstake
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-session
4.0.0-dev - pallet-staking
4.0.0-dev - polkadot-primitives
0.9.43 - polkadot-runtime
0.9.43 - polkadot-runtime-common
0.9.43 - polkadot-runtime-parachains
0.9.43 - polkadot-statement-distribution
0.9.43 - rococo-runtime
0.9.43 - sp-session
4.0.0-dev - westend-runtime
0.9.43
- frame-support
sp-state-machine
0.13.0github.com/paritytech/substrate↘ 13↖ 27sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused by- cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-proposer
0.1.0 - cumulus-client-network
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - cumulus-test-relay-sproof-builder
0.1.0 - fc-rpc
2.0.0-dev - fp-rpc
3.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-support
4.0.0-dev - polkadot-service
0.9.43 - sc-chain-spec
4.0.0-dev - sc-client-api
4.0.0-dev - sc-client-db
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-slots
0.10.0-dev - sc-service
0.10.0-dev - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-io
7.0.0 - substrate-state-trie-migration-rpc
4.0.0-dev - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.4
- cumulus-client-consensus-aura
sp-statement-store
4.0.0-devgithub.com/paritytech/substrate↘ 11↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onsp-std
5.0.0github.com/paritytech/substrate↘ 0↖ 158sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40used by- app-promotion-rpc
0.1.0 - cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-primitives-timestamp
0.1.0 - cumulus-primitives-utility
0.1.0 - cumulus-test-relay-sproof-builder
0.1.0 - fp-account
1.0.0-dev - fp-consensus
2.0.0-dev - fp-ethereum
1.0.0-dev - fp-evm
3.0.0-dev - fp-rpc
3.0.0-dev - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-try-runtime
0.10.0-dev - kusama-runtime
0.9.43 - opal-runtime
0.9.43 - orml-tokens
0.4.1-dev - orml-traits
0.4.1-dev - orml-utilities
0.4.1-dev - orml-vesting
0.4.1-dev - orml-xcm-support
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-app-promotion
0.2.1 - pallet-aura
4.0.0-dev - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-balances-adapter
0.1.0 - pallet-beefy
4.0.0-dev - pallet-beefy-mmr
4.0.0-dev - pallet-bounties
4.0.0-dev - pallet-child-bounties
4.0.0-dev - pallet-collator-selection
5.0.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.14 - pallet-configuration
0.2.0 - pallet-conviction-voting
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-evm-transaction-payment
0.1.1 - pallet-fast-unstake
4.0.0-dev - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.11 - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-inflation
0.1.1 - pallet-maintenance
0.1.0 - pallet-membership
4.0.0-dev - pallet-message-queue
7.0.0-dev - pallet-mmr
4.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nis
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nomination-pools-runtime-api
1.0.0-dev - pallet-nonfungible
0.1.14 - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-refungible
0.2.13 - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-structure
0.1.2 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-test-utils
0.1.0 - pallet-timestamp
4.0.0-dev - pallet-tips
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.2.1 - pallet-unique-scheduler-v2
0.1.0 - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-whitelist
4.0.0-dev - pallet-xcm
0.9.43 - pallet-xcm-benchmarks
0.9.43 - polkadot-core-primitives
0.9.43 - polkadot-parachain
0.9.43 - polkadot-primitives
0.9.43 - polkadot-runtime
0.9.43 - polkadot-runtime-common
0.9.43 - polkadot-runtime-metrics
0.9.43 - polkadot-runtime-parachains
0.9.43 - quartz-runtime
0.9.43 - rococo-runtime
0.9.43 - sc-sysinfo
6.0.0-dev - slot-range-helper
0.9.43 - sp-api
4.0.0-dev - sp-application-crypto
7.0.0 - sp-arithmetic
6.0.0 - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-beefy
4.0.0-dev - sp-consensus-grandpa
4.0.0-dev - sp-consensus-slots
0.10.0-dev - sp-core
7.0.0 - sp-core-hashing
5.0.0 - sp-externalities
0.13.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-metadata-ir
0.1.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-runtime
7.0.0 - sp-runtime-interface
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-state-machine
0.13.0 - sp-statement-store
4.0.0-dev - sp-storage
7.0.0 - sp-timestamp
4.0.0-dev - sp-tracing
6.0.0 - sp-transaction-storage-proof
4.0.0-dev - sp-trie
7.0.0 - sp-version
5.0.0 - sp-wasm-interface
7.0.0 - sp-weights
4.0.0 - tests
0.1.1 - unique-runtime
0.9.43 - up-common
0.9.43 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - up-rpc
0.1.3 - westend-runtime
0.9.43 - xcm-builder
0.9.43 - xcm-executor
0.9.43
- app-promotion-rpc
sp-storage
7.0.0github.com/paritytech/substrate↘ 6↖ 13sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused by- cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-rpc
2.0.0-dev - fc-storage
1.0.0-dev - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - polkadot-client
0.9.43 - polkadot-service
0.9.43 - sc-client-api
4.0.0-dev - sc-service
0.10.0-dev - sp-core
7.0.0 - sp-externalities
0.13.0 - sp-runtime-interface
7.0.0
- cumulus-primitives-parachain-inherent
sp-timestamp
4.0.0-devgithub.com/paritytech/substrate↘ 8↖ 11sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused bysp-tracing
6.0.0github.com/paritytech/substrate↘ 5↖ 11sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40sp-transaction-pool
4.0.0-devgithub.com/paritytech/substrate↘ 2↖ 13sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onsp-transaction-storage-proof
4.0.0-devgithub.com/paritytech/substrate↘ 9↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onsp-trie
7.0.0github.com/paritytech/substrate↘ 16↖ 17sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused by- cumulus-client-consensus-common
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - frame-benchmarking-cli
4.0.0-dev - pallet-session
4.0.0-dev - polkadot-erasure-coding
0.9.43 - polkadot-service
0.9.43 - sc-client-db
0.10.0-dev - sc-executor
0.10.0-dev - sc-service
0.10.0-dev - sp-api
4.0.0-dev - sp-io
7.0.0 - sp-state-machine
0.13.0 - sp-transaction-storage-proof
4.0.0-dev - substrate-state-trie-migration-rpc
4.0.0-dev - uc-rpc
0.1.4
- cumulus-client-consensus-common
sp-version
5.0.0github.com/paritytech/substrate↘ 10↖ 17sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused by- cumulus-pallet-parachain-system
0.1.0 - frame-system
4.0.0-dev - kusama-runtime
0.9.43 - opal-runtime
0.9.43 - polkadot-runtime
0.9.43 - quartz-runtime
0.9.43 - rococo-runtime
0.9.43 - sc-cli
0.10.0-dev - sc-executor
0.10.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sp-api
4.0.0-dev - try-runtime-cli
0.10.0-dev - unique-runtime
0.9.43 - westend-runtime
0.9.43
- cumulus-pallet-parachain-system
sp-version-proc-macro
4.0.0-devgithub.com/paritytech/substrate↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40used bysp-wasm-interface
7.0.0github.com/paritytech/substrate↘ 7↖ 6sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onsp-weights
4.0.0github.com/paritytech/substrate↘ 8↖ 15sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused by- frame-support
4.0.0-dev - frame-system
4.0.0-dev - kusama-runtime-constants
0.9.43 - pallet-message-queue
7.0.0-dev - pallet-scheduler
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - polkadot-runtime-constants
0.9.43 - rococo-runtime-constants
0.9.43 - sp-runtime
7.0.0 - try-runtime-cli
0.10.0-dev - westend-runtime-constants
0.9.43 - xcm
0.9.43 - xcm-builder
0.9.43 - xcm-executor
0.9.43
- frame-support
spez
0.1.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc87e960f4dca2788eeb86bbdde8dd246be8948790b7618d656e68f9b720a86e8depends onspin
0.5.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042dused byspinners
4.1.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum08615eea740067d9899969bc2891c68a19c315cb1f66640af9a9ecb91b13bcabdepends onspki
0.6.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212bdepends onused byspki
0.7.2crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184adepends onused byss58-registry
1.42.0crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum14782ef66f16396bc977f43c89b36f2c7b58357a2cc0bf58a09627542c13c379depends onused bystable_deref_trait
1.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3used bystatic_assertions
1.1.0crates.io↘ 0↖ 15sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543fused bystatic_init
0.5.2crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum11b73400442027c4adedda20a9f9b7945234a5bd8d5f7e86da22bd5d0622369cused bystatic_init
1.0.3crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8a2a1c578e98c1c16fc3b8ec1328f7659a500737d7a0c6d625e73e830ff9c1f6depends onused bystatic_init_macro
0.5.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf2261c91034a1edc3fc4d1b80e89d82714faede0515c14a75da10cb941546bbfused bystatic_init_macro
1.0.2crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum70a2595fc3aa78f2d0e45dd425b22282dd863273761cc77780914b2cf3003acfused bystrsim
0.10.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623struct-versioning
0.1.0workspace↘ 2↖ 2depends onstrum
0.24.1crates.io↘ 1↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63fdepends onstrum_macros
0.24.3crates.io↘ 5↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59stun
0.4.4crates.io↘ 11↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma7e94b1ec00bad60e6410e058b52f1c66de3dc5fe4d62d09b3e52bb7d3b73e25depends onsubstrate-bip39
0.4.4crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum49eee6965196b32f882dd2ee85a92b1dbead41b04e53907f269de3b0dc04733cused bysubstrate-build-script-utils
3.0.0github.com/paritytech/substrate↘ 1↖ 4sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onsubstrate-frame-rpc-system
4.0.0-devgithub.com/paritytech/substrate↘ 12↖ 3sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onsubstrate-prometheus-endpoint
0.10.0-devgithub.com/paritytech/substrate↘ 5↖ 25sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40used by- cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - fc-rpc
2.0.0-dev - polkadot-node-metrics
0.9.43 - polkadot-node-subsystem-types
0.9.43 - polkadot-service
0.9.43 - sc-authority-discovery
0.10.0-dev - sc-basic-authorship
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-beefy
4.0.0-dev - sc-consensus-grandpa
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-network-transactions
0.10.0-dev - sc-proposer-metrics
0.10.0-dev - sc-rpc-server
4.0.0-dev - sc-service
0.10.0-dev - sc-transaction-pool
4.0.0-dev - unique-node
0.9.43
- cumulus-client-consensus-aura
substrate-rpc-client
0.10.0-devgithub.com/paritytech/substrate↘ 6↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40substrate-state-trie-migration-rpc
4.0.0-devgithub.com/paritytech/substrate↘ 12↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onused bysubstrate-test-utils
4.0.0-devgithub.com/paritytech/substrate↘ 3↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40substrate-test-utils-derive
0.10.0-devgithub.com/paritytech/substrate↘ 4↖ 1sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40substrate-wasm-builder
5.0.0-devgithub.com/paritytech/substrate↘ 10↖ 7sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends onsubstring
1.4.5crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum42ee6433ecef213b2e72f587ef64a2f5943e7cd16fbd82dbe8bc07486c534c86depends onused bysubtle
2.4.1crates.io↘ 0↖ 28sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601used by- aes-gcm
0.9.4 - aes-gcm
0.10.2 - ccm
0.3.0 - crypto-bigint
0.4.9 - crypto-bigint
0.5.2 - crypto-mac
0.8.0 - crypto-mac
0.11.1 - curve25519-dalek
2.1.3 - curve25519-dalek
3.2.0 - curve25519-dalek
4.0.0-rc.1 - digest
0.10.7 - elliptic-curve
0.12.3 - elliptic-curve
0.13.5 - ff
0.12.1 - ff
0.13.0 - group
0.12.1 - group
0.13.0 - libsecp256k1-core
0.3.0 - rfc6979
0.4.0 - schnorrkel
0.9.1 - sec1
0.3.0 - sec1
0.7.3 - snow
0.9.2 - stun
0.4.4 - universal-hash
0.4.1 - universal-hash
0.5.1 - webrtc-dtls
0.7.1 - webrtc-srtp
0.9.1
- aes-gcm
syn
1.0.109crates.io↘ 3↖ 40sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237used by- asn1-rs-derive
0.1.0 - asn1-rs-derive
0.4.0 - asn1-rs-impl
0.1.0 - auto_impl
1.1.0 - bondrewd-derive
0.3.18 - darling_core
0.14.4 - darling_macro
0.14.4 - data-encoding-macro-internal
0.1.11 - derivative
2.2.0 - derive-syn-parse
0.1.5 - derive_builder_core
0.11.2 - derive_builder_macro
0.11.2 - derive_more
0.99.17 - dyn-clonable-impl
0.9.0 - enum-as-inner
0.5.1 - evm-coder-procedural
0.4.2 - evm-coder-substrate-procedural
0.1.0 - expander
1.0.0 - fatality-proc-macro
0.0.6 - impl-trait-for-tuples
0.2.2 - jsonrpsee-proc-macros
0.16.2 - libp2p-swarm-derive
0.32.0 - mockall_derive
0.11.4 - multihash-derive
0.8.0 - nalgebra-macros
0.2.1 - num_enum_derive
0.5.11 - orchestra-proc-macro
0.0.5 - parity-scale-codec-derive
3.6.4 - precompile-utils-macro
0.1.0 - prettyplease
0.1.25 - proc-macro-error
1.0.4 - prost-build
0.11.9 - prost-derive
0.11.9 - rlp-derive
0.1.0 - scale-info-derive
2.9.0 - static_init_macro
0.5.0 - static_init_macro
1.0.2 - struct-versioning
0.1.0 - strum_macros
0.24.3 - synstructure
0.12.6
- asn1-rs-derive
syn
2.0.28crates.io↘ 3↖ 42sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567used by- async-recursion
1.0.4 - async-trait
0.1.73 - bindgen
0.65.1 - clap_derive
4.3.12 - cumulus-pallet-parachain-system-proc-macro
0.1.0 - cxx-build
1.0.105 - cxxbridge-macro
1.0.105 - displaydoc
0.2.4 - enumflags2_derive
0.7.7 - enumn
0.1.11 - expander
2.0.0 - frame-election-provider-solution-type
4.0.0-dev - frame-support-procedural
4.0.0-dev - frame-support-procedural-tools
4.0.0-dev - frame-support-procedural-tools-derive
3.0.0 - futures-macro
0.3.28 - num_enum_derive
0.6.1 - pallet-staking-reward-curve
4.0.0-dev - pest_generator
2.7.2 - pin-project-internal
1.1.3 - prettyplease
0.2.12 - proc-macro-warning
0.3.1 - prometheus-client-derive-encode
0.4.2 - ref-cast-impl
1.0.19 - sc-chain-spec-derive
4.0.0-dev - sc-tracing-proc-macro
4.0.0-dev - serde_derive
1.0.183 - sp-api-proc-macro
4.0.0-dev - sp-core-hashing-proc-macro
5.0.0 - sp-debug-derive
5.0.0 - sp-runtime-interface-proc-macro
6.0.0 - sp-version-proc-macro
4.0.0-dev - spez
0.1.2 - substrate-test-utils-derive
0.10.0-dev - thiserror-impl
1.0.46 - tokio-macros
2.1.0 - tracing-attributes
0.1.26 - tracing-gum-proc-macro
0.9.43 - wasm-bindgen-backend
0.2.87 - wasm-bindgen-macro-support
0.2.87 - xcm-procedural
0.9.43 - zeroize_derive
1.4.2
- async-recursion
synstructure
0.12.6crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210fsystem-configuration
0.5.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7used bysystem-configuration-sys
0.5.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9depends onused bytap
1.0.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369used bytarget-lexicon
0.12.11crates.io↘ 0↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9d0e916b1148c8e263850e1ebcbd046f333e0683c724876bb0da63ea4373dc8atempfile
3.7.1crates.io↘ 5↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdc02fddf48964c42031a0b3fe0428320ecf3a73c401040fc0096f97794310651termcolor
1.2.0crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbe55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6depends ontermtree
0.4.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76used bytests
0.1.1workspace↘ 26↖ 0depends on- evm-coder
0.4.2 - frame-support
4.0.0-dev - frame-system
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-balances-adapter
0.1.0 - pallet-common
0.1.14 - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-fungible
0.1.11 - pallet-nonfungible
0.1.14 - pallet-refungible
0.2.13 - pallet-structure
0.1.2 - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-unique
0.2.1 - pallet-xcm
0.9.43 - parity-scale-codec
3.6.4 - scale-info
2.9.0 - sp-core
7.0.0 - sp-io
7.0.0 - sp-runtime
7.0.0 - sp-std
5.0.0 - up-data-structs
0.2.2 - up-sponsorship
0.1.0 - xcm
0.9.43
- evm-coder
thiserror
1.0.46crates.io↘ 1↖ 126sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd9207952ae1a003f42d3d5e892dac3c6ba42aa6ac0c79a6a91a2b5cb4253e75cdepends onused by- asn1-rs
0.3.1 - asn1-rs
0.5.2 - bounded-vec
0.7.1 - cargo_metadata
0.15.4 - cumulus-client-consensus-proposer
0.1.0 - cumulus-relay-chain-interface
0.1.0 - fatality
0.0.6 - fatality-proc-macro
0.0.6 - fc-consensus
2.0.0-dev - frame-benchmarking-cli
4.0.0-dev - handlebars
4.3.7 - interceptor
0.8.2 - jsonrpsee-client-transport
0.16.2 - jsonrpsee-core
0.16.2 - jsonrpsee-http-client
0.16.2 - jsonrpsee-types
0.16.2 - libp2p-core
0.39.2 - libp2p-identify
0.42.2 - libp2p-identity
0.1.2 - libp2p-kad
0.43.3 - libp2p-noise
0.42.2 - libp2p-quic
0.7.0-alpha.3 - libp2p-tls
0.1.0 - libp2p-webrtc
0.4.0-alpha.4 - libp2p-yamux
0.43.1 - netlink-packet-utils
0.5.2 - netlink-proto
0.10.0 - orchestra
0.0.5 - pest
2.7.2 - polkadot-availability-distribution
0.9.43 - polkadot-availability-recovery
0.9.43 - polkadot-cli
0.9.43 - polkadot-collator-protocol
0.9.43 - polkadot-dispute-distribution
0.9.43 - polkadot-erasure-coding
0.9.43 - polkadot-network-bridge
0.9.43 - polkadot-node-collation-generation
0.9.43 - polkadot-node-core-approval-voting
0.9.43 - polkadot-node-core-av-store
0.9.43 - polkadot-node-core-backing
0.9.43 - polkadot-node-core-bitfield-signing
0.9.43 - polkadot-node-core-chain-selection
0.9.43 - polkadot-node-core-dispute-coordinator
0.9.43 - polkadot-node-core-parachains-inherent
0.9.43 - polkadot-node-core-provisioner
0.9.43 - polkadot-node-core-pvf-checker
0.9.43 - polkadot-node-jaeger
0.9.43 - polkadot-node-network-protocol
0.9.43 - polkadot-node-primitives
0.9.43 - polkadot-node-subsystem-types
0.9.43 - polkadot-node-subsystem-util
0.9.43 - polkadot-performance-test
0.9.43 - polkadot-service
0.9.43 - polkadot-statement-distribution
0.9.43 - prioritized-metered-channel
0.2.0 - prometheus
0.13.3 - quick-protobuf-codec
0.1.0 - quinn-proto
0.9.4 - redox_users
0.4.3 - reed-solomon-novelpoly
1.0.0 - rtcp
0.7.2 - rtnetlink
0.10.1 - rtp
0.6.8 - sc-allocator
4.1.0-dev - sc-authority-discovery
0.10.0-dev - sc-cli
0.10.0-dev - sc-consensus
0.10.0-dev - sc-consensus-aura
0.10.0-dev - sc-consensus-babe
0.10.0-dev - sc-consensus-babe-rpc
0.10.0-dev - sc-consensus-beefy
4.0.0-dev - sc-consensus-beefy-rpc
4.0.0-dev - sc-consensus-grandpa
0.10.0-dev - sc-consensus-grandpa-rpc
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-executor-common
0.10.0-dev - sc-keystore
4.0.0-dev - sc-network
0.10.0-dev - sc-network-bitswap
0.10.0-dev - sc-network-common
0.10.0-dev - sc-network-light
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-rpc-api
0.10.0-dev - sc-rpc-spec-v2
0.10.0-dev - sc-service
0.10.0-dev - sc-storage-monitor
0.1.0 - sc-sync-state-rpc
0.10.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - sc-transaction-pool-api
4.0.0-dev - sdp
0.5.3 - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-keystore
0.13.0 - sp-maybe-compressed-blob
4.1.0-dev - sp-mmr-primitives
4.0.0-dev - sp-state-machine
0.13.0 - sp-statement-store
4.0.0-dev - sp-timestamp
4.0.0-dev - sp-trie
7.0.0 - sp-version
5.0.0 - stun
0.4.4 - substrate-prometheus-endpoint
0.10.0-dev - tiny-bip39
1.0.0 - trust-dns-proto
0.22.0 - trust-dns-resolver
0.22.0 - turn
0.6.1 - wasm-opt
0.112.0 - wasmtime-cranelift
8.0.1 - wasmtime-environ
8.0.1 - wasmtime-types
8.0.1 - webrtc
0.6.0 - webrtc-data
0.6.0 - webrtc-dtls
0.7.1 - webrtc-ice
0.9.1 - webrtc-mdns
0.5.2 - webrtc-media
0.5.1 - webrtc-sctp
0.7.0 - webrtc-srtp
0.9.1 - webrtc-util
0.7.0 - x509-parser
0.13.2 - x509-parser
0.14.0
- asn1-rs
thiserror-impl
1.0.46crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf1728216d3244de4f14f14f8c15c79be1a7c67867d28d69b719690e2a19fb445depends onused bythousands
0.2.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3bf63baf9f5039dadc247375c29eb13706706cfde997d0330d05aa63a77d8820thread_local
1.1.7crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152depends onused bythreadpool
1.8.1crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaadepends onthrift
0.15.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb82ca8f46f95b3ce96081fe3dd89160fdea970c254bb72925255d1b62aae692eused bytikv-jemalloc-ctl
0.5.4crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum619bfed27d807b54f7f776b9430d4f8060e66ee138a28632ca898584d462c31ctikv-jemalloc-sys
0.5.4+5.3.0-patchedcrates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9402443cb8fd499b6f327e40565234ff34dbda27460c5b47db0db77443dd85d1depends ontime
0.1.45crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805aused bytime
0.3.25crates.io↘ 5↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb0fdd63d58b18d663fbdf70e049f00a22c8e42be082203be7f26589213cd75eatime-core
0.1.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fbused bytime-macros
0.2.11crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumeb71511c991639bb078fd5bf97757e03914361c48100d52878b8e52b46fb92cddepends onused bytiny-bip39
1.0.0crates.io↘ 11↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum62cc94d358b5a1e84a5cb9109f559aa3c4d634d2b1b4de3d0fa4adc7c78e2861depends onused bytiny-keccak
2.0.2crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237depends onused bytinytemplate
1.2.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbe4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bcdepends onused bytinyvec
1.6.0crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50depends ontinyvec_macros
0.1.1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20used bytokio
1.31.0crates.io↘ 11↖ 48sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum40de3a2ba249dcb097e01be5e67a5ff53cf250397715a071a81543e8a832a920depends onused by- cumulus-relay-chain-minimal-node
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - fc-rpc
2.0.0-dev - frame-remote-externalities
0.10.0-dev - h2
0.3.20 - hyper
0.14.27 - hyper-rustls
0.23.2 - if-watch
3.0.1 - interceptor
0.8.2 - jsonrpsee-client-transport
0.16.2 - jsonrpsee-core
0.16.2 - jsonrpsee-http-client
0.16.2 - jsonrpsee-server
0.16.2 - libp2p-mdns
0.43.1 - libp2p-quic
0.7.0-alpha.3 - libp2p-swarm
0.42.2 - libp2p-tcp
0.39.0 - libp2p-webrtc
0.4.0-alpha.4 - netlink-proto
0.10.0 - netlink-sys
0.8.5 - polkadot-node-core-pvf
0.9.43 - polkadot-node-core-pvf-worker
0.9.43 - polkadot-node-jaeger
0.9.43 - rtnetlink
0.10.1 - sc-cli
0.10.0-dev - sc-rpc
4.0.0-dev - sc-rpc-server
4.0.0-dev - sc-service
0.10.0-dev - sc-storage-monitor
0.1.0 - stun
0.4.4 - substrate-prometheus-endpoint
0.10.0-dev - substrate-test-utils
4.0.0-dev - tokio-retry
0.3.0 - tokio-rustls
0.23.4 - tokio-stream
0.1.14 - tokio-util
0.7.8 - trust-dns-proto
0.22.0 - trust-dns-resolver
0.22.0 - turn
0.6.1 - unique-node
0.9.43 - webrtc
0.6.0 - webrtc-data
0.6.0 - webrtc-dtls
0.7.1 - webrtc-ice
0.9.1 - webrtc-mdns
0.5.2 - webrtc-sctp
0.7.0 - webrtc-srtp
0.9.1 - webrtc-util
0.7.0
- cumulus-relay-chain-minimal-node
tokio-macros
2.1.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675edepends onused bytokio-retry
0.3.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7f57eb36ecbe0fc510036adff84824dd3c24bb781e21bfa67b69d556aa85214fdepends ontokio-rustls
0.23.4crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59depends ontokio-stream
0.1.14crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842tokio-util
0.7.8crates.io↘ 7↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7ddepends ontoml
0.5.11crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234depends onused bytoml
0.7.6crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc17e963a819c331dcacd7ab957d80bc2b9a9c1e71c804826d2f283dd65306542toml_datetime
0.6.3crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4bdepends onused bytoml_edit
0.19.14crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8atower
0.4.13crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1ctower-http
0.4.3crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum55ae70283aba8d2a8b411c695c437fe25b8b5e44e23e780662002fc72fb47a82depends onused bytower-layer
0.3.2crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0used bytower-service
0.3.2crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52tracing
0.1.37crates.io↘ 5↖ 35sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8used by- cumulus-client-collator
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-pov-recovery
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - cumulus-relay-chain-rpc-interface
0.1.0 - h2
0.3.20 - hyper
0.14.27 - jsonrpsee
0.16.2 - jsonrpsee-client-transport
0.16.2 - jsonrpsee-core
0.16.2 - jsonrpsee-http-client
0.16.2 - jsonrpsee-server
0.16.2 - jsonrpsee-types
0.16.2 - orchestra
0.0.5 - prioritized-metered-channel
0.2.0 - quinn-proto
0.9.4 - sc-executor
0.10.0-dev - sc-network-gossip
0.10.0-dev - sc-offchain
4.0.0-dev - sc-service
0.10.0-dev - sc-tracing
4.0.0-dev - sp-io
7.0.0 - sp-state-machine
0.13.0 - sp-tracing
6.0.0 - sp-trie
7.0.0 - tokio-util
0.7.8 - tower
0.4.13 - tracing-futures
0.2.5 - tracing-gum
0.9.43 - tracing-subscriber
0.2.25 - trust-dns-proto
0.22.0 - trust-dns-resolver
0.22.0
- cumulus-client-collator
tracing-attributes
0.1.26crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4abdepends onused bytracing-core
0.1.31crates.io↘ 2↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79adepends ontracing-futures
0.2.5crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2depends onused bytracing-gum
0.9.43github.com/paritytech/polkadot↘ 4↖ 29sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends onused by- polkadot-approval-distribution
0.9.43 - polkadot-availability-bitfield-distribution
0.9.43 - polkadot-availability-distribution
0.9.43 - polkadot-availability-recovery
0.9.43 - polkadot-collator-protocol
0.9.43 - polkadot-dispute-distribution
0.9.43 - polkadot-gossip-support
0.9.43 - polkadot-network-bridge
0.9.43 - polkadot-node-collation-generation
0.9.43 - polkadot-node-core-approval-voting
0.9.43 - polkadot-node-core-av-store
0.9.43 - polkadot-node-core-backing
0.9.43 - polkadot-node-core-bitfield-signing
0.9.43 - polkadot-node-core-candidate-validation
0.9.43 - polkadot-node-core-chain-api
0.9.43 - polkadot-node-core-chain-selection
0.9.43 - polkadot-node-core-dispute-coordinator
0.9.43 - polkadot-node-core-parachains-inherent
0.9.43 - polkadot-node-core-provisioner
0.9.43 - polkadot-node-core-pvf
0.9.43 - polkadot-node-core-pvf-checker
0.9.43 - polkadot-node-core-pvf-worker
0.9.43 - polkadot-node-core-runtime-api
0.9.43 - polkadot-node-metrics
0.9.43 - polkadot-node-network-protocol
0.9.43 - polkadot-node-subsystem-util
0.9.43 - polkadot-overseer
0.9.43 - polkadot-service
0.9.43 - polkadot-statement-distribution
0.9.43
- polkadot-approval-distribution
tracing-gum-proc-macro
0.9.43github.com/paritytech/polkadot↘ 5↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25used bytracing-log
0.1.3crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922tracing-serde
0.1.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1depends onused bytracing-subscriber
0.2.25crates.io↘ 15↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71depends ontrie-db
0.24.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum004e1e8f92535694b4cb1444dc5a8073ecf0815e3357f729638b9f8fc4062908used bytrie-db
0.27.1crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum767abe6ffed88a1889671a102c2861ae742726f52e0a5a425b92c9fbfa7e9c85trie-root
0.18.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd4ed310ef5ab98f5fa467900ed906cb9232dd5376597e00fd4cba2a449d06c0bdepends onused bytriehash
0.8.4crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma1631b201eb031b563d2e85ca18ec8092508e262a3196ce9bd10a67ec87b9f5cdepends onused bytrust-dns-proto
0.22.0crates.io↘ 18↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4f7f83d1e4a0e4358ac54c5c3681e5d7da5efc5a7a632c90bb6d6669ddd9bc26depends ontrust-dns-resolver
0.22.0crates.io↘ 12↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaff21aa4dcefb0a1afbfac26deb0adc93888c7d295fb63ab273ef276ba2b7cfedepends onused bytry-runtime-cli
0.10.0-devgithub.com/paritytech/substrate↘ 30↖ 2sourcegit+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40depends on- async-trait
0.1.73 - clap
4.3.21 - frame-remote-externalities
0.10.0-dev - frame-try-runtime
0.10.0-dev - hex
0.4.3 - log
0.4.20 - parity-scale-codec
3.6.4 - sc-cli
0.10.0-dev - sc-executor
0.10.0-dev - sc-service
0.10.0-dev - serde
1.0.183 - serde_json
1.0.105 - sp-api
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-consensus-babe
0.10.0-dev - sp-core
7.0.0 - sp-debug-derive
5.0.0 - sp-externalities
0.13.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-keystore
0.13.0 - sp-rpc
6.0.0 - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - sp-timestamp
4.0.0-dev - sp-transaction-storage-proof
4.0.0-dev - sp-version
5.0.0 - sp-weights
4.0.0 - substrate-rpc-client
0.10.0-dev - zstd
0.12.4
- async-trait
tt-call
1.0.9crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf4f195fd851901624eee5a58c4bb2b4f06399148fcd0ed336e6f1cb60a9881dfused byturn
0.6.1crates.io↘ 11↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum4712ee30d123ec7ae26d1e1b218395a16c87cdbaf4b3925d170d684af62ea5e8depends onused bytwox-hash
1.6.3crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675used bytypenum
1.16.0crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bbauc-rpc
0.1.4workspace↘ 28↖ 2depends on- anyhow
1.0.74 - app-promotion-rpc
0.1.0 - frame-benchmarking
4.0.0-dev - hex-literal
0.4.1 - jsonrpsee
0.16.2 - opal-runtime
0.9.43 - pallet-evm
6.0.0-dev - parity-scale-codec
3.6.4 - quartz-runtime
0.9.43 - sc-client-api
4.0.0-dev - sc-executor
0.10.0-dev - sc-rpc-api
0.10.0-dev - sc-service
0.10.0-dev - sp-api
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-core
7.0.0 - sp-externalities
0.13.0 - sp-keystore
0.13.0 - sp-runtime
7.0.0 - sp-state-machine
0.13.0 - sp-trie
7.0.0 - trie-db
0.24.0 - unique-runtime
0.9.43 - up-common
0.9.43 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - up-rpc
0.1.3 - zstd
0.11.2+zstd.1.5.2
- anyhow
uint
0.9.5crates.io↘ 4↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52unicode-bidi
0.3.13crates.io↘ 0↖ 2unicode-ident
1.0.11crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3cunicode-normalization
0.1.22crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921depends onunicode-width
0.1.10crates.io↘ 0↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8bunicode-xid
0.2.4crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8cunique-node
0.9.43workspace↘ 72↖ 0depends on- app-promotion-rpc
0.1.0 - clap
4.3.21 - cumulus-client-cli
0.1.0 - cumulus-client-consensus-aura
0.1.0 - cumulus-client-consensus-common
0.1.0 - cumulus-client-network
0.1.0 - cumulus-client-service
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-parachain-inherent
0.1.0 - cumulus-relay-chain-inprocess-interface
0.1.0 - cumulus-relay-chain-interface
0.1.0 - cumulus-relay-chain-minimal-node
0.1.0 - fc-consensus
2.0.0-dev - fc-db
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - fc-rpc-core
1.1.0-dev - fp-rpc
3.0.0-dev - fp-storage
2.0.0 - frame-benchmarking
4.0.0-dev - frame-benchmarking-cli
4.0.0-dev - futures
0.3.28 - jsonrpsee
0.16.2 - log
0.4.20 - opal-runtime
0.9.43 - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - parity-scale-codec
3.6.4 - polkadot-cli
0.9.43 - polkadot-primitives
0.9.43 - polkadot-service
0.9.43 - quartz-runtime
0.9.43 - sc-basic-authorship
0.10.0-dev - sc-chain-spec
4.0.0-dev - sc-cli
0.10.0-dev - sc-client-api
4.0.0-dev - sc-consensus
0.10.0-dev - sc-consensus-manual-seal
0.10.0-dev - sc-executor
0.10.0-dev - sc-network
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-rpc
4.0.0-dev - sc-service
0.10.0-dev - sc-sysinfo
6.0.0-dev - sc-telemetry
4.0.0-dev - sc-tracing
4.0.0-dev - sc-transaction-pool
4.0.0-dev - serde
1.0.183 - serde_json
1.0.105 - sp-api
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-core
7.0.0 - sp-io
7.0.0 - sp-keystore
0.13.0 - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-timestamp
4.0.0-dev - sp-transaction-pool
4.0.0-dev - substrate-build-script-utils
3.0.0 - substrate-frame-rpc-system
4.0.0-dev - substrate-prometheus-endpoint
0.10.0-dev - tokio
1.31.0 - try-runtime-cli
0.10.0-dev - uc-rpc
0.1.4 - unique-rpc
0.1.2 - unique-runtime
0.9.43 - up-common
0.9.43 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - up-rpc
0.1.3
- app-promotion-rpc
unique-rpc
0.1.2workspace↘ 28↖ 1depends on- app-promotion-rpc
0.1.0 - fc-db
2.0.0-dev - fc-mapping-sync
2.0.0-dev - fc-rpc
2.0.0-dev - fc-rpc-core
1.1.0-dev - fp-rpc
3.0.0-dev - fp-storage
2.0.0 - jsonrpsee
0.16.2 - pallet-ethereum
4.0.0-dev - pallet-transaction-payment-rpc
4.0.0-dev - sc-client-api
4.0.0-dev - sc-network
0.10.0-dev - sc-network-sync
0.10.0-dev - sc-rpc
4.0.0-dev - sc-rpc-api
0.10.0-dev - sc-service
0.10.0-dev - sc-transaction-pool
4.0.0-dev - serde
1.0.183 - sp-api
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-blockchain
4.0.0-dev - sp-runtime
7.0.0 - substrate-frame-rpc-system
4.0.0-dev - uc-rpc
0.1.4 - up-common
0.9.43 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - up-rpc
0.1.3
used by- app-promotion-rpc
unique-runtime
0.9.43workspace↘ 103↖ 2depends on- app-promotion-rpc
0.1.0 - cumulus-pallet-aura-ext
0.1.0 - cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-timestamp
0.1.0 - cumulus-primitives-utility
0.1.0 - derivative
2.2.0 - evm-coder
0.4.2 - fp-evm
3.0.0-dev - fp-rpc
3.0.0-dev - fp-self-contained
1.0.0-dev - frame-benchmarking
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - hex-literal
0.4.1 - impl-trait-for-tuples
0.2.2 - log
0.4.20 - num_enum
0.5.11 - orml-tokens
0.4.1-dev - orml-traits
0.4.1-dev - orml-vesting
0.4.1-dev - orml-xcm-support
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-app-promotion
0.2.1 - pallet-aura
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-balances-adapter
0.1.0 - pallet-base-fee
1.0.0 - pallet-collator-selection
5.0.0 - pallet-collective
4.0.0-dev - pallet-common
0.1.14 - pallet-configuration
0.2.0 - pallet-democracy
4.0.0-dev - pallet-ethereum
4.0.0-dev - pallet-evm
6.0.0-dev - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-evm-migration
0.1.1 - pallet-evm-precompile-simple
2.0.0-dev - pallet-evm-transaction-payment
0.1.1 - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.11 - pallet-gov-origins
0.2.1 - pallet-identity
4.0.0-dev - pallet-inflation
0.1.1 - pallet-maintenance
0.1.0 - pallet-membership
4.0.0-dev - pallet-nonfungible
0.1.14 - pallet-preimage
4.0.0-dev - pallet-ranked-collective
4.0.0-dev - pallet-referenda
4.0.0-dev - pallet-refungible
0.2.13 - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-structure
0.1.2 - pallet-sudo
4.0.0-dev - pallet-template-transaction-payment
3.0.0 - pallet-test-utils
0.1.0 - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-unique
0.2.1 - pallet-utility
4.0.0-dev - pallet-xcm
0.9.43 - parachain-info
0.1.0 - parity-scale-codec
3.6.4 - polkadot-parachain
0.9.43 - precompile-utils-macro
0.1.0 - scale-info
2.9.0 - serde
1.0.183 - smallvec
1.11.0 - sp-api
4.0.0-dev - sp-arithmetic
6.0.0 - sp-block-builder
4.0.0-dev - sp-consensus-aura
0.10.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-std
5.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - substrate-wasm-builder
5.0.0-dev - up-common
0.9.43 - up-data-structs
0.2.2 - up-pov-estimate-rpc
0.1.0 - up-rpc
0.1.3 - up-sponsorship
0.1.0 - xcm
0.9.43 - xcm-builder
0.9.43 - xcm-executor
0.9.43
used by- app-promotion-rpc
universal-hash
0.4.1crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05depends onused byuniversal-hash
0.5.1crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumfc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07eadepends onused byunsigned-varint
0.7.1crates.io↘ 4↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd86a8dc7f45e4c1b0d30e43038c38f274e77af056aa5f74b93c2cf9eb3c1c836untrusted
0.7.1crates.io↘ 0↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4aup-common
0.9.43workspace↘ 8↖ 7up-data-structs
0.2.2workspace↘ 12↖ 19depends onused by- opal-runtime
0.9.43 - pallet-app-promotion
0.2.1 - pallet-balances-adapter
0.1.0 - pallet-common
0.1.14 - pallet-evm-coder-substrate
0.1.3 - pallet-evm-contract-helpers
0.3.0 - pallet-foreign-assets
0.1.0 - pallet-fungible
0.1.11 - pallet-nonfungible
0.1.14 - pallet-refungible
0.2.13 - pallet-structure
0.1.2 - pallet-unique
0.2.1 - quartz-runtime
0.9.43 - tests
0.1.1 - uc-rpc
0.1.4 - unique-node
0.9.43 - unique-rpc
0.1.2 - unique-runtime
0.9.43 - up-rpc
0.1.3
- opal-runtime
up-pov-estimate-rpc
0.1.0workspace↘ 7↖ 7up-sponsorship
0.1.0github.com/uniquenetwork/pallet-sponsoring↘ 1↖ 7sourcegit+https://github.com/uniquenetwork/pallet-sponsoring?branch=polkadot-v0.9.43#bd6e4a2a97b1415c22f96512b857d9615cbe2f81depends onurl
2.4.0crates.io↘ 3↖ 10sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cbutf8parse
0.2.1crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370auuid
1.4.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869ddepends onused byvaluable
0.1.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6dused byvcpkg
0.2.15crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaccd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426used byversion_check
0.9.4crates.io↘ 0↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483fvoid
1.0.2crates.io↘ 0↖ 8sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887dwaitgroup
0.1.2crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd1f50000a783467e6c0200f9d10642f4bc424e39efc1b770203e88b488f79292depends onwaker-fn
1.1.0crates.io↘ 0↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceecawalkdir
2.3.3crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698depends onwant
0.3.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0edepends onused bywasi
0.9.0+wasi-snapshot-preview1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519used bywasi
0.10.0+wasi-snapshot-preview1crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31fused bywasi
0.11.0+wasi-snapshot-preview1crates.io↘ 0↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423wasm-bindgen
0.2.87crates.io↘ 2↖ 9sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342depends onwasm-bindgen-backend
0.2.87crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abddepends onwasm-bindgen-futures
0.4.37crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03wasm-bindgen-macro
0.2.87crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumdee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1dused bywasm-bindgen-macro-support
0.2.87crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7bused bywasm-instrument
0.3.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaa1dafb3e60065305741e83db35c6c2584bb3725b692b5b66148a38d72ace6cddepends onused bywasm-opt
0.112.0crates.io↘ 8↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum87fef6d0d508f08334e0ab0e6877feb4c0ecb3956bcf2cb950699b22fedf3e9cdepends onwasm-opt-cxx-sys
0.112.0crates.io↘ 4↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbc816bbc1596c8f2e8127e137a760c798023ef3d378f2ae51f0f1840e2dfa445used bywasm-opt-sys
0.112.0crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum40199e4f68ef1071b3c6d0bd8026a12b481865d4b9e49c156932ea9a6234dd14wasm-timer
0.2.5crates.io↘ 7↖ 4sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumbe0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7fdepends onwasmi
0.13.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum06c326c93fbf86419608361a2c925a31754cf109da1b8b55737070b4d6669422used bywasmi_core
0.2.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum57d20cb3c59b788653d99541c646c561c9dd26506f25c0cebfe810659c54c6d7used bywasmi-validation
0.5.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum91ff416ad1ff0c42e5a926ed5d5fab74c0f098749aa0ad8b2a34b982ce0e867bdepends onused bywasmparser
0.102.0crates.io↘ 2↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum48134de3d7598219ab9eaf6b91b15d8e50d31da76b8519fe4ecfcec2cf35104bdepends onwasmtime
8.0.1crates.io↘ 20↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf907fdead3153cb9bfb7a93bbd5b62629472dc06dee83605358c64c52ed3dda9depends onwasmtime-asm-macros
8.0.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd3b9daa7c14cd4fa3edbf69de994408d5f4b7b0959ac13fa69d465f6597f810ddepends onused bywasmtime-cache
8.0.1crates.io↘ 12↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc86437fa68626fe896e5afc69234bb2b5894949083586535f200385adfd71213depends onused bywasmtime-cranelift
8.0.1crates.io↘ 14↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb1cefde0cce8cb700b1b21b6298a3837dba46521affd7b8c38a9ee2c869eee04depends onused bywasmtime-environ
8.0.1crates.io↘ 11↖ 5sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma990198cee4197423045235bf89d3359e69bd2ea031005f4c2d901125955c949depends onwasmtime-jit
8.0.1crates.io↘ 16↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0de48df552cfca1c9b750002d3e07b45772dd033b0b206d5c0968496abf31244depends onused bywasmtime-jit-debug
8.0.1crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6e0554b84c15a27d76281d06838aed94e13a77d7bf604bbbaf548aa20eb93846depends onwasmtime-jit-icache-coherence
8.0.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaecae978b13f7f67efb23bd827373ace4578f2137ec110bbf6a4a7cde4121bbddepends onused bywasmtime-runtime
8.0.1crates.io↘ 16↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum658cf6f325232b6760e202e5255d823da5e348fdea827eff0a2a22319000b441depends onwasmtime-types
8.0.1crates.io↘ 4↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksuma4f6fffd2a1011887d57f07654dd112791e872e3ff4a2e626aee8059ee17f06fweb-sys
0.3.64crates.io↘ 2↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249bdepends onwebpki
0.21.4crates.io↘ 2↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4eadepends onused bywebpki
0.22.0crates.io↘ 2↖ 6sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bddepends onwebpki-roots
0.22.6crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87depends onwebrtc
0.6.0crates.io↘ 33↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2d3bc9049bdb2cea52f5fd4f6f728184225bdb867ed0dc2410eab6df5bdd67bbdepends on- arc-swap
1.6.0 - async-trait
0.1.73 - bytes
1.4.0 - hex
0.4.3 - interceptor
0.8.2 - lazy_static
1.4.0 - log
0.4.20 - rand
0.8.5 - rcgen
0.9.3 - regex
1.9.3 - ring
0.16.20 - rtcp
0.7.2 - rtp
0.6.8 - rustls
0.19.1 - sdp
0.5.3 - serde
1.0.183 - serde_json
1.0.105 - sha2
0.10.7 - stun
0.4.4 - thiserror
1.0.46 - time
0.3.25 - tokio
1.31.0 - turn
0.6.1 - url
2.4.0 - waitgroup
0.1.2 - webrtc-data
0.6.0 - webrtc-dtls
0.7.1 - webrtc-ice
0.9.1 - webrtc-mdns
0.5.2 - webrtc-media
0.5.1 - webrtc-sctp
0.7.0 - webrtc-srtp
0.9.1 - webrtc-util
0.7.0
used by- arc-swap
webrtc-data
0.6.0crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0ef36a4d12baa6e842582fe9ec16a57184ba35e1a09308307b67d43ec8883100depends onused bywebrtc-dtls
0.7.1crates.io↘ 33↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum942be5bd85f072c3128396f6e5a9bfb93ca8c1939ded735d177b7bcba9a13d05depends on- aes
0.6.0 - aes-gcm
0.10.2 - async-trait
0.1.73 - bincode
1.3.3 - block-modes
0.7.0 - byteorder
1.4.3 - ccm
0.3.0 - curve25519-dalek
3.2.0 - der-parser
8.2.0 - elliptic-curve
0.12.3 - hkdf
0.12.3 - hmac
0.12.1 - log
0.4.20 - oid-registry
0.6.1 - p256
0.11.1 - p384
0.11.2 - rand
0.8.5 - rand_core
0.6.4 - rcgen
0.9.3 - ring
0.16.20 - rustls
0.19.1 - sec1
0.3.0 - serde
1.0.183 - sha1
0.10.5 - sha2
0.10.7 - signature
1.6.4 - subtle
2.4.1 - thiserror
1.0.46 - tokio
1.31.0 - webpki
0.21.4 - webrtc-util
0.7.0 - x25519-dalek
2.0.0-pre.1 - x509-parser
0.13.2
used by- aes
webrtc-ice
0.9.1crates.io↘ 16↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum465a03cc11e9a7d7b4f9f99870558fe37a102b65b93f8045392fef7c67b39e80depends onused bywebrtc-mdns
0.5.2crates.io↘ 5↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf08dfd7a6e3987e255c4dbe710dde5d94d0f0574f8a21afa95d171376c143106used bywebrtc-media
0.5.1crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumf72e1650a8ae006017d1a5280efb49e2610c19ccc3c0905b03b648aee9554991used bywebrtc-sctp
0.7.0crates.io↘ 9↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum0d47adcd9427eb3ede33d5a7f3424038f63c965491beafcc20bc650a2f6679c0depends onused bywebrtc-srtp
0.9.1crates.io↘ 16↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum6183edc4c1c6c0175f8812eefdce84dfa0aea9c3ece71c2bf6ddd3c964de3da5depends onused bywebrtc-util
0.7.0crates.io↘ 13↖ 12sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum93f1db1727772c05cf7a2cfece52c3aca8045ca1e176cd517d323489aa3c6d87depends onwestend-runtime
0.9.43github.com/paritytech/polkadot↘ 86↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends on- bitvec
1.0.1 - frame-benchmarking
4.0.0-dev - frame-election-provider-support
4.0.0-dev - frame-executive
4.0.0-dev - frame-support
4.0.0-dev - frame-system
4.0.0-dev - frame-system-benchmarking
4.0.0-dev - frame-system-rpc-runtime-api
4.0.0-dev - frame-try-runtime
0.10.0-dev - hex-literal
0.4.1 - log
0.4.20 - pallet-authority-discovery
4.0.0-dev - pallet-authorship
4.0.0-dev - pallet-babe
4.0.0-dev - pallet-bags-list
4.0.0-dev - pallet-balances
4.0.0-dev - pallet-collective
4.0.0-dev - pallet-democracy
4.0.0-dev - pallet-election-provider-multi-phase
4.0.0-dev - pallet-election-provider-support-benchmarking
4.0.0-dev - pallet-elections-phragmen
5.0.0-dev - pallet-fast-unstake
4.0.0-dev - pallet-grandpa
4.0.0-dev - pallet-identity
4.0.0-dev - pallet-im-online
4.0.0-dev - pallet-indices
4.0.0-dev - pallet-membership
4.0.0-dev - pallet-message-queue
7.0.0-dev - pallet-multisig
4.0.0-dev - pallet-nomination-pools
1.0.0 - pallet-nomination-pools-benchmarking
1.0.0 - pallet-nomination-pools-runtime-api
1.0.0-dev - pallet-offences
4.0.0-dev - pallet-offences-benchmarking
4.0.0-dev - pallet-preimage
4.0.0-dev - pallet-proxy
4.0.0-dev - pallet-recovery
4.0.0-dev - pallet-scheduler
4.0.0-dev - pallet-session
4.0.0-dev - pallet-session-benchmarking
4.0.0-dev - pallet-society
4.0.0-dev - pallet-staking
4.0.0-dev - pallet-staking-reward-curve
4.0.0-dev - pallet-staking-runtime-api
4.0.0-dev - pallet-state-trie-migration
4.0.0-dev - pallet-sudo
4.0.0-dev - pallet-timestamp
4.0.0-dev - pallet-transaction-payment
4.0.0-dev - pallet-transaction-payment-rpc-runtime-api
4.0.0-dev - pallet-treasury
4.0.0-dev - pallet-utility
4.0.0-dev - pallet-vesting
4.0.0-dev - pallet-xcm
0.9.43 - pallet-xcm-benchmarks
0.9.43 - parity-scale-codec
3.6.4 - polkadot-parachain
0.9.43 - polkadot-primitives
0.9.43 - polkadot-runtime-common
0.9.43 - polkadot-runtime-parachains
0.9.43 - rustc-hex
2.1.0 - scale-info
2.9.0 - serde
1.0.183 - serde_derive
1.0.183 - smallvec
1.11.0 - sp-api
4.0.0-dev - sp-authority-discovery
4.0.0-dev - sp-block-builder
4.0.0-dev - sp-consensus-babe
0.10.0-dev - sp-consensus-beefy
4.0.0-dev - sp-core
7.0.0 - sp-inherents
4.0.0-dev - sp-io
7.0.0 - sp-mmr-primitives
4.0.0-dev - sp-npos-elections
4.0.0-dev - sp-offchain
4.0.0-dev - sp-runtime
7.0.0 - sp-session
4.0.0-dev - sp-staking
4.0.0-dev - sp-std
5.0.0 - sp-transaction-pool
4.0.0-dev - sp-version
5.0.0 - substrate-wasm-builder
5.0.0-dev - westend-runtime-constants
0.9.43 - xcm
0.9.43 - xcm-builder
0.9.43 - xcm-executor
0.9.43
used by- bitvec
westend-runtime-constants
0.9.43github.com/paritytech/polkadot↘ 7↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends onused bywhich
4.4.0crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269depends onused bywide
0.7.11crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumaa469ffa65ef7e0ba0f164183697b89b854253fd31aeb92358b7b6155177d62fdepends onused bywidestring
1.0.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8used bywinapi
0.3.9crates.io↘ 2↖ 20sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419winapi-i686-pc-windows-gnu
0.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6used bywinapi-util
0.1.5crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178depends onwinapi-x86_64-pc-windows-gnu
0.4.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183fused bywindows
0.34.0crates.io↘ 5↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum45296b64204227616fdbf2614cefa4c236b98ee64dfaaaa435207ed99fe7829fdepends onused bywindows
0.48.0crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700fdepends onused bywindows_aarch64_gnullvm
0.42.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8used bywindows_aarch64_gnullvm
0.48.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumb10d0c968ba7f6166195e13d593af609ec2e3d24f916f081690695cf5eaffb2fused bywindows_aarch64_msvc
0.34.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum17cffbe740121affb56fad0fc0e421804adf0ae00891205213b5cecd30db881dused bywindows_aarch64_msvc
0.42.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43used bywindows_aarch64_msvc
0.48.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum571d8d4e62f26d4932099a9efe89660e8bd5087775a2ab5cdd8b747b811f1058used bywindows_i686_gnu
0.34.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2564fde759adb79129d9b4f54be42b32c89970c18ebf93124ca8870a498688edused bywindows_i686_gnu
0.42.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumc61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84fused bywindows_i686_gnu
0.48.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2229ad223e178db5fbbc8bd8d3835e51e566b8474bfca58d2e6150c48bb723cdused bywindows_i686_msvc
0.34.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9cd9d32ba70453522332c14d38814bceeb747d80b3958676007acadd7e166956used bywindows_i686_msvc
0.42.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060used bywindows_i686_msvc
0.48.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum600956e2d840c194eedfc5d18f8242bc2e17c7775b6684488af3a9fff6fe3287used bywindows_x86_64_gnu
0.34.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumcfce6deae227ee8d356d19effc141a509cc503dfd1f850622ec4b0f84428e1f4used bywindows_x86_64_gnu
0.42.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36used bywindows_x86_64_gnu
0.48.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumea99ff3f8b49fb7a8e0d305e5aec485bd068c2ba691b6e277d29eaeac945868aused bywindows_x86_64_gnullvm
0.42.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3used bywindows_x86_64_gnullvm
0.48.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8f1a05a1ece9a7a0d5a7ccf30ba2c33e3a61a30e042ffd247567d1de1d94120dused bywindows_x86_64_msvc
0.34.0crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd19538ccc21819d01deaf88d6a17eae6596a12e9aafdbb97916fb49896d89de9used bywindows_x86_64_msvc
0.42.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0used bywindows_x86_64_msvc
0.48.2crates.io↘ 0↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd419259aba16b663966e29e6d7c6ecfa0bb8425818bb96f6f1f3c3eb71a6e7b9used bywindows-sys
0.45.0crates.io↘ 1↖ 7sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0depends onwindows-sys
0.48.0crates.io↘ 1↖ 17sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9depends onwindows-targets
0.42.2crates.io↘ 7↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071depends onused bywindows-targets
0.48.2crates.io↘ 7↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumd1eeca1c172a285ee6c2c84c341ccea837e7c01b12fbb2d0fe3c9e550ce49ec8depends onwinnow
0.5.11crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1e461589e194280efaa97236b73623445efa195aa633fd7004f39805707a9d53depends onused bywinreg
0.50.0crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1depends onused bywyz
0.5.1crates.io↘ 1↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9eddepends onused byx25519-dalek
1.1.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5a0c105152107e3b96f6a00a65e86ce82d9b125230e1c4302940eca58ff71f4fused byx25519-dalek
2.0.0-pre.1crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume5da623d8af10a62342bcbbb230e33e58a63255a58012f8653c578e54bab48dfused byx509-parser
0.13.2crates.io↘ 11↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum9fb9bace5b5589ffead1afb76e43e34cff39cd0f3ce7e170ae0c29e53b88eb1cdepends onused byx509-parser
0.14.0crates.io↘ 10↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume0ecbeb7b67ce215e40e3cc7f2ff902f94a223acf44995934763467e7b1febc8depends onused byxcm
0.9.43github.com/paritytech/polkadot↘ 9↖ 25sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends onused by- cumulus-pallet-dmp-queue
0.1.0 - cumulus-pallet-parachain-system
0.1.0 - cumulus-pallet-xcm
0.1.0 - cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-core
0.1.0 - cumulus-primitives-utility
0.1.0 - kusama-runtime
0.9.43 - opal-runtime
0.9.43 - orml-traits
0.4.1-dev - orml-xcm-support
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-configuration
0.2.0 - pallet-foreign-assets
0.1.0 - pallet-xcm
0.9.43 - pallet-xcm-benchmarks
0.9.43 - polkadot-runtime
0.9.43 - polkadot-runtime-common
0.9.43 - polkadot-runtime-parachains
0.9.43 - quartz-runtime
0.9.43 - rococo-runtime
0.9.43 - tests
0.1.1 - unique-runtime
0.9.43 - westend-runtime
0.9.43 - xcm-builder
0.9.43 - xcm-executor
0.9.43
- cumulus-pallet-dmp-queue
xcm-builder
0.9.43github.com/paritytech/polkadot↘ 15↖ 9sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends onxcm-executor
0.9.43github.com/paritytech/polkadot↘ 13↖ 16sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25depends onused by- cumulus-pallet-xcmp-queue
0.1.0 - cumulus-primitives-utility
0.1.0 - kusama-runtime
0.9.43 - opal-runtime
0.9.43 - orml-xcm-support
0.4.1-dev - orml-xtokens
0.4.1-dev - pallet-foreign-assets
0.1.0 - pallet-xcm
0.9.43 - pallet-xcm-benchmarks
0.9.43 - polkadot-runtime
0.9.43 - polkadot-runtime-parachains
0.9.43 - quartz-runtime
0.9.43 - rococo-runtime
0.9.43 - unique-runtime
0.9.43 - westend-runtime
0.9.43 - xcm-builder
0.9.43
- cumulus-pallet-xcmp-queue
xcm-procedural
0.9.43github.com/paritytech/polkadot↘ 4↖ 1sourcegit+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25used byyamux
0.10.2crates.io↘ 6↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume5d9ba232399af1783a58d8eb26f6b5006fbefe2dc9ef36bd283324792d03ea5used byyasna
0.5.2crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksume17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cddepends onzeroize
1.6.0crates.io↘ 1↖ 29sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9depends onused by- chacha20
0.8.2 - chacha20poly1305
0.9.1 - crypto-bigint
0.4.9 - crypto-bigint
0.5.2 - curve25519-dalek
2.1.3 - curve25519-dalek
3.2.0 - curve25519-dalek
4.0.0-rc.1 - der
0.6.1 - der
0.7.8 - ed25519-dalek
1.0.1 - ed25519-zebra
3.1.0 - elliptic-curve
0.12.3 - elliptic-curve
0.13.5 - generic-array
0.14.7 - libp2p-identity
0.1.2 - libp2p-noise
0.42.2 - merlin
2.0.1 - rfc6979
0.3.1 - sc-network
0.10.0-dev - sc-network-common
0.10.0-dev - schnorrkel
0.9.1 - sec1
0.3.0 - sec1
0.7.3 - secrecy
0.8.0 - sp-core
7.0.0 - substrate-bip39
0.4.4 - tiny-bip39
1.0.0 - x25519-dalek
1.1.1 - x25519-dalek
2.0.0-pre.1
- chacha20
zeroize_derive
1.4.2crates.io↘ 3↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69depends onused byzstd
0.11.2+zstd.1.5.2crates.io↘ 1↖ 3sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4depends onzstd
0.12.4crates.io↘ 1↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1a27595e173641171fc74a1232b7b1c7a7cb6e18222c11e9dfb9888fa424c53cdepends onzstd-safe
5.0.2+zstd.1.5.2crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4dbdepends onused byzstd-safe
6.0.6crates.io↘ 2↖ 1sourceregistry+https://github.com/rust-lang/crates.io-indexchecksumee98ffd0b48ee95e6c5168188e44a54550b1564d9d530ee21d5f0eaed1069581depends onused byzstd-sys
2.0.8+zstd.1.5.5crates.io↘ 3↖ 2sourceregistry+https://github.com/rust-lang/crates.io-indexchecksum5556e6ee25d32df2586c098bbfa278803692a20d0ab9565e049480d52707ec8cdepends on
Cargo.tomldiffbeforeafterboth--- a/Cargo.toml
+++ b/Cargo.toml
@@ -11,7 +11,7 @@
'runtime/tests',
'runtime/unique',
]
-package.version = "0.9.43"
+package.version = "1.1.0"
resolver = "2"
[profile.release]
@@ -25,18 +25,16 @@
opt-level = 3
[profile.integration-tests]
-inherits = "release"
debug-assertions = true
+inherits = "release"
[workspace.dependencies]
# Unique
app-promotion-rpc = { path = "primitives/app_promotion_rpc", default-features = false }
-evm-coder = { version = "0.4.2", default-features = false, features = [
- 'bondrewd',
-] }
+evm-coder = { version = "0.4.2", default-features = false, features = ['bondrewd'] }
pallet-app-promotion = { path = "pallets/app-promotion", default-features = false }
pallet-balances-adapter = { default-features = false, path = "pallets/balances-adapter" }
-pallet-charge-transaction = { package = "pallet-template-transaction-payment", default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.43" }
+pallet-charge-transaction = { package = "pallet-template-transaction-payment", default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v1.1.0" }
pallet-collator-selection = { default-features = false, path = "pallets/collator-selection" }
pallet-common = { default-features = false, path = "pallets/common" }
pallet-configuration = { default-features = false, path = "pallets/configuration" }
@@ -55,7 +53,6 @@
pallet-structure = { default-features = false, path = "pallets/structure" }
pallet-test-utils = { default-features = false, path = "test-pallets/utils" }
pallet-unique = { path = "pallets/unique", default-features = false }
-pallet-unique-scheduler-v2 = { path = "pallets/scheduler-v2", default-features = false }
precompile-utils-macro = { path = "runtime/common/ethereum/precompiles/utils/macro" }
struct-versioning = { path = "crates/struct-versioning" }
uc-rpc = { path = "client/rpc" }
@@ -64,7 +61,7 @@
up-data-structs = { path = "primitives/data-structs", default-features = false }
up-pov-estimate-rpc = { path = "primitives/pov-estimate-rpc", default-features = false }
up-rpc = { path = "primitives/rpc", default-features = false }
-up-sponsorship = { default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.43" }
+up-sponsorship = { default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v1.1.0" }
# Unique: Runtimes
opal-runtime = { path = "runtime/opal" }
@@ -72,132 +69,138 @@
unique-runtime = { path = "runtime/unique" }
# Frontier (Unique patches over the Parity version)
-fc-consensus = { git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.43" }
-fc-db = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.43" }
-fc-mapping-sync = { git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.43" }
-fc-rpc = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.43" }
-fc-rpc-core = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.43" }
-fp-evm = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.43" }
-fp-rpc = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.43" }
-fp-self-contained = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.43" }
-fp-storage = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.43" }
-pallet-base-fee = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.43" }
-pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.43" }
-pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.43" }
-pallet-evm-precompile-simple = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.43" }
+fc-api = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v1.1.0" }
+fc-consensus = { git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v1.1.0" }
+fc-db = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v1.1.0" }
+fc-mapping-sync = { git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v1.1.0" }
+fc-rpc = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v1.1.0" }
+fc-rpc-core = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v1.1.0" }
+fp-evm = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v1.1.0" }
+fp-rpc = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v1.1.0" }
+fp-self-contained = { default-features = false, features = [
+ "serde",
+], git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v1.1.0" }
+fp-storage = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v1.1.0" }
+pallet-base-fee = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v1.1.0" }
+pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v1.1.0" }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v1.1.0" }
+pallet-evm-precompile-simple = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v1.1.0" }
# Parity
-codec = { default-features = false, features = ['derive'], package = 'parity-scale-codec', version = "3.2.2" }
-cumulus-client-cli = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.43" }
-cumulus-client-consensus-aura = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.43" }
-cumulus-client-consensus-common = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.43" }
-cumulus-client-network = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.43" }
-cumulus-client-service = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.43" }
-cumulus-pallet-aura-ext = { default-features = false, git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.43" }
-cumulus-pallet-dmp-queue = { default-features = false, git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.43" }
-cumulus-pallet-parachain-system = { default-features = false, git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.43" }
-cumulus-pallet-xcm = { default-features = false, git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.43" }
-cumulus-pallet-xcmp-queue = { default-features = false, git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.43" }
-cumulus-primitives-core = { default-features = false, git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.43" }
-cumulus-primitives-parachain-inherent = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.43" }
-cumulus-primitives-timestamp = { default-features = false, git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.43" }
-cumulus-primitives-utility = { default-features = false, git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.43" }
-cumulus-relay-chain-inprocess-interface = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.43" }
-cumulus-relay-chain-interface = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.43" }
-cumulus-relay-chain-minimal-node = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.43" }
-frame-executive = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-frame-system-rpc-runtime-api = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-pallet-aura = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-pallet-authorship = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-pallet-balances = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-pallet-collective = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-pallet-democracy = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-pallet-membership = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-pallet-preimage = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-pallet-ranked-collective = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-pallet-referenda = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-pallet-scheduler = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-pallet-session = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-pallet-state-trie-migration = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-pallet-sudo = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-pallet-timestamp = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-pallet-utility = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-pallet-transaction-payment = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-pallet-transaction-payment-rpc = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-pallet-transaction-payment-rpc-runtime-api = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-pallet-treasury = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-pallet-xcm = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.43", default-features = false }
-parachain-info = { default-features = false, git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.43" }
-parity-scale-codec = { version = "3.2.2", features = ["derive"], default-features = false }
-polkadot-cli = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.43" }
-polkadot-parachain = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.43", default-features = false }
-polkadot-primitives = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.43" }
-polkadot-service = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.43" }
-sc-basic-authorship = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sc-chain-spec = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sc-cli = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sc-consensus = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sc-consensus-manual-seal = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sc-executor = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sc-network = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sc-network-sync = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sc-rpc = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sc-rpc-api = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sc-service = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sc-sysinfo = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sc-telemetry = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sc-tracing = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sc-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-scale-info = { version = "2.1.1", default-features = false, features = ["derive"] }
-sp-api = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sp-arithmetic = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sp-block-builder = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sp-consensus-aura = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sp-externalities = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sp-inherents = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sp-io = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sp-offchain = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sp-session = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sp-staking = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sp-state-machine = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sp-timestamp = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sp-tracing = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sp-transaction-pool = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sp-trie = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-sp-version = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-substrate-frame-rpc-system = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-substrate-prometheus-endpoint = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-xcm = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.43", default-features = false }
-xcm-builder = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.43", default-features = false }
-xcm-executor = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.43", default-features = false }
+codec = { default-features = false, features = ['derive'], package = 'parity-scale-codec', version = "3.6.5" }
+cumulus-client-cli = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+cumulus-client-collator = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+cumulus-client-consensus-aura = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+cumulus-client-consensus-common = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+cumulus-client-consensus-proposer = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+cumulus-client-network = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+cumulus-client-service = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+cumulus-pallet-aura-ext = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+cumulus-pallet-dmp-queue = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+cumulus-pallet-parachain-system = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+cumulus-pallet-xcm = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+cumulus-pallet-xcmp-queue = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+cumulus-primitives-core = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+cumulus-primitives-parachain-inherent = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+cumulus-primitives-timestamp = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+cumulus-primitives-utility = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+cumulus-relay-chain-inprocess-interface = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+cumulus-relay-chain-interface = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+cumulus-relay-chain-minimal-node = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+frame-executive = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+frame-support = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+frame-system = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+frame-system-rpc-runtime-api = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+pallet-aura = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+pallet-authorship = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+pallet-balances = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+pallet-collective = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+pallet-democracy = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+pallet-membership = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+pallet-preimage = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+pallet-ranked-collective = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+pallet-referenda = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+pallet-scheduler = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+pallet-session = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+pallet-state-trie-migration = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+pallet-sudo = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+pallet-timestamp = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+pallet-transaction-payment = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+pallet-transaction-payment-rpc = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+pallet-transaction-payment-rpc-runtime-api = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+pallet-treasury = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+pallet-utility = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+pallet-xcm = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false }
+parachain-info = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+parity-scale-codec = { version = "3.6.5", features = ["derive"], default-features = false }
+polkadot-cli = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+polkadot-parachain-primitives = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false }
+polkadot-primitives = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+polkadot-service = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sc-basic-authorship = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sc-chain-spec = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sc-cli = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sc-client-api = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sc-consensus = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sc-consensus-manual-seal = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sc-executor = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sc-network = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sc-network-sync = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sc-rpc = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sc-rpc-api = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sc-service = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sc-sysinfo = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sc-telemetry = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sc-tracing = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sc-transaction-pool = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+scale-info = { version = "2.9.0", default-features = false, features = ["derive"] }
+sp-api = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sp-arithmetic = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sp-block-builder = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sp-blockchain = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sp-consensus-aura = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sp-core = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sp-externalities = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sp-inherents = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sp-io = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sp-keystore = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sp-offchain = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sp-runtime = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sp-session = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sp-staking = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sp-state-machine = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sp-std = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sp-timestamp = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sp-tracing = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sp-transaction-pool = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sp-trie = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sp-version = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sp-weights = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+staging-xcm = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false }
+staging-xcm-builder = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false }
+staging-xcm-executor = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false }
+substrate-frame-rpc-system = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+substrate-prometheus-endpoint = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
# Parity: Build utils
-substrate-build-script-utils = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-substrate-wasm-builder = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
+substrate-build-script-utils = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+substrate-wasm-builder = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
# Parity: Benchmarking
-frame-benchmarking = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-frame-benchmarking-cli = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-frame-system-benchmarking = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
+frame-benchmarking = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+frame-benchmarking-cli = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+frame-system-benchmarking = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
# Parity: Try Runtime
-frame-try-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-try-runtime-cli = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
+frame-try-runtime = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+try-runtime-cli = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
# ORML
-orml-tokens = { default-features = false, git = "https://github.com/open-web3-stack/open-runtime-module-library", branch = "polkadot-v0.9.43" }
-orml-traits = { default-features = false, git = "https://github.com/open-web3-stack/open-runtime-module-library", branch = "polkadot-v0.9.43" }
-orml-vesting = { default-features = false, git = "https://github.com/open-web3-stack/open-runtime-module-library", branch = "polkadot-v0.9.43" }
-orml-xcm-support = { default-features = false, git = "https://github.com/open-web3-stack/open-runtime-module-library", branch = "polkadot-v0.9.43" }
-orml-xtokens = { default-features = false, git = "https://github.com/open-web3-stack/open-runtime-module-library", branch = "polkadot-v0.9.43" }
+orml-tokens = { default-features = false, git = "https://github.com/moonbeam-foundation/open-runtime-module-library", branch = "upgrade-to-polkadot-v1.1.0" }
+orml-traits = { default-features = false, git = "https://github.com/moonbeam-foundation/open-runtime-module-library", branch = "upgrade-to-polkadot-v1.1.0" }
+orml-vesting = { default-features = false, git = "https://github.com/moonbeam-foundation/open-runtime-module-library", branch = "upgrade-to-polkadot-v1.1.0" }
+orml-xcm-support = { default-features = false, git = "https://github.com/moonbeam-foundation/open-runtime-module-library", branch = "upgrade-to-polkadot-v1.1.0" }
+orml-xtokens = { default-features = false, git = "https://github.com/moonbeam-foundation/open-runtime-module-library", branch = "upgrade-to-polkadot-v1.1.0" }
# Other
derivative = { version = "2.2.0", features = ["use_core"] }
@@ -205,8 +208,8 @@
evm-core = { git = "https://github.com/rust-blockchain/evm", rev = "b7b82c7e1fc57b7449d6dfa6826600de37cc1e65", default-features = false }
hex-literal = "0.4.1"
impl-trait-for-tuples = "0.2.2"
-jsonrpsee = { version = "0.16.2", features = ["macros", "server"] }
-log = { version = "0.4.16", default-features = false }
-num_enum = { version = "0.5.3", default-features = false }
-serde = { default-features = false, features = ['derive'], version = "1.0.136" }
-smallvec = "1.6.1"
+jsonrpsee = { version = "0.16.3", features = ["macros", "server"] }
+log = { version = "0.4.20", default-features = false }
+num_enum = { version = "0.7.0", default-features = false }
+serde = { default-features = false, features = ['derive'], version = "1.0.188" }
+smallvec = "1.11.1"
Makefilediffbeforeafterboth--- a/Makefile
+++ b/Makefile
@@ -128,10 +128,6 @@
bench-structure:
make _bench PALLET=structure
-.PHONY: bench-scheduler
-bench-scheduler:
- make _bench PALLET=unique-scheduler-v2 PALLET_DIR=scheduler-v2
-
.PHONY: bench-foreign-assets
bench-foreign-assets:
make _bench PALLET=foreign-assets
@@ -157,7 +153,6 @@
make _bench PALLET=xcm OUTPUT=./runtime/common/weights/xcm.rs TEMPLATE="--template=.maintain/external-weight-template.hbs"
.PHONY: bench
-# Disabled: bench-scheduler
bench: bench-app-promotion bench-common bench-evm-migration bench-unique bench-structure bench-fungible bench-refungible bench-nonfungible bench-configuration bench-foreign-assets bench-maintenance bench-xcm bench-collator-selection bench-identity
.PHONY: check
README.mddiffbeforeafterboth--- a/README.md
+++ b/README.md
@@ -84,13 +84,6 @@
Note: checkout this project and all related projects (see below) in the sibling folders (both under the same folder)
-### Polkadot launch utility
-
-```
-git clone https://github.com/UniqueNetwork/polkadot-launch.git
-git checkout unique-network
-```
-
### Build relay
```
@@ -118,14 +111,22 @@
## Running as Parachain locally
-```
-./launch-testnet.sh
-```
+### Dev mode
-Optional, full setup with Acala and Statemint
-```
-./launch-testnet-full.sh
-```
+You can launch the node in the dev mode where blocks are sealed automatically each 500 ms or on each new transaction.
+
+* Opal Runtime: `cargo run --release -- --dev`
+* Quartz Runtime: `cargo run --release --features quartz-runtime -- --dev`
+* Unique Runtime: `cargo run --release --features unique-runtime -- --dev`
+
+ You can tweak the dev mode with the following CLI options:
+ * --idle-autoseal-interval <IDLE_AUTOSEAL_INTERVAL>
+ When running the node in the `--dev` mode, an empty block will be sealed automatically after the `<IDLE_AUTOSEAL_INTERVAL>` milliseconds.
+ * --disable-autoseal-on-tx
+ Disable auto-sealing blocks on new transactions in the `--dev` mode
+ * --autoseal-finalization-delay <AUTOSEAL_FINALIZATION_DELAY>
+ Finalization delay (in seconds) of auto-sealed blocks in the `--dev` mode.
+ Disabled by default.
## Run Integration Tests
client/rpc/Cargo.tomldiffbeforeafterboth--- a/client/rpc/Cargo.toml
+++ b/client/rpc/Cargo.toml
@@ -5,14 +5,12 @@
version = "0.1.4"
[dependencies]
-anyhow = "1.0.57"
-jsonrpsee = { version = "0.16.2", features = ["macros", "server"] }
-trie-db = { version = "0.24.0", default-features = false }
-zstd = { version = "0.11.2", default-features = false }
+anyhow = "1.0.75"
+jsonrpsee = { version = "0.16.3", features = ["macros", "server"] }
+parity-scale-codec = { workspace = true }
+trie-db = { version = "0.27.1", default-features = false }
+zstd = { version = "0.12.4", default-features = false }
-# Note: `package = "parity-scale-codec"` must be supplied since the `Encode` macro searches for it.
-codec = { workspace = true, package = "parity-scale-codec" }
-
app-promotion-rpc = { workspace = true }
up-common = { workspace = true }
up-data-structs = { workspace = true }
@@ -44,12 +42,8 @@
hex-literal = { workspace = true }
[features]
+all-runtimes = ['opal-runtime', 'quartz-runtime', 'unique-runtime']
default = ['opal-runtime']
-all-runtimes = [
- 'opal-runtime',
- 'quartz-runtime',
- 'unique-runtime',
-]
pov-estimate = [
'opal-runtime/pov-estimate',
'quartz-runtime?/pov-estimate',
client/rpc/src/lib.rsdiffbeforeafterboth--- a/client/rpc/src/lib.rs
+++ b/client/rpc/src/lib.rs
@@ -17,23 +17,19 @@
// Original License
use std::sync::Arc;
-use codec::Decode;
-use jsonrpsee::{
- core::{RpcResult as Result},
- proc_macros::rpc,
-};
use anyhow::anyhow;
+use app_promotion_rpc::AppPromotionApi as AppPromotionRuntimeApi;
+pub use app_promotion_unique_rpc::AppPromotionApiServer;
+use jsonrpsee::{core::RpcResult as Result, proc_macros::rpc};
+use parity_scale_codec::Decode;
+use sp_api::{ApiExt, BlockT, ProvideRuntimeApi};
+use sp_blockchain::HeaderBackend;
use sp_runtime::traits::{AtLeast32BitUnsigned, Member};
use up_data_structs::{
- RpcCollection, CollectionId, CollectionStats, CollectionLimits, TokenId, Property,
- PropertyKeyPermission, TokenData, TokenChild,
+ CollectionId, CollectionLimits, CollectionStats, Property, PropertyKeyPermission,
+ RpcCollection, TokenChild, TokenData, TokenId,
};
-use sp_api::{BlockT, ProvideRuntimeApi, ApiExt};
-use sp_blockchain::HeaderBackend;
use up_rpc::UniqueApi as UniqueRuntimeApi;
-use app_promotion_rpc::AppPromotionApi as AppPromotionRuntimeApi;
-
-pub use app_promotion_unique_rpc::AppPromotionApiServer;
#[cfg(feature = "pov-estimate")]
pub mod pov_estimate;
@@ -549,16 +545,16 @@
keys.map(|keys| keys.into_iter().map(|key| key.into_bytes()).collect())
}
-fn decode_collection_from_bytes<T: codec::Decode>(
+fn decode_collection_from_bytes<T: parity_scale_codec::Decode>(
bytes: &[u8],
-) -> core::result::Result<T, codec::Error> {
- let mut reader = codec::IoReader(bytes);
+) -> core::result::Result<T, parity_scale_codec::Error> {
+ let mut reader = parity_scale_codec::IoReader(bytes);
T::decode(&mut reader)
}
fn detect_type_and_decode_collection<AccountId: Decode>(
bytes: &[u8],
-) -> core::result::Result<RpcCollection<AccountId>, codec::Error> {
+) -> core::result::Result<RpcCollection<AccountId>, parity_scale_codec::Error> {
use up_data_structs::{CollectionVersion1, RpcCollectionVersion1};
decode_collection_from_bytes::<RpcCollection<AccountId>>(bytes)
@@ -574,11 +570,12 @@
#[cfg(test)]
mod tests {
- use super::*;
- use codec::IoReader;
use hex_literal::hex;
+ use parity_scale_codec::IoReader;
use up_data_structs::{CollectionVersion1, RawEncoded};
+ use super::*;
+
const ENCODED_COLLECTION_V1: [u8; 180] = hex!("aab94a1ee784bc17f68d76d4d48d736916ca6ff6315b8c1fa1175726c8345a390000285000720069006d00610020004c00690076006500d04500730065006d00700069006f00200064006900200063007200650061007a0069006f006e006500200064006900200075006e00610020006e0075006f0076006100200063006f006c006c0065007a0069006f006e00650020006400690020004e004600540021000c464e5400000000000000000000000000000000");
const ENCODED_RPC_COLLECTION_V2: [u8; 618] = hex!("d00dcc24bf66750d3809aa26884b930ec8a3094d6f6f19fdc62020b2fbec013400604d0069006e007400460065007300740020002d002000460075006e006e007900200061006e0069006d0061006c0073008c430072006f00730073006f0076006500720020006200650074007700650065006e00200061006e0069006d0061006c00730020002d00200066006f0072002000660075006e00104d46464100000000000000000000010001000100000004385f6f6c645f636f6e7374446174610001000c5c5f6f6c645f636f6e73744f6e436861696e536368656d6139047b226e6573746564223a7b226f6e436861696e4d65746144617461223a7b226e6573746564223a7b224e46544d657461223a7b226669656c6473223a7b22697066734a736f6e223a7b226964223a312c2272756c65223a227265717569726564222c2274797065223a22737472696e67227d2c2248656164223a7b226964223a322c2272756c65223a227265717569726564222c2274797065223a22737472696e67227d2c22426f6479223a7b226964223a332c2272756c65223a227265717569726564222c2274797065223a22737472696e67227d2c225461696c223a7b226964223a342c2272756c65223a227265717569726564222c2274797065223a22737472696e67227d7d7d7d7d7d7d485f6f6c645f736368656d6156657273696f6e18556e69717565685f6f6c645f7661726961626c654f6e436861696e536368656d6111017b22636f6c6c656374696f6e436f766572223a22516d53557a7139354c357a556777795a584d3731576a3762786b36557048515468633162536965347766706e5435227d000000");
client/rpc/src/pov_estimate.rsdiffbeforeafterboth--- a/client/rpc/src/pov_estimate.rs
+++ b/client/rpc/src/pov_estimate.rs
@@ -16,39 +16,31 @@
use std::sync::Arc;
-use codec::{Encode, Decode};
-use sp_externalities::Extensions;
-
-use up_pov_estimate_rpc::{PovEstimateApi as PovEstimateRuntimeApi};
-use up_common::types::opaque::RuntimeId;
-
-use sc_service::{NativeExecutionDispatch, config::ExecutionStrategy};
-use sp_state_machine::{StateMachine, TrieBackendBuilder};
-use trie_db::{Trie, TrieDBBuilder};
-
+use anyhow::anyhow;
use jsonrpsee::{core::RpcResult as Result, proc_macros::rpc};
-use anyhow::anyhow;
-
+use parity_scale_codec::{Decode, Encode};
use sc_client_api::backend::Backend;
+use sc_executor::NativeElseWasmExecutor;
+use sc_rpc_api::DenyUnsafe;
+use sc_service::{config::ExecutionStrategy, NativeExecutionDispatch};
+use sp_api::{AsTrieBackend, BlockId, BlockT, ProvideRuntimeApi};
use sp_blockchain::HeaderBackend;
use sp_core::{
- Bytes,
offchain::{
testing::{TestOffchainExt, TestTransactionPoolExt},
OffchainDbExt, OffchainWorkerExt, TransactionPoolExt,
},
testing::TaskExecutor,
traits::TaskExecutorExt,
+ Bytes,
};
+use sp_externalities::Extensions;
use sp_keystore::{testing::KeyStore, KeystoreExt};
-use sp_api::{AsTrieBackend, BlockId, BlockT, ProvideRuntimeApi};
-
-use sc_executor::NativeElseWasmExecutor;
-use sc_rpc_api::DenyUnsafe;
-
use sp_runtime::traits::Header;
-
-use up_pov_estimate_rpc::{PovInfo, TrieKeyValue};
+use sp_state_machine::{StateMachine, TrieBackendBuilder};
+use trie_db::{Trie, TrieDBBuilder};
+use up_common::types::opaque::RuntimeId;
+use up_pov_estimate_rpc::{PovEstimateApi as PovEstimateRuntimeApi, PovInfo, TrieKeyValue};
use crate::define_struct_for_server_api;
crates/struct-versioning/Cargo.tomldiffbeforeafterboth--- a/crates/struct-versioning/Cargo.toml
+++ b/crates/struct-versioning/Cargo.toml
@@ -4,7 +4,7 @@
version = "0.1.0"
[dependencies]
-quote = "1.0.15"
+quote = "1.0.33"
syn = { version = "1.0", features = ["full"] }
[lib]
crates/struct-versioning/src/lib.rsdiffbeforeafterboth--- a/crates/struct-versioning/src/lib.rs
+++ b/crates/struct-versioning/src/lib.rs
@@ -17,13 +17,12 @@
#![doc = include_str!("../README.md")]
use proc_macro::TokenStream;
-use quote::format_ident;
+use quote::{format_ident, quote};
use syn::{
- parse::{Parse, ParseStream},
- Token, LitInt, parse_macro_input, ItemStruct, Error, Fields, Result, Field, Expr,
parenthesized,
+ parse::{Parse, ParseStream},
+ parse_macro_input, Error, Expr, Field, Fields, ItemStruct, LitInt, Result, Token,
};
-use quote::quote;
mod kw {
syn::custom_keyword!(version);
node/cli/Cargo.tomldiffbeforeafterboth--- a/node/cli/Cargo.toml
+++ b/node/cli/Cargo.toml
@@ -20,23 +20,24 @@
targets = ['x86_64-unknown-linux-gnu']
[dependencies]
-clap = "4.1"
+clap = "4.4"
futures = '0.3.28'
-tokio = { version = "1.24", features = ["time"] }
serde_json = "1.0"
+tokio = { version = "1.32", features = ["time"] }
log = { workspace = true }
-# Note: `package = "parity-scale-codec"` must be supplied since the `Encode` macro searches for it.
-codec = { workspace = true, package = "parity-scale-codec" }
+parity-scale-codec = { workspace = true }
cumulus-client-cli = { workspace = true }
+cumulus-client-collator = { workspace = true }
cumulus-client-consensus-aura = { workspace = true }
cumulus-client-consensus-common = { workspace = true }
+cumulus-client-consensus-proposer = { workspace = true }
cumulus-client-network = { workspace = true }
cumulus-client-service = { workspace = true }
cumulus-primitives-core = { workspace = true }
-cumulus-primitives-parachain-inherent = { workspace = true }
+cumulus-primitives-parachain-inherent = { features = ["std"], workspace = true }
cumulus-relay-chain-inprocess-interface = { workspace = true }
cumulus-relay-chain-interface = { workspace = true }
cumulus-relay-chain-minimal-node = { workspace = true }
@@ -85,28 +86,57 @@
fc-consensus = { workspace = true }
fc-db = { workspace = true }
fc-mapping-sync = { workspace = true }
-fc-rpc = { workspace = true }
fc-rpc-core = { workspace = true }
+fc-rpc.workspace = true
fp-rpc = { workspace = true }
app-promotion-rpc = { workspace = true }
+fc-api.workspace = true
+fp-storage.workspace = true
+jsonrpsee.workspace = true
+pallet-transaction-payment-rpc.workspace = true
+sc-rpc-api.workspace = true
+sc-rpc.workspace = true
+sp-inherents.workspace = true
uc-rpc = { workspace = true }
-unique-rpc = { workspace = true }
up-pov-estimate-rpc = { workspace = true }
up-rpc = { workspace = true }
-jsonrpsee.workspace = true
-fp-storage.workspace = true
-sc-rpc.workspace = true
[build-dependencies]
substrate-build-script-utils = { workspace = true }
[features]
+all-runtimes = ['opal-runtime', 'quartz-runtime', 'unique-runtime']
default = ["opal-runtime"]
-all-runtimes = ['opal-runtime', 'quartz-runtime', 'unique-runtime']
-pov-estimate = ['opal-runtime/pov-estimate', 'quartz-runtime?/pov-estimate', 'uc-rpc/pov-estimate', 'unique-rpc/pov-estimate', 'unique-runtime?/pov-estimate']
-runtime-benchmarks = ['opal-runtime/runtime-benchmarks', 'polkadot-cli/runtime-benchmarks', 'polkadot-service/runtime-benchmarks', 'quartz-runtime?/runtime-benchmarks', 'sc-service/runtime-benchmarks', 'unique-runtime?/runtime-benchmarks']
+gov-test-timings = [
+ 'opal-runtime/gov-test-timings',
+ 'quartz-runtime?/gov-test-timings',
+ 'unique-runtime?/gov-test-timings',
+]
+lookahead = []
+pov-estimate = [
+ 'opal-runtime/pov-estimate',
+ 'quartz-runtime?/pov-estimate',
+ 'uc-rpc/pov-estimate',
+ 'unique-runtime?/pov-estimate',
+]
+runtime-benchmarks = [
+ 'opal-runtime/runtime-benchmarks',
+ 'polkadot-cli/runtime-benchmarks',
+ 'polkadot-service/runtime-benchmarks',
+ 'quartz-runtime?/runtime-benchmarks',
+ 'sc-service/runtime-benchmarks',
+ 'unique-runtime?/runtime-benchmarks',
+]
sapphire-runtime = ['quartz-runtime', 'quartz-runtime/become-sapphire']
-try-runtime = ['opal-runtime?/try-runtime', 'quartz-runtime?/try-runtime', 'try-runtime-cli/try-runtime', 'unique-runtime?/try-runtime']
-session-test-timings = ['opal-runtime/session-test-timings', 'quartz-runtime?/session-test-timings', 'unique-runtime?/session-test-timings']
-gov-test-timings = ['opal-runtime/gov-test-timings', 'quartz-runtime?/gov-test-timings', 'unique-runtime?/gov-test-timings']
+session-test-timings = [
+ 'opal-runtime/session-test-timings',
+ 'quartz-runtime?/session-test-timings',
+ 'unique-runtime?/session-test-timings',
+]
+try-runtime = [
+ 'opal-runtime?/try-runtime',
+ 'quartz-runtime?/try-runtime',
+ 'try-runtime-cli/try-runtime',
+ 'unique-runtime?/try-runtime',
+]
node/cli/src/chain_spec.rsdiffbeforeafterboth--- a/node/cli/src/chain_spec.rs
+++ b/node/cli/src/chain_spec.rs
@@ -14,36 +14,35 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+use std::collections::BTreeMap;
+
+#[cfg(all(not(feature = "unique-runtime"), not(feature = "quartz-runtime")))]
+pub use opal_runtime as default_runtime;
+#[cfg(all(not(feature = "unique-runtime"), feature = "quartz-runtime"))]
+pub use quartz_runtime as default_runtime;
use sc_chain_spec::{ChainSpecExtension, ChainSpecGroup};
use sc_service::ChainType;
+use serde::{Deserialize, Serialize};
+use serde_json::map::Map;
use sp_core::{sr25519, Pair, Public};
use sp_runtime::traits::{IdentifyAccount, Verify};
-use std::collections::BTreeMap;
-
-use serde::{Deserialize, Serialize};
-use serde_json::map::Map;
-
-use up_common::types::opaque::*;
-
#[cfg(feature = "unique-runtime")]
pub use unique_runtime as default_runtime;
-
-#[cfg(all(not(feature = "unique-runtime"), feature = "quartz-runtime"))]
-pub use quartz_runtime as default_runtime;
-
-#[cfg(all(not(feature = "unique-runtime"), not(feature = "quartz-runtime")))]
-pub use opal_runtime as default_runtime;
+use up_common::types::opaque::*;
/// The `ChainSpec` parameterized for the unique runtime.
#[cfg(feature = "unique-runtime")]
-pub type UniqueChainSpec = sc_service::GenericChainSpec<unique_runtime::GenesisConfig, Extensions>;
+pub type UniqueChainSpec =
+ sc_service::GenericChainSpec<unique_runtime::RuntimeGenesisConfig, Extensions>;
/// The `ChainSpec` parameterized for the quartz runtime.
#[cfg(feature = "quartz-runtime")]
-pub type QuartzChainSpec = sc_service::GenericChainSpec<quartz_runtime::GenesisConfig, Extensions>;
+pub type QuartzChainSpec =
+ sc_service::GenericChainSpec<quartz_runtime::RuntimeGenesisConfig, Extensions>;
/// The `ChainSpec` parameterized for the opal runtime.
-pub type OpalChainSpec = sc_service::GenericChainSpec<opal_runtime::GenesisConfig, Extensions>;
+pub type OpalChainSpec =
+ sc_service::GenericChainSpec<opal_runtime::RuntimeGenesisConfig, Extensions>;
#[cfg(feature = "unique-runtime")]
pub type DefaultChainSpec = UniqueChainSpec;
@@ -153,11 +152,12 @@
) => {{
use $runtime::*;
- GenesisConfig {
+ RuntimeGenesisConfig {
system: SystemConfig {
code: WASM_BINARY
.expect("WASM binary was not build, please build it!")
.to_vec(),
+ ..Default::default()
},
balances: BalancesConfig {
balances: $endowed_accounts
@@ -167,10 +167,6 @@
.map(|k| (k, 1 << 100))
.collect(),
},
- common: Default::default(),
- configuration: Default::default(),
- nonfungible: Default::default(),
- treasury: Default::default(),
tokens: TokensConfig { balances: vec![] },
sudo: SudoConfig {
key: Some($root_key),
@@ -179,8 +175,8 @@
vesting: VestingConfig { vesting: vec![] },
parachain_info: ParachainInfoConfig {
parachain_id: $id.into(),
+ ..Default::default()
},
- parachain_system: Default::default(),
collator_selection: CollatorSelectionConfig {
invulnerables: $initial_invulnerables
.iter()
@@ -200,14 +196,10 @@
})
.collect(),
},
- aura: Default::default(),
- aura_ext: Default::default(),
evm: EVMConfig {
accounts: BTreeMap::new(),
+ ..Default::default()
},
- ethereum: EthereumConfig {},
- polkadot_xcm: Default::default(),
- transaction_payment: Default::default(),
..Default::default()
}
}};
@@ -224,15 +216,13 @@
) => {{
use $runtime::*;
- GenesisConfig {
+ RuntimeGenesisConfig {
system: SystemConfig {
code: WASM_BINARY
.expect("WASM binary was not build, please build it!")
.to_vec(),
+ ..Default::default()
},
- common: Default::default(),
- configuration: Default::default(),
- nonfungible: Default::default(),
balances: BalancesConfig {
balances: $endowed_accounts
.iter()
@@ -241,7 +231,6 @@
.map(|k| (k, 1 << 100))
.collect(),
},
- treasury: Default::default(),
tokens: TokensConfig { balances: vec![] },
sudo: SudoConfig {
key: Some($root_key),
@@ -249,21 +238,19 @@
vesting: VestingConfig { vesting: vec![] },
parachain_info: ParachainInfoConfig {
parachain_id: $id.into(),
+ Default::default()
},
- parachain_system: Default::default(),
aura: AuraConfig {
authorities: $initial_invulnerables
.into_iter()
.map(|(_, aura)| aura)
.collect(),
},
- aura_ext: Default::default(),
evm: EVMConfig {
accounts: BTreeMap::new(),
+ ..Default::default()
},
- ethereum: EthereumConfig {},
- polkadot_xcm: Default::default(),
- transaction_payment: Default::default(),
+ ..Default::default()
}
}};
}
node/cli/src/cli.rsdiffbeforeafterboth--- a/node/cli/src/cli.rs
+++ b/node/cli/src/cli.rs
@@ -14,10 +14,12 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-use crate::chain_spec;
use std::path::PathBuf;
+
use clap::Parser;
+use crate::chain_spec;
+
/// Sub-commands supported by the collator.
#[derive(Debug, Parser)]
pub enum Subcommand {
node/cli/src/command.rsdiffbeforeafterboth--- a/node/cli/src/command.rs
+++ b/node/cli/src/command.rs
@@ -32,38 +32,29 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-use crate::{
- chain_spec::{self, RuntimeIdentification, ServiceId, ServiceIdentification},
- cli::{Cli, RelayChainCli, Subcommand},
- service::{new_partial, start_node, start_dev_node},
-};
-#[cfg(feature = "runtime-benchmarks")]
-use crate::chain_spec::default_runtime;
-
-#[cfg(feature = "unique-runtime")]
-use crate::service::UniqueRuntimeExecutor;
-
-#[cfg(feature = "quartz-runtime")]
-use crate::service::QuartzRuntimeExecutor;
-
-use crate::service::OpalRuntimeExecutor;
-
-#[cfg(feature = "runtime-benchmarks")]
-use crate::service::DefaultRuntimeExecutor;
-
-use codec::Encode;
use cumulus_primitives_core::ParaId;
-use cumulus_client_cli::generate_genesis_block;
-use log::{debug, info};
+use log::info;
use sc_cli::{
ChainSpec, CliConfiguration, DefaultConfigurationValues, ImportParams, KeystoreParams,
- NetworkParams, Result, RuntimeVersion, SharedParams, SubstrateCli,
+ NetworkParams, Result, SharedParams, SubstrateCli,
};
use sc_service::config::{BasePath, PrometheusConfig};
-use sp_core::hexdisplay::HexDisplay;
-use sp_runtime::traits::{AccountIdConversion, Block as BlockT};
+use sp_runtime::traits::AccountIdConversion;
+use up_common::types::opaque::RuntimeId;
-use up_common::types::opaque::{Block, RuntimeId};
+#[cfg(feature = "runtime-benchmarks")]
+use crate::chain_spec::default_runtime;
+#[cfg(feature = "runtime-benchmarks")]
+use crate::service::DefaultRuntimeExecutor;
+#[cfg(feature = "quartz-runtime")]
+use crate::service::QuartzRuntimeExecutor;
+#[cfg(feature = "unique-runtime")]
+use crate::service::UniqueRuntimeExecutor;
+use crate::{
+ chain_spec::{self, RuntimeIdentification, ServiceId, ServiceIdentification},
+ cli::{Cli, RelayChainCli, Subcommand},
+ service::{new_partial, start_dev_node, start_node, OpalRuntimeExecutor},
+};
macro_rules! no_runtime_err {
($runtime_id:expr) => {
@@ -134,19 +125,6 @@
fn load_spec(&self, id: &str) -> std::result::Result<Box<dyn sc_service::ChainSpec>, String> {
load_spec(id)
- }
-
- fn native_runtime_version(chain_spec: &Box<dyn ChainSpec>) -> &'static RuntimeVersion {
- match chain_spec.runtime_id() {
- #[cfg(feature = "unique-runtime")]
- RuntimeId::Unique => &unique_runtime::VERSION,
-
- #[cfg(feature = "quartz-runtime")]
- RuntimeId::Quartz => &quartz_runtime::VERSION,
-
- RuntimeId::Opal => &opal_runtime::VERSION,
- runtime_id => panic!("{}", no_runtime_err!(runtime_id)),
- }
}
}
@@ -185,24 +163,20 @@
fn load_spec(&self, id: &str) -> std::result::Result<Box<dyn sc_service::ChainSpec>, String> {
polkadot_cli::Cli::from_iter([RelayChainCli::executable_name()].iter()).load_spec(id)
}
-
- fn native_runtime_version(chain_spec: &Box<dyn ChainSpec>) -> &'static RuntimeVersion {
- polkadot_cli::Cli::native_runtime_version(chain_spec)
- }
}
macro_rules! async_run_with_runtime {
(
- $runtime_api:path, $executor:path,
+ $runtime:path, $runtime_api:path, $executor:path,
$runner:ident, $components:ident, $cli:ident, $cmd:ident, $config:ident,
$( $code:tt )*
) => {
$runner.async_run(|$config| {
let $components = new_partial::<
- $runtime_api, $executor, _
+ $runtime, $runtime_api, $executor, _
>(
&$config,
- crate::service::parachain_build_import_queue,
+ crate::service::parachain_build_import_queue::<$runtime, _, _>,
)?;
let task_manager = $components.task_manager;
@@ -218,18 +192,18 @@
match runner.config().chain_spec.runtime_id() {
#[cfg(feature = "unique-runtime")]
RuntimeId::Unique => async_run_with_runtime!(
- unique_runtime::RuntimeApi, UniqueRuntimeExecutor,
+ unique_runtime::Runtime, unique_runtime::RuntimeApi, UniqueRuntimeExecutor,
runner, $components, $cli, $cmd, $config, $( $code )*
),
#[cfg(feature = "quartz-runtime")]
RuntimeId::Quartz => async_run_with_runtime!(
- quartz_runtime::RuntimeApi, QuartzRuntimeExecutor,
+ quartz_runtime::Runtime, quartz_runtime::RuntimeApi, QuartzRuntimeExecutor,
runner, $components, $cli, $cmd, $config, $( $code )*
),
RuntimeId::Opal => async_run_with_runtime!(
- opal_runtime::RuntimeApi, OpalRuntimeExecutor,
+ opal_runtime::Runtime, opal_runtime::RuntimeApi, OpalRuntimeExecutor,
runner, $components, $cli, $cmd, $config, $( $code )*
),
@@ -240,11 +214,18 @@
macro_rules! sync_run_with_runtime {
(
- $runtime_api:path, $executor:path,
+ $runtime:path, $runtime_api:path, $executor:path,
$runner:ident, $components:ident, $cli:ident, $cmd:ident, $config:ident,
$( $code:tt )*
) => {
$runner.sync_run(|$config| {
+ let $components = new_partial::<
+ $runtime, $runtime_api, $executor, _
+ >(
+ &$config,
+ crate::service::parachain_build_import_queue::<$runtime, _, _>,
+ )?;
+
$( $code )*
})
};
@@ -257,18 +238,18 @@
match runner.config().chain_spec.runtime_id() {
#[cfg(feature = "unique-runtime")]
RuntimeId::Unique => sync_run_with_runtime!(
- unique_runtime::RuntimeApi, UniqueRuntimeExecutor,
+ unique_runtime::Runtime, unique_runtime::RuntimeApi, UniqueRuntimeExecutor,
runner, $components, $cli, $cmd, $config, $( $code )*
),
#[cfg(feature = "quartz-runtime")]
RuntimeId::Quartz => sync_run_with_runtime!(
- quartz_runtime::RuntimeApi, QuartzRuntimeExecutor,
+ quartz_runtime::Runtime, quartz_runtime::RuntimeApi, QuartzRuntimeExecutor,
runner, $components, $cli, $cmd, $config, $( $code )*
),
RuntimeId::Opal => sync_run_with_runtime!(
- opal_runtime::RuntimeApi, OpalRuntimeExecutor,
+ opal_runtime::Runtime, opal_runtime::RuntimeApi, OpalRuntimeExecutor,
runner, $components, $cli, $cmd, $config, $( $code )*
),
@@ -362,12 +343,11 @@
Some(Subcommand::ExportGenesisState(cmd)) => {
construct_sync_run!(|components, cli, cmd, _config| {
let spec = cli.load_spec(&cmd.shared_params.chain.clone().unwrap_or_default())?;
- let state_version = Cli::native_runtime_version(&spec).state_version();
- cmd.run::<Block>(&*spec, state_version)
+ cmd.run(&*spec, &*components.client)
})
}
Some(Subcommand::ExportGenesisWasm(cmd)) => {
- construct_sync_run!(|components, cli, cmd, _config| {
+ construct_sync_run!(|_components, cli, cmd, _config| {
let spec = cli.load_spec(&cmd.shared_params.chain.clone().unwrap_or_default())?;
cmd.run(&*spec)
})
@@ -411,6 +391,7 @@
#[cfg(feature = "try-runtime")]
Some(Subcommand::TryRuntime(cmd)) => {
use std::{future::Future, pin::Pin};
+
use sc_executor::{sp_wasm_interface::ExtendedHostFunctions, NativeExecutionDispatch};
use try_runtime_cli::block_building_info::timestamp_with_aura_info;
@@ -506,12 +487,6 @@
AccountIdConversion::<polkadot_primitives::AccountId>::into_account_truncating(
¶_id,
);
-
- let state_version = Cli::native_runtime_version(&config.chain_spec).state_version();
- let block: Block = generate_genesis_block(&*config.chain_spec, state_version)
- .map_err(|e| format!("{e:?}"))?;
- let genesis_state = format!("0x{:?}", HexDisplay::from(&block.header().encode()));
- let genesis_hash = format!("0x{:?}", HexDisplay::from(&block.header().hash().0));
let polkadot_config = SubstrateCli::create_configuration(
&polkadot_cli,
@@ -522,9 +497,6 @@
info!("Parachain id: {:?}", para_id);
info!("Parachain Account: {}", parachain_account);
- info!("Parachain genesis state: {}", genesis_state);
- info!("Parachain genesis hash: {}", genesis_hash);
- debug!("Parachain genesis block: {:?}", block);
info!(
"Is collating: {}",
if config.role.is_authority() {
node/cli/src/lib.rsdiffbeforeafterboth--- a/node/cli/src/lib.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
-// This file is part of Unique Network.
-
-// Unique Network is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// Unique Network is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-
-pub mod chain_spec;
-pub mod service;
node/cli/src/main.rsdiffbeforeafterboth--- a/node/cli/src/main.rs
+++ b/node/cli/src/main.rs
@@ -19,6 +19,7 @@
mod service;
mod cli;
mod command;
+mod rpc;
fn main() -> sc_cli::Result<()> {
command::run()
node/cli/src/rpc.rsdiffbeforeafterboth--- /dev/null
+++ b/node/cli/src/rpc.rs
@@ -0,0 +1,279 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// Unique Network is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+use std::sync::Arc;
+
+use fc_mapping_sync::{EthereumBlockNotification, EthereumBlockNotificationSinks};
+use fc_rpc::{
+ pending::AuraConsensusDataProvider, EthBlockDataCacheTask, EthConfig, OverrideHandle,
+};
+use fc_rpc_core::types::{FeeHistoryCache, FilterPool};
+use fp_rpc::NoTransactionConverter;
+use jsonrpsee::RpcModule;
+use sc_client_api::{
+ backend::{AuxStore, StorageProvider},
+ client::BlockchainEvents,
+ UsageProvider,
+};
+use sc_network::NetworkService;
+use sc_network_sync::SyncingService;
+use sc_rpc::SubscriptionTaskExecutor;
+pub use sc_rpc_api::DenyUnsafe;
+use sc_service::TransactionPool;
+use sc_transaction_pool::{ChainApi, Pool};
+use sp_api::ProvideRuntimeApi;
+use sp_blockchain::{Error as BlockChainError, HeaderBackend, HeaderMetadata};
+use sp_inherents::CreateInherentDataProviders;
+use sp_runtime::traits::BlakeTwo256;
+use up_common::types::opaque::*;
+
+use crate::service::RuntimeApiDep;
+
+#[cfg(feature = "pov-estimate")]
+type FullBackend = sc_service::TFullBackend<Block>;
+
+/// Full client dependencies.
+pub struct FullDeps<C, P, SC> {
+ /// The client instance to use.
+ pub client: Arc<C>,
+ /// Transaction pool instance.
+ pub pool: Arc<P>,
+ /// The SelectChain Strategy
+ pub select_chain: SC,
+ /// Whether to deny unsafe calls
+ pub deny_unsafe: DenyUnsafe,
+
+ /// Runtime identification (read from the chain spec)
+ pub runtime_id: RuntimeId,
+ /// Executor params for PoV estimating
+ #[cfg(feature = "pov-estimate")]
+ pub exec_params: uc_rpc::pov_estimate::ExecutorParams,
+ /// Substrate Backend.
+ #[cfg(feature = "pov-estimate")]
+ pub backend: Arc<FullBackend>,
+}
+
+/// Instantiate all Full RPC extensions.
+pub fn create_full<C, P, SC, R, A, B>(
+ io: &mut RpcModule<()>,
+ deps: FullDeps<C, P, SC>,
+) -> Result<(), Box<dyn std::error::Error + Send + Sync>>
+where
+ C: ProvideRuntimeApi<Block> + StorageProvider<Block, B> + AuxStore,
+ C: HeaderBackend<Block> + HeaderMetadata<Block, Error = BlockChainError> + 'static,
+ C: Send + Sync + 'static,
+ C: BlockchainEvents<Block>,
+ C::Api: RuntimeApiDep<R>,
+ B: sc_client_api::Backend<Block> + Send + Sync + 'static,
+ P: TransactionPool<Block = Block> + 'static,
+ R: RuntimeInstance + Send + Sync + 'static,
+ <R as RuntimeInstance>::CrossAccountId: serde::Serialize,
+ C: sp_api::CallApiAt<
+ sp_runtime::generic::Block<
+ sp_runtime::generic::Header<u32, BlakeTwo256>,
+ sp_runtime::OpaqueExtrinsic,
+ >,
+ >,
+ for<'de> <R as RuntimeInstance>::CrossAccountId: serde::Deserialize<'de>,
+{
+ // use pallet_contracts_rpc::{Contracts, ContractsApi};
+ use pallet_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApiServer};
+ use substrate_frame_rpc_system::{System, SystemApiServer};
+ #[cfg(feature = "pov-estimate")]
+ use uc_rpc::pov_estimate::{PovEstimate, PovEstimateApiServer};
+ use uc_rpc::{AppPromotion, AppPromotionApiServer, Unique, UniqueApiServer};
+
+ let FullDeps {
+ client,
+ pool,
+ select_chain: _,
+ deny_unsafe,
+
+ runtime_id: _,
+
+ #[cfg(feature = "pov-estimate")]
+ exec_params,
+
+ #[cfg(feature = "pov-estimate")]
+ backend,
+ } = deps;
+
+ io.merge(System::new(Arc::clone(&client), Arc::clone(&pool), deny_unsafe).into_rpc())?;
+ io.merge(TransactionPayment::new(Arc::clone(&client)).into_rpc())?;
+
+ io.merge(Unique::new(client.clone()).into_rpc())?;
+
+ io.merge(AppPromotion::new(client).into_rpc())?;
+
+ #[cfg(feature = "pov-estimate")]
+ io.merge(
+ PovEstimate::new(
+ client.clone(),
+ backend,
+ deny_unsafe,
+ exec_params,
+ runtime_id,
+ )
+ .into_rpc(),
+ )?;
+
+ Ok(())
+}
+
+pub struct EthDeps<C, P, CA: ChainApi, CIDP> {
+ /// The client instance to use.
+ pub client: Arc<C>,
+ /// Transaction pool instance.
+ pub pool: Arc<P>,
+ /// Graph pool instance.
+ pub graph: Arc<Pool<CA>>,
+ /// Syncing service
+ pub sync: Arc<SyncingService<Block>>,
+ /// The Node authority flag
+ pub is_authority: bool,
+ /// Network service
+ pub network: Arc<NetworkService<Block, Hash>>,
+
+ /// Ethereum Backend.
+ pub eth_backend: Arc<dyn fc_api::Backend<Block> + Send + Sync>,
+ /// Maximum number of logs in a query.
+ pub max_past_logs: u32,
+ /// Maximum fee history cache size.
+ pub fee_history_limit: u64,
+ /// Fee history cache.
+ pub fee_history_cache: FeeHistoryCache,
+ pub eth_block_data_cache: Arc<EthBlockDataCacheTask<Block>>,
+ /// EthFilterApi pool.
+ pub eth_filter_pool: Option<FilterPool>,
+ pub eth_pubsub_notification_sinks:
+ Arc<EthereumBlockNotificationSinks<EthereumBlockNotification<Block>>>,
+ /// Whether to enable eth dev signer
+ pub enable_dev_signer: bool,
+
+ pub overrides: Arc<OverrideHandle<Block>>,
+ pub pending_create_inherent_data_providers: CIDP,
+}
+
+pub fn create_eth<C, R, P, CA, B, CIDP, EC>(
+ io: &mut RpcModule<()>,
+ deps: EthDeps<C, P, CA, CIDP>,
+ subscription_task_executor: SubscriptionTaskExecutor,
+) -> Result<(), Box<dyn std::error::Error + Send + Sync>>
+where
+ C: ProvideRuntimeApi<Block> + StorageProvider<Block, B> + AuxStore,
+ C: HeaderBackend<Block> + HeaderMetadata<Block, Error = BlockChainError> + 'static,
+ C: Send + Sync + 'static,
+ C: BlockchainEvents<Block>,
+ C: UsageProvider<Block>,
+ C::Api: RuntimeApiDep<R>,
+ P: TransactionPool<Block = Block> + 'static,
+ CA: ChainApi<Block = Block> + 'static,
+ B: sc_client_api::Backend<Block> + Send + Sync + 'static,
+ C: sp_api::CallApiAt<Block>,
+ CIDP: CreateInherentDataProviders<Block, ()> + Send + 'static,
+ EC: EthConfig<Block, C>,
+ R: RuntimeInstance,
+{
+ use fc_rpc::{
+ Eth, EthApiServer, EthDevSigner, EthFilter, EthFilterApiServer, EthPubSub,
+ EthPubSubApiServer, EthSigner, Net, NetApiServer, Web3, Web3ApiServer,
+ };
+
+ let EthDeps {
+ client,
+ pool,
+ graph,
+ eth_backend,
+ max_past_logs,
+ fee_history_limit,
+ fee_history_cache,
+ eth_block_data_cache,
+ eth_filter_pool,
+ eth_pubsub_notification_sinks,
+ enable_dev_signer,
+ sync,
+ is_authority,
+ network,
+ overrides,
+ pending_create_inherent_data_providers,
+ } = deps;
+
+ let mut signers = Vec::new();
+ if enable_dev_signer {
+ signers.push(Box::new(EthDevSigner::new()) as Box<dyn EthSigner>);
+ }
+ let execute_gas_limit_multiplier = 10;
+ io.merge(
+ Eth::<_, _, _, _, _, _, _, EC>::new(
+ client.clone(),
+ pool.clone(),
+ graph.clone(),
+ // We have no runtimes old enough to only accept converted transactions
+ None::<NoTransactionConverter>,
+ sync.clone(),
+ signers,
+ overrides.clone(),
+ eth_backend.clone(),
+ is_authority,
+ eth_block_data_cache.clone(),
+ fee_history_cache,
+ fee_history_limit,
+ execute_gas_limit_multiplier,
+ None,
+ pending_create_inherent_data_providers,
+ Some(Box::new(AuraConsensusDataProvider::new(client.clone()))),
+ )
+ .into_rpc(),
+ )?;
+
+ if let Some(filter_pool) = eth_filter_pool {
+ io.merge(
+ EthFilter::new(
+ client.clone(),
+ eth_backend,
+ graph.clone(),
+ filter_pool,
+ 500_usize, // max stored filters
+ max_past_logs,
+ eth_block_data_cache,
+ )
+ .into_rpc(),
+ )?;
+ }
+ io.merge(
+ Net::new(
+ client.clone(),
+ network,
+ // Whether to format the `peer_count` response as Hex (default) or not.
+ true,
+ )
+ .into_rpc(),
+ )?;
+ io.merge(Web3::new(client.clone()).into_rpc())?;
+ io.merge(
+ EthPubSub::new(
+ pool,
+ client,
+ sync,
+ subscription_task_executor,
+ overrides,
+ eth_pubsub_notification_sinks,
+ )
+ .into_rpc(),
+ )?;
+
+ Ok(())
+}
node/cli/src/service.rsdiffbeforeafterboth--- a/node/cli/src/service.rs
+++ b/node/cli/src/service.rs
@@ -15,73 +15,72 @@
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
// std
-use std::sync::Arc;
-use std::sync::Mutex;
-use std::collections::BTreeMap;
-use std::time::Duration;
-use std::pin::Pin;
-use fc_mapping_sync::EthereumBlockNotificationSinks;
-use fc_rpc::EthBlockDataCacheTask;
-use fc_rpc::EthTask;
-use fc_rpc_core::types::FeeHistoryCache;
-use futures::{
- Stream, StreamExt,
- stream::select,
- task::{Context, Poll},
+use std::{
+ collections::BTreeMap,
+ marker::PhantomData,
+ pin::Pin,
+ sync::{Arc, Mutex},
+ time::Duration,
};
-use sc_rpc::SubscriptionTaskExecutor;
-use sp_keystore::KeystorePtr;
-use tokio::time::Interval;
-use jsonrpsee::RpcModule;
-use serde::{Serialize, Deserialize};
-
-// Cumulus Imports
-use cumulus_client_consensus_aura::{AuraConsensus, BuildAuraConsensusParams, SlotProportion};
-use cumulus_client_consensus_common::{
- ParachainConsensus, ParachainBlockImport as TParachainBlockImport,
+use cumulus_client_cli::CollatorOptions;
+use cumulus_client_collator::service::CollatorService;
+#[cfg(not(feature = "lookahead"))]
+use cumulus_client_consensus_aura::collators::basic::{
+ run as run_aura, Params as BuildAuraConsensusParams,
+};
+#[cfg(feature = "lookahead")]
+use cumulus_client_consensus_aura::collators::lookahead::{
+ run as run_aura, Params as BuildAuraConsensusParams,
};
+use cumulus_client_consensus_common::ParachainBlockImport as TParachainBlockImport;
+use cumulus_client_consensus_proposer::Proposer;
+use cumulus_client_network::RequireSecondedInBlockAnnounce;
use cumulus_client_service::{
- prepare_node_config, start_collator, start_full_node, StartCollatorParams, StartFullNodeParams,
+ build_relay_chain_interface, prepare_node_config, start_relay_chain_tasks, DARecoveryProfile,
+ StartRelayChainTasksParams,
};
-use cumulus_client_cli::CollatorOptions;
-use cumulus_client_network::BlockAnnounceValidator;
use cumulus_primitives_core::ParaId;
-use cumulus_relay_chain_inprocess_interface::build_inprocess_relay_chain;
-use cumulus_relay_chain_interface::{RelayChainInterface, RelayChainResult};
-use cumulus_relay_chain_minimal_node::build_minimal_relay_chain_node;
-
-// Substrate Imports
-use sp_api::{BlockT, HeaderT, ProvideRuntimeApi, StateBackend};
-use sc_executor::NativeElseWasmExecutor;
-use sc_executor::NativeExecutionDispatch;
+use cumulus_relay_chain_interface::{OverseerHandle, RelayChainInterface};
+use fc_mapping_sync::{kv::MappingSyncWorker, EthereumBlockNotificationSinks, SyncStrategy};
+use fc_rpc::{
+ frontier_backend_client::SystemAccountId32StorageOverride, EthBlockDataCacheTask, EthConfig,
+ EthTask, OverrideHandle, RuntimeApiStorageOverride, SchemaV1Override, SchemaV2Override,
+ SchemaV3Override, StorageOverride,
+};
+use fc_rpc_core::types::{FeeHistoryCache, FilterPool};
+use fp_rpc::EthereumRuntimeRPCApi;
+use fp_storage::EthereumStorageSchema;
+use futures::{
+ stream::select,
+ task::{Context, Poll},
+ Stream, StreamExt,
+};
+use jsonrpsee::RpcModule;
+use polkadot_service::CollatorPair;
+use sc_client_api::{AuxStore, Backend, BlockOf, BlockchainEvents, StorageProvider};
+use sc_consensus::ImportQueue;
+use sc_executor::{NativeElseWasmExecutor, NativeExecutionDispatch};
use sc_network::NetworkBlock;
use sc_network_sync::SyncingService;
+use sc_rpc::SubscriptionTaskExecutor;
use sc_service::{Configuration, PartialComponents, TaskManager};
use sc_telemetry::{Telemetry, TelemetryHandle, TelemetryWorker, TelemetryWorkerHandle};
+use serde::{Deserialize, Serialize};
+use sp_api::{ProvideRuntimeApi, StateBackend};
+use sp_block_builder::BlockBuilder;
+use sp_blockchain::{Error as BlockChainError, HeaderBackend, HeaderMetadata};
+use sp_consensus_aura::sr25519::AuthorityPair as AuraAuthorityPair;
+use sp_keystore::KeystorePtr;
use sp_runtime::traits::BlakeTwo256;
use substrate_prometheus_endpoint::Registry;
-use sc_client_api::{BlockchainEvents, BlockOf, Backend, AuxStore, StorageProvider};
-use sp_blockchain::{HeaderBackend, HeaderMetadata, Error as BlockChainError};
-use sc_consensus::ImportQueue;
-use sp_core::H256;
-use sp_block_builder::BlockBuilder;
-
-use polkadot_service::CollatorPair;
+use tokio::time::Interval;
+use up_common::types::{opaque::*, Nonce};
-// Frontier Imports
-use fc_rpc_core::types::FilterPool;
-use fc_mapping_sync::{kv::MappingSyncWorker, SyncStrategy};
-use fc_rpc::{
- StorageOverride, OverrideHandle, SchemaV1Override, SchemaV2Override, SchemaV3Override,
- RuntimeApiStorageOverride,
+use crate::{
+ chain_spec::RuntimeIdentification,
+ rpc::{create_eth, create_full, EthDeps, FullDeps},
};
-use fp_rpc::EthereumRuntimeRPCApi;
-use fp_storage::EthereumStorageSchema;
-
-use up_common::types::opaque::*;
-
-use crate::chain_spec::RuntimeIdentification;
/// Unique native executor instance.
#[cfg(feature = "unique-runtime")]
@@ -185,7 +184,7 @@
}
}
-pub fn open_frontier_backend<Block: BlockT, C: HeaderBackend<Block>>(
+pub fn open_frontier_backend<C: HeaderBackend<Block>>(
client: Arc<C>,
config: &Configuration,
) -> Result<Arc<fc_db::kv::Backend<Block>>, String> {
@@ -210,12 +209,42 @@
type ParachainBlockImport<RuntimeApi, ExecutorDispatch> =
TParachainBlockImport<Block, Arc<FullClient<RuntimeApi, ExecutorDispatch>>, FullBackend>;
+/// Generate a supertrait based on bounds, and blanket impl for it.
+macro_rules! ez_bounds {
+ ($vis:vis trait $name:ident$(<$($gen:ident $(: $($(+)? $bound:path)*)?),* $(,)?>)? $(:)? $($(+)? $super:path)* {}) => {
+ $vis trait $name $(<$($gen $(: $($bound+)*)?,)*>)?: $($super +)* {}
+ impl<T, $($($gen $(: $($bound+)*)?,)*)?> $name$(<$($gen,)*>)? for T
+ where T: $($super +)* {}
+ }
+}
+ez_bounds!(
+ pub trait RuntimeApiDep<Runtime: RuntimeInstance>:
+ sp_transaction_pool::runtime_api::TaggedTransactionQueue<Block>
+ + sp_consensus_aura::AuraApi<Block, AuraId>
+ + fp_rpc::EthereumRuntimeRPCApi<Block>
+ + sp_session::SessionKeys<Block>
+ + sp_block_builder::BlockBuilder<Block>
+ + pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi<Block, Balance>
+ + sp_api::ApiExt<Block>
+ + up_rpc::UniqueApi<Block, Runtime::CrossAccountId, AccountId>
+ + app_promotion_rpc::AppPromotionApi<Block, BlockNumber, Runtime::CrossAccountId, AccountId>
+ + up_pov_estimate_rpc::PovEstimateApi<Block>
+ + substrate_frame_rpc_system::AccountNonceApi<Block, AccountId, Nonce>
+ + sp_api::Metadata<Block>
+ + sp_offchain::OffchainWorkerApi<Block>
+ + cumulus_primitives_core::CollectCollationInfo<Block>
+ // Deprecated, not used.
+ + fp_rpc::ConvertTransactionRuntimeApi<Block>
+ {
+ }
+);
+
/// Starts a `ServiceBuilder` for a full service.
///
/// Use this macro if you don't actually need the full service, but just the builder in order to
/// be able to perform chain operations.
#[allow(clippy::type_complexity)]
-pub fn new_partial<RuntimeApi, ExecutorDispatch, BIQ>(
+pub fn new_partial<Runtime, RuntimeApi, ExecutorDispatch, BIQ>(
config: &Configuration,
build_import_queue: BIQ,
) -> Result<
@@ -223,7 +252,7 @@
FullClient<RuntimeApi, ExecutorDispatch>,
FullBackend,
FullSelectChain,
- sc_consensus::DefaultImportQueue<Block, FullClient<RuntimeApi, ExecutorDispatch>>,
+ sc_consensus::DefaultImportQueue<Block>,
sc_transaction_pool::FullPool<Block, FullClient<RuntimeApi, ExecutorDispatch>>,
OtherPartial,
>,
@@ -235,7 +264,8 @@
+ Send
+ Sync
+ 'static,
- RuntimeApi::RuntimeApi: sp_transaction_pool::runtime_api::TaggedTransactionQueue<Block>,
+ RuntimeApi::RuntimeApi: RuntimeApiDep<Runtime> + 'static,
+ Runtime: RuntimeInstance,
ExecutorDispatch: NativeExecutionDispatch + 'static,
BIQ: FnOnce(
Arc<FullClient<RuntimeApi, ExecutorDispatch>>,
@@ -243,10 +273,7 @@
&Configuration,
Option<TelemetryHandle>,
&TaskManager,
- ) -> Result<
- sc_consensus::DefaultImportQueue<Block, FullClient<RuntimeApi, ExecutorDispatch>>,
- sc_service::Error,
- >,
+ ) -> Result<sc_consensus::DefaultImportQueue<Block>, sc_service::Error>,
{
let telemetry = config
.telemetry_endpoints
@@ -319,35 +346,6 @@
Ok(params)
}
-async fn build_relay_chain_interface(
- polkadot_config: Configuration,
- parachain_config: &Configuration,
- telemetry_worker_handle: Option<TelemetryWorkerHandle>,
- task_manager: &mut TaskManager,
- collator_options: CollatorOptions,
- hwbench: Option<sc_sysinfo::HwBench>,
-) -> RelayChainResult<(
- Arc<(dyn RelayChainInterface + 'static)>,
- Option<CollatorPair>,
-)> {
- if collator_options.relay_chain_rpc_urls.is_empty() {
- build_inprocess_relay_chain(
- polkadot_config,
- parachain_config,
- telemetry_worker_handle,
- task_manager,
- hwbench,
- )
- } else {
- build_minimal_relay_chain_node(
- polkadot_config,
- task_manager,
- collator_options.relay_chain_rpc_urls,
- )
- .await
- }
-}
-
macro_rules! clone {
($($i:ident),* $(,)?) => {
$(
@@ -360,13 +358,11 @@
///
/// This is the actual implementation that is abstract over the executor and the runtime api.
#[sc_tracing::logging::prefix_logs_with("Parachain")]
-async fn start_node_impl<Runtime, RuntimeApi, ExecutorDispatch, BIQ, BIC>(
+pub async fn start_node<Runtime, RuntimeApi, ExecutorDispatch>(
parachain_config: Configuration,
polkadot_config: Configuration,
collator_options: CollatorOptions,
- id: ParaId,
- build_import_queue: BIQ,
- build_consensus: BIC,
+ para_id: ParaId,
hwbench: Option<sc_sysinfo::HwBench>,
) -> sc_service::error::Result<(TaskManager, Arc<FullClient<RuntimeApi, ExecutorDispatch>>)>
where
@@ -378,48 +374,16 @@
+ Send
+ Sync
+ 'static,
- RuntimeApi::RuntimeApi: sp_transaction_pool::runtime_api::TaggedTransactionQueue<Block>
- + fp_rpc::EthereumRuntimeRPCApi<Block>
- + fp_rpc::ConvertTransactionRuntimeApi<Block>
- + sp_session::SessionKeys<Block>
- + sp_block_builder::BlockBuilder<Block>
- + pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi<Block, Balance>
- + sp_api::ApiExt<Block, StateBackend = sc_client_api::StateBackendFor<FullBackend, Block>>
- + up_rpc::UniqueApi<Block, Runtime::CrossAccountId, AccountId>
- + app_promotion_rpc::AppPromotionApi<Block, BlockNumber, Runtime::CrossAccountId, AccountId>
- + up_pov_estimate_rpc::PovEstimateApi<Block>
- + substrate_frame_rpc_system::AccountNonceApi<Block, AccountId, Index>
- + sp_api::Metadata<Block>
- + sp_offchain::OffchainWorkerApi<Block>
- + cumulus_primitives_core::CollectCollationInfo<Block>,
+ RuntimeApi::RuntimeApi: RuntimeApiDep<Runtime> + 'static,
+ Runtime: RuntimeInstance,
ExecutorDispatch: NativeExecutionDispatch + 'static,
- BIQ: FnOnce(
- Arc<FullClient<RuntimeApi, ExecutorDispatch>>,
- Arc<FullBackend>,
- &Configuration,
- Option<TelemetryHandle>,
- &TaskManager,
- ) -> Result<
- sc_consensus::DefaultImportQueue<Block, FullClient<RuntimeApi, ExecutorDispatch>>,
- sc_service::Error,
- >,
- BIC: FnOnce(
- Arc<FullClient<RuntimeApi, ExecutorDispatch>>,
- Arc<FullBackend>,
- Option<&Registry>,
- Option<TelemetryHandle>,
- &TaskManager,
- Arc<dyn RelayChainInterface>,
- Arc<sc_transaction_pool::FullPool<Block, FullClient<RuntimeApi, ExecutorDispatch>>>,
- Arc<SyncingService<Block>>,
- KeystorePtr,
- bool,
- ) -> Result<Box<dyn ParachainConsensus<Block>>, sc_service::Error>,
{
let parachain_config = prepare_node_config(parachain_config);
- let params =
- new_partial::<RuntimeApi, ExecutorDispatch, BIQ>(¶chain_config, build_import_queue)?;
+ let params = new_partial::<Runtime, RuntimeApi, ExecutorDispatch, _>(
+ ¶chain_config,
+ parachain_build_import_queue,
+ )?;
let OtherPartial {
mut telemetry,
telemetry_worker_handle,
@@ -443,9 +407,9 @@
.await
.map_err(|e| sc_service::Error::Application(Box::new(e) as Box<_>))?;
- let block_announce_validator = BlockAnnounceValidator::new(relay_chain_interface.clone(), id);
+ let block_announce_validator =
+ RequireSecondedInBlockAnnounce::new(relay_chain_interface.clone(), para_id);
- let force_authoring = parachain_config.force_authoring;
let validator = parachain_config.role.is_authority();
let prometheus_registry = parachain_config.prometheus_registry().cloned();
let transaction_pool = params.transaction_pool.clone();
@@ -531,7 +495,7 @@
let mut rpc_handle = RpcModule::new(());
- let full_deps = unique_rpc::FullDeps {
+ let full_deps = FullDeps {
client: client.clone(),
runtime_id,
@@ -551,9 +515,9 @@
select_chain,
};
- unique_rpc::create_full::<_, _, _, Runtime, RuntimeApi, _>(&mut rpc_handle, full_deps)?;
+ create_full::<_, _, _, Runtime, RuntimeApi, _>(&mut rpc_handle, full_deps)?;
- let eth_deps = unique_rpc::EthDeps {
+ let eth_deps = EthDeps {
client,
graph: transaction_pool.pool().clone(),
pool: transaction_pool,
@@ -571,9 +535,18 @@
eth_pubsub_notification_sinks,
overrides,
sync: sync_service.clone(),
+ pending_create_inherent_data_providers: |_, ()| async move { Ok(()) },
};
- unique_rpc::create_eth(
+ create_eth::<
+ _,
+ _,
+ _,
+ _,
+ _,
+ _,
+ DefaultEthConfig<FullClient<RuntimeApi, ExecutorDispatch>>,
+ >(
&mut rpc_handle,
eth_deps,
subscription_task_executor.clone(),
@@ -624,8 +597,25 @@
.overseer_handle()
.map_err(|e| sc_service::Error::Application(Box::new(e)))?;
+ start_relay_chain_tasks(StartRelayChainTasksParams {
+ client: client.clone(),
+ announce_block: announce_block.clone(),
+ para_id,
+ relay_chain_interface: relay_chain_interface.clone(),
+ task_manager: &mut task_manager,
+ da_recovery_profile: if validator {
+ DARecoveryProfile::Collator
+ } else {
+ DARecoveryProfile::FullNode
+ },
+ import_queue: import_queue_service,
+ relay_chain_slot_duration,
+ recovery_handle: Box::new(overseer_handle.clone()),
+ sync_service: sync_service.clone(),
+ })?;
+
if validator {
- let parachain_consensus = build_consensus(
+ start_consensus(
client.clone(),
backend.clone(),
prometheus_registry.as_ref(),
@@ -635,42 +625,12 @@
transaction_pool,
sync_service.clone(),
params.keystore_container.keystore(),
- force_authoring,
- )?;
-
- let spawner = task_manager.spawn_handle();
-
- let params = StartCollatorParams {
- para_id: id,
- block_status: client.clone(),
- announce_block,
- client: client.clone(),
- task_manager: &mut task_manager,
- spawner,
- parachain_consensus,
- import_queue: import_queue_service,
- collator_key: collator_key.expect("Command line arguments do not allow this. qed"),
- relay_chain_interface,
+ overseer_handle,
relay_chain_slot_duration,
- recovery_handle: Box::new(overseer_handle),
- sync_service,
- };
-
- start_collator(params).await?;
- } else {
- let params = StartFullNodeParams {
- client: client.clone(),
+ para_id,
+ collator_key.expect("cli args do not allow this"),
announce_block,
- task_manager: &mut task_manager,
- para_id: id,
- import_queue: import_queue_service,
- relay_chain_interface,
- relay_chain_slot_duration,
- recovery_handle: Box::new(overseer_handle),
- sync_service,
- };
-
- start_full_node(params)?;
+ )?;
}
start_network.start_network();
@@ -679,25 +639,20 @@
}
/// Build the import queue for the the parachain runtime.
-pub fn parachain_build_import_queue<RuntimeApi, ExecutorDispatch>(
+pub fn parachain_build_import_queue<Runtime, RuntimeApi, ExecutorDispatch>(
client: Arc<FullClient<RuntimeApi, ExecutorDispatch>>,
backend: Arc<FullBackend>,
config: &Configuration,
telemetry: Option<TelemetryHandle>,
task_manager: &TaskManager,
-) -> Result<
- sc_consensus::DefaultImportQueue<Block, FullClient<RuntimeApi, ExecutorDispatch>>,
- sc_service::Error,
->
+) -> Result<sc_consensus::DefaultImportQueue<Block>, sc_service::Error>
where
RuntimeApi: sp_api::ConstructRuntimeApi<Block, FullClient<RuntimeApi, ExecutorDispatch>>
+ Send
+ Sync
+ 'static,
- RuntimeApi::RuntimeApi: sp_transaction_pool::runtime_api::TaggedTransactionQueue<Block>
- + sp_block_builder::BlockBuilder<Block>
- + sp_consensus_aura::AuraApi<Block, AuraId>
- + sp_api::ApiExt<Block, StateBackend = sc_client_api::StateBackendFor<FullBackend, Block>>,
+ RuntimeApi::RuntimeApi: RuntimeApiDep<Runtime> + 'static,
+ Runtime: RuntimeInstance,
ExecutorDispatch: NativeExecutionDispatch + 'static,
{
let slot_duration = cumulus_client_consensus_aura::slot_duration(&*client)?;
@@ -732,120 +687,81 @@
.map_err(Into::into)
}
-/// Start a normal parachain node.
-pub async fn start_node<Runtime, RuntimeApi, ExecutorDispatch>(
- parachain_config: Configuration,
- polkadot_config: Configuration,
- collator_options: CollatorOptions,
- id: ParaId,
- hwbench: Option<sc_sysinfo::HwBench>,
-) -> sc_service::error::Result<(TaskManager, Arc<FullClient<RuntimeApi, ExecutorDispatch>>)>
+pub fn start_consensus<ExecutorDispatch, RuntimeApi, Runtime>(
+ client: Arc<FullClient<RuntimeApi, ExecutorDispatch>>,
+ backend: Arc<FullBackend>,
+ prometheus_registry: Option<&Registry>,
+ telemetry: Option<TelemetryHandle>,
+ task_manager: &TaskManager,
+ relay_chain_interface: Arc<dyn RelayChainInterface>,
+ transaction_pool: Arc<
+ sc_transaction_pool::FullPool<Block, FullClient<RuntimeApi, ExecutorDispatch>>,
+ >,
+ sync_oracle: Arc<SyncingService<Block>>,
+ keystore: KeystorePtr,
+ overseer_handle: OverseerHandle,
+ relay_chain_slot_duration: Duration,
+ para_id: ParaId,
+ collator_key: CollatorPair,
+ announce_block: Arc<dyn Fn(Hash, Option<Vec<u8>>) + Send + Sync>,
+) -> Result<(), sc_service::Error>
where
- Runtime: RuntimeInstance + Send + Sync + 'static,
- <Runtime as RuntimeInstance>::CrossAccountId: Serialize,
- for<'de> <Runtime as RuntimeInstance>::CrossAccountId: Deserialize<'de>,
+ ExecutorDispatch: NativeExecutionDispatch + 'static,
RuntimeApi: sp_api::ConstructRuntimeApi<Block, FullClient<RuntimeApi, ExecutorDispatch>>
+ Send
+ Sync
+ 'static,
- RuntimeApi::RuntimeApi: sp_transaction_pool::runtime_api::TaggedTransactionQueue<Block>
- + fp_rpc::EthereumRuntimeRPCApi<Block>
- + fp_rpc::ConvertTransactionRuntimeApi<Block>
- + sp_session::SessionKeys<Block>
- + sp_block_builder::BlockBuilder<Block>
- + pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi<Block, Balance>
- + sp_api::ApiExt<Block, StateBackend = sc_client_api::StateBackendFor<FullBackend, Block>>
- + up_rpc::UniqueApi<Block, Runtime::CrossAccountId, AccountId>
- + app_promotion_rpc::AppPromotionApi<Block, BlockNumber, Runtime::CrossAccountId, AccountId>
- + up_pov_estimate_rpc::PovEstimateApi<Block>
- + substrate_frame_rpc_system::AccountNonceApi<Block, AccountId, Index>
- + sp_api::Metadata<Block>
- + sp_offchain::OffchainWorkerApi<Block>
- + cumulus_primitives_core::CollectCollationInfo<Block>
- + sp_consensus_aura::AuraApi<Block, AuraId>,
- ExecutorDispatch: NativeExecutionDispatch + 'static,
+ RuntimeApi::RuntimeApi: RuntimeApiDep<Runtime> + 'static,
+ Runtime: RuntimeInstance,
{
- start_node_impl::<Runtime, RuntimeApi, ExecutorDispatch, _, _>(
- parachain_config,
- polkadot_config,
- collator_options,
- id,
- parachain_build_import_queue,
- |client,
- backend,
- prometheus_registry,
- telemetry,
- task_manager,
- relay_chain_interface,
- transaction_pool,
- sync_oracle,
- keystore,
- force_authoring| {
- let slot_duration = cumulus_client_consensus_aura::slot_duration(&*client)?;
+ let slot_duration = cumulus_client_consensus_aura::slot_duration(&*client)?;
- let proposer_factory = sc_basic_authorship::ProposerFactory::with_proof_recording(
- task_manager.spawn_handle(),
- client.clone(),
- transaction_pool,
- prometheus_registry,
- telemetry.clone(),
- );
+ let proposer_factory = sc_basic_authorship::ProposerFactory::with_proof_recording(
+ task_manager.spawn_handle(),
+ client.clone(),
+ transaction_pool,
+ prometheus_registry,
+ telemetry.clone(),
+ );
+ let proposer = Proposer::new(proposer_factory);
- let block_import = ParachainBlockImport::new(client.clone(), backend);
+ let collator_service = CollatorService::new(
+ client.clone(),
+ Arc::new(task_manager.spawn_handle()),
+ announce_block,
+ client.clone(),
+ );
- Ok(AuraConsensus::build::<
- sp_consensus_aura::sr25519::AuthorityPair,
- _,
- _,
- _,
- _,
- _,
- _,
- >(BuildAuraConsensusParams {
- proposer_factory,
- create_inherent_data_providers: move |_, (relay_parent, validation_data)| {
- let relay_chain_interface = relay_chain_interface.clone();
- async move {
- let parachain_inherent =
- cumulus_primitives_parachain_inherent::ParachainInherentData::create_at(
- relay_parent,
- &relay_chain_interface,
- &validation_data,
- id,
- ).await;
+ let block_import = ParachainBlockImport::new(client.clone(), backend);
- let time = sp_timestamp::InherentDataProvider::from_system_time();
-
- let slot =
- sp_consensus_aura::inherents::InherentDataProvider::from_timestamp_and_slot_duration(
- *time,
- slot_duration,
- );
+ let params = BuildAuraConsensusParams {
+ create_inherent_data_providers: move |_, ()| async move { Ok(()) },
+ block_import,
+ para_client: client,
+ #[cfg(feature = "lookahead")]
+ para_backend: backend,
+ para_id,
+ relay_client: relay_chain_interface,
+ sync_oracle,
+ keystore,
+ slot_duration,
+ proposer,
+ collator_service,
+ // With async-baking, we allowed to be both slower (longer authoring) and faster (multiple para blocks per relay block)
+ authoring_duration: Duration::from_millis(500),
+ overseer_handle,
+ #[cfg(feature = "lookahead")]
+ code_hash_provider: || {},
+ collator_key,
+ relay_chain_slot_duration,
+ };
- let parachain_inherent = parachain_inherent.ok_or_else(|| {
- Box::<dyn std::error::Error + Send + Sync>::from(
- "Failed to create parachain inherent",
- )
- })?;
- Ok((slot, time, parachain_inherent))
- }
- },
- block_import,
- para_client: client,
- backoff_authoring_blocks: Option::<()>::None,
- sync_oracle,
- keystore,
- force_authoring,
- slot_duration,
- // We got around 500ms for proposing
- block_proposal_slot_portion: SlotProportion::new(1f32 / 24f32),
- telemetry,
- max_block_proposal_slot_portion: None,
- }))
- },
- hwbench,
- )
- .await
+ task_manager.spawn_essential_handle().spawn(
+ "aura",
+ None,
+ run_aura::<_, AuraAuthorityPair, _, _, _, _, _, _, _>(params),
+ );
+ Ok(())
}
fn dev_build_import_queue<RuntimeApi, ExecutorDispatch>(
@@ -854,17 +770,14 @@
config: &Configuration,
_: Option<TelemetryHandle>,
task_manager: &TaskManager,
-) -> Result<
- sc_consensus::DefaultImportQueue<Block, FullClient<RuntimeApi, ExecutorDispatch>>,
- sc_service::Error,
->
+) -> Result<sc_consensus::DefaultImportQueue<Block>, sc_service::Error>
where
RuntimeApi: sp_api::ConstructRuntimeApi<Block, FullClient<RuntimeApi, ExecutorDispatch>>
+ Send
+ Sync
+ 'static,
- RuntimeApi::RuntimeApi: sp_transaction_pool::runtime_api::TaggedTransactionQueue<Block>
- + sp_api::ApiExt<Block, StateBackend = sc_client_api::StateBackendFor<FullBackend, Block>>,
+ RuntimeApi::RuntimeApi:
+ sp_transaction_pool::runtime_api::TaggedTransactionQueue<Block> + sp_api::ApiExt<Block>,
ExecutorDispatch: NativeExecutionDispatch + 'static,
{
Ok(sc_consensus_manual_seal::import_queue(
@@ -881,6 +794,15 @@
pub eth_backend: Arc<fc_db::kv::Backend<Block>>,
}
+struct DefaultEthConfig<C>(PhantomData<C>);
+impl<C> EthConfig<Block, C> for DefaultEthConfig<C>
+where
+ C: StorageProvider<Block, FullBackend> + Sync + Send + 'static,
+{
+ type EstimateGasAdapter = ();
+ type RuntimeStorageOverride = SystemAccountId32StorageOverride<Block, C, FullBackend>;
+}
+
/// Builds a new development service. This service uses instant seal, and mocks
/// the parachain inherent
pub fn start_dev_node<Runtime, RuntimeApi, ExecutorDispatch>(
@@ -897,28 +819,14 @@
+ Send
+ Sync
+ 'static,
- RuntimeApi::RuntimeApi: sp_transaction_pool::runtime_api::TaggedTransactionQueue<Block>
- + fp_rpc::EthereumRuntimeRPCApi<Block>
- + fp_rpc::ConvertTransactionRuntimeApi<Block>
- + sp_session::SessionKeys<Block>
- + sp_block_builder::BlockBuilder<Block>
- + pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi<Block, Balance>
- + sp_api::ApiExt<Block, StateBackend = sc_client_api::StateBackendFor<FullBackend, Block>>
- + up_rpc::UniqueApi<Block, Runtime::CrossAccountId, AccountId>
- + app_promotion_rpc::AppPromotionApi<Block, BlockNumber, Runtime::CrossAccountId, AccountId>
- + up_pov_estimate_rpc::PovEstimateApi<Block>
- + substrate_frame_rpc_system::AccountNonceApi<Block, AccountId, Index>
- + sp_api::Metadata<Block>
- + sp_offchain::OffchainWorkerApi<Block>
- + cumulus_primitives_core::CollectCollationInfo<Block>
- + sp_consensus_aura::AuraApi<Block, AuraId>,
+ RuntimeApi::RuntimeApi: RuntimeApiDep<Runtime> + 'static,
ExecutorDispatch: NativeExecutionDispatch + 'static,
{
+ use fc_consensus::FrontierBlockImport;
use sc_consensus_manual_seal::{
- run_manual_seal, run_delayed_finalize, EngineCommand, ManualSealParams,
- DelayedFinalizeParams,
+ run_delayed_finalize, run_manual_seal, DelayedFinalizeParams, EngineCommand,
+ ManualSealParams,
};
- use fc_consensus::FrontierBlockImport;
let sc_service::PartialComponents {
client,
@@ -935,7 +843,7 @@
eth_backend,
telemetry_worker_handle: _,
},
- } = new_partial::<RuntimeApi, ExecutorDispatch, _>(
+ } = new_partial::<Runtime, RuntimeApi, ExecutorDispatch, _>(
&config,
dev_build_import_queue::<RuntimeApi, ExecutorDispatch>,
)?;
@@ -954,15 +862,6 @@
warp_sync_params: None,
})?;
- if config.offchain_worker.enabled {
- sc_service::build_offchain_workers(
- &config,
- task_manager.spawn_handle(),
- client.clone(),
- network.clone(),
- );
- }
-
let collator = config.role.is_authority();
let select_chain = maybe_select_chain;
@@ -1141,7 +1040,7 @@
let mut rpc_module = RpcModule::new(());
- let full_deps = unique_rpc::FullDeps {
+ let full_deps = FullDeps {
runtime_id,
#[cfg(feature = "pov-estimate")]
@@ -1161,9 +1060,9 @@
select_chain,
};
- unique_rpc::create_full::<_, _, _, Runtime, RuntimeApi, _>(&mut rpc_module, full_deps)?;
+ create_full::<_, _, _, Runtime, RuntimeApi, _>(&mut rpc_module, full_deps)?;
- let eth_deps = unique_rpc::EthDeps {
+ let eth_deps = EthDeps {
client,
graph: transaction_pool.pool().clone(),
pool: transaction_pool,
@@ -1181,9 +1080,19 @@
eth_pubsub_notification_sinks,
overrides,
sync: sync_service.clone(),
+ // We don't have any inherents except parachain built-ins, which we can't even extract from inside `run_aura`.
+ pending_create_inherent_data_providers: |_, ()| async move { Ok(()) },
};
- unique_rpc::create_eth(
+ create_eth::<
+ _,
+ _,
+ _,
+ _,
+ _,
+ _,
+ DefaultEthConfig<FullClient<RuntimeApi, ExecutorDispatch>>,
+ >(
&mut rpc_module,
eth_deps,
subscription_task_executor.clone(),
@@ -1241,37 +1150,35 @@
})
}
-pub struct FrontierTaskParams<'a, B: BlockT, C, BE> {
+pub struct FrontierTaskParams<'a, C, B> {
pub task_manager: &'a TaskManager,
pub client: Arc<C>,
- pub substrate_backend: Arc<BE>,
- pub eth_backend: Arc<fc_db::kv::Backend<B>>,
+ pub substrate_backend: Arc<B>,
+ pub eth_backend: Arc<fc_db::kv::Backend<Block>>,
pub eth_filter_pool: Option<FilterPool>,
- pub overrides: Arc<OverrideHandle<B>>,
+ pub overrides: Arc<OverrideHandle<Block>>,
pub fee_history_limit: u64,
pub fee_history_cache: FeeHistoryCache,
pub sync_strategy: SyncStrategy,
pub prometheus_registry: Option<Registry>,
}
-pub fn spawn_frontier_tasks<B, C, BE>(
- params: FrontierTaskParams<B, C, BE>,
- sync: Arc<SyncingService<B>>,
+pub fn spawn_frontier_tasks<C, B>(
+ params: FrontierTaskParams<C, B>,
+ sync: Arc<SyncingService<Block>>,
pubsub_notification_sinks: Arc<
- EthereumBlockNotificationSinks<fc_mapping_sync::EthereumBlockNotification<B>>,
+ EthereumBlockNotificationSinks<fc_mapping_sync::EthereumBlockNotification<Block>>,
>,
-) -> Arc<EthBlockDataCacheTask<B>>
+) -> Arc<EthBlockDataCacheTask<Block>>
where
- C: ProvideRuntimeApi<B> + BlockOf,
- C: HeaderBackend<B> + HeaderMetadata<B, Error = BlockChainError> + 'static,
- C: BlockchainEvents<B> + StorageProvider<B, BE>,
+ C: ProvideRuntimeApi<Block> + BlockOf,
+ C: HeaderBackend<Block> + HeaderMetadata<Block, Error = BlockChainError> + 'static,
+ C: BlockchainEvents<Block> + StorageProvider<Block, B>,
C: Send + Sync + 'static,
- C::Api: EthereumRuntimeRPCApi<B>,
- C::Api: BlockBuilder<B>,
- B: BlockT<Hash = H256> + Send + Sync + 'static,
- B::Header: HeaderT<Number = u32>,
- BE: Backend<B> + 'static,
- BE::State: StateBackend<BlakeTwo256>,
+ C::Api: EthereumRuntimeRPCApi<Block>,
+ C::Api: BlockBuilder<Block>,
+ B: Backend<Block> + 'static,
+ B::State: StateBackend<BlakeTwo256>,
{
let FrontierTaskParams {
task_manager,
node/rpc/CHANGELOG.mddiffbeforeafterboth--- a/node/rpc/CHANGELOG.md
+++ /dev/null
@@ -1,15 +0,0 @@
-<!-- bureaucrate goes here -->
-## [v0.1.2] 2022-09-08
-
-### Added
-- Support RPC for `AppPromotion` pallet.
-
-## [v0.1.1] 2022-08-16
-
-### Other changes
-
-- build: Upgrade polkadot to v0.9.27 2c498572636f2b34d53b1c51b7283a761a7dc90a
-
-- build: Upgrade polkadot to v0.9.26 85515e54c4ca1b82a2630034e55dcc804c643bf8
-
-- build: Upgrade polkadot to v0.9.25 cdfb9bdc7b205ff1b5134f034ef9973d769e5e6b
\ No newline at end of file
node/rpc/Cargo.tomldiffbeforeafterboth--- a/node/rpc/Cargo.toml
+++ /dev/null
@@ -1,48 +0,0 @@
-[package]
-authors = ['Unique Network <support@uniquenetwork.io>']
-description = "Unique chain rpc"
-edition = "2021"
-license = 'GPLv3'
-name = "unique-rpc"
-version = "0.1.2"
-
-[package.metadata.docs.rs]
-targets = ["x86_64-unknown-linux-gnu"]
-
-[dependencies]
-jsonrpsee = { workspace = true }
-# pallet-contracts-rpc = { git = 'https://github.com/paritytech/substrate', branch = 'master' }
-pallet-transaction-payment-rpc = { workspace = true }
-sc-client-api = { workspace = true }
-sc-network = { workspace = true }
-sc-network-sync = { workspace = true }
-sc-rpc = { workspace = true }
-sc-rpc-api = { workspace = true }
-sc-service = { workspace = true }
-sc-transaction-pool = { workspace = true }
-sp-api = { workspace = true }
-sp-block-builder = { workspace = true }
-sp-blockchain = { workspace = true }
-sp-runtime = { workspace = true }
-substrate-frame-rpc-system = { workspace = true }
-
-fc-db = { workspace = true }
-fc-rpc = { workspace = true }
-fc-rpc-core = { workspace = true }
-fc-mapping-sync = { workspace = true }
-fp-rpc = { workspace = true }
-fp-storage = { workspace = true }
-
-app-promotion-rpc = { workspace = true }
-serde = { workspace = true }
-uc-rpc = { workspace = true }
-up-common = { workspace = true }
-up-data-structs = { workspace = true }
-up-pov-estimate-rpc = { workspace = true, default-features = true }
-up-rpc = { workspace = true }
-pallet-ethereum.workspace = true
-
-[features]
-default = []
-pov-estimate = ['uc-rpc/pov-estimate']
-std = []
node/rpc/src/lib.rsdiffbeforeafterboth--- a/node/rpc/src/lib.rs
+++ /dev/null
@@ -1,339 +0,0 @@
-// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
-// This file is part of Unique Network.
-
-// Unique Network is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// Unique Network is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-
-use fc_mapping_sync::{EthereumBlockNotificationSinks, EthereumBlockNotification};
-use sp_runtime::traits::BlakeTwo256;
-use fc_rpc::{
- EthBlockDataCacheTask, OverrideHandle, RuntimeApiStorageOverride, SchemaV1Override,
- StorageOverride, SchemaV2Override, SchemaV3Override,
-};
-use jsonrpsee::RpcModule;
-use fc_rpc_core::types::{FilterPool, FeeHistoryCache};
-use fp_storage::EthereumStorageSchema;
-use sc_client_api::{
- backend::{AuxStore, StorageProvider},
- client::BlockchainEvents,
- StateBackend, Backend,
-};
-use sc_network::NetworkService;
-use sc_network_sync::SyncingService;
-use sc_rpc::SubscriptionTaskExecutor;
-pub use sc_rpc_api::DenyUnsafe;
-use sc_transaction_pool::{ChainApi, Pool};
-use sp_api::ProvideRuntimeApi;
-use sp_block_builder::BlockBuilder;
-use sp_blockchain::{Error as BlockChainError, HeaderBackend, HeaderMetadata};
-use sc_service::TransactionPool;
-use std::{collections::BTreeMap, sync::Arc};
-
-use up_common::types::opaque::*;
-
-#[cfg(feature = "pov-estimate")]
-type FullBackend = sc_service::TFullBackend<Block>;
-
-/// Full client dependencies.
-pub struct FullDeps<C, P, SC> {
- /// The client instance to use.
- pub client: Arc<C>,
- /// Transaction pool instance.
- pub pool: Arc<P>,
- /// The SelectChain Strategy
- pub select_chain: SC,
- /// Whether to deny unsafe calls
- pub deny_unsafe: DenyUnsafe,
-
- /// Runtime identification (read from the chain spec)
- pub runtime_id: RuntimeId,
- /// Executor params for PoV estimating
- #[cfg(feature = "pov-estimate")]
- pub exec_params: uc_rpc::pov_estimate::ExecutorParams,
- /// Substrate Backend.
- #[cfg(feature = "pov-estimate")]
- pub backend: Arc<FullBackend>,
-}
-
-pub fn overrides_handle<C, BE, R>(client: Arc<C>) -> Arc<OverrideHandle<Block>>
-where
- C: ProvideRuntimeApi<Block> + StorageProvider<Block, BE> + AuxStore,
- C: HeaderBackend<Block> + HeaderMetadata<Block, Error = BlockChainError>,
- C: Send + Sync + 'static,
- C::Api: fp_rpc::EthereumRuntimeRPCApi<Block>,
- C::Api: up_rpc::UniqueApi<Block, <R as RuntimeInstance>::CrossAccountId, AccountId>,
- BE: Backend<Block> + 'static,
- BE::State: StateBackend<BlakeTwo256>,
- R: RuntimeInstance + Send + Sync + 'static,
-{
- let mut overrides_map = BTreeMap::new();
- overrides_map.insert(
- EthereumStorageSchema::V1,
- Box::new(SchemaV1Override::new(client.clone())) as Box<dyn StorageOverride<_> + 'static>,
- );
- overrides_map.insert(
- EthereumStorageSchema::V2,
- Box::new(SchemaV2Override::new(client.clone())) as Box<dyn StorageOverride<_> + 'static>,
- );
- overrides_map.insert(
- EthereumStorageSchema::V3,
- Box::new(SchemaV3Override::new(client.clone())) as Box<dyn StorageOverride<_> + 'static>,
- );
-
- Arc::new(OverrideHandle {
- schemas: overrides_map,
- fallback: Box::new(RuntimeApiStorageOverride::new(client)),
- })
-}
-
-/// Instantiate all Full RPC extensions.
-pub fn create_full<C, P, SC, R, A, B>(
- io: &mut RpcModule<()>,
- deps: FullDeps<C, P, SC>,
-) -> Result<(), Box<dyn std::error::Error + Send + Sync>>
-where
- C: ProvideRuntimeApi<Block> + StorageProvider<Block, B> + AuxStore,
- C: HeaderBackend<Block> + HeaderMetadata<Block, Error = BlockChainError> + 'static,
- C: Send + Sync + 'static,
- C: BlockchainEvents<Block>,
- C::Api: substrate_frame_rpc_system::AccountNonceApi<Block, AccountId, Index>,
- C::Api: BlockBuilder<Block>,
- // C::Api: pallet_contracts_rpc::ContractsRuntimeApi<Block, AccountId, Balance, BlockNumber, Hash>,
- C::Api: pallet_transaction_payment_rpc::TransactionPaymentRuntimeApi<Block, Balance>,
- C::Api: up_rpc::UniqueApi<Block, <R as RuntimeInstance>::CrossAccountId, AccountId>,
- C::Api: app_promotion_rpc::AppPromotionApi<
- Block,
- BlockNumber,
- <R as RuntimeInstance>::CrossAccountId,
- AccountId,
- >,
- C::Api: up_pov_estimate_rpc::PovEstimateApi<Block>,
- B: sc_client_api::Backend<Block> + Send + Sync + 'static,
- B::State: sc_client_api::backend::StateBackend<sp_runtime::traits::HashFor<Block>>,
- P: TransactionPool<Block = Block> + 'static,
- R: RuntimeInstance + Send + Sync + 'static,
- <R as RuntimeInstance>::CrossAccountId: serde::Serialize,
- C: sp_api::CallApiAt<
- sp_runtime::generic::Block<
- sp_runtime::generic::Header<u32, BlakeTwo256>,
- sp_runtime::OpaqueExtrinsic,
- >,
- >,
- for<'de> <R as RuntimeInstance>::CrossAccountId: serde::Deserialize<'de>,
-{
- use uc_rpc::{UniqueApiServer, Unique};
-
- use uc_rpc::{AppPromotionApiServer, AppPromotion};
-
- #[cfg(feature = "pov-estimate")]
- use uc_rpc::pov_estimate::{PovEstimateApiServer, PovEstimate};
-
- // use pallet_contracts_rpc::{Contracts, ContractsApi};
- use pallet_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApiServer};
- use substrate_frame_rpc_system::{System, SystemApiServer};
-
- let FullDeps {
- client,
- pool,
- select_chain: _,
- deny_unsafe,
-
- runtime_id: _,
-
- #[cfg(feature = "pov-estimate")]
- exec_params,
-
- #[cfg(feature = "pov-estimate")]
- backend,
- } = deps;
-
- io.merge(System::new(Arc::clone(&client), Arc::clone(&pool), deny_unsafe).into_rpc())?;
- io.merge(TransactionPayment::new(Arc::clone(&client)).into_rpc())?;
-
- io.merge(Unique::new(client.clone()).into_rpc())?;
-
- io.merge(AppPromotion::new(client).into_rpc())?;
-
- #[cfg(feature = "pov-estimate")]
- io.merge(
- PovEstimate::new(
- client.clone(),
- backend,
- deny_unsafe,
- exec_params,
- runtime_id,
- )
- .into_rpc(),
- )?;
-
- Ok(())
-}
-
-pub struct EthDeps<C, P, CA: ChainApi> {
- /// The client instance to use.
- pub client: Arc<C>,
- /// Transaction pool instance.
- pub pool: Arc<P>,
- /// Graph pool instance.
- pub graph: Arc<Pool<CA>>,
- /// Syncing service
- pub sync: Arc<SyncingService<Block>>,
- /// The Node authority flag
- pub is_authority: bool,
- /// Network service
- pub network: Arc<NetworkService<Block, Hash>>,
-
- /// Ethereum Backend.
- pub eth_backend: Arc<dyn fc_db::BackendReader<Block> + Send + Sync>,
- /// Maximum number of logs in a query.
- pub max_past_logs: u32,
- /// Maximum fee history cache size.
- pub fee_history_limit: u64,
- /// Fee history cache.
- pub fee_history_cache: FeeHistoryCache,
- pub eth_block_data_cache: Arc<EthBlockDataCacheTask<Block>>,
- /// EthFilterApi pool.
- pub eth_filter_pool: Option<FilterPool>,
- pub eth_pubsub_notification_sinks:
- Arc<EthereumBlockNotificationSinks<EthereumBlockNotification<Block>>>,
- /// Whether to enable eth dev signer
- pub enable_dev_signer: bool,
-
- pub overrides: Arc<OverrideHandle<Block>>,
-}
-
-/// This converter is never used, but we have a generic
-/// Option<T>, where T should implement ConvertTransaction
-///
-/// TODO: remove after never-type (`!`) stabilization
-enum NeverConvert {}
-impl<T> fp_rpc::ConvertTransaction<T> for NeverConvert {
- fn convert_transaction(&self, _transaction: pallet_ethereum::Transaction) -> T {
- unreachable!()
- }
-}
-
-pub fn create_eth<C, P, CA, B>(
- io: &mut RpcModule<()>,
- deps: EthDeps<C, P, CA>,
- subscription_task_executor: SubscriptionTaskExecutor,
-) -> Result<(), Box<dyn std::error::Error + Send + Sync>>
-where
- C: ProvideRuntimeApi<Block> + StorageProvider<Block, B> + AuxStore,
- C: HeaderBackend<Block> + HeaderMetadata<Block, Error = BlockChainError> + 'static,
- C: Send + Sync + 'static,
- C: BlockchainEvents<Block>,
- C::Api: BlockBuilder<Block>,
- C::Api: fp_rpc::EthereumRuntimeRPCApi<Block>,
- C::Api: fp_rpc::ConvertTransactionRuntimeApi<Block>,
- P: TransactionPool<Block = Block> + 'static,
- CA: ChainApi<Block = Block> + 'static,
- B: sc_client_api::Backend<Block> + Send + Sync + 'static,
- C: sp_api::CallApiAt<
- sp_runtime::generic::Block<
- sp_runtime::generic::Header<u32, BlakeTwo256>,
- sp_runtime::OpaqueExtrinsic,
- >,
- >,
-{
- use fc_rpc::{
- Eth, EthApiServer, EthDevSigner, EthFilter, EthFilterApiServer, EthPubSub,
- EthPubSubApiServer, EthSigner, Net, NetApiServer, Web3, Web3ApiServer, TxPool,
- TxPoolApiServer,
- };
-
- let EthDeps {
- client,
- pool,
- graph,
- eth_backend,
- max_past_logs,
- fee_history_limit,
- fee_history_cache,
- eth_block_data_cache,
- eth_filter_pool,
- eth_pubsub_notification_sinks,
- enable_dev_signer,
- sync,
- is_authority,
- network,
- overrides,
- } = deps;
-
- let mut signers = Vec::new();
- if enable_dev_signer {
- signers.push(Box::new(EthDevSigner::new()) as Box<dyn EthSigner>);
- }
- let execute_gas_limit_multiplier = 10;
- io.merge(
- Eth::new(
- client.clone(),
- pool.clone(),
- graph.clone(),
- // We have no runtimes old enough to only accept converted transactions
- None::<NeverConvert>,
- sync.clone(),
- signers,
- overrides.clone(),
- eth_backend.clone(),
- is_authority,
- eth_block_data_cache.clone(),
- fee_history_cache,
- fee_history_limit,
- execute_gas_limit_multiplier,
- None,
- )
- .into_rpc(),
- )?;
-
- let tx_pool = TxPool::new(client.clone(), graph);
-
- if let Some(filter_pool) = eth_filter_pool {
- io.merge(
- EthFilter::new(
- client.clone(),
- eth_backend,
- tx_pool.clone(),
- filter_pool,
- 500_usize, // max stored filters
- max_past_logs,
- eth_block_data_cache,
- )
- .into_rpc(),
- )?;
- }
- io.merge(
- Net::new(
- client.clone(),
- network,
- // Whether to format the `peer_count` response as Hex (default) or not.
- true,
- )
- .into_rpc(),
- )?;
- io.merge(Web3::new(client.clone()).into_rpc())?;
- io.merge(
- EthPubSub::new(
- pool,
- client,
- sync,
- subscription_task_executor,
- overrides,
- eth_pubsub_notification_sinks,
- )
- .into_rpc(),
- )?;
- io.merge(tx_pool.into_rpc())?;
-
- Ok(())
-}
pallets/app-promotion/Cargo.tomldiffbeforeafterboth--- a/pallets/app-promotion/Cargo.toml
+++ b/pallets/app-promotion/Cargo.toml
@@ -23,11 +23,11 @@
# 'pallet-unique/runtime-benchmarks',
]
std = [
- 'codec/std',
'frame-benchmarking/std',
'frame-support/std',
'frame-system/std',
'pallet-evm/std',
+ 'parity-scale-codec/std',
'sp-core/std',
'sp-runtime/std',
'sp-std/std',
@@ -39,9 +39,7 @@
################################################################################
# Substrate Dependencies
-# Note: `package = "parity-scale-codec"` must be supplied since the `Encode` macro searches for it.
-codec = { workspace = true, package = "parity-scale-codec" }
-
+parity-scale-codec = { workspace = true }
scale-info = { workspace = true }
frame-benchmarking = { workspace = true, optional = true }
@@ -68,4 +66,4 @@
################################################################################
# Other
-log = { version = "0.4.16", default-features = false }
+log = { version = "0.4.20", default-features = false }
pallets/app-promotion/src/benchmarking.rsdiffbeforeafterboth--- a/pallets/app-promotion/src/benchmarking.rs
+++ b/pallets/app-promotion/src/benchmarking.rs
@@ -16,23 +16,22 @@
#![cfg(feature = "runtime-benchmarks")]
-use super::*;
-use crate::Pallet as PromototionPallet;
-use frame_support::traits::fungible::Unbalanced;
-use sp_runtime::traits::Bounded;
-
-use frame_benchmarking::{benchmarks, account};
-use frame_support::traits::OnInitialize;
+use frame_benchmarking::{account, benchmarks};
+use frame_support::traits::{fungible::Unbalanced, OnInitialize};
use frame_system::RawOrigin;
-use pallet_unique::benchmarking::create_nft_collection;
use pallet_evm_migration::Pallet as EvmMigrationPallet;
+use pallet_unique::benchmarking::create_nft_collection;
+use sp_runtime::traits::Bounded;
+
+use super::*;
+use crate::Pallet as PromototionPallet;
const SEED: u32 = 0;
fn set_admin<T>() -> Result<T::AccountId, sp_runtime::DispatchError>
where
T: Config + pallet_unique::Config + pallet_evm_migration::Config,
- T::BlockNumber: From<u32> + Into<u32>,
+ BlockNumberFor<T>: From<u32> + Into<u32>,
BalanceOf<T>: Sum + From<u128>,
{
let pallet_admin = account::<T::AccountId>("admin", 0, SEED);
@@ -53,7 +52,7 @@
benchmarks! {
where_clause{
where T: Config + pallet_unique::Config + pallet_evm_migration::Config ,
- T::BlockNumber: From<u32> + Into<u32>,
+ BlockNumberFor<T>: From<u32> + Into<u32>,
BalanceOf<T>: Sum + From<u128>
}
pallets/app-promotion/src/lib.rsdiffbeforeafterboth--- a/pallets/app-promotion/src/lib.rs
+++ b/pallets/app-promotion/src/lib.rs
@@ -53,32 +53,32 @@
pub mod types;
pub mod weights;
-use sp_std::{vec::Vec, vec, iter::Sum, borrow::ToOwned, cell::RefCell};
-use sp_core::H160;
-use codec::EncodeLike;
-pub use types::*;
-
-use up_data_structs::CollectionId;
-
use frame_support::{
- dispatch::{DispatchResult},
+ dispatch::DispatchResult,
+ ensure,
+ pallet_prelude::*,
+ storage::Key,
traits::{
- Get,
+ fungible::{Inspect, InspectFreeze, Mutate, MutateFreeze},
tokens::Balance,
- fungible::{Inspect, InspectFreeze, Mutate, MutateFreeze},
+ Get,
},
- ensure, BoundedVec,
+ weights::Weight,
+ Blake2_128Concat, BoundedVec, PalletId, Twox64Concat,
};
-
-use weights::WeightInfo;
-
+use frame_system::pallet_prelude::*;
pub use pallet::*;
use pallet_evm::account::CrossAccountId;
+use parity_scale_codec::EncodeLike;
+use sp_core::H160;
use sp_runtime::{
- Perbill,
- traits::{BlockNumberProvider, CheckedAdd, CheckedSub, AccountIdConversion, Zero},
- ArithmeticError, DispatchError,
+ traits::{AccountIdConversion, BlockNumberProvider, CheckedAdd, CheckedSub, Zero},
+ ArithmeticError, DispatchError, Perbill,
};
+use sp_std::{borrow::ToOwned, cell::RefCell, iter::Sum, vec, vec::Vec};
+pub use types::*;
+use up_data_structs::CollectionId;
+use weights::WeightInfo;
const PENDING_LIMIT_PER_BLOCK: u32 = 3;
@@ -87,12 +87,8 @@
#[frame_support::pallet]
pub mod pallet {
+
use super::*;
- use frame_support::{
- Blake2_128Concat, Twox64Concat, pallet_prelude::*, storage::Key, PalletId, weights::Weight,
- };
- use frame_system::pallet_prelude::*;
- use sp_runtime::DispatchError;
#[pallet::config]
pub trait Config:
@@ -125,11 +121,11 @@
/// In relay blocks.
#[pallet::constant]
- type RecalculationInterval: Get<Self::BlockNumber>;
+ type RecalculationInterval: Get<BlockNumberFor<Self>>;
/// In parachain blocks.
#[pallet::constant]
- type PendingInterval: Get<Self::BlockNumber>;
+ type PendingInterval: Get<BlockNumberFor<Self>>;
/// Rate of return for interval in blocks defined in `RecalculationInterval`.
#[pallet::constant]
@@ -146,7 +142,7 @@
type WeightInfo: WeightInfo;
// The relay block number provider
- type RelayBlockNumberProvider: BlockNumberProvider<BlockNumber = Self::BlockNumber>;
+ type RelayBlockNumberProvider: BlockNumberProvider<BlockNumber = BlockNumberFor<Self>>;
/// Events compatible with [`frame_system::Config::Event`].
type RuntimeEvent: IsType<<Self as frame_system::Config>::RuntimeEvent> + From<Event<Self>>;
@@ -230,9 +226,9 @@
pub type Staked<T: Config> = StorageNMap<
Key = (
Key<Blake2_128Concat, T::AccountId>,
- Key<Twox64Concat, T::BlockNumber>,
+ Key<Twox64Concat, BlockNumberFor<T>>,
),
- Value = (BalanceOf<T>, T::BlockNumber),
+ Value = (BalanceOf<T>, BlockNumberFor<T>),
QueryKind = ValueQuery,
>;
@@ -252,7 +248,7 @@
pub type PendingUnstake<T: Config> = StorageMap<
_,
Twox64Concat,
- T::BlockNumber,
+ BlockNumberFor<T>,
BoundedVec<(T::AccountId, BalanceOf<T>), ConstU32<PENDING_LIMIT_PER_BLOCK>>,
ValueQuery,
>;
@@ -262,16 +258,16 @@
#[pallet::storage]
#[pallet::getter(fn get_next_calculated_record)]
pub type PreviousCalculatedRecord<T: Config> =
- StorageValue<Value = (T::AccountId, T::BlockNumber), QueryKind = OptionQuery>;
+ StorageValue<Value = (T::AccountId, BlockNumberFor<T>), QueryKind = OptionQuery>;
#[pallet::hooks]
impl<T: Config> Hooks<BlockNumberFor<T>> for Pallet<T> {
/// Block overflow is impossible due to the fact that the unstake algorithm in on_initialize
/// implies the execution of a strictly limited number of relatively lightweight operations.
/// A separate benchmark has been implemented to scale the weight depending on the number of pendings.
- fn on_initialize(current_block_number: T::BlockNumber) -> Weight
+ fn on_initialize(current_block_number: BlockNumberFor<T>) -> Weight
where
- <T as frame_system::Config>::BlockNumber: From<u32>,
+ BlockNumberFor<T>: From<u32>,
{
if T::IsMaintenanceModeEnabled::get() {
return T::DbWeight::get().reads_writes(1, 0);
@@ -302,7 +298,7 @@
#[pallet::call]
impl<T: Config> Pallet<T>
where
- T::BlockNumber: From<u32> + Into<u32>,
+ BlockNumberFor<T>: From<u32> + Into<u32>,
<<T as Config>::Currency as Inspect<T::AccountId>>::Balance: Sum + From<u128>,
{
/// Sets an address as the the admin.
@@ -369,7 +365,7 @@
// Calculation of the number of recalculation periods,
// after how much the first interest calculation should be performed for the stake
- let recalculate_after_interval: T::BlockNumber =
+ let recalculate_after_interval: BlockNumberFor<T> =
if block_number % config.recalculation_interval == 0u32.into() {
1u32.into()
} else {
@@ -705,7 +701,7 @@
#[pallet::weight(<T as Config>::WeightInfo::on_initialize(PENDING_LIMIT_PER_BLOCK*pending_blocks.len() as u32))]
pub fn force_unstake(
origin: OriginFor<T>,
- pending_blocks: Vec<T::BlockNumber>,
+ pending_blocks: Vec<BlockNumberFor<T>>,
) -> DispatchResult {
ensure_root(origin)?;
@@ -917,7 +913,7 @@
/// - `staker`: staker account.
pub fn total_staked_by_id_per_block(
staker: impl EncodeLike<T::AccountId>,
- ) -> Option<Vec<(T::BlockNumber, BalanceOf<T>)>> {
+ ) -> Option<Vec<(BlockNumberFor<T>, BalanceOf<T>)>> {
let mut staked = Staked::<T>::iter_prefix((staker,))
.map(|(block, (amount, _))| (block, amount))
.collect::<Vec<_>>();
@@ -944,14 +940,14 @@
/// - `staker`: staker account.
pub fn cross_id_total_staked_per_block(
staker: T::CrossAccountId,
- ) -> Vec<(T::BlockNumber, BalanceOf<T>)> {
+ ) -> Vec<(BlockNumberFor<T>, BalanceOf<T>)> {
Self::total_staked_by_id_per_block(staker.as_sub()).unwrap_or_default()
}
fn recalculate_and_insert_stake(
staker: &T::AccountId,
- staked_block: T::BlockNumber,
- next_recalc_block: T::BlockNumber,
+ staked_block: BlockNumberFor<T>,
+ next_recalc_block: BlockNumberFor<T>,
base: BalanceOf<T>,
iters: u32,
income_acc: &mut BalanceOf<T>,
@@ -979,9 +975,9 @@
/// Get relay block number rounded down to multiples of config.recalculation_interval.
/// We need it to reward stakers in integer parts of recalculation_interval
fn get_current_recalc_block(
- current_relay_block: T::BlockNumber,
+ current_relay_block: BlockNumberFor<T>,
config: &PalletConfiguration<T>,
- ) -> T::BlockNumber {
+ ) -> BlockNumberFor<T> {
(current_relay_block / config.recalculation_interval) * config.recalculation_interval
}
@@ -1028,7 +1024,7 @@
/// - `staker`: staker account.
pub fn cross_id_pending_unstake_per_block(
staker: T::CrossAccountId,
- ) -> Vec<(T::BlockNumber, BalanceOf<T>)> {
+ ) -> Vec<(BlockNumberFor<T>, BalanceOf<T>)> {
let mut unsorted_res = vec![];
PendingUnstake::<T>::iter().for_each(|(block, pendings)| {
pendings.into_iter().for_each(|(id, amount)| {
pallets/app-promotion/src/types.rsdiffbeforeafterboth--- a/pallets/app-promotion/src/types.rs
+++ b/pallets/app-promotion/src/types.rs
@@ -1,13 +1,12 @@
-use frame_support::{dispatch::DispatchResult};
-
+use frame_support::dispatch::DispatchResult;
+use frame_system::pallet_prelude::*;
use pallet_common::CollectionHandle;
-
+use pallet_configuration::AppPromomotionConfigurationOverride;
+use pallet_evm_contract_helpers::{Config as EvmHelpersConfig, Pallet as EvmHelpersPallet};
+use sp_core::Get;
use sp_runtime::{DispatchError, Perbill};
-use up_data_structs::{CollectionId};
use sp_std::borrow::ToOwned;
-use pallet_evm_contract_helpers::{Pallet as EvmHelpersPallet, Config as EvmHelpersConfig};
-use pallet_configuration::{AppPromomotionConfigurationOverride};
-use sp_core::Get;
+use up_data_structs::CollectionId;
const MAX_NUMBER_PAYOUTS: u8 = 100;
pub(crate) const DEFAULT_NUMBER_PAYOUTS: u8 = 20;
@@ -114,9 +113,9 @@
}
pub(crate) struct PalletConfiguration<T: crate::Config> {
/// In relay blocks.
- pub recalculation_interval: T::BlockNumber,
+ pub recalculation_interval: BlockNumberFor<T>,
/// In parachain blocks.
- pub pending_interval: T::BlockNumber,
+ pub pending_interval: BlockNumberFor<T>,
/// Value for `RecalculationInterval` based on 0.05% per 24h.
pub interval_income: Perbill,
/// Maximum allowable number of stakers calculated per call of the `app-promotion::PayoutStakers` extrinsic.
pallets/balances-adapter/Cargo.tomldiffbeforeafterboth--- a/pallets/balances-adapter/Cargo.toml
+++ b/pallets/balances-adapter/Cargo.toml
@@ -15,7 +15,7 @@
sp-std = { workspace = true }
#Parity
-codec = { workspace = true, package = "parity-scale-codec" }
+parity-scale-codec = { workspace = true }
scale-info = { workspace = true }
# Unique
pallets/balances-adapter/src/common.rsdiffbeforeafterboth--- a/pallets/balances-adapter/src/common.rs
+++ b/pallets/balances-adapter/src/common.rs
@@ -1,11 +1,13 @@
use alloc::{vec, vec::Vec};
use core::marker::PhantomData;
-use crate::{Config, NativeFungibleHandle, Pallet};
+
use frame_support::{fail, weights::Weight};
use pallet_balances::{weights::SubstrateWeight as BalancesWeight, WeightInfo};
use pallet_common::{CommonCollectionOperations, CommonWeightInfo};
use up_data_structs::TokenId;
+use crate::{Config, NativeFungibleHandle, Pallet};
+
pub struct CommonWeights<T: Config>(PhantomData<T>);
// All implementations with `Weight::default` used in methods that return error `UnsupportedOperation`.
pallets/balances-adapter/src/erc.rsdiffbeforeafterboth--- a/pallets/balances-adapter/src/erc.rs
+++ b/pallets/balances-adapter/src/erc.rs
@@ -1,4 +1,3 @@
-use crate::{Config, NativeFungibleHandle, Pallet, SelfWeightOf};
use evm_coder::{abi::AbiType, generate_stubgen, solidity_interface, types::*};
use pallet_balances::WeightInfo;
use pallet_common::{
@@ -10,8 +9,10 @@
execution::{PreDispatch, Result},
frontier_contract, WithRecorder,
};
-use pallet_structure::{SelfWeightOf as StructureWeight, weights::WeightInfo as _};
-use sp_core::{U256, Get};
+use pallet_structure::{weights::WeightInfo as _, SelfWeightOf as StructureWeight};
+use sp_core::{Get, U256};
+
+use crate::{Config, NativeFungibleHandle, Pallet, SelfWeightOf};
frontier_contract! {
macro_rules! NativeFungibleHandle_result {...}
pallets/balances-adapter/src/lib.rsdiffbeforeafterboth--- a/pallets/balances-adapter/src/lib.rs
+++ b/pallets/balances-adapter/src/lib.rs
@@ -4,8 +4,8 @@
use core::ops::Deref;
use frame_support::sp_runtime::DispatchResult;
-use pallet_evm_coder_substrate::{WithRecorder, SubstrateRecorder};
pub use pallet::*;
+use pallet_evm_coder_substrate::{SubstrateRecorder, WithRecorder};
pub mod common;
pub mod erc;
@@ -55,16 +55,16 @@
}
#[frame_support::pallet]
pub mod pallet {
- use super::*;
use alloc::string::String;
+
use frame_support::{
dispatch::PostDispatchInfo,
ensure,
- pallet_prelude::{DispatchResultWithPostInfo, Pays},
+ pallet_prelude::*,
traits::{
- Get,
fungible::{Inspect, Mutate},
tokens::Preservation,
+ Get,
},
};
use pallet_balances::WeightInfo;
@@ -74,6 +74,8 @@
use sp_runtime::DispatchError;
use up_data_structs::{budget::Budget, mapping::TokenAddressMapping};
+ use super::*;
+
#[pallet::config]
pub trait Config:
frame_system::Config
pallets/collator-selection/Cargo.tomldiffbeforeafterboth--- a/pallets/collator-selection/Cargo.toml
+++ b/pallets/collator-selection/Cargo.toml
@@ -12,11 +12,9 @@
targets = ["x86_64-unknown-linux-gnu"]
[dependencies]
-# Note: `package = "parity-scale-codec"` must be supplied since the `Encode` macro searches for it.
-codec = { workspace = true, package = "parity-scale-codec" }
-
log = { workspace = true }
-rand = { version = "0.8.5", features = ["std_rng"], default-features = false }
+parity-scale-codec = { workspace = true }
+rand = { version = "0.8.5", default-features = false }
scale-info = { workspace = true }
serde = { workspace = true }
@@ -48,13 +46,13 @@
"frame-system/runtime-benchmarks",
]
std = [
- "codec/std",
"frame-benchmarking/std",
"frame-support/std",
"frame-system/std",
"log/std",
"pallet-authorship/std",
"pallet-session/std",
+ "parity-scale-codec/std",
"rand/std",
"scale-info/std",
"sp-consensus-aura/std",
pallets/collator-selection/src/benchmarking.rsdiffbeforeafterboth--- a/pallets/collator-selection/src/benchmarking.rs
+++ b/pallets/collator-selection/src/benchmarking.rs
@@ -32,25 +32,24 @@
//! Benchmarking setup for pallet-collator-selection
-use super::*;
-
-#[allow(unused)]
-use crate::{Pallet as CollatorSelection, BalanceOf};
use frame_benchmarking::{account, benchmarks, impl_benchmark_test_suite, whitelisted_caller};
use frame_support::{
assert_ok,
- codec::Decode,
traits::{
- EnsureOrigin,
fungible::{Inspect, Mutate},
- Get,
+ EnsureOrigin, Get,
},
};
-use frame_system::{EventRecord, RawOrigin};
+use frame_system::{pallet_prelude::*, EventRecord, RawOrigin};
use pallet_authorship::EventHandler;
use pallet_session::{self as session, SessionManager};
+use parity_scale_codec::Decode;
use sp_std::prelude::*;
+use super::*;
+#[allow(unused)]
+use crate::{BalanceOf, Pallet as CollatorSelection};
+
const SEED: u32 = 0;
// TODO: remove if this is given in substrate commit.
@@ -317,7 +316,7 @@
balance_unit::<T>() * 4u32.into(),
);
let author = account("author", 0, SEED);
- let new_block: T::BlockNumber = 10u32.into();
+ let new_block: BlockNumberFor<T>= 10u32.into();
frame_system::Pallet::<T>::set_block_number(new_block);
assert!(T::Currency::balance(&author) == 0u32.into());
@@ -338,8 +337,8 @@
register_validators::<T>(c);
register_candidates::<T>(c);
- let new_block: T::BlockNumber = 1800u32.into();
- let zero_block: T::BlockNumber = 0u32.into();
+ let new_block: BlockNumberFor<T>= 1800u32.into();
+ let zero_block: BlockNumberFor<T> = 0u32.into();
let candidates = <Candidates<T>>::get();
let non_removals = c.saturating_sub(r);
pallets/collator-selection/src/lib.rsdiffbeforeafterboth--- a/pallets/collator-selection/src/lib.rs
+++ b/pallets/collator-selection/src/lib.rs
@@ -96,26 +96,27 @@
<<T as Config>::Currency as Inspect<<T as frame_system::Config>::AccountId>>::Balance;
#[frame_support::pallet]
pub mod pallet {
- use super::*;
- pub use crate::weights::WeightInfo;
use core::ops::Div;
+
use frame_support::{
dispatch::{DispatchClass, DispatchResultWithPostInfo},
- inherent::Vec,
pallet_prelude::*,
sp_runtime::traits::{AccountIdConversion, CheckedSub, Saturating, Zero},
traits::{
- EnsureOrigin,
- fungible::{Balanced, BalancedHold, Inspect, InspectHold, Mutate, MutateHold},
- ValidatorRegistration,
+ fungible::{Balanced, BalancedHold, Inspect, Mutate, MutateHold},
tokens::{Precision, Preservation},
+ EnsureOrigin, ValidatorRegistration,
},
BoundedVec, PalletId,
};
use frame_system::pallet_prelude::*;
use pallet_session::SessionManager;
- use sp_runtime::{Perbill, traits::Convert};
+ use sp_runtime::{traits::Convert, Perbill};
use sp_staking::SessionIndex;
+ use sp_std::vec::Vec;
+
+ use super::*;
+ pub use crate::weights::WeightInfo;
/// A convertor from collators id. Since this pallet does not have stash/controller, this is
/// just identity.
@@ -131,8 +132,11 @@
pub trait Config: frame_system::Config {
/// Overarching event type.
type RuntimeEvent: From<Event<Self>> + IsType<<Self as frame_system::Config>::RuntimeEvent>;
+ /// Overarching hold reason.
+ type RuntimeHoldReason: From<HoldReason>;
+
type Currency: Mutate<Self::AccountId>
- + MutateHold<Self::AccountId>
+ + MutateHold<Self::AccountId, Reason = Self::RuntimeHoldReason>
+ BalancedHold<Self::AccountId>;
/// Origin that can dictate updating parameters of this pallet.
@@ -164,16 +168,19 @@
/// The weight information of this pallet.
type WeightInfo: WeightInfo;
- #[pallet::constant]
- type LicenceBondIdentifier: Get<<Self::Currency as InspectHold<Self::AccountId>>::Reason>;
-
type DesiredCollators: Get<u32>;
type LicenseBond: Get<BalanceOf<Self>>;
- type KickThreshold: Get<Self::BlockNumber>;
+ type KickThreshold: Get<BlockNumberFor<Self>>;
}
+ #[pallet::composite_enum]
+ pub enum HoldReason {
+ /// The funds are held as the license bond.
+ LicenseBond,
+ }
+
#[pallet::pallet]
pub struct Pallet<T>(_);
@@ -199,14 +206,13 @@
#[pallet::storage]
#[pallet::getter(fn last_authored_block)]
pub type LastAuthoredBlock<T: Config> =
- StorageMap<_, Twox64Concat, T::AccountId, T::BlockNumber, ValueQuery>;
+ StorageMap<_, Twox64Concat, T::AccountId, BlockNumberFor<T>, ValueQuery>;
#[pallet::genesis_config]
pub struct GenesisConfig<T: Config> {
pub invulnerables: Vec<T::AccountId>,
}
- #[cfg(feature = "std")]
impl<T: Config> Default for GenesisConfig<T> {
fn default() -> Self {
Self {
@@ -216,12 +222,11 @@
}
#[pallet::genesis_build]
- impl<T: Config> GenesisBuild<T> for GenesisConfig<T> {
+ impl<T: Config> BuildGenesisConfig for GenesisConfig<T> {
fn build(&self) {
- let duplicate_invulnerables = self
- .invulnerables
- .iter()
- .collect::<std::collections::BTreeSet<_>>();
+ use sp_std::collections::btree_set::BTreeSet;
+
+ let duplicate_invulnerables = self.invulnerables.iter().collect::<BTreeSet<_>>();
assert!(
duplicate_invulnerables.len() == self.invulnerables.len(),
"duplicate invulnerables in genesis."
@@ -375,7 +380,7 @@
let deposit = T::LicenseBond::get();
- T::Currency::hold(&T::LicenceBondIdentifier::get(), &who, deposit)?;
+ T::Currency::hold(&HoldReason::LicenseBond.into(), &who, deposit)?;
LicenseDepositOf::<T>::insert(who.clone(), deposit);
Self::deposit_event(Event::LicenseObtained {
@@ -538,7 +543,7 @@
let remaining = deposit - slashed;
let (imbalance, _) =
- T::Currency::slash(&T::LicenceBondIdentifier::get(), who, slashed);
+ T::Currency::slash(&HoldReason::LicenseBond.into(), who, slashed);
deposit_returned = remaining;
T::Currency::resolve(&T::TreasuryAccountId::get(), imbalance)
@@ -548,7 +553,7 @@
}
T::Currency::release(
- &T::LicenceBondIdentifier::get(),
+ &HoldReason::LicenseBond.into(),
who,
deposit_returned,
Precision::Exact,
@@ -608,7 +613,7 @@
/// Keep track of number of authored blocks per authority, uncles are counted as well since
/// they're a valid proof of being online.
impl<T: Config + pallet_authorship::Config>
- pallet_authorship::EventHandler<T::AccountId, T::BlockNumber> for Pallet<T>
+ pallet_authorship::EventHandler<T::AccountId, BlockNumberFor<T>> for Pallet<T>
{
fn note_author(author: T::AccountId) {
let pot = Self::account_id();
pallets/collator-selection/src/mock.rsdiffbeforeafterboth--- a/pallets/collator-selection/src/mock.rs
+++ b/pallets/collator-selection/src/mock.rs
@@ -30,61 +30,56 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-use super::*;
-use crate as collator_selection;
use frame_support::{
ord_parameter_types, parameter_types,
- traits::{FindAuthor, GenesisBuild, ValidatorRegistration},
+ traits::{ConstU32, FindAuthor, ValidatorRegistration},
PalletId,
};
use frame_system as system;
use frame_system::EnsureSignedBy;
-use sp_core::H256;
+use sp_core::{ConstBool, H256};
use sp_runtime::{
- testing::{Header, UintAuthorityId},
+ testing::UintAuthorityId,
traits::{BlakeTwo256, IdentityLookup, OpaqueKeys},
- Perbill, RuntimeAppPublic,
+ BuildStorage, Perbill, RuntimeAppPublic,
};
-type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic<Test>;
-type Block = frame_system::mocking::MockBlock<Test>;
+use super::*;
+use crate as collator_selection;
+
+type Block = frame_system::mocking::MockBlockU32<Test>;
// Configure a mock runtime to test the pallet.
frame_support::construct_runtime!(
- pub enum Test where
- Block = Block,
- NodeBlock = Block,
- UncheckedExtrinsic = UncheckedExtrinsic,
- {
- System: frame_system::{Pallet, Call, Config, Storage, Event<T>},
- Timestamp: pallet_timestamp::{Pallet, Call, Storage, Inherent},
- Session: pallet_session::{Pallet, Call, Storage, Event, Config<T>},
- Aura: pallet_aura::{Pallet, Storage, Config<T>},
- Balances: pallet_balances::{Pallet, Call, Storage, Config<T>, Event<T>},
- CollatorSelection: collator_selection::{Pallet, Call, Storage, Event<T>},
- Authorship: pallet_authorship::{Pallet, Storage},
+ pub enum Test {
+ System: frame_system,
+ Timestamp: pallet_timestamp,
+ Session: pallet_session,
+ Aura: pallet_aura,
+ Balances: pallet_balances,
+ CollatorSelection: collator_selection,
+ Authorship: pallet_authorship,
}
);
parameter_types! {
- pub const BlockHashCount: u64 = 250;
+ pub const BlockHashCount: u32 = 250;
pub const SS58Prefix: u8 = 42;
}
impl system::Config for Test {
type BaseCallFilter = frame_support::traits::Everything;
+ type Block = Block;
type BlockWeights = ();
type BlockLength = ();
type DbWeight = ();
type RuntimeOrigin = RuntimeOrigin;
type RuntimeCall = RuntimeCall;
- type Index = u64;
- type BlockNumber = u64;
+ type Nonce = u64;
type Hash = H256;
type Hashing = BlakeTwo256;
type AccountId = u64;
type Lookup = IdentityLookup<Self::AccountId>;
- type Header = Header;
type RuntimeEvent = RuntimeEvent;
type BlockHashCount = BlockHashCount;
type Version = ();
@@ -95,7 +90,7 @@
type SystemWeightInfo = ();
type SS58Prefix = SS58Prefix;
type OnSetCode = ();
- type MaxConsumers = frame_support::traits::ConstU32<16>;
+ type MaxConsumers = ConstU32<16>;
}
parameter_types! {
@@ -115,10 +110,10 @@
type MaxLocks = ();
type MaxReserves = MaxReserves;
type ReserveIdentifier = [u8; 8];
- type HoldIdentifier = [u8; 16];
type FreezeIdentifier = [u8; 16];
type MaxHolds = MaxHolds;
type MaxFreezes = MaxFreezes;
+ type RuntimeHoldReason = RuntimeHoldReason;
}
pub struct Author4;
@@ -151,6 +146,7 @@
type AuthorityId = sp_consensus_aura::sr25519::AuthorityId;
type MaxAuthorities = MaxAuthorities;
type DisabledValidators = ();
+ type AllowMultipleBlocksPerSlot = ConstBool<true>;
}
sp_runtime::impl_opaque_keys! {
@@ -168,27 +164,27 @@
parameter_types! {
pub static SessionHandlerCollators: Vec<u64> = Vec::new();
- pub static SessionChangeBlock: u64 = 0;
+ pub static SessionChangeBlock: u32 = 0;
}
pub struct TestSessionHandler;
impl pallet_session::SessionHandler<u64> for TestSessionHandler {
const KEY_TYPE_IDS: &'static [sp_runtime::KeyTypeId] = &[UintAuthorityId::ID];
fn on_genesis_session<Ks: OpaqueKeys>(keys: &[(u64, Ks)]) {
- SessionHandlerCollators::set(keys.into_iter().map(|(a, _)| *a).collect::<Vec<_>>())
+ SessionHandlerCollators::set(keys.iter().map(|(a, _)| *a).collect::<Vec<_>>())
}
fn on_new_session<Ks: OpaqueKeys>(_: bool, keys: &[(u64, Ks)], _: &[(u64, Ks)]) {
SessionChangeBlock::set(System::block_number());
dbg!(keys.len());
- SessionHandlerCollators::set(keys.into_iter().map(|(a, _)| *a).collect::<Vec<_>>())
+ SessionHandlerCollators::set(keys.iter().map(|(a, _)| *a).collect::<Vec<_>>())
}
fn on_before_session_ending() {}
fn on_disabled(_: u32) {}
}
parameter_types! {
- pub const Offset: u64 = 0;
- pub const Period: u64 = 10;
+ pub const Offset: u32 = 0;
+ pub const Period: u32 = 10;
}
impl pallet_session::Config for Test {
@@ -207,7 +203,7 @@
parameter_types! {
pub const MaxCollators: u32 = 5;
pub const LicenseBond: u64 = 10;
- pub const KickThreshold: u64 = 10;
+ pub const KickThreshold: u32 = 10;
// the following values do not matter and are meaningless, etc.
pub const DefaultWeightToFeeCoefficient: u64 = 100_000;
pub const DefaultMinGasPrice: u64 = 100_000;
@@ -236,6 +232,7 @@
impl Config for Test {
type RuntimeEvent = RuntimeEvent;
+ type RuntimeHoldReason = RuntimeHoldReason;
type UpdateOrigin = EnsureSignedBy<RootAccount, u64>;
type PotId = PotId;
type MaxCollators = MaxCollators;
@@ -244,7 +241,6 @@
type ValidatorId = <Self as frame_system::Config>::AccountId;
type ValidatorIdOf = IdentityCollator;
type ValidatorRegistration = IsRegistered;
- type LicenceBondIdentifier = LicenceBondIdentifier;
type Currency = Balances;
type DesiredCollators = MaxCollators;
type LicenseBond = LicenseBond;
@@ -254,8 +250,8 @@
pub fn new_test_ext() -> sp_io::TestExternalities {
sp_tracing::try_init_simple();
- let mut t = frame_system::GenesisConfig::default()
- .build_storage::<Test>()
+ let mut t = <frame_system::GenesisConfig<Test>>::default()
+ .build_storage()
.unwrap();
let invulnerables = vec![1, 2];
@@ -290,9 +286,9 @@
t.into()
}
-pub fn initialize_to_block(n: u64) {
+pub fn initialize_to_block(n: u32) {
for i in System::block_number() + 1..=n {
System::set_block_number(i);
- <AllPalletsWithSystem as frame_support::traits::OnInitialize<u64>>::on_initialize(i);
+ <AllPalletsWithSystem as frame_support::traits::OnInitialize<u32>>::on_initialize(i);
}
}
pallets/collator-selection/src/tests.rsdiffbeforeafterboth--- a/pallets/collator-selection/src/tests.rs
+++ b/pallets/collator-selection/src/tests.rs
@@ -30,14 +30,14 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-use crate::{self as collator_selection, Config};
-use crate::{mock::*, Error};
use frame_support::{
assert_noop, assert_ok,
- traits::{fungible, GenesisBuild, OnInitialize},
+ traits::{fungible, OnInitialize},
};
-use sp_runtime::{traits::BadOrigin, TokenError};
use scale_info::prelude::*;
+use sp_runtime::{traits::BadOrigin, BuildStorage, TokenError};
+
+use crate::{self as collator_selection, mock::*, Config, Error};
fn get_license_and_onboard(account_id: <Test as frame_system::Config>::AccountId) {
assert_ok!(CollatorSelection::get_license(RuntimeOrigin::signed(
@@ -464,8 +464,8 @@
#[should_panic = "duplicate invulnerables in genesis."]
fn cannot_set_genesis_value_twice() {
sp_tracing::try_init_simple();
- let mut t = frame_system::GenesisConfig::default()
- .build_storage::<Test>()
+ let mut t = <frame_system::GenesisConfig<Test>>::default()
+ .build_storage()
.unwrap();
let invulnerables = vec![1, 1];
pallets/common/Cargo.tomldiffbeforeafterboth--- a/pallets/common/Cargo.toml
+++ b/pallets/common/Cargo.toml
@@ -5,9 +5,7 @@
version = "0.1.14"
[dependencies]
-# Note: `package = "parity-scale-codec"` must be supplied since the `Encode` macro searches for it.
-codec = { workspace = true, package = "parity-scale-codec" }
-
+parity-scale-codec = { workspace = true }
scale-info = { workspace = true }
bondrewd = { version = "0.1.14", features = ["derive"], default-features = false }
@@ -21,6 +19,7 @@
sp-core = { workspace = true }
sp-runtime = { workspace = true }
sp-std = { workspace = true }
+sp-weights = { workspace = true }
up-data-structs = { workspace = true }
up-pov-estimate-rpc = { workspace = true }
@@ -28,14 +27,15 @@
default = ["std"]
runtime-benchmarks = ["frame-benchmarking/runtime-benchmarks", "up-data-structs/runtime-benchmarks"]
std = [
+ "evm-coder/std",
"frame-support/std",
"frame-system/std",
"pallet-evm/std",
"sp-runtime/std",
"sp-std/std",
+ "sp-weights/std",
"up-data-structs/std",
"up-pov-estimate-rpc/std",
- "evm-coder/std",
]
stubgen = ["evm-coder/stubgen", "up-data-structs/stubgen"]
tests = []
pallets/common/src/benchmarking.rsdiffbeforeafterboth--- a/pallets/common/src/benchmarking.rs
+++ b/pallets/common/src/benchmarking.rs
@@ -16,23 +16,25 @@
#![allow(missing_docs)]
-use sp_std::vec::Vec;
-use crate::{Config, CollectionHandle, Pallet};
-use pallet_evm::account::CrossAccountId;
-use frame_benchmarking::{benchmarks, account};
-use up_data_structs::{
- CollectionMode, CreateCollectionData, CollectionId, Property, PropertyKey, PropertyValue,
- CollectionPermissions, NestingPermissions, AccessMode, PropertiesPermissionMap,
- MAX_COLLECTION_NAME_LENGTH, MAX_COLLECTION_DESCRIPTION_LENGTH, MAX_TOKEN_PREFIX_LENGTH,
- MAX_PROPERTIES_PER_ITEM,
-};
+use core::convert::TryInto;
+
+use frame_benchmarking::{account, benchmarks};
use frame_support::{
- traits::{Get, fungible::Balanced, Imbalance, tokens::Precision},
pallet_prelude::ConstU32,
+ traits::{fungible::Balanced, tokens::Precision, Get, Imbalance},
BoundedVec,
};
-use core::convert::TryInto;
-use sp_runtime::{DispatchError, traits::Zero};
+use pallet_evm::account::CrossAccountId;
+use sp_runtime::{traits::Zero, DispatchError};
+use sp_std::vec::Vec;
+use up_data_structs::{
+ AccessMode, CollectionId, CollectionMode, CollectionPermissions, CreateCollectionData,
+ NestingPermissions, PropertiesPermissionMap, Property, PropertyKey, PropertyValue,
+ MAX_COLLECTION_DESCRIPTION_LENGTH, MAX_COLLECTION_NAME_LENGTH, MAX_PROPERTIES_PER_ITEM,
+ MAX_TOKEN_PREFIX_LENGTH,
+};
+
+use crate::{CollectionHandle, Config, Pallet};
const SEED: u32 = 1;
pallets/common/src/dispatch.rsdiffbeforeafterboth--- a/pallets/common/src/dispatch.rs
+++ b/pallets/common/src/dispatch.rs
@@ -2,13 +2,13 @@
use frame_support::{
dispatch::{
- DispatchResultWithPostInfo, PostDispatchInfo, Weight, DispatchErrorWithPostInfo,
- DispatchResult,
+ DispatchErrorWithPostInfo, DispatchResult, DispatchResultWithPostInfo, Pays,
+ PostDispatchInfo,
},
- dispatch::Pays,
traits::Get,
};
use sp_runtime::DispatchError;
+use sp_weights::Weight;
use up_data_structs::{CollectionId, CreateCollectionData};
use crate::{pallet::Config, CommonCollectionOperations};
pallets/common/src/erc.rsdiffbeforeafterboth--- a/pallets/common/src/erc.rs
+++ b/pallets/common/src/erc.rs
@@ -16,15 +16,17 @@
//! This module contains the implementation of pallet methods for evm.
-pub use pallet_evm::{PrecompileOutput, PrecompileResult, PrecompileHandle, account::CrossAccountId};
+pub use pallet_evm::{
+ account::CrossAccountId, PrecompileHandle, PrecompileOutput, PrecompileResult,
+};
use pallet_evm_coder_substrate::{
abi::AbiType,
- solidity_interface, ToLog,
+ dispatch_to_evm,
+ execution::{Error, PreDispatch, Result},
+ frontier_contract, solidity_interface,
types::*,
- execution::{Result, Error, PreDispatch},
- frontier_contract,
+ ToLog,
};
-use pallet_evm_coder_substrate::dispatch_to_evm;
use sp_std::{vec, vec::Vec};
use up_data_structs::{
CollectionMode, CollectionPermissions, OwnerRestrictedSet, Property, SponsoringRateLimit,
@@ -32,7 +34,7 @@
};
use crate::{
- Pallet, CollectionHandle, Config, CollectionProperties, eth, SelfWeightOf, weights::WeightInfo,
+ eth, weights::WeightInfo, CollectionHandle, CollectionProperties, Config, Pallet, SelfWeightOf,
};
frontier_contract! {
@@ -727,11 +729,10 @@
/// Contains static property keys and values.
pub mod static_property {
- use pallet_evm_coder_substrate::{
- execution::{Result, Error},
- };
use alloc::format;
+ use pallet_evm_coder_substrate::execution::{Error, Result};
+
const EXPECT_CONVERT_ERROR: &str = "length < limit";
/// Keys.
pallets/common/src/eth.rsdiffbeforeafterboth--- a/pallets/common/src/eth.rs
+++ b/pallets/common/src/eth.rs
@@ -17,15 +17,16 @@
//! The module contains a number of functions for converting and checking ethereum identifiers.
use alloc::format;
-use sp_std::{vec, vec::Vec};
+
use evm_coder::{
+ types::{Address, String},
AbiCoder,
- types::{Address, String},
};
-pub use pallet_evm::{Config, account::CrossAccountId};
-use sp_core::{H160, U256};
-use up_data_structs::{CollectionId, CollectionFlags};
+pub use pallet_evm::{account::CrossAccountId, Config};
use pallet_evm_coder_substrate::execution::Error;
+use sp_core::{H160, U256};
+use sp_std::{vec, vec::Vec};
+use up_data_structs::{CollectionFlags, CollectionId};
// 0x17c4e6453Cc49AAAaEACA894e6D9683e00000001 - collection 1
// TODO: Unhardcode prefix
pallets/common/src/helpers.rsdiffbeforeafterboth--- a/pallets/common/src/helpers.rs
+++ b/pallets/common/src/helpers.rs
@@ -3,9 +3,9 @@
//! The module contains helpers.
//!
use frame_support::{
+ dispatch::{DispatchErrorWithPostInfo, PostDispatchInfo},
pallet_prelude::DispatchResultWithPostInfo,
weights::Weight,
- dispatch::{DispatchErrorWithPostInfo, PostDispatchInfo},
};
/// Add weight for a `DispatchResultWithPostInfo`
pallets/common/src/lib.rsdiffbeforeafterboth--- a/pallets/common/src/lib.rs
+++ b/pallets/common/src/lib.rs
@@ -54,42 +54,42 @@
extern crate alloc;
use core::{
+ marker::PhantomData,
ops::{Deref, DerefMut},
slice::from_ref,
- marker::PhantomData,
};
-use pallet_evm_coder_substrate::{SubstrateRecorder, WithRecorder};
-use sp_std::vec::Vec;
-use pallet_evm::{account::CrossAccountId, Pallet as PalletEvm};
+
use evm_coder::ToLog;
use frame_support::{
- dispatch::{DispatchErrorWithPostInfo, DispatchResultWithPostInfo, Weight, PostDispatchInfo},
- ensure,
+ dispatch::{DispatchErrorWithPostInfo, DispatchResultWithPostInfo, Pays, PostDispatchInfo},
+ ensure, fail,
traits::{
- Get,
fungible::{Balanced, Debt, Inspect},
tokens::{Imbalance, Precision, Preservation},
+ Get,
},
- dispatch::Pays,
- transactional, fail,
+ transactional,
};
+pub use pallet::*;
+use pallet_evm::{account::CrossAccountId, Pallet as PalletEvm};
+use pallet_evm_coder_substrate::{SubstrateRecorder, WithRecorder};
+use sp_core::H160;
+use sp_runtime::{traits::Zero, ArithmeticError, DispatchError, DispatchResult};
+use sp_std::vec::Vec;
+use sp_weights::Weight;
use up_data_structs::{
- AccessMode, COLLECTION_NUMBER_LIMIT, Collection, RpcCollection, RpcCollectionFlags,
- CollectionId, CreateItemData, MAX_TOKEN_PREFIX_LENGTH, COLLECTION_ADMINS_LIMIT, TokenId,
- TokenChild, CollectionStats, MAX_TOKEN_OWNERSHIP, CollectionMode, NFT_SPONSOR_TRANSFER_TIMEOUT,
- FUNGIBLE_SPONSOR_TRANSFER_TIMEOUT, REFUNGIBLE_SPONSOR_TRANSFER_TIMEOUT, MAX_SPONSOR_TIMEOUT,
- CUSTOM_DATA_LIMIT, CollectionLimits, CreateCollectionData, SponsorshipState, CreateItemExData,
- SponsoringRateLimit, budget::Budget, PhantomType, Property,
- CollectionProperties as CollectionPropertiesT, TokenProperties, PropertiesPermissionMap,
- PropertyKey, PropertyValue, PropertyPermission, PropertiesError, TokenOwnerError,
- PropertyKeyPermission, TokenData, TrySetProperty, PropertyScope, CollectionPermissions,
+ budget::Budget, AccessMode, Collection, CollectionId, CollectionLimits, CollectionMode,
+ CollectionPermissions, CollectionProperties as CollectionPropertiesT, CollectionStats,
+ CreateCollectionData, CreateItemData, CreateItemExData, PhantomType, PropertiesError,
+ PropertiesPermissionMap, Property, PropertyKey, PropertyKeyPermission, PropertyPermission,
+ PropertyScope, PropertyValue, RpcCollection, RpcCollectionFlags, SponsoringRateLimit,
+ SponsorshipState, TokenChild, TokenData, TokenId, TokenOwnerError, TokenProperties,
+ TrySetProperty, COLLECTION_ADMINS_LIMIT, COLLECTION_NUMBER_LIMIT, CUSTOM_DATA_LIMIT,
+ FUNGIBLE_SPONSOR_TRANSFER_TIMEOUT, MAX_SPONSOR_TIMEOUT, MAX_TOKEN_OWNERSHIP,
+ MAX_TOKEN_PREFIX_LENGTH, NFT_SPONSOR_TRANSFER_TIMEOUT, REFUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,
};
use up_pov_estimate_rpc::PovInfo;
-pub use pallet::*;
-use sp_core::H160;
-use sp_runtime::{ArithmeticError, DispatchError, DispatchResult, traits::Zero};
-
#[cfg(feature = "runtime-benchmarks")]
pub mod benchmarking;
pub mod dispatch;
@@ -401,13 +401,16 @@
#[frame_support::pallet]
pub mod pallet {
- use super::*;
use dispatch::CollectionDispatch;
- use frame_support::{Blake2_128Concat, pallet_prelude::*, storage::Key, traits::StorageVersion};
- use up_data_structs::{TokenId, mapping::TokenAddressMapping};
+ use frame_support::{
+ pallet_prelude::*, storage::Key, traits::StorageVersion, Blake2_128Concat,
+ };
use scale_info::TypeInfo;
+ use up_data_structs::{mapping::TokenAddressMapping, TokenId};
use weights::WeightInfo;
+ use super::*;
+
#[pallet::config]
pub trait Config:
frame_system::Config + pallet_evm_coder_substrate::Config + pallet_evm::Config + TypeInfo
@@ -463,7 +466,6 @@
#[pallet::genesis_config]
pub struct GenesisConfig<T>(PhantomData<T>);
- #[cfg(feature = "std")]
impl<T: Config> Default for GenesisConfig<T> {
fn default() -> Self {
Self(Default::default())
@@ -471,7 +473,7 @@
}
#[pallet::genesis_build]
- impl<T: Config> GenesisBuild<T> for GenesisConfig<T> {
+ impl<T: Config> BuildGenesisConfig for GenesisConfig<T> {
fn build(&self) {
StorageVersion::new(1).put::<Pallet<T>>();
}
@@ -886,18 +888,18 @@
/// Get the value. If it is called the first time, the value will be initialized.
pub fn value(&mut self) -> &T {
- self.compute_value_if_not_already();
+ self.force_value();
self.value.as_ref().unwrap()
}
/// Get the value. If it is called the first time, the value will be initialized.
pub fn value_mut(&mut self) -> &mut T {
- self.compute_value_if_not_already();
+ self.force_value();
self.value.as_mut().unwrap()
}
fn into_inner(mut self) -> T {
- self.compute_value_if_not_already();
+ self.force_value();
self.value.unwrap()
}
@@ -906,7 +908,7 @@
self.value.is_some()
}
- fn compute_value_if_not_already(&mut self) {
+ fn force_value(&mut self) {
if self.value.is_none() {
self.value = Some(self.f.take().unwrap()())
}
@@ -2721,7 +2723,7 @@
#[cfg(any(feature = "tests", test))]
#[allow(missing_docs)]
pub mod tests {
- use crate::{DispatchResult, DispatchError, LazyValue, Config};
+ use crate::{Config, DispatchError, DispatchResult, LazyValue};
const fn to_bool(u: u8) -> bool {
u != 0
pallets/configuration/Cargo.tomldiffbeforeafterboth--- a/pallets/configuration/Cargo.toml
+++ b/pallets/configuration/Cargo.toml
@@ -4,8 +4,7 @@
version = "0.2.0"
[dependencies]
-# Note: `package = "parity-scale-codec"` must be supplied since the `Encode` macro searches for it.
-codec = { workspace = true, package = "parity-scale-codec" }
+parity-scale-codec = { workspace = true }
fp-evm = { workspace = true }
frame-benchmarking = { workspace = true, optional = true }
@@ -16,23 +15,26 @@
sp-arithmetic = { workspace = true }
sp-core = { workspace = true }
sp-io = { workspace = true }
+sp-runtime = { workspace = true }
sp-std = { workspace = true }
+staging-xcm = { workspace = true }
up-common = { workspace = true }
-xcm = { workspace = true }
hex-literal = { workspace = true }
+log = { workspace = true }
[features]
default = ["std"]
runtime-benchmarks = ["frame-benchmarking"]
std = [
- "codec/std",
"fp-evm/std",
"frame-benchmarking/std",
"frame-support/std",
"frame-system/std",
+ "parity-scale-codec/std",
"sp-arithmetic/std",
"sp-core/std",
+ "sp-runtime/std",
"sp-std/std",
]
try-runtime = ["frame-support/try-runtime"]
pallets/configuration/src/benchmarking.rsdiffbeforeafterboth--- a/pallets/configuration/src/benchmarking.rs
+++ b/pallets/configuration/src/benchmarking.rs
@@ -16,10 +16,11 @@
//! Benchmarking setup for pallet-configuration
-use super::*;
use frame_benchmarking::benchmarks;
-use frame_system::{EventRecord, RawOrigin};
use frame_support::assert_ok;
+use frame_system::{pallet_prelude::*, EventRecord, RawOrigin};
+
+use super::*;
fn assert_last_event<T: Config>(generic_event: <T as Config>::RuntimeEvent) {
let events = frame_system::Pallet::<T>::events();
@@ -52,7 +53,7 @@
}
set_app_promotion_configuration_override {
- let configuration: AppPromotionConfiguration<T::BlockNumber> = Default::default();
+ let configuration: AppPromotionConfiguration<BlockNumberFor<T>> = Default::default();
}: {
assert_ok!(
<Pallet<T>>::set_app_promotion_configuration_override(RawOrigin::Root.into(), configuration)
@@ -82,7 +83,7 @@
}
set_collator_selection_kick_threshold {
- let threshold: Option<T::BlockNumber> = Some(900u32.into());
+ let threshold: Option<BlockNumberFor<T>> = Some(900u32.into());
}: {
assert_ok!(
<Pallet<T>>::set_collator_selection_kick_threshold(RawOrigin::Root.into(), threshold)
pallets/configuration/src/lib.rsdiffbeforeafterboth--- a/pallets/configuration/src/lib.rs
+++ b/pallets/configuration/src/lib.rs
@@ -20,19 +20,17 @@
use frame_support::{
pallet,
- weights::{WeightToFeePolynomial, WeightToFeeCoefficients, WeightToFeeCoefficient, Weight},
traits::Get,
- Parameter,
+ weights::{Weight, WeightToFeeCoefficient, WeightToFeeCoefficients, WeightToFeePolynomial},
};
-use codec::{Decode, Encode, MaxEncodedLen};
+pub use pallet::*;
+use parity_scale_codec::{Decode, Encode, MaxEncodedLen};
use scale_info::TypeInfo;
+use smallvec::smallvec;
use sp_arithmetic::{
- per_things::{Perbill, PerThing},
+ per_things::{PerThing, Perbill},
traits::{BaseArithmetic, Unsigned},
};
-use smallvec::smallvec;
-
-pub use pallet::*;
use sp_core::U256;
#[cfg(feature = "runtime-benchmarks")]
@@ -41,15 +39,14 @@
#[pallet]
mod pallet {
+ use core::fmt::Debug;
+
+ use frame_support::{pallet_prelude::*, traits::Get};
+ use frame_system::{ensure_root, pallet_prelude::*};
+ use parity_scale_codec::Codec;
+ use sp_arithmetic::{traits::AtLeast32BitUnsigned, FixedPointOperand, Permill};
+
use super::*;
- use frame_support::{
- traits::Get,
- pallet_prelude::*,
- log,
- dispatch::{Codec, fmt::Debug},
- };
- use frame_system::{pallet_prelude::OriginFor, ensure_root, pallet_prelude::*};
- use sp_arithmetic::{FixedPointOperand, traits::AtLeast32BitUnsigned, Permill};
pub use crate::weights::WeightInfo;
#[pallet::config]
@@ -80,14 +77,14 @@
#[pallet::constant]
type AppPromotionDailyRate: Get<Perbill>;
#[pallet::constant]
- type DayRelayBlocks: Get<Self::BlockNumber>;
+ type DayRelayBlocks: Get<BlockNumberFor<Self>>;
#[pallet::constant]
type DefaultCollatorSelectionMaxCollators: Get<u32>;
#[pallet::constant]
type DefaultCollatorSelectionLicenseBond: Get<Self::Balance>;
#[pallet::constant]
- type DefaultCollatorSelectionKickThreshold: Get<Self::BlockNumber>;
+ type DefaultCollatorSelectionKickThreshold: Get<BlockNumberFor<Self>>;
/// The weight information of this pallet.
type WeightInfo: WeightInfo;
@@ -103,7 +100,7 @@
bond_cost: Option<T::Balance>,
},
NewCollatorKickThreshold {
- length_in_blocks: Option<T::BlockNumber>,
+ length_in_blocks: Option<BlockNumberFor<T>>,
},
}
@@ -134,7 +131,6 @@
#[pallet::genesis_config]
pub struct GenesisConfig<T>(PhantomData<T>);
- #[cfg(feature = "std")]
impl<T: Config> Default for GenesisConfig<T> {
fn default() -> Self {
Self(Default::default())
@@ -142,7 +138,7 @@
}
#[pallet::genesis_build]
- impl<T: Config> GenesisBuild<T> for GenesisConfig<T> {
+ impl<T: Config> BuildGenesisConfig for GenesisConfig<T> {
fn build(&self) {
update_base_fee::<T>();
}
@@ -166,7 +162,7 @@
#[pallet::storage]
pub type AppPromomotionConfigurationOverride<T: Config> =
- StorageValue<Value = AppPromotionConfiguration<T::BlockNumber>, QueryKind = ValueQuery>;
+ StorageValue<Value = AppPromotionConfiguration<BlockNumberFor<T>>, QueryKind = ValueQuery>;
#[pallet::storage]
pub type CollatorSelectionDesiredCollatorsOverride<T: Config> = StorageValue<
@@ -184,7 +180,7 @@
#[pallet::storage]
pub type CollatorSelectionKickThresholdOverride<T: Config> = StorageValue<
- Value = T::BlockNumber,
+ Value = BlockNumberFor<T>,
QueryKind = ValueQuery,
OnEmpty = T::DefaultCollatorSelectionKickThreshold,
>;
@@ -228,7 +224,7 @@
#[pallet::weight(T::WeightInfo::set_app_promotion_configuration_override())]
pub fn set_app_promotion_configuration_override(
origin: OriginFor<T>,
- mut configuration: AppPromotionConfiguration<T::BlockNumber>,
+ mut configuration: AppPromotionConfiguration<BlockNumberFor<T>>,
) -> DispatchResult {
ensure_root(origin)?;
if configuration.interval_income.is_some() {
@@ -287,7 +283,7 @@
#[pallet::weight(T::WeightInfo::set_collator_selection_kick_threshold())]
pub fn set_collator_selection_kick_threshold(
origin: OriginFor<T>,
- threshold: Option<T::BlockNumber>,
+ threshold: Option<BlockNumberFor<T>>,
) -> DispatchResult {
ensure_root(origin)?;
if let Some(threshold) = threshold {
pallets/evm-coder-substrate/Cargo.tomldiffbeforeafterboth--- a/pallets/evm-coder-substrate/Cargo.toml
+++ b/pallets/evm-coder-substrate/Cargo.toml
@@ -5,8 +5,7 @@
version = "0.1.3"
[dependencies]
-# Note: `package = "parity-scale-codec"` must be supplied since the `Encode` macro searches for it.
-codec = { workspace = true, package = "parity-scale-codec" }
+parity-scale-codec = { workspace = true }
scale-info = { workspace = true }
evm-coder = { workspace = true }
@@ -18,10 +17,11 @@
pallet-evm = { workspace = true }
sp-core = { workspace = true }
sp-std = { workspace = true }
+sp-weights = { workspace = true }
up-data-structs = { workspace = true }
evm-coder-substrate-procedural = { path = "./procedural" }
-spez = "0.1.1"
+spez = "0.1.2"
[features]
default = ["std"]
@@ -33,6 +33,7 @@
"pallet-evm/std",
"sp-core/std",
"sp-std/std",
+ "sp-weights/std",
'frame-benchmarking/std',
]
try-runtime = ["frame-support/try-runtime"]
pallets/evm-coder-substrate/procedural/src/lib.rsdiffbeforeafterboth--- a/pallets/evm-coder-substrate/procedural/src/lib.rs
+++ b/pallets/evm-coder-substrate/procedural/src/lib.rs
@@ -1,12 +1,12 @@
use std::result;
-use proc_macro2::{TokenStream, Ident};
+use proc_macro2::{Ident, TokenStream};
use quote::quote;
use syn::{
- Error, DeriveInput, Data, Attribute,
+ parenthesized,
parse::{Parse, ParseBuffer},
spanned::Spanned,
- Expr, parenthesized,
+ Attribute, Data, DeriveInput, Error, Expr,
};
type Result<T = TokenStream, E = syn::Error> = result::Result<T, E>;
pallets/evm-coder-substrate/src/execution.rsdiffbeforeafterboth--- a/pallets/evm-coder-substrate/src/execution.rs
+++ b/pallets/evm-coder-substrate/src/execution.rs
@@ -22,10 +22,9 @@
use std::string::{String, ToString};
use evm_coder::ERC165Call;
+pub use evm_coder_substrate_procedural::PreDispatch;
use evm_core::{ExitError, ExitFatal};
-
pub use frame_support::weights::Weight;
-pub use evm_coder_substrate_procedural::PreDispatch;
/// Execution error, should be convertible between EVM and Substrate.
#[derive(Debug, Clone)]
pallets/evm-coder-substrate/src/lib.rsdiffbeforeafterboth--- a/pallets/evm-coder-substrate/src/lib.rs
+++ b/pallets/evm-coder-substrate/src/lib.rs
@@ -22,42 +22,39 @@
extern crate alloc;
#[cfg(not(feature = "std"))]
use alloc::format;
-use execution::PreDispatch;
-use frame_support::dispatch::Weight;
-
use core::marker::PhantomData;
-use sp_std::{cell::RefCell, vec::Vec};
-use codec::Decode;
-use frame_support::pallet_prelude::DispatchError;
-use frame_support::traits::PalletInfo;
-use frame_support::{ensure, sp_runtime::ModuleError};
-use up_data_structs::budget;
+use execution::PreDispatch;
+use frame_support::{
+ ensure, pallet_prelude::DispatchError, sp_runtime::ModuleError, traits::PalletInfo,
+};
use pallet_evm::{
- ExitError, ExitRevert, ExitSucceed, GasWeightMapping, PrecompileFailure, PrecompileOutput,
- PrecompileResult, PrecompileHandle,
+ ExitError, ExitRevert, ExitSucceed, GasWeightMapping, PrecompileFailure, PrecompileHandle,
+ PrecompileOutput, PrecompileResult,
};
+use parity_scale_codec::Decode;
use sp_core::{Get, H160};
+use sp_std::{cell::RefCell, vec::Vec};
+use sp_weights::Weight;
+use up_data_structs::budget;
// #[cfg(feature = "runtime-benchmarks")]
// pub mod benchmarking;
pub mod execution;
-#[doc(hidden)]
-pub use spez::spez;
-
+pub use evm_coder::{abi, solidity_interface, types, Contract, ResultWithPostInfoOf, ToLog};
use evm_coder::{
types::{Msg, Value},
AbiEncode,
};
-
pub use pallet::*;
-pub use evm_coder::{ResultWithPostInfoOf, Contract, abi, solidity_interface, ToLog, types};
+#[doc(hidden)]
+pub use spez::spez;
#[frame_support::pallet]
pub mod pallet {
+ pub use frame_support::dispatch::DispatchResult;
+
use super::*;
-
- pub use frame_support::dispatch::DispatchResult;
/// DispatchError is opaque, but we need to somehow extract correct error in case of OutOfGas failure
/// So we have this pallet, which defines OutOfGas error, and knews its own id to check if DispatchError
pallets/evm-contract-helpers/Cargo.tomldiffbeforeafterboth--- a/pallets/evm-contract-helpers/Cargo.toml
+++ b/pallets/evm-contract-helpers/Cargo.toml
@@ -18,13 +18,11 @@
up-sponsorship = { workspace = true }
# Locals
-# Note: `package = "parity-scale-codec"` must be supplied since the `Encode` macro searches for it.
-codec = { workspace = true, package = "parity-scale-codec" }
-
evm-coder = { workspace = true }
pallet-common = { workspace = true }
pallet-evm-coder-substrate = { workspace = true }
pallet-evm-transaction-payment = { workspace = true }
+parity-scale-codec = { workspace = true }
up-data-structs = { workspace = true, features = ['serde1'] }
[features]
pallets/evm-contract-helpers/src/eth.rsdiffbeforeafterboth--- a/pallets/evm-contract-helpers/src/eth.rs
+++ b/pallets/evm-contract-helpers/src/eth.rs
@@ -18,32 +18,35 @@
extern crate alloc;
use core::marker::PhantomData;
+
use evm_coder::{
- abi::{AbiType, AbiEncode},
+ abi::{AbiEncode, AbiType},
generate_stubgen, solidity_interface,
types::*,
ToLog,
};
+use frame_support::traits::Get;
+use frame_system::pallet_prelude::*;
use pallet_common::eth;
use pallet_evm::{
- ExitRevert, OnCreate, OnMethodCall, PrecompileResult, PrecompileFailure, PrecompileHandle,
- account::CrossAccountId,
+ account::CrossAccountId, ExitRevert, OnCreate, OnMethodCall, PrecompileFailure,
+ PrecompileHandle, PrecompileResult,
};
use pallet_evm_coder_substrate::{
- SubstrateRecorder, WithRecorder, dispatch_to_evm,
- execution::{Result, PreDispatch},
- frontier_contract,
+ dispatch_to_evm,
+ execution::{PreDispatch, Result},
+ frontier_contract, SubstrateRecorder, WithRecorder,
};
use pallet_evm_transaction_payment::CallContext;
use sp_core::{H160, U256};
+use sp_std::vec::Vec;
use up_data_structs::SponsorshipState;
+use up_sponsorship::SponsorshipHandler;
+
use crate::{
- AllowlistEnabled, Config, Owner, Pallet, SponsorBasket, SponsoringFeeLimit,
- SponsoringRateLimit, SponsoringModeT, Sponsoring,
+ AllowlistEnabled, Config, Owner, Pallet, SponsorBasket, Sponsoring, SponsoringFeeLimit,
+ SponsoringModeT, SponsoringRateLimit,
};
-use frame_support::traits::Get;
-use up_sponsorship::SponsorshipHandler;
-use sp_std::vec::Vec;
frontier_contract! {
macro_rules! ContractHelpers_result {...}
@@ -422,7 +425,7 @@
{
return None;
}
- let block_number = <frame_system::Pallet<T>>::block_number() as T::BlockNumber;
+ let block_number = <frame_system::Pallet<T>>::block_number() as BlockNumberFor<T>;
if let Some(last_tx_block) = <SponsorBasket<T>>::get(contract_address, who.as_eth()) {
let limit = <SponsoringRateLimit<T>>::get(contract_address);
pallets/evm-contract-helpers/src/lib.rsdiffbeforeafterboth--- a/pallets/evm-contract-helpers/src/lib.rs
+++ b/pallets/evm-contract-helpers/src/lib.rs
@@ -18,12 +18,12 @@
#![cfg_attr(not(feature = "std"), no_std)]
#![warn(missing_docs)]
-use codec::{Decode, Encode, MaxEncodedLen};
+pub use eth::*;
use evm_coder::AbiCoder;
+use frame_support::storage::bounded_btree_map::BoundedBTreeMap;
pub use pallet::*;
-pub use eth::*;
+use parity_scale_codec::{Decode, Encode, MaxEncodedLen};
use scale_info::TypeInfo;
-use frame_support::storage::bounded_btree_map::BoundedBTreeMap;
pub mod eth;
/// Maximum number of methods per contract that could have fee limit
@@ -31,15 +31,16 @@
#[frame_support::pallet]
pub mod pallet {
- pub use super::*;
+ use evm_coder::ToLog;
use frame_support::{pallet_prelude::*, sp_runtime::DispatchResult};
- use frame_system::{pallet_prelude::OriginFor, ensure_root};
+ use frame_system::{ensure_root, pallet_prelude::*};
+ use pallet_evm::{account::CrossAccountId, Pallet as PalletEvm};
use sp_core::{H160, U256};
use sp_std::vec::Vec;
- use pallet_evm::{account::CrossAccountId, Pallet as PalletEvm};
use up_data_structs::SponsorshipState;
- use evm_coder::ToLog;
+ pub use super::*;
+
#[pallet::config]
pub trait Config:
frame_system::Config + pallet_evm_coder_substrate::Config + pallet_evm::Config
@@ -53,7 +54,7 @@
/// In case of enabled sponsoring, but no sponsoring rate limit set,
/// this value will be used implicitly
- type DefaultSponsoringRateLimit: Get<Self::BlockNumber>;
+ type DefaultSponsoringRateLimit: Get<BlockNumberFor<Self>>;
}
#[pallet::error]
@@ -115,7 +116,7 @@
pub(super) type SponsoringRateLimit<T: Config> = StorageMap<
Hasher = Twox128,
Key = H160,
- Value = T::BlockNumber,
+ Value = BlockNumberFor<T>,
QueryKind = ValueQuery,
OnEmpty = T::DefaultSponsoringRateLimit,
>;
@@ -139,7 +140,7 @@
Key1 = H160,
Hasher2 = Twox128,
Key2 = H160,
- Value = T::BlockNumber,
+ Value = BlockNumberFor<T>,
QueryKind = OptionQuery,
>;
@@ -393,7 +394,7 @@
}
/// Set duration between two sponsored contract calls
- pub fn set_sponsoring_rate_limit(contract: H160, rate_limit: T::BlockNumber) {
+ pub fn set_sponsoring_rate_limit(contract: H160, rate_limit: BlockNumberFor<T>) {
<SponsoringRateLimit<T>>::insert(contract, rate_limit);
}
pallets/evm-migration/Cargo.tomldiffbeforeafterboth--- a/pallets/evm-migration/Cargo.toml
+++ b/pallets/evm-migration/Cargo.toml
@@ -5,21 +5,27 @@
version = "0.1.1"
[dependencies]
-# Note: `package = "parity-scale-codec"` must be supplied since the `Encode` macro searches for it.
-codec = { workspace = true, package = "parity-scale-codec" }
-
ethereum = { workspace = true }
frame-benchmarking = { workspace = true, optional = true }
frame-support = { workspace = true }
frame-system = { workspace = true }
pallet-evm = { workspace = true }
+parity-scale-codec = { workspace = true }
scale-info = { workspace = true }
sp-core = { workspace = true }
+sp-io = { workspace = true }
sp-std = { workspace = true }
-sp-io = { workspace = true }
[features]
default = ["runtime-benchmarks", "std"]
runtime-benchmarks = ["frame-benchmarking"]
-std = ["frame-benchmarking/std", "frame-support/std", "frame-system/std", "pallet-evm/std", "sp-core/std", "sp-std/std", "sp-io/std"]
+std = [
+ "frame-benchmarking/std",
+ "frame-support/std",
+ "frame-system/std",
+ "pallet-evm/std",
+ "sp-core/std",
+ "sp-io/std",
+ "sp-std/std",
+]
try-runtime = ["frame-support/try-runtime"]
pallets/evm-migration/src/benchmarking.rsdiffbeforeafterboth--- a/pallets/evm-migration/src/benchmarking.rs
+++ b/pallets/evm-migration/src/benchmarking.rs
@@ -16,14 +16,15 @@
#![allow(missing_docs)]
-use super::{Call, Config, Pallet};
use frame_benchmarking::benchmarks;
use frame_system::RawOrigin;
use sp_core::{H160, H256};
-use sp_std::{vec::Vec, vec};
+use sp_std::{vec, vec::Vec};
+
+use super::{Call, Config, Pallet};
benchmarks! {
- where_clause { where <T as Config>::RuntimeEvent: codec::Encode }
+ where_clause { where <T as Config>::RuntimeEvent: parity_scale_codec::Encode }
begin {
}: _(RawOrigin::Root, H160::default())
@@ -59,7 +60,7 @@
insert_events {
let b in 0..200;
- use codec::Encode;
+ use parity_scale_codec::Encode;
let logs = (0..b).map(|_| <T as Config>::RuntimeEvent::from(crate::Event::<T>::TestEvent).encode()).collect::<Vec<_>>();
}: _(RawOrigin::Root, logs)
}
pallets/evm-migration/src/lib.rsdiffbeforeafterboth--- a/pallets/evm-migration/src/lib.rs
+++ b/pallets/evm-migration/src/lib.rs
@@ -26,15 +26,13 @@
#[frame_support::pallet]
pub mod pallet {
- use frame_support::{
- pallet_prelude::{*, DispatchResult},
- traits::IsType,
- };
- use frame_system::pallet_prelude::{*, OriginFor};
+ use frame_support::{pallet_prelude::*, traits::IsType};
+ use frame_system::pallet_prelude::*;
+ use pallet_evm::{Pallet as PalletEvm, PrecompileHandle};
use sp_core::{H160, H256};
use sp_std::vec::Vec;
+
use super::weights::WeightInfo;
- use pallet_evm::{PrecompileHandle, Pallet as PalletEvm};
#[pallet::config]
pub trait Config: frame_system::Config + pallet_evm::Config {
pallets/evm-transaction-payment/Cargo.tomldiffbeforeafterboth--- a/pallets/evm-transaction-payment/Cargo.toml
+++ b/pallets/evm-transaction-payment/Cargo.toml
@@ -5,9 +5,7 @@
version = "0.1.1"
[dependencies]
-# Note: `package = "parity-scale-codec"` must be supplied since the `Encode` macro searches for it.
-codec = { workspace = true, package = "parity-scale-codec" }
-
+parity-scale-codec = { workspace = true }
scale-info = { workspace = true }
fp-evm = { workspace = true }
pallets/evm-transaction-payment/src/lib.rsdiffbeforeafterboth--- a/pallets/evm-transaction-payment/src/lib.rs
+++ b/pallets/evm-transaction-payment/src/lib.rs
@@ -19,20 +19,27 @@
#![deny(missing_docs)]
use core::marker::PhantomData;
-use fp_evm::WithdrawReason;
-use frame_support::traits::IsSubType;
+
+use fp_evm::{CheckEvmTransaction, FeeCalculator, TransactionValidationError, WithdrawReason};
+use frame_support::{
+ storage::with_transaction,
+ traits::{Currency, Imbalance, IsSubType, OnUnbalanced},
+};
pub use pallet::*;
-use pallet_evm::{account::CrossAccountId, EnsureAddressOrigin};
+use pallet_evm::{
+ account::CrossAccountId, EnsureAddressOrigin, NegativeImbalanceOf, OnChargeEVMTransaction,
+ OnCheckEvmTransaction,
+};
use sp_core::{H160, U256};
-use sp_runtime::{TransactionOutcome, DispatchError};
+use sp_runtime::{traits::UniqueSaturatedInto, DispatchError, TransactionOutcome};
use up_sponsorship::SponsorshipHandler;
#[frame_support::pallet]
pub mod pallet {
- use super::*;
-
use sp_std::vec::Vec;
+ use super::*;
+
/// Contains call data
pub struct CallContext {
/// Contract address
@@ -53,29 +60,64 @@
pub struct Pallet<T>(_);
}
-/// Implements [`fp_evm::TransactionValidityHack`], which provides sponsor address to pallet-evm
-pub struct TransactionValidityHack<T: Config>(PhantomData<*const T>);
-impl<T: Config> fp_evm::TransactionValidityHack<T::CrossAccountId> for TransactionValidityHack<T> {
- fn who_pays_fee(
- origin: H160,
- max_fee: U256,
- reason: &WithdrawReason,
- ) -> Option<T::CrossAccountId> {
- match reason {
- WithdrawReason::Call { target, input } => {
- let origin_sub = T::CrossAccountId::from_eth(origin);
- let call_context = CallContext {
- contract_address: *target,
- input: input.clone(),
- max_fee,
- };
- T::EvmSponsorshipHandler::get_sponsor(&origin_sub, &call_context)
- }
- _ => None,
+fn who_pays_fee<T: Config>(
+ origin: H160,
+ max_fee: U256,
+ reason: &WithdrawReason,
+) -> Option<T::CrossAccountId> {
+ match reason {
+ WithdrawReason::Call { target, input, .. } => {
+ let origin_sub = T::CrossAccountId::from_eth(origin);
+ let call_context = CallContext {
+ contract_address: *target,
+ input: input.clone(),
+ max_fee,
+ };
+ T::EvmSponsorshipHandler::get_sponsor(&origin_sub, &call_context)
}
+ _ => None,
}
}
+fn get_sponsor<T: Config>(
+ source: H160,
+ max_fee_per_gas: Option<U256>,
+ gas_limit: u64,
+ reason: &WithdrawReason,
+ is_transactional: bool,
+ is_check: bool,
+) -> Option<T::CrossAccountId> {
+ let accept_gas_fee = |gas_fee| {
+ let (base_fee, _) = T::FeeCalculator::min_gas_price();
+ // Metamask specifies base fee twice as much as chain reported minGasPrice
+ // But we allow further leeway (why?), sponsored base_fee to be 2.1*minGasPrice, thus 21/10.
+ base_fee <= gas_fee && gas_fee <= base_fee * 21 / 10
+ };
+ let (max_fee_per_gas, may_sponsor) = match (max_fee_per_gas, is_transactional) {
+ (Some(max_fee_per_gas), _) => (max_fee_per_gas, accept_gas_fee(max_fee_per_gas)),
+ // Gas price check is skipped for non-transactional calls that don't
+ // define a `max_fee_per_gas` input.
+ (None, false) => (Default::default(), true),
+ _ => return None,
+ };
+
+ let max_fee = max_fee_per_gas.saturating_mul(gas_limit.into());
+
+ // #[cfg(feature = "debug-logging")]
+ // log::trace!(target: "sponsoring", "checking who will pay fee for {:?} {:?}", source, reason);
+ with_transaction(|| {
+ let result = may_sponsor
+ .then(|| who_pays_fee::<T>(source, max_fee, reason))
+ .flatten();
+ if is_check {
+ TransactionOutcome::Rollback(Ok::<_, DispatchError>(result))
+ } else {
+ TransactionOutcome::Commit(Ok(result))
+ }
+ })
+ .ok()
+ .flatten()
+}
/// Implements sponsoring for evm calls performed from pallet-evm (via api.tx.ethereum.transact/api.tx.evm.call)
pub struct BridgeSponsorshipHandler<T>(PhantomData<T>);
impl<T, C> SponsorshipHandler<T::AccountId, C> for BridgeSponsorshipHandler<T>
@@ -120,3 +162,135 @@
}
}
}
+
+/// Set transaction sponsor if available and enough balance.
+pub struct TransactionValidity<T>(PhantomData<T>);
+impl<T: Config> OnCheckEvmTransaction<T> for TransactionValidity<T> {
+ fn on_check_evm_transaction(
+ v: &mut CheckEvmTransaction,
+ origin: &T::CrossAccountId,
+ ) -> Result<(), TransactionValidationError> {
+ let who = &v.who;
+ let max_fee_per_gas = Some(v.transaction_fee_input()?.0);
+ let gas_limit = v.transaction.gas_limit.low_u64();
+ let reason = if let Some(to) = v.transaction.to {
+ WithdrawReason::Call {
+ target: to,
+ input: v.transaction.input.clone(),
+ max_fee_per_gas,
+ gas_limit,
+ is_transactional: v.config.is_transactional,
+ is_check: true,
+ }
+ } else {
+ WithdrawReason::Create
+ };
+ let sponsor = get_sponsor::<T>(
+ *origin.as_eth(),
+ max_fee_per_gas,
+ gas_limit,
+ &reason,
+ v.config.is_transactional,
+ true,
+ )
+ .as_ref()
+ .map(pallet_evm::Pallet::<T>::account_basic_by_id)
+ .map(|v| v.0);
+ let fee = max_fee_per_gas
+ .unwrap()
+ .saturating_mul(v.transaction.gas_limit);
+ if let Some(sponsor) = sponsor.as_ref() {
+ if who.balance < v.transaction.value || sponsor.balance < fee {
+ return Err(TransactionValidationError::BalanceTooLow);
+ }
+ } else {
+ let total_payment = v.transaction.value.saturating_add(fee);
+ if who.balance < total_payment {
+ return Err(TransactionValidationError::BalanceTooLow);
+ }
+ }
+
+ let who = sponsor.unwrap_or_else(|| v.who.clone());
+ v.who.balance = who.balance;
+ Ok(())
+ }
+}
+
+/// Implements the transaction payment for a pallet implementing the `Currency`
+/// trait (eg. the pallet_balances) using an unbalance handler (implementing
+/// `OnUnbalanced`).
+/// Similar to `CurrencyAdapter` of `pallet_transaction_payment`
+pub struct WrappedEVMCurrencyAdapter<C, OU>(sp_std::marker::PhantomData<(C, OU)>);
+impl<T, C, OU> OnChargeEVMTransaction<T> for WrappedEVMCurrencyAdapter<C, OU>
+where
+ T: Config,
+ C: Currency<<T as frame_system::Config>::AccountId>,
+ C::PositiveImbalance: Imbalance<
+ <C as Currency<<T as frame_system::Config>::AccountId>>::Balance,
+ Opposite = C::NegativeImbalance,
+ >,
+ C::NegativeImbalance: Imbalance<
+ <C as Currency<<T as frame_system::Config>::AccountId>>::Balance,
+ Opposite = C::PositiveImbalance,
+ >,
+ OU: OnUnbalanced<NegativeImbalanceOf<C, T>>,
+ U256: UniqueSaturatedInto<<C as Currency<<T as frame_system::Config>::AccountId>>::Balance>,
+{
+ // Kept type as Option to satisfy bound of Default
+ type LiquidityInfo = (Option<NegativeImbalanceOf<C, T>>, Option<T::CrossAccountId>);
+
+ fn withdraw_fee(
+ who: &T::CrossAccountId,
+ reason: WithdrawReason,
+ fee: U256,
+ ) -> Result<Self::LiquidityInfo, pallet_evm::Error<T>> {
+ let sponsor = match reason {
+ WithdrawReason::Call {
+ max_fee_per_gas,
+ gas_limit,
+ is_transactional,
+ is_check,
+ ..
+ } => get_sponsor::<T>(
+ *who.as_eth(),
+ max_fee_per_gas,
+ gas_limit,
+ &reason,
+ is_transactional,
+ is_check,
+ ),
+ _ => None,
+ };
+
+ let who = sponsor.as_ref().unwrap_or(who);
+ <pallet_evm::EVMCurrencyAdapter<C, OU> as OnChargeEVMTransaction<T>>::withdraw_fee(
+ who, reason, fee,
+ )
+ .map(|li| (li, sponsor))
+ }
+
+ fn correct_and_deposit_fee(
+ who: &T::CrossAccountId,
+ corrected_fee: U256,
+ base_fee: U256,
+ already_withdrawn: Self::LiquidityInfo,
+ ) -> Self::LiquidityInfo {
+ let (already_withdrawn, sponsor) = already_withdrawn;
+ let who = sponsor.as_ref().unwrap_or(who);
+ (
+ <pallet_evm::EVMCurrencyAdapter<C, OU> as OnChargeEVMTransaction<T>>::correct_and_deposit_fee(
+ who,
+ corrected_fee,
+ base_fee,
+ already_withdrawn,
+ ),
+ None
+ )
+ }
+
+ fn pay_priority_fee(tip: Self::LiquidityInfo) {
+ <pallet_evm::EVMCurrencyAdapter<C, OU> as OnChargeEVMTransaction<T>>::pay_priority_fee(
+ tip.0,
+ )
+ }
+}
pallets/foreign-assets/Cargo.tomldiffbeforeafterboth--- a/pallets/foreign-assets/Cargo.toml
+++ b/pallets/foreign-assets/Cargo.toml
@@ -5,9 +5,7 @@
version = "0.1.0"
[dependencies]
-# Note: `package = "parity-scale-codec"` must be supplied since the `Encode` macro searches for it.
-codec = { workspace = true, package = "parity-scale-codec" }
-
+parity-scale-codec = { workspace = true }
scale-info = { workspace = true }
frame-benchmarking = { workspace = true, optional = true }
@@ -18,18 +16,17 @@
pallet-balances = { features = ["insecure_zero_ed"], workspace = true }
pallet-common = { workspace = true }
pallet-fungible = { workspace = true }
-serde = { workspace = true, optional = true }
+serde = { workspace = true }
sp-runtime = { workspace = true }
sp-std = { workspace = true }
+staging-xcm = { workspace = true }
+staging-xcm-executor = { workspace = true }
up-data-structs = { workspace = true }
-xcm = { workspace = true }
-xcm-executor = { workspace = true }
[features]
default = ["std"]
runtime-benchmarks = ['frame-benchmarking', 'pallet-common/runtime-benchmarks']
std = [
- "codec/std",
"frame-support/std",
"frame-system/std",
"log/std",
@@ -37,11 +34,11 @@
"pallet-balances/std",
"pallet-common/std",
"pallet-fungible/std",
+ "parity-scale-codec/std",
"scale-info/std",
- "serde",
"sp-runtime/std",
"sp-std/std",
+ "staging-xcm-executor/std",
"up-data-structs/std",
- "xcm-executor/std"
]
try-runtime = ["frame-support/try-runtime"]
pallets/foreign-assets/src/benchmarking.rsdiffbeforeafterboth--- a/pallets/foreign-assets/src/benchmarking.rs
+++ b/pallets/foreign-assets/src/benchmarking.rs
@@ -16,15 +16,14 @@
#![allow(missing_docs)]
-use super::{Config, Pallet, Call};
-use frame_benchmarking::{benchmarks, account};
+use frame_benchmarking::{account, benchmarks};
+use frame_support::traits::Currency;
use frame_system::RawOrigin;
+use sp_std::{boxed::Box, vec::Vec};
+use staging_xcm::{opaque::latest::Junction::Parachain, v3::Junctions::X1, VersionedMultiLocation};
+
+use super::{Call, Config, Pallet};
use crate::AssetMetadata;
-use xcm::opaque::latest::Junction::Parachain;
-use xcm::VersionedMultiLocation;
-use xcm::v3::Junctions::X1;
-use frame_support::traits::Currency;
-use sp_std::{vec::Vec, boxed::Box};
fn bounded<T: TryFrom<Vec<u8>>>(slice: &[u8]) -> T {
T::try_from(slice.to_vec())
pallets/foreign-assets/src/impl_fungibles.rsdiffbeforeafterboth--- a/pallets/foreign-assets/src/impl_fungibles.rs
+++ b/pallets/foreign-assets/src/impl_fungibles.rs
@@ -16,44 +16,43 @@
//! Implementations for fungibles trait.
-use super::*;
-use frame_system::Config as SystemConfig;
-
use frame_support::traits::tokens::{
- DepositConsequence, WithdrawConsequence, Preservation, Fortitude, Provenance, Precision,
+ DepositConsequence, Fortitude, Precision, Preservation, Provenance, WithdrawConsequence,
};
-use pallet_common::CollectionHandle;
+use frame_system::Config as SystemConfig;
+use pallet_common::{CollectionHandle, CommonCollectionOperations};
use pallet_fungible::FungibleHandle;
-use pallet_common::CommonCollectionOperations;
+use sp_runtime::traits::{CheckedAdd, CheckedSub};
use up_data_structs::budget::Value;
-use sp_runtime::traits::{CheckedAdd, CheckedSub};
+use super::*;
+
impl<T: Config> fungibles::Inspect<<T as SystemConfig>::AccountId> for Pallet<T>
where
- T: orml_tokens::Config<CurrencyId = AssetIds>,
+ T: orml_tokens::Config<CurrencyId = AssetId>,
BalanceOf<T>: From<<T as pallet_balances::Config>::Balance>,
BalanceOf<T>: From<<T as orml_tokens::Config>::Balance>,
<T as pallet_balances::Config>::Balance: From<BalanceOf<T>>,
<T as orml_tokens::Config>::Balance: From<BalanceOf<T>>,
{
- type AssetId = AssetIds;
+ type AssetId = AssetId;
type Balance = BalanceOf<T>;
fn total_issuance(asset: Self::AssetId) -> Self::Balance {
log::trace!(target: "fassets::impl_foreign_assets", "impl_fungible total_issuance");
match asset {
- AssetIds::NativeAssetId(NativeCurrency::Here) => {
+ AssetId::NativeAssetId(NativeCurrency::Here) => {
<pallet_balances::Pallet<T> as fungible::Inspect<T::AccountId>>::total_issuance()
.into()
}
- AssetIds::NativeAssetId(NativeCurrency::Parent) => {
+ AssetId::NativeAssetId(NativeCurrency::Parent) => {
<orml_tokens::Pallet<T> as fungibles::Inspect<T::AccountId>>::total_issuance(
- AssetIds::NativeAssetId(NativeCurrency::Parent),
+ AssetId::NativeAssetId(NativeCurrency::Parent),
)
.into()
}
- AssetIds::ForeignAssetId(fid) => {
+ AssetId::ForeignAssetId(fid) => {
let target_collection_id = match <AssetBinding<T>>::get(fid) {
Some(v) => v,
None => return Zero::zero(),
@@ -71,38 +70,36 @@
fn minimum_balance(asset: Self::AssetId) -> Self::Balance {
log::trace!(target: "fassets::impl_foreign_assets", "impl_fungible minimum_balance");
match asset {
- AssetIds::NativeAssetId(NativeCurrency::Here) => {
+ AssetId::NativeAssetId(NativeCurrency::Here) => {
<pallet_balances::Pallet<T> as fungible::Inspect<T::AccountId>>::minimum_balance()
.into()
}
- AssetIds::NativeAssetId(NativeCurrency::Parent) => {
+ AssetId::NativeAssetId(NativeCurrency::Parent) => {
<orml_tokens::Pallet<T> as fungibles::Inspect<T::AccountId>>::minimum_balance(
- AssetIds::NativeAssetId(NativeCurrency::Parent),
+ AssetId::NativeAssetId(NativeCurrency::Parent),
)
.into()
}
- AssetIds::ForeignAssetId(fid) => {
- AssetMetadatas::<T>::get(AssetIds::ForeignAssetId(fid))
- .map(|x| x.minimal_balance)
- .unwrap_or_else(Zero::zero)
- }
+ AssetId::ForeignAssetId(fid) => AssetMetadatas::<T>::get(AssetId::ForeignAssetId(fid))
+ .map(|x| x.minimal_balance)
+ .unwrap_or_else(Zero::zero),
}
}
fn balance(asset: Self::AssetId, who: &<T as SystemConfig>::AccountId) -> Self::Balance {
log::trace!(target: "fassets::impl_foreign_assets", "impl_fungible balance");
match asset {
- AssetIds::NativeAssetId(NativeCurrency::Here) => {
+ AssetId::NativeAssetId(NativeCurrency::Here) => {
<pallet_balances::Pallet<T> as fungible::Inspect<T::AccountId>>::balance(who).into()
}
- AssetIds::NativeAssetId(NativeCurrency::Parent) => {
+ AssetId::NativeAssetId(NativeCurrency::Parent) => {
<orml_tokens::Pallet<T> as fungibles::Inspect<T::AccountId>>::balance(
- AssetIds::NativeAssetId(NativeCurrency::Parent),
+ AssetId::NativeAssetId(NativeCurrency::Parent),
who,
)
.into()
}
- AssetIds::ForeignAssetId(fid) => {
+ AssetId::ForeignAssetId(fid) => {
let target_collection_id = match <AssetBinding<T>>::get(fid) {
Some(v) => v,
None => return Zero::zero(),
@@ -133,7 +130,7 @@
log::trace!(target: "fassets::impl_foreign_assets", "impl_fungible reducible_balance");
match asset {
- AssetIds::NativeAssetId(NativeCurrency::Here) => {
+ AssetId::NativeAssetId(NativeCurrency::Here) => {
<pallet_balances::Pallet<T> as fungible::Inspect<T::AccountId>>::reducible_balance(
who,
preservation,
@@ -141,9 +138,9 @@
)
.into()
}
- AssetIds::NativeAssetId(NativeCurrency::Parent) => {
+ AssetId::NativeAssetId(NativeCurrency::Parent) => {
<orml_tokens::Pallet<T> as fungibles::Inspect<T::AccountId>>::reducible_balance(
- AssetIds::NativeAssetId(NativeCurrency::Parent),
+ AssetId::NativeAssetId(NativeCurrency::Parent),
who,
preservation,
fortitude,
@@ -163,16 +160,16 @@
log::trace!(target: "fassets::impl_foreign_assets", "impl_fungible can_deposit");
match asset {
- AssetIds::NativeAssetId(NativeCurrency::Here) => {
+ AssetId::NativeAssetId(NativeCurrency::Here) => {
<pallet_balances::Pallet<T> as fungible::Inspect<T::AccountId>>::can_deposit(
who,
amount.into(),
provenance,
)
}
- AssetIds::NativeAssetId(NativeCurrency::Parent) => {
+ AssetId::NativeAssetId(NativeCurrency::Parent) => {
<orml_tokens::Pallet<T> as fungibles::Inspect<T::AccountId>>::can_deposit(
- AssetIds::NativeAssetId(NativeCurrency::Parent),
+ AssetId::NativeAssetId(NativeCurrency::Parent),
who,
amount.into(),
provenance,
@@ -219,7 +216,7 @@
};
match asset {
- AssetIds::NativeAssetId(NativeCurrency::Here) => {
+ AssetId::NativeAssetId(NativeCurrency::Here) => {
let this_amount: <T as pallet_balances::Config>::Balance = match value.try_into() {
Ok(val) => val,
Err(_) => {
@@ -240,7 +237,7 @@
_ => WithdrawConsequence::BalanceLow,
}
}
- AssetIds::NativeAssetId(NativeCurrency::Parent) => {
+ AssetId::NativeAssetId(NativeCurrency::Parent) => {
let parent_amount: <T as orml_tokens::Config>::Balance = match value.try_into() {
Ok(val) => val,
Err(_) => {
@@ -248,7 +245,7 @@
}
};
match <orml_tokens::Pallet<T> as fungibles::Inspect<T::AccountId>>::can_withdraw(
- AssetIds::NativeAssetId(NativeCurrency::Parent),
+ AssetId::NativeAssetId(NativeCurrency::Parent),
who,
parent_amount,
) {
@@ -269,17 +266,17 @@
}
}
- fn asset_exists(asset: AssetIds) -> bool {
+ fn asset_exists(asset: AssetId) -> bool {
match asset {
- AssetIds::NativeAssetId(_) => true,
- AssetIds::ForeignAssetId(fid) => <AssetBinding<T>>::contains_key(fid),
+ AssetId::NativeAssetId(_) => true,
+ AssetId::ForeignAssetId(fid) => <AssetBinding<T>>::contains_key(fid),
}
}
}
impl<T: Config> fungibles::Mutate<<T as SystemConfig>::AccountId> for Pallet<T>
where
- T: orml_tokens::Config<CurrencyId = AssetIds>,
+ T: orml_tokens::Config<CurrencyId = AssetId>,
BalanceOf<T>: From<<T as pallet_balances::Config>::Balance>,
BalanceOf<T>: From<<T as orml_tokens::Config>::Balance>,
<T as pallet_balances::Config>::Balance: From<BalanceOf<T>>,
@@ -295,22 +292,22 @@
log::trace!(target: "fassets::impl_foreign_assets", "impl_fungible mint_into {:?}", asset);
match asset {
- AssetIds::NativeAssetId(NativeCurrency::Here) => {
+ AssetId::NativeAssetId(NativeCurrency::Here) => {
<pallet_balances::Pallet<T> as fungible::Mutate<T::AccountId>>::mint_into(
who,
amount.into(),
)
.map(Into::into)
}
- AssetIds::NativeAssetId(NativeCurrency::Parent) => {
+ AssetId::NativeAssetId(NativeCurrency::Parent) => {
<orml_tokens::Pallet<T> as fungibles::Mutate<T::AccountId>>::mint_into(
- AssetIds::NativeAssetId(NativeCurrency::Parent),
+ AssetId::NativeAssetId(NativeCurrency::Parent),
who,
amount.into(),
)
.map(Into::into)
}
- AssetIds::ForeignAssetId(fid) => {
+ AssetId::ForeignAssetId(fid) => {
let target_collection_id = match <AssetBinding<T>>::get(fid) {
Some(v) => v,
None => {
@@ -349,7 +346,7 @@
log::trace!(target: "fassets::impl_foreign_assets", "impl_fungible burn_from");
match asset {
- AssetIds::NativeAssetId(NativeCurrency::Here) => {
+ AssetId::NativeAssetId(NativeCurrency::Here) => {
<pallet_balances::Pallet<T> as fungible::Mutate<T::AccountId>>::burn_from(
who,
amount.into(),
@@ -358,9 +355,9 @@
)
.map(Into::into)
}
- AssetIds::NativeAssetId(NativeCurrency::Parent) => {
+ AssetId::NativeAssetId(NativeCurrency::Parent) => {
<orml_tokens::Pallet<T> as fungibles::Mutate<T::AccountId>>::burn_from(
- AssetIds::NativeAssetId(NativeCurrency::Parent),
+ AssetId::NativeAssetId(NativeCurrency::Parent),
who,
amount.into(),
precision,
@@ -368,7 +365,7 @@
)
.map(Into::into)
}
- AssetIds::ForeignAssetId(fid) => {
+ AssetId::ForeignAssetId(fid) => {
let target_collection_id = match <AssetBinding<T>>::get(fid) {
Some(v) => v,
None => {
@@ -401,7 +398,7 @@
log::trace!(target: "fassets::impl_foreign_assets", "impl_fungible transfer");
match asset {
- AssetIds::NativeAssetId(NativeCurrency::Here) => {
+ AssetId::NativeAssetId(NativeCurrency::Here) => {
match <pallet_balances::Pallet<T> as fungible::Mutate<T::AccountId>>::transfer(
source,
dest,
@@ -414,9 +411,9 @@
)),
}
}
- AssetIds::NativeAssetId(NativeCurrency::Parent) => {
+ AssetId::NativeAssetId(NativeCurrency::Parent) => {
match <orml_tokens::Pallet<T> as fungibles::Mutate<T::AccountId>>::transfer(
- AssetIds::NativeAssetId(NativeCurrency::Parent),
+ AssetId::NativeAssetId(NativeCurrency::Parent),
source,
dest,
amount.into(),
@@ -426,7 +423,7 @@
Err(e) => Err(e),
}
}
- AssetIds::ForeignAssetId(fid) => {
+ AssetId::ForeignAssetId(fid) => {
let target_collection_id = match <AssetBinding<T>>::get(fid) {
Some(v) => v,
None => {
@@ -479,7 +476,7 @@
impl<T: Config> fungibles::Unbalanced<<T as SystemConfig>::AccountId> for Pallet<T>
where
- T: orml_tokens::Config<CurrencyId = AssetIds>,
+ T: orml_tokens::Config<CurrencyId = AssetId>,
BalanceOf<T>: From<<T as pallet_balances::Config>::Balance>,
BalanceOf<T>: From<<T as orml_tokens::Config>::Balance>,
<T as pallet_balances::Config>::Balance: From<BalanceOf<T>>,
pallets/foreign-assets/src/lib.rsdiffbeforeafterboth--- a/pallets/foreign-assets/src/lib.rs
+++ b/pallets/foreign-assets/src/lib.rs
@@ -39,30 +39,27 @@
ensure,
pallet_prelude::*,
traits::{fungible, fungibles, Currency, EnsureOrigin},
- RuntimeDebug,
};
use frame_system::pallet_prelude::*;
-use up_data_structs::CollectionMode;
+use pallet_common::erc::CrossAccountId;
use pallet_fungible::Pallet as PalletFungible;
use scale_info::TypeInfo;
+use serde::{Deserialize, Serialize};
use sp_runtime::{
traits::{One, Zero},
ArithmeticError,
};
use sp_std::{boxed::Box, vec::Vec};
-use up_data_structs::{CollectionId, TokenId, CreateCollectionData};
-
+use staging_xcm::{latest::MultiLocation, VersionedMultiLocation};
// NOTE: MultiLocation is used in storages, we will need to do migration if upgrade the
// MultiLocation to the XCM v3.
-use xcm::opaque::latest::{prelude::XcmError, Weight};
-use xcm::{latest::MultiLocation, VersionedMultiLocation};
-use xcm_executor::{traits::WeightTrader, Assets};
+use staging_xcm::{
+ opaque::latest::{prelude::XcmError, Weight},
+ v3::XcmContext,
+};
+use staging_xcm_executor::{traits::WeightTrader, Assets};
+use up_data_structs::{CollectionId, CollectionMode, CreateCollectionData, TokenId};
-use pallet_common::erc::CrossAccountId;
-
-#[cfg(feature = "std")]
-use serde::{Deserialize, Serialize};
-
// TODO: Move to primitives
// Id of native currency.
// 0 - QTZ\UNQ
@@ -79,8 +76,9 @@
Encode,
Decode,
TypeInfo,
+ Serialize,
+ Deserialize,
)]
-#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
pub enum NativeCurrency {
Here = 0,
Parent = 1,
@@ -98,9 +96,10 @@
Encode,
Decode,
TypeInfo,
+ Serialize,
+ Deserialize,
)]
-#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
-pub enum AssetIds {
+pub enum AssetId {
ForeignAssetId(ForeignAssetId),
NativeAssetId(NativeCurrency),
}
@@ -109,17 +108,17 @@
fn try_as_foreign(asset: T) -> Option<F>;
}
-impl TryAsForeign<AssetIds, ForeignAssetId> for AssetIds {
- fn try_as_foreign(asset: AssetIds) -> Option<ForeignAssetId> {
+impl TryAsForeign<AssetId, ForeignAssetId> for AssetId {
+ fn try_as_foreign(asset: AssetId) -> Option<ForeignAssetId> {
match asset {
- AssetIds::ForeignAssetId(id) => Some(id),
+ Self::ForeignAssetId(id) => Some(id),
_ => None,
}
}
}
pub type ForeignAssetId = u32;
-pub type CurrencyId = AssetIds;
+pub type CurrencyId = AssetId;
mod impl_fungibles;
pub mod weights;
@@ -151,7 +150,7 @@
{
fn get_asset_metadata(foreign_asset_id: ForeignAssetId) -> Option<AssetMetadata<BalanceOf<T>>> {
log::trace!(target: "fassets::asset_metadatas", "call");
- Pallet::<T>::asset_metadatas(AssetIds::ForeignAssetId(foreign_asset_id))
+ Pallet::<T>::asset_metadatas(AssetId::ForeignAssetId(foreign_asset_id))
}
fn get_multi_location(foreign_asset_id: ForeignAssetId) -> Option<MultiLocation> {
@@ -161,7 +160,7 @@
fn get_currency_id(multi_location: MultiLocation) -> Option<CurrencyId> {
log::trace!(target: "fassets::get_currency_id", "call");
- Pallet::<T>::location_to_currency_ids(multi_location).map(AssetIds::ForeignAssetId)
+ Pallet::<T>::location_to_currency_ids(multi_location).map(AssetId::ForeignAssetId)
}
}
@@ -231,12 +230,12 @@
},
/// The asset registered.
AssetRegistered {
- asset_id: AssetIds,
+ asset_id: AssetId,
metadata: AssetMetadata<BalanceOf<T>>,
},
/// The asset updated.
AssetUpdated {
- asset_id: AssetIds,
+ asset_id: AssetId,
metadata: AssetMetadata<BalanceOf<T>>,
},
}
@@ -253,7 +252,7 @@
#[pallet::storage]
#[pallet::getter(fn foreign_asset_locations)]
pub type ForeignAssetLocations<T: Config> =
- StorageMap<_, Twox64Concat, ForeignAssetId, xcm::v3::MultiLocation, OptionQuery>;
+ StorageMap<_, Twox64Concat, ForeignAssetId, staging_xcm::v3::MultiLocation, OptionQuery>;
/// The storages for CurrencyIds.
///
@@ -261,7 +260,7 @@
#[pallet::storage]
#[pallet::getter(fn location_to_currency_ids)]
pub type LocationToCurrencyIds<T: Config> =
- StorageMap<_, Twox64Concat, xcm::v3::MultiLocation, ForeignAssetId, OptionQuery>;
+ StorageMap<_, Twox64Concat, staging_xcm::v3::MultiLocation, ForeignAssetId, OptionQuery>;
/// The storages for AssetMetadatas.
///
@@ -269,7 +268,7 @@
#[pallet::storage]
#[pallet::getter(fn asset_metadatas)]
pub type AssetMetadatas<T: Config> =
- StorageMap<_, Twox64Concat, AssetIds, AssetMetadata<BalanceOf<T>>, OptionQuery>;
+ StorageMap<_, Twox64Concat, AssetId, AssetMetadata<BalanceOf<T>>, OptionQuery>;
/// The storages for assets to fungible collection binding
///
@@ -381,7 +380,7 @@
*maybe_location = Some(*location);
AssetMetadatas::<T>::try_mutate(
- AssetIds::ForeignAssetId(foreign_asset_id),
+ AssetId::ForeignAssetId(foreign_asset_id),
|maybe_asset_metadatas| -> DispatchResult {
ensure!(maybe_asset_metadatas.is_none(), Error::<T>::AssetIdExisted);
*maybe_asset_metadatas = Some(metadata.clone());
@@ -413,7 +412,7 @@
.ok_or(Error::<T>::AssetIdNotExists)?;
AssetMetadatas::<T>::try_mutate(
- AssetIds::ForeignAssetId(foreign_asset_id),
+ AssetId::ForeignAssetId(foreign_asset_id),
|maybe_asset_metadatas| -> DispatchResult {
ensure!(
maybe_asset_metadatas.is_some(),
@@ -450,7 +449,7 @@
traits::{
fungibles::Balanced, tokens::currency::Currency as CurrencyT, OnUnbalanced as OnUnbalancedT,
},
- weights::{WeightToFeePolynomial, WeightToFee},
+ weights::{WeightToFee, WeightToFeePolynomial},
};
pub struct FreeForAll<
@@ -477,7 +476,12 @@
Self(Weight::default(), Zero::zero(), PhantomData)
}
- fn buy_weight(&mut self, weight: Weight, payment: Assets) -> Result<Assets, XcmError> {
+ fn buy_weight(
+ &mut self,
+ weight: Weight,
+ payment: Assets,
+ _xcm: &XcmContext,
+ ) -> Result<Assets, XcmError> {
log::trace!(target: "fassets::weight", "buy_weight weight: {:?}, payment: {:?}", weight, payment);
Ok(payment)
}
pallets/fungible/Cargo.tomldiffbeforeafterboth--- a/pallets/fungible/Cargo.toml
+++ b/pallets/fungible/Cargo.toml
@@ -5,9 +5,7 @@
version = "0.1.11"
[dependencies]
-# Note: `package = "parity-scale-codec"` must be supplied since the `Encode` macro searches for it.
-codec = { workspace = true, package = "parity-scale-codec" }
-
+parity-scale-codec = { workspace = true }
scale-info = { workspace = true }
evm-coder = { workspace = true }
pallets/fungible/src/benchmarking.rsdiffbeforeafterboth--- a/pallets/fungible/src/benchmarking.rs
+++ b/pallets/fungible/src/benchmarking.rs
@@ -14,14 +14,13 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-use super::*;
-use crate::{Pallet, Config, FungibleHandle};
-
+use frame_benchmarking::{account, benchmarks};
+use pallet_common::{bench_init, benchmarking::create_collection_raw};
use sp_std::prelude::*;
-use pallet_common::benchmarking::create_collection_raw;
-use frame_benchmarking::{benchmarks, account};
-use up_data_structs::{CollectionMode, MAX_ITEMS_PER_BATCH, budget::Unlimited};
-use pallet_common::bench_init;
+use up_data_structs::{budget::Unlimited, CollectionMode, MAX_ITEMS_PER_BATCH};
+
+use super::*;
+use crate::{Config, FungibleHandle, Pallet};
const SEED: u32 = 1;
pallets/fungible/src/common.rsdiffbeforeafterboth--- a/pallets/fungible/src/common.rs
+++ b/pallets/fungible/src/common.rs
@@ -16,22 +16,24 @@
use core::marker::PhantomData;
-use frame_support::{dispatch::DispatchResultWithPostInfo, ensure, fail, weights::Weight, traits::Get};
-use up_data_structs::{
- TokenId, CollectionId, CreateItemExData, budget::Budget, CreateItemData, TokenOwnerError,
+use frame_support::{
+ dispatch::DispatchResultWithPostInfo, ensure, fail, traits::Get, weights::Weight,
};
use pallet_common::{
- CommonCollectionOperations, CommonWeightInfo, RefungibleExtensions, with_weight,
- weights::WeightInfo as _, SelfWeightOf as PalletCommonWeightOf,
+ weights::WeightInfo as _, with_weight, CommonCollectionOperations, CommonWeightInfo,
+ RefungibleExtensions, SelfWeightOf as PalletCommonWeightOf,
};
use pallet_structure::Error as StructureError;
use sp_runtime::{ArithmeticError, DispatchError};
-use sp_std::{vec::Vec, vec};
-use up_data_structs::{Property, PropertyKey, PropertyValue, PropertyKeyPermission};
+use sp_std::{vec, vec::Vec};
+use up_data_structs::{
+ budget::Budget, CollectionId, CreateItemData, CreateItemExData, Property, PropertyKey,
+ PropertyKeyPermission, PropertyValue, TokenId, TokenOwnerError,
+};
use crate::{
- Allowance, TotalSupply, Balance, Config, Error, FungibleHandle, Pallet, SelfWeightOf,
- weights::WeightInfo,
+ weights::WeightInfo, Allowance, Balance, Config, Error, FungibleHandle, Pallet, SelfWeightOf,
+ TotalSupply,
};
pub struct CommonWeights<T: Config>(PhantomData<T>);
pallets/fungible/src/erc.rsdiffbeforeafterboth--- a/pallets/fungible/src/erc.rs
+++ b/pallets/fungible/src/erc.rs
@@ -17,30 +17,31 @@
//! ERC-20 standart support implementation.
extern crate alloc;
-use core::char::{REPLACEMENT_CHARACTER, decode_utf16};
-use core::convert::TryInto;
-use evm_coder::AbiCoder;
-use evm_coder::{abi::AbiType, ToLog, generate_stubgen, solidity_interface, types::*};
-use up_data_structs::CollectionMode;
+use core::{
+ char::{decode_utf16, REPLACEMENT_CHARACTER},
+ convert::TryInto,
+};
+
+use evm_coder::{abi::AbiType, generate_stubgen, solidity_interface, types::*, AbiCoder, ToLog};
use pallet_common::{
- CollectionHandle,
- erc::{CommonEvmHandler, PrecompileResult, CollectionCall},
+ erc::{CollectionCall, CommonEvmHandler, PrecompileResult},
eth::CrossAddress,
- CommonWeightInfo as _,
+ CollectionHandle, CommonWeightInfo as _,
};
-use sp_std::vec::Vec;
use pallet_evm::{account::CrossAccountId, PrecompileHandle};
use pallet_evm_coder_substrate::{
call, dispatch_to_evm,
execution::{PreDispatch, Result},
frontier_contract,
};
-use pallet_structure::{SelfWeightOf as StructureWeight, weights::WeightInfo as _};
-use sp_core::{U256, Get};
+use pallet_structure::{weights::WeightInfo as _, SelfWeightOf as StructureWeight};
+use sp_core::{Get, U256};
+use sp_std::vec::Vec;
+use up_data_structs::CollectionMode;
use crate::{
- Allowance, Balance, Config, FungibleHandle, Pallet, TotalSupply, SelfWeightOf,
- weights::WeightInfo, common::CommonWeights,
+ common::CommonWeights, weights::WeightInfo, Allowance, Balance, Config, FungibleHandle, Pallet,
+ SelfWeightOf, TotalSupply,
};
frontier_contract! {
pallets/fungible/src/lib.rsdiffbeforeafterboth--- a/pallets/fungible/src/lib.rs
+++ b/pallets/fungible/src/lib.rs
@@ -79,30 +79,26 @@
#![cfg_attr(not(feature = "std"), no_std)]
use core::ops::Deref;
+
use evm_coder::ToLog;
-use frame_support::{
- ensure,
- pallet_prelude::{DispatchResultWithPostInfo, Pays},
- dispatch::PostDispatchInfo,
-};
-use pallet_evm::account::CrossAccountId;
-use up_data_structs::{
- AccessMode, CollectionId, TokenId, CreateCollectionData, mapping::TokenAddressMapping,
- budget::Budget, PropertyKey, Property,
-};
+use frame_support::{dispatch::PostDispatchInfo, ensure, pallet_prelude::*};
+pub use pallet::*;
use pallet_common::{
- Error as CommonError, Event as CommonEvent, Pallet as PalletCommon,
- eth::collection_id_to_address, SelfWeightOf as PalletCommonWeightOf,
- weights::WeightInfo as CommonWeightInfo, helpers::add_weight_to_post_info,
+ eth::collection_id_to_address, helpers::add_weight_to_post_info,
+ weights::WeightInfo as CommonWeightInfo, Error as CommonError, Event as CommonEvent,
+ Pallet as PalletCommon, SelfWeightOf as PalletCommonWeightOf,
};
-use pallet_evm::Pallet as PalletEvm;
+use pallet_evm::{account::CrossAccountId, Pallet as PalletEvm};
+use pallet_evm_coder_substrate::WithRecorder;
use pallet_structure::Pallet as PalletStructure;
-use pallet_evm_coder_substrate::WithRecorder;
use sp_core::H160;
use sp_runtime::{ArithmeticError, DispatchError, DispatchResult};
use sp_std::{collections::btree_map::BTreeMap, vec::Vec};
+use up_data_structs::{
+ budget::Budget, mapping::TokenAddressMapping, AccessMode, CollectionId, CreateCollectionData,
+ Property, PropertyKey, TokenId,
+};
use weights::WeightInfo;
-pub use pallet::*;
use crate::erc::ERC20Events;
#[cfg(feature = "runtime-benchmarks")]
@@ -116,8 +112,11 @@
#[frame_support::pallet]
pub mod pallet {
- use frame_support::{Blake2_128, Blake2_128Concat, Twox64Concat, pallet_prelude::*, storage::Key};
+ use frame_support::{
+ pallet_prelude::*, storage::Key, Blake2_128, Blake2_128Concat, Twox64Concat,
+ };
use up_data_structs::CollectionId;
+
use super::weights::WeightInfo;
#[pallet::error]
pallets/gov-origins/Cargo.tomldiffbeforeafterboth--- a/pallets/gov-origins/Cargo.toml
+++ b/pallets/gov-origins/Cargo.toml
@@ -23,9 +23,7 @@
################################################################################
# Substrate Dependencies
-# Note: `package = "parity-scale-codec"` must be supplied since the `Encode` macro searches for it.
parity-scale-codec = { workspace = true }
-
scale-info = { workspace = true }
frame-support = { workspace = true }
pallets/gov-origins/src/lib.rsdiffbeforeafterboth--- a/pallets/gov-origins/src/lib.rs
+++ b/pallets/gov-origins/src/lib.rs
@@ -17,7 +17,6 @@
#![cfg_attr(not(feature = "std"), no_std)]
use frame_support::pallet_prelude::*;
-
pub use pallet::*;
#[frame_support::pallet]
pallets/identity/Cargo.tomldiffbeforeafterboth--- a/pallets/identity/Cargo.toml
+++ b/pallets/identity/Cargo.toml
@@ -13,10 +13,9 @@
targets = ["x86_64-unknown-linux-gnu"]
[dependencies]
-# Note: `package = "parity-scale-codec"` must be supplied since the `Encode` macro searches for it.
-codec = { workspace = true, package = "parity-scale-codec", features = ["max-encoded-len"] }
+parity-scale-codec = { workspace = true, features = ["max-encoded-len"] }
-enumflags2 = "0.7.4"
+enumflags2 = "0.7.8"
frame-benchmarking = { workspace = true, optional = true }
frame-support = { workspace = true }
frame-system = { workspace = true }
@@ -38,14 +37,14 @@
"sp-runtime/runtime-benchmarks",
]
std = [
- "codec/std",
"frame-benchmarking?/std",
"frame-support/std",
"frame-system/std",
+ "pallet-balances/std",
+ "parity-scale-codec/std",
"scale-info/std",
"sp-io/std",
"sp-runtime/std",
"sp-std/std",
- "pallet-balances/std",
]
try-runtime = ["frame-support/try-runtime"]
pallets/identity/src/benchmarking.rsdiffbeforeafterboth--- a/pallets/identity/src/benchmarking.rs
+++ b/pallets/identity/src/benchmarking.rs
@@ -37,17 +37,17 @@
#![cfg(feature = "runtime-benchmarks")]
#![allow(clippy::no_effect)]
-use super::*;
-
-use crate::Pallet as Identity;
use frame_benchmarking::{account, benchmarks, whitelisted_caller};
use frame_support::{
- ensure, assert_ok,
+ assert_ok, ensure,
traits::{EnsureOrigin, Get},
};
use frame_system::RawOrigin;
use sp_runtime::traits::Bounded;
+use super::*;
+use crate::Pallet as Identity;
+
const SEED: u32 = 0;
fn assert_last_event<T: Config>(generic_event: <T as Config>::RuntimeEvent) {
pallets/identity/src/lib.rsdiffbeforeafterboth--- a/pallets/identity/src/lib.rs
+++ b/pallets/identity/src/lib.rs
@@ -95,21 +95,18 @@
mod types;
pub mod weights;
-use frame_support::{
- traits::{BalanceStatus, Currency, OnUnbalanced, ReservableCurrency},
-};
+use frame_support::traits::{BalanceStatus, Currency, OnUnbalanced, ReservableCurrency};
+pub use pallet::*;
use sp_runtime::{
- BoundedVec,
traits::{AppendZerosInput, Hash, Saturating, StaticLookup, Zero},
+ BoundedVec,
};
use sp_std::prelude::*;
-pub use weights::WeightInfo;
-
-pub use pallet::*;
pub use types::{
Data, IdentityField, IdentityFields, IdentityInfo, Judgement, RegistrarIndex, RegistrarInfo,
Registration,
};
+pub use weights::WeightInfo;
pub type BalanceOf<T> =
<<T as Config>::Currency as Currency<<T as frame_system::Config>::AccountId>>::Balance;
@@ -132,10 +129,11 @@
#[frame_support::pallet]
pub mod pallet {
- use super::*;
use frame_support::pallet_prelude::*;
use frame_system::pallet_prelude::*;
+ use super::*;
+
#[pallet::config]
pub trait Config: frame_system::Config {
/// The overarching event type.
pallets/identity/src/tests.rsdiffbeforeafterboth--- a/pallets/identity/src/tests.rs
+++ b/pallets/identity/src/tests.rs
@@ -34,34 +34,29 @@
// Tests for Identity Pallet
-use super::*;
-use crate as pallet_identity;
-
-use codec::{Decode, Encode};
use frame_support::{
assert_noop, assert_ok, ord_parameter_types, parameter_types,
traits::{ConstU32, ConstU64, EitherOfDiverse},
BoundedVec,
};
use frame_system::{EnsureRoot, EnsureSignedBy};
+use parity_scale_codec::{Decode, Encode};
use sp_core::H256;
use sp_runtime::{
- testing::Header,
traits::{BadOrigin, BlakeTwo256, IdentityLookup},
+ BuildStorage,
};
-type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic<Test>;
-type Block = frame_system::mocking::MockBlock<Test>;
+use super::*;
+use crate as pallet_identity;
+
+type Block = frame_system::mocking::MockBlockU32<Test>;
frame_support::construct_runtime!(
- pub enum Test where
- Block = Block,
- NodeBlock = Block,
- UncheckedExtrinsic = UncheckedExtrinsic,
- {
- System: frame_system::{Pallet, Call, Config, Storage, Event<T>},
- Balances: pallet_balances::{Pallet, Call, Storage, Config<T>, Event<T>},
- Identity: pallet_identity::{Pallet, Call, Storage, Event<T>},
+ pub enum Test {
+ System: frame_system,
+ Balances: pallet_balances,
+ Identity: pallet_identity,
}
);
@@ -71,19 +66,18 @@
}
impl frame_system::Config for Test {
type BaseCallFilter = frame_support::traits::Everything;
+ type Block = Block;
type BlockWeights = ();
type BlockLength = ();
type RuntimeOrigin = RuntimeOrigin;
- type Index = u64;
- type BlockNumber = u64;
+ type Nonce = u64;
type Hash = H256;
type RuntimeCall = RuntimeCall;
type Hashing = BlakeTwo256;
type AccountId = u64;
type Lookup = IdentityLookup<Self::AccountId>;
- type Header = Header;
type RuntimeEvent = RuntimeEvent;
- type BlockHashCount = ConstU64<250>;
+ type BlockHashCount = ConstU32<250>;
type DbWeight = ();
type Version = ();
type PalletInfo = PalletInfo;
@@ -106,7 +100,7 @@
type MaxReserves = ();
type ReserveIdentifier = [u8; 8];
type WeightInfo = ();
- type HoldIdentifier = ();
+ type RuntimeHoldReason = RuntimeHoldReason;
type FreezeIdentifier = ();
type MaxHolds = ();
type MaxFreezes = ();
@@ -139,8 +133,8 @@
}
pub fn new_test_ext() -> sp_io::TestExternalities {
- let mut t = frame_system::GenesisConfig::default()
- .build_storage::<Test>()
+ let mut t = <frame_system::GenesisConfig<Test>>::default()
+ .build_storage()
.unwrap();
pallet_balances::GenesisConfig::<Test> {
balances: vec![(1, 10), (2, 10), (3, 10), (10, 100), (20, 100), (30, 100)],
pallets/identity/src/types.rsdiffbeforeafterboth--- a/pallets/identity/src/types.rs
+++ b/pallets/identity/src/types.rs
@@ -32,13 +32,12 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-use super::*;
-use codec::{Decode, Encode, MaxEncodedLen};
use enumflags2::{bitflags, BitFlags};
use frame_support::{
traits::{ConstU32, Get},
BoundedVec, CloneNoBound, PartialEqNoBound, RuntimeDebugNoBound,
};
+use parity_scale_codec::{Decode, Encode, MaxEncodedLen};
use scale_info::{
build::{Fields, Variants},
meta_type, Path, Type, TypeInfo, TypeParameter,
@@ -46,6 +45,8 @@
use sp_runtime::{traits::Zero, RuntimeDebug};
use sp_std::{fmt::Debug, iter::once, ops::Add, prelude::*};
+use super::*;
+
/// Either underlying data blob if it is at most 32 bytes, or a hash of it. If the data is greater
/// than 32-bytes then it will be truncated when encoding.
///
@@ -77,7 +78,9 @@
}
impl Decode for Data {
- fn decode<I: codec::Input>(input: &mut I) -> sp_std::result::Result<Self, codec::Error> {
+ fn decode<I: parity_scale_codec::Input>(
+ input: &mut I,
+ ) -> sp_std::result::Result<Self, parity_scale_codec::Error> {
let b = input.read_byte()?;
Ok(match b {
0 => Data::None,
@@ -92,7 +95,7 @@
35 => Data::Sha256(<[u8; 32]>::decode(input)?),
36 => Data::Keccak256(<[u8; 32]>::decode(input)?),
37 => Data::ShaThree256(<[u8; 32]>::decode(input)?),
- _ => return Err(codec::Error::from("invalid leading byte")),
+ _ => return Err(parity_scale_codec::Error::from("invalid leading byte")),
})
}
}
@@ -114,7 +117,7 @@
}
}
}
-impl codec::EncodeLike for Data {}
+impl parity_scale_codec::EncodeLike for Data {}
/// Add a Raw variant with the given index and a fixed sized byte array
macro_rules! data_raw_variants {
@@ -284,7 +287,9 @@
}
}
impl Decode for IdentityFields {
- fn decode<I: codec::Input>(input: &mut I) -> sp_std::result::Result<Self, codec::Error> {
+ fn decode<I: parity_scale_codec::Input>(
+ input: &mut I,
+ ) -> sp_std::result::Result<Self, parity_scale_codec::Error> {
let field = u64::decode(input)?;
Ok(Self(
<BitFlags<IdentityField>>::from_bits(field).map_err(|_| "invalid value")?,
@@ -445,7 +450,9 @@
MaxAdditionalFields: Get<u32>,
> Decode for Registration<Balance, MaxJudgements, MaxAdditionalFields>
{
- fn decode<I: codec::Input>(input: &mut I) -> sp_std::result::Result<Self, codec::Error> {
+ fn decode<I: parity_scale_codec::Input>(
+ input: &mut I,
+ ) -> sp_std::result::Result<Self, parity_scale_codec::Error> {
let (judgements, deposit, info) = Decode::decode(&mut AppendZerosInput::new(input))?;
Ok(Self {
judgements,
pallets/inflation/Cargo.tomldiffbeforeafterboth--- a/pallets/inflation/Cargo.toml
+++ b/pallets/inflation/Cargo.toml
@@ -18,20 +18,18 @@
default = ['std']
runtime-benchmarks = ['frame-benchmarking']
std = [
- 'codec/std',
'frame-benchmarking/std',
'frame-support/std',
'frame-system/std',
'pallet-balances/std',
+ 'parity-scale-codec/std',
'sp-runtime/std',
'sp-std/std',
]
try-runtime = ["frame-support/try-runtime"]
[dependencies]
-# Note: `package = "parity-scale-codec"` must be supplied since the `Encode` macro searches for it.
-codec = { workspace = true, package = "parity-scale-codec" }
-
+parity-scale-codec = { workspace = true }
scale-info = { workspace = true }
frame-benchmarking = { workspace = true, optional = true }
pallets/inflation/src/benchmarking.rsdiffbeforeafterboth--- a/pallets/inflation/src/benchmarking.rs
+++ b/pallets/inflation/src/benchmarking.rs
@@ -16,18 +16,18 @@
#![cfg(feature = "runtime-benchmarks")]
+use frame_benchmarking::benchmarks;
+use frame_support::{pallet_prelude::*, traits::Hooks};
+
use super::*;
use crate::Pallet as Inflation;
-use frame_benchmarking::{benchmarks};
-use frame_support::traits::OnInitialize;
-
benchmarks! {
on_initialize {
- let block1: T::BlockNumber = T::BlockNumber::from(1u32);
- let block2: T::BlockNumber = T::BlockNumber::from(2u32);
- Inflation::<T>::on_initialize(block1); // Create Treasury account
- }: { Inflation::<T>::on_initialize(block2); } // Benchmark deposit_into_existing path
+ let block1: BlockNumberFor<T> = 1u32.into();
+ let block2: BlockNumberFor<T> = 2u32.into();
+ <Inflation<T> as Hooks>::on_initialize(block1); // Create Treasury account
+ }: { <Inflation<T> as Hooks>::on_initialize(block2); } // Benchmark deposit_into_existing path
}
pallets/inflation/src/lib.rsdiffbeforeafterboth--- a/pallets/inflation/src/lib.rs
+++ b/pallets/inflation/src/lib.rs
@@ -37,17 +37,14 @@
#[cfg(test)]
mod tests;
-use frame_support::{
- dispatch::{DispatchResult},
- traits::{
- fungible::{Balanced, Inspect, Mutate},
- Get,
- tokens::Precision,
- },
+use frame_support::traits::{
+ fungible::{Balanced, Inspect, Mutate},
+ tokens::Precision,
+ Get,
};
+use frame_system::pallet_prelude::BlockNumberFor;
pub use pallet::*;
-use sp_runtime::{Perbill, traits::BlockNumberProvider};
-
+use sp_runtime::{traits::BlockNumberProvider, Perbill};
use sp_std::convert::TryInto;
type BalanceOf<T> =
@@ -61,10 +58,11 @@
#[frame_support::pallet]
pub mod pallet {
- use super::*;
use frame_support::pallet_prelude::*;
use frame_system::pallet_prelude::*;
+ use super::*;
+
#[pallet::config]
pub trait Config: frame_system::Config {
type Currency: Balanced<Self::AccountId>
@@ -73,11 +71,11 @@
type TreasuryAccountId: Get<Self::AccountId>;
// The block number provider
- type BlockNumberProvider: BlockNumberProvider<BlockNumber = Self::BlockNumber>;
+ type BlockNumberProvider: BlockNumberProvider<BlockNumber = BlockNumberFor<Self>>;
/// Number of blocks that pass between treasury balance updates due to inflation
#[pallet::constant]
- type InflationBlockInterval: Get<Self::BlockNumber>;
+ type InflationBlockInterval: Get<BlockNumberFor<Self>>;
}
#[pallet::pallet]
@@ -95,22 +93,23 @@
/// Next target (relay) block when inflation will be applied
#[pallet::storage]
pub type NextInflationBlock<T: Config> =
- StorageValue<Value = T::BlockNumber, QueryKind = ValueQuery>;
+ StorageValue<Value = BlockNumberFor<T>, QueryKind = ValueQuery>;
/// Next target (relay) block when inflation is recalculated
#[pallet::storage]
pub type NextRecalculationBlock<T: Config> =
- StorageValue<Value = T::BlockNumber, QueryKind = ValueQuery>;
+ StorageValue<Value = BlockNumberFor<T>, QueryKind = ValueQuery>;
/// Relay block when inflation has started
#[pallet::storage]
- pub type StartBlock<T: Config> = StorageValue<Value = T::BlockNumber, QueryKind = ValueQuery>;
+ pub type StartBlock<T: Config> =
+ StorageValue<Value = BlockNumberFor<T>, QueryKind = ValueQuery>;
#[pallet::hooks]
impl<T: Config> Hooks<BlockNumberFor<T>> for Pallet<T> {
- fn on_initialize(_: T::BlockNumber) -> Weight
+ fn on_initialize(_: BlockNumberFor<T>) -> Weight
where
- <T as frame_system::Config>::BlockNumber: From<u32>,
+ BlockNumberFor<T>: From<u32>,
{
let mut consumed_weight = Weight::zero();
let mut add_weight = |reads, writes, weight| {
@@ -120,7 +119,7 @@
let block_interval: u32 = T::InflationBlockInterval::get().try_into().unwrap_or(0);
let current_relay_block = T::BlockNumberProvider::current_block_number();
- let next_inflation: T::BlockNumber = <NextInflationBlock<T>>::get();
+ let next_inflation: BlockNumberFor<T> = <NextInflationBlock<T>>::get();
add_weight(1, 0, Weight::from_parts(5_000_000, 0));
// Apply inflation every InflationBlockInterval blocks
@@ -129,7 +128,7 @@
// Recalculate inflation on the first block of the year (or if it is not initialized yet)
// Do the "current_relay_block >= next_recalculation" check in the "current_relay_block >= next_inflation"
// block because it saves InflationBlockInterval DB reads for NextRecalculationBlock.
- let next_recalculation: T::BlockNumber = <NextRecalculationBlock<T>>::get();
+ let next_recalculation: BlockNumberFor<T> = <NextRecalculationBlock<T>>::get();
add_weight(1, 0, Weight::zero());
if current_relay_block >= next_recalculation {
Self::recalculate_inflation(next_recalculation);
@@ -169,10 +168,10 @@
#[pallet::weight(Weight::from_parts(0, 0))]
pub fn start_inflation(
origin: OriginFor<T>,
- inflation_start_relay_block: T::BlockNumber,
+ inflation_start_relay_block: BlockNumberFor<T>,
) -> DispatchResult
where
- <T as frame_system::Config>::BlockNumber: From<u32>,
+ BlockNumberFor<T>: From<u32>,
{
ensure_root(origin)?;
@@ -200,9 +199,9 @@
}
impl<T: Config> Pallet<T> {
- pub fn recalculate_inflation(recalculation_block: T::BlockNumber) {
+ pub fn recalculate_inflation(recalculation_block: BlockNumberFor<T>) {
let current_year: u32 = ((recalculation_block - <StartBlock<T>>::get())
- / T::BlockNumber::from(YEAR))
+ / BlockNumberFor::<T>::from(YEAR))
.try_into()
.unwrap_or(0);
let block_interval: u32 = T::InflationBlockInterval::get().try_into().unwrap_or(0);
pallets/inflation/src/tests.rsdiffbeforeafterboth--- a/pallets/inflation/src/tests.rs
+++ b/pallets/inflation/src/tests.rs
@@ -16,14 +16,12 @@
#![cfg(test)]
#![allow(clippy::from_over_into)]
-use crate as pallet_inflation;
-
use frame_support::{
assert_ok, parameter_types,
traits::{
fungible::{Balanced, Inspect},
- OnInitialize, Everything, ConstU32,
tokens::Precision,
+ ConstU32, Everything, OnInitialize,
},
weights::Weight,
};
@@ -31,15 +29,17 @@
use sp_core::H256;
use sp_runtime::{
traits::{BlakeTwo256, BlockNumberProvider, IdentityLookup},
- testing::Header,
+ BuildStorage,
};
-type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic<Test>;
-type Block = frame_system::mocking::MockBlock<Test>;
+use crate as pallet_inflation;
-const YEAR: u64 = 5_259_600; // 6-second blocks
- // const YEAR: u64 = 2_629_800; // 12-second blocks
- // Expected 100-block inflation for year 1 is 100 * 100_000_000 / YEAR = FIRST_YEAR_BLOCK_INFLATION
+type Block = frame_system::mocking::MockBlockU32<Test>;
+
+// 6-second blocks
+// const YEAR: u32 = 2_629_800; // 12-second blocks
+// Expected 100-block inflation for year 1 is 100 * 100_000_000 / YEAR = FIRST_YEAR_BLOCK_INFLATION
+const YEAR: u32 = 5_259_600;
const FIRST_YEAR_BLOCK_INFLATION: u64 = 1901;
parameter_types! {
@@ -57,26 +57,22 @@
type MaxLocks = MaxLocks;
type MaxReserves = ();
type ReserveIdentifier = ();
- type HoldIdentifier = ();
type FreezeIdentifier = ();
type MaxHolds = ();
type MaxFreezes = ();
+ type RuntimeHoldReason = RuntimeHoldReason;
}
frame_support::construct_runtime!(
- pub enum Test where
- Block = Block,
- NodeBlock = Block,
- UncheckedExtrinsic = UncheckedExtrinsic,
- {
- Balances: pallet_balances::{Pallet, Call, Storage},
- System: frame_system::{Pallet, Call, Config, Storage, Event<T>},
- Inflation: pallet_inflation::{Pallet, Call, Storage},
+ pub enum Test {
+ Balances: pallet_balances,
+ System: frame_system,
+ Inflation: pallet_inflation,
}
);
parameter_types! {
- pub const BlockHashCount: u64 = 250;
+ pub const BlockHashCount: u32 = 250;
pub BlockWeights: frame_system::limits::BlockWeights =
frame_system::limits::BlockWeights::simple_max(Weight::from_parts(1024, 0));
pub const SS58Prefix: u8 = 42;
@@ -84,18 +80,17 @@
impl frame_system::Config for Test {
type BaseCallFilter = Everything;
+ type Block = Block;
type BlockWeights = ();
type BlockLength = ();
type DbWeight = ();
type RuntimeOrigin = RuntimeOrigin;
type RuntimeCall = RuntimeCall;
- type Index = u64;
- type BlockNumber = u64;
+ type Nonce = u64;
type Hash = H256;
type Hashing = BlakeTwo256;
type AccountId = u64;
type Lookup = IdentityLookup<Self::AccountId>;
- type Header = Header;
type RuntimeEvent = ();
type BlockHashCount = BlockHashCount;
type Version = ();
@@ -112,11 +107,11 @@
parameter_types! {
pub TreasuryAccountId: u64 = 1234;
pub const InflationBlockInterval: u32 = 100; // every time per how many blocks inflation is applied
- pub static MockBlockNumberProvider: u64 = 0;
+ pub static MockBlockNumberProvider: u32 = 0;
}
impl BlockNumberProvider for MockBlockNumberProvider {
- type BlockNumber = u64;
+ type BlockNumber = u32;
fn current_block_number() -> Self::BlockNumber {
Self::get()
@@ -131,8 +126,8 @@
}
pub fn new_test_ext() -> sp_io::TestExternalities {
- frame_system::GenesisConfig::default()
- .build_storage::<Test>()
+ <frame_system::GenesisConfig<Test>>::default()
+ .build_storage()
.unwrap()
.into()
}
@@ -194,7 +189,7 @@
fn inflation_second_deposit() {
new_test_ext().execute_with(|| {
// Total issuance = 1_000_000_000
- let initial_issuance: u64 = 1_000_000_000;
+ let initial_issuance = 1_000_000_000;
let _ = <Balances as Balanced<_>>::deposit(&1234, initial_issuance, Precision::Exact);
assert_eq!(Balances::free_balance(1234), initial_issuance);
MockBlockNumberProvider::set(1);
@@ -203,20 +198,20 @@
assert_ok!(Inflation::start_inflation(RawOrigin::Root.into(), 1));
// Next inflation deposit happens when block is greater then or equal to NextInflationBlock
- let mut block: u64 = 2;
- let balance_before: u64 = Balances::free_balance(1234);
+ let mut block = 2;
+ let balance_before = Balances::free_balance(1234);
while block < <pallet_inflation::NextInflationBlock<Test>>::get() {
- MockBlockNumberProvider::set(block as u64);
+ MockBlockNumberProvider::set(block);
Inflation::on_initialize(0);
block += 1;
}
- let balance_just_before: u64 = Balances::free_balance(1234);
+ let balance_just_before = Balances::free_balance(1234);
assert_eq!(balance_before, balance_just_before);
// The block with inflation
- MockBlockNumberProvider::set(block as u64);
+ MockBlockNumberProvider::set(block);
Inflation::on_initialize(0);
- let balance_after: u64 = Balances::free_balance(1234);
+ let balance_after = Balances::free_balance(1234);
assert_eq!(balance_after - balance_just_before, block_inflation!());
});
}
@@ -241,7 +236,7 @@
Inflation::on_initialize(0);
}
assert_eq!(
- initial_issuance + (FIRST_YEAR_BLOCK_INFLATION * (YEAR / 100)),
+ initial_issuance + (FIRST_YEAR_BLOCK_INFLATION * ((YEAR as u64) / 100)),
<Balances as Inspect<_>>::total_issuance()
);
@@ -250,8 +245,8 @@
let block_inflation_year_2 = block_inflation!();
// Expected 100-block inflation for year 2: 100 * 9.33% * initial issuance * 110% / YEAR == 1951
let expecter_year_2_inflation: u64 = (initial_issuance
- + FIRST_YEAR_BLOCK_INFLATION * YEAR / 100)
- * 933 * 100 / (10000 * YEAR);
+ + FIRST_YEAR_BLOCK_INFLATION * (YEAR as u64) / 100)
+ * 933 * 100 / (10000 * (YEAR as u64));
assert_eq!(block_inflation_year_2 / 10, expecter_year_2_inflation / 10); // divide by 10 for approx. equality
});
}
@@ -260,8 +255,8 @@
fn inflation_start_large_kusama_block() {
new_test_ext().execute_with(|| {
// Total issuance = 1_000_000_000
- let initial_issuance: u64 = 1_000_000_000;
- let start_block: u64 = 10457457;
+ let initial_issuance = 1_000_000_000;
+ let start_block = 10457457;
let _ = <Balances as Balanced<_>>::deposit(&1234, initial_issuance, Precision::Exact);
assert_eq!(Balances::free_balance(1234), initial_issuance);
MockBlockNumberProvider::set(start_block);
@@ -280,7 +275,7 @@
Inflation::on_initialize(0);
}
assert_eq!(
- initial_issuance + (FIRST_YEAR_BLOCK_INFLATION * (YEAR / 100)),
+ initial_issuance + (FIRST_YEAR_BLOCK_INFLATION * ((YEAR as u64) / 100)),
<Balances as Inspect<_>>::total_issuance()
);
@@ -289,8 +284,8 @@
let block_inflation_year_2 = block_inflation!();
// Expected 100-block inflation for year 2: 100 * 9.33% * initial issuance * 110% / YEAR == 1951
let expecter_year_2_inflation: u64 = (initial_issuance
- + FIRST_YEAR_BLOCK_INFLATION * YEAR / 100)
- * 933 * 100 / (10000 * YEAR);
+ + FIRST_YEAR_BLOCK_INFLATION * (YEAR as u64) / 100)
+ * 933 * 100 / (10000 * (YEAR as u64));
assert_eq!(block_inflation_year_2 / 10, expecter_year_2_inflation / 10); // divide by 10 for approx. equality
});
}
@@ -327,14 +322,14 @@
#[test]
fn inflation_rate_by_year() {
new_test_ext().execute_with(|| {
- let payouts: u64 = YEAR / InflationBlockInterval::get() as u64;
+ let payouts = (YEAR / InflationBlockInterval::get()) as u64;
// Inflation starts at 10% and does down by 2/3% every year until year 9 (included),
// then it is flat.
let payout_by_year: [u64; 11] = [1000, 933, 867, 800, 733, 667, 600, 533, 467, 400, 400];
// For accuracy total issuance = payout0 * payouts * 10;
- let initial_issuance: u64 = payout_by_year[0] * payouts * 10;
+ let initial_issuance = payout_by_year[0] * payouts * 10;
let _ = <Balances as Balanced<_>>::deposit(&1234, initial_issuance, Precision::Exact);
assert_eq!(Balances::free_balance(1234), initial_issuance);
pallets/maintenance/Cargo.tomldiffbeforeafterboth--- a/pallets/maintenance/Cargo.toml
+++ b/pallets/maintenance/Cargo.toml
@@ -10,19 +10,27 @@
version = "0.1.0"
[dependencies]
-# Note: `package = "parity-scale-codec"` must be supplied since the `Encode` macro searches for it.
-codec = { workspace = true, package = "parity-scale-codec" }
-
+parity-scale-codec = { workspace = true }
scale-info = { workspace = true }
frame-benchmarking = { workspace = true, optional = true }
frame-support = { workspace = true }
frame-system = { workspace = true }
sp-core = { workspace = true }
+sp-runtime = { workspace = true }
sp-std = { workspace = true }
[features]
default = ["std"]
runtime-benchmarks = ["frame-benchmarking", "frame-support/runtime-benchmarks", "frame-system/runtime-benchmarks"]
-std = ["codec/std", "frame-benchmarking/std", "frame-support/std", "frame-system/std", "scale-info/std", "sp-core/std", "sp-std/std"]
+std = [
+ "frame-benchmarking/std",
+ "frame-support/std",
+ "frame-system/std",
+ "parity-scale-codec/std",
+ "scale-info/std",
+ "sp-core/std",
+ "sp-runtime/std",
+ "sp-std/std",
+]
try-runtime = ["frame-support/try-runtime"]
pallets/maintenance/src/benchmarking.rsdiffbeforeafterboth--- a/pallets/maintenance/src/benchmarking.rs
+++ b/pallets/maintenance/src/benchmarking.rs
@@ -14,13 +14,13 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-use super::*;
-use crate::{Pallet as Maintenance, Config};
-
-use codec::Encode;
use frame_benchmarking::benchmarks;
+use frame_support::{ensure, pallet_prelude::Weight, traits::StorePreimage};
use frame_system::RawOrigin;
-use frame_support::{ensure, pallet_prelude::Weight, traits::StorePreimage};
+use parity_scale_codec::Encode;
+
+use super::*;
+use crate::{Config, Pallet as Maintenance};
benchmarks! {
enable {
pallets/maintenance/src/lib.rsdiffbeforeafterboth--- a/pallets/maintenance/src/lib.rs
+++ b/pallets/maintenance/src/lib.rs
@@ -26,10 +26,14 @@
#[frame_support::pallet]
pub mod pallet {
- use frame_support::{dispatch::*, pallet_prelude::*};
- use frame_support::traits::{QueryPreimage, StorePreimage, EnsureOrigin};
+ use frame_support::{
+ dispatch::*,
+ pallet_prelude::*,
+ traits::{EnsureOrigin, QueryPreimage, StorePreimage},
+ };
use frame_system::pallet_prelude::*;
use sp_core::H256;
+ use sp_runtime::traits::Dispatchable;
use crate::weights::WeightInfo;
@@ -111,7 +115,7 @@
hash: H256,
weight_bound: Weight,
) -> DispatchResultWithPostInfo {
- use codec::Decode;
+ use parity_scale_codec::Decode;
T::PreimageOrigin::ensure_origin(origin.clone())?;
pallets/nonfungible/Cargo.tomldiffbeforeafterboth--- a/pallets/nonfungible/Cargo.toml
+++ b/pallets/nonfungible/Cargo.toml
@@ -5,9 +5,6 @@
version = "0.1.14"
[dependencies]
-# Note: `package = "parity-scale-codec"` must be supplied since the `Encode` macro searches for it.
-codec = { workspace = true, package = "parity-scale-codec" }
-
evm-coder = { workspace = true }
frame-benchmarking = { workspace = true, optional = true }
frame-support = { workspace = true }
@@ -16,6 +13,7 @@
pallet-evm = { workspace = true }
pallet-evm-coder-substrate = { workspace = true }
pallet-structure = { workspace = true }
+parity-scale-codec = { workspace = true }
scale-info = { workspace = true }
sp-core = { workspace = true }
sp-runtime = { workspace = true }
pallets/nonfungible/src/benchmarking.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/benchmarking.rs
+++ b/pallets/nonfungible/src/benchmarking.rs
@@ -14,23 +14,23 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-use super::*;
-use crate::{Pallet, Config, NonfungibleHandle};
-
-use frame_benchmarking::{benchmarks, account};
+use frame_benchmarking::{account, benchmarks};
use pallet_common::{
bench_init,
benchmarking::{
- create_collection_raw, property_key, property_value, load_is_admin_and_property_permissions,
+ create_collection_raw, load_is_admin_and_property_permissions, property_key, property_value,
},
CommonCollectionOperations,
};
use sp_std::prelude::*;
use up_data_structs::{
- CollectionMode, MAX_ITEMS_PER_BATCH, MAX_PROPERTIES_PER_ITEM, budget::Unlimited,
- PropertyPermission,
+ budget::Unlimited, CollectionMode, PropertyPermission, MAX_ITEMS_PER_BATCH,
+ MAX_PROPERTIES_PER_ITEM,
};
+use super::*;
+use crate::{Config, NonfungibleHandle, Pallet};
+
const SEED: u32 = 1;
fn create_max_item_data<T: Config>(owner: T::CrossAccountId) -> CreateItemData<T> {
pallets/nonfungible/src/common.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/common.rs
+++ b/pallets/nonfungible/src/common.rs
@@ -17,21 +17,21 @@
use core::marker::PhantomData;
use frame_support::{dispatch::DispatchResultWithPostInfo, ensure, fail, weights::Weight};
-use up_data_structs::{
- TokenId, CreateItemExData, CollectionId, budget::Budget, Property, PropertyKey,
- PropertyKeyPermission, PropertyValue, TokenOwnerError,
-};
use pallet_common::{
- CommonCollectionOperations, CommonWeightInfo, RefungibleExtensions, with_weight,
- weights::WeightInfo as _, SelfWeightOf as PalletCommonWeightOf, init_token_properties_delta,
+ init_token_properties_delta, weights::WeightInfo as _, with_weight, CommonCollectionOperations,
+ CommonWeightInfo, RefungibleExtensions, SelfWeightOf as PalletCommonWeightOf,
};
use pallet_structure::Pallet as PalletStructure;
use sp_runtime::DispatchError;
-use sp_std::{vec::Vec, vec};
+use sp_std::{vec, vec::Vec};
+use up_data_structs::{
+ budget::Budget, CollectionId, CreateItemExData, Property, PropertyKey, PropertyKeyPermission,
+ PropertyValue, TokenId, TokenOwnerError,
+};
use crate::{
- AccountBalance, Allowance, Config, CreateItemData, Error, NonfungibleHandle, Owned, Pallet,
- SelfWeightOf, TokenData, weights::WeightInfo, TokensMinted, TokenProperties,
+ weights::WeightInfo, AccountBalance, Allowance, Config, CreateItemData, Error,
+ NonfungibleHandle, Owned, Pallet, SelfWeightOf, TokenData, TokenProperties, TokensMinted,
};
pub struct CommonWeights<T: Config>(PhantomData<T>);
pallets/nonfungible/src/erc.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/erc.rs
+++ b/pallets/nonfungible/src/erc.rs
@@ -23,34 +23,34 @@
use alloc::string::ToString;
use core::{
- char::{REPLACEMENT_CHARACTER, decode_utf16},
+ char::{decode_utf16, REPLACEMENT_CHARACTER},
convert::TryInto,
};
-use evm_coder::{abi::AbiType, AbiCoder, ToLog, generate_stubgen, solidity_interface, types::*};
+
+use evm_coder::{abi::AbiType, generate_stubgen, solidity_interface, types::*, AbiCoder, ToLog};
use frame_support::BoundedVec;
-use up_data_structs::{
- TokenId, PropertyPermission, PropertyKeyPermission, Property, CollectionId, PropertyKey,
- CollectionPropertiesVec,
+use pallet_common::{
+ erc::{static_property::key, CollectionCall, CommonEvmHandler, PrecompileResult},
+ eth::{self, TokenUri},
+ CollectionHandle, CollectionPropertyPermissions, CommonCollectionOperations, CommonWeightInfo,
};
+use pallet_evm::{account::CrossAccountId, PrecompileHandle};
use pallet_evm_coder_substrate::{
- dispatch_to_evm, frontier_contract,
- execution::{Result, PreDispatch, Error},
+ call, dispatch_to_evm,
+ execution::{Error, PreDispatch, Result},
+ frontier_contract,
};
-use sp_std::{vec::Vec, vec};
-use pallet_common::{
- CollectionHandle, CollectionPropertyPermissions, CommonCollectionOperations,
- erc::{CommonEvmHandler, PrecompileResult, CollectionCall, static_property::key},
- eth::{self, TokenUri},
- CommonWeightInfo,
+use pallet_structure::{weights::WeightInfo as _, SelfWeightOf as StructureWeight};
+use sp_core::{Get, U256};
+use sp_std::{vec, vec::Vec};
+use up_data_structs::{
+ CollectionId, CollectionPropertiesVec, Property, PropertyKey, PropertyKeyPermission,
+ PropertyPermission, TokenId,
};
-use pallet_evm::{account::CrossAccountId, PrecompileHandle};
-use pallet_evm_coder_substrate::call;
-use pallet_structure::{SelfWeightOf as StructureWeight, weights::WeightInfo as _};
-use sp_core::{U256, Get};
use crate::{
- AccountBalance, Config, CreateItemData, NonfungibleHandle, Pallet, TokenData, TokensMinted,
- TokenProperties, SelfWeightOf, weights::WeightInfo, common::CommonWeights,
+ common::CommonWeights, weights::WeightInfo, AccountBalance, Config, CreateItemData,
+ NonfungibleHandle, Pallet, SelfWeightOf, TokenData, TokenProperties, TokensMinted,
};
/// Nft events.
pallets/nonfungible/src/lib.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/lib.rs
+++ b/pallets/nonfungible/src/lib.rs
@@ -90,37 +90,37 @@
#![cfg_attr(not(feature = "std"), no_std)]
+use core::ops::Deref;
+
use erc::ERC721Events;
use evm_coder::ToLog;
use frame_support::{
- BoundedVec, ensure, fail, transactional,
+ dispatch::{Pays, PostDispatchInfo},
+ ensure, fail,
+ pallet_prelude::*,
storage::with_transaction,
- pallet_prelude::DispatchResultWithPostInfo,
- pallet_prelude::Weight,
- dispatch::{PostDispatchInfo, Pays},
+ transactional, BoundedVec,
};
-use up_data_structs::{
- AccessMode, CollectionId, CustomDataLimit, TokenId, CreateCollectionData, CreateNftExData,
- mapping::TokenAddressMapping, budget::Budget, Property, PropertyKey, PropertyValue,
- PropertyKeyPermission, PropertyScope, TokenChild, AuxPropertyValue, PropertiesPermissionMap,
- TokenProperties as TokenPropertiesT,
+pub use pallet::*;
+use pallet_common::{
+ eth::collection_id_to_address, helpers::add_weight_to_post_info,
+ weights::WeightInfo as CommonWeightInfo, CollectionHandle, Error as CommonError,
+ Event as CommonEvent, Pallet as PalletCommon, SelfWeightOf as PalletCommonWeightOf,
};
use pallet_evm::{account::CrossAccountId, Pallet as PalletEvm};
-use pallet_common::{
- Error as CommonError, Pallet as PalletCommon, Event as CommonEvent, CollectionHandle,
- eth::collection_id_to_address, SelfWeightOf as PalletCommonWeightOf,
- weights::WeightInfo as CommonWeightInfo, helpers::add_weight_to_post_info,
-};
-use pallet_structure::{Pallet as PalletStructure, Error as StructureError};
use pallet_evm_coder_substrate::{SubstrateRecorder, WithRecorder};
+use pallet_structure::{Error as StructureError, Pallet as PalletStructure};
+use parity_scale_codec::{Decode, Encode, MaxEncodedLen};
+use scale_info::TypeInfo;
use sp_core::{Get, H160};
use sp_runtime::{ArithmeticError, DispatchError, DispatchResult, TransactionOutcome};
-use sp_std::{vec::Vec, vec, collections::btree_map::BTreeMap};
-use core::ops::Deref;
-use codec::{Encode, Decode, MaxEncodedLen};
-use scale_info::TypeInfo;
-
-pub use pallet::*;
+use sp_std::{collections::btree_map::BTreeMap, vec, vec::Vec};
+use up_data_structs::{
+ budget::Budget, mapping::TokenAddressMapping, AccessMode, AuxPropertyValue, CollectionId,
+ CreateCollectionData, CreateNftExData, CustomDataLimit, PropertiesPermissionMap, Property,
+ PropertyKey, PropertyKeyPermission, PropertyScope, PropertyValue, TokenChild, TokenId,
+ TokenProperties as TokenPropertiesT,
+};
use weights::WeightInfo;
#[cfg(feature = "runtime-benchmarks")]
pub mod benchmarking;
@@ -147,13 +147,13 @@
#[frame_support::pallet]
pub mod pallet {
- use super::*;
use frame_support::{
- Blake2_128Concat, Twox64Concat, pallet_prelude::*, storage::Key, traits::StorageVersion,
+ pallet_prelude::*, storage::Key, traits::StorageVersion, Blake2_128Concat, Twox64Concat,
};
use up_data_structs::{CollectionId, TokenId};
- use super::weights::WeightInfo;
+ use super::{weights::WeightInfo, *};
+
#[pallet::error]
pub enum Error<T> {
/// Not Nonfungible item data used to mint in Nonfungible collection.
@@ -285,7 +285,6 @@
#[pallet::genesis_config]
pub struct GenesisConfig<T>(PhantomData<T>);
- #[cfg(feature = "std")]
impl<T: Config> Default for GenesisConfig<T> {
fn default() -> Self {
Self(Default::default())
@@ -293,7 +292,7 @@
}
#[pallet::genesis_build]
- impl<T: Config> GenesisBuild<T> for GenesisConfig<T> {
+ impl<T: Config> BuildGenesisConfig for GenesisConfig<T> {
fn build(&self) {
StorageVersion::new(1).put::<Pallet<T>>();
}
pallets/refungible/Cargo.tomldiffbeforeafterboth--- a/pallets/refungible/Cargo.toml
+++ b/pallets/refungible/Cargo.toml
@@ -5,9 +5,7 @@
version = "0.2.13"
[dependencies]
-# Note: `package = "parity-scale-codec"` must be supplied since the `Encode` macro searches for it.
-codec = { workspace = true, package = "parity-scale-codec" }
-
+parity-scale-codec = { workspace = true }
scale-info = { workspace = true }
evm-coder = { workspace = true }
pallets/refungible/src/benchmarking.rsdiffbeforeafterboth--- a/pallets/refungible/src/benchmarking.rs
+++ b/pallets/refungible/src/benchmarking.rs
@@ -14,24 +14,24 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-use super::*;
-use crate::{Pallet, Config, RefungibleHandle};
+use core::{convert::TryInto, iter::IntoIterator};
-use core::convert::TryInto;
-use core::iter::IntoIterator;
-use frame_benchmarking::{benchmarks, account};
+use frame_benchmarking::{account, benchmarks};
use pallet_common::{
bench_init,
benchmarking::{
- create_collection_raw, property_key, property_value, load_is_admin_and_property_permissions,
+ create_collection_raw, load_is_admin_and_property_permissions, property_key, property_value,
},
};
use sp_std::prelude::*;
use up_data_structs::{
- CollectionMode, MAX_ITEMS_PER_BATCH, MAX_PROPERTIES_PER_ITEM, budget::Unlimited,
- PropertyPermission,
+ budget::Unlimited, CollectionMode, PropertyPermission, MAX_ITEMS_PER_BATCH,
+ MAX_PROPERTIES_PER_ITEM,
};
+use super::*;
+use crate::{Config, Pallet, RefungibleHandle};
+
const SEED: u32 = 1;
fn create_max_item_data<T: Config>(
pallets/refungible/src/common.rsdiffbeforeafterboth--- a/pallets/refungible/src/common.rs
+++ b/pallets/refungible/src/common.rs
@@ -16,24 +16,25 @@
use core::marker::PhantomData;
-use sp_std::collections::btree_map::BTreeMap;
-use frame_support::{dispatch::DispatchResultWithPostInfo, ensure, fail, weights::Weight, traits::Get};
-use up_data_structs::{
- CollectionId, TokenId, CreateItemExData, budget::Budget, Property, PropertyKey, PropertyValue,
- PropertyKeyPermission, CreateRefungibleExMultipleOwners, CreateRefungibleExSingleOwner,
- TokenOwnerError,
+use frame_support::{
+ dispatch::DispatchResultWithPostInfo, ensure, fail, traits::Get, weights::Weight,
};
use pallet_common::{
- CommonCollectionOperations, CommonWeightInfo, RefungibleExtensions, with_weight,
- weights::WeightInfo as _, init_token_properties_delta,
+ init_token_properties_delta, weights::WeightInfo as _, with_weight, CommonCollectionOperations,
+ CommonWeightInfo, RefungibleExtensions,
};
-use pallet_structure::{Pallet as PalletStructure, Error as StructureError};
-use sp_runtime::{DispatchError};
-use sp_std::{vec::Vec, vec};
+use pallet_structure::{Error as StructureError, Pallet as PalletStructure};
+use sp_runtime::DispatchError;
+use sp_std::{collections::btree_map::BTreeMap, vec, vec::Vec};
+use up_data_structs::{
+ budget::Budget, CollectionId, CreateItemExData, CreateRefungibleExMultipleOwners,
+ CreateRefungibleExSingleOwner, Property, PropertyKey, PropertyKeyPermission, PropertyValue,
+ TokenId, TokenOwnerError,
+};
use crate::{
- AccountBalance, Allowance, Balance, Config, Error, Owned, Pallet, RefungibleHandle,
- SelfWeightOf, weights::WeightInfo, TokensMinted, TotalSupply, CreateItemData, TokenProperties,
+ weights::WeightInfo, AccountBalance, Allowance, Balance, Config, CreateItemData, Error, Owned,
+ Pallet, RefungibleHandle, SelfWeightOf, TokenProperties, TokensMinted, TotalSupply,
};
macro_rules! max_weight_of {
@@ -496,15 +497,13 @@
return Ok(false);
}
- let is_bundle_owner = <PalletStructure<T>>::check_indirectly_owned(
+ <PalletStructure<T>>::check_indirectly_owned(
maybe_owner.clone(),
self.id,
token,
None,
nesting_budget,
- )?;
-
- Ok(is_bundle_owner)
+ )
}
/// Returns 10 token in no particular order.
pallets/refungible/src/erc.rsdiffbeforeafterboth--- a/pallets/refungible/src/erc.rs
+++ b/pallets/refungible/src/erc.rs
@@ -23,34 +23,35 @@
use alloc::string::ToString;
use core::{
- char::{REPLACEMENT_CHARACTER, decode_utf16},
+ char::{decode_utf16, REPLACEMENT_CHARACTER},
convert::TryInto,
};
-use evm_coder::{abi::AbiType, AbiCoder, ToLog, generate_stubgen, solidity_interface, types::*};
+
+use evm_coder::{abi::AbiType, generate_stubgen, solidity_interface, types::*, AbiCoder, ToLog};
use frame_support::{BoundedBTreeMap, BoundedVec};
use pallet_common::{
+ erc::{static_property::key, CollectionCall, CommonEvmHandler},
+ eth::{self, TokenUri},
CollectionHandle, CollectionPropertyPermissions, CommonCollectionOperations,
Error as CommonError,
- erc::{CommonEvmHandler, CollectionCall, static_property::key},
- eth::{self, TokenUri},
};
use pallet_evm::{account::CrossAccountId, PrecompileHandle};
use pallet_evm_coder_substrate::{
call, dispatch_to_evm,
- execution::{PreDispatch, Result, Error},
+ execution::{Error, PreDispatch, Result},
frontier_contract,
};
-use pallet_structure::{SelfWeightOf as StructureWeight, weights::WeightInfo as _};
-use sp_core::{H160, U256, Get};
-use sp_std::{collections::btree_map::BTreeMap, vec::Vec, vec};
+use pallet_structure::{weights::WeightInfo as _, SelfWeightOf as StructureWeight};
+use sp_core::{Get, H160, U256};
+use sp_std::{collections::btree_map::BTreeMap, vec, vec::Vec};
use up_data_structs::{
- CollectionId, CollectionPropertiesVec, mapping::TokenAddressMapping, Property, PropertyKey,
+ mapping::TokenAddressMapping, CollectionId, CollectionPropertiesVec, Property, PropertyKey,
PropertyKeyPermission, PropertyPermission, TokenId, TokenOwnerError,
};
use crate::{
- AccountBalance, Balance, Config, CreateItemData, Pallet, RefungibleHandle, TokenProperties,
- TokensMinted, TotalSupply, SelfWeightOf, weights::WeightInfo,
+ weights::WeightInfo, AccountBalance, Balance, Config, CreateItemData, Pallet, RefungibleHandle,
+ SelfWeightOf, TokenProperties, TokensMinted, TotalSupply,
};
frontier_contract! {
pallets/refungible/src/erc_token.rsdiffbeforeafterboth--- a/pallets/refungible/src/erc_token.rs
+++ b/pallets/refungible/src/erc_token.rs
@@ -20,11 +20,12 @@
//! Method implementations are mostly doing parameter conversion and calling Nonfungible Pallet methods.
use core::{
- char::{REPLACEMENT_CHARACTER, decode_utf16},
+ char::{decode_utf16, REPLACEMENT_CHARACTER},
convert::TryInto,
ops::Deref,
};
-use evm_coder::{abi::AbiType, ToLog, generate_stubgen, solidity_interface, types::*};
+
+use evm_coder::{abi::AbiType, generate_stubgen, solidity_interface, types::*, ToLog};
use pallet_common::{
erc::{CommonEvmHandler, PrecompileResult},
eth::{collection_id_to_address, CrossAddress},
@@ -32,17 +33,18 @@
};
use pallet_evm::{account::CrossAccountId, PrecompileHandle};
use pallet_evm_coder_substrate::{
- call, dispatch_to_evm, WithRecorder, frontier_contract,
- execution::{Result, PreDispatch},
+ call, dispatch_to_evm,
+ execution::{PreDispatch, Result},
+ frontier_contract, WithRecorder,
};
-use pallet_structure::{SelfWeightOf as StructureWeight, weights::WeightInfo as _};
-use sp_std::vec::Vec;
+use pallet_structure::{weights::WeightInfo as _, SelfWeightOf as StructureWeight};
use sp_core::U256;
+use sp_std::vec::Vec;
use up_data_structs::TokenId;
use crate::{
- Allowance, Balance, Config, Pallet, RefungibleHandle, TotalSupply, common::CommonWeights,
- SelfWeightOf, weights::WeightInfo,
+ common::CommonWeights, weights::WeightInfo, Allowance, Balance, Config, Pallet,
+ RefungibleHandle, SelfWeightOf, TotalSupply,
};
/// Refungible token handle contains information about token's collection and id
pallets/refungible/src/lib.rsdiffbeforeafterboth--- a/pallets/refungible/src/lib.rs
+++ b/pallets/refungible/src/lib.rs
@@ -87,30 +87,29 @@
#![cfg_attr(not(feature = "std"), no_std)]
-use crate::erc_token::ERC20Events;
-use crate::erc::ERC721Events;
+use core::{cmp::Ordering, ops::Deref};
-use core::{ops::Deref, cmp::Ordering};
use evm_coder::ToLog;
use frame_support::{ensure, storage::with_transaction, transactional};
-use pallet_evm::{account::CrossAccountId, Pallet as PalletEvm};
-use pallet_evm_coder_substrate::WithRecorder;
+pub use pallet::*;
use pallet_common::{
- Error as CommonError, eth::collection_id_to_address, Event as CommonEvent,
+ eth::collection_id_to_address, Error as CommonError, Event as CommonEvent,
Pallet as PalletCommon,
};
+use pallet_evm::{account::CrossAccountId, Pallet as PalletEvm};
+use pallet_evm_coder_substrate::WithRecorder;
use pallet_structure::Pallet as PalletStructure;
use sp_core::{Get, H160};
use sp_runtime::{ArithmeticError, DispatchError, DispatchResult, TransactionOutcome};
-use sp_std::{vec::Vec, vec, collections::btree_map::BTreeMap};
+use sp_std::{collections::btree_map::BTreeMap, vec, vec::Vec};
use up_data_structs::{
- AccessMode, budget::Budget, CollectionId, CreateCollectionData, mapping::TokenAddressMapping,
- MAX_REFUNGIBLE_PIECES, Property, PropertyKey, PropertyKeyPermission, PropertyScope,
- PropertyValue, TokenId, PropertiesPermissionMap, CreateRefungibleExMultipleOwners,
- TokenOwnerError, TokenProperties as TokenPropertiesT,
+ budget::Budget, mapping::TokenAddressMapping, AccessMode, CollectionId, CreateCollectionData,
+ CreateRefungibleExMultipleOwners, PropertiesPermissionMap, Property, PropertyKey,
+ PropertyKeyPermission, PropertyScope, PropertyValue, TokenId, TokenOwnerError,
+ TokenProperties as TokenPropertiesT, MAX_REFUNGIBLE_PIECES,
};
-pub use pallet::*;
+use crate::{erc::ERC721Events, erc_token::ERC20Events};
#[cfg(feature = "runtime-benchmarks")]
pub mod benchmarking;
pub mod common;
@@ -124,14 +123,14 @@
#[frame_support::pallet]
pub mod pallet {
- use super::*;
use frame_support::{
- Blake2_128, Blake2_128Concat, Twox64Concat, pallet_prelude::*, storage::Key,
- traits::StorageVersion,
+ pallet_prelude::*, storage::Key, traits::StorageVersion, Blake2_128, Blake2_128Concat,
+ Twox64Concat,
};
use up_data_structs::{CollectionId, TokenId};
- use super::weights::WeightInfo;
+ use super::{weights::WeightInfo, *};
+
#[pallet::error]
pub enum Error<T> {
/// Not Refungible item data used to mint in Refungible collection.
pallets/scheduler-v2/Cargo.tomldiffbeforeafterboth--- a/pallets/scheduler-v2/Cargo.toml
+++ /dev/null
@@ -1,45 +0,0 @@
-[package]
-authors = ["Unique Network <support@uniquenetwork.io>"]
-description = "Unique Scheduler pallet"
-edition = "2021"
-homepage = "https://unique.network"
-license = "GPLv3"
-name = "pallet-unique-scheduler-v2"
-readme = "README.md"
-repository = "https://github.com/UniqueNetwork/unique-chain"
-version = "0.1.0"
-
-[dependencies]
-# Note: `package = "parity-scale-codec"` must be supplied since the `Encode` macro searches for it.
-codec = { workspace = true, package = "parity-scale-codec" }
-
-frame-benchmarking = { workspace = true, optional = true }
-frame-support = { workspace = true }
-frame-system = { workspace = true }
-log = { workspace = true }
-scale-info = { workspace = true }
-sp-core = { workspace = true }
-sp-io = { workspace = true }
-sp-runtime = { workspace = true }
-sp-std = { workspace = true }
-
-[dev-dependencies]
-pallet-preimage = { workspace = true }
-substrate-test-utils = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.43" }
-
-[features]
-default = ["std"]
-runtime-benchmarks = ["frame-benchmarking", "frame-support/runtime-benchmarks", "frame-system/runtime-benchmarks"]
-std = [
- "codec/std",
- "frame-benchmarking?/std",
- "frame-support/std",
- "frame-system/std",
- "log/std",
- "scale-info/std",
- "sp-core/std",
- "sp-io/std",
- "sp-runtime/std",
- "sp-std/std",
-]
-try-runtime = ["frame-support/try-runtime"]
pallets/scheduler-v2/src/benchmarking.rsdiffbeforeafterboth--- a/pallets/scheduler-v2/src/benchmarking.rs
+++ /dev/null
@@ -1,374 +0,0 @@
-// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
-// This file is part of Unique Network.
-
-// Unique Network is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// Unique Network is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-
-// Original license:
-// This file is part of Substrate.
-
-// Copyright (C) 2020-2022 Parity Technologies (UK) Ltd.
-// SPDX-License-Identifier: Apache-2.0
-
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//! Scheduler pallet benchmarking.
-
-use super::*;
-use frame_benchmarking::{account, benchmarks};
-use frame_support::{
- ensure,
- traits::{schedule::Priority, PreimageRecipient},
-};
-use frame_system::RawOrigin;
-use sp_std::{prelude::*, vec};
-use sp_io::hashing::blake2_256;
-
-use crate::{Pallet as Scheduler, ScheduledCall, EncodedCall};
-use frame_system::Call as SystemCall;
-
-const SEED: u32 = 0;
-
-const BLOCK_NUMBER: u32 = 2;
-
-/// Add `n` items to the schedule.
-///
-/// For `resolved`:
-/// - `
-/// - `None`: aborted (hash without preimage)
-/// - `Some(true)`: hash resolves into call if possible, plain call otherwise
-/// - `Some(false)`: plain call
-fn fill_schedule<T: Config>(when: T::BlockNumber, n: u32) -> Result<(), &'static str> {
- let t = DispatchTime::At(when);
- let origin: <T as Config>::PalletsOrigin = frame_system::RawOrigin::Root.into();
- for i in 0..n {
- let call = make_call::<T>(None);
- let period = Some(((i + 100).into(), 100));
- let name = u32_to_name(i);
- Scheduler::<T>::do_schedule_named(name, t, period, 0, origin.clone(), call)?;
- }
- ensure!(
- Agenda::<T>::get(when).agenda.len() == n as usize,
- "didn't fill schedule"
- );
- Ok(())
-}
-
-/// Generate a name for a scheduled task from an unsigned integer.
-fn u32_to_name(i: u32) -> TaskName {
- i.using_encoded(blake2_256)
-}
-
-/// A utility for creating simple scheduled tasks.
-///
-/// # Arguments
-/// * `periodic` - makes the task periodic.
-/// Sets the task's period and repetition count to `100`.
-/// * `named` - gives a name to the task: `u32_to_name(0)`.
-/// * `signed` - determines the origin of the task.
-/// If true, it will have the Signed origin. Otherwise it will have the Root origin.
-/// See [`make_origin`] for details.
-/// * maybe_lookup_len - sets optional lookup length. It is used to benchmark task fetching from the `Preimages` store.
-/// * priority - the task's priority.
-fn make_task<T: Config>(
- periodic: bool,
- named: bool,
- signed: bool,
- maybe_lookup_len: Option<u32>,
- priority: Priority,
-) -> ScheduledOf<T> {
- let call = make_call::<T>(maybe_lookup_len);
- let maybe_periodic = match periodic {
- true => Some((100u32.into(), 100)),
- false => None,
- };
- let maybe_id = match named {
- true => Some(u32_to_name(0)),
- false => None,
- };
- let origin = make_origin::<T>(signed);
- Scheduled {
- maybe_id,
- priority,
- call,
- maybe_periodic,
- origin,
- _phantom: PhantomData,
- }
-}
-
-/// Creates a `SystemCall::remark` scheduled call with a given `len` in bytes.
-/// Returns `None` if the call is too large to encode.
-fn bounded<T: Config>(len: u32) -> Option<ScheduledCall<T>> {
- let call = <<T as Config>::RuntimeCall>::from(SystemCall::remark {
- remark: vec![0; len as usize],
- });
- ScheduledCall::new(call).ok()
-}
-
-/// Creates a scheduled call and maximizes its size.
-///
-/// If the `maybe_lookup_len` is not supplied, the task will create the maximal `Inline` scheduled call.
-///
-/// Otherwise, the function will take the length value from the `maybe_lookup_len`
-/// and find a minimal length value that ensures that the scheduled call will require a Preimage lookup.
-fn make_call<T: Config>(maybe_lookup_len: Option<u32>) -> ScheduledCall<T> {
- let bound = EncodedCall::bound() as u32;
- let mut len = match maybe_lookup_len {
- Some(len) => {
- len.clamp(
- bound,
- <T::Preimages as PreimageRecipient<T::Hash>>::MaxSize::get() - 2,
- ) - 3
- }
- None => bound.saturating_sub(4),
- };
-
- loop {
- let c = match bounded::<T>(len) {
- Some(x) => x,
- None => {
- len -= 1;
- continue;
- }
- };
- if c.lookup_needed() == maybe_lookup_len.is_some() {
- break c;
- }
- if maybe_lookup_len.is_some() {
- len += 1;
- } else if len > 0 {
- len -= 1;
- } else {
- break c;
- }
- }
-}
-
-/// Creates an origin for a scheduled call.
-///
-/// If `signed` is true, it creates the Signed origin from a default account `account("origin", 0, SEED)`.
-/// Otherwise, it creates the Root origin.
-fn make_origin<T: Config>(signed: bool) -> <T as Config>::PalletsOrigin {
- match signed {
- true => frame_system::RawOrigin::Signed(account("origin", 0, SEED)).into(),
- false => frame_system::RawOrigin::Root.into(),
- }
-}
-
-/// Creates a dummy `WeightCounter` with the maximum possible weight limit.
-fn dummy_counter() -> WeightCounter {
- WeightCounter {
- used: Weight::zero(),
- limit: Weight::MAX,
- }
-}
-
-benchmarks! {
- // `service_agendas` when no work is done.
- // (multiple agendas - scheduled tasks in several blocks)
- service_agendas_base {
- let now = T::BlockNumber::from(BLOCK_NUMBER);
- IncompleteSince::<T>::put(now - One::one());
- }: {
- Scheduler::<T>::service_agendas(&mut dummy_counter(), now, 0);
- } verify {
- assert_eq!(IncompleteSince::<T>::get(), Some(now - One::one()));
- }
-
- // `service_agenda` when no work is done.
- // (only one agenda - scheduled tasks in a single block)
- service_agenda_base {
- let now = BLOCK_NUMBER.into();
- let s in 0 .. T::MaxScheduledPerBlock::get();
- fill_schedule::<T>(now, s)?;
- let mut executed = 0;
- }: {
- Scheduler::<T>::service_agenda(&mut dummy_counter(), &mut executed, now, now, 0);
- } verify {
- assert_eq!(executed, 0);
- }
-
- // `service_task` when the task is a non-periodic, non-named, non-fetched call which is not
- // dispatched (e.g. due to being overweight).
- service_task_base {
- let now = BLOCK_NUMBER.into();
- let task = make_task::<T>(false, false, false, None, 0);
- // prevent any tasks from actually being executed as we only want the surrounding weight.
- let mut counter = WeightCounter { used: Weight::zero(), limit: Weight::zero() };
- }: {
- let result = Scheduler::<T>::service_task(&mut counter, now, now, 0, true, task);
- } verify {
- //assert_eq!(result, Ok(()));
- }
-
- // TODO uncomment if we will use the Preimages
- // // `service_task` when the task is a non-periodic, non-named, fetched call (with a known
- // // preimage length) and which is not dispatched (e.g. due to being overweight).
- // service_task_fetched {
- // let s in (EncodedCall::bound() as u32) .. (<T::Preimages as PreimageRecipient<T::Hash>>::MaxSize::get());
- // let now = BLOCK_NUMBER.into();
- // let task = make_task::<T>(false, false, false, Some(s), 0);
- // // prevent any tasks from actually being executed as we only want the surrounding weight.
- // let mut counter = WeightCounter { used: Weight::zero(), limit: Weight::zero() };
- // }: {
- // let result = Scheduler::<T>::service_task(&mut counter, now, now, 0, true, task);
- // } verify {
- // }
-
- // `service_task` when the task is a non-periodic, named, non-fetched call which is not
- // dispatched (e.g. due to being overweight).
- service_task_named {
- let now = BLOCK_NUMBER.into();
- let task = make_task::<T>(false, true, false, None, 0);
- // prevent any tasks from actually being executed as we only want the surrounding weight.
- let mut counter = WeightCounter { used: Weight::zero(), limit: Weight::zero() };
- }: {
- let result = Scheduler::<T>::service_task(&mut counter, now, now, 0, true, task);
- } verify {
- }
-
- // `service_task` when the task is a periodic, non-named, non-fetched call which is not
- // dispatched (e.g. due to being overweight).
- service_task_periodic {
- let now = BLOCK_NUMBER.into();
- let task = make_task::<T>(true, false, false, None, 0);
- // prevent any tasks from actually being executed as we only want the surrounding weight.
- let mut counter = WeightCounter { used: Weight::zero(), limit: Weight::zero() };
- }: {
- let result = Scheduler::<T>::service_task(&mut counter, now, now, 0, true, task);
- } verify {
- }
-
- // `execute_dispatch` when the origin is `Signed`, not counting the dispatable's weight.
- execute_dispatch_signed {
- let mut counter = WeightCounter { used: Weight::zero(), limit: Weight::MAX };
- let origin = make_origin::<T>(true);
- let call = T::Preimages::realize(&make_call::<T>(None)).unwrap().0;
- }: {
- assert!(Scheduler::<T>::execute_dispatch(&mut counter, origin, call).is_ok());
- }
- verify {
- }
-
- // `execute_dispatch` when the origin is not `Signed`, not counting the dispatable's weight.
- execute_dispatch_unsigned {
- let mut counter = WeightCounter { used: Weight::zero(), limit: Weight::MAX };
- let origin = make_origin::<T>(false);
- let call = T::Preimages::realize(&make_call::<T>(None)).unwrap().0;
- }: {
- assert!(Scheduler::<T>::execute_dispatch(&mut counter, origin, call).is_ok());
- }
- verify {
- }
-
- schedule {
- let s in 0 .. (T::MaxScheduledPerBlock::get() - 1);
- let when = BLOCK_NUMBER.into();
- let periodic = Some((T::BlockNumber::one(), 100));
- let priority = Some(0);
- // Essentially a no-op call.
- let call = Box::new(SystemCall::set_storage { items: vec![] }.into());
-
- fill_schedule::<T>(when, s)?;
- }: _(RawOrigin::Root, when, periodic, priority, call)
- verify {
- ensure!(
- Agenda::<T>::get(when).agenda.len() == (s + 1) as usize,
- "didn't add to schedule"
- );
- }
-
- cancel {
- let s in 1 .. T::MaxScheduledPerBlock::get();
- let when = BLOCK_NUMBER.into();
-
- fill_schedule::<T>(when, s)?;
- assert_eq!(Agenda::<T>::get(when).agenda.len(), s as usize);
- }: _(RawOrigin::Root, when, 0)
- verify {
- ensure!(
- Lookup::<T>::get(u32_to_name(0)).is_none(),
- "didn't remove from lookup"
- );
- // Removed schedule is NONE
- ensure!(
- Agenda::<T>::get(when).agenda[0].is_none(),
- "didn't remove from schedule"
- );
- }
-
- schedule_named {
- let s in 0 .. (T::MaxScheduledPerBlock::get() - 1);
- let id = u32_to_name(s);
- let when = BLOCK_NUMBER.into();
- let periodic = Some((T::BlockNumber::one(), 100));
- let priority = Some(0);
- // Essentially a no-op call.
- let call = Box::new(SystemCall::set_storage { items: vec![] }.into());
-
- fill_schedule::<T>(when, s)?;
- }: _(RawOrigin::Root, id, when, periodic, priority, call)
- verify {
- ensure!(
- Agenda::<T>::get(when).agenda.len() == (s + 1) as usize,
- "didn't add to schedule"
- );
- }
-
- cancel_named {
- let s in 1 .. T::MaxScheduledPerBlock::get();
- let when = BLOCK_NUMBER.into();
-
- fill_schedule::<T>(when, s)?;
- }: _(RawOrigin::Root, u32_to_name(0))
- verify {
- ensure!(
- Lookup::<T>::get(u32_to_name(0)).is_none(),
- "didn't remove from lookup"
- );
- // Removed schedule is NONE
- ensure!(
- Agenda::<T>::get(when).agenda[0].is_none(),
- "didn't remove from schedule"
- );
- }
-
- change_named_priority {
- let origin: RawOrigin<T::AccountId> = frame_system::RawOrigin::Root;
- let s in 1 .. T::MaxScheduledPerBlock::get();
- let when = BLOCK_NUMBER.into();
- let idx = s - 1;
- let id = u32_to_name(idx);
- let priority = 42;
- fill_schedule::<T>(when, s)?;
- }: _(origin, id, priority)
- verify {
- ensure!(
- Agenda::<T>::get(when).agenda[idx as usize].clone().unwrap().priority == priority,
- "didn't change the priority"
- );
- }
-
- impl_benchmark_test_suite!(Scheduler, crate::mock::new_test_ext(), crate::mock::Test);
-}
pallets/scheduler-v2/src/lib.rsdiffbeforeafterboth--- a/pallets/scheduler-v2/src/lib.rs
+++ /dev/null
@@ -1,1338 +0,0 @@
-// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
-// This file is part of Unique Network.
-
-// Unique Network is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// Unique Network is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-
-// Original license:
-// This file is part of Substrate.
-
-// Copyright (C) 2017-2022 Parity Technologies (UK) Ltd.
-// SPDX-License-Identifier: Apache-2.0
-
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//! # Scheduler
-//! A Pallet for scheduling dispatches.
-//!
-//! - [`Config`]
-//! - [`Call`]
-//! - [`Pallet`]
-//!
-//! ## Overview
-//!
-//! This Pallet exposes capabilities for scheduling dispatches to occur at a
-//! specified block number or at a specified period. These scheduled dispatches
-//! may be named or anonymous and may be canceled.
-//!
-//! **NOTE:** The scheduled calls will be dispatched with the default filter
-//! for the origin: namely `frame_system::Config::BaseCallFilter` for all origin
-//! except root which will get no filter. And not the filter contained in origin
-//! use to call `fn schedule`.
-//!
-//! If a call is scheduled using proxy or whatever mecanism which adds filter,
-//! then those filter will not be used when dispatching the schedule call.
-//!
-//! ## Interface
-//!
-//! ### Dispatchable Functions
-//!
-//! * `schedule` - schedule a dispatch, which may be periodic, to occur at a specified block and
-//! with a specified priority.
-//! * `cancel` - cancel a scheduled dispatch, specified by block number and index.
-//! * `schedule_named` - augments the `schedule` interface with an additional `Vec<u8>` parameter
-//! that can be used for identification.
-//! * `cancel_named` - the named complement to the cancel function.
-
-// Ensure we're `no_std` when compiling for Wasm.
-#![cfg_attr(not(feature = "std"), no_std)]
-#![deny(missing_docs)]
-
-#[cfg(feature = "runtime-benchmarks")]
-mod benchmarking;
-#[cfg(test)]
-mod mock;
-#[cfg(test)]
-mod tests;
-// We dont use this pallet right now
-#[allow(deprecated)]
-pub mod weights;
-
-use codec::{Codec, Decode, Encode, MaxEncodedLen};
-use frame_support::{
- dispatch::{
- DispatchError, DispatchResult, Dispatchable, GetDispatchInfo, Parameter, PostDispatchInfo,
- },
- traits::{
- schedule::{self, DispatchTime, LOWEST_PRIORITY},
- EnsureOrigin, Get, IsType, OriginTrait, PrivilegeCmp, StorageVersion, PreimageRecipient,
- ConstU32, UnfilteredDispatchable,
- },
- weights::Weight,
- unsigned::TransactionValidityError,
-};
-
-use frame_system::{self as system};
-use scale_info::TypeInfo;
-use sp_runtime::{
- traits::{BadOrigin, One, Saturating, Zero, Hash},
- BoundedVec, RuntimeDebug, DispatchErrorWithPostInfo,
-};
-use sp_core::H160;
-use sp_std::{cmp::Ordering, marker::PhantomData, prelude::*};
-pub use weights::WeightInfo;
-
-pub use pallet::*;
-
-/// Just a simple index for naming period tasks.
-pub type PeriodicIndex = u32;
-/// The location of a scheduled task that can be used to remove it.
-pub type TaskAddress<BlockNumber> = (BlockNumber, u32);
-
-/// A an encoded bounded `Call`. Its encoding must be at most 128 bytes.
-pub type EncodedCall = BoundedVec<u8, ConstU32<128>>;
-
-#[derive(Clone, Eq, PartialEq, Encode, Decode, RuntimeDebug, TypeInfo, MaxEncodedLen)]
-#[scale_info(skip_type_params(T))]
-/// A scheduled call is stored as is or as a preimage hash to lookup.
-/// This enum represents both variants.
-pub enum ScheduledCall<T: Config> {
- /// A an encoded bounded `Call`. Its encoding must be at most 128 bytes.
- Inline(EncodedCall),
-
- /// A Blake2-256 hash of the call together with an upper limit for its size.
- PreimageLookup {
- /// A call hash to lookup
- hash: T::Hash,
-
- /// The length of the decoded call
- unbounded_len: u32,
- },
-}
-
-impl<T: Config> ScheduledCall<T> {
- /// Convert an otherwise unbounded or large value into a type ready for placing in storage.
- ///
- /// NOTE: Once this API is used, you should use either `drop` or `realize`.
- pub fn new(call: <T as Config>::RuntimeCall) -> Result<Self, DispatchError> {
- let encoded = call.encode();
- let len = encoded.len();
-
- match EncodedCall::try_from(encoded.clone()) {
- Ok(bounded) => Ok(Self::Inline(bounded)),
- Err(_) => {
- let hash = <T as system::Config>::Hashing::hash_of(&encoded);
- <T as Config>::Preimages::note_preimage(
- encoded
- .try_into()
- .map_err(|_| <Error<T>>::TooBigScheduledCall)?,
- );
-
- Ok(Self::PreimageLookup {
- hash,
- unbounded_len: len as u32,
- })
- }
- }
- }
-
- /// The maximum length of the lookup that is needed to peek `Self`.
- pub fn lookup_len(&self) -> Option<u32> {
- match self {
- Self::Inline(..) => None,
- Self::PreimageLookup { unbounded_len, .. } => Some(*unbounded_len),
- }
- }
-
- /// Returns whether the image will require a lookup to be peeked.
- pub fn lookup_needed(&self) -> bool {
- match self {
- Self::Inline(_) => false,
- Self::PreimageLookup { .. } => true,
- }
- }
-
- // Decodes a runtime call
- fn decode(mut data: &[u8]) -> Result<<T as Config>::RuntimeCall, DispatchError> {
- <T as Config>::RuntimeCall::decode(&mut data)
- .map_err(|_| <Error<T>>::ScheduledCallCorrupted.into())
- }
-}
-
-/// Weight Info for the Preimages fetches.
-pub trait SchedulerPreimagesWeightInfo<W: WeightInfo> {
- /// Get the weight of a task fetches with a given decoded length.
- fn service_task_fetched(call_length: u32) -> Weight;
-}
-
-impl<W: WeightInfo> SchedulerPreimagesWeightInfo<W> for () {
- fn service_task_fetched(_call_length: u32) -> Weight {
- W::service_task_base()
- }
-}
-
-/// A scheduler's interface for managing preimages to hashes
-/// and looking up preimages from their hash on-chain.
-pub trait SchedulerPreimages<T: Config>:
- PreimageRecipient<T::Hash> + SchedulerPreimagesWeightInfo<T::WeightInfo>
-{
- /// No longer request that the data for decoding the given `call` is available.
- fn drop(call: &ScheduledCall<T>);
-
- /// Convert the given `call` instance back into its original instance, also returning the
- /// exact size of its encoded form if it needed to be looked-up from a stored preimage.
- ///
- /// NOTE: This does not remove any data needed for realization. If you will no longer use the
- /// `call`, use `realize` instead or use `drop` afterwards.
- fn peek(
- call: &ScheduledCall<T>,
- ) -> Result<(<T as pallet::Config>::RuntimeCall, Option<u32>), DispatchError>;
-
- /// Convert the given scheduled `call` value back into its original instance. If successful,
- /// `drop` any data backing it. This will not break the realisability of independently
- /// created instances of `ScheduledCall` which happen to have identical data.
- fn realize(
- call: &ScheduledCall<T>,
- ) -> Result<(<T as pallet::Config>::RuntimeCall, Option<u32>), DispatchError>;
-}
-
-impl<T: Config, PP: PreimageRecipient<T::Hash> + SchedulerPreimagesWeightInfo<T::WeightInfo>>
- SchedulerPreimages<T> for PP
-{
- fn drop(call: &ScheduledCall<T>) {
- match call {
- ScheduledCall::Inline(_) => {}
- ScheduledCall::PreimageLookup { hash, .. } => Self::unrequest_preimage(hash),
- }
- }
-
- fn peek(
- call: &ScheduledCall<T>,
- ) -> Result<(<T as pallet::Config>::RuntimeCall, Option<u32>), DispatchError> {
- match call {
- ScheduledCall::Inline(data) => Ok((ScheduledCall::<T>::decode(data)?, None)),
- ScheduledCall::PreimageLookup {
- hash,
- unbounded_len,
- } => {
- let (preimage, len) = Self::get_preimage(hash)
- .ok_or(<Error<T>>::PreimageNotFound)
- .map(|preimage| (preimage, *unbounded_len))?;
-
- Ok((ScheduledCall::<T>::decode(preimage.as_slice())?, Some(len)))
- }
- }
- }
-
- fn realize(
- call: &ScheduledCall<T>,
- ) -> Result<(<T as pallet::Config>::RuntimeCall, Option<u32>), DispatchError> {
- let r = Self::peek(call)?;
- Self::drop(call);
- Ok(r)
- }
-}
-
-/// Scheduler's supported origins.
-pub enum ScheduledEnsureOriginSuccess<AccountId> {
- /// A scheduled transaction has the Root origin.
- Root,
-
- /// A specific account has signed a scheduled transaction.
- Signed(AccountId),
-}
-
-/// An identifier of a scheduled task.
-pub type TaskName = [u8; 32];
-
-/// Information regarding an item to be executed in the future.
-#[cfg_attr(any(feature = "std", test), derive(PartialEq, Eq))]
-#[derive(Clone, RuntimeDebug, Encode, Decode, MaxEncodedLen, TypeInfo)]
-pub struct Scheduled<Name, Call, BlockNumber, PalletsOrigin, AccountId> {
- /// The unique identity for this task, if there is one.
- maybe_id: Option<Name>,
-
- /// This task's priority.
- priority: schedule::Priority,
-
- /// The call to be dispatched.
- call: Call,
-
- /// If the call is periodic, then this points to the information concerning that.
- maybe_periodic: Option<schedule::Period<BlockNumber>>,
-
- /// The origin with which to dispatch the call.
- origin: PalletsOrigin,
- _phantom: PhantomData<AccountId>,
-}
-
-/// Information regarding an item to be executed in the future.
-pub type ScheduledOf<T> = Scheduled<
- TaskName,
- ScheduledCall<T>,
- <T as frame_system::Config>::BlockNumber,
- <T as Config>::PalletsOrigin,
- <T as frame_system::Config>::AccountId,
->;
-
-#[derive(Encode, Decode, MaxEncodedLen, TypeInfo)]
-#[scale_info(skip_type_params(T))]
-/// A structure for storing scheduled tasks in a block.
-/// The `BlockAgenda` tracks the available free space for a new task in a block.4
-///
-/// The agenda's maximum amount of tasks is `T::MaxScheduledPerBlock`.
-pub struct BlockAgenda<T: Config> {
- agenda: BoundedVec<Option<ScheduledOf<T>>, T::MaxScheduledPerBlock>,
- free_places: u32,
-}
-
-impl<T: Config> BlockAgenda<T> {
- /// Tries to push a new scheduled task into the block's agenda.
- /// If there is a free place, the new task will take it,
- /// and the `BlockAgenda` will record that the number of free places has decreased.
- ///
- /// An error containing the scheduled task will be returned if there are no free places.
- ///
- /// The complexity of the check for the *existence* of a free place is O(1).
- /// The complexity of *finding* the free slot is O(n).
- fn try_push(&mut self, scheduled: ScheduledOf<T>) -> Result<u32, ScheduledOf<T>> {
- if self.free_places == 0 {
- return Err(scheduled);
- }
-
- self.free_places = self.free_places.saturating_sub(1);
-
- if (self.agenda.len() as u32) < T::MaxScheduledPerBlock::get() {
- // will always succeed due to the above check.
- let _ = self.agenda.try_push(Some(scheduled));
- Ok((self.agenda.len() - 1) as u32)
- } else {
- match self.agenda.iter().position(|i| i.is_none()) {
- Some(hole_index) => {
- self.agenda[hole_index] = Some(scheduled);
- Ok(hole_index as u32)
- }
- None => unreachable!("free_places was greater than 0; qed"),
- }
- }
- }
-
- /// Sets a slot by the given index and the slot value.
- ///
- /// ### Panics
- /// If the index is out of range, the function will panic.
- fn set_slot(&mut self, index: u32, slot: Option<ScheduledOf<T>>) {
- self.agenda[index as usize] = slot;
- }
-
- /// Returns an iterator containing references to the agenda's slots.
- fn iter(&self) -> impl Iterator<Item = &'_ Option<ScheduledOf<T>>> + '_ {
- self.agenda.iter()
- }
-
- /// Returns an immutable reference to a scheduled task if there is one under the given index.
- ///
- /// The function returns `None` if:
- /// * The `index` is out of range
- /// * No scheduled task occupies the agenda slot under the given index.
- fn get(&self, index: u32) -> Option<&ScheduledOf<T>> {
- match self.agenda.get(index as usize) {
- Some(Some(scheduled)) => Some(scheduled),
- _ => None,
- }
- }
-
- /// Returns a mutable reference to a scheduled task if there is one under the given index.
- ///
- /// The function returns `None` if:
- /// * The `index` is out of range
- /// * No scheduled task occupies the agenda slot under the given index.
- fn get_mut(&mut self, index: u32) -> Option<&mut ScheduledOf<T>> {
- match self.agenda.get_mut(index as usize) {
- Some(Some(scheduled)) => Some(scheduled),
- _ => None,
- }
- }
-
- /// Take a scheduled task by the given index.
- ///
- /// If there is a task under the index, the function will:
- /// * Free the corresponding agenda slot.
- /// * Decrease the number of free places.
- /// * Return the scheduled task.
- ///
- /// The function returns `None` if there is no task under the index.
- fn take(&mut self, index: u32) -> Option<ScheduledOf<T>> {
- let removed = self.agenda.get_mut(index as usize)?.take();
-
- if removed.is_some() {
- self.free_places = self.free_places.saturating_add(1);
- }
-
- removed
- }
-}
-
-impl<T: Config> Default for BlockAgenda<T> {
- fn default() -> Self {
- let agenda = Default::default();
- let free_places = T::MaxScheduledPerBlock::get();
-
- Self {
- agenda,
- free_places,
- }
- }
-}
-/// A structure for tracking the used weight
-/// and checking if it does not exceed the weight limit.
-struct WeightCounter {
- used: Weight,
- limit: Weight,
-}
-
-impl WeightCounter {
- /// Checks if the weight `w` can be accommodated by the counter.
- ///
- /// If there is room for the additional weight `w`,
- /// the function will update the used weight and return true.
- fn check_accrue(&mut self, w: Weight) -> bool {
- let test = self.used.saturating_add(w);
- if test.any_gt(self.limit) {
- false
- } else {
- self.used = test;
- true
- }
- }
-
- /// Checks if the weight `w` can be accommodated by the counter.
- fn can_accrue(&mut self, w: Weight) -> bool {
- self.used.saturating_add(w).all_lte(self.limit)
- }
-}
-
-pub(crate) struct MarginalWeightInfo<T: Config>(sp_std::marker::PhantomData<T>);
-
-impl<T: Config> MarginalWeightInfo<T> {
- /// Return the weight of servicing a single task.
- fn service_task(maybe_lookup_len: Option<usize>, named: bool, periodic: bool) -> Weight {
- let base = T::WeightInfo::service_task_base();
- let mut total = match maybe_lookup_len {
- None => base,
- Some(l) => T::Preimages::service_task_fetched(l as u32),
- };
- if named {
- total.saturating_accrue(T::WeightInfo::service_task_named().saturating_sub(base));
- }
- if periodic {
- total.saturating_accrue(T::WeightInfo::service_task_periodic().saturating_sub(base));
- }
- total
- }
-}
-
-#[frame_support::pallet]
-pub mod pallet {
- use super::*;
- use frame_support::{dispatch::PostDispatchInfo, pallet_prelude::*};
- use system::pallet_prelude::*;
-
- /// The current storage version.
- const STORAGE_VERSION: StorageVersion = StorageVersion::new(0);
-
- #[pallet::pallet]
- #[pallet::storage_version(STORAGE_VERSION)]
- pub struct Pallet<T>(_);
-
- #[pallet::config]
- pub trait Config: frame_system::Config {
- /// The overarching event type.
- type RuntimeEvent: From<Event<Self>> + IsType<<Self as frame_system::Config>::RuntimeEvent>;
-
- /// The aggregated origin which the dispatch will take.
- type RuntimeOrigin: OriginTrait<PalletsOrigin = Self::PalletsOrigin>
- + From<Self::PalletsOrigin>
- + IsType<<Self as system::Config>::RuntimeOrigin>
- + Clone;
-
- /// The caller origin, overarching type of all pallets origins.
- type PalletsOrigin: From<system::RawOrigin<Self::AccountId>>
- + Codec
- + Clone
- + Eq
- + TypeInfo
- + MaxEncodedLen;
-
- /// The aggregated call type.
- type RuntimeCall: Parameter
- + Dispatchable<
- RuntimeOrigin = <Self as Config>::RuntimeOrigin,
- PostInfo = PostDispatchInfo,
- > + UnfilteredDispatchable<RuntimeOrigin = <Self as system::Config>::RuntimeOrigin>
- + GetDispatchInfo
- + From<system::Call<Self>>;
-
- /// The maximum weight that may be scheduled per block for any dispatchables.
- #[pallet::constant]
- type MaximumWeight: Get<Weight>;
-
- /// Required origin to schedule or cancel calls.
- type ScheduleOrigin: EnsureOrigin<
- <Self as system::Config>::RuntimeOrigin,
- Success = ScheduledEnsureOriginSuccess<Self::AccountId>,
- >;
-
- /// Compare the privileges of origins.
- ///
- /// This will be used when canceling a task, to ensure that the origin that tries
- /// to cancel has greater or equal privileges as the origin that created the scheduled task.
- ///
- /// For simplicity the [`EqualPrivilegeOnly`](frame_support::traits::EqualPrivilegeOnly) can
- /// be used. This will only check if two given origins are equal.
- type OriginPrivilegeCmp: PrivilegeCmp<Self::PalletsOrigin>;
-
- /// The maximum number of scheduled calls in the queue for a single block.
- #[pallet::constant]
- type MaxScheduledPerBlock: Get<u32>;
-
- /// Weight information for extrinsics in this pallet.
- type WeightInfo: WeightInfo;
-
- /// The preimage provider with which we look up call hashes to get the call.
- type Preimages: SchedulerPreimages<Self>;
-
- /// The helper type used for custom transaction fee logic.
- type CallExecutor: DispatchCall<Self, H160>;
-
- /// Required origin to set/change calls' priority.
- type PrioritySetOrigin: EnsureOrigin<<Self as system::Config>::RuntimeOrigin>;
- }
-
- /// It contains the block number from which we should service tasks.
- /// It's used for delaying the servicing of future blocks' agendas if we had overweight tasks.
- #[pallet::storage]
- pub type IncompleteSince<T: Config> = StorageValue<_, T::BlockNumber>;
-
- /// Items to be executed, indexed by the block number that they should be executed on.
- #[pallet::storage]
- pub type Agenda<T: Config> =
- StorageMap<_, Twox64Concat, T::BlockNumber, BlockAgenda<T>, ValueQuery>;
-
- /// Lookup from a name to the block number and index of the task.
- #[pallet::storage]
- pub(crate) type Lookup<T: Config> =
- StorageMap<_, Twox64Concat, TaskName, TaskAddress<T::BlockNumber>>;
-
- /// Events type.
- #[pallet::event]
- #[pallet::generate_deposit(pub(super) fn deposit_event)]
- pub enum Event<T: Config> {
- /// Scheduled some task.
- Scheduled {
- /// The block number in which the scheduled task should be executed.
- when: T::BlockNumber,
-
- /// The index of the block's agenda slot.
- index: u32,
- },
- /// Canceled some task.
- Canceled {
- /// The block number in which the canceled task has been.
- when: T::BlockNumber,
-
- /// The index of the block's agenda slot that had become available.
- index: u32,
- },
- /// Dispatched some task.
- Dispatched {
- /// The task's address - the block number and the block's agenda index.
- task: TaskAddress<T::BlockNumber>,
-
- /// The task's name if it is not anonymous.
- id: Option<[u8; 32]>,
-
- /// The task's execution result.
- result: DispatchResult,
- },
- /// Scheduled task's priority has changed
- PriorityChanged {
- /// The task's address - the block number and the block's agenda index.
- task: TaskAddress<T::BlockNumber>,
-
- /// The new priority of the task.
- priority: schedule::Priority,
- },
- /// The call for the provided hash was not found so the task has been aborted.
- CallUnavailable {
- /// The task's address - the block number and the block's agenda index.
- task: TaskAddress<T::BlockNumber>,
-
- /// The task's name if it is not anonymous.
- id: Option<[u8; 32]>,
- },
- /// The given task can never be executed since it is overweight.
- PermanentlyOverweight {
- /// The task's address - the block number and the block's agenda index.
- task: TaskAddress<T::BlockNumber>,
-
- /// The task's name if it is not anonymous.
- id: Option<[u8; 32]>,
- },
- }
-
- #[pallet::error]
- pub enum Error<T> {
- /// Failed to schedule a call
- FailedToSchedule,
- /// There is no place for a new task in the agenda
- AgendaIsExhausted,
- /// Scheduled call is corrupted
- ScheduledCallCorrupted,
- /// Scheduled call preimage is not found
- PreimageNotFound,
- /// Scheduled call is too big
- TooBigScheduledCall,
- /// Cannot find the scheduled call.
- NotFound,
- /// Given target block number is in the past.
- TargetBlockNumberInPast,
- /// Attempt to use a non-named function on a named task.
- Named,
- }
-
- #[pallet::hooks]
- impl<T: Config> Hooks<BlockNumberFor<T>> for Pallet<T> {
- /// Execute the scheduled calls
- fn on_initialize(now: T::BlockNumber) -> Weight {
- let mut weight_counter = WeightCounter {
- used: Weight::zero(),
- limit: T::MaximumWeight::get(),
- };
- Self::service_agendas(&mut weight_counter, now, u32::max_value());
- weight_counter.used
- }
- }
-
- #[pallet::call]
- impl<T: Config> Pallet<T> {
- /// Anonymously schedule a task.
- ///
- /// Only `T::ScheduleOrigin` is allowed to schedule a task.
- /// Only `T::PrioritySetOrigin` is allowed to set the task's priority.
- #[pallet::call_index(0)]
- #[pallet::weight(<T as Config>::WeightInfo::schedule(T::MaxScheduledPerBlock::get()))]
- pub fn schedule(
- origin: OriginFor<T>,
- when: T::BlockNumber,
- maybe_periodic: Option<schedule::Period<T::BlockNumber>>,
- priority: Option<schedule::Priority>,
- call: Box<<T as Config>::RuntimeCall>,
- ) -> DispatchResult {
- T::ScheduleOrigin::ensure_origin(origin.clone())?;
-
- if priority.is_some() {
- T::PrioritySetOrigin::ensure_origin(origin.clone())?;
- }
-
- let origin = <T as Config>::RuntimeOrigin::from(origin);
- Self::do_schedule(
- DispatchTime::At(when),
- maybe_periodic,
- priority.unwrap_or(LOWEST_PRIORITY),
- origin.caller().clone(),
- <ScheduledCall<T>>::new(*call)?,
- )?;
- Ok(())
- }
-
- /// Cancel an anonymously scheduled task.
- ///
- /// The `T::OriginPrivilegeCmp` decides whether the given origin is allowed to cancel the task or not.
- #[pallet::call_index(1)]
- #[pallet::weight(<T as Config>::WeightInfo::cancel(T::MaxScheduledPerBlock::get()))]
- pub fn cancel(origin: OriginFor<T>, when: T::BlockNumber, index: u32) -> DispatchResult {
- T::ScheduleOrigin::ensure_origin(origin.clone())?;
- let origin = <T as Config>::RuntimeOrigin::from(origin);
- Self::do_cancel(Some(origin.caller().clone()), (when, index))?;
- Ok(())
- }
-
- /// Schedule a named task.
- ///
- /// Only `T::ScheduleOrigin` is allowed to schedule a task.
- /// Only `T::PrioritySetOrigin` is allowed to set the task's priority.
- #[pallet::call_index(2)]
- #[pallet::weight(<T as Config>::WeightInfo::schedule_named(T::MaxScheduledPerBlock::get()))]
- pub fn schedule_named(
- origin: OriginFor<T>,
- id: TaskName,
- when: T::BlockNumber,
- maybe_periodic: Option<schedule::Period<T::BlockNumber>>,
- priority: Option<schedule::Priority>,
- call: Box<<T as Config>::RuntimeCall>,
- ) -> DispatchResult {
- T::ScheduleOrigin::ensure_origin(origin.clone())?;
-
- if priority.is_some() {
- T::PrioritySetOrigin::ensure_origin(origin.clone())?;
- }
-
- let origin = <T as Config>::RuntimeOrigin::from(origin);
- Self::do_schedule_named(
- id,
- DispatchTime::At(when),
- maybe_periodic,
- priority.unwrap_or(LOWEST_PRIORITY),
- origin.caller().clone(),
- <ScheduledCall<T>>::new(*call)?,
- )?;
- Ok(())
- }
-
- /// Cancel a named scheduled task.
- ///
- /// The `T::OriginPrivilegeCmp` decides whether the given origin is allowed to cancel the task or not.
- #[pallet::call_index(3)]
- #[pallet::weight(<T as Config>::WeightInfo::cancel_named(T::MaxScheduledPerBlock::get()))]
- pub fn cancel_named(origin: OriginFor<T>, id: TaskName) -> DispatchResult {
- T::ScheduleOrigin::ensure_origin(origin.clone())?;
- let origin = <T as Config>::RuntimeOrigin::from(origin);
- Self::do_cancel_named(Some(origin.caller().clone()), id)?;
- Ok(())
- }
-
- /// Anonymously schedule a task after a delay.
- ///
- /// # <weight>
- /// Same as [`schedule`].
- /// # </weight>
- #[pallet::call_index(4)]
- #[pallet::weight(<T as Config>::WeightInfo::schedule(T::MaxScheduledPerBlock::get()))]
- pub fn schedule_after(
- origin: OriginFor<T>,
- after: T::BlockNumber,
- maybe_periodic: Option<schedule::Period<T::BlockNumber>>,
- priority: Option<schedule::Priority>,
- call: Box<<T as Config>::RuntimeCall>,
- ) -> DispatchResult {
- T::ScheduleOrigin::ensure_origin(origin.clone())?;
-
- if priority.is_some() {
- T::PrioritySetOrigin::ensure_origin(origin.clone())?;
- }
-
- let origin = <T as Config>::RuntimeOrigin::from(origin);
- Self::do_schedule(
- DispatchTime::After(after),
- maybe_periodic,
- priority.unwrap_or(LOWEST_PRIORITY),
- origin.caller().clone(),
- <ScheduledCall<T>>::new(*call)?,
- )?;
- Ok(())
- }
-
- /// Schedule a named task after a delay.
- ///
- /// Only `T::ScheduleOrigin` is allowed to schedule a task.
- /// Only `T::PrioritySetOrigin` is allowed to set the task's priority.
- ///
- /// # <weight>
- /// Same as [`schedule_named`](Self::schedule_named).
- /// # </weight>
- #[pallet::call_index(5)]
- #[pallet::weight(<T as Config>::WeightInfo::schedule_named(T::MaxScheduledPerBlock::get()))]
- pub fn schedule_named_after(
- origin: OriginFor<T>,
- id: TaskName,
- after: T::BlockNumber,
- maybe_periodic: Option<schedule::Period<T::BlockNumber>>,
- priority: Option<schedule::Priority>,
- call: Box<<T as Config>::RuntimeCall>,
- ) -> DispatchResult {
- T::ScheduleOrigin::ensure_origin(origin.clone())?;
-
- if priority.is_some() {
- T::PrioritySetOrigin::ensure_origin(origin.clone())?;
- }
-
- let origin = <T as Config>::RuntimeOrigin::from(origin);
- Self::do_schedule_named(
- id,
- DispatchTime::After(after),
- maybe_periodic,
- priority.unwrap_or(LOWEST_PRIORITY),
- origin.caller().clone(),
- <ScheduledCall<T>>::new(*call)?,
- )?;
- Ok(())
- }
-
- /// Change a named task's priority.
- ///
- /// Only the `T::PrioritySetOrigin` is allowed to change the task's priority.
- #[pallet::call_index(6)]
- #[pallet::weight(<T as Config>::WeightInfo::change_named_priority(T::MaxScheduledPerBlock::get()))]
- pub fn change_named_priority(
- origin: OriginFor<T>,
- id: TaskName,
- priority: schedule::Priority,
- ) -> DispatchResult {
- T::PrioritySetOrigin::ensure_origin(origin.clone())?;
- let origin = <T as Config>::RuntimeOrigin::from(origin);
- Self::do_change_named_priority(origin.caller().clone(), id, priority)
- }
- }
-}
-
-impl<T: Config> Pallet<T> {
- /// Converts the `DispatchTime` to the `BlockNumber`.
- ///
- /// Returns an error if the block number is in the past.
- fn resolve_time(when: DispatchTime<T::BlockNumber>) -> Result<T::BlockNumber, DispatchError> {
- let now = frame_system::Pallet::<T>::block_number();
-
- let when = match when {
- DispatchTime::At(x) => x,
- // The current block has already completed it's scheduled tasks, so
- // Schedule the task at lest one block after this current block.
- DispatchTime::After(x) => now.saturating_add(x).saturating_add(One::one()),
- };
-
- if when <= now {
- return Err(Error::<T>::TargetBlockNumberInPast.into());
- }
-
- Ok(when)
- }
-
- /// Places the mandatory task.
- ///
- /// It will try to place the task into the block pointed by the `when` parameter.
- ///
- /// If the block has no room for a task,
- /// the function will search for a future block that can accommodate the task.
- fn mandatory_place_task(when: T::BlockNumber, what: ScheduledOf<T>) {
- Self::place_task(when, what, true).expect("mandatory place task always succeeds; qed");
- }
-
- /// Tries to place a task `what` into the given block `when`.
- ///
- /// Returns an error if the block has no room for the task.
- fn try_place_task(
- when: T::BlockNumber,
- what: ScheduledOf<T>,
- ) -> Result<TaskAddress<T::BlockNumber>, DispatchError> {
- Self::place_task(when, what, false)
- }
-
- /// If `is_mandatory` is true, the function behaves like [`mandatory_place_task`](Self::mandatory_place_task);
- /// otherwise it acts like [`try_place_task`](Self::try_place_task).
- ///
- /// The function also updates the `Lookup` storage.
- fn place_task(
- mut when: T::BlockNumber,
- what: ScheduledOf<T>,
- is_mandatory: bool,
- ) -> Result<TaskAddress<T::BlockNumber>, DispatchError> {
- let maybe_name = what.maybe_id;
- let index = Self::push_to_agenda(&mut when, what, is_mandatory)?;
- let address = (when, index);
- if let Some(name) = maybe_name {
- Lookup::<T>::insert(name, address)
- }
- Self::deposit_event(Event::Scheduled {
- when: address.0,
- index: address.1,
- });
- Ok(address)
- }
-
- /// Pushes the scheduled task into the block's agenda.
- ///
- /// If `is_mandatory` is true, it searches for a block with a free slot for the given task.
- ///
- /// If `is_mandatory` is false and there is no free slot, the function returns an error.
- fn push_to_agenda(
- when: &mut T::BlockNumber,
- mut what: ScheduledOf<T>,
- is_mandatory: bool,
- ) -> Result<u32, DispatchError> {
- let mut agenda;
-
- let index = loop {
- agenda = Agenda::<T>::get(*when);
-
- match agenda.try_push(what) {
- Ok(index) => break index,
- Err(returned_what) if is_mandatory => {
- what = returned_what;
- when.saturating_inc();
- }
- Err(_) => return Err(<Error<T>>::AgendaIsExhausted.into()),
- }
- };
-
- Agenda::<T>::insert(when, agenda);
- Ok(index)
- }
-
- fn do_schedule(
- when: DispatchTime<T::BlockNumber>,
- maybe_periodic: Option<schedule::Period<T::BlockNumber>>,
- priority: schedule::Priority,
- origin: T::PalletsOrigin,
- call: ScheduledCall<T>,
- ) -> Result<TaskAddress<T::BlockNumber>, DispatchError> {
- let when = Self::resolve_time(when)?;
-
- // sanitize maybe_periodic
- let maybe_periodic = maybe_periodic
- .filter(|p| p.1 > 1 && !p.0.is_zero())
- // Remove one from the number of repetitions since we will schedule one now.
- .map(|(p, c)| (p, c - 1));
- let task = Scheduled {
- maybe_id: None,
- priority,
- call,
- maybe_periodic,
- origin,
- _phantom: PhantomData,
- };
- Self::try_place_task(when, task)
- }
-
- fn do_cancel(
- origin: Option<T::PalletsOrigin>,
- (when, index): TaskAddress<T::BlockNumber>,
- ) -> Result<(), DispatchError> {
- let scheduled = Agenda::<T>::try_mutate(
- when,
- |agenda| -> Result<Option<Scheduled<_, _, _, _, _>>, DispatchError> {
- let scheduled = match agenda.get(index) {
- Some(scheduled) => scheduled,
- None => return Ok(None),
- };
-
- if let Some(ref o) = origin {
- if matches!(
- T::OriginPrivilegeCmp::cmp_privilege(o, &scheduled.origin),
- Some(Ordering::Less) | None
- ) {
- return Err(BadOrigin.into());
- }
- }
-
- Ok(agenda.take(index))
- },
- )?;
- if let Some(s) = scheduled {
- T::Preimages::drop(&s.call);
-
- if let Some(id) = s.maybe_id {
- Lookup::<T>::remove(id);
- }
- Self::deposit_event(Event::Canceled { when, index });
- Ok(())
- } else {
- Err(Error::<T>::NotFound.into())
- }
- }
-
- fn do_schedule_named(
- id: TaskName,
- when: DispatchTime<T::BlockNumber>,
- maybe_periodic: Option<schedule::Period<T::BlockNumber>>,
- priority: schedule::Priority,
- origin: T::PalletsOrigin,
- call: ScheduledCall<T>,
- ) -> Result<TaskAddress<T::BlockNumber>, DispatchError> {
- // ensure id it is unique
- if Lookup::<T>::contains_key(id) {
- return Err(Error::<T>::FailedToSchedule.into());
- }
-
- let when = Self::resolve_time(when)?;
-
- // sanitize maybe_periodic
- let maybe_periodic = maybe_periodic
- .filter(|p| p.1 > 1 && !p.0.is_zero())
- // Remove one from the number of repetitions since we will schedule one now.
- .map(|(p, c)| (p, c - 1));
-
- let task = Scheduled {
- maybe_id: Some(id),
- priority,
- call,
- maybe_periodic,
- origin,
- _phantom: Default::default(),
- };
- Self::try_place_task(when, task)
- }
-
- fn do_cancel_named(origin: Option<T::PalletsOrigin>, id: TaskName) -> DispatchResult {
- Lookup::<T>::try_mutate_exists(id, |lookup| -> DispatchResult {
- if let Some((when, index)) = lookup.take() {
- Agenda::<T>::try_mutate(when, |agenda| -> DispatchResult {
- let scheduled = match agenda.get(index) {
- Some(scheduled) => scheduled,
- None => return Ok(()),
- };
-
- if let Some(ref o) = origin {
- if matches!(
- T::OriginPrivilegeCmp::cmp_privilege(o, &scheduled.origin),
- Some(Ordering::Less) | None
- ) {
- return Err(BadOrigin.into());
- }
- T::Preimages::drop(&scheduled.call);
- }
-
- agenda.take(index);
-
- Ok(())
- })?;
- Self::deposit_event(Event::Canceled { when, index });
- Ok(())
- } else {
- Err(Error::<T>::NotFound.into())
- }
- })
- }
-
- fn do_change_named_priority(
- origin: T::PalletsOrigin,
- id: TaskName,
- priority: schedule::Priority,
- ) -> DispatchResult {
- match Lookup::<T>::get(id) {
- Some((when, index)) => Agenda::<T>::try_mutate(when, |agenda| {
- let scheduled = match agenda.get_mut(index) {
- Some(scheduled) => scheduled,
- None => return Ok(()),
- };
-
- if matches!(
- T::OriginPrivilegeCmp::cmp_privilege(&origin, &scheduled.origin),
- Some(Ordering::Less) | None
- ) {
- return Err(BadOrigin.into());
- }
-
- scheduled.priority = priority;
- Self::deposit_event(Event::PriorityChanged {
- task: (when, index),
- priority,
- });
-
- Ok(())
- }),
- None => Err(Error::<T>::NotFound.into()),
- }
- }
-}
-
-enum ServiceTaskError {
- /// Could not be executed due to missing preimage.
- Unavailable,
- /// Could not be executed due to weight limitations.
- Overweight,
-}
-use ServiceTaskError::*;
-
-/// A Scheduler-Runtime interface for finer payment handling.
-pub trait DispatchCall<T: frame_system::Config + Config, SelfContainedSignedInfo> {
- /// Resolve the call dispatch, including any post-dispatch operations.
- fn dispatch_call(
- signer: Option<T::AccountId>,
- function: <T as Config>::RuntimeCall,
- ) -> Result<
- Result<PostDispatchInfo, DispatchErrorWithPostInfo<PostDispatchInfo>>,
- TransactionValidityError,
- >;
-}
-
-impl<T: Config> Pallet<T> {
- /// Service up to `max` agendas queue starting from earliest incompletely executed agenda.
- fn service_agendas(weight: &mut WeightCounter, now: T::BlockNumber, max: u32) {
- if !weight.check_accrue(T::WeightInfo::service_agendas_base()) {
- return;
- }
-
- let mut incomplete_since = now + One::one();
- let mut when = IncompleteSince::<T>::take().unwrap_or(now);
- let mut executed = 0;
-
- let max_items = T::MaxScheduledPerBlock::get();
- let mut count_down = max;
- let service_agenda_base_weight = T::WeightInfo::service_agenda_base(max_items);
- while count_down > 0 && when <= now && weight.can_accrue(service_agenda_base_weight) {
- if !Self::service_agenda(weight, &mut executed, now, when, u32::max_value()) {
- incomplete_since = incomplete_since.min(when);
- }
- when.saturating_inc();
- count_down.saturating_dec();
- }
- incomplete_since = incomplete_since.min(when);
- if incomplete_since <= now {
- IncompleteSince::<T>::put(incomplete_since);
- }
- }
-
- /// Returns `true` if the agenda was fully completed, `false` if it should be revisited at a
- /// later block.
- fn service_agenda(
- weight: &mut WeightCounter,
- executed: &mut u32,
- now: T::BlockNumber,
- when: T::BlockNumber,
- max: u32,
- ) -> bool {
- let mut agenda = Agenda::<T>::get(when);
- let mut ordered = agenda
- .iter()
- .enumerate()
- .filter_map(|(index, maybe_item)| {
- maybe_item
- .as_ref()
- .map(|item| (index as u32, item.priority))
- })
- .collect::<Vec<_>>();
- ordered.sort_by_key(|k| k.1);
- let within_limit =
- weight.check_accrue(T::WeightInfo::service_agenda_base(ordered.len() as u32));
- debug_assert!(
- within_limit,
- "weight limit should have been checked in advance"
- );
-
- // Items which we know can be executed and have postponed for execution in a later block.
- let mut postponed = (ordered.len() as u32).saturating_sub(max);
- // Items which we don't know can ever be executed.
- let mut dropped = 0;
-
- for (agenda_index, _) in ordered.into_iter().take(max as usize) {
- let task = match agenda.take(agenda_index).take() {
- None => continue,
- Some(t) => t,
- };
- let base_weight = MarginalWeightInfo::<T>::service_task(
- task.call.lookup_len().map(|x| x as usize),
- task.maybe_id.is_some(),
- task.maybe_periodic.is_some(),
- );
- if !weight.can_accrue(base_weight) {
- postponed += 1;
- break;
- }
- let result = Self::service_task(weight, now, when, agenda_index, *executed == 0, task);
- match result {
- Err((Unavailable, slot)) => {
- dropped += 1;
- agenda.set_slot(agenda_index, slot);
- }
- Err((Overweight, slot)) => {
- postponed += 1;
- agenda.set_slot(agenda_index, slot);
- }
- Ok(()) => {
- *executed += 1;
- }
- };
- }
- if postponed > 0 || dropped > 0 {
- Agenda::<T>::insert(when, agenda);
- } else {
- Agenda::<T>::remove(when);
- }
- postponed == 0
- }
-
- /// Service (i.e. execute) the given task, being careful not to overflow the `weight` counter.
- ///
- /// This involves:
- /// - removing and potentially replacing the `Lookup` entry for the task.
- /// - realizing the task's call which can include a preimage lookup.
- /// - Rescheduling the task for execution in a later agenda if periodic.
- fn service_task(
- weight: &mut WeightCounter,
- now: T::BlockNumber,
- when: T::BlockNumber,
- agenda_index: u32,
- is_first: bool,
- mut task: ScheduledOf<T>,
- ) -> Result<(), (ServiceTaskError, Option<ScheduledOf<T>>)> {
- let (call, lookup_len) = match T::Preimages::peek(&task.call) {
- Ok(c) => c,
- Err(_) => {
- if let Some(ref id) = task.maybe_id {
- Lookup::<T>::remove(id);
- }
-
- return Err((Unavailable, Some(task)));
- }
- };
-
- weight.check_accrue(MarginalWeightInfo::<T>::service_task(
- lookup_len.map(|x| x as usize),
- task.maybe_id.is_some(),
- task.maybe_periodic.is_some(),
- ));
-
- match Self::execute_dispatch(weight, task.origin.clone(), call) {
- Err(Unavailable) => {
- debug_assert!(false, "Checked to exist with `peek`");
-
- if let Some(ref id) = task.maybe_id {
- Lookup::<T>::remove(id);
- }
-
- Self::deposit_event(Event::CallUnavailable {
- task: (when, agenda_index),
- id: task.maybe_id,
- });
- Err((Unavailable, Some(task)))
- }
- Err(Overweight) if is_first && !Self::is_runtime_upgraded() => {
- T::Preimages::drop(&task.call);
-
- if let Some(ref id) = task.maybe_id {
- Lookup::<T>::remove(id);
- }
-
- Self::deposit_event(Event::PermanentlyOverweight {
- task: (when, agenda_index),
- id: task.maybe_id,
- });
- Err((Unavailable, Some(task)))
- }
- Err(Overweight) => {
- // Preserve Lookup -- the task will be postponed.
- Err((Overweight, Some(task)))
- }
- Ok(result) => {
- Self::deposit_event(Event::Dispatched {
- task: (when, agenda_index),
- id: task.maybe_id,
- result,
- });
-
- let is_canceled = task
- .maybe_id
- .as_ref()
- .map(|id| !Lookup::<T>::contains_key(id))
- .unwrap_or(false);
-
- match &task.maybe_periodic {
- &Some((period, count)) if !is_canceled => {
- if count > 1 {
- task.maybe_periodic = Some((period, count - 1));
- } else {
- task.maybe_periodic = None;
- }
- let wake = now.saturating_add(period);
- Self::mandatory_place_task(wake, task);
- }
- _ => {
- if let Some(ref id) = task.maybe_id {
- Lookup::<T>::remove(id);
- }
-
- T::Preimages::drop(&task.call)
- }
- }
- Ok(())
- }
- }
- }
-
- fn is_runtime_upgraded() -> bool {
- let last = system::LastRuntimeUpgrade::<T>::get();
- let current = T::Version::get();
-
- last.map(|v| v.was_upgraded(¤t)).unwrap_or(true)
- }
-
- /// Make a dispatch to the given `call` from the given `origin`, ensuring that the `weight`
- /// counter does not exceed its limit and that it is counted accurately (e.g. accounted using
- /// post info if available).
- ///
- /// NOTE: Only the weight for this function will be counted (origin lookup, dispatch and the
- /// call itself).
- fn execute_dispatch(
- weight: &mut WeightCounter,
- origin: T::PalletsOrigin,
- call: <T as Config>::RuntimeCall,
- ) -> Result<DispatchResult, ServiceTaskError> {
- let dispatch_origin: <T as Config>::RuntimeOrigin = origin.into();
- let base_weight = match dispatch_origin.clone().as_signed() {
- Some(_) => T::WeightInfo::execute_dispatch_signed(),
- _ => T::WeightInfo::execute_dispatch_unsigned(),
- };
- let call_weight = call.get_dispatch_info().weight;
- // We only allow a scheduled call if it cannot push the weight past the limit.
- let max_weight = base_weight.saturating_add(call_weight);
-
- if !weight.can_accrue(max_weight) {
- return Err(Overweight);
- }
-
- let ensured_origin = T::ScheduleOrigin::ensure_origin(dispatch_origin.into());
-
- let r = match ensured_origin {
- Ok(ScheduledEnsureOriginSuccess::Root) => {
- Ok(call.dispatch_bypass_filter(frame_system::RawOrigin::Root.into()))
- }
- Ok(ScheduledEnsureOriginSuccess::Signed(sender)) => {
- // Execute transaction via chain default pipeline
- // That means dispatch will be processed like any user's extrinsic e.g. transaction fees will be taken
- T::CallExecutor::dispatch_call(Some(sender), call)
- }
- Err(e) => Ok(Err(e.into())),
- };
-
- let (maybe_actual_call_weight, result) = match r {
- Ok(result) => match result {
- Ok(post_info) => (post_info.actual_weight, Ok(())),
- Err(error_and_info) => (
- error_and_info.post_info.actual_weight,
- Err(error_and_info.error),
- ),
- },
- Err(_) => {
- log::error!(
- target: "runtime::scheduler",
- "Warning: Scheduler has failed to execute a post-dispatch transaction. \
- This block might have become invalid.");
- (None, Err(DispatchError::CannotLookup))
- }
- };
- let call_weight = maybe_actual_call_weight.unwrap_or(call_weight);
- weight.check_accrue(base_weight);
- weight.check_accrue(call_weight);
- Ok(result)
- }
-}
pallets/scheduler-v2/src/mock.rsdiffbeforeafterboth--- a/pallets/scheduler-v2/src/mock.rs
+++ /dev/null
@@ -1,292 +0,0 @@
-// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
-// This file is part of Unique Network.
-
-// Unique Network is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// Unique Network is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-
-// Original license:
-// This file is part of Substrate.
-
-// Copyright (C) 2017-2022 Parity Technologies (UK) Ltd.
-// SPDX-License-Identifier: Apache-2.0
-
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//! # Scheduler test environment.
-#![allow(deprecated)]
-
-use super::*;
-
-use crate as scheduler;
-use frame_support::{
- ord_parameter_types, parameter_types,
- traits::{ConstU32, ConstU64, Contains, EqualPrivilegeOnly, OnFinalize, OnInitialize},
- weights::constants::RocksDbWeight,
-};
-use frame_system::{EnsureRoot, RawOrigin};
-use sp_core::H256;
-use sp_runtime::{
- testing::Header,
- traits::{BlakeTwo256, IdentityLookup},
- Perbill,
-};
-
-// Logger module to track execution.
-#[frame_support::pallet]
-pub mod logger {
- use super::{OriginCaller, OriginTrait};
- use frame_support::{pallet_prelude::*, parameter_types};
- use frame_system::pallet_prelude::*;
-
- parameter_types! {
- static Log: Vec<(OriginCaller, u32)> = Vec::new();
- }
- pub fn log() -> Vec<(OriginCaller, u32)> {
- Log::get().clone()
- }
-
- #[pallet::pallet]
- pub struct Pallet<T>(PhantomData<T>);
-
- #[pallet::hooks]
- impl<T: Config> Hooks<BlockNumberFor<T>> for Pallet<T> {}
-
- #[pallet::config]
- pub trait Config: frame_system::Config {
- type RuntimeEvent: From<Event<Self>> + IsType<<Self as frame_system::Config>::RuntimeEvent>;
- }
-
- #[pallet::event]
- #[pallet::generate_deposit(pub(super) fn deposit_event)]
- pub enum Event<T: Config> {
- Logged(u32, Weight),
- }
-
- #[pallet::call]
- impl<T: Config> Pallet<T>
- where
- <T as frame_system::Config>::RuntimeOrigin: OriginTrait<PalletsOrigin = OriginCaller>,
- {
- #[pallet::call_index(0)]
- #[pallet::weight(*weight)]
- pub fn log(origin: OriginFor<T>, i: u32, weight: Weight) -> DispatchResult {
- Self::deposit_event(Event::Logged(i, weight));
- Log::mutate(|log| {
- log.push((origin.caller().clone(), i));
- });
- Ok(())
- }
-
- #[pallet::call_index(1)]
- #[pallet::weight(*weight)]
- pub fn log_without_filter(origin: OriginFor<T>, i: u32, weight: Weight) -> DispatchResult {
- Self::deposit_event(Event::Logged(i, weight));
- Log::mutate(|log| {
- log.push((origin.caller().clone(), i));
- });
- Ok(())
- }
- }
-}
-
-type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic<Test>;
-type Block = frame_system::mocking::MockBlock<Test>;
-
-frame_support::construct_runtime!(
- pub enum Test where
- Block = Block,
- NodeBlock = Block,
- UncheckedExtrinsic = UncheckedExtrinsic,
- {
- System: frame_system::{Pallet, Call, Config, Storage, Event<T>},
- Logger: logger::{Pallet, Call, Event<T>},
- Scheduler: scheduler::{Pallet, Call, Storage, Event<T>},
- }
-);
-
-// Scheduler must dispatch with root and no filter, this tests base filter is indeed not used.
-pub struct BaseFilter;
-impl Contains<RuntimeCall> for BaseFilter {
- fn contains(call: &RuntimeCall) -> bool {
- !matches!(call, RuntimeCall::Logger(LoggerCall::log { .. }))
- }
-}
-
-parameter_types! {
- pub BlockWeights: frame_system::limits::BlockWeights =
- frame_system::limits::BlockWeights::simple_max(
- Weight::from_ref_time(2_000_000_000_000).set_proof_size(u64::MAX)
- );
-}
-impl system::Config for Test {
- type BaseCallFilter = BaseFilter;
- type BlockWeights = BlockWeights;
- type BlockLength = ();
- type DbWeight = RocksDbWeight;
- type RuntimeOrigin = RuntimeOrigin;
- type RuntimeCall = RuntimeCall;
- type Index = u64;
- type BlockNumber = u64;
- type Hash = H256;
- type Hashing = BlakeTwo256;
- type AccountId = u64;
- type Lookup = IdentityLookup<Self::AccountId>;
- type Header = Header;
- type RuntimeEvent = RuntimeEvent;
- type BlockHashCount = ConstU64<250>;
- type Version = ();
- type PalletInfo = PalletInfo;
- type AccountData = ();
- type OnNewAccount = ();
- type OnKilledAccount = ();
- type SystemWeightInfo = ();
- type SS58Prefix = ();
- type OnSetCode = ();
- type MaxConsumers = ConstU32<16>;
-}
-impl logger::Config for Test {
- type RuntimeEvent = RuntimeEvent;
-}
-ord_parameter_types! {
- pub const One: u64 = 1;
-}
-
-pub struct TestWeightInfo;
-impl WeightInfo for TestWeightInfo {
- fn service_agendas_base() -> Weight {
- Weight::from_ref_time(0b0000_0001)
- }
- fn service_agenda_base(i: u32) -> Weight {
- Weight::from_ref_time((i << 8) as u64 + 0b0000_0010)
- }
- fn service_task_base() -> Weight {
- Weight::from_ref_time(0b0000_0100)
- }
- fn service_task_periodic() -> Weight {
- Weight::from_ref_time(0b0000_1100)
- }
- fn service_task_named() -> Weight {
- Weight::from_ref_time(0b0001_0100)
- }
- // fn service_task_fetched(s: u32) -> Weight {
- // Weight::from_ref_time((s << 8) as u64 + 0b0010_0100)
- // }
- fn execute_dispatch_signed() -> Weight {
- Weight::from_ref_time(0b0100_0000)
- }
- fn execute_dispatch_unsigned() -> Weight {
- Weight::from_ref_time(0b1000_0000)
- }
- fn schedule(_s: u32) -> Weight {
- Weight::from_ref_time(50)
- }
- fn cancel(_s: u32) -> Weight {
- Weight::from_ref_time(50)
- }
- fn schedule_named(_s: u32) -> Weight {
- Weight::from_ref_time(50)
- }
- fn cancel_named(_s: u32) -> Weight {
- Weight::from_ref_time(50)
- }
- fn change_named_priority(_s: u32) -> Weight {
- Weight::from_ref_time(50)
- }
-}
-parameter_types! {
- pub MaximumSchedulerWeight: Weight = Perbill::from_percent(80) *
- BlockWeights::get().max_block;
-}
-
-pub struct EnsureSignedOneOrRoot;
-impl<O: Into<Result<RawOrigin<u64>, O>> + From<RawOrigin<u64>>> EnsureOrigin<O>
- for EnsureSignedOneOrRoot
-{
- type Success = ScheduledEnsureOriginSuccess<u64>;
- fn try_origin(o: O) -> Result<Self::Success, O> {
- o.into().and_then(|o| match o {
- RawOrigin::Root => Ok(ScheduledEnsureOriginSuccess::Root),
- RawOrigin::Signed(1) => Ok(ScheduledEnsureOriginSuccess::Signed(1)),
- r => Err(O::from(r)),
- })
- }
- #[cfg(feature = "runtime-benchmarks")]
- fn try_successful_origin() -> Result<O, ()> {
- Ok(O::from(RawOrigin::Root))
- }
-}
-
-pub struct Executor;
-impl DispatchCall<Test, sp_core::H160> for Executor {
- fn dispatch_call(
- signer: Option<u64>,
- function: RuntimeCall,
- ) -> Result<
- Result<PostDispatchInfo, DispatchErrorWithPostInfo<PostDispatchInfo>>,
- TransactionValidityError,
- > {
- let origin = match signer {
- Some(who) => RuntimeOrigin::signed(who),
- None => RuntimeOrigin::none(),
- };
- Ok(function.dispatch(origin))
- }
-}
-
-impl Config for Test {
- type RuntimeEvent = RuntimeEvent;
- type RuntimeOrigin = RuntimeOrigin;
- type PalletsOrigin = OriginCaller;
- type RuntimeCall = RuntimeCall;
- type MaximumWeight = MaximumSchedulerWeight;
- type ScheduleOrigin = EnsureSignedOneOrRoot;
- type MaxScheduledPerBlock = ConstU32<10>;
- type WeightInfo = TestWeightInfo;
- type OriginPrivilegeCmp = EqualPrivilegeOnly;
- type Preimages = ();
- type PrioritySetOrigin = EnsureRoot<u64>;
- type CallExecutor = Executor;
-}
-
-pub type LoggerCall = logger::Call<Test>;
-
-pub type SystemCall = frame_system::Call<Test>;
-
-pub fn new_test_ext() -> sp_io::TestExternalities {
- let t = system::GenesisConfig::default()
- .build_storage::<Test>()
- .unwrap();
- t.into()
-}
-
-pub fn run_to_block(n: u64) {
- while System::block_number() < n {
- Scheduler::on_finalize(System::block_number());
- System::set_block_number(System::block_number() + 1);
- Scheduler::on_initialize(System::block_number());
- }
-}
-
-pub fn root() -> OriginCaller {
- system::RawOrigin::Root.into()
-}
pallets/scheduler-v2/src/tests.rsdiffbeforeafterboth--- a/pallets/scheduler-v2/src/tests.rs
+++ /dev/null
@@ -1,901 +0,0 @@
-// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
-// This file is part of Unique Network.
-
-// Unique Network is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// Unique Network is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-
-// Original license:
-// This file is part of Substrate.
-
-// Copyright (C) 2017-2022 Parity Technologies (UK) Ltd.
-// SPDX-License-Identifier: Apache-2.0
-
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//! # Scheduler tests.
-#![allow(deprecated)]
-
-use super::*;
-use crate::mock::{
- logger, new_test_ext, root, run_to_block, LoggerCall, RuntimeCall, Scheduler, Test, *,
-};
-use frame_support::{
- assert_noop, assert_ok,
- traits::{Contains, OnInitialize},
- assert_err,
-};
-
-#[test]
-fn basic_scheduling_works() {
- new_test_ext().execute_with(|| {
- let call = RuntimeCall::Logger(LoggerCall::log {
- i: 42,
- weight: Weight::from_ref_time(10),
- });
- assert!(!<Test as frame_system::Config>::BaseCallFilter::contains(
- &call
- ));
- assert_ok!(Scheduler::do_schedule(
- DispatchTime::At(4),
- None,
- 127,
- root(),
- <ScheduledCall<Test>>::new(call).unwrap(),
- ));
- run_to_block(3);
- assert!(logger::log().is_empty());
- run_to_block(4);
- assert_eq!(logger::log(), vec![(root(), 42u32)]);
- run_to_block(100);
- assert_eq!(logger::log(), vec![(root(), 42u32)]);
- });
-}
-
-#[test]
-fn schedule_after_works() {
- new_test_ext().execute_with(|| {
- run_to_block(2);
- let call = RuntimeCall::Logger(LoggerCall::log {
- i: 42,
- weight: Weight::from_ref_time(10),
- });
- assert!(!<Test as frame_system::Config>::BaseCallFilter::contains(
- &call
- ));
- // This will schedule the call 3 blocks after the next block... so block 3 + 3 = 6
- assert_ok!(Scheduler::do_schedule(
- DispatchTime::After(3),
- None,
- 127,
- root(),
- <ScheduledCall<Test>>::new(call).unwrap(),
- ));
- run_to_block(5);
- assert!(logger::log().is_empty());
- run_to_block(6);
- assert_eq!(logger::log(), vec![(root(), 42u32)]);
- run_to_block(100);
- assert_eq!(logger::log(), vec![(root(), 42u32)]);
- });
-}
-
-#[test]
-fn schedule_after_zero_works() {
- new_test_ext().execute_with(|| {
- run_to_block(2);
- let call = RuntimeCall::Logger(LoggerCall::log {
- i: 42,
- weight: Weight::from_ref_time(10),
- });
- assert!(!<Test as frame_system::Config>::BaseCallFilter::contains(
- &call
- ));
- assert_ok!(Scheduler::do_schedule(
- DispatchTime::After(0),
- None,
- 127,
- root(),
- <ScheduledCall<Test>>::new(call).unwrap(),
- ));
- // Will trigger on the next block.
- run_to_block(3);
- assert_eq!(logger::log(), vec![(root(), 42u32)]);
- run_to_block(100);
- assert_eq!(logger::log(), vec![(root(), 42u32)]);
- });
-}
-
-#[test]
-fn periodic_scheduling_works() {
- new_test_ext().execute_with(|| {
- // at #4, every 3 blocks, 3 times.
- assert_ok!(Scheduler::do_schedule(
- DispatchTime::At(4),
- Some((3, 3)),
- 127,
- root(),
- <ScheduledCall<Test>>::new(RuntimeCall::Logger(logger::Call::log {
- i: 42,
- weight: Weight::from_ref_time(10)
- }))
- .unwrap()
- ));
- run_to_block(3);
- assert!(logger::log().is_empty());
- run_to_block(4);
- assert_eq!(logger::log(), vec![(root(), 42u32)]);
- run_to_block(6);
- assert_eq!(logger::log(), vec![(root(), 42u32)]);
- run_to_block(7);
- assert_eq!(logger::log(), vec![(root(), 42u32), (root(), 42u32)]);
- run_to_block(9);
- assert_eq!(logger::log(), vec![(root(), 42u32), (root(), 42u32)]);
- run_to_block(10);
- assert_eq!(
- logger::log(),
- vec![(root(), 42u32), (root(), 42u32), (root(), 42u32)]
- );
- run_to_block(100);
- assert_eq!(
- logger::log(),
- vec![(root(), 42u32), (root(), 42u32), (root(), 42u32)]
- );
- });
-}
-
-#[test]
-fn cancel_named_scheduling_works_with_normal_cancel() {
- new_test_ext().execute_with(|| {
- // at #4.
- Scheduler::do_schedule_named(
- [1u8; 32],
- DispatchTime::At(4),
- None,
- 127,
- root(),
- <ScheduledCall<Test>>::new(RuntimeCall::Logger(LoggerCall::log {
- i: 69,
- weight: Weight::from_ref_time(10),
- }))
- .unwrap(),
- )
- .unwrap();
- let i = Scheduler::do_schedule(
- DispatchTime::At(4),
- None,
- 127,
- root(),
- <ScheduledCall<Test>>::new(RuntimeCall::Logger(LoggerCall::log {
- i: 42,
- weight: Weight::from_ref_time(10),
- }))
- .unwrap(),
- )
- .unwrap();
- run_to_block(3);
- assert!(logger::log().is_empty());
- assert_ok!(Scheduler::do_cancel_named(None, [1u8; 32]));
- assert_ok!(Scheduler::do_cancel(None, i));
- run_to_block(100);
- assert!(logger::log().is_empty());
- });
-}
-
-#[test]
-fn cancel_named_periodic_scheduling_works() {
- new_test_ext().execute_with(|| {
- // at #4, every 3 blocks, 3 times.
- Scheduler::do_schedule_named(
- [1u8; 32],
- DispatchTime::At(4),
- Some((3, 3)),
- 127,
- root(),
- <ScheduledCall<Test>>::new(RuntimeCall::Logger(LoggerCall::log {
- i: 42,
- weight: Weight::from_ref_time(10),
- }))
- .unwrap(),
- )
- .unwrap();
- // same id results in error.
- assert!(Scheduler::do_schedule_named(
- [1u8; 32],
- DispatchTime::At(4),
- None,
- 127,
- root(),
- <ScheduledCall<Test>>::new(RuntimeCall::Logger(LoggerCall::log {
- i: 69,
- weight: Weight::from_ref_time(10)
- }))
- .unwrap(),
- )
- .is_err());
- // different id is ok.
- Scheduler::do_schedule_named(
- [2u8; 32],
- DispatchTime::At(8),
- None,
- 127,
- root(),
- <ScheduledCall<Test>>::new(RuntimeCall::Logger(LoggerCall::log {
- i: 69,
- weight: Weight::from_ref_time(10),
- }))
- .unwrap(),
- )
- .unwrap();
- run_to_block(3);
- assert!(logger::log().is_empty());
- run_to_block(4);
- assert_eq!(logger::log(), vec![(root(), 42u32)]);
- run_to_block(6);
- assert_ok!(Scheduler::do_cancel_named(None, [1u8; 32]));
- run_to_block(100);
- assert_eq!(logger::log(), vec![(root(), 42u32), (root(), 69u32)]);
- });
-}
-
-#[test]
-fn scheduler_respects_weight_limits() {
- let max_weight: Weight = <Test as Config>::MaximumWeight::get();
- new_test_ext().execute_with(|| {
- let call = RuntimeCall::Logger(LoggerCall::log {
- i: 42,
- weight: max_weight / 3 * 2,
- });
- assert_ok!(Scheduler::do_schedule(
- DispatchTime::At(4),
- None,
- 127,
- root(),
- <ScheduledCall<Test>>::new(call).unwrap(),
- ));
- let call = RuntimeCall::Logger(LoggerCall::log {
- i: 69,
- weight: max_weight / 3 * 2,
- });
- assert_ok!(Scheduler::do_schedule(
- DispatchTime::At(4),
- None,
- 127,
- root(),
- <ScheduledCall<Test>>::new(call).unwrap(),
- ));
- // 69 and 42 do not fit together
- run_to_block(4);
- assert_eq!(logger::log(), vec![(root(), 42u32)]);
- run_to_block(5);
- assert_eq!(logger::log(), vec![(root(), 42u32), (root(), 69u32)]);
- });
-}
-
-/// Permanently overweight calls are not deleted but also not executed.
-#[test]
-fn scheduler_does_not_delete_permanently_overweight_call() {
- let max_weight: Weight = <Test as Config>::MaximumWeight::get();
- new_test_ext().execute_with(|| {
- let call = RuntimeCall::Logger(LoggerCall::log {
- i: 42,
- weight: max_weight,
- });
- assert_ok!(Scheduler::do_schedule(
- DispatchTime::At(4),
- None,
- 127,
- root(),
- <ScheduledCall<Test>>::new(call).unwrap(),
- ));
- // Never executes.
- run_to_block(100);
- assert_eq!(logger::log(), vec![]);
-
- // Assert the `PermanentlyOverweight` event.
- assert_eq!(
- System::events().last().unwrap().event,
- crate::Event::PermanentlyOverweight {
- task: (4, 0),
- id: None
- }
- .into(),
- );
- // The call is still in the agenda.
- assert!(Agenda::<Test>::get(4).agenda[0].is_some());
- });
-}
-
-#[test]
-fn scheduler_periodic_tasks_always_find_place() {
- let max_weight: Weight = <Test as Config>::MaximumWeight::get();
- let max_per_block = <Test as Config>::MaxScheduledPerBlock::get();
-
- new_test_ext().execute_with(|| {
- let call = RuntimeCall::Logger(LoggerCall::log {
- i: 42,
- weight: (max_weight / 3) * 2,
- });
- let call = <ScheduledCall<Test>>::new(call).unwrap();
-
- assert_ok!(Scheduler::do_schedule(
- DispatchTime::At(4),
- Some((4, u32::MAX)),
- 127,
- root(),
- call.clone(),
- ));
- // Executes 5 times till block 20.
- run_to_block(20);
- assert_eq!(logger::log().len(), 5);
-
- // Block 28 will already be full.
- for _ in 0..max_per_block {
- assert_ok!(Scheduler::do_schedule(
- DispatchTime::At(28),
- None,
- 120,
- root(),
- call.clone(),
- ));
- }
-
- run_to_block(24);
- assert_eq!(logger::log().len(), 6);
-
- // The periodic task should be postponed
- assert_eq!(<Agenda<Test>>::get(29).agenda.len(), 1);
-
- run_to_block(27); // will call on_initialize(28)
- assert_eq!(logger::log().len(), 6);
-
- run_to_block(28); // will call on_initialize(29)
- assert_eq!(logger::log().len(), 7);
- });
-}
-
-#[test]
-fn scheduler_respects_priority_ordering() {
- let max_weight: Weight = <Test as Config>::MaximumWeight::get();
- new_test_ext().execute_with(|| {
- let call = RuntimeCall::Logger(LoggerCall::log {
- i: 42,
- weight: max_weight / 3,
- });
- assert_ok!(Scheduler::do_schedule(
- DispatchTime::At(4),
- None,
- 1,
- root(),
- <ScheduledCall<Test>>::new(call).unwrap(),
- ));
- let call = RuntimeCall::Logger(LoggerCall::log {
- i: 69,
- weight: max_weight / 3,
- });
- assert_ok!(Scheduler::do_schedule(
- DispatchTime::At(4),
- None,
- 0,
- root(),
- <ScheduledCall<Test>>::new(call).unwrap(),
- ));
- run_to_block(4);
- assert_eq!(logger::log(), vec![(root(), 69u32), (root(), 42u32)]);
- });
-}
-
-#[test]
-fn scheduler_respects_priority_ordering_with_soft_deadlines() {
- new_test_ext().execute_with(|| {
- let max_weight: Weight = <Test as Config>::MaximumWeight::get();
- let call = RuntimeCall::Logger(LoggerCall::log {
- i: 42,
- weight: max_weight / 5 * 2,
- });
- assert_ok!(Scheduler::do_schedule(
- DispatchTime::At(4),
- None,
- 255,
- root(),
- <ScheduledCall<Test>>::new(call).unwrap(),
- ));
- let call = RuntimeCall::Logger(LoggerCall::log {
- i: 69,
- weight: max_weight / 5 * 2,
- });
- assert_ok!(Scheduler::do_schedule(
- DispatchTime::At(4),
- None,
- 127,
- root(),
- <ScheduledCall<Test>>::new(call).unwrap(),
- ));
- let call = RuntimeCall::Logger(LoggerCall::log {
- i: 2600,
- weight: max_weight / 5 * 4,
- });
- assert_ok!(Scheduler::do_schedule(
- DispatchTime::At(4),
- None,
- 126,
- root(),
- <ScheduledCall<Test>>::new(call).unwrap(),
- ));
-
- // 2600 does not fit with 69 or 42, but has higher priority, so will go through
- run_to_block(4);
- assert_eq!(logger::log(), vec![(root(), 2600u32)]);
- // 69 and 42 fit together
- run_to_block(5);
- assert_eq!(
- logger::log(),
- vec![(root(), 2600u32), (root(), 69u32), (root(), 42u32)]
- );
- });
-}
-
-#[test]
-fn on_initialize_weight_is_correct() {
- new_test_ext().execute_with(|| {
- let call_weight = Weight::from_ref_time(25);
-
- // Named
- let call = RuntimeCall::Logger(LoggerCall::log {
- i: 3,
- weight: call_weight + Weight::from_ref_time(1),
- });
- assert_ok!(Scheduler::do_schedule_named(
- [1u8; 32],
- DispatchTime::At(3),
- None,
- 255,
- root(),
- <ScheduledCall<Test>>::new(call).unwrap(),
- ));
- let call = RuntimeCall::Logger(LoggerCall::log {
- i: 42,
- weight: call_weight + Weight::from_ref_time(2),
- });
- // Anon Periodic
- assert_ok!(Scheduler::do_schedule(
- DispatchTime::At(2),
- Some((1000, 3)),
- 128,
- root(),
- <ScheduledCall<Test>>::new(call).unwrap(),
- ));
- let call = RuntimeCall::Logger(LoggerCall::log {
- i: 69,
- weight: call_weight + Weight::from_ref_time(3),
- });
- // Anon
- assert_ok!(Scheduler::do_schedule(
- DispatchTime::At(2),
- None,
- 127,
- root(),
- <ScheduledCall<Test>>::new(call).unwrap(),
- ));
- // Named Periodic
- let call = RuntimeCall::Logger(LoggerCall::log {
- i: 2600,
- weight: call_weight + Weight::from_ref_time(4),
- });
- assert_ok!(Scheduler::do_schedule_named(
- [2u8; 32],
- DispatchTime::At(1),
- Some((1000, 3)),
- 126,
- root(),
- <ScheduledCall<Test>>::new(call).unwrap(),
- ));
-
- // Will include the named periodic only
- assert_eq!(
- Scheduler::on_initialize(1),
- TestWeightInfo::service_agendas_base()
- + TestWeightInfo::service_agenda_base(1)
- + <MarginalWeightInfo<Test>>::service_task(None, true, true)
- + TestWeightInfo::execute_dispatch_unsigned()
- + call_weight + Weight::from_ref_time(4)
- );
- assert_eq!(IncompleteSince::<Test>::get(), None);
- assert_eq!(logger::log(), vec![(root(), 2600u32)]);
-
- // Will include anon and anon periodic
- assert_eq!(
- Scheduler::on_initialize(2),
- TestWeightInfo::service_agendas_base()
- + TestWeightInfo::service_agenda_base(2)
- + <MarginalWeightInfo<Test>>::service_task(None, false, true)
- + TestWeightInfo::execute_dispatch_unsigned()
- + call_weight + Weight::from_ref_time(3)
- + <MarginalWeightInfo<Test>>::service_task(None, false, false)
- + TestWeightInfo::execute_dispatch_unsigned()
- + call_weight + Weight::from_ref_time(2)
- );
- assert_eq!(IncompleteSince::<Test>::get(), None);
- assert_eq!(
- logger::log(),
- vec![(root(), 2600u32), (root(), 69u32), (root(), 42u32)]
- );
-
- // Will include named only
- assert_eq!(
- Scheduler::on_initialize(3),
- TestWeightInfo::service_agendas_base()
- + TestWeightInfo::service_agenda_base(1)
- + <MarginalWeightInfo<Test>>::service_task(None, true, false)
- + TestWeightInfo::execute_dispatch_unsigned()
- + call_weight + Weight::from_ref_time(1)
- );
- assert_eq!(IncompleteSince::<Test>::get(), None);
- assert_eq!(
- logger::log(),
- vec![
- (root(), 2600u32),
- (root(), 69u32),
- (root(), 42u32),
- (root(), 3u32)
- ]
- );
-
- // Will contain none
- let actual_weight = Scheduler::on_initialize(4);
- assert_eq!(
- actual_weight,
- TestWeightInfo::service_agendas_base() + TestWeightInfo::service_agenda_base(0)
- );
- });
-}
-
-#[test]
-fn root_calls_works() {
- new_test_ext().execute_with(|| {
- let call = Box::new(RuntimeCall::Logger(LoggerCall::log {
- i: 69,
- weight: Weight::from_ref_time(10),
- }));
- let call2 = Box::new(RuntimeCall::Logger(LoggerCall::log {
- i: 42,
- weight: Weight::from_ref_time(10),
- }));
- assert_ok!(Scheduler::schedule_named(
- RuntimeOrigin::root(),
- [1u8; 32],
- 4,
- None,
- Some(127),
- call,
- ));
- assert_ok!(Scheduler::schedule(
- RuntimeOrigin::root(),
- 4,
- None,
- Some(127),
- call2
- ));
- run_to_block(3);
- // Scheduled calls are in the agenda.
- assert_eq!(Agenda::<Test>::get(4).agenda.len(), 2);
- assert!(logger::log().is_empty());
- assert_ok!(Scheduler::cancel_named(RuntimeOrigin::root(), [1u8; 32]));
- assert_ok!(Scheduler::cancel(RuntimeOrigin::root(), 4, 1));
- // Scheduled calls are made NONE, so should not effect state
- run_to_block(100);
- assert!(logger::log().is_empty());
- });
-}
-
-#[test]
-fn fails_to_schedule_task_in_the_past() {
- new_test_ext().execute_with(|| {
- run_to_block(3);
-
- let call1 = Box::new(RuntimeCall::Logger(LoggerCall::log {
- i: 69,
- weight: Weight::from_ref_time(10),
- }));
- let call2 = Box::new(RuntimeCall::Logger(LoggerCall::log {
- i: 42,
- weight: Weight::from_ref_time(10),
- }));
- let call3 = Box::new(RuntimeCall::Logger(LoggerCall::log {
- i: 42,
- weight: Weight::from_ref_time(10),
- }));
-
- assert_noop!(
- Scheduler::schedule_named(RuntimeOrigin::root(), [1u8; 32], 2, None, Some(127), call1),
- Error::<Test>::TargetBlockNumberInPast,
- );
-
- assert_noop!(
- Scheduler::schedule(RuntimeOrigin::root(), 2, None, Some(127), call2),
- Error::<Test>::TargetBlockNumberInPast,
- );
-
- assert_noop!(
- Scheduler::schedule(RuntimeOrigin::root(), 3, None, Some(127), call3),
- Error::<Test>::TargetBlockNumberInPast,
- );
- });
-}
-
-#[test]
-fn should_use_origin() {
- new_test_ext().execute_with(|| {
- let call = Box::new(RuntimeCall::Logger(LoggerCall::log {
- i: 69,
- weight: Weight::from_ref_time(10),
- }));
- let call2 = Box::new(RuntimeCall::Logger(LoggerCall::log {
- i: 42,
- weight: Weight::from_ref_time(10),
- }));
- assert_ok!(Scheduler::schedule_named(
- system::RawOrigin::Signed(1).into(),
- [1u8; 32],
- 4,
- None,
- None,
- call,
- ));
- assert_ok!(Scheduler::schedule(
- system::RawOrigin::Signed(1).into(),
- 4,
- None,
- None,
- call2,
- ));
- run_to_block(3);
- // Scheduled calls are in the agenda.
- assert_eq!(Agenda::<Test>::get(4).agenda.len(), 2);
- assert!(logger::log().is_empty());
- assert_ok!(Scheduler::cancel_named(
- system::RawOrigin::Signed(1).into(),
- [1u8; 32]
- ));
- assert_ok!(Scheduler::cancel(system::RawOrigin::Signed(1).into(), 4, 1));
- // Scheduled calls are made NONE, so should not effect state
- run_to_block(100);
- assert!(logger::log().is_empty());
- });
-}
-
-#[test]
-fn should_check_origin() {
- new_test_ext().execute_with(|| {
- let call = Box::new(RuntimeCall::Logger(LoggerCall::log {
- i: 69,
- weight: Weight::from_ref_time(10),
- }));
- let call2 = Box::new(RuntimeCall::Logger(LoggerCall::log {
- i: 42,
- weight: Weight::from_ref_time(10),
- }));
- assert_noop!(
- Scheduler::schedule_named(
- system::RawOrigin::Signed(2).into(),
- [1u8; 32],
- 4,
- None,
- None,
- call
- ),
- BadOrigin
- );
- assert_noop!(
- Scheduler::schedule(system::RawOrigin::Signed(2).into(), 4, None, None, call2),
- BadOrigin
- );
- });
-}
-
-#[test]
-fn should_check_origin_for_cancel() {
- new_test_ext().execute_with(|| {
- let call = Box::new(RuntimeCall::Logger(LoggerCall::log_without_filter {
- i: 69,
- weight: Weight::from_ref_time(10),
- }));
- let call2 = Box::new(RuntimeCall::Logger(LoggerCall::log_without_filter {
- i: 42,
- weight: Weight::from_ref_time(10),
- }));
- assert_ok!(Scheduler::schedule_named(
- system::RawOrigin::Signed(1).into(),
- [1u8; 32],
- 4,
- None,
- None,
- call,
- ));
- assert_ok!(Scheduler::schedule(
- system::RawOrigin::Signed(1).into(),
- 4,
- None,
- None,
- call2,
- ));
- run_to_block(3);
- // Scheduled calls are in the agenda.
- assert_eq!(Agenda::<Test>::get(4).agenda.len(), 2);
- assert!(logger::log().is_empty());
- assert_noop!(
- Scheduler::cancel_named(system::RawOrigin::Signed(2).into(), [1u8; 32]),
- BadOrigin
- );
- assert_noop!(
- Scheduler::cancel(system::RawOrigin::Signed(2).into(), 4, 1),
- BadOrigin
- );
- assert_noop!(
- Scheduler::cancel_named(system::RawOrigin::Root.into(), [1u8; 32]),
- BadOrigin
- );
- assert_noop!(
- Scheduler::cancel(system::RawOrigin::Root.into(), 4, 1),
- BadOrigin
- );
- run_to_block(5);
- assert_eq!(
- logger::log(),
- vec![
- (system::RawOrigin::Signed(1).into(), 69u32),
- (system::RawOrigin::Signed(1).into(), 42u32)
- ]
- );
- });
-}
-
-/// Cancelling a call and then scheduling a second call for the same
-/// block results in different addresses.
-#[test]
-fn schedule_does_not_resuse_addr() {
- new_test_ext().execute_with(|| {
- let call = RuntimeCall::Logger(LoggerCall::log {
- i: 42,
- weight: Weight::from_ref_time(10),
- });
-
- // Schedule both calls.
- let addr_1 = Scheduler::do_schedule(
- DispatchTime::At(4),
- None,
- 127,
- root(),
- <ScheduledCall<Test>>::new(call.clone()).unwrap(),
- )
- .unwrap();
- // Cancel the call.
- assert_ok!(Scheduler::do_cancel(None, addr_1));
- let addr_2 = Scheduler::do_schedule(
- DispatchTime::At(4),
- None,
- 127,
- root(),
- <ScheduledCall<Test>>::new(call).unwrap(),
- )
- .unwrap();
-
- // Should not re-use the address.
- assert!(addr_1 != addr_2);
- });
-}
-
-#[test]
-fn schedule_agenda_overflows() {
- let max: u32 = <Test as Config>::MaxScheduledPerBlock::get();
-
- new_test_ext().execute_with(|| {
- let call = RuntimeCall::Logger(LoggerCall::log {
- i: 42,
- weight: Weight::from_ref_time(10),
- });
- let call = <ScheduledCall<Test>>::new(call).unwrap();
-
- // Schedule the maximal number allowed per block.
- for _ in 0..max {
- Scheduler::do_schedule(DispatchTime::At(4), None, 127, root(), call.clone()).unwrap();
- }
-
- // One more time and it errors.
- assert_noop!(
- Scheduler::do_schedule(DispatchTime::At(4), None, 127, root(), call,),
- <Error<Test>>::AgendaIsExhausted,
- );
-
- run_to_block(4);
- // All scheduled calls are executed.
- assert_eq!(logger::log().len() as u32, max);
- });
-}
-
-/// Cancelling and scheduling does not overflow the agenda but fills holes.
-#[test]
-fn cancel_and_schedule_fills_holes() {
- let max: u32 = <Test as Config>::MaxScheduledPerBlock::get();
- assert!(
- max > 3,
- "This test only makes sense for MaxScheduledPerBlock > 3"
- );
-
- new_test_ext().execute_with(|| {
- let call = RuntimeCall::Logger(LoggerCall::log {
- i: 42,
- weight: Weight::from_ref_time(10),
- });
- let call = <ScheduledCall<Test>>::new(call).unwrap();
- let mut addrs = Vec::<_>::default();
-
- // Schedule the maximal number allowed per block.
- for _ in 0..max {
- addrs.push(
- Scheduler::do_schedule(DispatchTime::At(4), None, 127, root(), call.clone())
- .unwrap(),
- );
- }
- // Cancel three of them.
- for addr in addrs.into_iter().take(3) {
- Scheduler::do_cancel(None, addr).unwrap();
- }
- // Schedule three new ones.
- for i in 0..3 {
- let (_block, index) =
- Scheduler::do_schedule(DispatchTime::At(4), None, 127, root(), call.clone())
- .unwrap();
- assert_eq!(i, index);
- }
-
- run_to_block(4);
- // Maximum number of calls are executed.
- assert_eq!(logger::log().len() as u32, max);
- });
-}
-
-#[test]
-fn cannot_schedule_too_big_tasks() {
- new_test_ext().execute_with(|| {
- let call = Box::new(<<Test as Config>::RuntimeCall>::from(SystemCall::remark {
- remark: vec![0; EncodedCall::bound() - 4],
- }));
-
- assert_ok!(Scheduler::schedule(
- RuntimeOrigin::root(),
- 4,
- None,
- Some(127),
- call
- ));
-
- let call = Box::new(<<Test as Config>::RuntimeCall>::from(SystemCall::remark {
- remark: vec![0; EncodedCall::bound() - 3],
- }));
-
- assert_err!(
- Scheduler::schedule(RuntimeOrigin::root(), 4, None, Some(127), call),
- <Error<Test>>::TooBigScheduledCall
- );
- });
-}
pallets/scheduler-v2/src/weights.rsdiffbeforeafterboth--- a/pallets/scheduler-v2/src/weights.rs
+++ /dev/null
@@ -1,234 +0,0 @@
-// Template adopted from https://github.com/paritytech/substrate/blob/master/.maintain/frame-weight-template.hbs
-
-//! Autogenerated weights for pallet_unique_scheduler_v2
-//!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2022-10-28, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]`
-//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024
-
-// Executed Command:
-// target/release/unique-collator
-// benchmark
-// pallet
-// --pallet
-// pallet-unique-scheduler-v2
-// --wasm-execution
-// compiled
-// --extrinsic
-// *
-// --template
-// .maintain/frame-weight-template.hbs
-// --steps=50
-// --repeat=80
-// --heap-pages=4096
-// --output=./pallets/scheduler-v2/src/weights.rs
-
-#![cfg_attr(rustfmt, rustfmt_skip)]
-#![allow(unused_parens)]
-#![allow(unused_imports)]
-#![allow(missing_docs)]
-#![allow(clippy::unnecessary_cast)]
-
-use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}};
-use sp_std::marker::PhantomData;
-
-/// Weight functions needed for pallet_unique_scheduler_v2.
-pub trait WeightInfo {
- fn service_agendas_base() -> Weight;
- fn service_agenda_base(s: u32, ) -> Weight;
- fn service_task_base() -> Weight;
- fn service_task_named() -> Weight;
- fn service_task_periodic() -> Weight;
- fn execute_dispatch_signed() -> Weight;
- fn execute_dispatch_unsigned() -> Weight;
- fn schedule(s: u32, ) -> Weight;
- fn cancel(s: u32, ) -> Weight;
- fn schedule_named(s: u32, ) -> Weight;
- fn cancel_named(s: u32, ) -> Weight;
- fn change_named_priority(s: u32, ) -> Weight;
-}
-
-/// Weights for pallet_unique_scheduler_v2 using the Substrate node and recommended hardware.
-pub struct SubstrateWeight<T>(PhantomData<T>);
-impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
- // Storage: Scheduler IncompleteSince (r:1 w:1)
- fn service_agendas_base() -> Weight {
- Weight::from_ref_time(5_253_000 as u64)
- .saturating_add(T::DbWeight::get().reads(1 as u64))
- .saturating_add(T::DbWeight::get().writes(1 as u64))
- }
- // Storage: Scheduler Agenda (r:1 w:1)
- fn service_agenda_base(s: u32, ) -> Weight {
- Weight::from_ref_time(3_858_000 as u64)
- // Standard Error: 2_617
- .saturating_add(Weight::from_ref_time(579_704 as u64).saturating_mul(s as u64))
- .saturating_add(T::DbWeight::get().reads(1 as u64))
- .saturating_add(T::DbWeight::get().writes(1 as u64))
- }
- // Storage: System LastRuntimeUpgrade (r:1 w:0)
- fn service_task_base() -> Weight {
- Weight::from_ref_time(10_536_000 as u64)
- .saturating_add(T::DbWeight::get().reads(1 as u64))
- }
- // Storage: System LastRuntimeUpgrade (r:1 w:0)
- // Storage: Scheduler Lookup (r:0 w:1)
- fn service_task_named() -> Weight {
- Weight::from_ref_time(12_018_000 as u64)
- .saturating_add(T::DbWeight::get().reads(1 as u64))
- .saturating_add(T::DbWeight::get().writes(1 as u64))
- }
- // Storage: System LastRuntimeUpgrade (r:1 w:0)
- fn service_task_periodic() -> Weight {
- Weight::from_ref_time(10_669_000 as u64)
- .saturating_add(T::DbWeight::get().reads(1 as u64))
- }
- // Storage: System Account (r:1 w:1)
- // Storage: System AllExtrinsicsLen (r:1 w:1)
- // Storage: System BlockWeight (r:1 w:1)
- // Storage: Configuration WeightToFeeCoefficientOverride (r:1 w:0)
- // Storage: TransactionPayment NextFeeMultiplier (r:1 w:0)
- fn execute_dispatch_signed() -> Weight {
- Weight::from_ref_time(36_083_000 as u64)
- .saturating_add(T::DbWeight::get().reads(5 as u64))
- .saturating_add(T::DbWeight::get().writes(3 as u64))
- }
- fn execute_dispatch_unsigned() -> Weight {
- Weight::from_ref_time(4_386_000 as u64)
- }
- // Storage: Scheduler Agenda (r:1 w:1)
- fn schedule(s: u32, ) -> Weight {
- Weight::from_ref_time(17_257_000 as u64)
- // Standard Error: 2_791
- .saturating_add(Weight::from_ref_time(574_832 as u64).saturating_mul(s as u64))
- .saturating_add(T::DbWeight::get().reads(1 as u64))
- .saturating_add(T::DbWeight::get().writes(1 as u64))
- }
- // Storage: Scheduler Agenda (r:1 w:1)
- // Storage: Scheduler Lookup (r:0 w:1)
- fn cancel(s: u32, ) -> Weight {
- Weight::from_ref_time(19_803_000 as u64)
- // Standard Error: 1_177
- .saturating_add(Weight::from_ref_time(475_027 as u64).saturating_mul(s as u64))
- .saturating_add(T::DbWeight::get().reads(1 as u64))
- .saturating_add(T::DbWeight::get().writes(2 as u64))
- }
- // Storage: Scheduler Lookup (r:1 w:1)
- // Storage: Scheduler Agenda (r:1 w:1)
- fn schedule_named(s: u32, ) -> Weight {
- Weight::from_ref_time(18_746_000 as u64)
- // Standard Error: 2_997
- .saturating_add(Weight::from_ref_time(635_697 as u64).saturating_mul(s as u64))
- .saturating_add(T::DbWeight::get().reads(2 as u64))
- .saturating_add(T::DbWeight::get().writes(2 as u64))
- }
- // Storage: Scheduler Lookup (r:1 w:1)
- // Storage: Scheduler Agenda (r:1 w:1)
- fn cancel_named(s: u32, ) -> Weight {
- Weight::from_ref_time(20_983_000 as u64)
- // Standard Error: 1_850
- .saturating_add(Weight::from_ref_time(518_812 as u64).saturating_mul(s as u64))
- .saturating_add(T::DbWeight::get().reads(2 as u64))
- .saturating_add(T::DbWeight::get().writes(2 as u64))
- }
- // Storage: Scheduler Lookup (r:1 w:0)
- // Storage: Scheduler Agenda (r:1 w:1)
- fn change_named_priority(s: u32, ) -> Weight {
- Weight::from_ref_time(21_591_000 as u64)
- // Standard Error: 4_187
- .saturating_add(Weight::from_ref_time(531_231 as u64).saturating_mul(s as u64))
- .saturating_add(T::DbWeight::get().reads(2 as u64))
- .saturating_add(T::DbWeight::get().writes(1 as u64))
- }
-}
-
-// For backwards compatibility and tests
-impl WeightInfo for () {
- // Storage: Scheduler IncompleteSince (r:1 w:1)
- fn service_agendas_base() -> Weight {
- Weight::from_ref_time(5_253_000 as u64)
- .saturating_add(RocksDbWeight::get().reads(1 as u64))
- .saturating_add(RocksDbWeight::get().writes(1 as u64))
- }
- // Storage: Scheduler Agenda (r:1 w:1)
- fn service_agenda_base(s: u32, ) -> Weight {
- Weight::from_ref_time(3_858_000 as u64)
- // Standard Error: 2_617
- .saturating_add(Weight::from_ref_time(579_704 as u64).saturating_mul(s as u64))
- .saturating_add(RocksDbWeight::get().reads(1 as u64))
- .saturating_add(RocksDbWeight::get().writes(1 as u64))
- }
- // Storage: System LastRuntimeUpgrade (r:1 w:0)
- fn service_task_base() -> Weight {
- Weight::from_ref_time(10_536_000 as u64)
- .saturating_add(RocksDbWeight::get().reads(1 as u64))
- }
- // Storage: System LastRuntimeUpgrade (r:1 w:0)
- // Storage: Scheduler Lookup (r:0 w:1)
- fn service_task_named() -> Weight {
- Weight::from_ref_time(12_018_000 as u64)
- .saturating_add(RocksDbWeight::get().reads(1 as u64))
- .saturating_add(RocksDbWeight::get().writes(1 as u64))
- }
- // Storage: System LastRuntimeUpgrade (r:1 w:0)
- fn service_task_periodic() -> Weight {
- Weight::from_ref_time(10_669_000 as u64)
- .saturating_add(RocksDbWeight::get().reads(1 as u64))
- }
- // Storage: System Account (r:1 w:1)
- // Storage: System AllExtrinsicsLen (r:1 w:1)
- // Storage: System BlockWeight (r:1 w:1)
- // Storage: Configuration WeightToFeeCoefficientOverride (r:1 w:0)
- // Storage: TransactionPayment NextFeeMultiplier (r:1 w:0)
- fn execute_dispatch_signed() -> Weight {
- Weight::from_ref_time(36_083_000 as u64)
- .saturating_add(RocksDbWeight::get().reads(5 as u64))
- .saturating_add(RocksDbWeight::get().writes(3 as u64))
- }
- fn execute_dispatch_unsigned() -> Weight {
- Weight::from_ref_time(4_386_000 as u64)
- }
- // Storage: Scheduler Agenda (r:1 w:1)
- fn schedule(s: u32, ) -> Weight {
- Weight::from_ref_time(17_257_000 as u64)
- // Standard Error: 2_791
- .saturating_add(Weight::from_ref_time(574_832 as u64).saturating_mul(s as u64))
- .saturating_add(RocksDbWeight::get().reads(1 as u64))
- .saturating_add(RocksDbWeight::get().writes(1 as u64))
- }
- // Storage: Scheduler Agenda (r:1 w:1)
- // Storage: Scheduler Lookup (r:0 w:1)
- fn cancel(s: u32, ) -> Weight {
- Weight::from_ref_time(19_803_000 as u64)
- // Standard Error: 1_177
- .saturating_add(Weight::from_ref_time(475_027 as u64).saturating_mul(s as u64))
- .saturating_add(RocksDbWeight::get().reads(1 as u64))
- .saturating_add(RocksDbWeight::get().writes(2 as u64))
- }
- // Storage: Scheduler Lookup (r:1 w:1)
- // Storage: Scheduler Agenda (r:1 w:1)
- fn schedule_named(s: u32, ) -> Weight {
- Weight::from_ref_time(18_746_000 as u64)
- // Standard Error: 2_997
- .saturating_add(Weight::from_ref_time(635_697 as u64).saturating_mul(s as u64))
- .saturating_add(RocksDbWeight::get().reads(2 as u64))
- .saturating_add(RocksDbWeight::get().writes(2 as u64))
- }
- // Storage: Scheduler Lookup (r:1 w:1)
- // Storage: Scheduler Agenda (r:1 w:1)
- fn cancel_named(s: u32, ) -> Weight {
- Weight::from_ref_time(20_983_000 as u64)
- // Standard Error: 1_850
- .saturating_add(Weight::from_ref_time(518_812 as u64).saturating_mul(s as u64))
- .saturating_add(RocksDbWeight::get().reads(2 as u64))
- .saturating_add(RocksDbWeight::get().writes(2 as u64))
- }
- // Storage: Scheduler Lookup (r:1 w:0)
- // Storage: Scheduler Agenda (r:1 w:1)
- fn change_named_priority(s: u32, ) -> Weight {
- Weight::from_ref_time(21_591_000 as u64)
- // Standard Error: 4_187
- .saturating_add(Weight::from_ref_time(531_231 as u64).saturating_mul(s as u64))
- .saturating_add(RocksDbWeight::get().reads(2 as u64))
- .saturating_add(RocksDbWeight::get().writes(1 as u64))
- }
-}
pallets/structure/Cargo.tomldiffbeforeafterboth--- a/pallets/structure/Cargo.toml
+++ b/pallets/structure/Cargo.toml
@@ -4,9 +4,7 @@
version = "0.1.2"
[dependencies]
-# Note: `package = "parity-scale-codec"` must be supplied since the `Encode` macro searches for it.
-codec = { workspace = true, package = "parity-scale-codec" }
-
+parity-scale-codec = { workspace = true }
scale-info = { workspace = true }
frame-benchmarking = { workspace = true, optional = true }
@@ -15,6 +13,7 @@
log = { workspace = true }
pallet-common = { workspace = true }
pallet-evm = { workspace = true }
+sp-runtime = { workspace = true }
sp-std = { workspace = true }
up-data-structs = { workspace = true }
@@ -27,8 +26,9 @@
"frame-system/std",
"pallet-common/std",
"pallet-evm/std",
- "codec/std",
+ "parity-scale-codec/std",
"scale-info/std",
+ "sp-runtime/std",
"sp-std/std",
"up-data-structs/std",
]
pallets/structure/src/benchmarking.rsdiffbeforeafterboth--- a/pallets/structure/src/benchmarking.rs
+++ b/pallets/structure/src/benchmarking.rs
@@ -14,16 +14,16 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-use super::*;
-
-use frame_benchmarking::{benchmarks, account};
-use frame_support::traits::{fungible::Balanced, Get, tokens::Precision};
+use frame_benchmarking::{account, benchmarks};
+use frame_support::traits::{fungible::Balanced, tokens::Precision, Get};
+use pallet_common::Config as CommonConfig;
+use pallet_evm::account::CrossAccountId;
use up_data_structs::{
- CreateCollectionData, CollectionMode, CreateItemData, CreateNftData, budget::Unlimited,
+ budget::Unlimited, CollectionMode, CreateCollectionData, CreateItemData, CreateNftData,
};
-use pallet_common::Config as CommonConfig;
-use pallet_evm::account::CrossAccountId;
+use super::*;
+
const SEED: u32 = 1;
benchmarks! {
pallets/structure/src/lib.rsdiffbeforeafterboth--- a/pallets/structure/src/lib.rs
+++ b/pallets/structure/src/lib.rs
@@ -53,29 +53,31 @@
#![cfg_attr(not(feature = "std"), no_std)]
-use pallet_common::CommonCollectionOperations;
-use pallet_common::{erc::CrossAccountId, eth::is_collection};
+use frame_support::{
+ dispatch::{DispatchResult, DispatchResultWithPostInfo},
+ fail,
+ pallet_prelude::*,
+};
+use pallet_common::{
+ dispatch::CollectionDispatch, erc::CrossAccountId, eth::is_collection,
+ CommonCollectionOperations,
+};
use sp_std::collections::btree_set::BTreeSet;
-
-use frame_support::dispatch::{DispatchError, DispatchResult, DispatchResultWithPostInfo};
-use frame_support::fail;
-pub use pallet::*;
-use pallet_common::{dispatch::CollectionDispatch};
use up_data_structs::{
- CollectionId, TokenId, mapping::TokenAddressMapping, budget::Budget, TokenOwnerError,
+ budget::Budget, mapping::TokenAddressMapping, CollectionId, TokenId, TokenOwnerError,
};
#[cfg(feature = "runtime-benchmarks")]
pub mod benchmarking;
pub mod weights;
+pub use pallet::*;
+
pub type SelfWeightOf<T> = <T as crate::Config>::WeightInfo;
#[frame_support::pallet]
pub mod pallet {
- use frame_support::Parameter;
- use frame_support::dispatch::{GetDispatchInfo, UnfilteredDispatchable};
- use frame_support::pallet_prelude::*;
+ use frame_support::{dispatch::GetDispatchInfo, traits::UnfilteredDispatchable, Parameter};
use super::*;
pallets/unique/Cargo.tomldiffbeforeafterboth--- a/pallets/unique/Cargo.toml
+++ b/pallets/unique/Cargo.toml
@@ -19,7 +19,6 @@
limit-testing = ["up-data-structs/limit-testing"]
runtime-benchmarks = ['frame-benchmarking', 'pallet-common/runtime-benchmarks']
std = [
- 'codec/std',
'evm-coder/std',
'frame-benchmarking/std',
'frame-support/std',
@@ -29,6 +28,7 @@
'pallet-evm-coder-substrate/std',
'pallet-evm/std',
'pallet-nonfungible/std',
+ 'parity-scale-codec/std',
'sp-runtime/std',
'sp-std/std',
'up-data-structs/std',
@@ -39,8 +39,7 @@
################################################################################
# Local Dependencies
[dependencies]
-# Note: `package = "parity-scale-codec"` must be supplied since the `Encode` macro searches for it.
-codec = { workspace = true, package = "parity-scale-codec" }
+parity-scale-codec = { workspace = true }
ethereum = { workspace = true }
evm-coder = { workspace = true }
pallets/unique/src/benchmarking.rsdiffbeforeafterboth--- a/pallets/unique/src/benchmarking.rs
+++ b/pallets/unique/src/benchmarking.rs
@@ -16,22 +16,23 @@
#![cfg(feature = "runtime-benchmarks")]
-use super::*;
-use crate::Pallet;
+use frame_benchmarking::{account, benchmarks};
+use frame_support::traits::{fungible::Balanced, tokens::Precision, Get};
use frame_system::RawOrigin;
-use frame_support::traits::{fungible::Balanced, Get, tokens::Precision};
-use frame_benchmarking::{benchmarks, account};
-use sp_runtime::DispatchError;
use pallet_common::{
- Config as CommonConfig,
benchmarking::{create_data, create_u16_data},
+ erc::CrossAccountId,
+ Config as CommonConfig,
};
+use sp_runtime::DispatchError;
use up_data_structs::{
- CollectionId, CollectionMode, MAX_COLLECTION_NAME_LENGTH, MAX_TOKEN_PREFIX_LENGTH,
- MAX_COLLECTION_DESCRIPTION_LENGTH, CollectionLimits,
+ CollectionId, CollectionLimits, CollectionMode, MAX_COLLECTION_DESCRIPTION_LENGTH,
+ MAX_COLLECTION_NAME_LENGTH, MAX_TOKEN_PREFIX_LENGTH,
};
-use pallet_common::erc::CrossAccountId;
+use super::*;
+use crate::Pallet;
+
const SEED: u32 = 1;
fn create_collection_helper<T: Config>(
pallets/unique/src/eth/mod.rsdiffbeforeafterboth--- a/pallets/unique/src/eth/mod.rs
+++ b/pallets/unique/src/eth/mod.rs
@@ -16,32 +16,31 @@
//! Implementation of CollectionHelpers contract.
//!
+use alloc::{collections::BTreeSet, format};
use core::marker::PhantomData;
+
use ethereum as _;
use evm_coder::{abi::AbiType, generate_stubgen, solidity_interface, types::*};
-use frame_support::{BoundedVec, traits::Get};
+use frame_support::{traits::Get, BoundedVec};
use pallet_common::{
- CollectionById,
dispatch::CollectionDispatch,
- erc::{CollectionHelpersEvents, static_property::key},
- eth::{self, map_eth_to_id, collection_id_to_address},
- Pallet as PalletCommon, CollectionHandle,
+ erc::{static_property::key, CollectionHelpersEvents},
+ eth::{self, collection_id_to_address, map_eth_to_id},
+ CollectionById, CollectionHandle, Pallet as PalletCommon,
};
use pallet_evm::{account::CrossAccountId, OnMethodCall, PrecompileHandle, PrecompileResult};
use pallet_evm_coder_substrate::{
- dispatch_to_evm, SubstrateRecorder, WithRecorder,
- execution::{PreDispatch, Result, Error},
- frontier_contract,
+ dispatch_to_evm,
+ execution::{Error, PreDispatch, Result},
+ frontier_contract, SubstrateRecorder, WithRecorder,
};
+use sp_std::vec::Vec;
use up_data_structs::{
CollectionDescription, CollectionMode, CollectionName, CollectionPermissions,
CollectionTokenPrefix, CreateCollectionData, NestingPermissions,
};
use crate::{weights::WeightInfo, Config, Pallet, SelfWeightOf};
-
-use alloc::{format, collections::BTreeSet};
-use sp_std::vec::Vec;
frontier_contract! {
macro_rules! EvmCollectionHelpers_result {...}
pallets/unique/src/lib.rsdiffbeforeafterboth--- a/pallets/unique/src/lib.rs
+++ b/pallets/unique/src/lib.rs
@@ -73,9 +73,9 @@
extern crate alloc;
-pub use pallet::*;
use frame_support::pallet_prelude::*;
use frame_system::pallet_prelude::*;
+pub use pallet::*;
pub mod eth;
#[cfg(feature = "runtime-benchmarks")]
@@ -84,27 +84,27 @@
#[frame_support::pallet]
pub mod pallet {
- use super::*;
-
- use frame_support::{dispatch::DispatchResult, ensure, fail, BoundedVec, storage::Key};
+ use frame_support::{dispatch::DispatchResult, ensure, fail, storage::Key, BoundedVec};
+ use frame_system::{ensure_root, ensure_signed};
+ use pallet_common::{
+ dispatch::{dispatch_tx, CollectionDispatch},
+ CollectionHandle, CommonWeightInfo, Pallet as PalletCommon, RefungibleExtensionsWeightInfo,
+ };
+ use pallet_evm::account::CrossAccountId;
use scale_info::TypeInfo;
- use frame_system::{ensure_signed, ensure_root};
use sp_std::{vec, vec::Vec};
use up_data_structs::{
- MAX_COLLECTION_NAME_LENGTH, MAX_COLLECTION_DESCRIPTION_LENGTH, MAX_TOKEN_PREFIX_LENGTH,
- MAX_PROPERTIES_PER_ITEM, MAX_PROPERTY_KEY_LENGTH, MAX_PROPERTY_VALUE_LENGTH,
- MAX_COLLECTION_PROPERTIES_SIZE, COLLECTION_ADMINS_LIMIT, MAX_TOKEN_PROPERTIES_SIZE,
- CreateItemData, CollectionLimits, CollectionPermissions, CollectionId, CollectionMode,
- TokenId, CreateCollectionData, CreateItemExData, budget, Property, PropertyKey,
- PropertyKeyPermission,
- };
- use pallet_evm::account::CrossAccountId;
- use pallet_common::{
- CollectionHandle, Pallet as PalletCommon, CommonWeightInfo, dispatch::dispatch_tx,
- dispatch::CollectionDispatch, RefungibleExtensionsWeightInfo,
+ budget, CollectionId, CollectionLimits, CollectionMode, CollectionPermissions,
+ CreateCollectionData, CreateItemData, CreateItemExData, Property, PropertyKey,
+ PropertyKeyPermission, TokenId, COLLECTION_ADMINS_LIMIT, MAX_COLLECTION_DESCRIPTION_LENGTH,
+ MAX_COLLECTION_NAME_LENGTH, MAX_COLLECTION_PROPERTIES_SIZE, MAX_PROPERTIES_PER_ITEM,
+ MAX_PROPERTY_KEY_LENGTH, MAX_PROPERTY_VALUE_LENGTH, MAX_TOKEN_PREFIX_LENGTH,
+ MAX_TOKEN_PROPERTIES_SIZE,
};
use weights::WeightInfo;
+ use super::*;
+
/// A maximum number of levels of depth in the token nesting tree.
pub const NESTING_BUDGET: u32 = 5;
@@ -174,7 +174,7 @@
pub type CreateItemBasket<T: Config> = StorageMap<
Hasher = Blake2_128Concat,
Key = (CollectionId, T::AccountId),
- Value = T::BlockNumber,
+ Value = BlockNumberFor<T>,
QueryKind = OptionQuery,
>;
/// Collection id (controlled?2), token id (controlled?2)
@@ -185,7 +185,7 @@
Key1 = CollectionId,
Hasher2 = Blake2_128Concat,
Key2 = TokenId,
- Value = T::BlockNumber,
+ Value = BlockNumberFor<T>,
QueryKind = OptionQuery,
>;
/// Collection id (controlled?2), owning user (real)
@@ -196,7 +196,7 @@
Key1 = CollectionId,
Hasher2 = Twox64Concat,
Key2 = T::AccountId,
- Value = T::BlockNumber,
+ Value = BlockNumberFor<T>,
QueryKind = OptionQuery,
>;
/// Collection id (controlled?2), token id (controlled?2)
@@ -208,7 +208,7 @@
Key<Blake2_128Concat, TokenId>,
Key<Twox64Concat, T::AccountId>,
),
- Value = T::BlockNumber,
+ Value = BlockNumberFor<T>,
QueryKind = OptionQuery,
>;
//#endregion
@@ -221,7 +221,7 @@
Key1 = CollectionId,
Hasher2 = Blake2_128Concat,
Key2 = TokenId,
- Value = T::BlockNumber,
+ Value = BlockNumberFor<T>,
QueryKind = OptionQuery,
>;
@@ -233,7 +233,7 @@
Key1 = CollectionId,
Hasher2 = Blake2_128Concat,
Key2 = TokenId,
- Value = T::BlockNumber,
+ Value = BlockNumberFor<T>,
QueryKind = OptionQuery,
>;
/// Last sponsoring of fungible tokens approval in a collection
@@ -244,7 +244,7 @@
Key1 = CollectionId,
Hasher2 = Twox64Concat,
Key2 = T::AccountId,
- Value = T::BlockNumber,
+ Value = BlockNumberFor<T>,
QueryKind = OptionQuery,
>;
/// Last sponsoring of RFT approval in a collection
@@ -256,7 +256,7 @@
Key<Blake2_128Concat, TokenId>,
Key<Twox64Concat, T::AccountId>,
),
- Value = T::BlockNumber,
+ Value = BlockNumberFor<T>,
QueryKind = OptionQuery,
>;
primitives/app_promotion_rpc/Cargo.tomldiffbeforeafterboth--- a/primitives/app_promotion_rpc/Cargo.toml
+++ b/primitives/app_promotion_rpc/Cargo.toml
@@ -5,12 +5,12 @@
version = "0.1.0"
[dependencies]
-codec = { workspace = true }
pallet-evm = { workspace = true }
+parity-scale-codec = { workspace = true }
sp-api = { workspace = true }
sp-runtime = { workspace = true }
sp-std = { workspace = true }
[features]
default = ["std"]
-std = ["codec/std", "sp-api/std", "sp-runtime/std", "sp-std/std"]
+std = ["parity-scale-codec/std", "sp-api/std", "sp-runtime/std", "sp-std/std"]
primitives/app_promotion_rpc/src/lib.rsdiffbeforeafterboth--- a/primitives/app_promotion_rpc/src/lib.rs
+++ b/primitives/app_promotion_rpc/src/lib.rs
@@ -16,12 +16,12 @@
#![cfg_attr(not(feature = "std"), no_std)]
-use sp_std::vec::Vec;
-use codec::Decode;
+use parity_scale_codec::Decode;
use sp_runtime::{
+ traits::{AtLeast32BitUnsigned, Member},
DispatchError,
- traits::{AtLeast32BitUnsigned, Member},
};
+use sp_std::vec::Vec;
type Result<T> = core::result::Result<T, DispatchError>;
primitives/common/Cargo.tomldiffbeforeafterboth--- a/primitives/common/Cargo.toml
+++ b/primitives/common/Cargo.toml
@@ -13,6 +13,7 @@
std = [
'cumulus-primitives-core/std',
'fp-rpc/std',
+ 'fp-self-contained/std',
'frame-support/std',
'pallet-evm/std',
'sp-consensus-aura/std',
@@ -24,6 +25,7 @@
[dependencies]
cumulus-primitives-core = { workspace = true }
fp-rpc = { workspace = true }
+fp-self-contained = { workspace = true }
frame-support = { workspace = true }
pallet-evm = { workspace = true }
sp-consensus-aura = { workspace = true }
primitives/common/src/constants.rsdiffbeforeafterboth--- a/primitives/common/src/constants.rs
+++ b/primitives/common/src/constants.rs
@@ -14,13 +14,14 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-use sp_runtime::Perbill;
+use cumulus_primitives_core::relay_chain::MAX_POV_SIZE;
use frame_support::{
parameter_types,
- weights::{Weight, constants::WEIGHT_REF_TIME_PER_SECOND},
+ weights::{constants::WEIGHT_REF_TIME_PER_SECOND, Weight},
};
-use cumulus_primitives_core::relay_chain::MAX_POV_SIZE;
-use crate::types::{BlockNumber, Balance};
+use sp_runtime::Perbill;
+
+use crate::types::{Balance, BlockNumber};
pub const MILLISECS_PER_BLOCK: u64 = 12000;
pub const MILLISECS_PER_RELAY_BLOCK: u64 = 6000;
@@ -28,14 +29,14 @@
pub const SLOT_DURATION: u64 = MILLISECS_PER_BLOCK;
// These time units are defined in number of blocks.
-pub const MINUTES: BlockNumber = 60_000 / (MILLISECS_PER_BLOCK as BlockNumber);
-pub const HOURS: BlockNumber = MINUTES * 60;
-pub const DAYS: BlockNumber = HOURS * 24;
+pub const MINUTES: u32 = 60_000 / (MILLISECS_PER_BLOCK as u32);
+pub const HOURS: u32 = MINUTES * 60;
+pub const DAYS: u32 = HOURS * 24;
// These time units are defined in number of relay blocks.
-pub const RELAY_MINUTES: BlockNumber = 60_000 / (MILLISECS_PER_RELAY_BLOCK as BlockNumber);
-pub const RELAY_HOURS: BlockNumber = RELAY_MINUTES * 60;
-pub const RELAY_DAYS: BlockNumber = RELAY_HOURS * 24;
+pub const RELAY_MINUTES: u32 = 60_000 / (MILLISECS_PER_RELAY_BLOCK as u32);
+pub const RELAY_HOURS: u32 = RELAY_MINUTES * 60;
+pub const RELAY_DAYS: u32 = RELAY_HOURS * 24;
pub const MICROUNIQUE: Balance = 1_000_000_000_000;
pub const MILLIUNIQUE: Balance = 1_000 * MICROUNIQUE;
primitives/common/src/types.rsdiffbeforeafterboth--- a/primitives/common/src/types.rs
+++ b/primitives/common/src/types.rs
@@ -16,7 +16,7 @@
use sp_runtime::{
generic,
- traits::{Verify, IdentifyAccount},
+ traits::{IdentifyAccount, Verify},
MultiSignature,
};
@@ -27,7 +27,7 @@
pub mod opaque {
pub use sp_runtime::{generic, traits::BlakeTwo256, OpaqueExtrinsic as UncheckedExtrinsic};
- pub use super::{BlockNumber, Signature, AccountId, Balance, Index, Hash, AuraId};
+ pub use super::{AccountId, AuraId, Balance, BlockNumber, Hash, Signature};
#[derive(Debug, Clone)]
pub enum RuntimeId {
@@ -37,10 +37,8 @@
Unknown(sp_std::vec::Vec<u8>),
}
- /// Opaque block header type.
pub type Header = generic::Header<BlockNumber, BlakeTwo256>;
- /// Opaque block type.
pub type Block = generic::Block<Header, UncheckedExtrinsic>;
pub trait RuntimeInstance {
@@ -71,7 +69,7 @@
pub type Balance = u128;
/// Index of a transaction in the chain.
-pub type Index = u32;
+pub type Nonce = u32;
/// A hash of some data used by the chain.
pub type Hash = sp_core::H256;
primitives/data-structs/Cargo.tomldiffbeforeafterboth--- a/primitives/data-structs/Cargo.toml
+++ b/primitives/data-structs/Cargo.toml
@@ -9,20 +9,18 @@
version = "0.2.2"
[dependencies]
-# Note: `package = "parity-scale-codec"` must be supplied since the `Encode` macro searches for it.
-codec = { workspace = true, package = "parity-scale-codec" }
-
+bondrewd = { version = "0.1.14", features = ["derive"], default-features = false }
derivative = { workspace = true }
+evm-coder = { workspace = true }
frame-support = { workspace = true }
pallet-evm = { workspace = true }
+parity-scale-codec = { workspace = true }
scale-info = { workspace = true }
-serde = { workspace = true, optional = true }
+serde = { workspace = true }
sp-core = { workspace = true }
sp-runtime = { workspace = true }
sp-std = { workspace = true }
-bondrewd = { version = "0.1.14", features = ["derive"], default-features = false }
struct-versioning = { workspace = true }
-evm-coder = { workspace = true }
[features]
default = ["std"]
@@ -30,9 +28,9 @@
runtime-benchmarks = []
serde1 = ["serde/alloc"]
std = [
- "codec/std",
"frame-support/std",
"pallet-evm/std",
+ "parity-scale-codec/std",
"serde/std",
"serde1",
"sp-core/std",
primitives/data-structs/src/bondrewd_codec.rsdiffbeforeafterboth--- a/primitives/data-structs/src/bondrewd_codec.rs
+++ b/primitives/data-structs/src/bondrewd_codec.rs
@@ -5,12 +5,14 @@
macro_rules! bondrewd_codec {
($T:ty) => {
impl Encode for $T {
- fn encode_to<O: codec::Output + ?Sized>(&self, dest: &mut O) {
+ fn encode_to<O: parity_scale_codec::Output + ?Sized>(&self, dest: &mut O) {
dest.write(&self.into_bytes())
}
}
- impl codec::Decode for $T {
- fn decode<I: codec::Input + ?Sized>(from: &mut I) -> Result<Self, codec::Error> {
+ impl parity_scale_codec::Decode for $T {
+ fn decode<I: parity_scale_codec::Input + ?Sized>(
+ from: &mut I,
+ ) -> Result<Self, parity_scale_codec::Error> {
let mut bytes = [0; Self::BYTE_SIZE];
from.read(&mut bytes)?;
Ok(Self::from_bytes(bytes))
primitives/data-structs/src/bounded.rsdiffbeforeafterboth--- a/primitives/data-structs/src/bounded.rs
+++ b/primitives/data-structs/src/bounded.rs
@@ -17,22 +17,24 @@
//! This module contins implementations for support bounded structures ([`BoundedVec`], [`BoundedBTreeMap`], [`BoundedBTreeSet`]) in [`serde`].
use core::fmt;
-use sp_std::collections::{btree_map::BTreeMap, btree_set::BTreeSet};
-use sp_std::vec::Vec;
use frame_support::{
+ storage::{bounded_btree_map::BoundedBTreeMap, bounded_btree_set::BoundedBTreeSet},
BoundedVec,
- storage::{bounded_btree_map::BoundedBTreeMap, bounded_btree_set::BoundedBTreeSet},
};
+use sp_std::{
+ collections::{btree_map::BTreeMap, btree_set::BTreeSet},
+ vec::Vec,
+};
/// [`serde`] implementations for [`BoundedVec`].
-#[cfg(feature = "serde1")]
pub mod vec_serde {
use core::convert::TryFrom;
- use frame_support::{BoundedVec, traits::Get};
+
+ use frame_support::{traits::Get, BoundedVec};
use serde::{
+ de::{self, Deserialize, Error},
ser::{self, Serialize},
- de::{self, Deserialize, Error},
};
use sp_std::vec::Vec;
@@ -66,17 +68,17 @@
(v as &Vec<V>).fmt(f)
}
-#[cfg(feature = "serde1")]
#[allow(dead_code)]
/// [`serde`] implementations for [`BoundedBTreeMap`].
pub mod map_serde {
use core::convert::TryFrom;
- use sp_std::collections::btree_map::BTreeMap;
- use frame_support::{traits::Get, storage::bounded_btree_map::BoundedBTreeMap};
+
+ use frame_support::{storage::bounded_btree_map::BoundedBTreeMap, traits::Get};
use serde::{
+ de::{self, Deserialize, Error},
ser::{self, Serialize},
- de::{self, Deserialize, Error},
};
+ use sp_std::collections::btree_map::BTreeMap;
pub fn serialize<D, K, V, S>(
value: &BoundedBTreeMap<K, V, S>,
serializer: D,
@@ -117,17 +119,17 @@
(v as &BTreeMap<K, V>).fmt(f)
}
-#[cfg(feature = "serde1")]
#[allow(dead_code)]
/// [`serde`] implementations for [`BoundedBTreeSet`].
pub mod set_serde {
use core::convert::TryFrom;
- use sp_std::collections::btree_set::BTreeSet;
- use frame_support::{traits::Get, storage::bounded_btree_set::BoundedBTreeSet};
+
+ use frame_support::{storage::bounded_btree_set::BoundedBTreeSet, traits::Get};
use serde::{
+ de::{self, Deserialize, Error},
ser::{self, Serialize},
- de::{self, Deserialize, Error},
};
+ use sp_std::collections::btree_set::BTreeSet;
pub fn serialize<D, K, S>(
value: &BoundedBTreeSet<K, S>,
serializer: D,
primitives/data-structs/src/lib.rsdiffbeforeafterboth--- a/primitives/data-structs/src/lib.rs
+++ b/primitives/data-structs/src/lib.rs
@@ -25,20 +25,21 @@
fmt,
ops::Deref,
};
-use frame_support::storage::{bounded_btree_map::BoundedBTreeMap, bounded_btree_set::BoundedBTreeSet};
-#[cfg(feature = "serde")]
-use serde::{Serialize, Deserialize};
-
+use bondrewd::Bitfields;
+use derivative::Derivative;
+use evm_coder::AbiCoderFlags;
+use frame_support::{
+ storage::{bounded_btree_map::BoundedBTreeMap, bounded_btree_set::BoundedBTreeSet},
+ traits::ConstU32,
+ BoundedVec,
+};
+use parity_scale_codec::{Decode, Encode, EncodeLike, MaxEncodedLen};
+use scale_info::TypeInfo;
+use serde::{Deserialize, Serialize};
use sp_core::U256;
-use sp_runtime::{ArithmeticError, sp_std::prelude::Vec};
+use sp_runtime::{sp_std::prelude::Vec, ArithmeticError};
use sp_std::collections::btree_set::BTreeSet;
-use codec::{Decode, Encode, EncodeLike, MaxEncodedLen};
-use frame_support::{BoundedVec, traits::ConstU32};
-use derivative::Derivative;
-use scale_info::TypeInfo;
-use evm_coder::AbiCoderFlags;
-use bondrewd::Bitfields;
mod bondrewd_codec;
mod bounded;
@@ -153,8 +154,9 @@
Default,
TypeInfo,
MaxEncodedLen,
+ Serialize,
+ Deserialize,
)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
pub struct CollectionId(pub u32);
impl EncodeLike<u32> for CollectionId {}
impl EncodeLike<CollectionId> for u32 {}
@@ -187,8 +189,9 @@
Default,
TypeInfo,
MaxEncodedLen,
+ Serialize,
+ Deserialize,
)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
pub struct TokenId(pub u32);
impl EncodeLike<u32> for TokenId {}
impl EncodeLike<TokenId> for u32 {}
@@ -221,8 +224,7 @@
/// Token data.
#[struct_versioning::versioned(version = 2, upper)]
-#[derive(Encode, Decode, Clone, PartialEq, TypeInfo)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+#[derive(Encode, Decode, Clone, PartialEq, TypeInfo, Serialize, Deserialize)]
pub struct TokenData<CrossAccountId> {
/// Properties of token.
pub properties: Vec<Property>,
@@ -251,8 +253,9 @@
/// Collection can represent various types of tokens.
/// Each collection can contain only one type of tokens at a time.
/// This type helps to understand which tokens the collection contains.
-#[derive(Encode, Decode, Eq, Debug, Clone, PartialEq, TypeInfo, MaxEncodedLen)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+#[derive(
+ Encode, Decode, Eq, Debug, Clone, PartialEq, TypeInfo, MaxEncodedLen, Serialize, Deserialize,
+)]
pub enum CollectionMode {
/// Non fungible tokens.
NFT,
@@ -279,8 +282,19 @@
}
/// Access mode for some token operations.
-#[derive(Encode, Decode, Eq, Debug, Clone, Copy, PartialEq, TypeInfo, MaxEncodedLen)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+#[derive(
+ Encode,
+ Decode,
+ Eq,
+ Debug,
+ Clone,
+ Copy,
+ PartialEq,
+ TypeInfo,
+ MaxEncodedLen,
+ Serialize,
+ Deserialize,
+)]
pub enum AccessMode {
/// Access grant for owner and admins. Used as default.
Normal,
@@ -294,8 +308,9 @@
}
// TODO: remove in future.
-#[derive(Encode, Decode, Eq, Debug, Clone, PartialEq, TypeInfo, MaxEncodedLen)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+#[derive(
+ Encode, Decode, Eq, Debug, Clone, PartialEq, TypeInfo, MaxEncodedLen, Serialize, Deserialize,
+)]
pub enum SchemaVersion {
ImageURL,
Unique,
@@ -307,16 +322,16 @@
}
// TODO: unused type
-#[derive(Encode, Decode, Default, Debug, Clone, PartialEq, TypeInfo)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+#[derive(Encode, Decode, Default, Debug, Clone, PartialEq, TypeInfo, Serialize, Deserialize)]
pub struct Ownership<AccountId> {
pub owner: AccountId,
pub fraction: u128,
}
/// The state of collection sponsorship.
-#[derive(Encode, Decode, Debug, Clone, PartialEq, TypeInfo, MaxEncodedLen)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+#[derive(
+ Encode, Decode, Debug, Clone, PartialEq, TypeInfo, MaxEncodedLen, Serialize, Deserialize,
+)]
pub enum SponsorshipState<AccountId> {
/// The fees are applied to the transaction sender.
Disabled,
@@ -444,8 +459,7 @@
pub meta_update_permission: MetaUpdatePermission,
}
-#[derive(Debug, Encode, Decode, Clone, PartialEq, TypeInfo)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+#[derive(Debug, Encode, Decode, Clone, PartialEq, TypeInfo, Serialize, Deserialize)]
pub struct RpcCollectionFlags {
/// Is collection is foreign.
pub foreign: bool,
@@ -455,8 +469,7 @@
/// Collection parameters, used in RPC calls (see [`Collection`] for the storage version).
#[struct_versioning::versioned(version = 2, upper)]
-#[derive(Debug, Encode, Decode, Clone, PartialEq, TypeInfo)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+#[derive(Debug, Encode, Decode, Clone, PartialEq, TypeInfo, Serialize, Deserialize)]
pub struct RpcCollection<AccountId> {
/// Collection owner account.
pub owner: AccountId,
@@ -538,8 +551,10 @@
pub struct RawEncoded(Vec<u8>);
-impl codec::Decode for RawEncoded {
- fn decode<I: codec::Input>(input: &mut I) -> Result<Self, codec::Error> {
+impl parity_scale_codec::Decode for RawEncoded {
+ fn decode<I: parity_scale_codec::Input>(
+ input: &mut I,
+ ) -> Result<Self, parity_scale_codec::Error> {
let mut out = Vec::new();
while let Ok(v) = input.read_byte() {
out.push(v);
@@ -612,8 +627,18 @@
///
/// Update with `pallet_common::Pallet::clamp_limits`.
// IMPORTANT: When adding/removing fields from this struct - don't forget to also
-#[derive(Encode, Decode, Debug, Default, Clone, PartialEq, TypeInfo, MaxEncodedLen)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+#[derive(
+ Encode,
+ Decode,
+ Debug,
+ Default,
+ Clone,
+ PartialEq,
+ TypeInfo,
+ MaxEncodedLen,
+ Serialize,
+ Deserialize,
+)]
// When adding/removing fields from this struct - don't forget to also update with `pallet_common::Pallet::clamp_limits`.
// TODO: move `pallet_common::Pallet::clamp_limits` into `impl CollectionLimits`.
// TODO: may be remove [`Option`] and **pub** from fields and create struct with default values.
@@ -769,8 +794,18 @@
/// Some fields are wrapped in [`Option`], where `None` means chain default.
///
/// Update with `pallet_common::Pallet::clamp_permissions`.
-#[derive(Encode, Decode, Debug, Default, Clone, PartialEq, TypeInfo, MaxEncodedLen)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+#[derive(
+ Encode,
+ Decode,
+ Debug,
+ Default,
+ Clone,
+ PartialEq,
+ TypeInfo,
+ MaxEncodedLen,
+ Serialize,
+ Deserialize,
+)]
// When adding/removing fields from this struct - don't forget to also update `pallet_common::Pallet::clamp_permissions`.
// TODO: move `pallet_common::Pallet::clamp_permissions` into `impl CollectionPermissions`.
pub struct CollectionPermissions {
@@ -821,11 +856,12 @@
type OwnerRestrictedSetInner = BoundedBTreeSet<CollectionId, ConstU32<16>>;
/// Wraper for collections set allowing nest.
-#[derive(Encode, Decode, Clone, PartialEq, TypeInfo, MaxEncodedLen, Derivative)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+#[derive(
+ Encode, Decode, Clone, PartialEq, TypeInfo, MaxEncodedLen, Derivative, Serialize, Deserialize,
+)]
#[derivative(Debug)]
pub struct OwnerRestrictedSet(
- #[cfg_attr(feature = "serde1", serde(with = "bounded::set_serde"))]
+ #[serde(with = "bounded::set_serde")]
#[derivative(Debug(format_with = "bounded::set_debug"))]
pub OwnerRestrictedSetInner,
);
@@ -862,8 +898,9 @@
}
/// Part of collection permissions, if set, defines who is able to nest tokens into other tokens.
-#[derive(Encode, Decode, Clone, PartialEq, TypeInfo, MaxEncodedLen, Derivative)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+#[derive(
+ Encode, Decode, Clone, PartialEq, TypeInfo, MaxEncodedLen, Derivative, Serialize, Deserialize,
+)]
#[derivative(Debug)]
pub struct NestingPermissions {
/// Owner of token can nest tokens under it.
@@ -881,8 +918,9 @@
/// Enum denominating how often can sponsoring occur if it is enabled.
///
/// Used for [`collection limits`](CollectionLimits).
-#[derive(Encode, Decode, Debug, Clone, Copy, PartialEq, TypeInfo, MaxEncodedLen)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+#[derive(
+ Encode, Decode, Debug, Clone, Copy, PartialEq, TypeInfo, MaxEncodedLen, Serialize, Deserialize,
+)]
pub enum SponsoringRateLimit {
/// Sponsoring is disabled, and the collection sponsor will not pay for transactions
SponsoringDisabled,
@@ -891,42 +929,73 @@
}
/// Data used to describe an NFT at creation.
-#[derive(Encode, Decode, MaxEncodedLen, Default, PartialEq, Clone, Derivative, TypeInfo)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+#[derive(
+ Encode,
+ Decode,
+ MaxEncodedLen,
+ Default,
+ PartialEq,
+ Clone,
+ Derivative,
+ TypeInfo,
+ Serialize,
+ Deserialize,
+)]
#[derivative(Debug)]
pub struct CreateNftData {
/// Key-value pairs used to describe the token as metadata
- #[cfg_attr(feature = "serde1", serde(with = "bounded::vec_serde"))]
+ #[serde(with = "bounded::vec_serde")]
#[derivative(Debug(format_with = "bounded::vec_debug"))]
/// Properties that wil be assignet to created item.
pub properties: CollectionPropertiesVec,
}
/// Data used to describe a Fungible token at creation.
-#[derive(Encode, Decode, MaxEncodedLen, Default, Debug, Clone, PartialEq, TypeInfo)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+#[derive(
+ Encode,
+ Decode,
+ MaxEncodedLen,
+ Default,
+ Debug,
+ Clone,
+ PartialEq,
+ TypeInfo,
+ Serialize,
+ Deserialize,
+)]
pub struct CreateFungibleData {
/// Number of fungible coins minted
pub value: u128,
}
/// Data used to describe a Refungible token at creation.
-#[derive(Encode, Decode, MaxEncodedLen, Default, PartialEq, Clone, Derivative, TypeInfo)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+#[derive(
+ Encode,
+ Decode,
+ MaxEncodedLen,
+ Default,
+ PartialEq,
+ Clone,
+ Derivative,
+ TypeInfo,
+ Serialize,
+ Deserialize,
+)]
#[derivative(Debug)]
pub struct CreateReFungibleData {
/// Number of pieces the RFT is split into
pub pieces: u128,
/// Key-value pairs used to describe the token as metadata
- #[cfg_attr(feature = "serde1", serde(with = "bounded::vec_serde"))]
+ #[serde(with = "bounded::vec_serde")]
#[derivative(Debug(format_with = "bounded::vec_debug"))]
pub properties: CollectionPropertiesVec,
}
// TODO: remove this.
-#[derive(Encode, Decode, Debug, Clone, PartialEq, TypeInfo, MaxEncodedLen)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+#[derive(
+ Encode, Decode, Debug, Clone, PartialEq, TypeInfo, MaxEncodedLen, Serialize, Deserialize,
+)]
pub enum MetaUpdatePermission {
ItemOwner,
Admin,
@@ -935,8 +1004,9 @@
/// Enum holding data used for creation of all three item types.
/// Unified data for create item.
-#[derive(Encode, Decode, MaxEncodedLen, PartialEq, Clone, Debug, TypeInfo)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+#[derive(
+ Encode, Decode, MaxEncodedLen, PartialEq, Clone, Debug, TypeInfo, Serialize, Deserialize,
+)]
pub enum CreateItemData {
/// Data for create NFT.
NFT(CreateNftData),
@@ -1025,8 +1095,9 @@
}
/// Token's address, dictated by its collection and token IDs.
-#[derive(Encode, Decode, MaxEncodedLen, PartialEq, Clone, Debug, TypeInfo)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+#[derive(
+ Encode, Decode, MaxEncodedLen, PartialEq, Clone, Debug, TypeInfo, Serialize, Deserialize,
+)]
// todo possibly rename to be used generally as an address pair
pub struct TokenChild {
/// Token id.
@@ -1037,8 +1108,9 @@
}
/// Collection statistics.
-#[derive(Encode, Decode, MaxEncodedLen, PartialEq, Clone, Debug, TypeInfo)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+#[derive(
+ Encode, Decode, MaxEncodedLen, PartialEq, Clone, Debug, TypeInfo, Serialize, Deserialize,
+)]
pub struct CollectionStats {
/// Number of created items.
pub created: u32,
@@ -1060,10 +1132,9 @@
fn type_info() -> scale_info::Type {
use scale_info::{
- Type, Path,
build::{FieldsBuilder, UnnamedFields},
form::MetaForm,
- type_params,
+ type_params, Path, Type,
};
Type::builder()
.path(Path::new("up_data_structs", "PhantomType"))
@@ -1092,8 +1163,18 @@
pub type PropertyValue = BoundedBytes<ConstU32<MAX_PROPERTY_VALUE_LENGTH>>;
/// Property permission.
-#[derive(Encode, Decode, TypeInfo, Debug, MaxEncodedLen, PartialEq, Clone, Default)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+#[derive(
+ Encode,
+ Decode,
+ TypeInfo,
+ Debug,
+ MaxEncodedLen,
+ PartialEq,
+ Clone,
+ Default,
+ Serialize,
+ Deserialize,
+)]
pub struct PropertyPermission {
/// Permission to change the property and property permission.
///
@@ -1119,15 +1200,16 @@
}
/// Property is simpl key-value record.
-#[derive(Encode, Decode, Debug, TypeInfo, Clone, PartialEq, MaxEncodedLen)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+#[derive(
+ Encode, Decode, Debug, TypeInfo, Clone, PartialEq, MaxEncodedLen, Serialize, Deserialize,
+)]
pub struct Property {
/// Property key.
- #[cfg_attr(feature = "serde1", serde(with = "bounded::vec_serde"))]
+ #[serde(with = "bounded::vec_serde")]
pub key: PropertyKey,
/// Property value.
- #[cfg_attr(feature = "serde1", serde(with = "bounded::vec_serde"))]
+ #[serde(with = "bounded::vec_serde")]
pub value: PropertyValue,
}
@@ -1138,8 +1220,9 @@
}
/// Record for proprty key permission.
-#[derive(Encode, Decode, TypeInfo, Debug, MaxEncodedLen, PartialEq, Clone)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
+#[derive(
+ Encode, Decode, TypeInfo, Debug, MaxEncodedLen, PartialEq, Clone, Serialize, Deserialize,
+)]
pub struct PropertyKeyPermission {
/// Key.
#[cfg_attr(feature = "serde1", serde(with = "bounded::vec_serde"))]
@@ -1362,7 +1445,7 @@
scoped_slice_size(PropertyScope::None, data)
}
fn scoped_slice_size(scope: PropertyScope, data: &[u8]) -> u32 {
- use codec::Compact;
+ use parity_scale_codec::Compact;
let prefix = scope.prefix();
<Compact<u32>>::encoded_size(&Compact(data.len() as u32 + prefix.len() as u32)) as u32
+ data.len() as u32
primitives/data-structs/src/mapping.rsdiffbeforeafterboth--- a/primitives/data-structs/src/mapping.rs
+++ b/primitives/data-structs/src/mapping.rs
@@ -18,10 +18,10 @@
use core::marker::PhantomData;
+use pallet_evm::account::CrossAccountId;
use sp_core::H160;
use crate::{CollectionId, TokenId};
-use pallet_evm::account::CrossAccountId;
/// Trait for mapping between token id and some `Address`.
pub trait TokenAddressMapping<Address> {
primitives/data-structs/src/migration.rsdiffbeforeafterboth--- a/primitives/data-structs/src/migration.rs
+++ b/primitives/data-structs/src/migration.rs
@@ -17,8 +17,9 @@
/// Storage migration is not required for this change, as SponsoringRateLimit has same encoding as Option<u32>
#[test]
fn sponsoring_rate_limit_has_same_encoding_as_option_u32() {
+ use parity_scale_codec::Encode;
+
use crate::SponsoringRateLimit;
- use codec::Encode;
fn limit_to_option(limit: SponsoringRateLimit) -> Option<u32> {
match limit {
@@ -41,8 +42,9 @@
#[test]
fn collection_flags_have_same_encoding_as_bool() {
+ use parity_scale_codec::Encode;
+
use crate::CollectionFlags;
- use codec::Encode;
assert_eq!(
true.encode(),
primitives/pov-estimate-rpc/Cargo.tomldiffbeforeafterboth--- a/primitives/pov-estimate-rpc/Cargo.toml
+++ b/primitives/pov-estimate-rpc/Cargo.toml
@@ -5,7 +5,7 @@
version = "0.1.0"
[dependencies]
-codec = { workspace = true }
+parity-scale-codec = { workspace = true }
scale-info = { workspace = true }
serde = { workspace = true, optional = true }
sp-api = { workspace = true }
@@ -15,4 +15,12 @@
[features]
default = ["std"]
-std = ["codec/std", "scale-info/std", "serde/std", "sp-api/std", "sp-core/std", "sp-runtime/std", "sp-std/std"]
+std = [
+ "parity-scale-codec/std",
+ "scale-info/std",
+ "serde/std",
+ "sp-api/std",
+ "sp-core/std",
+ "sp-runtime/std",
+ "sp-std/std",
+]
primitives/pov-estimate-rpc/src/lib.rsdiffbeforeafterboth--- a/primitives/pov-estimate-rpc/src/lib.rs
+++ b/primitives/pov-estimate-rpc/src/lib.rs
@@ -17,12 +17,10 @@
#![cfg_attr(not(feature = "std"), no_std)]
use scale_info::TypeInfo;
-use sp_std::vec::Vec;
-
#[cfg(feature = "std")]
use serde::Serialize;
-
use sp_runtime::ApplyExtrinsicResult;
+use sp_std::vec::Vec;
#[cfg_attr(feature = "std", derive(Serialize))]
#[derive(Debug, TypeInfo)]
primitives/rpc/Cargo.tomldiffbeforeafterboth--- a/primitives/rpc/Cargo.toml
+++ b/primitives/rpc/Cargo.toml
@@ -5,9 +5,9 @@
version = "0.1.3"
[dependencies]
-codec = { workspace = true }
pallet-common = { workspace = true }
pallet-evm = { workspace = true }
+parity-scale-codec = { workspace = true }
sp-api = { workspace = true }
sp-core = { workspace = true }
sp-runtime = { workspace = true }
@@ -17,8 +17,8 @@
[features]
default = ["std"]
std = [
- "codec/std",
"pallet-common/std",
+ "parity-scale-codec/std",
"sp-api/std",
"sp-core/std",
"sp-runtime/std",
primitives/rpc/src/lib.rsdiffbeforeafterboth--- a/primitives/rpc/src/lib.rs
+++ b/primitives/rpc/src/lib.rs
@@ -18,15 +18,14 @@
extern crate alloc;
+use parity_scale_codec::Decode;
+use sp_runtime::DispatchError;
+use sp_std::vec::Vec;
use up_data_structs::{
- CollectionId, TokenId, RawEncoded, RpcCollection, CollectionStats, CollectionLimits, Property,
- PropertyKeyPermission, TokenData, TokenChild, TokenDataVersion1,
+ CollectionId, CollectionLimits, CollectionStats, Property, PropertyKeyPermission,
+ RpcCollection, TokenChild, TokenData, TokenId,
};
-use sp_std::vec::Vec;
-use codec::Decode;
-use sp_runtime::DispatchError;
-
type Result<T> = core::result::Result<T, DispatchError>;
sp_api::decl_runtime_apis! {
@@ -82,7 +81,7 @@
collection: CollectionId,
token_id: TokenId,
keys: Option<Vec<Vec<u8>>>
- ) -> Result<TokenDataVersion1<CrossAccountId>>;
+ ) -> Result<up_data_structs::TokenDataVersion1<CrossAccountId>>;
/// Total number of tokens in collection.
fn total_supply(collection: CollectionId) -> Result<u32>;
@@ -117,7 +116,7 @@
fn collection_by_id(collection: CollectionId) -> Result<Option<RpcCollection<AccountId>>>;
#[changed_in(3)]
- fn collection_by_id(collection: CollectionId) -> Result<Option<RawEncoded>>;
+ fn collection_by_id(collection: CollectionId) -> Result<Option<up_data_structs::RawEncoded>>;
/// Get collection stats.
fn collection_stats() -> Result<CollectionStats>;
runtime/common/config/ethereum.rsdiffbeforeafterboth--- a/runtime/common/config/ethereum.rs
+++ b/runtime/common/config/ethereum.rs
@@ -1,22 +1,24 @@
-use sp_core::{U256, H160};
use frame_support::{
- weights::{Weight, constants::WEIGHT_REF_TIME_PER_SECOND},
- traits::{FindAuthor},
- parameter_types, ConsensusEngineId,
+ parameter_types,
+ traits::FindAuthor,
+ weights::{constants::WEIGHT_REF_TIME_PER_SECOND, Weight},
+ ConsensusEngineId,
};
-use sp_runtime::{RuntimeAppPublic, Perbill, traits::ConstU32};
+use pallet_ethereum::PostLogContent;
+use pallet_evm::{EnsureAddressTruncated, HashedAddressMapping};
+use sp_core::{H160, U256};
+use sp_runtime::{traits::ConstU32, Perbill, RuntimeAppPublic};
+use up_common::constants::*;
+
use crate::{
runtime_common::{
config::sponsoring::DefaultSponsoringRateLimit,
- DealWithFees,
dispatch::CollectionDispatchT,
ethereum::{precompiles::UniquePrecompiles, sponsoring::EvmSponsorshipHandler},
+ DealWithFees,
},
- Runtime, Aura, Balances, RuntimeEvent, ChainId,
+ Aura, Balances, ChainId, Runtime, RuntimeEvent,
};
-use pallet_evm::{EnsureAddressTruncated, HashedAddressMapping};
-use pallet_ethereum::PostLogContent;
-use up_common::constants::*;
pub type CrossAccountId = pallet_evm::account::BasicCrossAccountId<Runtime>;
@@ -87,12 +89,13 @@
type OnCreate = pallet_evm_contract_helpers::HelpersOnCreate<Self>;
type ChainId = ChainId;
type Runner = pallet_evm::runner::stack::Runner<Self>;
- type OnChargeTransaction = pallet_evm::EVMCurrencyAdapter<Balances, DealWithFees>;
- type TransactionValidityHack = pallet_evm_transaction_payment::TransactionValidityHack<Self>;
+ type OnChargeTransaction =
+ pallet_evm_transaction_payment::WrappedEVMCurrencyAdapter<Balances, DealWithFees>;
type FindAuthor = EthereumFindAuthor<Aura>;
type Timestamp = crate::Timestamp;
type WeightInfo = pallet_evm::weights::SubstrateWeight<Self>;
type GasLimitPovSizeRatio = ProofSizePerGas;
+ type OnCheckEvmTransaction = pallet_evm_transaction_payment::TransactionValidity<Self>;
}
impl pallet_evm_migration::Config for Runtime {
runtime/common/config/governance/fellowship.rsdiffbeforeafterboth--- a/runtime/common/config/governance/fellowship.rs
+++ b/runtime/common/config/governance/fellowship.rs
@@ -1,8 +1,11 @@
-use crate::{Preimage, Treasury, RuntimeCall, RuntimeEvent, Scheduler, FellowshipReferenda, Runtime};
-use super::*;
use pallet_gov_origins::Origin as GovOrigins;
use pallet_ranked_collective::{Config as RankedConfig, Rank, TallyOf};
+use super::*;
+use crate::{
+ FellowshipReferenda, Preimage, Runtime, RuntimeCall, RuntimeEvent, Scheduler, Treasury,
+};
+
pub const FELLOWSHIP_MODULE_ID: PalletId = PalletId(*b"flowship");
pub const DEMOCRACY_TRACK_ID: u16 = 10;
runtime/common/config/governance/mod.rsdiffbeforeafterboth--- a/runtime/common/config/governance/mod.rs
+++ b/runtime/common/config/governance/mod.rs
@@ -15,29 +15,31 @@
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
use frame_support::{
- PalletId, parameter_types,
+ pallet_prelude::*,
+ parameter_types,
traits::{
- EnsureOrigin, EqualPrivilegeOnly, EitherOfDiverse, EitherOf, MapSuccess, ConstU16, Polling,
+ ConstU16, EitherOf, EitherOfDiverse, EnsureOrigin, EqualPrivilegeOnly, MapSuccess, Polling,
},
weights::Weight,
- pallet_prelude::*,
+ PalletId,
};
-use frame_system::{EnsureRoot, EnsureNever};
+use frame_system::{EnsureNever, EnsureRoot};
+use pallet_collective::EnsureProportionAtLeast;
use sp_runtime::{
+ morph_types,
+ traits::{AccountIdConversion, CheckedSub, ConstU32, Convert, Replace},
Perbill,
- traits::{AccountIdConversion, ConstU32, Replace, CheckedSub, Convert},
- morph_types,
};
-use crate::{
- Runtime, RuntimeOrigin, RuntimeEvent, RuntimeCall, OriginCaller, Preimage, Balances, Treasury,
- Scheduler, Council, TechnicalCommittee,
-};
pub use up_common::{
- constants::{UNIQUE, DAYS, HOURS, MINUTES, CENTIUNIQUE},
+ constants::{CENTIUNIQUE, DAYS, HOURS, MINUTES, UNIQUE},
types::{AccountId, Balance, BlockNumber},
};
-use pallet_collective::EnsureProportionAtLeast;
+use crate::{
+ Balances, Council, OriginCaller, Preimage, Runtime, RuntimeCall, RuntimeEvent, RuntimeOrigin,
+ Scheduler, TechnicalCommittee, Treasury,
+};
+
pub mod council;
pub use council::*;
runtime/common/config/orml.rsdiffbeforeafterboth--- a/runtime/common/config/orml.rs
+++ b/runtime/common/config/orml.rs
@@ -20,26 +20,26 @@
};
use frame_system::EnsureSigned;
use orml_traits::{location::AbsoluteReserveProvider, parameter_type_with_key};
+use pallet_foreign_assets::{CurrencyId, NativeCurrency};
use sp_runtime::traits::Convert;
-use xcm::latest::{Weight, Junction::*, Junctions::*, MultiLocation};
-use xcm_executor::XcmExecutor;
use sp_std::{vec, vec::Vec};
-use pallet_foreign_assets::{CurrencyId, NativeCurrency};
+use staging_xcm::latest::{Junction::*, Junctions::*, MultiLocation, Weight};
+use staging_xcm_executor::XcmExecutor;
+use up_common::{
+ constants::*,
+ types::{AccountId, Balance},
+};
+
use crate::{
- Runtime, RuntimeEvent, RelayChainBlockNumberProvider,
runtime_common::config::{
+ pallets::TreasuryAccountId,
+ substrate::{MaxLocks, MaxReserves},
xcm::{
- SelfLocation, Weigher, XcmExecutorConfig, UniversalLocation,
- xcm_assets::{CurrencyIdConvert},
+ xcm_assets::CurrencyIdConvert, SelfLocation, UniversalLocation, Weigher,
+ XcmExecutorConfig,
},
- pallets::TreasuryAccountId,
- substrate::{MaxLocks, MaxReserves},
},
-};
-
-use up_common::{
- types::{AccountId, Balance},
- constants::*,
+ RelayChainBlockNumberProvider, Runtime, RuntimeEvent,
};
// Signed version of balance
runtime/common/config/pallets/app_promotion.rsdiffbeforeafterboth--- a/runtime/common/config/pallets/app_promotion.rs
+++ b/runtime/common/config/pallets/app_promotion.rs
@@ -14,18 +14,18 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-use crate::{
- runtime_common::config::pallets::{TreasuryAccountId, RelayChainBlockNumberProvider},
- Runtime, Balances, BlockNumber, Unique, RuntimeEvent, EvmContractHelpers, Maintenance,
-};
-
use frame_support::{parameter_types, PalletId};
use sp_arithmetic::Perbill;
use up_common::{
- constants::{UNIQUE, DAYS, RELAY_DAYS},
+ constants::{DAYS, RELAY_DAYS, UNIQUE},
types::Balance,
};
+use crate::{
+ runtime_common::config::pallets::{RelayChainBlockNumberProvider, TreasuryAccountId},
+ Balances, BlockNumber, EvmContractHelpers, Maintenance, Runtime, RuntimeEvent, Unique,
+};
+
parameter_types! {
pub const AppPromotionId: PalletId = PalletId(*b"appstake");
pub const RecalculationInterval: BlockNumber = RELAY_DAYS;
runtime/common/config/pallets/collator_selection.rsdiffbeforeafterboth--- a/runtime/common/config/pallets/collator_selection.rs
+++ b/runtime/common/config/pallets/collator_selection.rs
@@ -15,23 +15,21 @@
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
use frame_support::{parameter_types, PalletId};
-use crate::{
- Balance, Balances, BlockNumber, Runtime, RuntimeEvent, Aura, Session, SessionKeys,
- CollatorSelection, Treasury,
- config::pallets::{MaxCollators, SessionPeriod, TreasuryAccountId},
+#[cfg(not(feature = "governance"))]
+use frame_system::EnsureRoot;
+use pallet_configuration::{
+ CollatorSelectionDesiredCollatorsOverride, CollatorSelectionKickThresholdOverride,
+ CollatorSelectionLicenseBondOverride,
};
+use sp_runtime::Perbill;
+use up_common::constants::{MILLIUNIQUE, UNIQUE};
#[cfg(feature = "governance")]
use crate::config::governance;
-
-#[cfg(not(feature = "governance"))]
-use frame_system::EnsureRoot;
-
-use sp_runtime::Perbill;
-use up_common::constants::{UNIQUE, MILLIUNIQUE};
-use pallet_configuration::{
- CollatorSelectionKickThresholdOverride, CollatorSelectionLicenseBondOverride,
- CollatorSelectionDesiredCollatorsOverride,
+use crate::{
+ config::pallets::{MaxCollators, SessionPeriod, TreasuryAccountId},
+ Aura, Balance, Balances, BlockNumber, CollatorSelection, Runtime, RuntimeEvent,
+ RuntimeHoldReason, Session, SessionKeys, Treasury,
};
parameter_types! {
pub const SessionOffset: BlockNumber = 0;
@@ -107,6 +105,7 @@
impl pallet_collator_selection::Config for Runtime {
type RuntimeEvent = RuntimeEvent;
+ type RuntimeHoldReason = RuntimeHoldReason;
type Currency = Balances;
// We allow root only to execute privileged collator selection operations.
@@ -128,7 +127,6 @@
type ValidatorIdOf = pallet_collator_selection::IdentityCollator;
type ValidatorRegistration = Session;
type WeightInfo = pallet_collator_selection::weights::SubstrateWeight<Runtime>;
- type LicenceBondIdentifier = LicenceBondIdentifier;
type DesiredCollators = DesiredCollators;
type LicenseBond = LicenseBond;
type KickThreshold = KickThreshold;
runtime/common/config/pallets/foreign_asset.rsdiffbeforeafterboth--- a/runtime/common/config/pallets/foreign_asset.rs
+++ b/runtime/common/config/pallets/foreign_asset.rs
@@ -1,6 +1,7 @@
-use crate::{Runtime, RuntimeEvent, Balances};
use up_common::types::AccountId;
+use crate::{Balances, Runtime, RuntimeEvent};
+
impl pallet_foreign_assets::Config for Runtime {
type RuntimeEvent = RuntimeEvent;
type Currency = Balances;
runtime/common/config/pallets/mod.rsdiffbeforeafterboth--- a/runtime/common/config/pallets/mod.rs
+++ b/runtime/common/config/pallets/mod.rs
@@ -15,32 +15,30 @@
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
use alloc::string::{String, ToString};
-use frame_support::parameter_types;
+
+use frame_support::{
+ parameter_types,
+ traits::{ConstU32, ConstU64, Currency},
+};
+use sp_arithmetic::Perbill;
use sp_runtime::traits::AccountIdConversion;
+use up_common::{
+ constants::*,
+ types::{AccountId, Balance, BlockNumber},
+};
+use up_data_structs::mapping::{CrossTokenAddressMapping, EvmTokenAddressMapping};
+
+#[cfg(feature = "governance")]
+use crate::runtime_common::config::governance;
use crate::{
runtime_common::{
+ config::{ethereum::EvmCollectionHelpersAddress, substrate::TreasuryModuleId},
dispatch::CollectionDispatchT,
- config::{substrate::TreasuryModuleId, ethereum::EvmCollectionHelpersAddress},
weights::CommonWeights,
RelayChainBlockNumberProvider,
},
- Runtime, RuntimeEvent, RuntimeCall, VERSION, TOKEN_SYMBOL, DECIMALS, Balances,
-};
-use frame_support::traits::{ConstU32, ConstU64, Currency};
-use up_common::{
- types::{AccountId, Balance, BlockNumber},
- constants::*,
-};
-use up_data_structs::{
- mapping::{EvmTokenAddressMapping, CrossTokenAddressMapping},
+ Balances, Runtime, RuntimeCall, RuntimeEvent, DECIMALS, TOKEN_SYMBOL, VERSION,
};
-use sp_arithmetic::Perbill;
-
-#[cfg(feature = "governance")]
-use crate::runtime_common::config::governance;
-
-#[cfg(feature = "unique-scheduler")]
-pub mod scheduler;
#[cfg(feature = "foreign-assets")]
pub mod foreign_asset;
runtime/common/config/pallets/preimage.rsdiffbeforeafterboth--- a/runtime/common/config/pallets/preimage.rs
+++ b/runtime/common/config/pallets/preimage.rs
@@ -16,9 +16,10 @@
use frame_support::parameter_types;
use frame_system::EnsureRoot;
-use crate::{AccountId, Balance, Balances, Runtime, RuntimeEvent};
use up_common::constants::*;
+use crate::{AccountId, Balance, Balances, Runtime, RuntimeEvent};
+
parameter_types! {
pub PreimageBaseDeposit: Balance = 1000 * UNIQUE;
}
runtime/common/config/pallets/scheduler.rsdiffbeforeafterboth--- a/runtime/common/config/pallets/scheduler.rs
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
-// This file is part of Unique Network.
-
-// Unique Network is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// Unique Network is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-
-use frame_support::{
- traits::{PrivilegeCmp, EnsureOrigin},
- weights::Weight,
- parameter_types,
-};
-use frame_system::{EnsureRoot, RawOrigin};
-use sp_runtime::Perbill;
-use core::cmp::Ordering;
-use codec::Decode;
-use crate::{
- runtime_common::{scheduler::SchedulerPaymentExecutor, config::substrate::RuntimeBlockWeights},
- Runtime, RuntimeCall, RuntimeEvent, RuntimeOrigin, OriginCaller,
-};
-use pallet_unique_scheduler_v2::ScheduledEnsureOriginSuccess;
-use up_common::types::AccountId;
-
-parameter_types! {
- pub MaximumSchedulerWeight: Weight = Perbill::from_percent(50) *
- RuntimeBlockWeights::get().max_block;
- pub const MaxScheduledPerBlock: u32 = 50;
-
- pub const NoPreimagePostponement: Option<u32> = Some(10);
- pub const Preimage: Option<u32> = Some(10);
-}
-
-pub struct EnsureSignedOrRoot<AccountId>(sp_std::marker::PhantomData<AccountId>);
-impl<O: Into<Result<RawOrigin<AccountId>, O>> + From<RawOrigin<AccountId>>, AccountId: Decode>
- EnsureOrigin<O> for EnsureSignedOrRoot<AccountId>
-{
- type Success = ScheduledEnsureOriginSuccess<AccountId>;
- fn try_origin(o: O) -> Result<Self::Success, O> {
- o.into().and_then(|o| match o {
- RawOrigin::Root => Ok(ScheduledEnsureOriginSuccess::Root),
- RawOrigin::Signed(who) => Ok(ScheduledEnsureOriginSuccess::Signed(who)),
- r => Err(O::from(r)),
- })
- }
-}
-
-pub struct EqualOrRootOnly;
-impl PrivilegeCmp<OriginCaller> for EqualOrRootOnly {
- fn cmp_privilege(left: &OriginCaller, right: &OriginCaller) -> Option<Ordering> {
- use RawOrigin::*;
-
- let left = left.clone().try_into().ok()?;
- let right = right.clone().try_into().ok()?;
-
- match (left, right) {
- (Root, Root) => Some(Ordering::Equal),
- (Root, _) => Some(Ordering::Greater),
- (_, Root) => Some(Ordering::Less),
- lr @ _ => (lr.0 == lr.1).then(|| Ordering::Equal),
- }
- }
-}
-
-impl pallet_unique_scheduler_v2::Config for Runtime {
- type RuntimeEvent = RuntimeEvent;
- type RuntimeOrigin = RuntimeOrigin;
- type PalletsOrigin = OriginCaller;
- type RuntimeCall = RuntimeCall;
- type MaximumWeight = MaximumSchedulerWeight;
- type ScheduleOrigin = EnsureSignedOrRoot<AccountId>;
- type OriginPrivilegeCmp = EqualOrRootOnly;
- type MaxScheduledPerBlock = MaxScheduledPerBlock;
- type WeightInfo = ();
- type Preimages = ();
- type CallExecutor = SchedulerPaymentExecutor;
- type PrioritySetOrigin = EnsureRoot<AccountId>;
-}
runtime/common/config/parachain.rsdiffbeforeafterboth--- a/runtime/common/config/parachain.rs
+++ b/runtime/common/config/parachain.rs
@@ -14,10 +14,11 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-use frame_support::{weights::Weight, parameter_types};
-use crate::{Runtime, RuntimeEvent, XcmpQueue, DmpQueue};
+use frame_support::{parameter_types, weights::Weight};
use up_common::constants::*;
+use crate::{DmpQueue, Runtime, RuntimeEvent, XcmpQueue};
+
parameter_types! {
pub const ReservedDmpWeight: Weight = MAXIMUM_BLOCK_WEIGHT.saturating_div(4);
pub const ReservedXcmpWeight: Weight = MAXIMUM_BLOCK_WEIGHT.saturating_div(4);
runtime/common/config/sponsoring.rsdiffbeforeafterboth--- a/runtime/common/config/sponsoring.rs
+++ b/runtime/common/config/sponsoring.rs
@@ -14,14 +14,12 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-use crate::{
- runtime_common::{sponsoring::UniqueSponsorshipHandler},
- Runtime,
-};
use frame_support::parameter_types;
use sp_core::U256;
use up_common::{constants::*, types::BlockNumber};
+use crate::{runtime_common::sponsoring::UniqueSponsorshipHandler, Runtime};
+
parameter_types! {
pub const DefaultSponsoringRateLimit: BlockNumber = 1 * DAYS;
pub const DefaultSponsoringFeeLimit: U256 = U256::MAX;
runtime/common/config/substrate.rsdiffbeforeafterboth--- a/runtime/common/config/substrate.rs
+++ b/runtime/common/config/substrate.rs
@@ -15,31 +15,32 @@
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
use frame_support::{
- traits::{Everything, ConstU32, NeverEnsureOrigin},
+ dispatch::DispatchClass,
+ ord_parameter_types, parameter_types,
+ traits::{ConstBool, ConstU32, Everything, NeverEnsureOrigin},
weights::{
constants::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight},
ConstantMultiplier,
},
- dispatch::DispatchClass,
- parameter_types, ord_parameter_types, PalletId,
-};
-use sp_runtime::{
- generic,
- traits::{BlakeTwo256, AccountIdLookup},
- Perbill, Permill, Percent,
+ PalletId,
};
-use sp_arithmetic::traits::One;
use frame_system::{
limits::{BlockLength, BlockWeights},
EnsureRoot, EnsureSignedBy,
};
-use pallet_transaction_payment::{Multiplier, ConstFeeMultiplier};
+use pallet_transaction_payment::{ConstFeeMultiplier, Multiplier};
+use sp_arithmetic::traits::One;
+use sp_runtime::{
+ traits::{AccountIdLookup, BlakeTwo256},
+ Perbill, Percent, Permill,
+};
+use sp_std::vec;
+use up_common::{constants::*, types::*};
+
use crate::{
- runtime_common::DealWithFees, Runtime, RuntimeEvent, RuntimeCall, RuntimeOrigin, OriginCaller,
- PalletInfo, System, Balances, SS58Prefix, Version,
+ runtime_common::DealWithFees, Balances, Block, OriginCaller, PalletInfo, Runtime, RuntimeCall,
+ RuntimeEvent, RuntimeHoldReason, RuntimeOrigin, SS58Prefix, System, Version,
};
-use up_common::{types::*, constants::*};
-use sp_std::vec;
parameter_types! {
pub const BlockHashCount: BlockNumber = 2400;
@@ -76,10 +77,10 @@
type BaseCallFilter = Everything;
/// Maximum number of block number to block hash mappings to keep (oldest pruned first).
type BlockHashCount = BlockHashCount;
+ /// The block type.
+ type Block = Block;
/// The maximum length of a block (in bytes).
type BlockLength = RuntimeBlockLength;
- /// The index type for blocks.
- type BlockNumber = BlockNumber;
/// The weight of the overhead invoked on the block import process, independent of the extrinsics included in that block.
type BlockWeights = RuntimeBlockWeights;
/// The aggregated dispatch type that is available for extrinsics.
@@ -92,10 +93,8 @@
type Hash = Hash;
/// The hashing algorithm used.
type Hashing = BlakeTwo256;
- /// The header type.
- type Header = generic::Header<BlockNumber, BlakeTwo256>;
/// The index type for storing how many extrinsics an account has signed.
- type Index = Index;
+ type Nonce = Nonce;
/// The lookup mechanism to get account ID from whatever is passed in dispatchers.
type Lookup = AccountIdLookup<AccountId, ()>;
/// What to do if an account is fully reaped from the system.
@@ -171,7 +170,7 @@
type ExistentialDeposit = ExistentialDeposit;
type AccountStore = System;
type WeightInfo = pallet_balances::weights::SubstrateWeight<Self>;
- type HoldIdentifier = [u8; 16];
+ type RuntimeHoldReason = RuntimeHoldReason;
type FreezeIdentifier = [u8; 16];
type MaxHolds = MaxHolds;
type MaxFreezes = MaxFreezes;
@@ -247,6 +246,7 @@
type AuthorityId = AuraId;
type DisabledValidators = ();
type MaxAuthorities = MaxAuthorities;
+ type AllowMultipleBlocksPerSlot = ConstBool<true>;
}
impl pallet_utility::Config for Runtime {
runtime/common/config/test_pallets.rsdiffbeforeafterboth--- a/runtime/common/config/test_pallets.rs
+++ b/runtime/common/config/test_pallets.rs
@@ -14,7 +14,7 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-use crate::{Runtime, RuntimeEvent, RuntimeCall};
+use crate::{Runtime, RuntimeCall, RuntimeEvent};
impl pallet_test_utils::Config for Runtime {
type RuntimeEvent = RuntimeEvent;
runtime/common/config/xcm/foreignassets.rsdiffbeforeafterboth--- a/runtime/common/config/xcm/foreignassets.rs
+++ b/runtime/common/config/xcm/foreignassets.rs
@@ -14,39 +14,32 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-use frame_support::{traits::Get, parameter_types};
-use sp_runtime::traits::Convert;
-use xcm::latest::{prelude::*, MultiAsset, MultiLocation};
-use xcm_builder::{FungiblesAdapter, NoChecking, ConvertedConcreteId};
-use xcm_executor::traits::{TransactAsset, Convert as ConvertXcm, JustTry};
-use pallet_foreign_assets::{
- AssetIds, AssetIdMapping, XcmForeignAssetIdMapping, NativeCurrency, FreeForAll, TryAsForeign,
- ForeignAssetId, CurrencyId,
-};
-use sp_std::{borrow::Borrow, marker::PhantomData};
+use frame_support::{parameter_types, traits::Get};
use orml_traits::location::AbsoluteReserveProvider;
use orml_xcm_support::MultiNativeAsset;
-use crate::{Runtime, Balances, ParachainInfo, PolkadotXcm, ForeignAssets};
+use pallet_foreign_assets::{
+ AssetId, AssetIdMapping, CurrencyId, ForeignAssetId, FreeForAll, NativeCurrency, TryAsForeign,
+ XcmForeignAssetIdMapping,
+};
+use sp_runtime::traits::{Convert, MaybeEquivalence};
+use sp_std::marker::PhantomData;
+use staging_xcm::latest::{prelude::*, MultiAsset, MultiLocation};
+use staging_xcm_builder::{ConvertedConcreteId, FungiblesAdapter, NoChecking};
+use staging_xcm_executor::traits::{JustTry, TransactAsset};
+use up_common::types::{AccountId, Balance};
use super::{LocationToAccountId, RelayLocation};
+use crate::{Balances, ForeignAssets, ParachainInfo, PolkadotXcm, Runtime};
-use up_common::types::{AccountId, Balance};
-
parameter_types! {
pub CheckingAccount: AccountId = PolkadotXcm::check_account();
}
-pub struct AsInnerId<AssetId, ConvertAssetId>(PhantomData<(AssetId, ConvertAssetId)>);
-impl<AssetId: Clone + PartialEq, ConvertAssetId: ConvertXcm<AssetId, AssetId>>
- ConvertXcm<MultiLocation, AssetId> for AsInnerId<AssetId, ConvertAssetId>
-where
- AssetId: Borrow<AssetId>,
- AssetId: TryAsForeign<AssetId, ForeignAssetId>,
- AssetIds: Borrow<AssetId>,
+pub struct AsInnerId<ConvertAssetId>(PhantomData<(AssetId, ConvertAssetId)>);
+impl<ConvertAssetId: MaybeEquivalence<AssetId, AssetId>> MaybeEquivalence<MultiLocation, AssetId>
+ for AsInnerId<ConvertAssetId>
{
- fn convert_ref(id: impl Borrow<MultiLocation>) -> Result<AssetId, ()> {
- let id = id.borrow();
-
+ fn convert(id: &MultiLocation) -> Option<AssetId> {
log::trace!(
target: "xcm::AsInnerId::Convert",
"AsInnerId {:?}",
@@ -58,52 +51,46 @@
let self_location = MultiLocation::new(1, X1(Parachain(ParachainInfo::get().into())));
if *id == parent {
- return ConvertAssetId::convert_ref(AssetIds::NativeAssetId(NativeCurrency::Parent));
+ return ConvertAssetId::convert(&AssetId::NativeAssetId(NativeCurrency::Parent));
}
if *id == here || *id == self_location {
- return ConvertAssetId::convert_ref(AssetIds::NativeAssetId(NativeCurrency::Here));
+ return ConvertAssetId::convert(&AssetId::NativeAssetId(NativeCurrency::Here));
}
match XcmForeignAssetIdMapping::<Runtime>::get_currency_id(*id) {
- Some(AssetIds::ForeignAssetId(foreign_asset_id)) => {
- ConvertAssetId::convert_ref(AssetIds::ForeignAssetId(foreign_asset_id))
+ Some(AssetId::ForeignAssetId(foreign_asset_id)) => {
+ ConvertAssetId::convert(&AssetId::ForeignAssetId(foreign_asset_id))
}
- _ => Err(()),
+ _ => None,
}
}
- fn reverse_ref(what: impl Borrow<AssetId>) -> Result<MultiLocation, ()> {
+ fn convert_back(asset_id: &AssetId) -> Option<MultiLocation> {
log::trace!(
target: "xcm::AsInnerId::Reverse",
"AsInnerId",
);
-
- let asset_id = what.borrow();
let parent_id =
- ConvertAssetId::convert_ref(AssetIds::NativeAssetId(NativeCurrency::Parent)).unwrap();
+ ConvertAssetId::convert(&AssetId::NativeAssetId(NativeCurrency::Parent)).unwrap();
let here_id =
- ConvertAssetId::convert_ref(AssetIds::NativeAssetId(NativeCurrency::Here)).unwrap();
+ ConvertAssetId::convert(&AssetId::NativeAssetId(NativeCurrency::Here)).unwrap();
if asset_id.clone() == parent_id {
- return Ok(MultiLocation::parent());
+ return Some(MultiLocation::parent());
}
if asset_id.clone() == here_id {
- return Ok(MultiLocation::new(
+ return Some(MultiLocation::new(
1,
X1(Parachain(ParachainInfo::get().into())),
));
}
- match <AssetId as TryAsForeign<AssetId, ForeignAssetId>>::try_as_foreign(asset_id.clone()) {
- Some(fid) => match XcmForeignAssetIdMapping::<Runtime>::get_multi_location(fid) {
- Some(location) => Ok(location),
- None => Err(()),
- },
- None => Err(()),
- }
+ let fid =
+ <AssetId as TryAsForeign<AssetId, ForeignAssetId>>::try_as_foreign(asset_id.clone())?;
+ XcmForeignAssetIdMapping::<Runtime>::get_multi_location(fid)
}
}
@@ -112,7 +99,7 @@
// Use this fungibles implementation:
ForeignAssets,
// Use this currency when it is a fungible asset matching the given location or name:
- ConvertedConcreteId<AssetIds, Balance, AsInnerId<AssetIds, JustTry>, JustTry>,
+ ConvertedConcreteId<AssetId, Balance, AsInnerId<JustTry>, JustTry>,
// Convert an XCM MultiLocation into a local account id:
LocationToAccountId,
// Our chain's account ID type (we can't get away without mentioning it explicitly):
@@ -154,7 +141,7 @@
what: &MultiAsset,
who: &MultiLocation,
maybe_context: Option<&XcmContext>,
- ) -> Result<xcm_executor::Assets, XcmError> {
+ ) -> Result<staging_xcm_executor::Assets, XcmError> {
FungiblesTransactor::withdraw_asset(what, who, maybe_context)
}
@@ -163,7 +150,7 @@
from: &MultiLocation,
to: &MultiLocation,
context: &XcmContext,
- ) -> Result<xcm_executor::Assets, XcmError> {
+ ) -> Result<staging_xcm_executor::Assets, XcmError> {
FungiblesTransactor::internal_transfer_asset(what, from, to, context)
}
}
@@ -179,15 +166,15 @@
>;
pub struct CurrencyIdConvert;
-impl Convert<AssetIds, Option<MultiLocation>> for CurrencyIdConvert {
- fn convert(id: AssetIds) -> Option<MultiLocation> {
+impl Convert<AssetId, Option<MultiLocation>> for CurrencyIdConvert {
+ fn convert(id: AssetId) -> Option<MultiLocation> {
match id {
- AssetIds::NativeAssetId(NativeCurrency::Here) => Some(MultiLocation::new(
+ AssetId::NativeAssetId(NativeCurrency::Here) => Some(MultiLocation::new(
1,
X1(Parachain(ParachainInfo::get().into())),
)),
- AssetIds::NativeAssetId(NativeCurrency::Parent) => Some(MultiLocation::parent()),
- AssetIds::ForeignAssetId(foreign_asset_id) => {
+ AssetId::NativeAssetId(NativeCurrency::Parent) => Some(MultiLocation::parent()),
+ AssetId::ForeignAssetId(foreign_asset_id) => {
XcmForeignAssetIdMapping::<Runtime>::get_multi_location(foreign_asset_id)
}
}
@@ -199,11 +186,11 @@
if location == MultiLocation::here()
|| location == MultiLocation::new(1, X1(Parachain(ParachainInfo::get().into())))
{
- return Some(AssetIds::NativeAssetId(NativeCurrency::Here));
+ return Some(AssetId::NativeAssetId(NativeCurrency::Here));
}
if location == MultiLocation::parent() {
- return Some(AssetIds::NativeAssetId(NativeCurrency::Parent));
+ return Some(AssetId::NativeAssetId(NativeCurrency::Parent));
}
if let Some(currency_id) = XcmForeignAssetIdMapping::<Runtime>::get_currency_id(location) {
runtime/common/config/xcm/mod.rsdiffbeforeafterboth--- a/runtime/common/config/xcm/mod.rs
+++ b/runtime/common/config/xcm/mod.rs
@@ -15,27 +15,32 @@
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
use frame_support::{
- traits::{Everything, Nothing, Get, ConstU32, ProcessMessageError, Contains},
parameter_types,
+ traits::{ConstU32, Contains, Everything, Get, Nothing, ProcessMessageError},
};
use frame_system::EnsureRoot;
use pallet_xcm::XcmPassthrough;
-use polkadot_parachain::primitives::Sibling;
-use xcm::latest::{prelude::*, Weight, MultiLocation};
-use xcm::v3::Instruction;
-use xcm_builder::{
- AccountId32Aliases, EnsureXcmOrigin, FixedWeightBounds, ParentAsSuperuser, RelayChainAsNative,
- SiblingParachainAsNative, SiblingParachainConvertsVia, SignedAccountId32AsNative,
- SignedToAccountId32, SovereignSignedViaLocation, ParentIsPreset,
+use polkadot_parachain_primitives::primitives::Sibling;
+use sp_std::marker::PhantomData;
+use staging_xcm::{
+ latest::{prelude::*, MultiLocation, Weight},
+ v3::Instruction,
+};
+use staging_xcm_builder::{
+ AccountId32Aliases, EnsureXcmOrigin, FixedWeightBounds, ParentAsSuperuser, ParentIsPreset,
+ RelayChainAsNative, SiblingParachainAsNative, SiblingParachainConvertsVia,
+ SignedAccountId32AsNative, SignedToAccountId32, SovereignSignedViaLocation,
+};
+use staging_xcm_executor::{
+ traits::{Properties, ShouldExecute},
+ XcmExecutor,
};
-use xcm_executor::{XcmExecutor, traits::ShouldExecute};
-use sp_std::marker::PhantomData;
+use up_common::types::AccountId;
+
use crate::{
- Runtime, RuntimeCall, RuntimeEvent, RuntimeOrigin, ParachainInfo, ParachainSystem, PolkadotXcm,
- XcmpQueue, xcm_barrier::Barrier, RelayNetwork, AllPalletsWithSystem, Balances,
+ xcm_barrier::Barrier, AllPalletsWithSystem, Balances, ParachainInfo, ParachainSystem,
+ PolkadotXcm, RelayNetwork, Runtime, RuntimeCall, RuntimeEvent, RuntimeOrigin, XcmpQueue,
};
-
-use up_common::types::AccountId;
#[cfg(feature = "foreign-assets")]
pub mod foreignassets;
@@ -45,14 +50,12 @@
#[cfg(feature = "foreign-assets")]
pub use foreignassets as xcm_assets;
-
#[cfg(not(feature = "foreign-assets"))]
pub use nativeassets as xcm_assets;
+use xcm_assets::{AssetTransactor, IsReserve, Trader};
#[cfg(feature = "governance")]
use crate::runtime_common::config::governance;
-
-use xcm_assets::{AssetTransactor, IsReserve, Trader};
parameter_types! {
pub const RelayLocation: MultiLocation = MultiLocation::parent();
@@ -153,10 +156,10 @@
origin: &MultiLocation,
message: &mut [Instruction<Call>],
max_weight: Weight,
- weight_credit: &mut Weight,
+ properties: &mut Properties,
) -> Result<(), ProcessMessageError> {
Deny::try_pass(origin, message)?;
- Allow::should_execute(origin, message, max_weight, weight_credit)
+ Allow::should_execute(origin, message, max_weight, properties)
}
}
@@ -211,7 +214,7 @@
}
pub struct XcmExecutorConfig<T>(PhantomData<T>);
-impl<T> xcm_executor::Config for XcmExecutorConfig<T>
+impl<T> staging_xcm_executor::Config for XcmExecutorConfig<T>
where
T: pallet_configuration::Config,
{
@@ -240,6 +243,7 @@
type UniversalAliases = Nothing;
type CallDispatcher = RuntimeCall;
type SafeCallFilter = XcmCallFilter;
+ type Aliasers = Nothing;
}
#[cfg(feature = "runtime-benchmarks")]
runtime/common/config/xcm/nativeassets.rsdiffbeforeafterboth--- a/runtime/common/config/xcm/nativeassets.rs
+++ b/runtime/common/config/xcm/nativeassets.rs
@@ -14,31 +14,28 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+use cumulus_primitives_core::XcmContext;
use frame_support::{
- traits::{tokens::currency::Currency as CurrencyT, OnUnbalanced as OnUnbalancedT, Get},
+ traits::{tokens::currency::Currency as CurrencyT, Get, OnUnbalanced as OnUnbalancedT},
weights::WeightToFeePolynomial,
};
-use sp_runtime::traits::{CheckedConversion, Zero, Convert};
-use xcm::latest::{
- AssetId::{Concrete},
- Fungibility::Fungible as XcmFungible,
- MultiAsset, Error as XcmError, Weight,
- Junction::*,
- MultiLocation,
- Junctions::*,
+use pallet_foreign_assets::{AssetIds, NativeCurrency};
+use sp_runtime::traits::{CheckedConversion, Convert, Zero};
+use sp_std::marker::PhantomData;
+use staging_xcm::latest::{
+ AssetId::Concrete, Error as XcmError, Fungibility::Fungible as XcmFungible, Junction::*,
+ Junctions::*, MultiAsset, MultiLocation, Weight,
};
-use xcm_builder::{CurrencyAdapter, NativeAsset};
-use xcm_executor::{
- Assets,
+use staging_xcm_builder::{CurrencyAdapter, NativeAsset};
+use staging_xcm_executor::{
traits::{MatchesFungible, WeightTrader},
+ Assets,
};
-use pallet_foreign_assets::{AssetIds, NativeCurrency};
-use sp_std::marker::PhantomData;
-use crate::{Balances, ParachainInfo};
-use super::{LocationToAccountId, RelayLocation};
-
use up_common::types::{AccountId, Balance};
+use super::{LocationToAccountId, RelayLocation};
+use crate::{Balances, ParachainInfo};
+
pub struct OnlySelfCurrency;
impl<B: TryFrom<u128>> MatchesFungible<B> for OnlySelfCurrency {
fn matches_fungible(a: &MultiAsset) -> Option<B> {
@@ -106,7 +103,12 @@
Self(Weight::from_parts(0, 0), Zero::zero(), PhantomData)
}
- fn buy_weight(&mut self, _weight: Weight, payment: Assets) -> Result<Assets, XcmError> {
+ fn buy_weight(
+ &mut self,
+ _weight: Weight,
+ payment: Assets,
+ _xcm: &XcmContext,
+ ) -> Result<Assets, XcmError> {
Ok(payment)
}
}
runtime/common/construct_runtime.rsdiffbeforeafterboth--- a/runtime/common/construct_runtime.rs
+++ b/runtime/common/construct_runtime.rs
@@ -19,11 +19,7 @@
() => {
frame_support::construct_runtime! {
- pub enum Runtime where
- Block = Block,
- NodeBlock = opaque::Block,
- UncheckedExtrinsic = UncheckedExtrinsic
- {
+ pub enum Runtime {
System: frame_system = 0,
StateTrieMigration: pallet_state_trie_migration = 1,
runtime/common/dispatch.rsdiffbeforeafterboth--- a/runtime/common/dispatch.rs
+++ b/runtime/common/dispatch.rs
@@ -15,28 +15,27 @@
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
use frame_support::{dispatch::DispatchResult, ensure, fail};
-use pallet_evm::{PrecompileHandle, PrecompileResult};
-use sp_core::H160;
-use sp_runtime::DispatchError;
-use sp_std::{borrow::ToOwned, vec::Vec};
+use pallet_balances_adapter::NativeFungibleHandle;
+pub use pallet_common::dispatch::CollectionDispatch;
+#[cfg(not(feature = "refungible"))]
+use pallet_common::unsupported;
use pallet_common::{
- CollectionById, CollectionHandle, CommonCollectionOperations, erc::CommonEvmHandler,
- eth::map_eth_to_id,
+ erc::CommonEvmHandler, eth::map_eth_to_id, CollectionById, CollectionHandle,
+ CommonCollectionOperations,
};
-pub use pallet_common::dispatch::CollectionDispatch;
-use pallet_fungible::{Pallet as PalletFungible, FungibleHandle};
-use pallet_balances_adapter::NativeFungibleHandle;
-use pallet_nonfungible::{Pallet as PalletNonfungible, NonfungibleHandle};
+use pallet_evm::{PrecompileHandle, PrecompileResult};
+use pallet_fungible::{FungibleHandle, Pallet as PalletFungible};
+use pallet_nonfungible::{NonfungibleHandle, Pallet as PalletNonfungible};
use pallet_refungible::{
- Pallet as PalletRefungible, RefungibleHandle, erc_token::RefungibleTokenHandle,
+ erc_token::RefungibleTokenHandle, Pallet as PalletRefungible, RefungibleHandle,
};
+use sp_core::H160;
+use sp_runtime::DispatchError;
+use sp_std::{borrow::ToOwned, vec::Vec};
use up_data_structs::{
- CollectionMode, CreateCollectionData, MAX_DECIMAL_POINTS, mapping::TokenAddressMapping,
- CollectionId,
+ mapping::TokenAddressMapping, CollectionId, CollectionMode, CreateCollectionData,
+ MAX_DECIMAL_POINTS,
};
-
-#[cfg(not(feature = "refungible"))]
-use pallet_common::unsupported;
pub enum CollectionDispatchT<T>
where
runtime/common/ethereum/precompiles/mod.rsdiffbeforeafterboth--- a/runtime/common/ethereum/precompiles/mod.rs
+++ b/runtime/common/ethereum/precompiles/mod.rs
@@ -14,11 +14,12 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-use pallet_evm::{Precompile, PrecompileHandle, PrecompileResult, PrecompileSet, IsPrecompileResult};
+use pallet_evm::{
+ IsPrecompileResult, Precompile, PrecompileHandle, PrecompileResult, PrecompileSet,
+};
+use pallet_evm_precompile_simple::ECRecover;
use sp_core::H160;
use sp_std::marker::PhantomData;
-
-use pallet_evm_precompile_simple::{ECRecover};
use sr25519::Sr25519Precompile;
mod sr25519;
runtime/common/ethereum/precompiles/sr25519.rsdiffbeforeafterboth--- a/runtime/common/ethereum/precompiles/sr25519.rs
+++ b/runtime/common/ethereum/precompiles/sr25519.rs
@@ -17,8 +17,7 @@
use fp_evm::{Context, ExitSucceed, PrecompileHandle, PrecompileOutput};
use pallet_evm::Precompile;
use sp_core::{crypto::UncheckedFrom, sr25519, H256};
-use sp_std::marker::PhantomData;
-use sp_std::prelude::*;
+use sp_std::{marker::PhantomData, prelude::*};
use super::utils::{Bytes, EvmDataReader, EvmDataWriter, EvmResult, FunctionModifier, Gasometer};
runtime/common/ethereum/precompiles/utils/data.rsdiffbeforeafterboth--- a/runtime/common/ethereum/precompiles/utils/data.rs
+++ b/runtime/common/ethereum/precompiles/utils/data.rs
@@ -16,12 +16,12 @@
// You should have received a copy of the GNU General Public License
// along with Utils. If not, see <http://www.gnu.org/licenses/>.
-use super::{EvmResult, Gasometer};
+use core::{any::type_name, ops::Range};
-use sp_std::borrow::ToOwned;
-use core::{any::type_name, ops::Range};
use sp_core::{H160, H256, U256};
-use sp_std::{convert::TryInto, vec, vec::Vec};
+use sp_std::{borrow::ToOwned, convert::TryInto, vec, vec::Vec};
+
+use super::{EvmResult, Gasometer};
/// The `address` type of Solidity.
/// H160 could represent 2 types of data (bytes20 and address) that are not encoded the same way.
runtime/common/ethereum/precompiles/utils/macro/Cargo.tomldiffbeforeafterboth--- a/runtime/common/ethereum/precompiles/utils/macro/Cargo.toml
+++ b/runtime/common/ethereum/precompiles/utils/macro/Cargo.toml
@@ -9,7 +9,7 @@
proc-macro = true
[dependencies]
-num_enum = { version = "0.5.3", default-features = false }
+num_enum = { version = "0.7.0", default-features = false }
proc-macro2 = "1.0"
quote = "1.0"
sha3 = "0.8"
runtime/common/ethereum/precompiles/utils/macro/src/lib.rsdiffbeforeafterboth--- a/runtime/common/ethereum/precompiles/utils/macro/src/lib.rs
+++ b/runtime/common/ethereum/precompiles/utils/macro/src/lib.rs
@@ -19,11 +19,12 @@
#![crate_type = "proc-macro"]
extern crate proc_macro;
+use std::convert::TryInto;
+
use proc_macro::TokenStream;
use proc_macro2::Literal;
use quote::{quote, quote_spanned};
use sha3::{Digest, Keccak256};
-use std::convert::TryInto;
use syn::{parse_macro_input, spanned::Spanned, Expr, ExprLit, Ident, ItemEnum, Lit};
/// This macro allows to associate to each variant of an enumeration a discriminant (of type u32
runtime/common/ethereum/precompiles/utils/mod.rsdiffbeforeafterboth--- a/runtime/common/ethereum/precompiles/utils/mod.rs
+++ b/runtime/common/ethereum/precompiles/utils/mod.rs
@@ -16,10 +16,9 @@
// You should have received a copy of the GNU General Public License
// along with Utils. If not, see <http://www.gnu.org/licenses/>.
-use sp_std::borrow::ToOwned;
use fp_evm::{Context, ExitRevert, PrecompileFailure};
use sp_core::U256;
-use sp_std::marker::PhantomData;
+use sp_std::{borrow::ToOwned, marker::PhantomData};
mod data;
runtime/common/ethereum/self_contained_call.rsdiffbeforeafterboth--- a/runtime/common/ethereum/self_contained_call.rs
+++ b/runtime/common/ethereum/self_contained_call.rs
@@ -16,11 +16,12 @@
use sp_core::H160;
use sp_runtime::{
- traits::{Dispatchable, DispatchInfoOf, PostDispatchInfoOf},
- transaction_validity::{TransactionValidityError, TransactionValidity, InvalidTransaction},
+ traits::{DispatchInfoOf, Dispatchable, PostDispatchInfoOf},
+ transaction_validity::{InvalidTransaction, TransactionValidity, TransactionValidityError},
};
-use crate::{RuntimeOrigin, RuntimeCall, Maintenance};
+use crate::{Maintenance, RuntimeCall, RuntimeOrigin};
+
impl fp_self_contained::SelfContainedCall for RuntimeCall {
type SignedInfo = H160;
runtime/common/ethereum/sponsoring.rsdiffbeforeafterboth--- a/runtime/common/ethereum/sponsoring.rs
+++ b/runtime/common/ethereum/sponsoring.rs
@@ -17,35 +17,36 @@
//! Implements EVM sponsoring logic via TransactionValidityHack
use core::{convert::TryInto, marker::PhantomData};
-use evm_coder::{Call};
-use pallet_common::{CollectionHandle, eth::map_eth_to_id};
+
+use evm_coder::Call;
+use pallet_common::{eth::map_eth_to_id, CollectionHandle};
use pallet_evm::account::CrossAccountId;
use pallet_evm_transaction_payment::CallContext;
+use pallet_fungible::{
+ erc::{ERC20Call, UniqueFungibleCall},
+ Config as FungibleConfig,
+};
use pallet_nonfungible::{
- Config as NonfungibleConfig, Pallet as NonfungiblePallet, NonfungibleHandle,
erc::{
- UniqueNFTCall, ERC721UniqueExtensionsCall, ERC721UniqueMintableCall, ERC721Call,
- TokenPropertiesCall,
+ ERC721Call, ERC721UniqueExtensionsCall, ERC721UniqueMintableCall, TokenPropertiesCall,
+ UniqueNFTCall,
},
-};
-use pallet_fungible::{
- Config as FungibleConfig,
- erc::{UniqueFungibleCall, ERC20Call},
+ Config as NonfungibleConfig, NonfungibleHandle, Pallet as NonfungiblePallet,
};
use pallet_refungible::{
- Config as RefungibleConfig,
erc::UniqueRefungibleCall,
erc_token::{RefungibleTokenHandle, UniqueRefungibleTokenCall},
- RefungibleHandle,
+ Config as RefungibleConfig, RefungibleHandle,
};
use pallet_unique::Config as UniqueConfig;
use sp_std::prelude::*;
use up_data_structs::{
- CollectionMode, CreateItemData, CreateNftData, mapping::TokenAddressMapping, TokenId,
+ mapping::TokenAddressMapping, CollectionMode, CreateItemData, CreateNftData, TokenId,
};
use up_sponsorship::SponsorshipHandler;
-use crate::{Runtime, runtime_common::sponsoring::*};
+use crate::{runtime_common::sponsoring::*, Runtime};
+
mod refungible;
pub type EvmSponsorshipHandler = (
@@ -206,9 +207,9 @@
}
mod common {
- use super::*;
+ use pallet_common::erc::CollectionCall;
- use pallet_common::erc::{CollectionCall};
+ use super::*;
pub fn collection_call_sponsor<T>(
call: CollectionCall<T>,
runtime/common/ethereum/sponsoring/refungible.rsdiffbeforeafterboth--- a/runtime/common/ethereum/sponsoring/refungible.rs
+++ b/runtime/common/ethereum/sponsoring/refungible.rs
@@ -19,14 +19,7 @@
use pallet_common::CollectionHandle;
use pallet_evm::account::CrossAccountId;
use pallet_fungible::Config as FungibleConfig;
-use pallet_refungible::Config as RefungibleConfig;
use pallet_nonfungible::Config as NonfungibleConfig;
-use pallet_unique::Config as UniqueConfig;
-use up_data_structs::{CreateItemData, CreateNftData, TokenId};
-
-use super::common;
-use crate::runtime_common::sponsoring::*;
-
use pallet_refungible::{
erc::{
ERC721BurnableCall, ERC721Call, ERC721EnumerableCall, ERC721MetadataCall,
@@ -37,7 +30,13 @@
ERC1633Call, ERC20Call, ERC20UniqueExtensionsCall, RefungibleTokenHandle,
UniqueRefungibleTokenCall,
},
+ Config as RefungibleConfig,
};
+use pallet_unique::Config as UniqueConfig;
+use up_data_structs::{CreateItemData, CreateNftData, TokenId};
+
+use super::common;
+use crate::runtime_common::sponsoring::*;
pub fn call_sponsor<T>(
call: UniqueRefungibleCall<T>,
runtime/common/identity.rsdiffbeforeafterboth--- a/runtime/common/identity.rs
+++ b/runtime/common/identity.rs
@@ -14,18 +14,17 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+use parity_scale_codec::{Decode, Encode};
use scale_info::TypeInfo;
-use codec::{Encode, Decode};
-use up_common::types::AccountId;
-use crate::RuntimeCall;
-
+#[cfg(feature = "collator-selection")]
+use sp_runtime::transaction_validity::InvalidTransaction;
use sp_runtime::{
traits::{DispatchInfoOf, SignedExtension},
- transaction_validity::{TransactionValidity, ValidTransaction, TransactionValidityError},
+ transaction_validity::{TransactionValidity, TransactionValidityError, ValidTransaction},
};
+use up_common::types::AccountId;
-#[cfg(feature = "collator-selection")]
-use sp_runtime::transaction_validity::InvalidTransaction;
+use crate::RuntimeCall;
#[derive(Debug, Encode, Decode, PartialEq, Eq, Clone, TypeInfo)]
pub struct DisableIdentityCalls;
runtime/common/instance.rsdiffbeforeafterboth--- a/runtime/common/instance.rs
+++ b/runtime/common/instance.rs
@@ -1,9 +1,7 @@
-use crate::{
- runtime_common::{config::ethereum::CrossAccountId},
- Runtime,
-};
use up_common::types::opaque::RuntimeInstance;
+use crate::{runtime_common::config::ethereum::CrossAccountId, Runtime};
+
impl RuntimeInstance for Runtime {
type CrossAccountId = CrossAccountId;
}
runtime/common/maintenance.rsdiffbeforeafterboth--- a/runtime/common/maintenance.rs
+++ b/runtime/common/maintenance.rs
@@ -14,17 +14,17 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+use parity_scale_codec::{Decode, Encode};
use scale_info::TypeInfo;
-use codec::{Encode, Decode};
-use up_common::types::AccountId;
-use crate::{RuntimeCall, Maintenance};
-
use sp_runtime::{
traits::{DispatchInfoOf, SignedExtension},
transaction_validity::{
- TransactionValidity, ValidTransaction, InvalidTransaction, TransactionValidityError,
+ InvalidTransaction, TransactionValidity, TransactionValidityError, ValidTransaction,
},
};
+use up_common::types::AccountId;
+
+use crate::{Maintenance, RuntimeCall};
#[derive(Debug, Encode, Decode, PartialEq, Eq, Clone, TypeInfo)]
pub struct CheckMaintenance;
@@ -66,9 +66,6 @@
| RuntimeCall::Inflation(_)
| RuntimeCall::Structure(_)
| RuntimeCall::Unique(_) => Err(TransactionValidityError::Invalid(InvalidTransaction::Call)),
-
- #[cfg(feature = "unique-scheduler")]
- RuntimeCall::Scheduler(_) => Err(TransactionValidityError::Invalid(InvalidTransaction::Call)),
#[cfg(feature = "app-promotion")]
RuntimeCall::AppPromotion(_) => {
runtime/common/mod.rsdiffbeforeafterboth--- a/runtime/common/mod.rs
+++ b/runtime/common/mod.rs
@@ -23,9 +23,6 @@
pub mod maintenance;
pub mod runtime_apis;
-#[cfg(feature = "unique-scheduler")]
-pub mod scheduler;
-
pub mod sponsoring;
#[allow(missing_docs)]
pub mod weights;
@@ -33,26 +30,23 @@
#[cfg(test)]
pub mod tests;
-use sp_core::H160;
use frame_support::{
- traits::{Currency, OnUnbalanced, Imbalance},
+ traits::{Currency, Imbalance, OnUnbalanced},
weights::Weight,
};
use sp_runtime::{
- generic,
+ generic, impl_opaque_keys,
traits::{BlakeTwo256, BlockNumberProvider},
- impl_opaque_keys,
};
use sp_std::vec::Vec;
-
#[cfg(feature = "std")]
use sp_version::NativeVersion;
+use up_common::types::{AccountId, BlockNumber};
use crate::{
- Runtime, RuntimeCall, Balances, Treasury, Aura, Signature, AllPalletsWithSystem,
- InherentDataExt,
+ AllPalletsWithSystem, Aura, Balances, InherentDataExt, Runtime, RuntimeCall, Signature,
+ Treasury,
};
-use up_common::types::{AccountId, BlockNumber};
#[macro_export]
macro_rules! unsupported {
@@ -63,12 +57,15 @@
/// The address format for describing accounts.
pub type Address = sp_runtime::MultiAddress<AccountId, ()>;
-/// Block header type as expected by this runtime.
+/// A Block signed with a Justification
+pub type SignedBlock = generic::SignedBlock<Block>;
+/// Frontier wrapped extrinsic
+pub type UncheckedExtrinsic =
+ fp_self_contained::UncheckedExtrinsic<Address, RuntimeCall, Signature, SignedExtra>;
+/// Header type.
pub type Header = generic::Header<BlockNumber, BlakeTwo256>;
-/// Block type as expected by this runtime.
+/// Block type.
pub type Block = generic::Block<Header, UncheckedExtrinsic>;
-/// A Block signed with a Justification
-pub type SignedBlock = generic::SignedBlock<Block>;
/// BlockId type as expected by this runtime.
pub type BlockId = generic::BlockId<Block>;
@@ -103,14 +100,6 @@
pallet_ethereum::FakeTransactionFinalizer<Runtime>,
);
-/// Unchecked extrinsic type as expected by this runtime.
-pub type UncheckedExtrinsic =
- fp_self_contained::UncheckedExtrinsic<Address, RuntimeCall, Signature, SignedExtra>;
-
-/// Extrinsic type that has already been checked.
-pub type CheckedExtrinsic =
- fp_self_contained::CheckedExtrinsic<AccountId, RuntimeCall, SignedExtra, H160>;
-
/// Executive: handles dispatch to the various modules.
pub type Executive = frame_executive::Executive<
Runtime,
@@ -180,7 +169,7 @@
}
}
-#[derive(codec::Encode, codec::Decode)]
+#[derive(parity_scale_codec::Encode, parity_scale_codec::Decode)]
pub enum XCMPMessage<XAccountId, XBalance> {
/// Transfer tokens to the given account from the Parachain account.
TransferToken(XAccountId, XBalance),
@@ -191,9 +180,10 @@
fn on_runtime_upgrade() -> Weight {
#[cfg(feature = "collator-selection")]
{
- use frame_support::{BoundedVec, storage::migration};
- use sp_runtime::{traits::OpaqueKeys, RuntimeAppPublic};
+ use frame_support::{storage::migration, BoundedVec};
use pallet_session::SessionManager;
+ use sp_runtime::{traits::OpaqueKeys, RuntimeAppPublic};
+
use crate::config::pallets::MaxCollators;
let mut weight = <Runtime as frame_system::Config>::DbWeight::get().reads(1);
runtime/common/runtime_apis.rsdiffbeforeafterboth--- a/runtime/common/runtime_apis.rs
+++ b/runtime/common/runtime_apis.rs
@@ -26,713 +26,669 @@
#[macro_export]
macro_rules! impl_common_runtime_apis {
- (
- $(
- #![custom_apis]
+ (
+ $(
+ #![custom_apis]
- $($custom_apis:tt)+
- )?
- ) => {
- use sp_std::prelude::*;
- use sp_api::impl_runtime_apis;
- use sp_core::{crypto::KeyTypeId, OpaqueMetadata, H256, U256, H160};
- use sp_runtime::{
- Permill,
- traits::{Block as BlockT},
- transaction_validity::{TransactionSource, TransactionValidity},
- ApplyExtrinsicResult, DispatchError,
- };
- use frame_support::{
- pallet_prelude::Weight,
- traits::OnFinalize,
- };
- use fp_rpc::TransactionStatus;
- use pallet_transaction_payment::{
- FeeDetails, RuntimeDispatchInfo,
- };
- use pallet_evm::{
- Runner, account::CrossAccountId as _,
- Account as EVMAccount, FeeCalculator,
- };
- use runtime_common::{
- sponsoring::{SponsorshipPredict, UniqueSponsorshipPredict},
- dispatch::CollectionDispatch,
- config::ethereum::CrossAccountId,
- };
- use up_data_structs::*;
+ $($custom_apis:tt)+
+ )?
+ ) => {
+ use sp_std::prelude::*;
+ use sp_api::impl_runtime_apis;
+ use sp_core::{crypto::KeyTypeId, OpaqueMetadata, H256, U256, H160};
+ use sp_runtime::{
+ Permill,
+ traits::{Block as BlockT},
+ transaction_validity::{TransactionSource, TransactionValidity},
+ ApplyExtrinsicResult, DispatchError,
+ };
+ use frame_support::{
+ pallet_prelude::Weight,
+ traits::OnFinalize,
+ };
+ use fp_rpc::TransactionStatus;
+ use pallet_transaction_payment::{
+ FeeDetails, RuntimeDispatchInfo,
+ };
+ use pallet_evm::{
+ Runner, account::CrossAccountId as _,
+ Account as EVMAccount, FeeCalculator,
+ };
+ use runtime_common::{
+ sponsoring::{SponsorshipPredict, UniqueSponsorshipPredict},
+ dispatch::CollectionDispatch,
+ config::ethereum::CrossAccountId,
+ };
+ use up_data_structs::*;
+ impl_runtime_apis! {
+ $($($custom_apis)+)?
- impl_runtime_apis! {
- $($($custom_apis)+)?
+ impl up_rpc::UniqueApi<Block, CrossAccountId, AccountId> for Runtime {
+ fn account_tokens(collection: CollectionId, account: CrossAccountId) -> Result<Vec<TokenId>, DispatchError> {
+ dispatch_unique_runtime!(collection.account_tokens(account))
+ }
+ fn collection_tokens(collection: CollectionId) -> Result<Vec<TokenId>, DispatchError> {
+ dispatch_unique_runtime!(collection.collection_tokens())
+ }
+ fn token_exists(collection: CollectionId, token: TokenId) -> Result<bool, DispatchError> {
+ dispatch_unique_runtime!(collection.token_exists(token))
+ }
- impl up_rpc::UniqueApi<Block, CrossAccountId, AccountId> for Runtime {
- fn account_tokens(collection: CollectionId, account: CrossAccountId) -> Result<Vec<TokenId>, DispatchError> {
- dispatch_unique_runtime!(collection.account_tokens(account))
- }
- fn collection_tokens(collection: CollectionId) -> Result<Vec<TokenId>, DispatchError> {
- dispatch_unique_runtime!(collection.collection_tokens())
- }
- fn token_exists(collection: CollectionId, token: TokenId) -> Result<bool, DispatchError> {
- dispatch_unique_runtime!(collection.token_exists(token))
- }
+ fn token_owner(collection: CollectionId, token: TokenId) -> Result<Option<CrossAccountId>, DispatchError> {
+ dispatch_unique_runtime!(collection.token_owner(token).ok())
+ }
- fn token_owner(collection: CollectionId, token: TokenId) -> Result<Option<CrossAccountId>, DispatchError> {
- dispatch_unique_runtime!(collection.token_owner(token).ok())
- }
+ fn token_owners(collection: CollectionId, token: TokenId) -> Result<Vec::<CrossAccountId>, DispatchError> {
+ dispatch_unique_runtime!(collection.token_owners(token))
+ }
- fn token_owners(collection: CollectionId, token: TokenId) -> Result<Vec::<CrossAccountId>, DispatchError> {
- dispatch_unique_runtime!(collection.token_owners(token))
- }
+ fn topmost_token_owner(collection: CollectionId, token: TokenId) -> Result<Option<CrossAccountId>, DispatchError> {
+ let budget = up_data_structs::budget::Value::new(10);
- fn topmost_token_owner(collection: CollectionId, token: TokenId) -> Result<Option<CrossAccountId>, DispatchError> {
- let budget = up_data_structs::budget::Value::new(10);
+ <pallet_structure::Pallet<Runtime>>::find_topmost_owner(collection, token, &budget)
+ }
+ fn token_children(collection: CollectionId, token: TokenId) -> Result<Vec<TokenChild>, DispatchError> {
+ Ok(<pallet_nonfungible::Pallet<Runtime>>::token_children_ids(collection, token))
+ }
+ fn collection_properties(
+ collection: CollectionId,
+ keys: Option<Vec<Vec<u8>>>
+ ) -> Result<Vec<Property>, DispatchError> {
+ let keys = keys.map(
+ |keys| Common::bytes_keys_to_property_keys(keys)
+ ).transpose()?;
- <pallet_structure::Pallet<Runtime>>::find_topmost_owner(collection, token, &budget)
- }
- fn token_children(collection: CollectionId, token: TokenId) -> Result<Vec<TokenChild>, DispatchError> {
- Ok(<pallet_nonfungible::Pallet<Runtime>>::token_children_ids(collection, token))
- }
- fn collection_properties(
- collection: CollectionId,
- keys: Option<Vec<Vec<u8>>>
- ) -> Result<Vec<Property>, DispatchError> {
- let keys = keys.map(
- |keys| Common::bytes_keys_to_property_keys(keys)
- ).transpose()?;
+ Common::filter_collection_properties(collection, keys)
+ }
- Common::filter_collection_properties(collection, keys)
- }
+ fn token_properties(
+ collection: CollectionId,
+ token_id: TokenId,
+ keys: Option<Vec<Vec<u8>>>
+ ) -> Result<Vec<Property>, DispatchError> {
+ let keys = keys.map(
+ |keys| Common::bytes_keys_to_property_keys(keys)
+ ).transpose()?;
- fn token_properties(
- collection: CollectionId,
- token_id: TokenId,
- keys: Option<Vec<Vec<u8>>>
- ) -> Result<Vec<Property>, DispatchError> {
- let keys = keys.map(
- |keys| Common::bytes_keys_to_property_keys(keys)
- ).transpose()?;
+ dispatch_unique_runtime!(collection.token_properties(token_id, keys))
+ }
- dispatch_unique_runtime!(collection.token_properties(token_id, keys))
- }
+ fn property_permissions(
+ collection: CollectionId,
+ keys: Option<Vec<Vec<u8>>>
+ ) -> Result<Vec<PropertyKeyPermission>, DispatchError> {
+ let keys = keys.map(
+ |keys| Common::bytes_keys_to_property_keys(keys)
+ ).transpose()?;
- fn property_permissions(
- collection: CollectionId,
- keys: Option<Vec<Vec<u8>>>
- ) -> Result<Vec<PropertyKeyPermission>, DispatchError> {
- let keys = keys.map(
- |keys| Common::bytes_keys_to_property_keys(keys)
- ).transpose()?;
+ Common::filter_property_permissions(collection, keys)
+ }
- Common::filter_property_permissions(collection, keys)
- }
+ fn token_data(
+ collection: CollectionId,
+ token_id: TokenId,
+ keys: Option<Vec<Vec<u8>>>
+ ) -> Result<TokenData<CrossAccountId>, DispatchError> {
+ let token_data = TokenData {
+ properties: Self::token_properties(collection, token_id, keys)?,
+ owner: Self::token_owner(collection, token_id)?,
+ pieces: Self::total_pieces(collection, token_id)?.unwrap_or(0),
+ };
- fn token_data(
- collection: CollectionId,
- token_id: TokenId,
- keys: Option<Vec<Vec<u8>>>
- ) -> Result<TokenData<CrossAccountId>, DispatchError> {
- let token_data = TokenData {
- properties: Self::token_properties(collection, token_id, keys)?,
- owner: Self::token_owner(collection, token_id)?,
- pieces: Self::total_pieces(collection, token_id)?.unwrap_or(0),
- };
+ Ok(token_data)
+ }
- Ok(token_data)
- }
+ fn total_supply(collection: CollectionId) -> Result<u32, DispatchError> {
+ dispatch_unique_runtime!(collection.total_supply())
+ }
+ fn account_balance(collection: CollectionId, account: CrossAccountId) -> Result<u32, DispatchError> {
+ dispatch_unique_runtime!(collection.account_balance(account))
+ }
+ fn balance(collection: CollectionId, account: CrossAccountId, token: TokenId) -> Result<u128, DispatchError> {
+ dispatch_unique_runtime!(collection.balance(account, token))
+ }
+ fn allowance(
+ collection: CollectionId,
+ sender: CrossAccountId,
+ spender: CrossAccountId,
+ token: TokenId,
+ ) -> Result<u128, DispatchError> {
+ dispatch_unique_runtime!(collection.allowance(sender, spender, token))
+ }
- fn total_supply(collection: CollectionId) -> Result<u32, DispatchError> {
- dispatch_unique_runtime!(collection.total_supply())
- }
- fn account_balance(collection: CollectionId, account: CrossAccountId) -> Result<u32, DispatchError> {
- dispatch_unique_runtime!(collection.account_balance(account))
- }
- fn balance(collection: CollectionId, account: CrossAccountId, token: TokenId) -> Result<u128, DispatchError> {
- dispatch_unique_runtime!(collection.balance(account, token))
- }
- fn allowance(
- collection: CollectionId,
- sender: CrossAccountId,
- spender: CrossAccountId,
- token: TokenId,
- ) -> Result<u128, DispatchError> {
- dispatch_unique_runtime!(collection.allowance(sender, spender, token))
- }
+ fn adminlist(collection: CollectionId) -> Result<Vec<CrossAccountId>, DispatchError> {
+ Ok(<pallet_common::Pallet<Runtime>>::adminlist(collection))
+ }
+ fn allowlist(collection: CollectionId) -> Result<Vec<CrossAccountId>, DispatchError> {
+ Ok(<pallet_common::Pallet<Runtime>>::allowlist(collection))
+ }
+ fn allowed(collection: CollectionId, user: CrossAccountId) -> Result<bool, DispatchError> {
+ Ok(<pallet_common::Pallet<Runtime>>::allowed(collection, user))
+ }
+ fn last_token_id(collection: CollectionId) -> Result<TokenId, DispatchError> {
+ dispatch_unique_runtime!(collection.last_token_id())
+ }
+ fn collection_by_id(collection: CollectionId) -> Result<Option<RpcCollection<AccountId>>, DispatchError> {
+ Ok(<pallet_common::Pallet<Runtime>>::rpc_collection(collection))
+ }
+ fn collection_stats() -> Result<CollectionStats, DispatchError> {
+ Ok(<pallet_common::Pallet<Runtime>>::collection_stats())
+ }
+ fn next_sponsored(collection: CollectionId, account: CrossAccountId, token: TokenId) -> Result<Option<u64>, DispatchError> {
+ Ok(<UniqueSponsorshipPredict<Runtime> as SponsorshipPredict<Runtime>>::predict(
+ collection,
+ account,
+ token
+ ))
+ }
- fn adminlist(collection: CollectionId) -> Result<Vec<CrossAccountId>, DispatchError> {
- Ok(<pallet_common::Pallet<Runtime>>::adminlist(collection))
- }
- fn allowlist(collection: CollectionId) -> Result<Vec<CrossAccountId>, DispatchError> {
- Ok(<pallet_common::Pallet<Runtime>>::allowlist(collection))
- }
- fn allowed(collection: CollectionId, user: CrossAccountId) -> Result<bool, DispatchError> {
- Ok(<pallet_common::Pallet<Runtime>>::allowed(collection, user))
- }
- fn last_token_id(collection: CollectionId) -> Result<TokenId, DispatchError> {
- dispatch_unique_runtime!(collection.last_token_id())
- }
- fn collection_by_id(collection: CollectionId) -> Result<Option<RpcCollection<AccountId>>, DispatchError> {
- Ok(<pallet_common::Pallet<Runtime>>::rpc_collection(collection))
- }
- fn collection_stats() -> Result<CollectionStats, DispatchError> {
- Ok(<pallet_common::Pallet<Runtime>>::collection_stats())
- }
- fn next_sponsored(collection: CollectionId, account: CrossAccountId, token: TokenId) -> Result<Option<u64>, DispatchError> {
- Ok(<UniqueSponsorshipPredict<Runtime> as SponsorshipPredict<Runtime>>::predict(
- collection,
- account,
- token
- ))
- }
+ fn effective_collection_limits(collection: CollectionId) -> Result<Option<CollectionLimits>, DispatchError> {
+ Ok(<pallet_common::Pallet<Runtime>>::effective_collection_limits(collection))
+ }
- fn effective_collection_limits(collection: CollectionId) -> Result<Option<CollectionLimits>, DispatchError> {
- Ok(<pallet_common::Pallet<Runtime>>::effective_collection_limits(collection))
- }
+ fn total_pieces(collection: CollectionId, token_id: TokenId) -> Result<Option<u128>, DispatchError> {
+ dispatch_unique_runtime!(collection.total_pieces(token_id))
+ }
- fn total_pieces(collection: CollectionId, token_id: TokenId) -> Result<Option<u128>, DispatchError> {
- dispatch_unique_runtime!(collection.total_pieces(token_id))
- }
+ fn allowance_for_all(collection: CollectionId, owner: CrossAccountId, operator: CrossAccountId) -> Result<bool, DispatchError> {
+ dispatch_unique_runtime!(collection.allowance_for_all(owner, operator))
+ }
+ }
- fn allowance_for_all(collection: CollectionId, owner: CrossAccountId, operator: CrossAccountId) -> Result<bool, DispatchError> {
- dispatch_unique_runtime!(collection.allowance_for_all(owner, operator))
- }
- }
+ impl app_promotion_rpc::AppPromotionApi<Block, BlockNumber, CrossAccountId, AccountId> for Runtime {
+ #[allow(unused_variables)]
+ fn total_staked(staker: Option<CrossAccountId>) -> Result<u128, DispatchError> {
+ #[cfg(not(feature = "app-promotion"))]
+ return unsupported!();
- impl app_promotion_rpc::AppPromotionApi<Block, BlockNumber, CrossAccountId, AccountId> for Runtime {
- #[allow(unused_variables)]
- fn total_staked(staker: Option<CrossAccountId>) -> Result<u128, DispatchError> {
- #[cfg(not(feature = "app-promotion"))]
- return unsupported!();
+ #[cfg(feature = "app-promotion")]
+ return Ok(<pallet_app_promotion::Pallet<Runtime>>::cross_id_total_staked(staker).unwrap_or_default());
+ }
- #[cfg(feature = "app-promotion")]
- return Ok(<pallet_app_promotion::Pallet<Runtime>>::cross_id_total_staked(staker).unwrap_or_default());
- }
+ #[allow(unused_variables)]
+ fn total_staked_per_block(staker: CrossAccountId) -> Result<Vec<(BlockNumber, u128)>, DispatchError> {
+ #[cfg(not(feature = "app-promotion"))]
+ return unsupported!();
- #[allow(unused_variables)]
- fn total_staked_per_block(staker: CrossAccountId) -> Result<Vec<(BlockNumber, u128)>, DispatchError> {
- #[cfg(not(feature = "app-promotion"))]
- return unsupported!();
+ #[cfg(feature = "app-promotion")]
+ return Ok(<pallet_app_promotion::Pallet<Runtime>>::cross_id_total_staked_per_block(staker));
+ }
- #[cfg(feature = "app-promotion")]
- return Ok(<pallet_app_promotion::Pallet<Runtime>>::cross_id_total_staked_per_block(staker));
- }
+ #[allow(unused_variables)]
+ fn pending_unstake(staker: Option<CrossAccountId>) -> Result<u128, DispatchError> {
+ #[cfg(not(feature = "app-promotion"))]
+ return unsupported!();
- #[allow(unused_variables)]
- fn pending_unstake(staker: Option<CrossAccountId>) -> Result<u128, DispatchError> {
- #[cfg(not(feature = "app-promotion"))]
- return unsupported!();
+ #[cfg(feature = "app-promotion")]
+ return Ok(<pallet_app_promotion::Pallet<Runtime>>::cross_id_pending_unstake(staker));
+ }
- #[cfg(feature = "app-promotion")]
- return Ok(<pallet_app_promotion::Pallet<Runtime>>::cross_id_pending_unstake(staker));
- }
+ #[allow(unused_variables)]
+ fn pending_unstake_per_block(staker: CrossAccountId) -> Result<Vec<(BlockNumber, u128)>, DispatchError> {
+ #[cfg(not(feature = "app-promotion"))]
+ return unsupported!();
- #[allow(unused_variables)]
- fn pending_unstake_per_block(staker: CrossAccountId) -> Result<Vec<(BlockNumber, u128)>, DispatchError> {
- #[cfg(not(feature = "app-promotion"))]
- return unsupported!();
+ #[cfg(feature = "app-promotion")]
+ return Ok(<pallet_app_promotion::Pallet<Runtime>>::cross_id_pending_unstake_per_block(staker))
+ }
+ }
- #[cfg(feature = "app-promotion")]
- return Ok(<pallet_app_promotion::Pallet<Runtime>>::cross_id_pending_unstake_per_block(staker))
- }
- }
+ impl sp_api::Core<Block> for Runtime {
+ fn version() -> RuntimeVersion {
+ VERSION
+ }
- impl sp_api::Core<Block> for Runtime {
- fn version() -> RuntimeVersion {
- VERSION
- }
+ fn execute_block(block: Block) {
+ Executive::execute_block(block)
+ }
- fn execute_block(block: Block) {
- Executive::execute_block(block)
- }
+ fn initialize_block(header: &<Block as BlockT>::Header) {
+ Executive::initialize_block(header)
+ }
+ }
- fn initialize_block(header: &<Block as BlockT>::Header) {
- Executive::initialize_block(header)
- }
- }
+ impl sp_api::Metadata<Block> for Runtime {
+ fn metadata() -> OpaqueMetadata {
+ OpaqueMetadata::new(Runtime::metadata().into())
+ }
- impl sp_api::Metadata<Block> for Runtime {
- fn metadata() -> OpaqueMetadata {
- OpaqueMetadata::new(Runtime::metadata().into())
- }
+ fn metadata_at_version(version: u32) -> Option<OpaqueMetadata> {
+ Runtime::metadata_at_version(version)
+ }
- fn metadata_at_version(version: u32) -> Option<OpaqueMetadata> {
- Runtime::metadata_at_version(version)
- }
+ fn metadata_versions() -> sp_std::vec::Vec<u32> {
+ Runtime::metadata_versions()
+ }
+ }
- fn metadata_versions() -> sp_std::vec::Vec<u32> {
- Runtime::metadata_versions()
- }
- }
+ impl sp_block_builder::BlockBuilder<Block> for Runtime {
+ fn apply_extrinsic(extrinsic: <Block as BlockT>::Extrinsic) -> ApplyExtrinsicResult {
+ Executive::apply_extrinsic(extrinsic)
+ }
- impl sp_block_builder::BlockBuilder<Block> for Runtime {
- fn apply_extrinsic(extrinsic: <Block as BlockT>::Extrinsic) -> ApplyExtrinsicResult {
- Executive::apply_extrinsic(extrinsic)
- }
+ fn finalize_block() -> <Block as BlockT>::Header {
+ Executive::finalize_block()
+ }
- fn finalize_block() -> <Block as BlockT>::Header {
- Executive::finalize_block()
- }
+ fn inherent_extrinsics(data: sp_inherents::InherentData) -> Vec<<Block as BlockT>::Extrinsic> {
+ data.create_extrinsics()
+ }
- fn inherent_extrinsics(data: sp_inherents::InherentData) -> Vec<<Block as BlockT>::Extrinsic> {
- data.create_extrinsics()
- }
+ fn check_inherents(
+ block: Block,
+ data: sp_inherents::InherentData,
+ ) -> sp_inherents::CheckInherentsResult {
+ data.check_extrinsics(&block)
+ }
- fn check_inherents(
- block: Block,
- data: sp_inherents::InherentData,
- ) -> sp_inherents::CheckInherentsResult {
- data.check_extrinsics(&block)
- }
+ // fn random_seed() -> <Block as BlockT>::Hash {
+ // RandomnessCollectiveFlip::random_seed().0
+ // }
+ }
- // fn random_seed() -> <Block as BlockT>::Hash {
- // RandomnessCollectiveFlip::random_seed().0
- // }
- }
+ impl sp_transaction_pool::runtime_api::TaggedTransactionQueue<Block> for Runtime {
+ fn validate_transaction(
+ source: TransactionSource,
+ tx: <Block as BlockT>::Extrinsic,
+ hash: <Block as BlockT>::Hash,
+ ) -> TransactionValidity {
+ Executive::validate_transaction(source, tx, hash)
+ }
+ }
- impl sp_transaction_pool::runtime_api::TaggedTransactionQueue<Block> for Runtime {
- fn validate_transaction(
- source: TransactionSource,
- tx: <Block as BlockT>::Extrinsic,
- hash: <Block as BlockT>::Hash,
- ) -> TransactionValidity {
- Executive::validate_transaction(source, tx, hash)
- }
- }
+ impl sp_offchain::OffchainWorkerApi<Block> for Runtime {
+ fn offchain_worker(header: &<Block as BlockT>::Header) {
+ Executive::offchain_worker(header)
+ }
+ }
- impl sp_offchain::OffchainWorkerApi<Block> for Runtime {
- fn offchain_worker(header: &<Block as BlockT>::Header) {
- Executive::offchain_worker(header)
- }
- }
+ impl fp_rpc::EthereumRuntimeRPCApi<Block> for Runtime {
+ fn chain_id() -> u64 {
+ <Runtime as pallet_evm::Config>::ChainId::get()
+ }
- impl fp_rpc::EthereumRuntimeRPCApi<Block> for Runtime {
- fn chain_id() -> u64 {
- <Runtime as pallet_evm::Config>::ChainId::get()
- }
+ fn account_basic(address: H160) -> EVMAccount {
+ let (account, _) = EVM::account_basic(&address);
+ account
+ }
- fn account_basic(address: H160) -> EVMAccount {
- let (account, _) = EVM::account_basic(&address);
- account
- }
+ fn gas_price() -> U256 {
+ let (price, _) = <Runtime as pallet_evm::Config>::FeeCalculator::min_gas_price();
+ price
+ }
- fn gas_price() -> U256 {
- let (price, _) = <Runtime as pallet_evm::Config>::FeeCalculator::min_gas_price();
- price
- }
+ fn account_code_at(address: H160) -> Vec<u8> {
+ use pallet_evm::OnMethodCall;
+ <Runtime as pallet_evm::Config>::OnMethodCall::get_code(&address)
+ .unwrap_or_else(|| pallet_evm::AccountCodes::<Runtime>::get(address))
+ }
- fn account_code_at(address: H160) -> Vec<u8> {
- use pallet_evm::OnMethodCall;
- <Runtime as pallet_evm::Config>::OnMethodCall::get_code(&address)
- .unwrap_or_else(|| pallet_evm::AccountCodes::<Runtime>::get(address))
- }
+ fn author() -> H160 {
+ <pallet_evm::Pallet<Runtime>>::find_author()
+ }
- fn author() -> H160 {
- <pallet_evm::Pallet<Runtime>>::find_author()
- }
+ fn storage_at(address: H160, index: U256) -> H256 {
+ let mut tmp = [0u8; 32];
+ index.to_big_endian(&mut tmp);
+ pallet_evm::AccountStorages::<Runtime>::get(address, H256::from_slice(&tmp[..]))
+ }
- fn storage_at(address: H160, index: U256) -> H256 {
- let mut tmp = [0u8; 32];
- index.to_big_endian(&mut tmp);
- pallet_evm::AccountStorages::<Runtime>::get(address, H256::from_slice(&tmp[..]))
- }
+ #[allow(clippy::redundant_closure)]
+ fn call(
+ from: H160,
+ to: H160,
+ data: Vec<u8>,
+ value: U256,
+ gas_limit: U256,
+ max_fee_per_gas: Option<U256>,
+ max_priority_fee_per_gas: Option<U256>,
+ nonce: Option<U256>,
+ estimate: bool,
+ access_list: Option<Vec<(H160, Vec<H256>)>>,
+ ) -> Result<pallet_evm::CallInfo, sp_runtime::DispatchError> {
+ let config = if estimate {
+ let mut config = <Runtime as pallet_evm::Config>::config().clone();
+ config.estimate = true;
+ Some(config)
+ } else {
+ None
+ };
- #[allow(clippy::redundant_closure)]
- fn call(
- from: H160,
- to: H160,
- data: Vec<u8>,
- value: U256,
- gas_limit: U256,
- max_fee_per_gas: Option<U256>,
- max_priority_fee_per_gas: Option<U256>,
- nonce: Option<U256>,
- estimate: bool,
- access_list: Option<Vec<(H160, Vec<H256>)>>,
- ) -> Result<pallet_evm::CallInfo, sp_runtime::DispatchError> {
- let config = if estimate {
- let mut config = <Runtime as pallet_evm::Config>::config().clone();
- config.estimate = true;
- Some(config)
- } else {
- None
- };
+ let is_transactional = false;
+ let validate = false;
+ <Runtime as pallet_evm::Config>::Runner::call(
+ CrossAccountId::from_eth(from),
+ to,
+ data,
+ value,
+ gas_limit.low_u64(),
+ max_fee_per_gas,
+ max_priority_fee_per_gas,
+ nonce,
+ access_list.unwrap_or_default(),
+ is_transactional,
+ validate,
+ // TODO we probably want to support external cost recording in non-transactional calls
+ None,
+ None,
- let is_transactional = false;
- let validate = false;
- <Runtime as pallet_evm::Config>::Runner::call(
- CrossAccountId::from_eth(from),
- to,
- data,
- value,
- gas_limit.low_u64(),
- max_fee_per_gas,
- max_priority_fee_per_gas,
- nonce,
- access_list.unwrap_or_default(),
- is_transactional,
- validate,
- // TODO we probably want to support external cost recording in non-transactional calls
- None,
- None,
+ config.as_ref().unwrap_or_else(|| <Runtime as pallet_evm::Config>::config()),
+ ).map_err(|err| err.error.into())
+ }
- config.as_ref().unwrap_or_else(|| <Runtime as pallet_evm::Config>::config()),
- ).map_err(|err| err.error.into())
- }
+ #[allow(clippy::redundant_closure)]
+ fn create(
+ from: H160,
+ data: Vec<u8>,
+ value: U256,
+ gas_limit: U256,
+ max_fee_per_gas: Option<U256>,
+ max_priority_fee_per_gas: Option<U256>,
+ nonce: Option<U256>,
+ estimate: bool,
+ access_list: Option<Vec<(H160, Vec<H256>)>>,
+ ) -> Result<pallet_evm::CreateInfo, sp_runtime::DispatchError> {
+ let config = if estimate {
+ let mut config = <Runtime as pallet_evm::Config>::config().clone();
+ config.estimate = true;
+ Some(config)
+ } else {
+ None
+ };
- #[allow(clippy::redundant_closure)]
- fn create(
- from: H160,
- data: Vec<u8>,
- value: U256,
- gas_limit: U256,
- max_fee_per_gas: Option<U256>,
- max_priority_fee_per_gas: Option<U256>,
- nonce: Option<U256>,
- estimate: bool,
- access_list: Option<Vec<(H160, Vec<H256>)>>,
- ) -> Result<pallet_evm::CreateInfo, sp_runtime::DispatchError> {
- let config = if estimate {
- let mut config = <Runtime as pallet_evm::Config>::config().clone();
- config.estimate = true;
- Some(config)
- } else {
- None
- };
+ let is_transactional = false;
+ let validate = false;
+ <Runtime as pallet_evm::Config>::Runner::create(
+ CrossAccountId::from_eth(from),
+ data,
+ value,
+ gas_limit.low_u64(),
+ max_fee_per_gas,
+ max_priority_fee_per_gas,
+ nonce,
+ access_list.unwrap_or_default(),
+ is_transactional,
+ validate,
+ // TODO we probably want to support external cost recording in non-transactional calls
+ None,
+ None,
- let is_transactional = false;
- let validate = false;
- <Runtime as pallet_evm::Config>::Runner::create(
- CrossAccountId::from_eth(from),
- data,
- value,
- gas_limit.low_u64(),
- max_fee_per_gas,
- max_priority_fee_per_gas,
- nonce,
- access_list.unwrap_or_default(),
- is_transactional,
- validate,
- // TODO we probably want to support external cost recording in non-transactional calls
- None,
- None,
+ config.as_ref().unwrap_or_else(|| <Runtime as pallet_evm::Config>::config()),
+ ).map_err(|err| err.error.into())
+ }
- config.as_ref().unwrap_or_else(|| <Runtime as pallet_evm::Config>::config()),
- ).map_err(|err| err.error.into())
- }
+ fn current_transaction_statuses() -> Option<Vec<TransactionStatus>> {
+ pallet_ethereum::CurrentTransactionStatuses::<Runtime>::get()
+ }
- fn current_transaction_statuses() -> Option<Vec<TransactionStatus>> {
- pallet_ethereum::CurrentTransactionStatuses::<Runtime>::get()
- }
+ fn current_block() -> Option<pallet_ethereum::Block> {
+ pallet_ethereum::CurrentBlock::<Runtime>::get()
+ }
- fn current_block() -> Option<pallet_ethereum::Block> {
- pallet_ethereum::CurrentBlock::<Runtime>::get()
- }
+ fn current_receipts() -> Option<Vec<pallet_ethereum::Receipt>> {
+ pallet_ethereum::CurrentReceipts::<Runtime>::get()
+ }
- fn current_receipts() -> Option<Vec<pallet_ethereum::Receipt>> {
- pallet_ethereum::CurrentReceipts::<Runtime>::get()
- }
+ fn current_all() -> (
+ Option<pallet_ethereum::Block>,
+ Option<Vec<pallet_ethereum::Receipt>>,
+ Option<Vec<TransactionStatus>>
+ ) {
+ (
+ pallet_ethereum::CurrentBlock::<Runtime>::get(),
+ pallet_ethereum::CurrentReceipts::<Runtime>::get(),
+ pallet_ethereum::CurrentTransactionStatuses::<Runtime>::get()
+ )
+ }
- fn current_all() -> (
- Option<pallet_ethereum::Block>,
- Option<Vec<pallet_ethereum::Receipt>>,
- Option<Vec<TransactionStatus>>
- ) {
- (
- pallet_ethereum::CurrentBlock::<Runtime>::get(),
- pallet_ethereum::CurrentReceipts::<Runtime>::get(),
- pallet_ethereum::CurrentTransactionStatuses::<Runtime>::get()
- )
- }
+ fn extrinsic_filter(xts: Vec<<Block as sp_api::BlockT>::Extrinsic>) -> Vec<pallet_ethereum::Transaction> {
+ xts.into_iter().filter_map(|xt| match xt.0.function {
+ RuntimeCall::Ethereum(pallet_ethereum::Call::transact { transaction }) => Some(transaction),
+ _ => None
+ }).collect()
+ }
- fn extrinsic_filter(xts: Vec<<Block as sp_api::BlockT>::Extrinsic>) -> Vec<pallet_ethereum::Transaction> {
- xts.into_iter().filter_map(|xt| match xt.0.function {
- RuntimeCall::Ethereum(pallet_ethereum::Call::transact { transaction }) => Some(transaction),
- _ => None
- }).collect()
- }
+ fn elasticity() -> Option<Permill> {
+ None
+ }
- fn elasticity() -> Option<Permill> {
- None
- }
+ fn gas_limit_multiplier_support() {}
- fn gas_limit_multiplier_support() {}
+ fn pending_block(
+ xts: Vec<<Block as BlockT>::Extrinsic>,
+ ) -> (Option<pallet_ethereum::Block>, Option<Vec<TransactionStatus>>) {
+ for ext in xts.into_iter() {
+ let _ = Executive::apply_extrinsic(ext);
+ }
- fn pending_block(
- xts: Vec<<Block as BlockT>::Extrinsic>,
- ) -> (Option<pallet_ethereum::Block>, Option<Vec<TransactionStatus>>) {
- for ext in xts.into_iter() {
- let _ = Executive::apply_extrinsic(ext);
- }
+ Ethereum::on_finalize(System::block_number() + 1);
- Ethereum::on_finalize(System::block_number() + 1);
+ (
+ pallet_ethereum::CurrentBlock::<Runtime>::get(),
+ pallet_ethereum::CurrentTransactionStatuses::<Runtime>::get()
+ )
+ }
+ }
- (
- pallet_ethereum::CurrentBlock::<Runtime>::get(),
- pallet_ethereum::CurrentTransactionStatuses::<Runtime>::get()
- )
- }
- }
+ impl sp_session::SessionKeys<Block> for Runtime {
+ fn decode_session_keys(
+ encoded: Vec<u8>,
+ ) -> Option<Vec<(Vec<u8>, KeyTypeId)>> {
+ SessionKeys::decode_into_raw_public_keys(&encoded)
+ }
- impl fp_rpc::ConvertTransactionRuntimeApi<Block> for Runtime {
- fn convert_transaction(transaction: pallet_ethereum::Transaction) -> <Block as BlockT>::Extrinsic {
- UncheckedExtrinsic::new_unsigned(
- pallet_ethereum::Call::<Runtime>::transact { transaction }.into(),
- )
- }
- }
+ fn generate_session_keys(seed: Option<Vec<u8>>) -> Vec<u8> {
+ SessionKeys::generate(seed)
+ }
+ }
- impl sp_session::SessionKeys<Block> for Runtime {
- fn decode_session_keys(
- encoded: Vec<u8>,
- ) -> Option<Vec<(Vec<u8>, KeyTypeId)>> {
- SessionKeys::decode_into_raw_public_keys(&encoded)
- }
+ impl sp_consensus_aura::AuraApi<Block, AuraId> for Runtime {
+ fn slot_duration() -> sp_consensus_aura::SlotDuration {
+ sp_consensus_aura::SlotDuration::from_millis(Aura::slot_duration())
+ }
- fn generate_session_keys(seed: Option<Vec<u8>>) -> Vec<u8> {
- SessionKeys::generate(seed)
- }
- }
+ fn authorities() -> Vec<AuraId> {
+ Aura::authorities().to_vec()
+ }
+ }
- impl sp_consensus_aura::AuraApi<Block, AuraId> for Runtime {
- fn slot_duration() -> sp_consensus_aura::SlotDuration {
- sp_consensus_aura::SlotDuration::from_millis(Aura::slot_duration())
- }
+ impl cumulus_primitives_core::CollectCollationInfo<Block> for Runtime {
+ fn collect_collation_info(header: &<Block as BlockT>::Header) -> cumulus_primitives_core::CollationInfo {
+ ParachainSystem::collect_collation_info(header)
+ }
+ }
- fn authorities() -> Vec<AuraId> {
- Aura::authorities().to_vec()
- }
- }
+ impl frame_system_rpc_runtime_api::AccountNonceApi<Block, AccountId, Nonce> for Runtime {
+ fn account_nonce(account: AccountId) -> Nonce {
+ System::account_nonce(account)
+ }
+ }
- impl cumulus_primitives_core::CollectCollationInfo<Block> for Runtime {
- fn collect_collation_info(header: &<Block as BlockT>::Header) -> cumulus_primitives_core::CollationInfo {
- ParachainSystem::collect_collation_info(header)
- }
- }
+ impl pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi<Block, Balance> for Runtime {
+ fn query_info(uxt: <Block as BlockT>::Extrinsic, len: u32) -> RuntimeDispatchInfo<Balance> {
+ TransactionPayment::query_info(uxt, len)
+ }
+ fn query_fee_details(uxt: <Block as BlockT>::Extrinsic, len: u32) -> FeeDetails<Balance> {
+ TransactionPayment::query_fee_details(uxt, len)
+ }
+ fn query_weight_to_fee(weight: Weight) -> Balance {
+ TransactionPayment::weight_to_fee(weight)
+ }
+ fn query_length_to_fee(length: u32) -> Balance {
+ TransactionPayment::length_to_fee(length)
+ }
+ }
- impl frame_system_rpc_runtime_api::AccountNonceApi<Block, AccountId, Index> for Runtime {
- fn account_nonce(account: AccountId) -> Index {
- System::account_nonce(account)
- }
- }
+ #[cfg(feature = "runtime-benchmarks")]
+ impl frame_benchmarking::Benchmark<Block> for Runtime {
+ fn benchmark_metadata(extra: bool) -> (
+ Vec<frame_benchmarking::BenchmarkList>,
+ Vec<frame_support::traits::StorageInfo>,
+ ) {
+ use frame_benchmarking::{list_benchmark, Benchmarking, BenchmarkList};
+ use frame_support::traits::StorageInfoTrait;
- impl pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi<Block, Balance> for Runtime {
- fn query_info(uxt: <Block as BlockT>::Extrinsic, len: u32) -> RuntimeDispatchInfo<Balance> {
- TransactionPayment::query_info(uxt, len)
- }
- fn query_fee_details(uxt: <Block as BlockT>::Extrinsic, len: u32) -> FeeDetails<Balance> {
- TransactionPayment::query_fee_details(uxt, len)
- }
- fn query_weight_to_fee(weight: Weight) -> Balance {
- TransactionPayment::weight_to_fee(weight)
- }
- fn query_length_to_fee(length: u32) -> Balance {
- TransactionPayment::length_to_fee(length)
- }
- }
+ let mut list = Vec::<BenchmarkList>::new();
+ list_benchmark!(list, extra, pallet_xcm, PolkadotXcm);
- /*
- impl pallet_contracts_rpc_runtime_api::ContractsApi<Block, AccountId, Balance, BlockNumber, Hash>
- for Runtime
- {
- fn call(
- origin: AccountId,
- dest: AccountId,
- value: Balance,
- gas_limit: u64,
- input_data: Vec<u8>,
- ) -> pallet_contracts_primitives::ContractExecResult {
- Contracts::bare_call(origin, dest, value, gas_limit, input_data, false)
- }
+ list_benchmark!(list, extra, pallet_evm_migration, EvmMigration);
+ list_benchmark!(list, extra, pallet_common, Common);
+ list_benchmark!(list, extra, pallet_unique, Unique);
+ list_benchmark!(list, extra, pallet_structure, Structure);
+ list_benchmark!(list, extra, pallet_inflation, Inflation);
+ list_benchmark!(list, extra, pallet_configuration, Configuration);
- fn instantiate(
- origin: AccountId,
- endowment: Balance,
- gas_limit: u64,
- code: pallet_contracts_primitives::Code<Hash>,
- data: Vec<u8>,
- salt: Vec<u8>,
- ) -> pallet_contracts_primitives::ContractInstantiateResult<AccountId, BlockNumber>
- {
- Contracts::bare_instantiate(origin, endowment, gas_limit, code, data, salt, true, false)
- }
+ #[cfg(feature = "app-promotion")]
+ list_benchmark!(list, extra, pallet_app_promotion, AppPromotion);
- fn get_storage(
- address: AccountId,
- key: [u8; 32],
- ) -> pallet_contracts_primitives::GetStorageResult {
- Contracts::get_storage(address, key)
- }
+ list_benchmark!(list, extra, pallet_fungible, Fungible);
+ list_benchmark!(list, extra, pallet_nonfungible, Nonfungible);
- fn rent_projection(
- address: AccountId,
- ) -> pallet_contracts_primitives::RentProjectionResult<BlockNumber> {
- Contracts::rent_projection(address)
- }
- }
- */
+ #[cfg(feature = "refungible")]
+ list_benchmark!(list, extra, pallet_refungible, Refungible);
- #[cfg(feature = "runtime-benchmarks")]
- impl frame_benchmarking::Benchmark<Block> for Runtime {
- fn benchmark_metadata(extra: bool) -> (
- Vec<frame_benchmarking::BenchmarkList>,
- Vec<frame_support::traits::StorageInfo>,
- ) {
- use frame_benchmarking::{list_benchmark, Benchmarking, BenchmarkList};
- use frame_support::traits::StorageInfoTrait;
+ #[cfg(feature = "collator-selection")]
+ list_benchmark!(list, extra, pallet_collator_selection, CollatorSelection);
- let mut list = Vec::<BenchmarkList>::new();
- list_benchmark!(list, extra, pallet_xcm, PolkadotXcm);
+ #[cfg(feature = "collator-selection")]
+ list_benchmark!(list, extra, pallet_identity, Identity);
- list_benchmark!(list, extra, pallet_evm_migration, EvmMigration);
- list_benchmark!(list, extra, pallet_common, Common);
- list_benchmark!(list, extra, pallet_unique, Unique);
- list_benchmark!(list, extra, pallet_structure, Structure);
- list_benchmark!(list, extra, pallet_inflation, Inflation);
- list_benchmark!(list, extra, pallet_configuration, Configuration);
+ #[cfg(feature = "foreign-assets")]
+ list_benchmark!(list, extra, pallet_foreign_assets, ForeignAssets);
- #[cfg(feature = "app-promotion")]
- list_benchmark!(list, extra, pallet_app_promotion, AppPromotion);
+ list_benchmark!(list, extra, pallet_maintenance, Maintenance);
- list_benchmark!(list, extra, pallet_fungible, Fungible);
- list_benchmark!(list, extra, pallet_nonfungible, Nonfungible);
+ // list_benchmark!(list, extra, pallet_evm_coder_substrate, EvmCoderSubstrate);
- #[cfg(feature = "refungible")]
- list_benchmark!(list, extra, pallet_refungible, Refungible);
+ let storage_info = AllPalletsWithSystem::storage_info();
- #[cfg(feature = "unique-scheduler")]
- list_benchmark!(list, extra, pallet_unique_scheduler_v2, Scheduler);
+ return (list, storage_info)
+ }
- #[cfg(feature = "collator-selection")]
- list_benchmark!(list, extra, pallet_collator_selection, CollatorSelection);
+ fn dispatch_benchmark(
+ config: frame_benchmarking::BenchmarkConfig
+ ) -> Result<Vec<frame_benchmarking::BenchmarkBatch>, sp_runtime::RuntimeString> {
+ use frame_benchmarking::{Benchmarking, BenchmarkBatch, add_benchmark, TrackedStorageKey};
- #[cfg(feature = "collator-selection")]
- list_benchmark!(list, extra, pallet_identity, Identity);
+ let allowlist: Vec<TrackedStorageKey> = vec![
+ // Total Issuance
+ hex_literal::hex!("c2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80").to_vec().into(),
- #[cfg(feature = "foreign-assets")]
- list_benchmark!(list, extra, pallet_foreign_assets, ForeignAssets);
+ // Block Number
+ hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef702a5c1b19ab7a04f536c519aca4983ac").to_vec().into(),
+ // Execution Phase
+ hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef7ff553b5a9862a516939d82b3d3d8661a").to_vec().into(),
+ // Event Count
+ hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef70a98fdbe9ce6c55837576c60c7af3850").to_vec().into(),
+ // System Events
+ hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef780d41e5e16056765bc8461851072c9d7").to_vec().into(),
- list_benchmark!(list, extra, pallet_maintenance, Maintenance);
+ // Evm CurrentLogs
+ hex_literal::hex!("1da53b775b270400e7e61ed5cbc5a146547f210cec367e9af919603343b9cb56").to_vec().into(),
- // list_benchmark!(list, extra, pallet_evm_coder_substrate, EvmCoderSubstrate);
+ // Transactional depth
+ hex_literal::hex!("3a7472616e73616374696f6e5f6c6576656c3a").to_vec().into(),
+ ];
- let storage_info = AllPalletsWithSystem::storage_info();
+ let mut batches = Vec::<BenchmarkBatch>::new();
+ let params = (&config, &allowlist);
+ add_benchmark!(params, batches, pallet_xcm, PolkadotXcm);
- return (list, storage_info)
- }
+ add_benchmark!(params, batches, pallet_evm_migration, EvmMigration);
+ add_benchmark!(params, batches, pallet_common, Common);
+ add_benchmark!(params, batches, pallet_unique, Unique);
+ add_benchmark!(params, batches, pallet_structure, Structure);
+ add_benchmark!(params, batches, pallet_inflation, Inflation);
+ add_benchmark!(params, batches, pallet_configuration, Configuration);
- fn dispatch_benchmark(
- config: frame_benchmarking::BenchmarkConfig
- ) -> Result<Vec<frame_benchmarking::BenchmarkBatch>, sp_runtime::RuntimeString> {
- use frame_benchmarking::{Benchmarking, BenchmarkBatch, add_benchmark, TrackedStorageKey};
+ #[cfg(feature = "app-promotion")]
+ add_benchmark!(params, batches, pallet_app_promotion, AppPromotion);
- let allowlist: Vec<TrackedStorageKey> = vec![
- // Total Issuance
- hex_literal::hex!("c2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80").to_vec().into(),
+ add_benchmark!(params, batches, pallet_fungible, Fungible);
+ add_benchmark!(params, batches, pallet_nonfungible, Nonfungible);
- // Block Number
- hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef702a5c1b19ab7a04f536c519aca4983ac").to_vec().into(),
- // Execution Phase
- hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef7ff553b5a9862a516939d82b3d3d8661a").to_vec().into(),
- // Event Count
- hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef70a98fdbe9ce6c55837576c60c7af3850").to_vec().into(),
- // System Events
- hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef780d41e5e16056765bc8461851072c9d7").to_vec().into(),
+ #[cfg(feature = "refungible")]
+ add_benchmark!(params, batches, pallet_refungible, Refungible);
- // Evm CurrentLogs
- hex_literal::hex!("1da53b775b270400e7e61ed5cbc5a146547f210cec367e9af919603343b9cb56").to_vec().into(),
+ #[cfg(feature = "collator-selection")]
+ add_benchmark!(params, batches, pallet_collator_selection, CollatorSelection);
- // Transactional depth
- hex_literal::hex!("3a7472616e73616374696f6e5f6c6576656c3a").to_vec().into(),
- ];
-
- let mut batches = Vec::<BenchmarkBatch>::new();
- let params = (&config, &allowlist);
- add_benchmark!(params, batches, pallet_xcm, PolkadotXcm);
-
- add_benchmark!(params, batches, pallet_evm_migration, EvmMigration);
- add_benchmark!(params, batches, pallet_common, Common);
- add_benchmark!(params, batches, pallet_unique, Unique);
- add_benchmark!(params, batches, pallet_structure, Structure);
- add_benchmark!(params, batches, pallet_inflation, Inflation);
- add_benchmark!(params, batches, pallet_configuration, Configuration);
-
- #[cfg(feature = "app-promotion")]
- add_benchmark!(params, batches, pallet_app_promotion, AppPromotion);
-
- add_benchmark!(params, batches, pallet_fungible, Fungible);
- add_benchmark!(params, batches, pallet_nonfungible, Nonfungible);
+ #[cfg(feature = "collator-selection")]
+ add_benchmark!(params, batches, pallet_identity, Identity);
- #[cfg(feature = "refungible")]
- add_benchmark!(params, batches, pallet_refungible, Refungible);
+ #[cfg(feature = "foreign-assets")]
+ add_benchmark!(params, batches, pallet_foreign_assets, ForeignAssets);
- #[cfg(feature = "unique-scheduler")]
- add_benchmark!(params, batches, pallet_unique_scheduler_v2, Scheduler);
-
- #[cfg(feature = "collator-selection")]
- add_benchmark!(params, batches, pallet_collator_selection, CollatorSelection);
-
- #[cfg(feature = "collator-selection")]
- add_benchmark!(params, batches, pallet_identity, Identity);
-
- #[cfg(feature = "foreign-assets")]
- add_benchmark!(params, batches, pallet_foreign_assets, ForeignAssets);
+ add_benchmark!(params, batches, pallet_maintenance, Maintenance);
- add_benchmark!(params, batches, pallet_maintenance, Maintenance);
+ // add_benchmark!(params, batches, pallet_evm_coder_substrate, EvmCoderSubstrate);
- // add_benchmark!(params, batches, pallet_evm_coder_substrate, EvmCoderSubstrate);
+ if batches.is_empty() { return Err("Benchmark not found for this pallet.".into()) }
+ Ok(batches)
+ }
+ }
- if batches.is_empty() { return Err("Benchmark not found for this pallet.".into()) }
- Ok(batches)
- }
- }
+ impl up_pov_estimate_rpc::PovEstimateApi<Block> for Runtime {
+ #[allow(unused_variables)]
+ fn pov_estimate(uxt: Vec<u8>) -> ApplyExtrinsicResult {
+ #[cfg(feature = "pov-estimate")]
+ {
+ use parity_scale_codec::Decode;
- impl up_pov_estimate_rpc::PovEstimateApi<Block> for Runtime {
- #[allow(unused_variables)]
- fn pov_estimate(uxt: Vec<u8>) -> ApplyExtrinsicResult {
- #[cfg(feature = "pov-estimate")]
- {
- use codec::Decode;
+ let uxt_decode = <<Block as BlockT>::Extrinsic as Decode>::decode(&mut &*uxt)
+ .map_err(|_| DispatchError::Other("failed to decode the extrinsic"));
- let uxt_decode = <<Block as BlockT>::Extrinsic as Decode>::decode(&mut &*uxt)
- .map_err(|_| DispatchError::Other("failed to decode the extrinsic"));
+ let uxt = match uxt_decode {
+ Ok(uxt) => uxt,
+ Err(err) => return Ok(err.into()),
+ };
- let uxt = match uxt_decode {
- Ok(uxt) => uxt,
- Err(err) => return Ok(err.into()),
- };
+ Executive::apply_extrinsic(uxt)
+ }
- Executive::apply_extrinsic(uxt)
- }
+ #[cfg(not(feature = "pov-estimate"))]
+ return Ok(unsupported!());
+ }
+ }
- #[cfg(not(feature = "pov-estimate"))]
- return Ok(unsupported!());
- }
- }
+ #[cfg(feature = "try-runtime")]
+ impl frame_try_runtime::TryRuntime<Block> for Runtime {
+ fn on_runtime_upgrade(checks: frame_try_runtime::UpgradeCheckSelect) -> (Weight, Weight) {
+ log::info!("try-runtime::on_runtime_upgrade unique-chain.");
+ let weight = Executive::try_runtime_upgrade(checks).unwrap();
+ (weight, $crate::config::substrate::RuntimeBlockWeights::get().max_block)
+ }
- #[cfg(feature = "try-runtime")]
- impl frame_try_runtime::TryRuntime<Block> for Runtime {
- fn on_runtime_upgrade(checks: frame_try_runtime::UpgradeCheckSelect) -> (Weight, Weight) {
- log::info!("try-runtime::on_runtime_upgrade unique-chain.");
- let weight = Executive::try_runtime_upgrade(checks).unwrap();
- (weight, $crate::config::substrate::RuntimeBlockWeights::get().max_block)
- }
+ fn execute_block(
+ block: Block,
+ state_root_check: bool,
+ signature_check: bool,
+ select: frame_try_runtime::TryStateSelect
+ ) -> Weight {
+ log::info!(
+ target: "node-runtime",
+ "try-runtime: executing block {:?} / root checks: {:?} / try-state-select: {:?}",
+ block.header.hash(),
+ state_root_check,
+ select,
+ );
- fn execute_block(
- block: Block,
- state_root_check: bool,
- signature_check: bool,
- select: frame_try_runtime::TryStateSelect
- ) -> Weight {
- log::info!(
- target: "node-runtime",
- "try-runtime: executing block {:?} / root checks: {:?} / try-state-select: {:?}",
- block.header.hash(),
- state_root_check,
- select,
- );
+ Executive::try_execute_block(block, state_root_check, signature_check, select).unwrap()
+ }
+ }
- Executive::try_execute_block(block, state_root_check, signature_check, select).unwrap()
- }
- }
- }
- }
+ /// Should never be used, yet still required because of https://github.com/paritytech/polkadot-sdk/issues/27
+ /// Not allowed to panic, because rpc may be called using native runtime, thus causing thread panic.
+ impl fp_rpc::ConvertTransactionRuntimeApi<Block> for Runtime {
+ fn convert_transaction(
+ transaction: pallet_ethereum::Transaction
+ ) -> <Block as BlockT>::Extrinsic {
+ UncheckedExtrinsic::new_unsigned(
+ pallet_ethereum::Call::<Runtime>::transact { transaction }.into(),
+ )
+ }
+ }
+ }
+ }
}
runtime/common/scheduler.rsdiffbeforeafterboth--- a/runtime/common/scheduler.rs
+++ b/runtime/common/scheduler.rs
@@ -14,21 +14,20 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-use frame_support::{
- dispatch::{GetDispatchInfo, PostDispatchInfo, DispatchInfo},
-};
+use fp_self_contained::SelfContainedCall;
+use frame_support::dispatch::{DispatchInfo, GetDispatchInfo, PostDispatchInfo};
+use pallet_transaction_payment::ChargeTransactionPayment;
+use pallet_unique_scheduler_v2::DispatchCall;
+use parity_scale_codec::Encode;
use sp_runtime::{
- traits::{Dispatchable, Applyable, Member},
+ traits::{Applyable, Dispatchable, Member},
transaction_validity::TransactionValidityError,
DispatchErrorWithPostInfo,
};
-use codec::Encode;
-use crate::{Runtime, RuntimeCall, RuntimeOrigin, maintenance};
use up_common::types::AccountId;
-use fp_self_contained::SelfContainedCall;
-use pallet_unique_scheduler_v2::DispatchCall;
-use pallet_transaction_payment::ChargeTransactionPayment;
+use crate::{maintenance, Runtime, RuntimeCall, RuntimeOrigin};
+
/// The SignedExtension to the basic transaction logic.
pub type SignedExtraScheduler = (
frame_system::CheckWeight<Runtime>,
runtime/common/sponsoring.rsdiffbeforeafterboth--- a/runtime/common/sponsoring.rs
+++ b/runtime/common/sponsoring.rs
@@ -15,25 +15,25 @@
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
use core::marker::PhantomData;
-use up_sponsorship::SponsorshipHandler;
-use frame_support::{
- traits::{IsSubType},
-};
-use up_data_structs::{
- CollectionId, FUNGIBLE_SPONSOR_TRANSFER_TIMEOUT, NFT_SPONSOR_TRANSFER_TIMEOUT,
- REFUNGIBLE_SPONSOR_TRANSFER_TIMEOUT, TokenId, CollectionMode, CreateItemData,
-};
-use sp_runtime::traits::Saturating;
-use pallet_common::{CollectionHandle};
+
+use frame_support::traits::IsSubType;
+use frame_system::pallet_prelude::*;
+use pallet_common::CollectionHandle;
use pallet_evm::account::CrossAccountId;
-use pallet_unique::{
- Call as UniqueCall, Config as UniqueConfig, FungibleApproveBasket, RefungibleApproveBasket,
- NftApproveBasket, CreateItemBasket, ReFungibleTransferBasket, FungibleTransferBasket,
- NftTransferBasket, TokenPropertyBasket,
-};
use pallet_fungible::Config as FungibleConfig;
use pallet_nonfungible::Config as NonfungibleConfig;
use pallet_refungible::Config as RefungibleConfig;
+use pallet_unique::{
+ Call as UniqueCall, Config as UniqueConfig, CreateItemBasket, FungibleApproveBasket,
+ FungibleTransferBasket, NftApproveBasket, NftTransferBasket, ReFungibleTransferBasket,
+ RefungibleApproveBasket, TokenPropertyBasket,
+};
+use sp_runtime::traits::Saturating;
+use up_data_structs::{
+ CollectionId, CollectionMode, CreateItemData, TokenId, FUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,
+ NFT_SPONSOR_TRANSFER_TIMEOUT, REFUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,
+};
+use up_sponsorship::SponsorshipHandler;
pub trait Config: UniqueConfig + FungibleConfig + NonfungibleConfig + RefungibleConfig {}
impl<T> Config for T where T: UniqueConfig + FungibleConfig + NonfungibleConfig + RefungibleConfig {}
@@ -79,7 +79,7 @@
return None;
}
- let block_number = <frame_system::Pallet<T>>::block_number() as T::BlockNumber;
+ let block_number = <frame_system::Pallet<T>>::block_number() as BlockNumberFor<T>;
let limit = collection.limits.sponsored_data_rate_limit()?;
if let Some(last_tx_block) = TokenPropertyBasket::<T>::get(collection.id, item_id) {
@@ -123,7 +123,7 @@
}
// sponsor timeout
- let block_number = <frame_system::Pallet<T>>::block_number() as T::BlockNumber;
+ let block_number = <frame_system::Pallet<T>>::block_number() as BlockNumberFor<T>;
let limit = collection
.limits
.sponsor_transfer_timeout(match collection.mode {
@@ -169,7 +169,7 @@
properties: &CreateItemData,
) -> Option<()> {
// sponsor timeout
- let block_number = <frame_system::Pallet<T>>::block_number() as T::BlockNumber;
+ let block_number = <frame_system::Pallet<T>>::block_number() as BlockNumberFor<T>;
let limit = collection
.limits
.sponsor_transfer_timeout(match properties {
@@ -195,7 +195,7 @@
item_id: &TokenId,
) -> Option<()> {
// sponsor timeout
- let block_number = <frame_system::Pallet<T>>::block_number() as T::BlockNumber;
+ let block_number = <frame_system::Pallet<T>>::block_number() as BlockNumberFor<T>;
let limit = collection.limits.sponsor_approve_timeout();
let last_tx_block = match collection.mode {
@@ -307,7 +307,7 @@
pub trait SponsorshipPredict<T: Config> {
fn predict(collection: CollectionId, account: T::CrossAccountId, token: TokenId) -> Option<u64>
where
- u64: From<<T as frame_system::Config>::BlockNumber>;
+ u64: From<BlockNumberFor<T>>;
}
pub struct UniqueSponsorshipPredict<T>(PhantomData<T>);
@@ -315,13 +315,13 @@
impl<T: Config> SponsorshipPredict<T> for UniqueSponsorshipPredict<T> {
fn predict(collection_id: CollectionId, who: T::CrossAccountId, token: TokenId) -> Option<u64>
where
- u64: From<<T as frame_system::Config>::BlockNumber>,
+ u64: From<BlockNumberFor<T>>,
{
let collection = <CollectionHandle<T>>::try_get(collection_id).ok()?;
let _ = collection.sponsorship.sponsor()?;
// sponsor timeout
- let block_number = <frame_system::Pallet<T>>::block_number() as T::BlockNumber;
+ let block_number = <frame_system::Pallet<T>>::block_number() as BlockNumberFor<T>;
let limit = collection
.limits
.sponsor_transfer_timeout(match collection.mode {
runtime/common/tests/mod.rsdiffbeforeafterboth--- a/runtime/common/tests/mod.rs
+++ b/runtime/common/tests/mod.rs
@@ -14,12 +14,12 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+use sp_core::{Pair, Public};
+pub use sp_runtime::AccountId32 as AccountId;
use sp_runtime::{BuildStorage, Storage};
-use sp_core::{Public, Pair};
use up_common::types::AuraId;
-use crate::{Runtime, GenesisConfig, ParachainInfoConfig, RuntimeEvent, System};
-pub use sp_runtime::AccountId32 as AccountId;
+use crate::{ParachainInfoConfig, Runtime, RuntimeEvent, RuntimeGenesisConfig, System};
pub type Balance = u128;
pub mod xcm;
@@ -62,10 +62,11 @@
#[cfg(feature = "collator-selection")]
fn make_basic_storage() -> Storage {
- use sp_core::{sr25519};
+ use sp_core::sr25519;
use sp_runtime::traits::{IdentifyAccount, Verify};
- use crate::{AccountId, Signature, SessionKeys, CollatorSelectionConfig, SessionConfig};
+ use crate::{AccountId, CollatorSelectionConfig, SessionConfig, SessionKeys, Signature};
+
type AccountPublic = <Signature as Verify>::Signer;
fn get_account_id_from_seed<TPublic: Public>(seed: &str) -> AccountId
@@ -94,13 +95,14 @@
.map(|acc| get_account_id_from_seed::<sr25519::Public>(acc))
.collect::<Vec<_>>();
- let cfg = GenesisConfig {
+ let cfg = RuntimeGenesisConfig {
collator_selection: CollatorSelectionConfig { invulnerables },
session: SessionConfig { keys },
parachain_info: ParachainInfoConfig {
parachain_id: PARA_ID.into(),
+ ..Default::default()
},
- ..GenesisConfig::default()
+ ..Default::default()
};
cfg.build_storage().unwrap()
@@ -110,7 +112,7 @@
fn make_basic_storage() -> Storage {
use crate::AuraConfig;
- let cfg = GenesisConfig {
+ let cfg = RuntimeGenesisConfig {
aura: AuraConfig {
authorities: vec![
get_from_seed::<AuraId>("Alice"),
@@ -119,8 +121,9 @@
},
parachain_info: ParachainInfoConfig {
parachain_id: PARA_ID.into(),
+ ..Default::default()
},
- ..GenesisConfig::default()
+ ..Default::default()
};
cfg.build_storage().unwrap().into()
runtime/common/tests/xcm.rsdiffbeforeafterboth--- a/runtime/common/tests/xcm.rs
+++ b/runtime/common/tests/xcm.rs
@@ -14,15 +14,16 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-use xcm::{
+use frame_support::pallet_prelude::Weight;
+use parity_scale_codec::Encode;
+use staging_xcm::{
+ latest::{prelude::*, Error},
VersionedXcm,
- latest::{prelude::*, Error},
};
-use codec::Encode;
-use crate::{Runtime, RuntimeCall, RuntimeOrigin, RuntimeEvent, PolkadotXcm};
-use super::{new_test_ext, last_events, AccountId};
-use frame_support::{pallet_prelude::Weight};
+use super::{last_events, new_test_ext, AccountId};
+use crate::{PolkadotXcm, Runtime, RuntimeCall, RuntimeEvent, RuntimeOrigin};
+
const ALICE: AccountId = AccountId::new([0u8; 32]);
const BOB: AccountId = AccountId::new([1u8; 32]);
@@ -51,9 +52,9 @@
let xcm_event = &last_events(1)[0];
match xcm_event {
- RuntimeEvent::PolkadotXcm(pallet_xcm::Event::<Runtime>::Attempted(
- Outcome::Incomplete(_weight, Error::NoPermission),
- )) => { /* Pass */ }
+ RuntimeEvent::PolkadotXcm(pallet_xcm::Event::<Runtime>::Attempted {
+ outcome: Outcome::Incomplete(_weight, Error::NoPermission),
+ }) => { /* Pass */ }
_ => panic!(
"Expected PolkadotXcm.Attempted(Incomplete(_weight, NoPermission)),\
found: {xcm_event:#?}"
runtime/common/weights/mod.rsdiffbeforeafterboth--- a/runtime/common/weights/mod.rs
+++ b/runtime/common/weights/mod.rs
@@ -15,20 +15,21 @@
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
use core::marker::PhantomData;
-use frame_support::{weights::Weight};
-use pallet_common::{CommonWeightInfo, dispatch::dispatch_weight, RefungibleExtensionsWeightInfo};
+use frame_support::weights::Weight;
use pallet_balances_adapter::{
- Config as NativeFungibleConfig, common::CommonWeights as NativeFungibleWeights,
+ common::CommonWeights as NativeFungibleWeights, Config as NativeFungibleConfig,
};
-use pallet_fungible::{Config as FungibleConfig, common::CommonWeights as FungibleWeights};
-use pallet_nonfungible::{Config as NonfungibleConfig, common::CommonWeights as NonfungibleWeights};
-
+use pallet_common::{dispatch::dispatch_weight, CommonWeightInfo, RefungibleExtensionsWeightInfo};
+use pallet_fungible::{common::CommonWeights as FungibleWeights, Config as FungibleConfig};
+use pallet_nonfungible::{
+ common::CommonWeights as NonfungibleWeights, Config as NonfungibleConfig,
+};
#[cfg(feature = "refungible")]
use pallet_refungible::{
- Config as RefungibleConfig, weights::WeightInfo, common::CommonWeights as RefungibleWeights,
+ common::CommonWeights as RefungibleWeights, weights::WeightInfo, Config as RefungibleConfig,
};
-use up_data_structs::{CreateItemExData, CreateItemData};
+use up_data_structs::{CreateItemData, CreateItemExData};
pub mod xcm;
runtime/opal/Cargo.tomldiffbeforeafterboth--- a/runtime/opal/Cargo.toml
+++ b/runtime/opal/Cargo.toml
@@ -38,8 +38,10 @@
'pallet-app-promotion/runtime-benchmarks',
'pallet-balances/runtime-benchmarks',
'pallet-collator-selection/runtime-benchmarks',
+ 'pallet-collective/runtime-benchmarks',
'pallet-common/runtime-benchmarks',
'pallet-configuration/runtime-benchmarks',
+ 'pallet-democracy/runtime-benchmarks',
'pallet-ethereum/runtime-benchmarks',
'pallet-evm-coder-substrate/runtime-benchmarks',
'pallet-evm-migration/runtime-benchmarks',
@@ -48,25 +50,21 @@
'pallet-identity/runtime-benchmarks',
'pallet-inflation/runtime-benchmarks',
'pallet-maintenance/runtime-benchmarks',
+ 'pallet-membership/runtime-benchmarks',
'pallet-nonfungible/runtime-benchmarks',
- 'pallet-democracy/runtime-benchmarks',
- 'pallet-collective/runtime-benchmarks',
'pallet-ranked-collective/runtime-benchmarks',
- 'pallet-membership/runtime-benchmarks',
'pallet-referenda/runtime-benchmarks',
+ 'pallet-refungible/runtime-benchmarks',
'pallet-scheduler/runtime-benchmarks',
- 'pallet-refungible/runtime-benchmarks',
'pallet-structure/runtime-benchmarks',
'pallet-timestamp/runtime-benchmarks',
+ 'pallet-unique/runtime-benchmarks',
'pallet-utility/runtime-benchmarks',
- 'pallet-unique-scheduler-v2/runtime-benchmarks',
- 'pallet-unique/runtime-benchmarks',
'pallet-xcm/runtime-benchmarks',
'sp-runtime/runtime-benchmarks',
- 'xcm-builder/runtime-benchmarks',
+ 'staging-xcm-builder/runtime-benchmarks',
]
std = [
- 'codec/std',
'cumulus-pallet-aura-ext/std',
'cumulus-pallet-parachain-system/std',
'cumulus-pallet-xcm/std',
@@ -80,13 +78,14 @@
'frame-try-runtime/std',
'pallet-aura/std',
'pallet-balances/std',
+ 'pallet-collective/std',
'pallet-democracy/std',
- 'pallet-collective/std',
+ 'pallet-gov-origins/std',
+ 'pallet-membership/std',
'pallet-ranked-collective/std',
- 'pallet-membership/std',
'pallet-referenda/std',
- 'pallet-gov-origins/std',
'pallet-scheduler/std',
+ 'parity-scale-codec/std',
# 'pallet-contracts/std',
# 'pallet-contracts-primitives/std',
# 'pallet-contracts-rpc-runtime-api/std',
@@ -121,12 +120,11 @@
'pallet-structure/std',
'pallet-sudo/std',
'pallet-timestamp/std',
- 'pallet-utility/std',
'pallet-transaction-payment-rpc-runtime-api/std',
'pallet-transaction-payment/std',
'pallet-treasury/std',
- 'pallet-unique-scheduler-v2/std',
'pallet-unique/std',
+ 'pallet-utility/std',
'parachain-info/std',
'serde',
'sp-api/std',
@@ -140,14 +138,14 @@
'sp-std/std',
'sp-transaction-pool/std',
'sp-version/std',
+ 'staging-xcm-builder/std',
+ 'staging-xcm-executor/std',
+ 'staging-xcm/std',
'up-common/std',
'up-data-structs/std',
'up-pov-estimate-rpc/std',
'up-rpc/std',
'up-sponsorship/std',
- 'xcm-builder/std',
- 'xcm-executor/std',
- 'xcm/std',
"orml-tokens/std",
"orml-traits/std",
@@ -187,9 +185,11 @@
'pallet-base-fee/try-runtime',
'pallet-charge-transaction/try-runtime',
'pallet-collective/try-runtime',
+ 'pallet-collective/try-runtime',
'pallet-common/try-runtime',
'pallet-configuration/try-runtime',
'pallet-democracy/try-runtime',
+ 'pallet-democracy/try-runtime',
'pallet-ethereum/try-runtime',
'pallet-evm-coder-substrate/try-runtime',
'pallet-evm-contract-helpers/try-runtime',
@@ -198,28 +198,25 @@
'pallet-evm/try-runtime',
'pallet-foreign-assets/try-runtime',
'pallet-fungible/try-runtime',
+ 'pallet-gov-origins/try-runtime',
'pallet-inflation/try-runtime',
'pallet-maintenance/try-runtime',
'pallet-membership/try-runtime',
+ 'pallet-membership/try-runtime',
'pallet-nonfungible/try-runtime',
- 'pallet-democracy/try-runtime',
- 'pallet-collective/try-runtime',
'pallet-ranked-collective/try-runtime',
- 'pallet-membership/try-runtime',
'pallet-referenda/try-runtime',
- 'pallet-gov-origins/try-runtime',
- 'pallet-scheduler/try-runtime',
'pallet-refungible/try-runtime',
'pallet-scheduler/try-runtime',
+ 'pallet-scheduler/try-runtime',
'pallet-structure/try-runtime',
'pallet-sudo/try-runtime',
'pallet-test-utils?/try-runtime',
'pallet-timestamp/try-runtime',
- 'pallet-utility/try-runtime',
'pallet-transaction-payment/try-runtime',
'pallet-treasury/try-runtime',
- 'pallet-unique-scheduler-v2/try-runtime',
'pallet-unique/try-runtime',
+ 'pallet-utility/try-runtime',
'pallet-xcm/try-runtime',
'parachain-info/try-runtime',
]
@@ -227,20 +224,16 @@
app-promotion = []
collator-selection = []
foreign-assets = []
+gov-test-timings = []
governance = []
-gov-test-timings = []
preimage = []
refungible = []
-unique-scheduler = []
session-test-timings = []
################################################################################
# local dependencies
[dependencies]
-# Note: `package = "parity-scale-codec"` must be supplied since the `Encode` macro searches for it.
-codec = { workspace = true, package = "parity-scale-codec" }
-
cumulus-pallet-aura-ext = { workspace = true }
cumulus-pallet-dmp-queue = { workspace = true }
cumulus-pallet-parachain-system = { workspace = true }
@@ -266,13 +259,14 @@
pallet-state-trie-migration = { workspace = true }
pallet-sudo = { workspace = true }
pallet-timestamp = { workspace = true }
-pallet-utility = { workspace = true }
pallet-transaction-payment = { workspace = true }
pallet-transaction-payment-rpc-runtime-api = { workspace = true }
pallet-treasury = { workspace = true }
+pallet-utility = { workspace = true }
pallet-xcm = { workspace = true }
parachain-info = { workspace = true }
-polkadot-parachain = { workspace = true }
+parity-scale-codec = { workspace = true }
+polkadot-parachain-primitives = { workspace = true }
smallvec = { workspace = true }
sp-api = { workspace = true }
sp-arithmetic = { workspace = true }
@@ -287,9 +281,9 @@
sp-std = { workspace = true }
sp-transaction-pool = { workspace = true }
sp-version = { workspace = true }
-xcm = { workspace = true }
-xcm-builder = { workspace = true }
-xcm-executor = { workspace = true }
+staging-xcm = { workspace = true }
+staging-xcm-builder = { workspace = true }
+staging-xcm-executor = { workspace = true }
app-promotion-rpc = { workspace = true }
derivative = { workspace = true }
@@ -304,8 +298,10 @@
pallet-base-fee = { workspace = true }
pallet-charge-transaction = { workspace = true }
pallet-collator-selection = { workspace = true }
+pallet-collective = { workspace = true }
pallet-common = { workspace = true }
pallet-configuration = { workspace = true }
+pallet-democracy = { workspace = true }
pallet-ethereum = { workspace = true }
pallet-evm = { workspace = true }
pallet-evm-coder-substrate = { workspace = true }
@@ -315,21 +311,18 @@
pallet-evm-transaction-payment = { workspace = true }
pallet-foreign-assets = { workspace = true }
pallet-fungible = { workspace = true }
+pallet-gov-origins = { workspace = true }
pallet-identity = { workspace = true }
pallet-inflation = { workspace = true }
pallet-maintenance = { workspace = true }
+pallet-membership = { workspace = true }
pallet-nonfungible = { workspace = true }
-pallet-democracy = { workspace = true }
-pallet-collective = { workspace = true }
pallet-ranked-collective = { workspace = true }
-pallet-membership = { workspace = true }
pallet-referenda = { workspace = true }
-pallet-gov-origins = { workspace = true }
+pallet-refungible = { workspace = true }
pallet-scheduler = { workspace = true }
-pallet-refungible = { workspace = true }
pallet-structure = { workspace = true }
pallet-unique = { workspace = true }
-pallet-unique-scheduler-v2 = { workspace = true }
precompile-utils-macro = { workspace = true }
scale-info = { workspace = true }
up-common = { workspace = true }
runtime/opal/src/lib.rsdiffbeforeafterboth--- a/runtime/opal/src/lib.rs
+++ b/runtime/opal/src/lib.rs
@@ -27,15 +27,12 @@
extern crate alloc;
+use ::staging_xcm::latest::NetworkId;
use frame_support::parameter_types;
-
-use sp_version::RuntimeVersion;
use sp_runtime::create_runtime_str;
-
+use sp_version::RuntimeVersion;
use up_common::types::*;
-use ::xcm::latest::NetworkId;
-
mod runtime_common;
pub mod governance_timings;
@@ -52,7 +49,7 @@
spec_name: create_runtime_str!("opal"),
impl_name: create_runtime_str!("opal"),
authoring_version: 1,
- spec_version: 943061,
+ spec_version: 10010062,
impl_version: 0,
apis: RUNTIME_API_VERSIONS,
transaction_version: 3,
runtime/opal/src/xcm_barrier.rsdiffbeforeafterboth--- a/runtime/opal/src/xcm_barrier.rs
+++ b/runtime/opal/src/xcm_barrier.rs
@@ -15,8 +15,10 @@
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
use frame_support::{match_types, traits::Everything};
-use xcm::latest::{Junctions::*, MultiLocation};
-use xcm_builder::{AllowTopLevelPaidExecutionFrom, TakeWeightCredit, AllowExplicitUnpaidExecutionFrom};
+use staging_xcm::latest::{Junctions::*, MultiLocation};
+use staging_xcm_builder::{
+ AllowExplicitUnpaidExecutionFrom, AllowTopLevelPaidExecutionFrom, TakeWeightCredit,
+};
match_types! {
pub type ParentOnly: impl Contains<MultiLocation> = {
runtime/quartz/Cargo.tomldiffbeforeafterboth--- a/runtime/quartz/Cargo.toml
+++ b/runtime/quartz/Cargo.toml
@@ -32,9 +32,11 @@
'pallet-balances/runtime-benchmarks',
'pallet-collator-selection/runtime-benchmarks',
'pallet-collective/runtime-benchmarks',
+ 'pallet-collective/runtime-benchmarks',
'pallet-common/runtime-benchmarks',
'pallet-configuration/runtime-benchmarks',
'pallet-democracy/runtime-benchmarks',
+ 'pallet-democracy/runtime-benchmarks',
'pallet-ethereum/runtime-benchmarks',
'pallet-evm-coder-substrate/runtime-benchmarks',
'pallet-evm-migration/runtime-benchmarks',
@@ -44,25 +46,22 @@
'pallet-inflation/runtime-benchmarks',
'pallet-maintenance/runtime-benchmarks',
'pallet-membership/runtime-benchmarks',
+ 'pallet-membership/runtime-benchmarks',
'pallet-nonfungible/runtime-benchmarks',
- 'pallet-democracy/runtime-benchmarks',
- 'pallet-collective/runtime-benchmarks',
'pallet-ranked-collective/runtime-benchmarks',
- 'pallet-membership/runtime-benchmarks',
'pallet-referenda/runtime-benchmarks',
- 'pallet-scheduler/runtime-benchmarks',
'pallet-refungible/runtime-benchmarks',
'pallet-scheduler/runtime-benchmarks',
+ 'pallet-scheduler/runtime-benchmarks',
'pallet-structure/runtime-benchmarks',
'pallet-timestamp/runtime-benchmarks',
+ 'pallet-unique/runtime-benchmarks',
'pallet-utility/runtime-benchmarks',
- 'pallet-unique/runtime-benchmarks',
'pallet-xcm/runtime-benchmarks',
'sp-runtime/runtime-benchmarks',
- 'xcm-builder/runtime-benchmarks',
+ 'staging-xcm-builder/runtime-benchmarks',
]
std = [
- 'codec/std',
'cumulus-pallet-aura-ext/std',
'cumulus-pallet-parachain-system/std',
'cumulus-pallet-xcm/std',
@@ -81,6 +80,7 @@
'pallet-democracy/std',
'pallet-membership/std',
'pallet-scheduler/std',
+ 'parity-scale-codec/std',
# 'pallet-contracts/std',
# 'pallet-contracts-primitives/std',
# 'pallet-contracts-rpc-runtime-api/std',
@@ -99,8 +99,10 @@
'pallet-base-fee/std',
'pallet-charge-transaction/std',
'pallet-collator-selection/std',
+ 'pallet-collective/std',
'pallet-common/std',
'pallet-configuration/std',
+ 'pallet-democracy/std',
'pallet-ethereum/std',
'pallet-evm-coder-substrate/std',
'pallet-evm-contract-helpers/std',
@@ -108,24 +110,22 @@
'pallet-evm-transaction-payment/std',
'pallet-evm/std',
'pallet-fungible/std',
+ 'pallet-gov-origins/std',
'pallet-inflation/std',
+ 'pallet-membership/std',
'pallet-nonfungible/std',
- 'pallet-democracy/std',
- 'pallet-collective/std',
'pallet-ranked-collective/std',
- 'pallet-membership/std',
'pallet-referenda/std',
- 'pallet-gov-origins/std',
+ 'pallet-refungible/std',
'pallet-scheduler/std',
- 'pallet-refungible/std',
'pallet-structure/std',
'pallet-sudo/std',
'pallet-timestamp/std',
- 'pallet-utility/std',
'pallet-transaction-payment-rpc-runtime-api/std',
'pallet-transaction-payment/std',
'pallet-treasury/std',
'pallet-unique/std',
+ 'pallet-utility/std',
'parachain-info/std',
'serde',
'sp-api/std',
@@ -139,14 +139,14 @@
'sp-std/std',
'sp-transaction-pool/std',
'sp-version/std',
+ 'staging-xcm-builder/std',
+ 'staging-xcm-executor/std',
+ 'staging-xcm/std',
'up-common/std',
'up-data-structs/std',
'up-pov-estimate-rpc/std',
'up-rpc/std',
'up-sponsorship/std',
- 'xcm-builder/std',
- 'xcm-executor/std',
- 'xcm/std',
"orml-tokens/std",
"orml-traits/std",
@@ -181,8 +181,10 @@
'pallet-balances-adapter/try-runtime',
'pallet-balances/try-runtime',
'pallet-charge-transaction/try-runtime',
+ 'pallet-collective/try-runtime',
'pallet-common/try-runtime',
'pallet-configuration/try-runtime',
+ 'pallet-democracy/try-runtime',
'pallet-ethereum/try-runtime',
'pallet-evm-coder-substrate/try-runtime',
'pallet-evm-contract-helpers/try-runtime',
@@ -191,24 +193,22 @@
'pallet-evm/try-runtime',
'pallet-foreign-assets/try-runtime',
'pallet-fungible/try-runtime',
+ 'pallet-gov-origins/try-runtime',
'pallet-inflation/try-runtime',
'pallet-maintenance/try-runtime',
+ 'pallet-membership/try-runtime',
'pallet-nonfungible/try-runtime',
- 'pallet-democracy/try-runtime',
- 'pallet-collective/try-runtime',
'pallet-ranked-collective/try-runtime',
- 'pallet-membership/try-runtime',
'pallet-referenda/try-runtime',
- 'pallet-gov-origins/try-runtime',
+ 'pallet-refungible/try-runtime',
'pallet-scheduler/try-runtime',
- 'pallet-refungible/try-runtime',
'pallet-structure/try-runtime',
'pallet-sudo/try-runtime',
'pallet-timestamp/try-runtime',
- 'pallet-utility/try-runtime',
'pallet-transaction-payment/try-runtime',
'pallet-treasury/try-runtime',
'pallet-unique/try-runtime',
+ 'pallet-utility/try-runtime',
'pallet-xcm/try-runtime',
'parachain-info/try-runtime',
]
@@ -216,20 +216,16 @@
app-promotion = []
collator-selection = []
foreign-assets = []
+gov-test-timings = []
governance = []
preimage = []
refungible = []
-unique-scheduler = []
-gov-test-timings = []
session-test-timings = []
################################################################################
# local dependencies
[dependencies]
-# Note: `package = "parity-scale-codec"` must be supplied since the `Encode` macro searches for it.
-codec = { workspace = true, package = "parity-scale-codec" }
-
cumulus-pallet-aura-ext = { workspace = true }
cumulus-pallet-dmp-queue = { workspace = true }
cumulus-pallet-parachain-system = { workspace = true }
@@ -255,13 +251,14 @@
pallet-state-trie-migration = { workspace = true }
pallet-sudo = { workspace = true }
pallet-timestamp = { workspace = true }
-pallet-utility = { workspace = true }
pallet-transaction-payment = { workspace = true }
pallet-transaction-payment-rpc-runtime-api = { workspace = true }
pallet-treasury = { workspace = true }
+pallet-utility = { workspace = true }
pallet-xcm = { workspace = true }
parachain-info = { workspace = true }
-polkadot-parachain = { workspace = true }
+parity-scale-codec = { workspace = true }
+polkadot-parachain-primitives = { workspace = true }
smallvec = { workspace = true }
sp-api = { workspace = true }
sp-arithmetic = { workspace = true }
@@ -276,9 +273,9 @@
sp-std = { workspace = true }
sp-transaction-pool = { workspace = true }
sp-version = { workspace = true }
-xcm = { workspace = true }
-xcm-builder = { workspace = true }
-xcm-executor = { workspace = true }
+staging-xcm = { workspace = true }
+staging-xcm-builder = { workspace = true }
+staging-xcm-executor = { workspace = true }
app-promotion-rpc = { workspace = true }
derivative = { workspace = true }
@@ -287,20 +284,20 @@
pallet-app-promotion = { workspace = true }
pallet-balances-adapter = { workspace = true }
pallet-collator-selection = { workspace = true }
+pallet-collective = { workspace = true }
pallet-common = { workspace = true }
pallet-configuration = { workspace = true }
+pallet-democracy = { workspace = true }
pallet-fungible = { workspace = true }
+pallet-gov-origins = { workspace = true }
pallet-identity = { workspace = true }
pallet-inflation = { workspace = true }
+pallet-membership = { workspace = true }
pallet-nonfungible = { workspace = true }
-pallet-democracy = { workspace = true }
-pallet-collective = { workspace = true }
pallet-ranked-collective = { workspace = true }
-pallet-membership = { workspace = true }
pallet-referenda = { workspace = true }
-pallet-gov-origins = { workspace = true }
+pallet-refungible = { workspace = true }
pallet-scheduler = { workspace = true }
-pallet-refungible = { workspace = true }
pallet-structure = { workspace = true }
pallet-unique = { workspace = true }
scale-info = { workspace = true }
@@ -312,7 +309,7 @@
evm-coder = { workspace = true }
fp-rpc = { workspace = true }
fp-self-contained = { workspace = true }
-num_enum = { version = "0.5.3", default-features = false }
+num_enum = { version = "0.7.0", default-features = false }
pallet-base-fee = { workspace = true }
pallet-charge-transaction = { workspace = true }
pallet-ethereum = { workspace = true }
runtime/quartz/src/lib.rsdiffbeforeafterboth--- a/runtime/quartz/src/lib.rs
+++ b/runtime/quartz/src/lib.rs
@@ -27,15 +27,12 @@
extern crate alloc;
+use ::staging_xcm::latest::NetworkId;
use frame_support::parameter_types;
-
+use sp_runtime::create_runtime_str;
use sp_version::RuntimeVersion;
-use sp_runtime::create_runtime_str;
-
use up_common::types::*;
-use ::xcm::latest::NetworkId;
-
mod runtime_common;
pub mod governance_timings;
@@ -54,7 +51,7 @@
impl_name: create_runtime_str!("quartz"),
authoring_version: 1,
- spec_version: 943061,
+ spec_version: 10010062,
impl_version: 0,
apis: RUNTIME_API_VERSIONS,
transaction_version: 3,
@@ -67,7 +64,7 @@
impl_name: create_runtime_str!("sapphire"),
authoring_version: 1,
- spec_version: 943061,
+ spec_version: 10010062,
impl_version: 0,
apis: RUNTIME_API_VERSIONS,
transaction_version: 3,
runtime/quartz/src/xcm_barrier.rsdiffbeforeafterboth--- a/runtime/quartz/src/xcm_barrier.rs
+++ b/runtime/quartz/src/xcm_barrier.rs
@@ -15,10 +15,10 @@
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
use frame_support::{match_types, traits::Everything};
-use xcm::latest::{Junctions::*, MultiLocation};
-use xcm_builder::{
- AllowKnownQueryResponses, AllowSubscriptionsFrom, TakeWeightCredit,
- AllowTopLevelPaidExecutionFrom, AllowExplicitUnpaidExecutionFrom,
+use staging_xcm::latest::{Junctions::*, MultiLocation};
+use staging_xcm_builder::{
+ AllowExplicitUnpaidExecutionFrom, AllowKnownQueryResponses, AllowSubscriptionsFrom,
+ AllowTopLevelPaidExecutionFrom, TakeWeightCredit,
};
use crate::PolkadotXcm;
runtime/tests/Cargo.tomldiffbeforeafterboth--- a/runtime/tests/Cargo.toml
+++ b/runtime/tests/Cargo.toml
@@ -37,12 +37,12 @@
pallet-evm-coder-substrate = { workspace = true }
-codec = { workspace = true, package = "parity-scale-codec" }
+parity-scale-codec = { workspace = true }
scale-info = { workspace = true }
evm-coder = { workspace = true }
+staging-xcm = { workspace = true }
up-sponsorship = { workspace = true }
-xcm = { workspace = true }
[dev-dependencies]
pallet-common = { workspace = true, features = ["tests"] }
runtime/tests/src/dispatch.rsdiffbeforeafterboth--- /dev/null
+++ b/runtime/tests/src/dispatch.rs
@@ -0,0 +1 @@
+../../common/dispatch.rs
\ No newline at end of file
runtime/tests/src/lib.rsdiffbeforeafterboth--- a/runtime/tests/src/lib.rs
+++ b/runtime/tests/src/lib.rs
@@ -16,87 +16,78 @@
#![allow(clippy::from_over_into)]
-use sp_core::{H160, H256, U256};
use frame_support::{
+ pallet_prelude::Weight,
parameter_types,
- traits::{Everything, ConstU32, ConstU64, fungible::Inspect},
+ traits::{fungible::Inspect, ConstU32, ConstU64, Everything},
weights::IdentityFee,
- pallet_prelude::Weight,
-};
-use sp_runtime::{
- traits::{BlakeTwo256, IdentityLookup},
- testing::Header,
};
-use pallet_transaction_payment::CurrencyAdapter;
use frame_system as system;
+use pallet_ethereum::PostLogContent;
use pallet_evm::{
- AddressMapping, account::CrossAccountId, EnsureAddressNever, SubstrateBlockHashMapping,
- BackwardsAddressMapping,
+ account::CrossAccountId, AddressMapping, BackwardsAddressMapping, EnsureAddressNever,
+ SubstrateBlockHashMapping,
};
-use pallet_ethereum::PostLogContent;
-use codec::{Encode, Decode, MaxEncodedLen};
+use pallet_transaction_payment::CurrencyAdapter;
+use parity_scale_codec::{Decode, Encode, MaxEncodedLen};
use scale_info::TypeInfo;
-
+use sp_core::{H160, H256, U256};
+use sp_runtime::{
+ traits::{BlakeTwo256, IdentityLookup},
+ BuildStorage,
+};
use up_data_structs::mapping::{CrossTokenAddressMapping, EvmTokenAddressMapping};
-#[path = "../../common/dispatch.rs"]
mod dispatch;
use dispatch::CollectionDispatchT;
-#[path = "../../common/weights/mod.rs"]
mod weights;
use weights::CommonWeights;
-type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic<Test>;
-type Block = frame_system::mocking::MockBlock<Test>;
+type Block = frame_system::mocking::MockBlockU32<Test>;
#[cfg(test)]
mod tests;
// Configure a mock runtime to test the pallet.
frame_support::construct_runtime!(
- pub enum Test where
- Block = Block,
- NodeBlock = Block,
- UncheckedExtrinsic = UncheckedExtrinsic,
- {
+ pub enum Test {
System: frame_system,
Timestamp: pallet_timestamp,
- Unique: pallet_unique::{Pallet, Call, Storage},
- Balances: pallet_balances::{Pallet, Call, Storage, Event<T>},
- Common: pallet_common::{Pallet, Storage, Event<T>},
- Fungible: pallet_fungible::{Pallet, Storage},
- Refungible: pallet_refungible::{Pallet, Storage},
- Nonfungible: pallet_nonfungible::{Pallet, Storage},
- Structure: pallet_structure::{Pallet, Storage, Event<T>},
- TransactionPayment: pallet_transaction_payment::{Pallet, Storage, Event<T>},
- Ethereum: pallet_ethereum::{Pallet, Config, Call, Storage, Event, Origin},
- EVM: pallet_evm::{Pallet, Config, Call, Storage, Event<T>},
+ Unique: pallet_unique,
+ Balances: pallet_balances,
+ Common: pallet_common,
+ Fungible: pallet_fungible,
+ Refungible: pallet_refungible,
+ Nonfungible: pallet_nonfungible,
+ Structure: pallet_structure,
+ TransactionPayment: pallet_transaction_payment,
+ Ethereum: pallet_ethereum,
+ EVM: pallet_evm,
}
);
parameter_types! {
- pub const BlockHashCount: u64 = 250;
+ pub const BlockHashCount: u32 = 250;
pub const SS58Prefix: u8 = 42;
}
impl system::Config for Test {
type RuntimeEvent = RuntimeEvent;
type BaseCallFilter = Everything;
+ type Block = Block;
type BlockWeights = ();
type BlockLength = ();
type DbWeight = ();
type RuntimeOrigin = RuntimeOrigin;
type RuntimeCall = RuntimeCall;
- type Index = u64;
- type BlockNumber = u64;
+ type Nonce = u64;
type Hash = H256;
type Hashing = BlakeTwo256;
type AccountId = u64;
type Lookup = IdentityLookup<Self::AccountId>;
- type Header = Header;
type BlockHashCount = BlockHashCount;
type Version = ();
type PalletInfo = PalletInfo;
@@ -127,7 +118,7 @@
type MaxFreezes = MaxLocks;
type FreezeIdentifier = [u8; 8];
type MaxHolds = MaxLocks;
- type HoldIdentifier = [u8; 8];
+ type RuntimeHoldReason = RuntimeHoldReason;
}
parameter_types! {
@@ -240,9 +231,9 @@
type OnMethodCall = ();
type OnCreate = ();
type OnChargeTransaction = ();
+ type OnCheckEvmTransaction = ();
type FindAuthor = ();
type BlockHashMapping = SubstrateBlockHashMapping<Self>;
- type TransactionValidityHack = ();
type Timestamp = Timestamp;
type GasLimitPovSizeRatio = ConstU64<0>;
}
@@ -305,8 +296,8 @@
// Build genesis storage according to the mock runtime.
pub fn new_test_ext() -> sp_io::TestExternalities {
- system::GenesisConfig::default()
- .build_storage::<Test>()
+ <system::GenesisConfig<Test>>::default()
+ .build_storage()
.unwrap()
.into()
}
runtime/tests/src/tests.rsdiffbeforeafterboth--- a/runtime/tests/src/tests.rs
+++ b/runtime/tests/src/tests.rs
@@ -15,19 +15,22 @@
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
// Tests to be written here
-use crate::{Test, TestCrossAccountId, CollectionCreationPrice, RuntimeOrigin, Unique, new_test_ext};
+use frame_support::{assert_err, assert_noop, assert_ok};
+use pallet_common::Error as CommonError;
+use pallet_evm::account::CrossAccountId;
+use pallet_unique::Error as UniqueError;
+use sp_std::convert::TryInto;
use up_data_structs::{
- COLLECTION_NUMBER_LIMIT, CollectionId, CreateItemData, CreateFungibleData, CreateNftData,
- CreateReFungibleData, MAX_DECIMAL_POINTS, COLLECTION_ADMINS_LIMIT, TokenId,
- MAX_TOKEN_OWNERSHIP, CreateCollectionData, CollectionMode, AccessMode, CollectionPermissions,
- PropertyKeyPermission, PropertyPermission, Property, CollectionPropertiesVec,
- CollectionPropertiesPermissionsVec,
+ AccessMode, CollectionId, CollectionMode, CollectionPermissions,
+ CollectionPropertiesPermissionsVec, CollectionPropertiesVec, CreateCollectionData,
+ CreateFungibleData, CreateItemData, CreateNftData, CreateReFungibleData, Property,
+ PropertyKeyPermission, PropertyPermission, TokenId, COLLECTION_ADMINS_LIMIT,
+ COLLECTION_NUMBER_LIMIT, MAX_DECIMAL_POINTS, MAX_TOKEN_OWNERSHIP,
+};
+
+use crate::{
+ new_test_ext, CollectionCreationPrice, RuntimeOrigin, Test, TestCrossAccountId, Unique,
};
-use frame_support::{assert_noop, assert_ok, assert_err};
-use sp_std::convert::TryInto;
-use pallet_evm::account::CrossAccountId;
-use pallet_common::Error as CommonError;
-use pallet_unique::Error as UniqueError;
fn add_balance(user: u64, value: u64) {
const DONOR_USER: u64 = 999;
@@ -2617,9 +2620,10 @@
}
mod check_token_permissions {
- use super::*;
use pallet_common::LazyValue;
+ use super::*;
+
fn test<FTE: FnOnce() -> bool>(
i: usize,
test_case: &pallet_common::tests::TestCase,
runtime/tests/src/weightsdiffbeforeafterboth--- /dev/null
+++ b/runtime/tests/src/weights
@@ -0,0 +1 @@
+../../common/weights
\ No newline at end of file
runtime/unique/Cargo.tomldiffbeforeafterboth--- a/runtime/unique/Cargo.toml
+++ b/runtime/unique/Cargo.toml
@@ -29,9 +29,11 @@
'pallet-balances/runtime-benchmarks',
'pallet-collator-selection/runtime-benchmarks',
'pallet-collective/runtime-benchmarks',
+ 'pallet-collective/runtime-benchmarks',
'pallet-common/runtime-benchmarks',
'pallet-configuration/runtime-benchmarks',
'pallet-democracy/runtime-benchmarks',
+ 'pallet-democracy/runtime-benchmarks',
'pallet-ethereum/runtime-benchmarks',
'pallet-evm-coder-substrate/runtime-benchmarks',
'pallet-evm-migration/runtime-benchmarks',
@@ -41,26 +43,23 @@
'pallet-inflation/runtime-benchmarks',
'pallet-maintenance/runtime-benchmarks',
'pallet-membership/runtime-benchmarks',
+ 'pallet-membership/runtime-benchmarks',
'pallet-nonfungible/runtime-benchmarks',
- 'pallet-democracy/runtime-benchmarks',
- 'pallet-collective/runtime-benchmarks',
'pallet-ranked-collective/runtime-benchmarks',
- 'pallet-membership/runtime-benchmarks',
'pallet-referenda/runtime-benchmarks',
+ 'pallet-refungible/runtime-benchmarks',
'pallet-scheduler/runtime-benchmarks',
- 'pallet-refungible/runtime-benchmarks',
'pallet-scheduler/runtime-benchmarks',
'pallet-structure/runtime-benchmarks',
'pallet-timestamp/runtime-benchmarks',
+ 'pallet-unique/runtime-benchmarks',
'pallet-utility/runtime-benchmarks',
- 'pallet-unique/runtime-benchmarks',
'pallet-xcm/runtime-benchmarks',
'sp-runtime/runtime-benchmarks',
+ 'staging-xcm-builder/runtime-benchmarks',
'up-data-structs/runtime-benchmarks',
- 'xcm-builder/runtime-benchmarks',
]
std = [
- 'codec/std',
'cumulus-pallet-aura-ext/std',
'cumulus-pallet-parachain-system/std',
'cumulus-pallet-xcm/std',
@@ -78,6 +77,7 @@
'pallet-democracy/std',
'pallet-membership/std',
'pallet-scheduler/std',
+ 'parity-scale-codec/std',
# 'pallet-contracts/std',
# 'pallet-contracts-primitives/std',
# 'pallet-contracts-rpc-runtime-api/std',
@@ -97,8 +97,10 @@
'pallet-base-fee/std',
'pallet-charge-transaction/std',
'pallet-collator-selection/std',
+ 'pallet-collective/std',
'pallet-common/std',
'pallet-configuration/std',
+ 'pallet-democracy/std',
'pallet-ethereum/std',
'pallet-evm-coder-substrate/std',
'pallet-evm-contract-helpers/std',
@@ -106,24 +108,22 @@
'pallet-evm-transaction-payment/std',
'pallet-evm/std',
'pallet-fungible/std',
+ 'pallet-gov-origins/std',
'pallet-inflation/std',
+ 'pallet-membership/std',
'pallet-nonfungible/std',
- 'pallet-democracy/std',
- 'pallet-collective/std',
'pallet-ranked-collective/std',
- 'pallet-membership/std',
'pallet-referenda/std',
- 'pallet-gov-origins/std',
- 'pallet-scheduler/std',
'pallet-refungible/std',
+ 'pallet-scheduler/std',
'pallet-structure/std',
'pallet-sudo/std',
'pallet-timestamp/std',
- 'pallet-utility/std',
'pallet-transaction-payment-rpc-runtime-api/std',
'pallet-transaction-payment/std',
'pallet-treasury/std',
'pallet-unique/std',
+ 'pallet-utility/std',
'parachain-info/std',
'sp-api/std',
'sp-block-builder/std',
@@ -136,14 +136,14 @@
'sp-std/std',
'sp-transaction-pool/std',
'sp-version/std',
+ 'staging-xcm-builder/std',
+ 'staging-xcm-executor/std',
+ 'staging-xcm/std',
'up-common/std',
'up-data-structs/std',
'up-pov-estimate-rpc/std',
'up-rpc/std',
'up-sponsorship/std',
- 'xcm-builder/std',
- 'xcm-executor/std',
- 'xcm/std',
"orml-tokens/std",
"orml-traits/std",
@@ -180,9 +180,11 @@
'pallet-balances/try-runtime',
'pallet-charge-transaction/try-runtime',
'pallet-collective/try-runtime',
+ 'pallet-collective/try-runtime',
'pallet-common/try-runtime',
'pallet-configuration/try-runtime',
'pallet-democracy/try-runtime',
+ 'pallet-democracy/try-runtime',
'pallet-ethereum/try-runtime',
'pallet-evm-coder-substrate/try-runtime',
'pallet-evm-contract-helpers/try-runtime',
@@ -191,26 +193,24 @@
'pallet-evm/try-runtime',
'pallet-foreign-assets/try-runtime',
'pallet-fungible/try-runtime',
+ 'pallet-gov-origins/try-runtime',
'pallet-inflation/try-runtime',
'pallet-maintenance/try-runtime',
'pallet-membership/try-runtime',
+ 'pallet-membership/try-runtime',
'pallet-nonfungible/try-runtime',
- 'pallet-democracy/try-runtime',
- 'pallet-collective/try-runtime',
'pallet-ranked-collective/try-runtime',
- 'pallet-membership/try-runtime',
'pallet-referenda/try-runtime',
- 'pallet-gov-origins/try-runtime',
- 'pallet-scheduler/try-runtime',
'pallet-refungible/try-runtime',
'pallet-scheduler/try-runtime',
+ 'pallet-scheduler/try-runtime',
'pallet-structure/try-runtime',
'pallet-sudo/try-runtime',
'pallet-timestamp/try-runtime',
- 'pallet-utility/try-runtime',
'pallet-transaction-payment/try-runtime',
'pallet-treasury/try-runtime',
'pallet-unique/try-runtime',
+ 'pallet-utility/try-runtime',
'pallet-xcm/try-runtime',
'parachain-info/try-runtime',
]
@@ -219,20 +219,16 @@
app-promotion = []
collator-selection = []
foreign-assets = []
+gov-test-timings = []
governance = []
preimage = []
refungible = []
-unique-scheduler = []
-gov-test-timings = []
session-test-timings = []
################################################################################
# local dependencies
[dependencies]
-# Note: `package = "parity-scale-codec"` must be supplied since the `Encode` macro searches for it.
-codec = { workspace = true, package = "parity-scale-codec" }
-
cumulus-pallet-aura-ext = { workspace = true }
cumulus-pallet-dmp-queue = { workspace = true }
cumulus-pallet-parachain-system = { workspace = true }
@@ -258,13 +254,14 @@
pallet-state-trie-migration = { workspace = true }
pallet-sudo = { workspace = true }
pallet-timestamp = { workspace = true }
-pallet-utility = { workspace = true }
pallet-transaction-payment = { workspace = true }
pallet-transaction-payment-rpc-runtime-api = { workspace = true }
pallet-treasury = { workspace = true }
+pallet-utility = { workspace = true }
pallet-xcm = { workspace = true }
parachain-info = { workspace = true }
-polkadot-parachain = { workspace = true }
+parity-scale-codec = { workspace = true }
+polkadot-parachain-primitives = { workspace = true }
smallvec = { workspace = true }
sp-api = { workspace = true }
sp-arithmetic = { workspace = true }
@@ -279,9 +276,9 @@
sp-std = { workspace = true }
sp-transaction-pool = { workspace = true }
sp-version = { workspace = true }
-xcm = { workspace = true }
-xcm-builder = { workspace = true }
-xcm-executor = { workspace = true }
+staging-xcm = { workspace = true }
+staging-xcm-builder = { workspace = true }
+staging-xcm-executor = { workspace = true }
app-promotion-rpc = { workspace = true }
derivative = { workspace = true }
@@ -289,20 +286,20 @@
pallet-app-promotion = { workspace = true }
pallet-balances-adapter = { workspace = true }
pallet-collator-selection = { workspace = true }
+pallet-collective = { workspace = true }
pallet-common = { workspace = true }
pallet-configuration = { workspace = true }
+pallet-democracy = { workspace = true }
pallet-fungible = { workspace = true }
+pallet-gov-origins = { workspace = true }
pallet-identity = { workspace = true }
pallet-inflation = { workspace = true }
+pallet-membership = { workspace = true }
pallet-nonfungible = { workspace = true }
-pallet-democracy = { workspace = true }
-pallet-collective = { workspace = true }
pallet-ranked-collective = { workspace = true }
-pallet-membership = { workspace = true }
pallet-referenda = { workspace = true }
-pallet-gov-origins = { workspace = true }
+pallet-refungible = { workspace = true }
pallet-scheduler = { workspace = true }
-pallet-refungible = { workspace = true }
pallet-structure = { workspace = true }
pallet-unique = { workspace = true }
scale-info = { workspace = true }
runtime/unique/src/lib.rsdiffbeforeafterboth--- a/runtime/unique/src/lib.rs
+++ b/runtime/unique/src/lib.rs
@@ -27,15 +27,12 @@
extern crate alloc;
+use ::staging_xcm::latest::NetworkId;
use frame_support::parameter_types;
-
-use sp_version::RuntimeVersion;
use sp_runtime::create_runtime_str;
-
+use sp_version::RuntimeVersion;
use up_common::types::*;
-use ::xcm::latest::NetworkId;
-
mod runtime_common;
pub mod governance_timings;
@@ -52,7 +49,7 @@
spec_name: create_runtime_str!("unique"),
impl_name: create_runtime_str!("unique"),
authoring_version: 1,
- spec_version: 943061,
+ spec_version: 10010062,
impl_version: 0,
apis: RUNTIME_API_VERSIONS,
transaction_version: 3,
runtime/unique/src/xcm_barrier.rsdiffbeforeafterboth--- a/runtime/unique/src/xcm_barrier.rs
+++ b/runtime/unique/src/xcm_barrier.rs
@@ -15,10 +15,10 @@
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
use frame_support::{match_types, traits::Everything};
-use xcm::latest::{Junctions::*, MultiLocation};
-use xcm_builder::{
- AllowKnownQueryResponses, AllowSubscriptionsFrom, TakeWeightCredit,
- AllowTopLevelPaidExecutionFrom, AllowExplicitUnpaidExecutionFrom,
+use staging_xcm::latest::{Junctions::*, MultiLocation};
+use staging_xcm_builder::{
+ AllowExplicitUnpaidExecutionFrom, AllowKnownQueryResponses, AllowSubscriptionsFrom,
+ AllowTopLevelPaidExecutionFrom, TakeWeightCredit,
};
use crate::PolkadotXcm;
test-pallets/utils/Cargo.tomldiffbeforeafterboth--- a/test-pallets/utils/Cargo.toml
+++ b/test-pallets/utils/Cargo.toml
@@ -6,24 +6,21 @@
version = "0.1.0"
[dependencies]
-# Note: `package = "parity-scale-codec"` must be supplied since the `Encode` macro searches for it.
-codec = { workspace = true, package = "parity-scale-codec" }
-
frame-support = { workspace = true }
frame-system = { workspace = true }
+parity-scale-codec = { workspace = true }
scale-info = { workspace = true }
-# pallet-unique-scheduler = { path = '../../pallets/scheduler', default-features = false }
-pallet-unique-scheduler-v2 = { workspace = true }
+sp-runtime = { workspace = true }
sp-std = { workspace = true }
[features]
default = ["std"]
std = [
- "codec/std",
"frame-support/std",
"frame-system/std",
- "pallet-unique-scheduler-v2/std",
+ "parity-scale-codec/std",
"scale-info/std",
+ "sp-runtime/std",
"sp-std/std",
]
-try-runtime = ["frame-support/try-runtime", "pallet-unique-scheduler-v2/try-runtime"]
+try-runtime = ["frame-support/try-runtime"]
test-pallets/utils/src/lib.rsdiffbeforeafterboth--- a/test-pallets/utils/src/lib.rs
+++ b/test-pallets/utils/src/lib.rs
@@ -16,20 +16,20 @@
#![cfg_attr(not(feature = "std"), no_std)]
-pub use pallet::*;
use frame_support::pallet_prelude::*;
use frame_system::pallet_prelude::*;
+pub use pallet::*;
#[frame_support::pallet(dev_mode)]
pub mod pallet {
use frame_support::{
+ dispatch::{GetDispatchInfo, PostDispatchInfo},
pallet_prelude::*,
- dispatch::{Dispatchable, GetDispatchInfo, PostDispatchInfo},
- traits::{UnfilteredDispatchable, IsSubType, OriginTrait},
+ traits::{IsSubType, OriginTrait, UnfilteredDispatchable},
};
use frame_system::pallet_prelude::*;
+ use sp_runtime::traits::Dispatchable;
use sp_std::vec::Vec;
- // use pallet_unique_scheduler_v2::{TaskName, Pallet as SchedulerPallet};
#[pallet::config]
pub trait Config: frame_system::Config /*+ pallet_unique_scheduler_v2::Config*/ {
tests/src/util/frankenstein.tsdiffbeforeafterboth--- a/tests/src/util/frankenstein.ts
+++ /dev/null
@@ -1,382 +0,0 @@
-// Copyright 2019-2023 Unique Network (Gibraltar) Ltd.
-// This file is part of Unique Network.
-
-// Unique Network is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// Unique Network is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-
-import {ApiPromise} from '@polkadot/api';
-import {blake2AsHex, cryptoWaitReady} from '@polkadot/util-crypto';
-import zombie from '@zombienet/orchestrator/dist';
-import {readNetworkConfig} from '@zombienet/utils/dist';
-import {resolve} from 'path';
-import {usingPlaygrounds} from '.';
-import {migrations} from './frankensteinMigrate';
-import fs from 'fs';
-
-const ZOMBIENET_CREDENTIALS = process.env.ZOMBIENET_CREDENTIALS || '../.env';
-const NETWORK_CONFIG_FILE = process.argv[2] ?? '../launch-zombienet.toml';
-const PARA_DIR = process.env.PARA_DIR || '../';
-const RELAY_DIR = process.env.RELAY_DIR || '../../polkadot/';
-const REPLICA_FROM = process.env.REPLICA_FROM || 'wss://ws-opal.unique.network:443';
-const NEW_RELAY_BIN = process.env.NEW_RELAY_BIN;
-const NEW_RELAY_WASM = process.env.NEW_RELAY_WASM;
-const NEW_PARA_BIN = process.env.NEW_PARA_BIN;
-const NEW_PARA_WASM = process.env.NEW_PARA_WASM;
-const DESTINATION_SPEC_VERSION = process.env.DESTINATION_SPEC_VERSION!;
-const PARACHAIN_BLOCK_TIME = 12_000;
-const SUPERUSER_KEY = '//Alice';
-
-let network: zombie.Network | undefined;
-
-// Stop the network if it is running
-const stop = async () => {
- await network?.stop();
-};
-
-// Promise of a timeout
-function delay(ms: number) {
- return new Promise(resolve => setTimeout(resolve, ms));
-}
-
-// Countdown with time left on display
-async function waitWithTimer(time: number) {
- const secondsTotal = Math.ceil(time / 1000);
- for(let i = secondsTotal; i > 0; i--) {
- // could also introduce hours, but wth
- const seconds = i % 60;
- const text = `Time left: ${Math.floor(i / 60)}:${seconds < 10 ? '0' + seconds : seconds}`;
- if(process.stdout.isTTY)
- process.stdout.write(text);
- else if(seconds % 10 == 0)
- console.log(text);
- await delay(1000);
- if(process.stdout.isTTY) {
- process.stdout.clearLine(0);
- process.stdout.cursorTo(0);
- }
- }
-}
-
-// Get the runtime's current version
-function getSpecVersion(api: ApiPromise): number {
- return (api.consts.system.version as any).specVersion.toNumber();
-}
-
-// Get the required information on the relay chain
-function getRelayInfo(api: ApiPromise): {specVersion: number, epochBlockLength: number, blockTime: number, epochTime: number} {
- const info = {
- specVersion: getSpecVersion(api),
- epochBlockLength: (api.consts.babe.epochDuration as any).toNumber(),
- blockTime: (api.consts.babe.expectedBlockTime as any).toNumber(),
- epochTime: 0,
- };
- info.epochTime = info.epochBlockLength * info.blockTime;
- return info;
-}
-
-// Enable or disable maintenance mode if present on the chain
-async function toggleMaintenanceMode(value: boolean, wsUri: string, retries = 5) {
- try {
- await usingPlaygrounds(async (helper, privateKey) => {
- const superuser = await privateKey(SUPERUSER_KEY);
- try {
- const toggle = value ? 'enable' : 'disable';
- await helper.getSudo().executeExtrinsic(superuser, `api.tx.maintenance.${toggle}`, []);
- console.log(`Maintenance mode ${value ? 'engaged' : 'disengaged'}.`);
- } catch (e) {
- console.error('Couldn\'t set maintenance mode. The maintenance pallet probably does not exist. Log:', e);
- }
- }, wsUri);
- } catch (error) {
- console.error(error);
- console.log('Trying for retry toggle maintanence mode');
- await delay(12_000);
- await toggleMaintenanceMode(value, wsUri, retries - 1);
- }
-}
-
-async function skipIfAlreadyUpgraded() {
- await usingPlaygrounds(async (helper) => {
- const specVersion = await getSpecVersion(helper.getApi());
- if(`v${specVersion}` === DESTINATION_SPEC_VERSION) {
- console.log('\n🛸 Current version equal DESTINATION_SPEC_VERSION 🛸');
- console.log("\n🛸 PARACHAINS' RUNTIME UPGRADE TESTING COMPLETE 🛸");
- }
- }, REPLICA_FROM);
-}
-
-const raiseZombienet = async (): Promise<void> => {
- await skipIfAlreadyUpgraded();
- const isUpgradeTesting = !!NEW_RELAY_BIN || !!NEW_RELAY_WASM || !!NEW_PARA_BIN || !!NEW_PARA_WASM;
- /*
- // If there is nothing to upgrade, what is the point
- if (!isUpgradeTesting) {
- console.warn('\nNeither the relay nor the parachain were selected for an upgrade! ' +
- 'Please pass environment vars `NEW_RELAY_BIN`, `NEW_RELAY_WASM`, `NEW_PARA_BIN`, `NEW_PARA_WASM`.');
- process.exit(1);
- }
- */
-
- // an unsavory practice, but very convenient, mwahahah
- process.env.PARA_DIR = PARA_DIR;
- process.env.RELAY_DIR = RELAY_DIR;
- process.env.REPLICA_FROM = REPLICA_FROM;
-
- const configPath = resolve(NETWORK_CONFIG_FILE);
- const networkConfig = readNetworkConfig(configPath);
- // console.log(networkConfig);
- if(networkConfig.settings.provider !== 'native') {
- throw new Error(`Oh no! Expected native network, got ${networkConfig.settings.provider}.`);
- }
-
- await cryptoWaitReady();
-
- // Launch Zombienet!
- network = await zombie.start(ZOMBIENET_CREDENTIALS, networkConfig, {silent: false});
-
- // Get the relay chain info like the epoch length and spec version
- // Then restart each parachain's binaries
- // // Stop and restart each node
- // // Send specified keys to parachain nodes in case the parachain requires it
- // If it is not needed to upgrade runtimes themselves, the job is done!
-
- // Record some required information regarding the relay chain
- await network.relay[0].connectApi();
- let relayInfo = getRelayInfo((network.relay[0] as any).apiInstance!);
- await network.relay[0].apiInstance!.disconnect();
- if(isUpgradeTesting) {
- console.log('Relay stats:', relayInfo);
- }
-
- // non-exported functionality of NativeClient
- const networkClient = (network.client as any);
-
- if(NEW_RELAY_BIN) {
- console.log('\n🧶 Restarting relay nodes');
-
- for(const [index, node] of network.relay.entries()) {
- await node.apiInstance?.disconnect();
-
- console.log(`\n🚦 Starting timeout for the epoch change (node ${index + 1}/${network.relay.length})...`);
- await waitWithTimer(relayInfo.epochTime);
-
- // Replace the node-starting command with the new binary
- const cmd = networkClient.processMap[node.name].cmd[0].split(' ')[0];
- networkClient.processMap[node.name].cmd = networkClient.processMap[node.name].cmd.map((arg: string) => arg.replace(cmd, NEW_RELAY_BIN));
-
- await node.restart();
- }
-
- console.log('\n🌒 All relay nodes restarted with the new binaries.');
- }
-
- if(NEW_PARA_BIN) {
- for(const paraId in network.paras) {
- const para = network.paras[paraId];
- console.log(`\n🧶 Restarting collator nodes of parachain ${paraId}`);
-
- for(const [_index, node] of para.nodes.entries()) {
- await node.apiInstance?.disconnect();
-
- // Replace the node-starting command with the new binary
- const cmd = networkClient.processMap[node.name].cmd[0].split(' ')[0];
- networkClient.processMap[node.name].cmd = networkClient.processMap[node.name].cmd.map((arg: string) => arg.replace(cmd, NEW_PARA_BIN));
-
- await node.restart();
- // applyaurakey?
- // Zombienet handles it on first-time node creation
- }
- }
-
- console.log('\n🌗 All parachain collators restarted with the new binaries.');
- }
-
- // Re-establish connection to the relay node and get the runtime upgrade validation delay for parachains
- // For the relay, connect and set the new runtime code
- // For each parachain, connect, authorize and upgrade its runtime
- // Ping the the chains for the runtime upgrade after the minimal time and then every few blocks
- // // For each parachain, re-connect and verify that the runtime upgrade is successful
-
- let relayUpgradeCompleted = false, paraUpgradeCompleted = false;
-
- if(NEW_RELAY_WASM) {
- const relayOldVersion = relayInfo.specVersion;
- console.log('\n🚦 Starting timeout for the next epoch before upgrading the relay runtime code...');
- await waitWithTimer(relayInfo.epochTime);
-
- console.log('--- Upgrading the relay chain runtime \t---');
-
- // Read the new WASM code and set it as the relay's new code
- const code = fs.readFileSync(NEW_RELAY_WASM).toString('hex');
- await usingPlaygrounds(async (helper, privateKey) => {
- const superuser = await privateKey(SUPERUSER_KEY);
-
- const result = await helper.executeExtrinsic(
- superuser,
- 'api.tx.sudo.sudoUncheckedWeight',
- [helper.constructApiCall('api.tx.system.setCode', [`0x${code}`]), {}],
- );
-
- if(result.status == 'Fail') {
- console.error('Failed to upgrade the runtime:', result);
- }
-
- // Get the updated information from the relay's new runtime
- relayInfo = getRelayInfo(helper.getApi());
- }, network.relay[0].wsUri);
-
- if(relayOldVersion != relayInfo.specVersion) {
- // eslint-disable-next-line no-useless-escape
- console.log(`\n\🛰️ The relay has successfully upgraded from version ${relayOldVersion} to ${relayInfo.specVersion}!`);
- relayUpgradeCompleted = true;
- } else {
- console.error(`\nThe relay did not upgrade from version ${relayOldVersion}!`);
- }
- } else {
- // If the relay did not need to be upgraded, it's already technically completed
- relayUpgradeCompleted = true;
- }
-
- if(NEW_PARA_WASM) {
- let codeValidationDelayBlocks = 0;
- const upgradingParas: {[id: string]: {version: number, upgraded: boolean}} = {};
- // Calculate the code validation delay of the relay chain,
- // so that we know how much to wait before the parachains can be upgraded after the extrinsic
- await usingPlaygrounds(async (helper) => {
- const {validationUpgradeDelay, minimumValidationUpgradeDelay} =
- (await helper.callRpc('api.query.configuration.activeConfig', [])).toJSON() as any;
-
- codeValidationDelayBlocks = Math.max(validationUpgradeDelay ?? 0, minimumValidationUpgradeDelay ?? 0);
- }, network.relay[0].wsUri);
-
- // Wait for the next epoch so that the parachains will start cooperating with the relay
- if(relayUpgradeCompleted && NEW_RELAY_WASM) {
- console.log('\n🚥 Starting timeout for the next epoch before upgrading the parachains code...');
- await waitWithTimer(relayInfo.epochTime);
- }
-
- const migration = migrations[DESTINATION_SPEC_VERSION];
- console.log('⭐️⭐️⭐️ DESTINATION_SPEC_VERSION ⭐️⭐️⭐️', DESTINATION_SPEC_VERSION);
- for(const paraId in network.paras) {
- console.log(`\n--- Upgrading the runtime of parachain ${paraId} \t---`);
- const para = network.paras[paraId];
-
- // Enable maintenance mode if present
- await toggleMaintenanceMode(true, para.nodes[0].wsUri);
- if(migration) {
- console.log('⭐️⭐️⭐️ Running pre-upgrade scripts... ⭐️⭐️⭐️');
- await migration.before();
- }
-
- // Read the WASM code and authorize the upgrade with its hash and set it as the new runtime
- const code = fs.readFileSync(NEW_PARA_WASM);
- const codeHash = blake2AsHex(code);
- await usingPlaygrounds(async (helper, privateKey) => {
- const superuser = await privateKey(SUPERUSER_KEY);
-
- upgradingParas[paraId] = {version: getSpecVersion(helper.getApi()), upgraded: false};
-
- console.log('--- Authorizing the parachain runtime upgrade \t---');
- let result = await helper.executeExtrinsic(
- superuser,
- 'api.tx.sudo.sudoUncheckedWeight',
- [helper.constructApiCall('api.tx.parachainSystem.authorizeUpgrade', [codeHash, false]), {}],
- );
-
- if(result.status == 'Fail') {
- console.error('Failed to authorize the upgrade:', result);
- return;
- }
-
- console.log('--- Enacting the parachain runtime upgrade \t---');
- result = await helper.executeExtrinsic(
- superuser,
- 'api.tx.sudo.sudoUncheckedWeight',
- [helper.constructApiCall('api.tx.parachainSystem.enactAuthorizedUpgrade', [`0x${code.toString('hex')}`]), {}],
- );
-
- if(result.status == 'Fail') {
- console.error('Failed to upgrade the runtime:', result);
- }
- }, para.nodes[0].wsUri);
- }
-
- // Check the upgrades of the parachains, first after the minimum code validation delay, and then after some block time increments
- let firstPass = true;
- for(let attempt = 0; attempt < 3 && !paraUpgradeCompleted; attempt++) {
- if(firstPass) {
- console.log('\nCode validation delay:', codeValidationDelayBlocks, 'blocks');
- console.log('🚥 Waiting for the minimum code validation delay before the parachain can upgrade...');
- await waitWithTimer(relayInfo.blockTime * codeValidationDelayBlocks);
- firstPass = false;
- } else {
- console.log('\n🚥 Waiting for a few blocks more to verify that the parachain upgrades are successful...');
- await waitWithTimer(PARACHAIN_BLOCK_TIME * 3);
- }
-
- // Ping the parachains' nodes for new runtime versions
- let upgradeFailed = false;
- for(const paraId in network.paras) {
- if(upgradingParas[paraId].upgraded) continue;
-
- const para = network.paras[paraId];
- // eslint-disable-next-line require-await
- await usingPlaygrounds(async (helper) => {
- const specVersion = getSpecVersion(helper.getApi());
-
- if(specVersion != upgradingParas[paraId].version) {
- // eslint-disable-next-line no-useless-escape
- console.log(`\n\🛰️ Parachain ${paraId} has successfully upgraded from version ${upgradingParas[paraId].version} to ${specVersion}!`);
- upgradingParas[paraId].upgraded = true;
- } else {
- console.error(`\nParachain ${paraId} failed to upgrade from version ${upgradingParas[paraId].version}!`);
- upgradeFailed = true;
- }
- }, para.nodes[0].wsUri);
-
- paraUpgradeCompleted = !upgradeFailed;
- }
- }
-
- // Disable maintenance mode if present
- for(const paraId in network.paras) {
- // TODO only if our parachain
- if(migration) {
- console.log('⭐️⭐️⭐️ Running post-upgrade scripts... ⭐️⭐️⭐️');
- await migration.after();
- }
- await toggleMaintenanceMode(false, network.paras[paraId].nodes[0].wsUri);
- }
- } else {
- // If the relay did not need to be upgraded, it's already technically completed
- paraUpgradeCompleted = true;
- }
-
- // await network.stop();
-
- if(isUpgradeTesting) {
- if(paraUpgradeCompleted && relayUpgradeCompleted) {
- console.log("\n🛸 PARACHAINS' RUNTIME UPGRADE TESTING COMPLETE 🛸");
- } else {
- console.error("\n🚧 PARACHAINS' RUNTIME UPGRADE TESTING FAILED 🚧");
- }
- } else {
- console.log('🚀 ZOMBIENET RAISED 🚀');
- }
-};
-
-raiseZombienet()/*.then(async () => await stop())*/.catch(async (e) => {
- console.error(e);
- await stop();
- process.exit(1);
-});
tests/src/util/playgrounds/unique.xcm.tsdiffbeforeafterboth--- a/tests/src/util/playgrounds/unique.xcm.ts
+++ b/tests/src/util/playgrounds/unique.xcm.ts
@@ -244,6 +244,10 @@
await this.helper.executeExtrinsic(signer, 'api.tx.assets.create', [assetId, admin, minimalBalance], true);
}
+ async forceCreate(signer: TSigner, assetId: number | bigint, admin: string, minimalBalance: bigint, isSufficient = true) {
+ await this.helper.executeExtrinsic(signer, 'api.tx.assets.forceCreate', [assetId, admin, isSufficient, minimalBalance], true);
+ }
+
async setMetadata(signer: TSigner, assetId: number | bigint, name: string, symbol: string, decimals: number) {
await this.helper.executeExtrinsic(signer, 'api.tx.assets.setMetadata', [assetId, name, symbol, decimals], true);
}
tests/src/xcm/lowLevelXcmQuartz.test.tsdiffbeforeafterboth--- a/tests/src/xcm/lowLevelXcmQuartz.test.ts
+++ b/tests/src/xcm/lowLevelXcmQuartz.test.ts
@@ -243,7 +243,7 @@
await usingShidenPlaygrounds(shidenUrl, async (helper) => {
if(!(await helper.callRpc('api.query.assets.asset', [QTZ_ASSET_ID_ON_SHIDEN])).toJSON()) {
console.log('1. Create foreign asset and metadata');
- await helper.assets.create(
+ await helper.getSudo().assets.forceCreate(
alice,
QTZ_ASSET_ID_ON_SHIDEN,
alice.address,
tests/src/xcm/lowLevelXcmUnique.test.tsdiffbeforeafterboth--- a/tests/src/xcm/lowLevelXcmUnique.test.ts
+++ b/tests/src/xcm/lowLevelXcmUnique.test.ts
@@ -309,7 +309,7 @@
await usingAstarPlaygrounds(astarUrl, async (helper) => {
if(!(await helper.callRpc('api.query.assets.asset', [UNQ_ASSET_ID_ON_ASTAR])).toJSON()) {
console.log('1. Create foreign asset and metadata');
- await helper.assets.create(
+ await helper.getSudo().assets.forceCreate(
alice,
UNQ_ASSET_ID_ON_ASTAR,
alice.address,
tests/src/xcm/xcmQuartz.test.tsdiffbeforeafterboth--- a/tests/src/xcm/xcmQuartz.test.ts
+++ b/tests/src/xcm/xcmQuartz.test.ts
@@ -1290,11 +1290,11 @@
const shidenInitialBalance = 1n * (10n ** SHIDEN_DECIMALS); // 1 SHD, existential deposit required to actually create the account on Shiden
const unitsPerSecond = 500_451_000_000_000_000_000n; // The value is taken from the live Shiden
const qtzToShidenTransferred = 10n * (10n ** QTZ_DECIMALS); // 10 QTZ
- const qtzToShidenArrived = 9_999_999_999_088_000_000n; // 9.999 ... QTZ, Shiden takes a commision in foreign tokens
+ const qtzToShidenArrived = 7_998_196_000_000_000_000n; // 7.99 ... QTZ, Shiden takes a commision in foreign tokens
// Shiden -> Quartz
const qtzFromShidenTransfered = 5n * (10n ** QTZ_DECIMALS); // 5 QTZ
- const qtzOnShidenLeft = qtzToShidenArrived - qtzFromShidenTransfered; // 4.999_999_999_088_000_000n QTZ
+ const qtzOnShidenLeft = qtzToShidenArrived - qtzFromShidenTransfered; // 2.99 ... QTZ
let balanceAfterQuartzToShidenXCM: bigint;
@@ -1311,7 +1311,7 @@
await usingShidenPlaygrounds(shidenUrl, async (helper) => {
if(!(await helper.callRpc('api.query.assets.asset', [QTZ_ASSET_ID_ON_SHIDEN])).toJSON()) {
console.log('1. Create foreign asset and metadata');
- await helper.assets.create(
+ await helper.getSudo().assets.forceCreate(
alice,
QTZ_ASSET_ID_ON_SHIDEN,
alice.address,
tests/src/xcm/xcmUnique.test.tsdiffbeforeafterboth--- a/tests/src/xcm/xcmUnique.test.ts
+++ b/tests/src/xcm/xcmUnique.test.ts
@@ -1518,11 +1518,11 @@
const astarInitialBalance = 1n * (10n ** ASTAR_DECIMALS); // 1 ASTR, existential deposit required to actually create the account on Astar.
const unitsPerSecond = 9_451_000_000_000_000_000n; // The value is taken from the live Astar
const unqToAstarTransferred = 10n * (10n ** UNQ_DECIMALS); // 10 UNQ
- const unqToAstarArrived = 9_999_999_999_088_000_000n; // 9.999 ... UNQ, Astar takes a commision in foreign tokens
+ const unqToAstarArrived = 9_962_196_000_000_000_000n; // 9.962 ... UNQ, Astar takes a commision in foreign tokens
// Astar -> Unique
const unqFromAstarTransfered = 5n * (10n ** UNQ_DECIMALS); // 5 UNQ
- const unqOnAstarLeft = unqToAstarArrived - unqFromAstarTransfered; // 4.999_999_999_088_000_000n UNQ
+ const unqOnAstarLeft = unqToAstarArrived - unqFromAstarTransfered; // 4.962_219_600_000_000_000n UNQ
let balanceAfterUniqueToAstarXCM: bigint;
@@ -1539,7 +1539,7 @@
await usingAstarPlaygrounds(astarUrl, async (helper) => {
if(!(await helper.callRpc('api.query.assets.asset', [UNQ_ASSET_ID_ON_ASTAR])).toJSON()) {
console.log('1. Create foreign asset and metadata');
- await helper.assets.create(
+ await helper.getSudo().assets.forceCreate(
alice,
UNQ_ASSET_ID_ON_ASTAR,
alice.address,