--- 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", - ] --- 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", - ] --- 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 $? --- a/.rustfmt.toml +++ b/.rustfmt.toml @@ -1,2 +1,3 @@ +group_imports = "stdexternalcrate" hard_tabs = true -reorder_imports = false +imports_granularity = "crate" --- a/Cargo.lock +++ b/Cargo.lock @@ -18,16 +18,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97" dependencies = [ - "gimli", + "gimli 0.27.3", ] [[package]] name = "addr2line" -version = "0.20.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" dependencies = [ - "gimli", + "gimli 0.28.0", ] [[package]] @@ -115,9 +115,9 @@ [[package]] name = "aes-gcm" -version = "0.10.2" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "209b47e8954a928e1d72e86eca7000ebb6655fe1436d33eefc2201cad027e237" +checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" dependencies = [ "aead 0.5.2", "aes 0.8.3", @@ -172,14 +172,20 @@ [[package]] name = "aho-corasick" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6748e8def348ed4d14996fa801f4122cd763fff530258cdc03f64b25f89d3a5a" +checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab" dependencies = [ "memchr", ] [[package]] +name = "allocator-api2" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" + +[[package]] name = "always-assert" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -211,30 +217,29 @@ [[package]] name = "anstream" -version = "0.3.2" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" +checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", - "is-terminal", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.1" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd" +checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" [[package]] name = "anstyle-parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" +checksum = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140" dependencies = [ "utf8parse", ] @@ -250,9 +255,9 @@ [[package]] name = "anstyle-wincon" -version = "1.0.2" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c677ab05e09154296dd37acecd46420c17b9713e8366facafa8fc0885167cf4c" +checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628" dependencies = [ "anstyle", "windows-sys 0.48.0", @@ -260,9 +265,9 @@ [[package]] name = "anyhow" -version = "1.0.74" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c6f84b74db2535ebae81eede2f39b947dcbf01d093ae5f791e5dd414a1bf289" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" [[package]] name = "app-promotion-rpc" @@ -285,18 +290,211 @@ ] [[package]] +name = "aquamarine" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df752953c49ce90719c7bf1fc587bc8227aed04732ea0c0f85e5397d7fdbd1a1" +dependencies = [ + "include_dir", + "itertools 0.10.5", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] name = "arc-swap" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6" [[package]] -name = "array-bytes" -version = "4.2.0" +name = "ark-bls12-381" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c775f0d12169cba7aae4caeb547bb6a50781c7449a8aa53793827c9ec4abf488" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-serialize", + "ark-std", +] + +[[package]] +name = "ark-ec" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f52f63c5c1316a16a4b35eaac8b76a98248961a533f061684cb2a7cb0eafb6c6" +checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" +dependencies = [ + "ark-ff", + "ark-poly", + "ark-serialize", + "ark-std", + "derivative", + "hashbrown 0.13.2", + "itertools 0.10.5", + "num-traits", + "zeroize", +] [[package]] +name = "ark-ed-on-bls12-381-bandersnatch" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9cde0f2aa063a2a5c28d39b47761aa102bda7c13c84fc118a61b87c7b2f785c" +dependencies = [ + "ark-bls12-381", + "ark-ec", + "ark-ff", + "ark-std", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm", + "ark-ff-macros", + "ark-serialize", + "ark-std", + "derivative", + "digest 0.10.7", + "itertools 0.10.5", + "num-bigint", + "num-traits", + "paste", + "rustc_version", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-poly" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" +dependencies = [ + "ark-ff", + "ark-serialize", + "ark-std", + "derivative", + "hashbrown 0.13.2", +] + +[[package]] +name = "ark-scale" +version = "0.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49b08346a3e38e2be792ef53ee168623c9244d968ff00cd70fb9932f6fe36393" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-serialize", + "ark-std", + "parity-scale-codec", +] + +[[package]] +name = "ark-scale" +version = "0.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51bd73bb6ddb72630987d37fa963e99196896c0d0ea81b7c894567e74a2f83af" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-serialize", + "ark-std", + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "ark-secret-scalar" +version = "0.0.2" +source = "git+https://github.com/w3f/ring-vrf?rev=3119f51#3119f51b54b69308abfb0671f6176cb125ae1bf1" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-serialize", + "ark-std", + "ark-transcript", + "digest 0.10.7", + "rand_core 0.6.4", + "zeroize", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-serialize-derive", + "ark-std", + "digest 0.10.7", + "num-bigint", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "ark-transcript" +version = "0.0.2" +source = "git+https://github.com/w3f/ring-vrf?rev=3119f51#3119f51b54b69308abfb0671f6176cb125ae1bf1" +dependencies = [ + "ark-ff", + "ark-serialize", + "ark-std", + "digest 0.10.7", + "rand_core 0.6.4", + "sha3 0.10.8", +] + +[[package]] name = "array-bytes" version = "6.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -310,6 +508,15 @@ [[package]] name = "arrayvec" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9" +dependencies = [ + "nodrop", +] + +[[package]] +name = "arrayvec" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" @@ -333,7 +540,7 @@ "num-traits", "rusticata-macros", "thiserror", - "time 0.3.25", + "time", ] [[package]] @@ -349,7 +556,7 @@ "num-traits", "rusticata-macros", "thiserror", - "time 0.3.25", + "time", ] [[package]] @@ -405,6 +612,32 @@ ] [[package]] +name = "async-executor" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c1da3ae8dabd9c00f453a329dfe1fb28da3c0a72e2478cdcd93171740c20499" +dependencies = [ + "async-lock", + "async-task", + "concurrent-queue", + "fastrand 2.0.1", + "futures-lite", + "slab", +] + +[[package]] +name = "async-fs" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "279cf904654eeebfa37ac9bb1598880884924aab82e290aa65c9e77a0e142e06" +dependencies = [ + "async-lock", + "autocfg", + "blocking", + "futures-lite", +] + +[[package]] name = "async-io" version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -418,7 +651,7 @@ "log", "parking", "polling", - "rustix 0.37.23", + "rustix 0.37.24", "slab", "socket2 0.4.9", "waker-fn", @@ -434,17 +667,52 @@ ] [[package]] +name = "async-net" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0434b1ed18ce1cf5769b8ac540e33f01fa9471058b5e89da9e06f3c882a8c12f" +dependencies = [ + "async-io", + "blocking", + "futures-lite", +] + +[[package]] +name = "async-process" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a9d28b1d97e08915212e2e45310d47854eafa69600756fc735fb788f75199c9" +dependencies = [ + "async-io", + "async-lock", + "autocfg", + "blocking", + "cfg-if", + "event-listener", + "futures-lite", + "rustix 0.37.24", + "signal-hook", + "windows-sys 0.48.0", +] + +[[package]] name = "async-recursion" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e97ce7de6cf12de5d7226c73f5ba9811622f4db3a5b91b55c53e987e5f91cba" +checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] +name = "async-task" +version = "4.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9441c6b2fe128a7c2bf680a44c34d0df31ce09e5b7e401fcca3faa483dbc921" + +[[package]] name = "async-trait" version = "0.1.73" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -452,7 +720,7 @@ dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] @@ -465,14 +733,20 @@ "futures-sink", "futures-util", "memchr", - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", ] [[package]] +name = "atomic-take" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8ab6b55fe97976e46f91ddbed8d147d966475dc29b2032757ba47e02376fbc3" + +[[package]] name = "atomic-waker" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1181e1e0d1fce796a03db1ae795d67167da795f9cf4a39c37589e85ef57f26d3" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "atty" @@ -505,20 +779,42 @@ [[package]] name = "backtrace" -version = "0.3.68" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" dependencies = [ - "addr2line 0.20.0", + "addr2line 0.21.0", "cc", "cfg-if", "libc", "miniz_oxide", - "object 0.31.1", + "object 0.32.1", "rustc-demangle", ] [[package]] +name = "bandersnatch_vrfs" +version = "0.0.1" +source = "git+https://github.com/w3f/ring-vrf?rev=3119f51#3119f51b54b69308abfb0671f6176cb125ae1bf1" +dependencies = [ + "ark-bls12-381", + "ark-ec", + "ark-ed-on-bls12-381-bandersnatch", + "ark-ff", + "ark-scale 0.0.11", + "ark-serialize", + "ark-std", + "dleq_vrf", + "fflonk", + "merlin 3.0.0", + "rand_chacha 0.3.1", + "rand_core 0.6.4", + "ring 0.1.0", + "sha2 0.10.8", + "zeroize", +] + +[[package]] name = "base-x" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -544,9 +840,9 @@ [[package]] name = "base64" -version = "0.21.2" +version = "0.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" +checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2" [[package]] name = "base64ct" @@ -566,7 +862,7 @@ [[package]] name = "binary-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "hash-db 0.16.0", "log", @@ -593,16 +889,31 @@ "lazy_static", "lazycell", "peeking_take_while", - "prettyplease 0.2.12", + "prettyplease 0.2.15", "proc-macro2", "quote", "regex", "rustc-hash", "shlex", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] +name = "bip39" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93f2635620bf0b9d4576eb7bb9a38a55df78bd1205d26fa994b25911a69f212f" +dependencies = [ + "bitcoin_hashes", +] + +[[package]] +name = "bitcoin_hashes" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90064b8dee6815a6470d60bad07bbbaee885c0e12d04177138fa3291a01b7bc4" + +[[package]] name = "bitflags" version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -636,39 +947,48 @@ ] [[package]] +name = "blake2-rfc" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400" +dependencies = [ + "arrayvec 0.4.12", + "constant_time_eq 0.1.5", +] + +[[package]] name = "blake2b_simd" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c2f0dc9a68c6317d884f97cc36cf5a3d20ba14ce404227df55e1af708ab04bc" +checksum = "23285ad32269793932e830392f2fe2f83e26488fd3ec778883a93c8323735780" dependencies = [ "arrayref", "arrayvec 0.7.4", - "constant_time_eq 0.2.6", + "constant_time_eq 0.3.0", ] [[package]] name = "blake2s_simd" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6637f448b9e61dfadbdcbae9a885fadee1f3eaffb1f8d3c1965d3ade8bdfd44f" +checksum = "94230421e395b9920d23df13ea5d77a20e1725331f90fbbf6df6040b33f756ae" dependencies = [ "arrayref", "arrayvec 0.7.4", - "constant_time_eq 0.2.6", + "constant_time_eq 0.3.0", ] [[package]] name = "blake3" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "199c42ab6972d92c9f8995f086273d25c42fc0f7b2a1fcefba465c1352d25ba5" +checksum = "0231f06152bf547e9c2b5194f247cd97aacf6dcd8b15d8e5ec0663f64580da87" dependencies = [ "arrayref", "arrayvec 0.7.4", "cc", "cfg-if", "constant_time_eq 0.3.0", - "digest 0.10.7", ] [[package]] @@ -727,6 +1047,22 @@ checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" [[package]] +name = "blocking" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94c4ef1f913d78636d78d538eec1f18de81e481f44b1be0a81060090530846e1" +dependencies = [ + "async-channel", + "async-lock", + "async-task", + "fastrand 2.0.1", + "futures-io", + "futures-lite", + "piper", + "tracing", +] + +[[package]] name = "bondrewd" version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -774,10 +1110,19 @@ checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" [[package]] +name = "bs58" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5353f36341f7451062466f0b755b96ac3a9547e4d7f6b70d603fc721a7d7896" +dependencies = [ + "tinyvec", +] + +[[package]] name = "bstr" -version = "1.6.0" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6798148dccfbff0fae41c7574d2fa8f1ef3492fba0face179de5d8d447d67b05" +checksum = "4c2f7349907b712260e64b0afe2f84692af14a454be26187d9df565c7f69266a" dependencies = [ "memchr", "serde", @@ -794,9 +1139,9 @@ [[package]] name = "bumpalo" -version = "3.13.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" [[package]] name = "byte-slice-cast" @@ -812,9 +1157,9 @@ [[package]] name = "bytemuck" -version = "1.13.1" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" +checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" [[package]] name = "byteorder" @@ -824,9 +1169,9 @@ [[package]] name = "bytes" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" [[package]] name = "bzip2-sys" @@ -865,7 +1210,7 @@ dependencies = [ "camino", "cargo-platform", - "semver 1.0.18", + "semver 1.0.19", "serde", "serde_json", "thiserror", @@ -873,9 +1218,9 @@ [[package]] name = "cc" -version = "1.0.82" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "305fe645edc1442a0fa8b6726ba61d422798d37a52e12eaecf4b022ebbb88f01" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" dependencies = [ "jobserver", "libc", @@ -903,9 +1248,9 @@ [[package]] name = "cfg-expr" -version = "0.15.4" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b40ccee03b5175c18cde8f37e7d2a33bcef6f8ec8f7cc0d81090d1bb380949c9" +checksum = "03915af431787e6ffdcc74c645077518c6b6e01f80b761e0fbbfa288536311b3" dependencies = [ "smallvec", ] @@ -935,42 +1280,52 @@ ] [[package]] +name = "chacha20" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +dependencies = [ + "cfg-if", + "cipher 0.4.4", + "cpufeatures", +] + +[[package]] name = "chacha20poly1305" version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a18446b09be63d457bbec447509e85f662f32952b035ce892290396bc0b0cff5" dependencies = [ "aead 0.4.3", - "chacha20", + "chacha20 0.8.2", "cipher 0.3.0", - "poly1305", + "poly1305 0.7.2", "zeroize", ] [[package]] name = "chrono" -version = "0.4.26" +version = "0.4.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" dependencies = [ "android-tzdata", "iana-time-zone", "js-sys", "num-traits", - "time 0.1.45", "wasm-bindgen", - "winapi", + "windows-targets 0.48.5", ] [[package]] name = "cid" -version = "0.8.6" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ed9c8b2d17acb8110c46f1da5bf4a696d745e1474a16db0cd2b49cd0249bf2" +checksum = "b9b68e3193982cd54187d71afdb2a271ad4cf8af157858e9cb911b91321de143" dependencies = [ "core2", "multibase", - "multihash 0.16.3", + "multihash", "serde", "unsigned-varint", ] @@ -1025,20 +1380,19 @@ [[package]] name = "clap" -version = "4.3.21" +version = "4.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c27cdf28c0f604ba3f512b0c9a409f8de8513e4816705deb0498b627e7c3a3fd" +checksum = "d04704f56c2cde07f43e8e2c154b43f216dc5c92fc98ada720177362f953b956" dependencies = [ "clap_builder", "clap_derive", - "once_cell", ] [[package]] name = "clap_builder" -version = "4.3.21" +version = "4.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08a9f1ab5e9f01a9b81f202e8562eb9a10de70abf9eaeac1be465c28b75aa4aa" +checksum = "0e231faeaca65ebd1ea3c737966bf858971cd38c3849107aa3ea7de90a804e45" dependencies = [ "anstream", "anstyle", @@ -1048,27 +1402,27 @@ [[package]] name = "clap_derive" -version = "4.3.12" +version = "4.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54a9bb5758fc5dfe728d1019941681eccaf0cf8a4189b692a0ee2f2ecf90a050" +checksum = "0862016ff20d69b84ef8247369fabf5c008a7417002411897d40ee1f4532b873" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] name = "clap_lex" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" +checksum = "cd7cc57abe963c6d3b9d8be5b06ba7c8957a930305ca90304f24ef040aa6f961" [[package]] name = "coarsetime" -version = "0.1.23" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a90d114103adbc625300f346d4d09dfb4ab1c4a8df6868435dd903392ecf4354" +checksum = "99280f81a35511dda7d44f7c943491b41d3ac6fd0b54aea92498bec8612a2423" dependencies = [ "libc", "once_cell", @@ -1094,9 +1448,9 @@ [[package]] name = "comfy-table" -version = "6.2.0" +version = "7.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e959d788268e3bf9d35ace83e81b124190378e4c91c9067524675e33394b8ba" +checksum = "9ab77dbd8adecaf3f0db40581631b995f312a8a5ae3aa9993188bb8f23d83a5b" dependencies = [ "strum", "strum_macros", @@ -1104,10 +1458,30 @@ ] [[package]] +name = "common" +version = "0.1.0" +source = "git+https://github.com/w3f/ring-proof?rev=0e948f3#0e948f3c28cbacecdd3020403c4841c0eb339213" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-poly", + "ark-serialize", + "ark-std", + "fflonk", + "merlin 3.0.0", +] + +[[package]] +name = "common-path" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2382f75942f4b3be3690fe4f86365e9c853c1587d6ee58212cebf6e2a9ccd101" + +[[package]] name = "concurrent-queue" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62ec6771ecfa0762d24683ee5a32ad78487a3d3afdc0fb8cae19d2c5deb50b7c" +checksum = "f057a694a54f12365049b0958a1685bb52d567f5593b355fbf685838e873d400" dependencies = [ "crossbeam-utils", ] @@ -1132,10 +1506,32 @@ checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f" [[package]] +name = "const-random" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368a7a772ead6ce7e1de82bfb04c485f3db8ec744f72925af5735e29a22cc18e" +dependencies = [ + "const-random-macro", + "proc-macro-hack", +] + +[[package]] +name = "const-random-macro" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d7d6ab3c3a2282db210df5f02c4dab6e0a7057af0fb7ebd4070f30fe05c0ddb" +dependencies = [ + "getrandom 0.2.10", + "once_cell", + "proc-macro-hack", + "tiny-keccak", +] + +[[package]] name = "constant_time_eq" -version = "0.2.6" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21a53c0a4d288377e7415b53dcfc3c04da5cdc2cc95c8d5ac178b58f0b861ad6" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] name = "constant_time_eq" @@ -1223,7 +1619,7 @@ "cranelift-codegen-shared", "cranelift-entity", "cranelift-isle", - "gimli", + "gimli 0.27.3", "hashbrown 0.13.2", "log", "regalloc2", @@ -1293,7 +1689,7 @@ "cranelift-codegen", "cranelift-entity", "cranelift-frontend", - "itertools", + "itertools 0.10.5", "log", "smallvec", "wasmparser", @@ -1325,16 +1721,6 @@ ] [[package]] -name = "crossbeam-channel" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" -dependencies = [ - "cfg-if", - "crossbeam-utils", -] - -[[package]] name = "crossbeam-deque" version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1397,9 +1783,9 @@ [[package]] name = "crypto-bigint" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4c2f4e1afd912bc40bfd6fed5d9dc1f288e0ba01bfcc835cc5bc3eb13efe15" +checksum = "740fe28e594155f10cfc383984cbefd529d7396050557148f79cb0f621204124" dependencies = [ "generic-array 0.14.7", "rand_core 0.6.4", @@ -1459,12 +1845,13 @@ [[package]] name = "cumulus-client-cli" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "clap", "parity-scale-codec", "sc-chain-spec", "sc-cli", + "sc-client-api", "sc-service", "sp-core", "sp-runtime", @@ -1474,7 +1861,7 @@ [[package]] name = "cumulus-client-collator" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "cumulus-client-consensus-common", "cumulus-client-network", @@ -1497,25 +1884,29 @@ [[package]] name = "cumulus-client-consensus-aura" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "async-trait", "cumulus-client-collator", "cumulus-client-consensus-common", "cumulus-client-consensus-proposer", + "cumulus-primitives-aura", "cumulus-primitives-core", "cumulus-primitives-parachain-inherent", "cumulus-relay-chain-interface", "futures", "parity-scale-codec", "polkadot-node-primitives", + "polkadot-node-subsystem", "polkadot-overseer", "polkadot-primitives", "sc-client-api", "sc-consensus", "sc-consensus-aura", + "sc-consensus-babe", "sc-consensus-slots", "sc-telemetry", + "schnellru", "sp-api", "sp-application-crypto", "sp-block-builder", @@ -1535,7 +1926,7 @@ [[package]] name = "cumulus-client-consensus-common" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "async-trait", "cumulus-client-pov-recovery", @@ -1548,11 +1939,14 @@ "polkadot-primitives", "sc-client-api", "sc-consensus", + "sc-consensus-babe", "schnellru", "sp-blockchain", "sp-consensus", + "sp-consensus-slots", "sp-core", "sp-runtime", + "sp-timestamp", "sp-trie", "substrate-prometheus-endpoint", "tracing", @@ -1561,7 +1955,7 @@ [[package]] name = "cumulus-client-consensus-proposer" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "anyhow", "async-trait", @@ -1576,7 +1970,7 @@ [[package]] name = "cumulus-client-network" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "async-trait", "cumulus-relay-chain-interface", @@ -1585,7 +1979,7 @@ "parity-scale-codec", "parking_lot 0.12.1", "polkadot-node-primitives", - "polkadot-parachain", + "polkadot-parachain-primitives", "polkadot-primitives", "sc-client-api", "sp-blockchain", @@ -1599,7 +1993,7 @@ [[package]] name = "cumulus-client-pov-recovery" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "async-trait", "cumulus-primitives-core", @@ -1623,7 +2017,7 @@ [[package]] name = "cumulus-client-service" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "cumulus-client-cli", "cumulus-client-collator", @@ -1658,11 +2052,13 @@ [[package]] name = "cumulus-pallet-aura-ext" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ + "cumulus-pallet-parachain-system", "frame-support", "frame-system", "pallet-aura", + "pallet-timestamp", "parity-scale-codec", "scale-info", "sp-application-crypto", @@ -1674,7 +2070,7 @@ [[package]] name = "cumulus-pallet-dmp-queue" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "cumulus-primitives-core", "frame-support", @@ -1685,13 +2081,13 @@ "sp-io", "sp-runtime", "sp-std", - "xcm", + "staging-xcm", ] [[package]] name = "cumulus-pallet-parachain-system" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "bytes", "cumulus-pallet-parachain-system-proc-macro", @@ -1703,7 +2099,7 @@ "impl-trait-for-tuples", "log", "parity-scale-codec", - "polkadot-parachain", + "polkadot-parachain-primitives", "scale-info", "sp-core", "sp-externalities", @@ -1714,24 +2110,25 @@ "sp-std", "sp-trie", "sp-version", - "xcm", + "staging-xcm", + "trie-db", ] [[package]] name = "cumulus-pallet-parachain-system-proc-macro" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] name = "cumulus-pallet-xcm" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "cumulus-primitives-core", "frame-support", @@ -1741,15 +2138,16 @@ "sp-io", "sp-runtime", "sp-std", - "xcm", + "staging-xcm", ] [[package]] name = "cumulus-pallet-xcmp-queue" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "cumulus-primitives-core", + "frame-benchmarking", "frame-support", "frame-system", "log", @@ -1760,31 +2158,45 @@ "sp-io", "sp-runtime", "sp-std", - "xcm", - "xcm-executor", + "staging-xcm", + "staging-xcm-executor", +] + +[[package]] +name = "cumulus-primitives-aura" +version = "0.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "parity-scale-codec", + "polkadot-core-primitives", + "polkadot-primitives", + "sp-api", + "sp-consensus-aura", + "sp-runtime", + "sp-std", ] [[package]] name = "cumulus-primitives-core" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain", + "polkadot-parachain-primitives", "polkadot-primitives", "scale-info", "sp-api", "sp-runtime", "sp-std", "sp-trie", - "xcm", + "staging-xcm", ] [[package]] name = "cumulus-primitives-parachain-inherent" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "async-trait", "cumulus-primitives-core", @@ -1807,7 +2219,7 @@ [[package]] name = "cumulus-primitives-timestamp" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "cumulus-primitives-core", "futures", @@ -1820,7 +2232,7 @@ [[package]] name = "cumulus-primitives-utility" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "cumulus-primitives-core", "frame-support", @@ -1830,15 +2242,15 @@ "sp-io", "sp-runtime", "sp-std", - "xcm", - "xcm-builder", - "xcm-executor", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", ] [[package]] name = "cumulus-relay-chain-inprocess-interface" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "async-trait", "cumulus-primitives-core", @@ -1846,7 +2258,6 @@ "futures", "futures-timer", "polkadot-cli", - "polkadot-client", "polkadot-service", "sc-cli", "sc-client-api", @@ -1863,7 +2274,7 @@ [[package]] name = "cumulus-relay-chain-interface" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "async-trait", "cumulus-primitives-core", @@ -1881,15 +2292,14 @@ [[package]] name = "cumulus-relay-chain-minimal-node" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ - "array-bytes 6.1.0", + "array-bytes", "async-trait", "cumulus-primitives-core", "cumulus-relay-chain-interface", "cumulus-relay-chain-rpc-interface", "futures", - "lru 0.9.0", "polkadot-availability-recovery", "polkadot-collator-protocol", "polkadot-core-primitives", @@ -1901,47 +2311,53 @@ "polkadot-overseer", "polkadot-primitives", "sc-authority-discovery", - "sc-client-api", "sc-network", "sc-network-common", "sc-service", "sc-tracing", "sc-utils", + "schnellru", "sp-api", - "sp-blockchain", "sp-consensus", "sp-consensus-babe", "sp-runtime", - "tokio", "tracing", ] [[package]] name = "cumulus-relay-chain-rpc-interface" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "async-trait", "cumulus-primitives-core", "cumulus-relay-chain-interface", + "either", "futures", "futures-timer", "jsonrpsee", - "lru 0.9.0", "parity-scale-codec", + "pin-project", "polkadot-overseer", + "rand 0.8.5", "sc-client-api", "sc-rpc-api", "sc-service", + "schnellru", "serde", "serde_json", + "smoldot", + "smoldot-light", "sp-api", "sp-authority-discovery", "sp-consensus-babe", "sp-core", + "sp-runtime", "sp-state-machine", "sp-storage", + "thiserror", "tokio", + "tokio-util", "tracing", "url", ] @@ -1949,7 +2365,7 @@ [[package]] name = "cumulus-test-relay-sproof-builder" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "cumulus-primitives-core", "parity-scale-codec", @@ -1957,6 +2373,7 @@ "sp-runtime", "sp-state-machine", "sp-std", + "sp-trie", ] [[package]] @@ -1987,23 +2404,50 @@ [[package]] name = "curve25519-dalek" -version = "4.0.0-rc.1" +version = "4.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d4ba9852b42210c7538b75484f9daa0655e9a3ac04f693747bb0f02cf3cfe16" +checksum = "e89b8c6a2e4b1f45971ad09761aafb85514a84744b67a95e32c3cc1352d1f65c" dependencies = [ "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest 0.10.7", "fiat-crypto", - "packed_simd_2", - "platforms 3.0.2", + "platforms", + "rustc_version", "subtle", "zeroize", ] [[package]] +name = "curve25519-dalek-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83fdaf97f4804dcebfa5862639bc9ce4121e82140bec2a987ac5140294865b5b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "curve25519-dalek-ng" +version = "4.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c359b7249347e46fb28804470d071c921156ad62b3eef5d34e2ba867533dec8" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core 0.6.4", + "subtle-ng", + "zeroize", +] + +[[package]] name = "cxx" -version = "1.0.105" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "666a3ec767f4bbaf0dcfcc3b4ea048b90520b254fdf88813e763f4c762636c14" +checksum = "bbe98ba1789d56fb3db3bee5e032774d4f421b685de7ba703643584ba24effbe" dependencies = [ "cc", "cxxbridge-flags", @@ -2013,9 +2457,9 @@ [[package]] name = "cxx-build" -version = "1.0.105" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162bec16c4cc28b19e26db0197b60ba5480fdb9a4cbf0f4c6c104a937741b78e" +checksum = "c4ce20f6b8433da4841b1dadfb9468709868022d829d5ca1f2ffbda928455ea3" dependencies = [ "cc", "codespan-reporting", @@ -2023,24 +2467,24 @@ "proc-macro2", "quote", "scratch", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] name = "cxxbridge-flags" -version = "1.0.105" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6e8c238aadc4b9f2c00269d04c87abb23f96dd240803872536eed1a304bb40e" +checksum = "20888d9e1d2298e2ff473cee30efe7d5036e437857ab68bbfea84c74dba91da2" [[package]] name = "cxxbridge-macro" -version = "1.0.105" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59d9ffb4193dd22180b8d5747b1e095c3d9c9c665ce39b0483a488948f437e06" +checksum = "2fa16a70dd58129e4dfffdff535fb1bce66673f7bbeec4a5a1765a504e1ccd84" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] @@ -2155,9 +2599,9 @@ [[package]] name = "deranged" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7684a49fb1af197853ef7b2ee694bc1f5b4179556f1e5710e1760c5db6f5e929" +checksum = "f2696e8a945f658fd14dc3b87242e6b80cd0f36ff04ea560fa39082368847946" [[package]] name = "derivative" @@ -2310,10 +2754,54 @@ dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] +name = "dleq_vrf" +version = "0.0.2" +source = "git+https://github.com/w3f/ring-vrf?rev=3119f51#3119f51b54b69308abfb0671f6176cb125ae1bf1" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-scale 0.0.10", + "ark-secret-scalar", + "ark-serialize", + "ark-std", + "ark-transcript", + "arrayvec 0.7.4", + "rand_core 0.6.4", + "zeroize", +] + +[[package]] +name = "docify" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76ee528c501ddd15d5181997e9518e59024844eac44fd1e40cb20ddb2a8562fa" +dependencies = [ + "docify_macros", +] + +[[package]] +name = "docify_macros" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ca01728ab2679c464242eca99f94e2ce0514b52ac9ad950e2ed03fca991231c" +dependencies = [ + "common-path", + "derive-syn-parse", + "once_cell", + "proc-macro2", + "quote", + "regex", + "syn 2.0.37", + "termcolor", + "toml 0.7.8", + "walkdir", +] + +[[package]] name = "downcast" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2354,9 +2842,9 @@ [[package]] name = "dyn-clone" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "304e6508efa593091e97a9abbc10f90aa7ca635b6d2784feff3c89d41dd12272" +checksum = "23d2f3407d9a573d666de4b5bdf10569d73ca9478087346697dcbae6244bfbcd" [[package]] name = "ecdsa" @@ -2386,24 +2874,25 @@ [[package]] name = "ed25519" -version = "1.5.3" +version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" +checksum = "60f6d271ca33075c88028be6f04d502853d63a5ece419d269c15315d4fc1cf1d" dependencies = [ - "signature 1.6.4", + "pkcs8 0.10.2", + "signature 2.1.0", ] [[package]] name = "ed25519-dalek" -version = "1.0.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" +checksum = "7277392b266383ef8396db7fdeb1e77b6c52fed775f5df15bb24f35b72156980" dependencies = [ - "curve25519-dalek 3.2.0", + "curve25519-dalek 4.1.1", "ed25519", - "rand 0.7.3", + "rand_core 0.6.4", "serde", - "sha2 0.9.9", + "sha2 0.10.8", "zeroize", ] @@ -2422,6 +2911,21 @@ ] [[package]] +name = "ed25519-zebra" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d9ce6874da5d4415896cd45ffbc4d1cfc0c4f9c079427bd870742c30f2f65a9" +dependencies = [ + "curve25519-dalek 4.1.1", + "ed25519", + "hashbrown 0.14.1", + "hex", + "rand_core 0.6.4", + "sha2 0.10.8", + "zeroize", +] + +[[package]] name = "either" version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2456,7 +2960,7 @@ checksum = "968405c8fdc9b3bf4df0a6638858cc0b52462836ab6b1c87377785dd09cf1c0b" dependencies = [ "base16ct 0.2.0", - "crypto-bigint 0.5.2", + "crypto-bigint 0.5.3", "digest 0.10.7", "ff 0.13.0", "generic-array 0.14.7", @@ -2488,33 +2992,33 @@ [[package]] name = "enumflags2" -version = "0.7.7" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c041f5090df68b32bcd905365fd51769c8b9d553fe87fde0b683534f10c01bd2" +checksum = "5998b4f30320c9d93aed72f63af821bfdac50465b75428fce77b48ec482c3939" dependencies = [ "enumflags2_derive", ] [[package]] name = "enumflags2_derive" -version = "0.7.7" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e9a1f9f7d83e59740248a6e14ecf93929ade55027844dfcea78beafccc15745" +checksum = "f95e2801cd355d4a1a3e3953ce6ee5ae9603a5c833455343a8bfe3f44d418246" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] name = "enumn" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b893c4eb2dc092c811165f84dc7447fae16fb66521717968c34c509b39b1a5c5" +checksum = "c2ad8cef1d801a4686bfd8919f0b30eac4c8e48968c437a6405ded4fb5272d2b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] @@ -2557,9 +3061,9 @@ [[package]] name = "errno" -version = "0.3.2" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f" +checksum = "add4f07d43996f76ef320709726a556a9d4f965d9410d8d0271132d2f8293480" dependencies = [ "errno-dragonfly", "libc", @@ -2756,19 +3260,6 @@ [[package]] name = "expander" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f360349150728553f92e4c997a16af8915f418d3a0f21b440d34c5632f16ed84" -dependencies = [ - "blake2", - "fs-err", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "expander" version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f86a749cf851891866c10515ef6c299b5c69661465e9c3bbe7e07a2b77fb0f7" @@ -2777,7 +3268,7 @@ "fs-err", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] @@ -2803,9 +3294,9 @@ [[package]] name = "fastrand" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" [[package]] name = "fatality" @@ -2833,9 +3324,21 @@ ] [[package]] +name = "fc-api" +version = "1.0.0-dev" +source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v1.1.0#e99be6383ce0b0bc33768e479505cf4302dc0f8a" +dependencies = [ + "async-trait", + "fp-storage", + "parity-scale-codec", + "sp-core", + "sp-runtime", +] + +[[package]] name = "fc-consensus" version = "2.0.0-dev" -source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.43#3ae25048cce709349b242e8ad3c54ada2b321564" +source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v1.1.0#e99be6383ce0b0bc33768e479505cf4302dc0f8a" dependencies = [ "async-trait", "fp-consensus", @@ -2851,9 +3354,10 @@ [[package]] name = "fc-db" version = "2.0.0-dev" -source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.43#3ae25048cce709349b242e8ad3c54ada2b321564" +source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v1.1.0#e99be6383ce0b0bc33768e479505cf4302dc0f8a" dependencies = [ "async-trait", + "fc-api", "fp-storage", "kvdb-rocksdb", "log", @@ -2871,7 +3375,7 @@ [[package]] name = "fc-mapping-sync" version = "2.0.0-dev" -source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.43#3ae25048cce709349b242e8ad3c54ada2b321564" +source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v1.1.0#e99be6383ce0b0bc33768e479505cf4302dc0f8a" dependencies = [ "fc-db", "fc-storage", @@ -2892,16 +3396,15 @@ [[package]] name = "fc-rpc" version = "2.0.0-dev" -source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.43#3ae25048cce709349b242e8ad3c54ada2b321564" +source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v1.1.0#e99be6383ce0b0bc33768e479505cf4302dc0f8a" dependencies = [ "ethereum", "ethereum-types", "evm", - "fc-db", + "fc-api", "fc-mapping-sync", "fc-rpc-core", "fc-storage", - "fp-ethereum", "fp-evm", "fp-rpc", "fp-storage", @@ -2910,13 +3413,13 @@ "jsonrpsee", "libsecp256k1", "log", - "lru 0.8.1", "pallet-evm", "parity-scale-codec", "prometheus", "rand 0.8.5", "rlp", "sc-client-api", + "sc-consensus-aura", "sc-network", "sc-network-common", "sc-network-sync", @@ -2925,24 +3428,29 @@ "sc-transaction-pool", "sc-transaction-pool-api", "sc-utils", + "schnellru", "serde", "sp-api", "sp-block-builder", "sp-blockchain", "sp-consensus", + "sp-consensus-aura", "sp-core", + "sp-inherents", "sp-io", "sp-runtime", "sp-state-machine", "sp-storage", + "sp-timestamp", "substrate-prometheus-endpoint", + "thiserror", "tokio", ] [[package]] name = "fc-rpc-core" version = "1.1.0-dev" -source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.43#3ae25048cce709349b242e8ad3c54ada2b321564" +source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v1.1.0#e99be6383ce0b0bc33768e479505cf4302dc0f8a" dependencies = [ "ethereum", "ethereum-types", @@ -2955,7 +3463,7 @@ [[package]] name = "fc-storage" version = "1.0.0-dev" -source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.43#3ae25048cce709349b242e8ad3c54ada2b321564" +source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v1.1.0#e99be6383ce0b0bc33768e479505cf4302dc0f8a" dependencies = [ "ethereum", "ethereum-types", @@ -3000,10 +3508,23 @@ ] [[package]] +name = "fflonk" +version = "0.1.0" +source = "git+https://github.com/w3f/fflonk#26a5045b24e169cffc1f9328ca83d71061145c40" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-poly", + "ark-serialize", + "ark-std", + "merlin 3.0.0", +] + +[[package]] name = "fiat-crypto" -version = "0.1.20" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e825f6987101665dea6ec934c09ec6d721de7bc1bf92248e1d5810c8cd636b77" +checksum = "d0870c84016d4b481be5c9f323c24f65e31e901ae618f0e80f4308fb00de1d2d" [[package]] name = "file-per-thread-logger" @@ -3090,7 +3611,7 @@ [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "parity-scale-codec", ] @@ -3107,7 +3628,7 @@ [[package]] name = "fp-account" version = "1.0.0-dev" -source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.43#3ae25048cce709349b242e8ad3c54ada2b321564" +source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v1.1.0#e99be6383ce0b0bc33768e479505cf4302dc0f8a" dependencies = [ "hex", "impl-serde", @@ -3126,7 +3647,7 @@ [[package]] name = "fp-consensus" version = "2.0.0-dev" -source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.43#3ae25048cce709349b242e8ad3c54ada2b321564" +source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v1.1.0#e99be6383ce0b0bc33768e479505cf4302dc0f8a" dependencies = [ "ethereum", "parity-scale-codec", @@ -3138,13 +3659,12 @@ [[package]] name = "fp-ethereum" version = "1.0.0-dev" -source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.43#3ae25048cce709349b242e8ad3c54ada2b321564" +source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v1.1.0#e99be6383ce0b0bc33768e479505cf4302dc0f8a" dependencies = [ "ethereum", "ethereum-types", "fp-evm", "frame-support", - "num_enum 0.6.1", "parity-scale-codec", "sp-std", ] @@ -3152,11 +3672,11 @@ [[package]] name = "fp-evm" version = "3.0.0-dev" -source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.43#3ae25048cce709349b242e8ad3c54ada2b321564" +source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v1.1.0#e99be6383ce0b0bc33768e479505cf4302dc0f8a" dependencies = [ "evm", "frame-support", - "impl-trait-for-tuples", + "num_enum", "parity-scale-codec", "scale-info", "serde", @@ -3168,7 +3688,7 @@ [[package]] name = "fp-rpc" version = "3.0.0-dev" -source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.43#3ae25048cce709349b242e8ad3c54ada2b321564" +source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v1.1.0#e99be6383ce0b0bc33768e479505cf4302dc0f8a" dependencies = [ "ethereum", "ethereum-types", @@ -3185,7 +3705,7 @@ [[package]] name = "fp-self-contained" version = "1.0.0-dev" -source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.43#3ae25048cce709349b242e8ad3c54ada2b321564" +source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v1.1.0#e99be6383ce0b0bc33768e479505cf4302dc0f8a" dependencies = [ "frame-support", "parity-scale-codec", @@ -3197,7 +3717,7 @@ [[package]] name = "fp-storage" version = "2.0.0" -source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.43#3ae25048cce709349b242e8ad3c54ada2b321564" +source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v1.1.0#e99be6383ce0b0bc33768e479505cf4302dc0f8a" dependencies = [ "parity-scale-codec", "serde", @@ -3212,7 +3732,7 @@ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-support", "frame-support-procedural", @@ -3237,10 +3757,10 @@ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "Inflector", - "array-bytes 4.2.0", + "array-bytes", "chrono", "clap", "comfy-table", @@ -3249,7 +3769,7 @@ "frame-system", "gethostname", "handlebars", - "itertools", + "itertools 0.10.5", "lazy_static", "linked-hash-map", "log", @@ -3271,12 +3791,13 @@ "sp-database", "sp-externalities", "sp-inherents", + "sp-io", "sp-keystore", "sp-runtime", "sp-state-machine", - "sp-std", "sp-storage", "sp-trie", + "sp-wasm-interface", "thiserror", "thousands", ] @@ -3284,18 +3805,18 @@ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -3312,11 +3833,12 @@ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-support", "frame-system", "frame-try-runtime", + "log", "parity-scale-codec", "scale-info", "sp-core", @@ -3328,9 +3850,9 @@ [[package]] name = "frame-metadata" -version = "15.1.0" +version = "16.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "878babb0b136e731cc77ec2fd883ff02745ff21e6fb662729953d44923df009c" +checksum = "87cf1549fba25a6fcac22785b61698317d958e96cac72a59102ea45b9ae64692" dependencies = [ "cfg-if", "parity-scale-codec", @@ -3341,7 +3863,7 @@ [[package]] name = "frame-remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "async-recursion", "futures", @@ -3353,6 +3875,7 @@ "sp-core", "sp-io", "sp-runtime", + "sp-state-machine", "spinners", "substrate-rpc-client", "tokio", @@ -3362,79 +3885,87 @@ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ + "aquamarine", "bitflags 1.3.2", + "docify", "environmental", "frame-metadata", "frame-support-procedural", "impl-trait-for-tuples", "k256", "log", - "once_cell", + "macro_magic", "parity-scale-codec", "paste", "scale-info", "serde", + "serde_json", "smallvec", "sp-api", "sp-arithmetic", "sp-core", "sp-core-hashing-proc-macro", "sp-debug-derive", + "sp-genesis-builder", "sp-inherents", "sp-io", + "sp-metadata-ir", "sp-runtime", "sp-staking", "sp-state-machine", "sp-std", "sp-tracing", "sp-weights", + "static_assertions", "tt-call", ] [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "Inflector", "cfg-expr", "derive-syn-parse", + "expander 2.0.0", "frame-support-procedural-tools", - "itertools", + "itertools 0.10.5", + "macro_magic", "proc-macro-warning", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "cfg-if", "frame-support", @@ -3453,7 +3984,7 @@ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -3468,7 +3999,7 @@ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "parity-scale-codec", "sp-api", @@ -3477,7 +4008,7 @@ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-support", "parity-scale-codec", @@ -3508,7 +4039,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2eeb4ed9e12f43b7fa0baae3f9cdda28352770132ef2e09a23760c29cae8bd47" dependencies = [ - "rustix 0.38.8", + "rustix 0.38.15", "windows-sys 0.48.0", ] @@ -3578,7 +4109,7 @@ "futures-io", "memchr", "parking", - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", "waker-fn", ] @@ -3590,7 +4121,7 @@ dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] @@ -3600,8 +4131,8 @@ checksum = "d2411eed028cdf8c8034eaf21f9915f956b6c3abec4d4c7949ee67f0721127bd" dependencies = [ "futures-io", - "rustls 0.20.8", - "webpki 0.22.0", + "rustls 0.20.9", + "webpki 0.22.2", ] [[package]] @@ -3635,7 +4166,7 @@ "futures-sink", "futures-task", "memchr", - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", "pin-utils", "slab", ] @@ -3733,6 +4264,12 @@ ] [[package]] +name = "gimli" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" + +[[package]] name = "glob" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -3775,9 +4312,9 @@ [[package]] name = "h2" -version = "0.3.20" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049" +checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" dependencies = [ "bytes", "fnv", @@ -3794,9 +4331,9 @@ [[package]] name = "handlebars" -version = "4.3.7" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83c3372087601b532857d332f5957cbae686da52bb7810bf038c3e3c3cc2fa0d" +checksum = "c39b3bc2a8f715298032cf5087e58573809374b08160aa7d750582bdb82d2683" dependencies = [ "log", "pest", @@ -3847,9 +4384,14 @@ [[package]] name = "hashbrown" -version = "0.14.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" +checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12" +dependencies = [ + "ahash 0.8.3", + "allocator-api2", + "serde", +] [[package]] name = "heck" @@ -3868,9 +4410,9 @@ [[package]] name = "hermit-abi" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" [[package]] name = "hex" @@ -3934,6 +4476,15 @@ ] [[package]] +name = "home" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" +dependencies = [ + "windows-sys 0.48.0", +] + +[[package]] name = "hostname" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -3963,7 +4514,7 @@ dependencies = [ "bytes", "http", - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", ] [[package]] @@ -4006,7 +4557,7 @@ "httparse", "httpdate", "itoa", - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", "socket2 0.4.9", "tokio", "tower-service", @@ -4016,18 +4567,19 @@ [[package]] name = "hyper-rustls" -version = "0.23.2" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1788965e61b367cd03a62950836d5cd41560c3577d90e40e0819373194d1661c" +checksum = "8d78e1e73ec14cf7375674f74d7dde185c8206fd9dea6fb6295e8a98098aaa97" dependencies = [ + "futures-util", "http", "hyper", "log", - "rustls 0.20.8", + "rustls 0.21.7", "rustls-native-certs", "tokio", "tokio-rustls", - "webpki-roots", + "webpki-roots 0.23.1", ] [[package]] @@ -4148,6 +4700,25 @@ ] [[package]] +name = "include_dir" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18762faeff7122e89e0857b02f7ce6fcc0d101d5e9ad2ad7846cc01d61b7f19e" +dependencies = [ + "include_dir_macros", +] + +[[package]] +name = "include_dir_macros" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] name = "indexmap" version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -4160,19 +4731,25 @@ [[package]] name = "indexmap" -version = "2.0.0" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" dependencies = [ "equivalent", - "hashbrown 0.14.0", + "hashbrown 0.14.1", ] [[package]] +name = "indexmap-nostd" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e04e2fd2b8188ea827b32ef11de88377086d690286ab35747ef7f9bf3ccb590" + +[[package]] name = "indicatif" -version = "0.17.6" +version = "0.17.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b297dc40733f23a0e52728a58fa9489a5b7638a324932de16b41adc3ef80730" +checksum = "fb28741c9db9a713d93deb3bb9515c20788cef5815265bee4980e87bde7e0f25" dependencies = [ "console", "instant", @@ -4239,7 +4816,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi 0.3.2", + "hermit-abi 0.3.3", "libc", "windows-sys 0.48.0", ] @@ -4256,7 +4833,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" dependencies = [ - "socket2 0.5.3", + "socket2 0.5.4", "widestring", "windows-sys 0.48.0", "winreg", @@ -4274,12 +4851,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" dependencies = [ - "hermit-abi 0.3.2", - "rustix 0.38.8", + "hermit-abi 0.3.3", + "rustix 0.38.15", "windows-sys 0.48.0", ] [[package]] +name = "is_executable" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa9acdc6d67b75e626ad644734e8bc6df893d9cd2a834129065d3dd6158ea9c8" +dependencies = [ + "winapi", +] + +[[package]] name = "itertools" version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -4289,6 +4875,15 @@ ] [[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + +[[package]] name = "itoa" version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -4314,9 +4909,9 @@ [[package]] name = "jsonrpsee" -version = "0.16.2" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d291e3a5818a2384645fd9756362e6d89cf0541b0b916fa7702ea4a9833608e" +checksum = "367a292944c07385839818bb71c8d76611138e2dedb0677d035b8da21d29c78b" dependencies = [ "jsonrpsee-core", "jsonrpsee-http-client", @@ -4329,9 +4924,9 @@ [[package]] name = "jsonrpsee-client-transport" -version = "0.16.2" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "965de52763f2004bc91ac5bcec504192440f0b568a5d621c59d9dbd6f886c3fb" +checksum = "c8b3815d9f5d5de348e5f162b316dc9cdf4548305ebb15b4eb9328e66cf27d7a" dependencies = [ "futures-util", "http", @@ -4345,14 +4940,14 @@ "tokio-rustls", "tokio-util", "tracing", - "webpki-roots", + "webpki-roots 0.25.2", ] [[package]] name = "jsonrpsee-core" -version = "0.16.2" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4e70b4439a751a5de7dd5ed55eacff78ebf4ffe0fc009cb1ebb11417f5b536b" +checksum = "2b5dde66c53d6dcdc8caea1874a45632ec0fcf5b437789f1e45766a1512ce803" dependencies = [ "anyhow", "arrayvec 0.7.4", @@ -4378,9 +4973,9 @@ [[package]] name = "jsonrpsee-http-client" -version = "0.16.2" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc345b0a43c6bc49b947ebeb936e886a419ee3d894421790c969cc56040542ad" +checksum = "7e5f9fabdd5d79344728521bb65e3106b49ec405a78b66fbff073b72b389fa43" dependencies = [ "async-trait", "hyper", @@ -4397,9 +4992,9 @@ [[package]] name = "jsonrpsee-proc-macros" -version = "0.16.2" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baa6da1e4199c10d7b1d0a6e5e8bd8e55f351163b6f4b3cbb044672a69bd4c1c" +checksum = "44e8ab85614a08792b9bff6c8feee23be78c98d0182d4c622c05256ab553892a" dependencies = [ "heck", "proc-macro-crate", @@ -4410,9 +5005,9 @@ [[package]] name = "jsonrpsee-server" -version = "0.16.2" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fb69dad85df79527c019659a992498d03f8495390496da2f07e6c24c2b356fc" +checksum = "cf4d945a6008c9b03db3354fb3c83ee02d2faa9f2e755ec1dfb69c3551b8f4ba" dependencies = [ "futures-channel", "futures-util", @@ -4432,9 +5027,9 @@ [[package]] name = "jsonrpsee-types" -version = "0.16.2" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bd522fe1ce3702fd94812965d7bb7a3364b1c9aba743944c5a00529aae80f8c" +checksum = "245ba8e5aa633dd1c1e4fae72bce06e71f42d34c14a2767c6b4d173b57bee5e5" dependencies = [ "anyhow", "beef", @@ -4446,9 +5041,9 @@ [[package]] name = "jsonrpsee-ws-client" -version = "0.16.2" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b83daeecfc6517cfe210df24e570fb06213533dfb990318fae781f4c7119dd9" +checksum = "4e1b3975ed5d73f456478681a417128597acd6a2487855fdb7b4a3d4d195bf5e" dependencies = [ "http", "jsonrpsee-client-transport", @@ -4466,7 +5061,7 @@ "ecdsa 0.16.8", "elliptic-curve 0.13.5", "once_cell", - "sha2 0.10.7", + "sha2 0.10.8", ] [[package]] @@ -4476,111 +5071,12 @@ checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" dependencies = [ "cpufeatures", -] - -[[package]] -name = "kusama-runtime" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" -dependencies = [ - "bitvec", - "frame-benchmarking", - "frame-election-provider-support", - "frame-executive", - "frame-support", - "frame-system", - "frame-system-benchmarking", - "frame-system-rpc-runtime-api", - "frame-try-runtime", - "hex-literal", - "kusama-runtime-constants", - "log", - "pallet-authority-discovery", - "pallet-authorship", - "pallet-babe", - "pallet-bags-list", - "pallet-balances", - "pallet-bounties", - "pallet-child-bounties", - "pallet-collective", - "pallet-conviction-voting", - "pallet-democracy", - "pallet-election-provider-multi-phase", - "pallet-election-provider-support-benchmarking", - "pallet-elections-phragmen", - "pallet-fast-unstake", - "pallet-grandpa", - "pallet-identity 4.0.0-dev (git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43)", - "pallet-im-online", - "pallet-indices", - "pallet-membership", - "pallet-message-queue", - "pallet-multisig", - "pallet-nis", - "pallet-nomination-pools", - "pallet-nomination-pools-benchmarking", - "pallet-nomination-pools-runtime-api", - "pallet-offences", - "pallet-offences-benchmarking", - "pallet-preimage", - "pallet-proxy", - "pallet-ranked-collective", - "pallet-recovery", - "pallet-referenda", - "pallet-scheduler", - "pallet-session", - "pallet-session-benchmarking", - "pallet-society", - "pallet-staking", - "pallet-staking-runtime-api", - "pallet-timestamp", - "pallet-tips", - "pallet-transaction-payment", - "pallet-transaction-payment-rpc-runtime-api", - "pallet-treasury", - "pallet-utility", - "pallet-vesting", - "pallet-whitelist", - "pallet-xcm", - "pallet-xcm-benchmarks", - "parity-scale-codec", - "polkadot-primitives", - "polkadot-runtime-common", - "polkadot-runtime-parachains", - "rustc-hex", - "scale-info", - "serde", - "serde_derive", - "smallvec", - "sp-api", - "sp-arithmetic", - "sp-authority-discovery", - "sp-block-builder", - "sp-consensus-babe", - "sp-consensus-beefy", - "sp-core", - "sp-inherents", - "sp-io", - "sp-mmr-primitives", - "sp-npos-elections", - "sp-offchain", - "sp-runtime", - "sp-session", - "sp-staking", - "sp-std", - "sp-transaction-pool", - "sp-version", - "static_assertions", - "substrate-wasm-builder", - "xcm", - "xcm-builder", - "xcm-executor", ] [[package]] name = "kusama-runtime-constants" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-support", "polkadot-primitives", @@ -4625,6 +5121,17 @@ ] [[package]] +name = "landlock" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520baa32708c4e957d2fc3a186bc5bd8d26637c33137f399ddfc202adb240068" +dependencies = [ + "enumflags2", + "libc", + "thiserror", +] + +[[package]] name = "lazy_static" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -4638,9 +5145,9 @@ [[package]] name = "libc" -version = "0.2.147" +version = "0.2.148" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" +checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b" [[package]] name = "libloading" @@ -4651,12 +5158,6 @@ "cfg-if", "winapi", ] - -[[package]] -name = "libm" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fc7aa29613bd6a620df431842069224d8bc9011086b1db4c0e0cd47fa03ec9a" [[package]] name = "libm" @@ -4736,7 +5237,7 @@ "libp2p-identity", "log", "multiaddr", - "multihash 0.17.0", + "multihash", "multistream-select", "once_cell", "parking_lot 0.12.1", @@ -4788,18 +5289,18 @@ [[package]] name = "libp2p-identity" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e2d584751cecb2aabaa56106be6be91338a60a0f4e420cf2af639204f596fc1" +checksum = "276bb57e7af15d8f100d3c11cbdd32c6752b7eef4ba7a18ecf464972c07abcce" dependencies = [ - "bs58", + "bs58 0.4.0", "ed25519-dalek", "log", "multiaddr", - "multihash 0.17.0", + "multihash", "quick-protobuf", "rand 0.8.5", - "sha2 0.10.7", + "sha2 0.10.8", "thiserror", "zeroize", ] @@ -4824,7 +5325,7 @@ "log", "quick-protobuf", "rand 0.8.5", - "sha2 0.10.7", + "sha2 0.10.8", "smallvec", "thiserror", "uint", @@ -4882,7 +5383,7 @@ "once_cell", "quick-protobuf", "rand 0.8.5", - "sha2 0.10.7", + "sha2 0.10.8", "snow", "static_assertions", "thiserror", @@ -4924,7 +5425,7 @@ "parking_lot 0.12.1", "quinn-proto", "rand 0.8.5", - "rustls 0.20.8", + "rustls 0.20.9", "thiserror", "tokio", ] @@ -5004,10 +5505,10 @@ "libp2p-core", "libp2p-identity", "rcgen 0.10.0", - "ring", - "rustls 0.20.8", + "ring 0.16.20", + "rustls 0.20.9", "thiserror", - "webpki 0.22.0", + "webpki 0.22.2", "x509-parser 0.14.0", "yasna", ] @@ -5043,7 +5544,7 @@ "libp2p-identity", "libp2p-noise", "log", - "multihash 0.17.0", + "multihash", "quick-protobuf", "quick-protobuf-codec", "rand 0.8.5", @@ -5073,7 +5574,7 @@ "rw-stream-sink", "soketto", "url", - "webpki-roots", + "webpki-roots 0.22.6", ] [[package]] @@ -5189,9 +5690,9 @@ [[package]] name = "linregress" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4de0b5f52a9f84544d268f5fabb71b38962d6aa3c6600b8bcd27d44ccf9c9c45" +checksum = "4de04dcecc58d366391f9920245b85ffa684558a5ef6e7736e754347c3aea9c2" dependencies = [ "nalgebra", ] @@ -5210,9 +5711,9 @@ [[package]] name = "linux-raw-sys" -version = "0.4.5" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" +checksum = "3852614a3bd9ca9804678ba6be5e3b8ce76dfc902cae004e3e0c44051b6e88db" [[package]] name = "lock_api" @@ -5232,30 +5733,18 @@ [[package]] name = "lru" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6e8aaa3f231bb4bd57b84b2d5dc3ae7f350265df8aa96492e0bc394a1571909" -dependencies = [ - "hashbrown 0.12.3", -] - -[[package]] -name = "lru" -version = "0.9.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e7d46de488603ffdd5f30afbc64fbba2378214a2c3a2fb83abf3d33126df17" +checksum = "718e8fae447df0c7e1ba7f5189829e63fd536945c8988d61444c19039f16b670" dependencies = [ "hashbrown 0.13.2", ] [[package]] name = "lru" -version = "0.10.1" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "718e8fae447df0c7e1ba7f5189829e63fd536945c8988d61444c19039f16b670" -dependencies = [ - "hashbrown 0.13.2", -] +checksum = "a4a83fb7698b3643a0e34f9ae6f2e8f0178c0fd42f8b59d493aa271ff3a5bf21" [[package]] name = "lru-cache" @@ -5296,6 +5785,54 @@ ] [[package]] +name = "macro_magic" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aee866bfee30d2d7e83835a4574aad5b45adba4cc807f2a3bbba974e5d4383c9" +dependencies = [ + "macro_magic_core", + "macro_magic_macros", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "macro_magic_core" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e766a20fd9c72bab3e1e64ed63f36bd08410e75803813df210d1ce297d7ad00" +dependencies = [ + "const-random", + "derive-syn-parse", + "macro_magic_core_macros", + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "macro_magic_core_macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c12469fc165526520dff2807c2975310ab47cf7190a45b99b49a7dc8befab17b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "macro_magic_macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fb85ec1620619edf2984a7693497d4ec88a9665d8b87e942856884c92dbf2a" +dependencies = [ + "macro_magic_core", + "quote", + "syn 2.0.37", +] + +[[package]] name = "maplit" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -5324,9 +5861,9 @@ [[package]] name = "matrixmultiply" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "090126dc04f95dc0d1c1c91f61bdd474b3930ca064c1edc8a849da2c6cbe1e77" +checksum = "7574c1cf36da4798ab73da5b215bbf444f50718207754cb522201d78d1cd0ff2" dependencies = [ "autocfg", "rawpointer", @@ -5334,26 +5871,27 @@ [[package]] name = "md-5" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" dependencies = [ + "cfg-if", "digest 0.10.7", ] [[package]] name = "memchr" -version = "2.5.0" +version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" [[package]] name = "memfd" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffc89ccdc6e10d6907450f753537ebc5c5d3460d2e4e62ea74bd571db62c0f9e" +checksum = "b2cffa4ad52c6f791f4f8b15f0c05f9824b2ced1160e88cc393d64fff9a8ac64" dependencies = [ - "rustix 0.37.23", + "rustix 0.38.15", ] [[package]] @@ -5402,20 +5940,26 @@ ] [[package]] -name = "memory_units" -version = "0.4.0" +name = "merlin" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" +checksum = "4e261cf0f8b3c42ded9f7d2bb59dea03aa52bc8a1cbc7482f9fc3fd1229d3b42" +dependencies = [ + "byteorder", + "keccak", + "rand_core 0.5.1", + "zeroize", +] [[package]] name = "merlin" -version = "2.0.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e261cf0f8b3c42ded9f7d2bb59dea03aa52bc8a1cbc7482f9fc3fd1229d3b42" +checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" dependencies = [ "byteorder", "keccak", - "rand_core 0.5.1", + "rand_core 0.6.4", "zeroize", ] @@ -5459,7 +6003,7 @@ [[package]] name = "mmr-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "futures", "log", @@ -5478,7 +6022,7 @@ [[package]] name = "mmr-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "anyhow", "jsonrpsee", @@ -5529,7 +6073,7 @@ "data-encoding", "log", "multibase", - "multihash 0.17.0", + "multihash", "percent-encoding", "serde", "static_assertions", @@ -5550,9 +6094,9 @@ [[package]] name = "multihash" -version = "0.16.3" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c346cf9999c631f002d8f977c4eaeaa0e6386f16007202308d0b3757522c2cc" +checksum = "835d6ff01d610179fbce3de1694d007e500bf33a7f29689838941d6bf783ae40" dependencies = [ "blake2b_simd", "blake2s_simd", @@ -5560,25 +6104,12 @@ "core2", "digest 0.10.7", "multihash-derive", - "sha2 0.10.7", + "sha2 0.10.8", "sha3 0.10.8", "unsigned-varint", ] [[package]] -name = "multihash" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "835d6ff01d610179fbce3de1694d007e500bf33a7f29689838941d6bf783ae40" -dependencies = [ - "core2", - "digest 0.10.7", - "multihash-derive", - "sha2 0.10.7", - "unsigned-varint", -] - -[[package]] name = "multihash-derive" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -5733,6 +6264,18 @@ ] [[package]] +name = "no-std-net" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43794a0ace135be66a25d3ae77d41b91615fb68ae937f904090203e81f755b65" + +[[package]] +name = "nodrop" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" + +[[package]] name = "nohash-hasher" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -5756,9 +6299,9 @@ [[package]] name = "num-bigint" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" dependencies = [ "autocfg", "num-integer", @@ -5821,49 +6364,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.3.2", + "hermit-abi 0.3.3", "libc", ] [[package]] name = "num_enum" -version = "0.5.11" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" -dependencies = [ - "num_enum_derive 0.5.11", -] - -[[package]] -name = "num_enum" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1" +checksum = "70bf6736f74634d299d00086f02986875b3c2d924781a6a2cb6c201e73da0ceb" dependencies = [ - "num_enum_derive 0.6.1", -] - -[[package]] -name = "num_enum_derive" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.6.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" +checksum = "56ea360eafe1022f7cc56cd7b869ed57330fb2453d0c7831d99b74c65d2f5597" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] @@ -5886,9 +6409,9 @@ [[package]] name = "object" -version = "0.31.1" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" +checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" dependencies = [ "memchr", ] @@ -5919,7 +6442,7 @@ [[package]] name = "opal-runtime" -version = "0.9.43" +version = "1.1.0" dependencies = [ "app-promotion-rpc", "cumulus-pallet-aura-ext", @@ -5945,7 +6468,7 @@ "hex-literal", "impl-trait-for-tuples", "log", - "num_enum 0.5.11", + "num_enum", "orml-tokens", "orml-traits", "orml-vesting", @@ -5993,12 +6516,11 @@ "pallet-transaction-payment-rpc-runtime-api", "pallet-treasury", "pallet-unique", - "pallet-unique-scheduler-v2", "pallet-utility", "pallet-xcm", "parachain-info", "parity-scale-codec", - "polkadot-parachain", + "polkadot-parachain-primitives", "precompile-utils-macro", "scale-info", "serde", @@ -6016,15 +6538,15 @@ "sp-std", "sp-transaction-pool", "sp-version", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", "substrate-wasm-builder", "up-common", "up-data-structs", "up-pov-estimate-rpc", "up-rpc", "up-sponsorship", - "xcm", - "xcm-builder", - "xcm-executor", ] [[package]] @@ -6069,7 +6591,7 @@ checksum = "2871aadd82a2c216ee68a69837a526dfe788ecbe74c4c5038a6acdbff6653066" dependencies = [ "expander 0.0.6", - "itertools", + "itertools 0.10.5", "petgraph", "proc-macro-crate", "proc-macro2", @@ -6089,10 +6611,11 @@ [[package]] name = "orml-tokens" version = "0.4.1-dev" -source = "git+https://github.com/open-web3-stack/open-runtime-module-library?branch=polkadot-v0.9.43#28a2e6f0df9540d91db4018c7ecebb8bfc217a2a" +source = "git+https://github.com/moonbeam-foundation/open-runtime-module-library?branch=upgrade-to-polkadot-v1.1.0#26b6fd59ab71429604a81c99ac093d20982c5459" dependencies = [ "frame-support", "frame-system", + "log", "orml-traits", "parity-scale-codec", "scale-info", @@ -6105,31 +6628,33 @@ [[package]] name = "orml-traits" version = "0.4.1-dev" -source = "git+https://github.com/open-web3-stack/open-runtime-module-library?branch=polkadot-v0.9.43#28a2e6f0df9540d91db4018c7ecebb8bfc217a2a" +source = "git+https://github.com/moonbeam-foundation/open-runtime-module-library?branch=upgrade-to-polkadot-v1.1.0#26b6fd59ab71429604a81c99ac093d20982c5459" dependencies = [ "frame-support", "impl-trait-for-tuples", "num-traits", "orml-utilities", "parity-scale-codec", + "paste", "scale-info", "serde", "sp-core", "sp-io", "sp-runtime", "sp-std", - "xcm", + "staging-xcm", ] [[package]] name = "orml-utilities" version = "0.4.1-dev" -source = "git+https://github.com/open-web3-stack/open-runtime-module-library?branch=polkadot-v0.9.43#28a2e6f0df9540d91db4018c7ecebb8bfc217a2a" +source = "git+https://github.com/moonbeam-foundation/open-runtime-module-library?branch=upgrade-to-polkadot-v1.1.0#26b6fd59ab71429604a81c99ac093d20982c5459" dependencies = [ "frame-support", "parity-scale-codec", "scale-info", "serde", + "sp-core", "sp-io", "sp-runtime", "sp-std", @@ -6138,7 +6663,7 @@ [[package]] name = "orml-vesting" version = "0.4.1-dev" -source = "git+https://github.com/open-web3-stack/open-runtime-module-library?branch=polkadot-v0.9.43#28a2e6f0df9540d91db4018c7ecebb8bfc217a2a" +source = "git+https://github.com/moonbeam-foundation/open-runtime-module-library?branch=upgrade-to-polkadot-v1.1.0#26b6fd59ab71429604a81c99ac093d20982c5459" dependencies = [ "frame-support", "frame-system", @@ -6153,25 +6678,26 @@ [[package]] name = "orml-xcm-support" version = "0.4.1-dev" -source = "git+https://github.com/open-web3-stack/open-runtime-module-library?branch=polkadot-v0.9.43#28a2e6f0df9540d91db4018c7ecebb8bfc217a2a" +source = "git+https://github.com/moonbeam-foundation/open-runtime-module-library?branch=upgrade-to-polkadot-v1.1.0#26b6fd59ab71429604a81c99ac093d20982c5459" dependencies = [ "frame-support", "orml-traits", "parity-scale-codec", "sp-runtime", "sp-std", - "xcm", - "xcm-executor", + "staging-xcm", + "staging-xcm-executor", ] [[package]] name = "orml-xtokens" version = "0.4.1-dev" -source = "git+https://github.com/open-web3-stack/open-runtime-module-library?branch=polkadot-v0.9.43#28a2e6f0df9540d91db4018c7ecebb8bfc217a2a" +source = "git+https://github.com/moonbeam-foundation/open-runtime-module-library?branch=upgrade-to-polkadot-v1.1.0#26b6fd59ab71429604a81c99ac093d20982c5459" dependencies = [ "cumulus-primitives-core", "frame-support", "frame-system", + "log", "orml-traits", "orml-xcm-support", "pallet-xcm", @@ -6181,8 +6707,8 @@ "sp-io", "sp-runtime", "sp-std", - "xcm", - "xcm-executor", + "staging-xcm", + "staging-xcm-executor", ] [[package]] @@ -6193,7 +6719,7 @@ dependencies = [ "ecdsa 0.14.8", "elliptic-curve 0.12.3", - "sha2 0.10.7", + "sha2 0.10.8", ] [[package]] @@ -6204,17 +6730,7 @@ dependencies = [ "ecdsa 0.14.8", "elliptic-curve 0.12.3", - "sha2 0.10.7", -] - -[[package]] -name = "packed_simd_2" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1914cd452d8fccd6f9db48147b29fd4ae05bea9dc5d9ad578509f72415de282" -dependencies = [ - "cfg-if", - "libm 0.1.4", + "sha2 0.10.8", ] [[package]] @@ -6242,10 +6758,11 @@ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-support", "frame-system", + "log", "pallet-timestamp", "parity-scale-codec", "scale-info", @@ -6258,7 +6775,7 @@ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-support", "frame-system", @@ -6274,7 +6791,7 @@ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-support", "frame-system", @@ -6288,7 +6805,7 @@ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6312,8 +6829,10 @@ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ + "aquamarine", + "docify", "frame-benchmarking", "frame-election-provider-support", "frame-support", @@ -6332,7 +6851,7 @@ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6368,7 +6887,7 @@ [[package]] name = "pallet-base-fee" version = "1.0.0" -source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.43#3ae25048cce709349b242e8ad3c54ada2b321564" +source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v1.1.0#e99be6383ce0b0bc33768e479505cf4302dc0f8a" dependencies = [ "fp-evm", "frame-support", @@ -6382,10 +6901,11 @@ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-support", "frame-system", + "log", "pallet-authorship", "pallet-session", "parity-scale-codec", @@ -6401,9 +6921,9 @@ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ - "array-bytes 4.2.0", + "array-bytes", "binary-merkle-tree", "frame-support", "frame-system", @@ -6419,13 +6939,14 @@ "sp-core", "sp-io", "sp-runtime", + "sp-state-machine", "sp-std", ] [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6443,7 +6964,7 @@ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6488,7 +7009,7 @@ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6519,6 +7040,7 @@ "sp-core", "sp-runtime", "sp-std", + "sp-weights", "up-data-structs", "up-pov-estimate-rpc", ] @@ -6532,21 +7054,23 @@ "frame-support", "frame-system", "hex-literal", + "log", "parity-scale-codec", "scale-info", "smallvec", "sp-arithmetic", "sp-core", "sp-io", + "sp-runtime", "sp-std", + "staging-xcm", "up-common", - "xcm", ] [[package]] name = "pallet-conviction-voting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "assert_matches", "frame-benchmarking", @@ -6563,7 +7087,7 @@ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6581,7 +7105,7 @@ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6604,7 +7128,7 @@ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6612,12 +7136,13 @@ "parity-scale-codec", "sp-npos-elections", "sp-runtime", + "sp-std", ] [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6629,13 +7154,14 @@ "sp-io", "sp-npos-elections", "sp-runtime", + "sp-staking", "sp-std", ] [[package]] name = "pallet-ethereum" version = "4.0.0-dev" -source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.43#3ae25048cce709349b242e8ad3c54ada2b321564" +source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v1.1.0#e99be6383ce0b0bc33768e479505cf4302dc0f8a" dependencies = [ "ethereum", "ethereum-types", @@ -6658,7 +7184,7 @@ [[package]] name = "pallet-evm" version = "6.0.0-dev" -source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.43#3ae25048cce709349b242e8ad3c54ada2b321564" +source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v1.1.0#e99be6383ce0b0bc33768e479505cf4302dc0f8a" dependencies = [ "environmental", "evm", @@ -6667,6 +7193,7 @@ "frame-benchmarking", "frame-support", "frame-system", + "hash-db 0.16.0", "hex", "hex-literal", "impl-trait-for-tuples", @@ -6696,6 +7223,7 @@ "scale-info", "sp-core", "sp-std", + "sp-weights", "spez", "up-data-structs", ] @@ -6738,7 +7266,7 @@ [[package]] name = "pallet-evm-precompile-simple" version = "2.0.0-dev" -source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v0.9.43#3ae25048cce709349b242e8ad3c54ada2b321564" +source = "git+https://github.com/uniquenetwork/unique-frontier?branch=unique-polkadot-v1.1.0#e99be6383ce0b0bc33768e479505cf4302dc0f8a" dependencies = [ "fp-evm", "ripemd", @@ -6764,8 +7292,9 @@ [[package]] name = "pallet-fast-unstake" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ + "docify", "frame-benchmarking", "frame-election-provider-support", "frame-support", @@ -6796,9 +7325,9 @@ "serde", "sp-runtime", "sp-std", + "staging-xcm", + "staging-xcm-executor", "up-data-structs", - "xcm", - "xcm-executor", ] [[package]] @@ -6834,7 +7363,7 @@ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6874,7 +7403,7 @@ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "enumflags2", "frame-benchmarking", @@ -6890,7 +7419,7 @@ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6910,7 +7439,7 @@ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6950,13 +7479,14 @@ "parity-scale-codec", "scale-info", "sp-core", + "sp-runtime", "sp-std", ] [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6973,7 +7503,7 @@ [[package]] name = "pallet-message-queue" version = "7.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -6992,11 +7522,12 @@ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", + "log", "parity-scale-codec", "scale-info", "sp-core", @@ -7009,7 +7540,7 @@ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -7025,7 +7556,7 @@ [[package]] name = "pallet-nis" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -7041,11 +7572,12 @@ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-support", "frame-system", "log", + "pallet-balances", "parity-scale-codec", "scale-info", "sp-core", @@ -7053,12 +7585,13 @@ "sp-runtime", "sp-staking", "sp-std", + "sp-tracing", ] [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -7078,7 +7611,7 @@ [[package]] name = "pallet-nomination-pools-runtime-api" version = "1.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "pallet-nomination-pools", "parity-scale-codec", @@ -7110,7 +7643,7 @@ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-support", "frame-system", @@ -7127,7 +7660,7 @@ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -7151,7 +7684,7 @@ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -7168,7 +7701,7 @@ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -7183,7 +7716,7 @@ [[package]] name = "pallet-ranked-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -7201,7 +7734,7 @@ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -7216,7 +7749,7 @@ [[package]] name = "pallet-referenda" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "assert_matches", "frame-benchmarking", @@ -7255,8 +7788,9 @@ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ + "docify", "frame-benchmarking", "frame-support", "frame-system", @@ -7272,7 +7806,7 @@ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-support", "frame-system", @@ -7286,6 +7820,7 @@ "sp-runtime", "sp-session", "sp-staking", + "sp-state-machine", "sp-std", "sp-trie", ] @@ -7293,13 +7828,14 @@ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "pallet-session", "pallet-staking", + "parity-scale-codec", "rand 0.8.5", "sp-runtime", "sp-session", @@ -7309,13 +7845,17 @@ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ + "frame-benchmarking", "frame-support", "frame-system", + "log", "parity-scale-codec", "rand_chacha 0.2.2", "scale-info", + "sp-arithmetic", + "sp-io", "sp-runtime", "sp-std", ] @@ -7323,7 +7863,7 @@ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -7346,18 +7886,18 @@ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "log", "sp-arithmetic", @@ -7366,7 +7906,7 @@ [[package]] name = "pallet-staking-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "parity-scale-codec", "sp-api", @@ -7375,7 +7915,7 @@ [[package]] name = "pallet-state-trie-migration" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -7401,6 +7941,7 @@ "pallet-evm", "parity-scale-codec", "scale-info", + "sp-runtime", "sp-std", "up-data-structs", ] @@ -7408,7 +7949,7 @@ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -7423,7 +7964,7 @@ [[package]] name = "pallet-template-transaction-payment" version = "3.0.0" -source = "git+https://github.com/uniquenetwork/pallet-sponsoring?branch=polkadot-v0.9.43#bd6e4a2a97b1415c22f96512b857d9615cbe2f81" +source = "git+https://github.com/uniquenetwork/pallet-sponsoring?branch=polkadot-v1.1.0#2fbec92640f517e4812be7ed61ef7691af6e0bba" dependencies = [ "frame-benchmarking", "frame-support", @@ -7446,16 +7987,16 @@ dependencies = [ "frame-support", "frame-system", - "pallet-unique-scheduler-v2", "parity-scale-codec", "scale-info", + "sp-runtime", "sp-std", ] [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -7467,13 +8008,14 @@ "sp-io", "sp-runtime", "sp-std", + "sp-storage", "sp-timestamp", ] [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -7492,7 +8034,7 @@ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-support", "frame-system", @@ -7508,7 +8050,7 @@ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -7524,7 +8066,7 @@ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -7536,7 +8078,7 @@ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -7573,30 +8115,12 @@ "sp-runtime", "sp-std", "up-data-structs", -] - -[[package]] -name = "pallet-unique-scheduler-v2" -version = "0.1.0" -dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "pallet-preimage", - "parity-scale-codec", - "scale-info", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", - "substrate-test-utils", ] [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -7612,7 +8136,7 @@ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -7627,7 +8151,7 @@ [[package]] name = "pallet-whitelist" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -7641,8 +8165,8 @@ [[package]] name = "pallet-xcm" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "bounded-collections", "frame-benchmarking", @@ -7656,14 +8180,14 @@ "sp-io", "sp-runtime", "sp-std", - "xcm", - "xcm-executor", + "staging-xcm", + "staging-xcm-executor", ] [[package]] name = "pallet-xcm-benchmarks" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-benchmarking", "frame-support", @@ -7674,28 +8198,30 @@ "sp-io", "sp-runtime", "sp-std", - "xcm", - "xcm-builder", - "xcm-executor", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", ] [[package]] name = "parachain-info" version = "0.1.0" -source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.43#b8999fce0f61fb757f9e57e326cda48e70137019" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "cumulus-primitives-core", "frame-support", "frame-system", "parity-scale-codec", "scale-info", + "sp-runtime", + "sp-std", ] [[package]] name = "parity-db" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78f19d20a0d2cc52327a88d131fa1c4ea81ea4a04714aedcfeca2dd410049cf8" +checksum = "ab512a34b3c2c5e465731cc7668edf79208bbe520be03484eeb05e63ed221735" dependencies = [ "blake2", "crc32fast", @@ -7713,9 +8239,9 @@ [[package]] name = "parity-scale-codec" -version = "3.6.4" +version = "3.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8e946cc0cc711189c0b0249fb8b599cbeeab9784d83c415719368bb8d4ac64" +checksum = "0dec8a8073036902368c2cdc0387e85ff9a37054d7e7c98e592145e0c92cd4fb" dependencies = [ "arrayvec 0.7.4", "bitvec", @@ -7728,9 +8254,9 @@ [[package]] name = "parity-scale-codec-derive" -version = "3.6.4" +version = "3.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a296c3079b5fefbc499e1de58dc26c09b1b9a5952d26694ee89f04a43ebbb3e" +checksum = "312270ee71e1cd70289dacf597cab7b207aa107d2f28191c2ae45b2ece18a260" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -7752,9 +8278,9 @@ [[package]] name = "parking" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14f2252c834a40ed9bb5422029649578e63aa341ac401f74e719dd1afda8394e" +checksum = "e52c774a4c39359c1d1c52e43f73dd91a75a614652c825408eec30c95a9b2067" [[package]] name = "parking_lot" @@ -7801,7 +8327,7 @@ "libc", "redox_syscall 0.3.5", "smallvec", - "windows-targets 0.48.2", + "windows-targets 0.48.5", ] [[package]] @@ -7835,6 +8361,15 @@ ] [[package]] +name = "pbkdf2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest 0.10.7", +] + +[[package]] name = "peeking_take_while" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -7866,19 +8401,20 @@ [[package]] name = "pest" -version = "2.7.2" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1acb4a4365a13f749a93f1a094a7805e5cfa0955373a9de860d962eaa3a5fe5a" +checksum = "c022f1e7b65d6a24c0dbbd5fb344c66881bc01f3e5ae74a1c8100f2f985d98a4" dependencies = [ + "memchr", "thiserror", "ucd-trie", ] [[package]] name = "pest_derive" -version = "2.7.2" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "666d00490d4ac815001da55838c500eafb0320019bbaa44444137c48b443a853" +checksum = "35513f630d46400a977c4cb58f78e1bfbe01434316e60c37d27b9ad6139c66d8" dependencies = [ "pest", "pest_generator", @@ -7886,36 +8422,36 @@ [[package]] name = "pest_generator" -version = "2.7.2" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ca01446f50dbda87c1786af8770d535423fa8a53aec03b8f4e3d7eb10e0929" +checksum = "bc9fc1b9e7057baba189b5c626e2d6f40681ae5b6eb064dc7c7834101ec8123a" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] name = "pest_meta" -version = "2.7.2" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56af0a30af74d0445c0bf6d9d051c979b516a1a5af790d251daee76005420a48" +checksum = "1df74e9e7ec4053ceb980e7c0c8bd3594e977fde1af91daba9c928e8e8c6708d" dependencies = [ "once_cell", "pest", - "sha2 0.10.7", + "sha2 0.10.8", ] [[package]] name = "petgraph" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4" +checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" dependencies = [ "fixedbitset", - "indexmap 1.9.3", + "indexmap 2.0.2", ] [[package]] @@ -7935,7 +8471,7 @@ dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] @@ -7946,9 +8482,9 @@ [[package]] name = "pin-project-lite" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12cc1b0bf1727a77a54b6654e7b5f1af8604923edc8b81885f8ec92f9e3f0a05" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" [[package]] name = "pin-utils" @@ -7957,6 +8493,17 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] +name = "piper" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +dependencies = [ + "atomic-waker", + "fastrand 2.0.1", + "futures-io", +] + +[[package]] name = "pkcs8" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -7984,27 +8531,23 @@ [[package]] name = "platforms" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8d0eef3571242013a0d5dc84861c3ae4a652e56e12adf8bdc26ff5f8cb34c94" - -[[package]] -name = "platforms" -version = "3.0.2" +version = "3.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d7ddaed09e0eb771a79ab0fd64609ba0afb0a8366421957936ad14cbd13630" +checksum = "4503fa043bf02cee09a9582e9554b4c6403b2ef55e4612e96561d294419429f8" [[package]] name = "polkadot-approval-distribution" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "futures", + "futures-timer", "polkadot-node-jaeger", "polkadot-node-metrics", "polkadot-node-network-protocol", "polkadot-node-primitives", "polkadot-node-subsystem", + "polkadot-node-subsystem-util", "polkadot-primitives", "rand 0.8.5", "tracing-gum", @@ -8012,10 +8555,12 @@ [[package]] name = "polkadot-availability-bitfield-distribution" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ + "always-assert", "futures", + "futures-timer", "polkadot-node-network-protocol", "polkadot-node-subsystem", "polkadot-node-subsystem-util", @@ -8026,13 +8571,12 @@ [[package]] name = "polkadot-availability-distribution" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "derive_more", "fatality", "futures", - "lru 0.9.0", "parity-scale-codec", "polkadot-erasure-coding", "polkadot-node-network-protocol", @@ -8041,6 +8585,7 @@ "polkadot-node-subsystem-util", "polkadot-primitives", "rand 0.8.5", + "schnellru", "sp-core", "sp-keystore", "thiserror", @@ -8049,12 +8594,11 @@ [[package]] name = "polkadot-availability-recovery" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "fatality", "futures", - "lru 0.9.0", "parity-scale-codec", "polkadot-erasure-coding", "polkadot-node-network-protocol", @@ -8064,21 +8608,20 @@ "polkadot-primitives", "rand 0.8.5", "sc-network", + "schnellru", "thiserror", "tracing-gum", ] [[package]] name = "polkadot-cli" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "clap", "frame-benchmarking-cli", "futures", "log", - "polkadot-client", - "polkadot-node-core-pvf-worker", "polkadot-node-metrics", "polkadot-performance-test", "polkadot-service", @@ -8095,56 +8638,13 @@ "substrate-build-script-utils", "thiserror", "try-runtime-cli", -] - -[[package]] -name = "polkadot-client" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" -dependencies = [ - "async-trait", - "frame-benchmarking", - "frame-benchmarking-cli", - "frame-system", - "frame-system-rpc-runtime-api", - "futures", - "pallet-transaction-payment", - "pallet-transaction-payment-rpc-runtime-api", - "polkadot-core-primitives", - "polkadot-node-core-parachains-inherent", - "polkadot-primitives", - "polkadot-runtime", - "polkadot-runtime-common", - "sc-client-api", - "sc-consensus", - "sc-executor", - "sc-service", - "sp-api", - "sp-authority-discovery", - "sp-block-builder", - "sp-blockchain", - "sp-consensus", - "sp-consensus-babe", - "sp-consensus-beefy", - "sp-consensus-grandpa", - "sp-core", - "sp-inherents", - "sp-keyring", - "sp-mmr-primitives", - "sp-offchain", - "sp-runtime", - "sp-session", - "sp-storage", - "sp-timestamp", - "sp-transaction-pool", ] [[package]] name = "polkadot-collator-protocol" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ - "always-assert", "bitvec", "fatality", "futures", @@ -8158,13 +8658,14 @@ "sp-keystore", "sp-runtime", "thiserror", + "tokio-util", "tracing-gum", ] [[package]] name = "polkadot-core-primitives" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "parity-scale-codec", "scale-info", @@ -8175,15 +8676,14 @@ [[package]] name = "polkadot-dispute-distribution" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "derive_more", "fatality", "futures", "futures-timer", "indexmap 1.9.3", - "lru 0.9.0", "parity-scale-codec", "polkadot-erasure-coding", "polkadot-node-network-protocol", @@ -8192,6 +8692,7 @@ "polkadot-node-subsystem-util", "polkadot-primitives", "sc-network", + "schnellru", "sp-application-crypto", "sp-keystore", "thiserror", @@ -8200,8 +8701,8 @@ [[package]] name = "polkadot-erasure-coding" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -8214,8 +8715,8 @@ [[package]] name = "polkadot-gossip-support" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "futures", "futures-timer", @@ -8226,6 +8727,7 @@ "rand 0.8.5", "rand_chacha 0.3.1", "sc-network", + "sc-network-common", "sp-application-crypto", "sp-core", "sp-keystore", @@ -8234,8 +8736,8 @@ [[package]] name = "polkadot-network-bridge" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "always-assert", "async-trait", @@ -8257,8 +8759,8 @@ [[package]] name = "polkadot-node-collation-generation" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "futures", "parity-scale-codec", @@ -8275,16 +8777,15 @@ [[package]] name = "polkadot-node-core-approval-voting" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "bitvec", "derive_more", "futures", "futures-timer", "kvdb", - "lru 0.9.0", - "merlin", + "merlin 2.0.1", "parity-scale-codec", "polkadot-node-jaeger", "polkadot-node-primitives", @@ -8293,7 +8794,8 @@ "polkadot-overseer", "polkadot-primitives", "sc-keystore", - "schnorrkel", + "schnellru", + "schnorrkel 0.9.1", "sp-application-crypto", "sp-consensus", "sp-consensus-slots", @@ -8304,8 +8806,8 @@ [[package]] name = "polkadot-node-core-av-store" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "bitvec", "futures", @@ -8313,6 +8815,7 @@ "kvdb", "parity-scale-codec", "polkadot-erasure-coding", + "polkadot-node-jaeger", "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-node-subsystem-util", @@ -8325,8 +8828,8 @@ [[package]] name = "polkadot-node-core-backing" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "bitvec", "fatality", @@ -8344,8 +8847,8 @@ [[package]] name = "polkadot-node-core-bitfield-signing" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "futures", "polkadot-node-subsystem", @@ -8359,8 +8862,8 @@ [[package]] name = "polkadot-node-core-candidate-validation" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "async-trait", "futures", @@ -8371,7 +8874,8 @@ "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-node-subsystem-util", - "polkadot-parachain", + "polkadot-overseer", + "polkadot-parachain-primitives", "polkadot-primitives", "sp-maybe-compressed-blob", "tracing-gum", @@ -8379,8 +8883,8 @@ [[package]] name = "polkadot-node-core-chain-api" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "futures", "polkadot-node-metrics", @@ -8394,8 +8898,8 @@ [[package]] name = "polkadot-node-core-chain-selection" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "futures", "futures-timer", @@ -8411,27 +8915,27 @@ [[package]] name = "polkadot-node-core-dispute-coordinator" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "fatality", "futures", "kvdb", - "lru 0.9.0", "parity-scale-codec", "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-node-subsystem-util", "polkadot-primitives", "sc-keystore", + "schnellru", "thiserror", "tracing-gum", ] [[package]] name = "polkadot-node-core-parachains-inherent" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "async-trait", "futures", @@ -8446,9 +8950,26 @@ ] [[package]] +name = "polkadot-node-core-prospective-parachains" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "bitvec", + "fatality", + "futures", + "parity-scale-codec", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-primitives", + "thiserror", + "tracing-gum", +] + +[[package]] name = "polkadot-node-core-provisioner" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "bitvec", "fatality", @@ -8458,15 +8979,14 @@ "polkadot-node-subsystem", "polkadot-node-subsystem-util", "polkadot-primitives", - "rand 0.8.5", "thiserror", "tracing-gum", ] [[package]] name = "polkadot-node-core-pvf" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "always-assert", "futures", @@ -8475,25 +8995,26 @@ "parity-scale-codec", "pin-project", "polkadot-core-primitives", + "polkadot-node-core-pvf-common", "polkadot-node-metrics", "polkadot-node-primitives", - "polkadot-parachain", + "polkadot-parachain-primitives", "polkadot-primitives", "rand 0.8.5", "slotmap", "sp-core", "sp-maybe-compressed-blob", - "sp-tracing", "sp-wasm-interface", "substrate-build-script-utils", + "tempfile", "tokio", "tracing-gum", ] [[package]] name = "polkadot-node-core-pvf-checker" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "futures", "polkadot-node-primitives", @@ -8507,29 +9028,46 @@ ] [[package]] -name = "polkadot-node-core-pvf-worker" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +name = "polkadot-node-core-pvf-common" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ - "assert_matches", "cpu-time", "futures", + "landlock", "libc", "parity-scale-codec", - "polkadot-node-core-pvf", - "polkadot-parachain", + "polkadot-parachain-primitives", "polkadot-primitives", - "rayon", "sc-executor", "sc-executor-common", "sc-executor-wasmtime", "sp-core", "sp-externalities", "sp-io", + "sp-tracing", + "tokio", + "tracing-gum", +] + +[[package]] +name = "polkadot-node-core-pvf-prepare-worker" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "futures", + "libc", + "parity-scale-codec", + "polkadot-node-core-pvf-common", + "polkadot-parachain-primitives", + "polkadot-primitives", + "rayon", + "sc-executor", + "sc-executor-common", + "sc-executor-wasmtime", + "sp-io", "sp-maybe-compressed-blob", "sp-tracing", - "substrate-build-script-utils", - "tempfile", "tikv-jemalloc-ctl", "tokio", "tracing-gum", @@ -8537,23 +9075,23 @@ [[package]] name = "polkadot-node-core-runtime-api" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "futures", - "lru 0.9.0", "polkadot-node-metrics", "polkadot-node-subsystem", "polkadot-node-subsystem-types", "polkadot-primitives", + "schnellru", "sp-consensus-babe", "tracing-gum", ] [[package]] name = "polkadot-node-jaeger" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "lazy_static", "log", @@ -8570,10 +9108,10 @@ [[package]] name = "polkadot-node-metrics" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ - "bs58", + "bs58 0.5.0", "futures", "futures-timer", "log", @@ -8589,11 +9127,12 @@ [[package]] name = "polkadot-node-network-protocol" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "async-channel", "async-trait", + "bitvec", "derive_more", "fatality", "futures", @@ -8612,15 +9151,15 @@ [[package]] name = "polkadot-node-primitives" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "bounded-vec", "futures", "parity-scale-codec", - "polkadot-parachain", + "polkadot-parachain-primitives", "polkadot-primitives", - "schnorrkel", + "schnorrkel 0.9.1", "serde", "sp-application-crypto", "sp-consensus-babe", @@ -8629,13 +9168,13 @@ "sp-maybe-compressed-blob", "sp-runtime", "thiserror", - "zstd 0.11.2+zstd.1.5.2", + "zstd 0.12.4", ] [[package]] name = "polkadot-node-subsystem" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -8644,8 +9183,8 @@ [[package]] name = "polkadot-node-subsystem-types" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "async-trait", "derive_more", @@ -8657,6 +9196,7 @@ "polkadot-primitives", "polkadot-statement-table", "sc-network", + "sc-transaction-pool-api", "smallvec", "sp-api", "sp-authority-discovery", @@ -8667,17 +9207,16 @@ [[package]] name = "polkadot-node-subsystem-util" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "async-trait", "derive_more", "fatality", "futures", "futures-channel", - "itertools", + "itertools 0.10.5", "kvdb", - "lru 0.9.0", "parity-db", "parity-scale-codec", "parking_lot 0.11.2", @@ -8691,6 +9230,7 @@ "polkadot-primitives", "prioritized-metered-channel", "rand 0.8.5", + "schnellru", "sp-application-crypto", "sp-core", "sp-keystore", @@ -8700,13 +9240,12 @@ [[package]] name = "polkadot-overseer" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "async-trait", "futures", "futures-timer", - "lru 0.9.0", "orchestra", "parking_lot 0.12.1", "polkadot-node-metrics", @@ -8715,6 +9254,7 @@ "polkadot-node-subsystem-types", "polkadot-primitives", "sc-client-api", + "schnellru", "sp-api", "sp-core", "tikv-jemalloc-ctl", @@ -8722,9 +9262,9 @@ ] [[package]] -name = "polkadot-parachain" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +name = "polkadot-parachain-primitives" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "bounded-collections", "derive_more", @@ -8740,32 +9280,32 @@ [[package]] name = "polkadot-performance-test" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "env_logger 0.9.3", - "kusama-runtime", "log", "polkadot-erasure-coding", - "polkadot-node-core-pvf-worker", + "polkadot-node-core-pvf-prepare-worker", "polkadot-node-primitives", "polkadot-primitives", "quote", "sc-executor-common", "sp-maybe-compressed-blob", + "staging-kusama-runtime", "thiserror", ] [[package]] name = "polkadot-primitives" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "bitvec", "hex-literal", "parity-scale-codec", "polkadot-core-primitives", - "polkadot-parachain", + "polkadot-parachain-primitives", "scale-info", "serde", "sp-api", @@ -8784,8 +9324,8 @@ [[package]] name = "polkadot-rpc" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "jsonrpsee", "mmr-rpc", @@ -8816,8 +9356,8 @@ [[package]] name = "polkadot-runtime" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "bitvec", "frame-benchmarking", @@ -8845,7 +9385,7 @@ "pallet-elections-phragmen", "pallet-fast-unstake", "pallet-grandpa", - "pallet-identity 4.0.0-dev (git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43)", + "pallet-identity 4.0.0-dev (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", "pallet-im-online", "pallet-indices", "pallet-membership", @@ -8874,6 +9414,7 @@ "pallet-vesting", "pallet-whitelist", "pallet-xcm", + "pallet-xcm-benchmarks", "parity-scale-codec", "polkadot-primitives", "polkadot-runtime-common", @@ -8900,19 +9441,20 @@ "sp-session", "sp-staking", "sp-std", + "sp-storage", "sp-transaction-pool", "sp-version", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", "static_assertions", "substrate-wasm-builder", - "xcm", - "xcm-builder", - "xcm-executor", ] [[package]] name = "polkadot-runtime-common" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "bitvec", "frame-benchmarking", @@ -8951,14 +9493,14 @@ "sp-session", "sp-staking", "sp-std", + "staging-xcm", "static_assertions", - "xcm", ] [[package]] name = "polkadot-runtime-constants" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-support", "polkadot-primitives", @@ -8971,10 +9513,11 @@ [[package]] name = "polkadot-runtime-metrics" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ - "bs58", + "bs58 0.5.0", + "frame-benchmarking", "parity-scale-codec", "polkadot-primitives", "sp-std", @@ -8983,8 +9526,8 @@ [[package]] name = "polkadot-runtime-parachains" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "bitflags 1.3.2", "bitvec", @@ -8992,6 +9535,7 @@ "frame-benchmarking", "frame-support", "frame-system", + "impl-trait-for-tuples", "log", "pallet-authority-discovery", "pallet-authorship", @@ -9003,7 +9547,7 @@ "pallet-timestamp", "pallet-vesting", "parity-scale-codec", - "polkadot-parachain", + "polkadot-parachain-primitives", "polkadot-primitives", "polkadot-runtime-metrics", "rand 0.8.5", @@ -9021,39 +9565,42 @@ "sp-session", "sp-staking", "sp-std", + "staging-xcm", + "staging-xcm-executor", "static_assertions", - "xcm", - "xcm-executor", ] [[package]] name = "polkadot-service" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "async-trait", + "frame-benchmarking", "frame-benchmarking-cli", "frame-support", + "frame-system", "frame-system-rpc-runtime-api", "futures", "hex-literal", - "kusama-runtime", + "is_executable", "kvdb", "kvdb-rocksdb", "log", - "lru 0.9.0", "mmr-gadget", "pallet-babe", "pallet-im-online", "pallet-staking", + "pallet-transaction-payment", "pallet-transaction-payment-rpc-runtime-api", "parity-db", + "parity-scale-codec", "polkadot-approval-distribution", "polkadot-availability-bitfield-distribution", "polkadot-availability-distribution", "polkadot-availability-recovery", - "polkadot-client", "polkadot-collator-protocol", + "polkadot-core-primitives", "polkadot-dispute-distribution", "polkadot-gossip-support", "polkadot-network-bridge", @@ -9067,7 +9614,9 @@ "polkadot-node-core-chain-selection", "polkadot-node-core-dispute-coordinator", "polkadot-node-core-parachains-inherent", + "polkadot-node-core-prospective-parachains", "polkadot-node-core-provisioner", + "polkadot-node-core-pvf", "polkadot-node-core-pvf-checker", "polkadot-node-core-runtime-api", "polkadot-node-network-protocol", @@ -9076,11 +9625,11 @@ "polkadot-node-subsystem-types", "polkadot-node-subsystem-util", "polkadot-overseer", - "polkadot-parachain", + "polkadot-parachain-primitives", "polkadot-primitives", "polkadot-rpc", "polkadot-runtime", - "polkadot-runtime-constants", + "polkadot-runtime-common", "polkadot-runtime-parachains", "polkadot-statement-distribution", "rococo-runtime", @@ -9106,6 +9655,8 @@ "sc-sysinfo", "sc-telemetry", "sc-transaction-pool", + "sc-transaction-pool-api", + "schnellru", "serde", "serde_json", "sp-api", @@ -9119,6 +9670,7 @@ "sp-core", "sp-inherents", "sp-io", + "sp-keyring", "sp-keystore", "sp-mmr-primitives", "sp-offchain", @@ -9128,7 +9680,9 @@ "sp-storage", "sp-timestamp", "sp-transaction-pool", - "sp-trie", + "sp-version", + "sp-weights", + "staging-kusama-runtime", "substrate-prometheus-endpoint", "thiserror", "tracing-gum", @@ -9137,17 +9691,20 @@ [[package]] name = "polkadot-statement-distribution" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ - "arrayvec 0.5.2", + "arrayvec 0.7.4", + "bitvec", "fatality", "futures", + "futures-timer", "indexmap 1.9.3", "parity-scale-codec", "polkadot-node-network-protocol", "polkadot-node-primitives", "polkadot-node-subsystem", + "polkadot-node-subsystem-types", "polkadot-node-subsystem-util", "polkadot-primitives", "sp-keystore", @@ -9158,8 +9715,8 @@ [[package]] name = "polkadot-statement-table" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -9178,7 +9735,7 @@ "concurrent-queue", "libc", "log", - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", "windows-sys 0.48.0", ] @@ -9194,6 +9751,17 @@ ] [[package]] +name = "poly1305" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +dependencies = [ + "cpufeatures", + "opaque-debug 0.3.0", + "universal-hash 0.5.1", +] + +[[package]] name = "polyval" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -9219,9 +9787,9 @@ [[package]] name = "portable-atomic" -version = "1.4.2" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f32154ba0af3a075eefa1eda8bb414ee928f62303a54ea85b8d6638ff1a6ee9e" +checksum = "31114a898e107c51bb1609ffaf55a0e011cf6a4d7f1170d0015a165082c0338b" [[package]] name = "ppv-lite86" @@ -9233,7 +9801,7 @@ name = "precompile-utils-macro" version = "0.1.0" dependencies = [ - "num_enum 0.5.11", + "num_enum", "proc-macro2", "quote", "sha3 0.8.2", @@ -9248,7 +9816,7 @@ dependencies = [ "difflib", "float-cmp", - "itertools", + "itertools 0.10.5", "normalize-line-endings", "predicates-core", "regex", @@ -9282,12 +9850,12 @@ [[package]] name = "prettyplease" -version = "0.2.12" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c64d9ba0963cdcea2e1b2230fbae2bab30eb25a174be395c41e764bfb65dd62" +checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d" dependencies = [ "proc-macro2", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] @@ -9355,21 +9923,27 @@ ] [[package]] +name = "proc-macro-hack" +version = "0.5.20+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" + +[[package]] name = "proc-macro-warning" -version = "0.3.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e99670bafb56b9a106419397343bdbc8b8742c3cc449fec6345f86173f47cd4" +checksum = "3d1eaa7fa0aa1929ffdf7eeb6eac234dde6268914a14ad44d23521ab6a9b258e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] name = "proc-macro2" -version = "1.0.66" +version = "1.0.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328" dependencies = [ "unicode-ident", ] @@ -9408,7 +9982,7 @@ dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] @@ -9429,7 +10003,7 @@ dependencies = [ "bytes", "heck", - "itertools", + "itertools 0.10.5", "lazy_static", "log", "multimap", @@ -9450,7 +10024,7 @@ checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" dependencies = [ "anyhow", - "itertools", + "itertools 0.10.5", "proc-macro2", "quote", "syn 1.0.109", @@ -9476,7 +10050,7 @@ [[package]] name = "quartz-runtime" -version = "0.9.43" +version = "1.1.0" dependencies = [ "app-promotion-rpc", "cumulus-pallet-aura-ext", @@ -9502,7 +10076,7 @@ "hex-literal", "impl-trait-for-tuples", "log", - "num_enum 0.5.11", + "num_enum", "orml-tokens", "orml-traits", "orml-vesting", @@ -9554,7 +10128,7 @@ "pallet-xcm", "parachain-info", "parity-scale-codec", - "polkadot-parachain", + "polkadot-parachain-primitives", "precompile-utils-macro", "scale-info", "serde", @@ -9572,15 +10146,15 @@ "sp-std", "sp-transaction-pool", "sp-version", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", "substrate-wasm-builder", "up-common", "up-data-structs", "up-pov-estimate-rpc", "up-rpc", "up-sponsorship", - "xcm", - "xcm-builder", - "xcm-executor", ] [[package]] @@ -9624,27 +10198,27 @@ [[package]] name = "quinn-proto" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31999cfc7927c4e212e60fd50934ab40e8e8bfd2d493d6095d2d306bc0764d9" +checksum = "c956be1b23f4261676aed05a0046e204e8a6836e50203902683a718af0797989" dependencies = [ "bytes", "rand 0.8.5", - "ring", + "ring 0.16.20", "rustc-hash", - "rustls 0.20.8", + "rustls 0.20.9", "slab", "thiserror", "tinyvec", "tracing", - "webpki 0.22.0", + "webpki 0.22.2", ] [[package]] name = "quote" -version = "1.0.32" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -9743,9 +10317,9 @@ [[package]] name = "rayon" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" dependencies = [ "either", "rayon-core", @@ -9753,14 +10327,12 @@ [[package]] name = "rayon-core" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" dependencies = [ - "crossbeam-channel", "crossbeam-deque", "crossbeam-utils", - "num_cpus", ] [[package]] @@ -9770,8 +10342,8 @@ checksum = "6413f3de1edee53342e6138e75b56d32e7bc6e332b3bd62d497b1929d4cfbcdd" dependencies = [ "pem", - "ring", - "time 0.3.25", + "ring 0.16.20", + "time", "x509-parser 0.13.2", "yasna", ] @@ -9783,8 +10355,8 @@ checksum = "ffbe84efe2f38dea12e9bfc1f65377fdf03e53a18cb3b995faedf7934c7e785b" dependencies = [ "pem", - "ring", - "time 0.3.25", + "ring 0.16.20", + "time", "yasna", ] @@ -9819,35 +10391,35 @@ [[package]] name = "reed-solomon-novelpoly" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bd8f48b2066e9f69ab192797d66da804d1935bf22763204ed3675740cb0f221" +checksum = "58130877ca403ab42c864fbac74bb319a0746c07a634a92a5cfc7f54af272582" dependencies = [ "derive_more", "fs-err", - "itertools", - "static_init 0.5.2", + "itertools 0.11.0", + "static_init", "thiserror", ] [[package]] name = "ref-cast" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61ef7e18e8841942ddb1cf845054f8008410030a3997875d9e49b7a363063df1" +checksum = "acde58d073e9c79da00f2b5b84eed919c8326832648a5b109b3fce1bb1175280" dependencies = [ "ref-cast-impl", ] [[package]] name = "ref-cast-impl" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dfaf0c85b766276c797f3791f5bc6d5bd116b41d53049af2789666b0c0bc9fa" +checksum = "7f7473c2cfcf90008193dd0e3e16599455cb601a9fce322b5bb55de799664925" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] @@ -9864,14 +10436,14 @@ [[package]] name = "regex" -version = "1.9.3" +version = "1.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81bc1d4caf89fac26a70747fe603c130093b53c773888797a6329091246d651a" +checksum = "ebee201405406dbf528b8b672104ae6d6d63e6d118cb10e4d51abbc7b58044ff" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.3.6", - "regex-syntax 0.7.4", + "regex-automata 0.3.9", + "regex-syntax 0.7.5", ] [[package]] @@ -9885,13 +10457,13 @@ [[package]] name = "regex-automata" -version = "0.3.6" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed1ceff11a1dddaee50c9dc8e4938bd106e9d89ae372f192311e7da498e3b69" +checksum = "59b23e92ee4318893fa3fe3e6fb365258efbfe6ac6ab30f090cdcbb7aa37efa9" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.7.4", + "regex-syntax 0.7.5", ] [[package]] @@ -9902,9 +10474,9 @@ [[package]] name = "regex-syntax" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" +checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" [[package]] name = "resolv-conf" @@ -9939,6 +10511,21 @@ [[package]] name = "ring" +version = "0.1.0" +source = "git+https://github.com/w3f/ring-proof?rev=0e948f3#0e948f3c28cbacecdd3020403c4841c0eb339213" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-poly", + "ark-serialize", + "ark-std", + "common", + "fflonk", + "merlin 3.0.0", +] + +[[package]] +name = "ring" version = "0.16.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" @@ -9946,7 +10533,7 @@ "cc", "libc", "once_cell", - "spin", + "spin 0.5.2", "untrusted", "web-sys", "winapi", @@ -9995,8 +10582,8 @@ [[package]] name = "rococo-runtime" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "binary-merkle-tree", "frame-benchmarking", @@ -10020,7 +10607,7 @@ "pallet-democracy", "pallet-elections-phragmen", "pallet-grandpa", - "pallet-identity 4.0.0-dev (git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43)", + "pallet-identity 4.0.0-dev (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", "pallet-im-online", "pallet-indices", "pallet-membership", @@ -10048,7 +10635,7 @@ "pallet-xcm", "pallet-xcm-benchmarks", "parity-scale-codec", - "polkadot-parachain", + "polkadot-parachain-primitives", "polkadot-primitives", "polkadot-runtime-common", "polkadot-runtime-parachains", @@ -10071,19 +10658,20 @@ "sp-session", "sp-staking", "sp-std", + "sp-storage", "sp-transaction-pool", "sp-version", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", "static_assertions", "substrate-wasm-builder", - "xcm", - "xcm-builder", - "xcm-executor", ] [[package]] name = "rococo-runtime-constants" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-support", "polkadot-primitives", @@ -10179,7 +10767,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.18", + "semver 1.0.19", ] [[package]] @@ -10207,9 +10795,9 @@ [[package]] name = "rustix" -version = "0.37.23" +version = "0.37.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06" +checksum = "4279d76516df406a8bd37e7dff53fd37d1a093f997a3c34a5c21658c126db06d" dependencies = [ "bitflags 1.3.2", "errno", @@ -10221,14 +10809,14 @@ [[package]] name = "rustix" -version = "0.38.8" +version = "0.38.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ed4fa021d81c8392ce04db050a3da9a60299050b7ae1cf482d862b54a7218f" +checksum = "d2f9da0cbd88f9f09e7814e388301c8414c51c62aa6ce1e4b5c551d49d96e531" dependencies = [ "bitflags 2.4.0", "errno", "libc", - "linux-raw-sys 0.4.5", + "linux-raw-sys 0.4.8", "windows-sys 0.48.0", ] @@ -10240,24 +10828,36 @@ dependencies = [ "base64 0.13.1", "log", - "ring", + "ring 0.16.20", "sct 0.6.1", "webpki 0.21.4", ] [[package]] name = "rustls" -version = "0.20.8" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f" +checksum = "1b80e3dec595989ea8510028f30c408a4630db12c9cbb8de34203b89d6577e99" dependencies = [ "log", - "ring", + "ring 0.16.20", "sct 0.7.0", - "webpki 0.22.0", + "webpki 0.22.2", ] [[package]] +name = "rustls" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8" +dependencies = [ + "log", + "ring 0.16.20", + "rustls-webpki 0.101.6", + "sct 0.7.0", +] + +[[package]] name = "rustls-native-certs" version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -10275,16 +10875,47 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" dependencies = [ - "base64 0.21.2", + "base64 0.21.4", ] [[package]] +name = "rustls-webpki" +version = "0.100.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6a5fc258f1c1276dfe3016516945546e2d5383911efc0fc4f1cdc5df3a4ae3" +dependencies = [ + "ring 0.16.20", + "untrusted", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c7d5dece342910d9ba34d259310cae3e0154b873b35408b787b59bce53d34fe" +dependencies = [ + "ring 0.16.20", + "untrusted", +] + +[[package]] name = "rustversion" version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" [[package]] +name = "ruzstd" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3ffab8f9715a0d455df4bbb9d21e91135aab3cd3ca187af0cd0c3c3f868fdc" +dependencies = [ + "byteorder", + "thiserror-core", + "twox-hash", +] + +[[package]] name = "rw-stream-sink" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -10322,7 +10953,7 @@ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "log", "sp-core", @@ -10333,7 +10964,7 @@ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "async-trait", "futures", @@ -10341,14 +10972,13 @@ "ip_network", "libp2p", "log", - "multihash 0.17.0", + "multihash", "parity-scale-codec", "prost", "prost-build", "rand 0.8.5", "sc-client-api", "sc-network", - "sc-network-common", "sp-api", "sp-authority-discovery", "sp-blockchain", @@ -10362,7 +10992,7 @@ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "futures", "futures-timer", @@ -10385,7 +11015,7 @@ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -10400,7 +11030,7 @@ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "memmap2", "sc-chain-spec-derive", @@ -10419,20 +11049,20 @@ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ - "array-bytes 4.2.0", + "array-bytes", "chrono", "clap", "fdlimit", @@ -10448,7 +11078,6 @@ "sc-client-db", "sc-keystore", "sc-network", - "sc-network-common", "sc-service", "sc-telemetry", "sc-tracing", @@ -10470,7 +11099,7 @@ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "fnv", "futures", @@ -10486,7 +11115,6 @@ "sp-core", "sp-database", "sp-externalities", - "sp-keystore", "sp-runtime", "sp-state-machine", "sp-statement-store", @@ -10497,7 +11125,7 @@ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "hash-db 0.16.0", "kvdb", @@ -10523,7 +11151,7 @@ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "async-trait", "futures", @@ -10548,7 +11176,7 @@ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "async-trait", "futures", @@ -10577,7 +11205,7 @@ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "async-trait", "fork-tree", @@ -10592,8 +11220,8 @@ "sc-consensus", "sc-consensus-epochs", "sc-consensus-slots", - "sc-keystore", "sc-telemetry", + "sc-transaction-pool-api", "scale-info", "sp-api", "sp-application-crypto", @@ -10613,7 +11241,7 @@ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "futures", "jsonrpsee", @@ -10635,9 +11263,9 @@ [[package]] name = "sc-consensus-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ - "array-bytes 4.2.0", + "array-bytes", "async-channel", "async-trait", "fnv", @@ -10647,9 +11275,7 @@ "parking_lot 0.12.1", "sc-client-api", "sc-consensus", - "sc-keystore", "sc-network", - "sc-network-common", "sc-network-gossip", "sc-network-sync", "sc-utils", @@ -10671,7 +11297,7 @@ [[package]] name = "sc-consensus-beefy-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "futures", "jsonrpsee", @@ -10690,7 +11316,7 @@ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "fork-tree", "parity-scale-codec", @@ -10703,10 +11329,10 @@ [[package]] name = "sc-consensus-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "ahash 0.8.3", - "array-bytes 4.2.0", + "array-bytes", "async-trait", "dyn-clone", "finality-grandpa", @@ -10725,6 +11351,7 @@ "sc-network-common", "sc-network-gossip", "sc-telemetry", + "sc-transaction-pool-api", "sc-utils", "serde_json", "sp-api", @@ -10743,7 +11370,7 @@ [[package]] name = "sc-consensus-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "finality-grandpa", "futures", @@ -10763,7 +11390,7 @@ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "assert_matches", "async-trait", @@ -10798,7 +11425,7 @@ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "async-trait", "futures", @@ -10821,13 +11448,13 @@ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ - "lru 0.8.1", "parity-scale-codec", "parking_lot 0.12.1", "sc-executor-common", "sc-executor-wasmtime", + "schnellru", "sp-api", "sp-core", "sp-externalities", @@ -10843,7 +11470,7 @@ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "sc-allocator", "sp-maybe-compressed-blob", @@ -10855,13 +11482,12 @@ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "anyhow", "cfg-if", "libc", "log", - "once_cell", "rustix 0.36.15", "sc-allocator", "sc-executor-common", @@ -10873,7 +11499,7 @@ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "ansi_term", "futures", @@ -10889,9 +11515,9 @@ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ - "array-bytes 4.2.0", + "array-bytes", "parking_lot 0.12.1", "serde_json", "sp-application-crypto", @@ -10903,9 +11529,9 @@ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ - "array-bytes 4.2.0", + "array-bytes", "async-channel", "async-trait", "asynchronous-codec", @@ -10918,37 +11544,33 @@ "libp2p", "linked_hash_set", "log", - "lru 0.8.1", "mockall", "parity-scale-codec", "parking_lot 0.12.1", + "partial_sort", "pin-project", "rand 0.8.5", - "sc-block-builder", "sc-client-api", - "sc-consensus", "sc-network-common", - "sc-peerset", "sc-utils", "serde", "serde_json", "smallvec", - "snow", "sp-arithmetic", "sp-blockchain", - "sp-consensus", "sp-core", "sp-runtime", "substrate-prometheus-endpoint", "thiserror", "unsigned-varint", + "wasm-timer", "zeroize", ] [[package]] name = "sc-network-bitswap" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "async-channel", "cid", @@ -10959,7 +11581,6 @@ "prost-build", "sc-client-api", "sc-network", - "sc-network-common", "sp-blockchain", "sp-runtime", "thiserror", @@ -10969,45 +11590,33 @@ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ - "array-bytes 4.2.0", "async-trait", "bitflags 1.3.2", - "bytes", "futures", - "futures-timer", "libp2p-identity", "parity-scale-codec", "prost-build", "sc-consensus", - "sc-peerset", - "sc-utils", - "serde", - "smallvec", - "sp-blockchain", "sp-consensus", "sp-consensus-grandpa", "sp-runtime", - "substrate-prometheus-endpoint", - "thiserror", - "zeroize", ] [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "ahash 0.8.3", "futures", "futures-timer", "libp2p", "log", - "lru 0.8.1", "sc-network", "sc-network-common", - "sc-peerset", + "schnellru", "sp-runtime", "substrate-prometheus-endpoint", "tracing", @@ -11016,9 +11625,9 @@ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ - "array-bytes 4.2.0", + "array-bytes", "async-channel", "futures", "libp2p-identity", @@ -11028,8 +11637,6 @@ "prost-build", "sc-client-api", "sc-network", - "sc-network-common", - "sc-peerset", "sp-blockchain", "sp-core", "sp-runtime", @@ -11039,9 +11646,9 @@ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ - "array-bytes 4.2.0", + "array-bytes", "async-channel", "async-trait", "fork-tree", @@ -11049,7 +11656,6 @@ "futures-timer", "libp2p", "log", - "lru 0.8.1", "mockall", "parity-scale-codec", "prost", @@ -11058,8 +11664,8 @@ "sc-consensus", "sc-network", "sc-network-common", - "sc-peerset", "sc-utils", + "schnellru", "smallvec", "sp-arithmetic", "sp-blockchain", @@ -11074,17 +11680,15 @@ [[package]] name = "sc-network-transactions" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ - "array-bytes 4.2.0", + "array-bytes", "futures", "libp2p", "log", "parity-scale-codec", - "pin-project", "sc-network", "sc-network-common", - "sc-peerset", "sc-utils", "sp-consensus", "sp-runtime", @@ -11094,9 +11698,9 @@ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ - "array-bytes 4.2.0", + "array-bytes", "bytes", "fnv", "futures", @@ -11104,6 +11708,7 @@ "hyper", "hyper-rustls", "libp2p", + "log", "num_cpus", "once_cell", "parity-scale-codec", @@ -11112,36 +11717,22 @@ "sc-client-api", "sc-network", "sc-network-common", - "sc-peerset", + "sc-transaction-pool-api", "sc-utils", "sp-api", "sp-core", + "sp-externalities", + "sp-keystore", "sp-offchain", "sp-runtime", "threadpool", "tracing", -] - -[[package]] -name = "sc-peerset" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" -dependencies = [ - "futures", - "libp2p-identity", - "log", - "parking_lot 0.12.1", - "partial_sort", - "sc-utils", - "serde_json", - "sp-arithmetic", - "wasm-timer", ] [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -11150,7 +11741,7 @@ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "futures", "jsonrpsee", @@ -11181,7 +11772,7 @@ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -11200,7 +11791,7 @@ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "http", "jsonrpsee", @@ -11215,9 +11806,9 @@ [[package]] name = "sc-rpc-spec-v2" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ - "array-bytes 4.2.0", + "array-bytes", "futures", "futures-util", "hex", @@ -11228,6 +11819,7 @@ "sc-chain-spec", "sc-client-api", "sc-transaction-pool-api", + "sc-utils", "serde", "sp-api", "sp-blockchain", @@ -11235,13 +11827,14 @@ "sp-runtime", "sp-version", "thiserror", + "tokio", "tokio-stream", ] [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "async-trait", "directories", @@ -11268,11 +11861,9 @@ "sc-network-light", "sc-network-sync", "sc-network-transactions", - "sc-offchain", "sc-rpc", "sc-rpc-server", "sc-rpc-spec-v2", - "sc-storage-monitor", "sc-sysinfo", "sc-telemetry", "sc-tracing", @@ -11295,7 +11886,7 @@ "sp-transaction-storage-proof", "sp-trie", "sp-version", - "static_init 1.0.3", + "static_init", "substrate-prometheus-endpoint", "tempfile", "thiserror", @@ -11307,7 +11898,7 @@ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "log", "parity-scale-codec", @@ -11318,14 +11909,12 @@ [[package]] name = "sc-storage-monitor" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "clap", "fs4", - "futures", "log", "sc-client-db", - "sc-utils", "sp-core", "thiserror", "tokio", @@ -11334,7 +11923,7 @@ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -11353,7 +11942,7 @@ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "futures", "libc", @@ -11372,7 +11961,7 @@ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "chrono", "futures", @@ -11391,7 +11980,7 @@ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "ansi_term", "atty", @@ -11399,12 +11988,10 @@ "lazy_static", "libc", "log", - "once_cell", "parking_lot 0.12.1", "regex", "rustc-hash", "sc-client-api", - "sc-rpc-server", "sc-tracing-proc-macro", "serde", "sp-api", @@ -11422,25 +12009,24 @@ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "async-trait", "futures", "futures-timer", "linked-hash-map", "log", - "num-traits", "parity-scale-codec", "parking_lot 0.12.1", "sc-client-api", @@ -11460,13 +12046,15 @@ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "async-trait", "futures", "log", + "parity-scale-codec", "serde", "sp-blockchain", + "sp-core", "sp-runtime", "thiserror", ] @@ -11474,7 +12062,7 @@ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "async-channel", "futures", @@ -11542,7 +12130,7 @@ "arrayvec 0.5.2", "curve25519-dalek 2.1.3", "getrandom 0.1.16", - "merlin", + "merlin 2.0.1", "rand 0.7.3", "rand_core 0.5.1", "sha2 0.8.2", @@ -11551,6 +12139,22 @@ ] [[package]] +name = "schnorrkel" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "844b7645371e6ecdf61ff246ba1958c29e802881a749ae3fb1993675d210d28d" +dependencies = [ + "arrayref", + "arrayvec 0.7.4", + "curve25519-dalek-ng", + "merlin 3.0.0", + "rand_core 0.6.4", + "sha2 0.9.9", + "subtle-ng", + "zeroize", +] + +[[package]] name = "scopeguard" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -11568,7 +12172,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228ce" dependencies = [ - "ring", + "ring 0.16.20", "untrusted", ] @@ -11578,7 +12182,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" dependencies = [ - "ring", + "ring 0.16.20", "untrusted", ] @@ -11683,9 +12287,9 @@ [[package]] name = "semver" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" +checksum = "ad977052201c6de01a8ef2aa3378c4bd23217a056337d1d6da40468d267a4fb0" dependencies = [ "serde", ] @@ -11698,29 +12302,29 @@ [[package]] name = "serde" -version = "1.0.183" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32ac8da02677876d532745a130fc9d8e6edfa81a269b107c5b00829b91d8eb3c" +checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.183" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aafe972d60b0b9bee71a91b92fee2d4fb3c9d7e8f6b179aa99f27203d99a4816" +checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] name = "serde_json" -version = "1.0.105" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360" +checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" dependencies = [ "itoa", "ryu", @@ -11751,9 +12355,9 @@ [[package]] name = "sha1" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", "cpufeatures", @@ -11787,9 +12391,9 @@ [[package]] name = "sha2" -version = "0.10.7" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", @@ -11827,18 +12431,28 @@ [[package]] name = "sharded-slab" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +checksum = "c1b21f559e07218024e7e9f90f96f601825397de0e25420135f7f952453fed0b" dependencies = [ "lazy_static", ] [[package]] name = "shlex" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" +checksum = "a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380" + +[[package]] +name = "signal-hook" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" +dependencies = [ + "libc", + "signal-hook-registry", +] [[package]] name = "signal-hook-registry" @@ -11884,15 +12498,15 @@ [[package]] name = "siphasher" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" [[package]] name = "slab" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ "autocfg", ] @@ -11905,8 +12519,8 @@ [[package]] name = "slot-range-helper" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "enumn", "parity-scale-codec", @@ -11926,9 +12540,116 @@ [[package]] name = "smallvec" -version = "1.11.0" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" + +[[package]] +name = "smol" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13f2b548cd8447f8de0fdf1c592929f70f4fc7039a05e47404b0d096ec6987a1" +dependencies = [ + "async-channel", + "async-executor", + "async-fs", + "async-io", + "async-lock", + "async-net", + "async-process", + "blocking", + "futures-lite", +] + +[[package]] +name = "smoldot" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0bb30cf57b7b5f6109ce17c3164445e2d6f270af2cb48f6e4d31c2967c9a9f5" +dependencies = [ + "arrayvec 0.7.4", + "async-lock", + "atomic-take", + "base64 0.21.4", + "bip39", + "blake2-rfc", + "bs58 0.5.0", + "chacha20 0.9.1", + "crossbeam-queue", + "derive_more", + "ed25519-zebra 4.0.3", + "either", + "event-listener", + "fnv", + "futures-lite", + "futures-util", + "hashbrown 0.14.1", + "hex", + "hmac 0.12.1", + "itertools 0.11.0", + "libsecp256k1", + "merlin 3.0.0", + "no-std-net", + "nom", + "num-bigint", + "num-rational", + "num-traits", + "pbkdf2 0.12.2", + "pin-project", + "poly1305 0.8.0", + "rand 0.8.5", + "rand_chacha 0.3.1", + "ruzstd", + "schnorrkel 0.10.2", + "serde", + "serde_json", + "sha2 0.10.8", + "sha3 0.10.8", + "siphasher", + "slab", + "smallvec", + "soketto", + "twox-hash", + "wasmi", + "x25519-dalek 2.0.0", + "zeroize", +] + +[[package]] +name = "smoldot-light" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" +checksum = "256b5bad1d6b49045e95fe87492ce73d5af81545d8b4d8318a872d2007024c33" +dependencies = [ + "async-channel", + "async-lock", + "base64 0.21.4", + "blake2-rfc", + "derive_more", + "either", + "event-listener", + "fnv", + "futures-channel", + "futures-lite", + "futures-util", + "hashbrown 0.14.1", + "hex", + "itertools 0.11.0", + "log", + "lru 0.11.1", + "no-std-net", + "parking_lot 0.12.1", + "pin-project", + "rand 0.8.5", + "rand_chacha 0.3.1", + "serde", + "serde_json", + "siphasher", + "slab", + "smol", + "smoldot", + "zeroize", +] [[package]] name = "snap" @@ -11938,18 +12659,18 @@ [[package]] name = "snow" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ccba027ba85743e09d15c03296797cad56395089b832b48b5a5217880f57733" +checksum = "0c9d1425eb528a21de2755c75af4c9b5d57f50a0d4c3b7f1828a4cd03f8ba155" dependencies = [ "aes-gcm 0.9.4", "blake2", "chacha20poly1305", - "curve25519-dalek 4.0.0-rc.1", + "curve25519-dalek 4.1.1", "rand_core 0.6.4", - "ring", + "ring 0.16.20", "rustc_version", - "sha2 0.10.7", + "sha2 0.10.8", "subtle", ] @@ -11965,9 +12686,9 @@ [[package]] name = "socket2" -version = "0.5.3" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877" +checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e" dependencies = [ "libc", "windows-sys 0.48.0", @@ -11993,7 +12714,7 @@ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "hash-db 0.16.0", "log", @@ -12001,6 +12722,7 @@ "scale-info", "sp-api-proc-macro", "sp-core", + "sp-externalities", "sp-metadata-ir", "sp-runtime", "sp-state-machine", @@ -12013,21 +12735,21 @@ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "Inflector", "blake2", - "expander 1.0.0", + "expander 2.0.0", "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] name = "sp-application-crypto" -version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +version = "23.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "parity-scale-codec", "scale-info", @@ -12039,8 +12761,8 @@ [[package]] name = "sp-arithmetic" -version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +version = "16.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "integer-sqrt", "num-traits", @@ -12054,7 +12776,7 @@ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "parity-scale-codec", "scale-info", @@ -12067,9 +12789,8 @@ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ - "parity-scale-codec", "sp-api", "sp-inherents", "sp-runtime", @@ -12079,13 +12800,13 @@ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "futures", "log", - "lru 0.8.1", "parity-scale-codec", "parking_lot 0.12.1", + "schnellru", "sp-api", "sp-consensus", "sp-database", @@ -12097,7 +12818,7 @@ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "async-trait", "futures", @@ -12112,14 +12833,13 @@ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "async-trait", "parity-scale-codec", "scale-info", "sp-api", "sp-application-crypto", - "sp-consensus", "sp-consensus-slots", "sp-inherents", "sp-runtime", @@ -12130,7 +12850,7 @@ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "async-trait", "parity-scale-codec", @@ -12138,11 +12858,9 @@ "serde", "sp-api", "sp-application-crypto", - "sp-consensus", "sp-consensus-slots", "sp-core", "sp-inherents", - "sp-keystore", "sp-runtime", "sp-std", "sp-timestamp", @@ -12151,7 +12869,7 @@ [[package]] name = "sp-consensus-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "lazy_static", "parity-scale-codec", @@ -12170,7 +12888,7 @@ [[package]] name = "sp-consensus-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "finality-grandpa", "log", @@ -12188,7 +12906,7 @@ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "parity-scale-codec", "scale-info", @@ -12199,16 +12917,18 @@ [[package]] name = "sp-core" -version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +version = "21.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ - "array-bytes 4.2.0", + "array-bytes", + "arrayvec 0.7.4", + "bandersnatch_vrfs", "bitflags 1.3.2", "blake2", "bounded-collections", - "bs58", + "bs58 0.5.0", "dyn-clonable", - "ed25519-zebra", + "ed25519-zebra 3.1.0", "futures", "hash-db 0.16.0", "hash256-std-hasher", @@ -12216,7 +12936,7 @@ "lazy_static", "libsecp256k1", "log", - "merlin", + "merlin 2.0.1", "parity-scale-codec", "parking_lot 0.12.1", "paste", @@ -12224,7 +12944,7 @@ "rand 0.8.5", "regex", "scale-info", - "schnorrkel", + "schnorrkel 0.9.1", "secp256k1", "secrecy", "serde", @@ -12238,38 +12958,37 @@ "substrate-bip39", "thiserror", "tiny-bip39", + "tracing", "zeroize", ] [[package]] name = "sp-core-hashing" -version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +version = "9.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "blake2b_simd", "byteorder", "digest 0.10.7", - "sha2 0.10.7", + "sha2 0.10.8", "sha3 0.10.8", - "sp-std", "twox-hash", ] [[package]] name = "sp-core-hashing-proc-macro" -version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +version = "9.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ - "proc-macro2", "quote", "sp-core-hashing", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -12277,18 +12996,18 @@ [[package]] name = "sp-debug-derive" -version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +version = "8.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] name = "sp-externalities" -version = "0.13.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +version = "0.19.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "environmental", "parity-scale-codec", @@ -12297,15 +13016,25 @@ ] [[package]] +name = "sp-genesis-builder" +version = "0.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "serde_json", + "sp-api", + "sp-runtime", + "sp-std", +] + +[[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "async-trait", "impl-trait-for-tuples", "parity-scale-codec", "scale-info", - "sp-core", "sp-runtime", "sp-std", "thiserror", @@ -12313,13 +13042,11 @@ [[package]] name = "sp-io" -version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +version = "23.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "bytes", - "ed25519", "ed25519-dalek", - "futures", "libsecp256k1", "log", "parity-scale-codec", @@ -12339,8 +13066,8 @@ [[package]] name = "sp-keyring" -version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "lazy_static", "sp-core", @@ -12350,13 +13077,11 @@ [[package]] name = "sp-keystore" -version = "0.13.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +version = "0.27.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ - "futures", "parity-scale-codec", "parking_lot 0.12.1", - "serde", "sp-core", "sp-externalities", "thiserror", @@ -12365,7 +13090,7 @@ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "thiserror", "zstd 0.12.4", @@ -12374,7 +13099,7 @@ [[package]] name = "sp-metadata-ir" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-metadata", "parity-scale-codec", @@ -12385,7 +13110,7 @@ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "ckb-merkle-mountain-range", "log", @@ -12403,7 +13128,7 @@ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "parity-scale-codec", "scale-info", @@ -12417,7 +13142,7 @@ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "sp-api", "sp-core", @@ -12426,8 +13151,8 @@ [[package]] name = "sp-panic-handler" -version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +version = "8.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "backtrace", "lazy_static", @@ -12437,7 +13162,7 @@ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "rustc-hash", "serde", @@ -12446,8 +13171,8 @@ [[package]] name = "sp-runtime" -version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "either", "hash256-std-hasher", @@ -12468,8 +13193,8 @@ [[package]] name = "sp-runtime-interface" -version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +version = "17.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "bytes", "impl-trait-for-tuples", @@ -12486,25 +13211,26 @@ [[package]] name = "sp-runtime-interface-proc-macro" -version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +version = "11.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "Inflector", "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "parity-scale-codec", "scale-info", "sp-api", "sp-core", + "sp-keystore", "sp-runtime", "sp-staking", "sp-std", @@ -12513,8 +13239,9 @@ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ + "impl-trait-for-tuples", "parity-scale-codec", "scale-info", "serde", @@ -12525,8 +13252,8 @@ [[package]] name = "sp-state-machine" -version = "0.13.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +version = "0.28.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "hash-db 0.16.0", "log", @@ -12541,16 +13268,22 @@ "sp-trie", "thiserror", "tracing", + "trie-db", ] [[package]] name = "sp-statement-store" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ - "log", + "aes-gcm 0.10.3", + "curve25519-dalek 4.1.1", + "ed25519-dalek", + "hkdf", "parity-scale-codec", + "rand 0.8.5", "scale-info", + "sha2 0.10.8", "sp-api", "sp-application-crypto", "sp-core", @@ -12559,17 +13292,18 @@ "sp-runtime-interface", "sp-std", "thiserror", + "x25519-dalek 2.0.0", ] [[package]] name = "sp-std" -version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +version = "8.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" [[package]] name = "sp-storage" -version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +version = "13.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "impl-serde", "parity-scale-codec", @@ -12582,11 +13316,9 @@ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "async-trait", - "futures-timer", - "log", "parity-scale-codec", "sp-inherents", "sp-runtime", @@ -12596,8 +13328,8 @@ [[package]] name = "sp-tracing" -version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +version = "10.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "parity-scale-codec", "sp-std", @@ -12609,7 +13341,7 @@ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "sp-api", "sp-runtime", @@ -12618,10 +13350,9 @@ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "async-trait", - "log", "parity-scale-codec", "scale-info", "sp-core", @@ -12633,8 +13364,8 @@ [[package]] name = "sp-trie" -version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +version = "22.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "ahash 0.8.3", "hash-db 0.16.0", @@ -12650,14 +13381,14 @@ "sp-std", "thiserror", "tracing", - "trie-db 0.27.1", + "trie-db", "trie-root", ] [[package]] name = "sp-version" -version = "5.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +version = "22.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "impl-serde", "parity-scale-codec", @@ -12673,33 +13404,32 @@ [[package]] name = "sp-version-proc-macro" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +version = "8.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "parity-scale-codec", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] name = "sp-wasm-interface" -version = "7.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +version = "14.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "anyhow", "impl-trait-for-tuples", "log", "parity-scale-codec", "sp-std", - "wasmi", "wasmtime", ] [[package]] name = "sp-weights" -version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +version = "20.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "parity-scale-codec", "scale-info", @@ -12719,7 +13449,7 @@ dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] @@ -12729,6 +13459,12 @@ checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] name = "spinners" version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -12761,9 +13497,9 @@ [[package]] name = "ss58-registry" -version = "1.42.0" +version = "1.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14782ef66f16396bc977f43c89b36f2c7b58357a2cc0bf58a09627542c13c379" +checksum = "5e6915280e2d0db8911e5032a5c275571af6bdded2916abd691a659be25d3439" dependencies = [ "Inflector", "num-format", @@ -12781,22 +13517,175 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] +name = "staging-kusama-runtime" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "binary-merkle-tree", + "bitvec", + "frame-benchmarking", + "frame-election-provider-support", + "frame-executive", + "frame-support", + "frame-system", + "frame-system-benchmarking", + "frame-system-rpc-runtime-api", + "frame-try-runtime", + "hex-literal", + "kusama-runtime-constants", + "log", + "pallet-authority-discovery", + "pallet-authorship", + "pallet-babe", + "pallet-bags-list", + "pallet-balances", + "pallet-beefy", + "pallet-beefy-mmr", + "pallet-bounties", + "pallet-child-bounties", + "pallet-collective", + "pallet-conviction-voting", + "pallet-democracy", + "pallet-election-provider-multi-phase", + "pallet-election-provider-support-benchmarking", + "pallet-elections-phragmen", + "pallet-fast-unstake", + "pallet-grandpa", + "pallet-identity 4.0.0-dev (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "pallet-im-online", + "pallet-indices", + "pallet-membership", + "pallet-message-queue", + "pallet-mmr", + "pallet-multisig", + "pallet-nis", + "pallet-nomination-pools", + "pallet-nomination-pools-benchmarking", + "pallet-nomination-pools-runtime-api", + "pallet-offences", + "pallet-offences-benchmarking", + "pallet-preimage", + "pallet-proxy", + "pallet-ranked-collective", + "pallet-recovery", + "pallet-referenda", + "pallet-scheduler", + "pallet-session", + "pallet-session-benchmarking", + "pallet-society", + "pallet-staking", + "pallet-staking-runtime-api", + "pallet-state-trie-migration", + "pallet-timestamp", + "pallet-tips", + "pallet-transaction-payment", + "pallet-transaction-payment-rpc-runtime-api", + "pallet-treasury", + "pallet-utility", + "pallet-vesting", + "pallet-whitelist", + "pallet-xcm", + "pallet-xcm-benchmarks", + "parity-scale-codec", + "polkadot-primitives", + "polkadot-runtime-common", + "polkadot-runtime-parachains", + "rustc-hex", + "scale-info", + "serde", + "serde_derive", + "smallvec", + "sp-api", + "sp-application-crypto", + "sp-arithmetic", + "sp-authority-discovery", + "sp-block-builder", + "sp-consensus-babe", + "sp-consensus-beefy", + "sp-core", + "sp-inherents", + "sp-io", + "sp-mmr-primitives", + "sp-npos-elections", + "sp-offchain", + "sp-runtime", + "sp-session", + "sp-staking", + "sp-std", + "sp-storage", + "sp-transaction-pool", + "sp-version", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", + "static_assertions", + "substrate-wasm-builder", +] + +[[package]] +name = "staging-xcm" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "bounded-collections", + "derivative", + "environmental", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "scale-info", + "serde", + "sp-weights", + "xcm-procedural", +] + +[[package]] +name = "staging-xcm-builder" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "log", + "pallet-transaction-payment", + "parity-scale-codec", + "polkadot-parachain-primitives", + "scale-info", + "sp-arithmetic", + "sp-io", + "sp-runtime", + "sp-std", + "sp-weights", + "staging-xcm", + "staging-xcm-executor", +] + +[[package]] +name = "staging-xcm-executor" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "environmental", + "frame-benchmarking", + "frame-support", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "sp-arithmetic", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "sp-weights", + "staging-xcm", +] + +[[package]] name = "static_assertions" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "static_init" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11b73400442027c4adedda20a9f9b7945234a5bd8d5f7e86da22bd5d0622369c" -dependencies = [ - "cfg_aliases", - "libc", - "parking_lot 0.11.2", - "static_init_macro 0.5.0", -] [[package]] name = "static_init" @@ -12809,25 +13698,12 @@ "libc", "parking_lot 0.11.2", "parking_lot_core 0.8.6", - "static_init_macro 1.0.2", + "static_init_macro", "winapi", ] [[package]] name = "static_init_macro" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2261c91034a1edc3fc4d1b80e89d82714faede0515c14a75da10cb941546bbf" -dependencies = [ - "cfg_aliases", - "memchr", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "static_init_macro" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70a2595fc3aa78f2d0e45dd425b22282dd863273761cc77780914b2cf3003acf" @@ -12886,7 +13762,7 @@ "lazy_static", "md-5", "rand 0.8.5", - "ring", + "ring 0.16.20", "subtle", "thiserror", "tokio", @@ -12902,7 +13778,7 @@ dependencies = [ "hmac 0.11.0", "pbkdf2 0.8.0", - "schnorrkel", + "schnorrkel 0.9.1", "sha2 0.9.9", "zeroize", ] @@ -12910,15 +13786,12 @@ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" -dependencies = [ - "platforms 2.0.0", -] +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-system-rpc-runtime-api", "futures", @@ -12937,7 +13810,7 @@ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "hyper", "log", @@ -12949,7 +13822,7 @@ [[package]] name = "substrate-rpc-client" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "async-trait", "jsonrpsee", @@ -12962,56 +13835,34 @@ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "jsonrpsee", - "log", "parity-scale-codec", "sc-client-api", "sc-rpc-api", - "scale-info", "serde", "sp-core", "sp-runtime", "sp-state-machine", "sp-trie", - "trie-db 0.27.1", -] - -[[package]] -name = "substrate-test-utils" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" -dependencies = [ - "futures", - "substrate-test-utils-derive", - "tokio", -] - -[[package]] -name = "substrate-test-utils-derive" -version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.28", + "trie-db", ] [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "ansi_term", "build-helper", "cargo_metadata", "filetime", + "parity-wasm", "sp-maybe-compressed-blob", "strum", "tempfile", - "toml 0.7.6", + "toml 0.7.8", "walkdir", "wasm-opt", ] @@ -13032,6 +13883,12 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] +name = "subtle-ng" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "734676eb262c623cec13c3155096e08d1f8f29adce39ba17948b18dad1e54142" + +[[package]] name = "syn" version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -13044,9 +13901,9 @@ [[package]] name = "syn" -version = "2.0.28" +version = "2.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567" +checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" dependencies = [ "proc-macro2", "quote", @@ -13100,22 +13957,22 @@ [[package]] name = "tempfile" -version = "3.7.1" +version = "3.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc02fddf48964c42031a0b3fe0428320ecf3a73c401040fc0096f97794310651" +checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" dependencies = [ "cfg-if", - "fastrand 2.0.0", + "fastrand 2.0.1", "redox_syscall 0.3.5", - "rustix 0.38.8", + "rustix 0.38.15", "windows-sys 0.48.0", ] [[package]] name = "termcolor" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" dependencies = [ "winapi-util", ] @@ -13153,29 +14010,49 @@ "sp-io", "sp-runtime", "sp-std", + "staging-xcm", "up-data-structs", "up-sponsorship", - "xcm", ] [[package]] name = "thiserror" -version = "1.0.46" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9207952ae1a003f42d3d5e892dac3c6ba42aa6ac0c79a6a91a2b5cb4253e75c" +checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4" dependencies = [ "thiserror-impl", ] [[package]] +name = "thiserror-core" +version = "1.0.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d97345f6437bb2004cd58819d8a9ef8e36cdd7661c2abc4bbde0a7c40d9f497" +dependencies = [ + "thiserror-core-impl", +] + +[[package]] +name = "thiserror-core-impl" +version = "1.0.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10ac1c5050e43014d16b2f94d0d2ce79e65ffdd8b38d8048f9c8f6a8a6da62ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] name = "thiserror-impl" -version = "1.0.46" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1728216d3244de4f14f14f8c15c79be1a7c67867d28d69b719690e2a19fb445" +checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] @@ -13239,20 +14116,9 @@ [[package]] name = "time" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" -dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi", -] - -[[package]] -name = "time" -version = "0.3.25" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fdd63d58b18d663fbdf70e049f00a22c8e42be082203be7f26589213cd75ea" +checksum = "426f806f4089c493dcac0d24c29c01e2c38baf8e30f1b716ee37e83d200b18fe" dependencies = [ "deranged", "itoa", @@ -13263,15 +14129,15 @@ [[package]] name = "time-core" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.11" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb71511c991639bb078fd5bf97757e03914361c48100d52878b8e52b46fb92cd" +checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" dependencies = [ "time-core", ] @@ -13288,7 +14154,7 @@ "pbkdf2 0.11.0", "rand 0.8.5", "rustc-hash", - "sha2 0.10.7", + "sha2 0.10.8", "thiserror", "unicode-normalization", "wasm-bindgen", @@ -13331,9 +14197,9 @@ [[package]] name = "tokio" -version = "1.31.0" +version = "1.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40de3a2ba249dcb097e01be5e67a5ff53cf250397715a071a81543e8a832a920" +checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" dependencies = [ "backtrace", "bytes", @@ -13341,9 +14207,9 @@ "mio", "num_cpus", "parking_lot 0.12.1", - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", "signal-hook-registry", - "socket2 0.5.3", + "socket2 0.5.4", "tokio-macros", "windows-sys 0.48.0", ] @@ -13356,7 +14222,7 @@ dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] @@ -13372,13 +14238,12 @@ [[package]] name = "tokio-rustls" -version = "0.23.4" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ - "rustls 0.20.8", + "rustls 0.21.7", "tokio", - "webpki 0.22.0", ] [[package]] @@ -13388,22 +14253,22 @@ checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" dependencies = [ "futures-core", - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", "tokio", "tokio-util", ] [[package]] name = "tokio-util" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" +checksum = "1d68074620f57a0b21594d9735eb2e98ab38b17f80d3fcb189fca266771ca60d" dependencies = [ "bytes", "futures-core", "futures-io", "futures-sink", - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", "tokio", "tracing", ] @@ -13419,9 +14284,9 @@ [[package]] name = "toml" -version = "0.7.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17e963a819c331dcacd7ab957d80bc2b9a9c1e71c804826d2f283dd65306542" +checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" dependencies = [ "serde", "serde_spanned", @@ -13440,11 +14305,11 @@ [[package]] name = "toml_edit" -version = "0.19.14" +version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.0.0", + "indexmap 2.0.2", "serde", "serde_spanned", "toml_datetime", @@ -13464,9 +14329,9 @@ [[package]] name = "tower-http" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55ae70283aba8d2a8b411c695c437fe25b8b5e44e23e780662002fc72fb47a82" +checksum = "61c5bb1d698276a2443e5ecfabc1008bf15a36c12e6a7176e7bf089ea9131140" dependencies = [ "bitflags 2.4.0", "bytes", @@ -13475,7 +14340,7 @@ "http", "http-body", "http-range-header", - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", "tower-layer", "tower-service", ] @@ -13500,7 +14365,7 @@ dependencies = [ "cfg-if", "log", - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", "tracing-attributes", "tracing-core", ] @@ -13513,7 +14378,7 @@ dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] @@ -13538,9 +14403,10 @@ [[package]] name = "tracing-gum" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ + "coarsetime", "polkadot-node-jaeger", "polkadot-primitives", "tracing", @@ -13549,14 +14415,14 @@ [[package]] name = "tracing-gum-proc-macro" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "expander 2.0.0", "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] @@ -13601,18 +14467,6 @@ "tracing-core", "tracing-log", "tracing-serde", -] - -[[package]] -name = "trie-db" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "004e1e8f92535694b4cb1444dc5a8073ecf0815e3357f729638b9f8fc4062908" -dependencies = [ - "hash-db 0.15.2", - "hashbrown 0.12.3", - "log", - "smallvec", ] [[package]] @@ -13702,7 +14556,7 @@ [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43#5e49f6e44820affccaf517fd22af564f4b495d40" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "async-trait", "clap", @@ -13713,7 +14567,6 @@ "parity-scale-codec", "sc-cli", "sc-executor", - "sc-service", "serde", "serde_json", "sp-api", @@ -13754,7 +14607,7 @@ "log", "md-5", "rand 0.8.5", - "ring", + "ring 0.16.20", "stun", "thiserror", "tokio", @@ -13775,9 +14628,9 @@ [[package]] name = "typenum" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "uc-rpc" @@ -13804,13 +14657,13 @@ "sp-runtime", "sp-state-machine", "sp-trie", - "trie-db 0.24.0", + "trie-db", "unique-runtime", "up-common", "up-data-structs", "up-pov-estimate-rpc", "up-rpc", - "zstd 0.11.2+zstd.1.5.2", + "zstd 0.12.4", ] [[package]] @@ -13839,9 +14692,9 @@ [[package]] name = "unicode-ident" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" @@ -13854,9 +14707,9 @@ [[package]] name = "unicode-width" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" [[package]] name = "unicode-xid" @@ -13866,13 +14719,15 @@ [[package]] name = "unique-node" -version = "0.9.43" +version = "1.1.0" dependencies = [ "app-promotion-rpc", "clap", "cumulus-client-cli", + "cumulus-client-collator", "cumulus-client-consensus-aura", "cumulus-client-consensus-common", + "cumulus-client-consensus-proposer", "cumulus-client-network", "cumulus-client-service", "cumulus-primitives-core", @@ -13880,6 +14735,7 @@ "cumulus-relay-chain-inprocess-interface", "cumulus-relay-chain-interface", "cumulus-relay-chain-minimal-node", + "fc-api", "fc-consensus", "fc-db", "fc-mapping-sync", @@ -13893,6 +14749,7 @@ "jsonrpsee", "log", "opal-runtime", + "pallet-transaction-payment-rpc", "pallet-transaction-payment-rpc-runtime-api", "parity-scale-codec", "polkadot-cli", @@ -13909,6 +14766,7 @@ "sc-network", "sc-network-sync", "sc-rpc", + "sc-rpc-api", "sc-service", "sc-sysinfo", "sc-telemetry", @@ -13921,6 +14779,7 @@ "sp-blockchain", "sp-consensus-aura", "sp-core", + "sp-inherents", "sp-io", "sp-keystore", "sp-offchain", @@ -13934,7 +14793,6 @@ "tokio", "try-runtime-cli", "uc-rpc", - "unique-rpc", "unique-runtime", "up-common", "up-data-structs", @@ -13943,42 +14801,8 @@ ] [[package]] -name = "unique-rpc" -version = "0.1.2" -dependencies = [ - "app-promotion-rpc", - "fc-db", - "fc-mapping-sync", - "fc-rpc", - "fc-rpc-core", - "fp-rpc", - "fp-storage", - "jsonrpsee", - "pallet-ethereum", - "pallet-transaction-payment-rpc", - "sc-client-api", - "sc-network", - "sc-network-sync", - "sc-rpc", - "sc-rpc-api", - "sc-service", - "sc-transaction-pool", - "serde", - "sp-api", - "sp-block-builder", - "sp-blockchain", - "sp-runtime", - "substrate-frame-rpc-system", - "uc-rpc", - "up-common", - "up-data-structs", - "up-pov-estimate-rpc", - "up-rpc", -] - -[[package]] name = "unique-runtime" -version = "0.9.43" +version = "1.1.0" dependencies = [ "app-promotion-rpc", "cumulus-pallet-aura-ext", @@ -14004,7 +14828,7 @@ "hex-literal", "impl-trait-for-tuples", "log", - "num_enum 0.5.11", + "num_enum", "orml-tokens", "orml-traits", "orml-vesting", @@ -14056,7 +14880,7 @@ "pallet-xcm", "parachain-info", "parity-scale-codec", - "polkadot-parachain", + "polkadot-parachain-primitives", "precompile-utils-macro", "scale-info", "serde", @@ -14074,15 +14898,15 @@ "sp-std", "sp-transaction-pool", "sp-version", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", "substrate-wasm-builder", "up-common", "up-data-structs", "up-pov-estimate-rpc", "up-rpc", "up-sponsorship", - "xcm", - "xcm-builder", - "xcm-executor", ] [[package]] @@ -14107,9 +14931,9 @@ [[package]] name = "unsigned-varint" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d86a8dc7f45e4c1b0d30e43038c38f274e77af056aa5f74b93c2cf9eb3c1c836" +checksum = "6889a77d49f1f013504cec6bf97a2c730394adedaeb1deb5ea08949a50541105" dependencies = [ "asynchronous-codec", "bytes", @@ -14125,10 +14949,11 @@ [[package]] name = "up-common" -version = "0.9.43" +version = "1.1.0" dependencies = [ "cumulus-primitives-core", "fp-rpc", + "fp-self-contained", "frame-support", "pallet-evm", "sp-consensus-aura", @@ -14185,16 +15010,16 @@ [[package]] name = "up-sponsorship" version = "0.1.0" -source = "git+https://github.com/uniquenetwork/pallet-sponsoring?branch=polkadot-v0.9.43#bd6e4a2a97b1415c22f96512b857d9615cbe2f81" +source = "git+https://github.com/uniquenetwork/pallet-sponsoring?branch=polkadot-v1.1.0#2fbec92640f517e4812be7ed61ef7691af6e0bba" dependencies = [ "impl-trait-for-tuples", ] [[package]] name = "url" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" +checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" dependencies = [ "form_urlencoded", "idna 0.4.0", @@ -14251,15 +15076,15 @@ [[package]] name = "waker-fn" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" +checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" [[package]] name = "walkdir" -version = "2.3.3" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" +checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" dependencies = [ "same-file", "winapi-util", @@ -14279,12 +15104,6 @@ version = "0.9.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" - -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" [[package]] name = "wasi" @@ -14313,7 +15132,7 @@ "once_cell", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", "wasm-bindgen-shared", ] @@ -14347,7 +15166,7 @@ dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -14369,9 +15188,9 @@ [[package]] name = "wasm-opt" -version = "0.112.0" +version = "0.114.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87fef6d0d508f08334e0ab0e6877feb4c0ecb3956bcf2cb950699b22fedf3e9c" +checksum = "4d005a95f934878a1fb446a816d51c3601a0120ff929005ba3bab3c749cfd1c7" dependencies = [ "anyhow", "libc", @@ -14385,9 +15204,9 @@ [[package]] name = "wasm-opt-cxx-sys" -version = "0.112.0" +version = "0.114.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc816bbc1596c8f2e8127e137a760c798023ef3d378f2ae51f0f1840e2dfa445" +checksum = "6d04e240598162810fad3b2e96fa0dec6dba1eb65a03f3bd99a9248ab8b56caa" dependencies = [ "anyhow", "cxx", @@ -14397,9 +15216,9 @@ [[package]] name = "wasm-opt-sys" -version = "0.112.0" +version = "0.114.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40199e4f68ef1071b3c6d0bd8026a12b481865d4b9e49c156932ea9a6234dd14" +checksum = "2efd2aaca519d64098c4faefc8b7433a97ed511caf4c9e516384eb6aef1ff4f9" dependencies = [ "anyhow", "cc", @@ -14424,35 +15243,33 @@ [[package]] name = "wasmi" -version = "0.13.2" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06c326c93fbf86419608361a2c925a31754cf109da1b8b55737070b4d6669422" +checksum = "1f341edb80021141d4ae6468cbeefc50798716a347d4085c3811900049ea8945" dependencies = [ - "parity-wasm", - "wasmi-validation", + "smallvec", + "spin 0.9.8", + "wasmi_arena", "wasmi_core", + "wasmparser-nostd", ] [[package]] -name = "wasmi-validation" -version = "0.5.0" +name = "wasmi_arena" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ff416ad1ff0c42e5a926ed5d5fab74c0f098749aa0ad8b2a34b982ce0e867b" -dependencies = [ - "parity-wasm", -] +checksum = "401c1f35e413fac1846d4843745589d9ec678977ab35a384db8ae7830525d468" [[package]] name = "wasmi_core" -version = "0.2.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d20cb3c59b788653d99541c646c561c9dd26506f25c0cebfe810659c54c6d7" +checksum = "dcf1a7db34bff95b85c261002720c00c3a6168256dcb93041d3fa2054d19856a" dependencies = [ "downcast-rs", - "libm 0.2.7", - "memory_units", - "num-rational", + "libm", "num-traits", + "paste", ] [[package]] @@ -14466,6 +15283,15 @@ ] [[package]] +name = "wasmparser-nostd" +version = "0.100.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9157cab83003221bfd385833ab587a039f5d6fa7304854042ba358a3b09e0724" +dependencies = [ + "indexmap-nostd", +] + +[[package]] name = "wasmtime" version = "8.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -14509,14 +15335,14 @@ checksum = "c86437fa68626fe896e5afc69234bb2b5894949083586535f200385adfd71213" dependencies = [ "anyhow", - "base64 0.21.2", + "base64 0.21.4", "bincode", "directories-next", "file-per-thread-logger", "log", "rustix 0.36.15", "serde", - "sha2 0.10.7", + "sha2 0.10.8", "toml 0.5.11", "windows-sys 0.45.0", "zstd 0.11.2+zstd.1.5.2", @@ -14534,7 +15360,7 @@ "cranelift-frontend", "cranelift-native", "cranelift-wasm", - "gimli", + "gimli 0.27.3", "log", "object 0.30.4", "target-lexicon", @@ -14553,7 +15379,7 @@ "anyhow", "cranelift-codegen", "cranelift-native", - "gimli", + "gimli 0.27.3", "object 0.30.4", "target-lexicon", "wasmtime-environ", @@ -14567,7 +15393,7 @@ dependencies = [ "anyhow", "cranelift-entity", - "gimli", + "gimli 0.27.3", "indexmap 1.9.3", "log", "object 0.30.4", @@ -14589,7 +15415,7 @@ "bincode", "cfg-if", "cpp_demangle", - "gimli", + "gimli 0.27.3", "log", "object 0.30.4", "rustc-demangle", @@ -14676,17 +15502,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea" dependencies = [ - "ring", + "ring 0.16.20", "untrusted", ] [[package]] name = "webpki" -version = "0.22.0" +version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" +checksum = "07ecc0cd7cac091bf682ec5efa18b1cff79d617b84181f38b3951dbe135f607f" dependencies = [ - "ring", + "ring 0.16.20", "untrusted", ] @@ -14696,10 +15522,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" dependencies = [ - "webpki 0.22.0", + "webpki 0.22.2", ] [[package]] +name = "webpki-roots" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b03058f88386e5ff5310d9111d53f48b17d732b401aeb83a8d5190f2ac459338" +dependencies = [ + "rustls-webpki 0.100.3", +] + +[[package]] +name = "webpki-roots" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" + +[[package]] name = "webrtc" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -14715,17 +15556,17 @@ "rand 0.8.5", "rcgen 0.9.3", "regex", - "ring", + "ring 0.16.20", "rtcp", "rtp", "rustls 0.19.1", "sdp", "serde", "serde_json", - "sha2 0.10.7", + "sha2 0.10.8", "stun", "thiserror", - "time 0.3.25", + "time", "tokio", "turn", "url", @@ -14757,12 +15598,12 @@ [[package]] name = "webrtc-dtls" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942be5bd85f072c3128396f6e5a9bfb93ca8c1939ded735d177b7bcba9a13d05" +checksum = "c4a00f4242f2db33307347bd5be53263c52a0331c96c14292118c9a6bb48d267" dependencies = [ "aes 0.6.0", - "aes-gcm 0.10.2", + "aes-gcm 0.10.3", "async-trait", "bincode", "block-modes", @@ -14774,25 +15615,24 @@ "hkdf", "hmac 0.12.1", "log", - "oid-registry 0.6.1", "p256", "p384", "rand 0.8.5", "rand_core 0.6.4", - "rcgen 0.9.3", - "ring", + "rcgen 0.10.0", + "ring 0.16.20", "rustls 0.19.1", "sec1 0.3.0", "serde", "sha1", - "sha2 0.10.7", + "sha2 0.10.8", "signature 1.6.4", "subtle", "thiserror", "tokio", "webpki 0.21.4", "webrtc-util", - "x25519-dalek 2.0.0-pre.1", + "x25519-dalek 2.0.0", "x509-parser 0.13.2", ] @@ -14910,9 +15750,10 @@ [[package]] name = "westend-runtime" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ + "binary-merkle-tree", "bitvec", "frame-benchmarking", "frame-election-provider-support", @@ -14929,6 +15770,8 @@ "pallet-babe", "pallet-bags-list", "pallet-balances", + "pallet-beefy", + "pallet-beefy-mmr", "pallet-collective", "pallet-democracy", "pallet-election-provider-multi-phase", @@ -14936,11 +15779,12 @@ "pallet-elections-phragmen", "pallet-fast-unstake", "pallet-grandpa", - "pallet-identity 4.0.0-dev (git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.43)", + "pallet-identity 4.0.0-dev (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", "pallet-im-online", "pallet-indices", "pallet-membership", "pallet-message-queue", + "pallet-mmr", "pallet-multisig", "pallet-nomination-pools", "pallet-nomination-pools-benchmarking", @@ -14968,7 +15812,7 @@ "pallet-xcm", "pallet-xcm-benchmarks", "parity-scale-codec", - "polkadot-parachain", + "polkadot-parachain-primitives", "polkadot-primitives", "polkadot-runtime-common", "polkadot-runtime-parachains", @@ -14978,6 +15822,7 @@ "serde_derive", "smallvec", "sp-api", + "sp-application-crypto", "sp-authority-discovery", "sp-block-builder", "sp-consensus-babe", @@ -14992,19 +15837,20 @@ "sp-session", "sp-staking", "sp-std", + "sp-storage", "sp-transaction-pool", "sp-version", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", "substrate-wasm-builder", "westend-runtime-constants", - "xcm", - "xcm-builder", - "xcm-executor", ] [[package]] name = "westend-runtime-constants" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "frame-support", "polkadot-primitives", @@ -15017,20 +15863,21 @@ [[package]] name = "which" -version = "4.4.0" +version = "4.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" dependencies = [ "either", - "libc", + "home", "once_cell", + "rustix 0.38.15", ] [[package]] name = "wide" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa469ffa65ef7e0ba0f164183697b89b854253fd31aeb92358b7b6155177d62f" +checksum = "ebecebefc38ff1860b4bc47550bbfa63af5746061cf0d29fcd7fa63171602598" dependencies = [ "bytemuck", "safe_arch", @@ -15060,9 +15907,9 @@ [[package]] name = "winapi-util" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" dependencies = [ "winapi", ] @@ -15092,7 +15939,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" dependencies = [ - "windows-targets 0.48.2", + "windows-targets 0.48.5", ] [[package]] @@ -15110,7 +15957,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets 0.48.2", + "windows-targets 0.48.5", ] [[package]] @@ -15130,17 +15977,17 @@ [[package]] name = "windows-targets" -version = "0.48.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1eeca1c172a285ee6c2c84c341ccea837e7c01b12fbb2d0fe3c9e550ce49ec8" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm 0.48.2", - "windows_aarch64_msvc 0.48.2", - "windows_i686_gnu 0.48.2", - "windows_i686_msvc 0.48.2", - "windows_x86_64_gnu 0.48.2", - "windows_x86_64_gnullvm 0.48.2", - "windows_x86_64_msvc 0.48.2", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", ] [[package]] @@ -15151,9 +15998,9 @@ [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b10d0c968ba7f6166195e13d593af609ec2e3d24f916f081690695cf5eaffb2f" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_msvc" @@ -15169,9 +16016,9 @@ [[package]] name = "windows_aarch64_msvc" -version = "0.48.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "571d8d4e62f26d4932099a9efe89660e8bd5087775a2ab5cdd8b747b811f1058" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_i686_gnu" @@ -15187,9 +16034,9 @@ [[package]] name = "windows_i686_gnu" -version = "0.48.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2229ad223e178db5fbbc8bd8d3835e51e566b8474bfca58d2e6150c48bb723cd" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_msvc" @@ -15205,9 +16052,9 @@ [[package]] name = "windows_i686_msvc" -version = "0.48.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "600956e2d840c194eedfc5d18f8242bc2e17c7775b6684488af3a9fff6fe3287" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_x86_64_gnu" @@ -15223,9 +16070,9 @@ [[package]] name = "windows_x86_64_gnu" -version = "0.48.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea99ff3f8b49fb7a8e0d305e5aec485bd068c2ba691b6e277d29eaeac945868a" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnullvm" @@ -15235,9 +16082,9 @@ [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f1a05a1ece9a7a0d5a7ccf30ba2c33e3a61a30e042ffd247567d1de1d94120d" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_msvc" @@ -15253,15 +16100,15 @@ [[package]] name = "windows_x86_64_msvc" -version = "0.48.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d419259aba16b663966e29e6d7c6ecfa0bb8425818bb96f6f1f3c3eb71a6e7b9" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "winnow" -version = "0.5.11" +version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e461589e194280efaa97236b73623445efa195aa633fd7004f39805707a9d53" +checksum = "7c2e3184b9c4e92ad5167ca73039d0c42476302ab603e2fec4487511f38ccefc" dependencies = [ "memchr", ] @@ -15298,12 +16145,13 @@ [[package]] name = "x25519-dalek" -version = "2.0.0-pre.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5da623d8af10a62342bcbbb230e33e58a63255a58012f8653c578e54bab48df" +checksum = "fb66477291e7e8d2b0ff1bcb900bf29489a9692816d79874bea351e7a8b6de96" dependencies = [ - "curve25519-dalek 3.2.0", + "curve25519-dalek 4.1.1", "rand_core 0.6.4", + "serde", "zeroize", ] @@ -15320,10 +16168,10 @@ "lazy_static", "nom", "oid-registry 0.4.0", - "ring", + "ring 0.16.20", "rusticata-macros", "thiserror", - "time 0.3.25", + "time", ] [[package]] @@ -15341,76 +16189,18 @@ "oid-registry 0.6.1", "rusticata-macros", "thiserror", - "time 0.3.25", -] - -[[package]] -name = "xcm" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" -dependencies = [ - "bounded-collections", - "derivative", - "impl-trait-for-tuples", - "log", - "parity-scale-codec", - "scale-info", - "serde", - "sp-weights", - "xcm-procedural", -] - -[[package]] -name = "xcm-builder" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" -dependencies = [ - "frame-support", - "frame-system", - "impl-trait-for-tuples", - "log", - "pallet-transaction-payment", - "parity-scale-codec", - "polkadot-parachain", - "scale-info", - "sp-arithmetic", - "sp-io", - "sp-runtime", - "sp-std", - "sp-weights", - "xcm", - "xcm-executor", + "time", ] [[package]] -name = "xcm-executor" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" -dependencies = [ - "environmental", - "frame-benchmarking", - "frame-support", - "impl-trait-for-tuples", - "log", - "parity-scale-codec", - "sp-arithmetic", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", - "sp-weights", - "xcm", -] - -[[package]] name = "xcm-procedural" -version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.43#ba42b9ce51d25bdaf52d2c61e0763a6e3da50d25" +version = "1.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" dependencies = [ "Inflector", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] @@ -15433,7 +16223,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cd" dependencies = [ - "time 0.3.25", + "time", ] [[package]] @@ -15453,7 +16243,7 @@ dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] --- 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" --- 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 --- 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 + When running the node in the `--dev` mode, an empty block will be sealed automatically after the `` milliseconds. + * --disable-autoseal-on-tx + Disable auto-sealing blocks on new transactions in the `--dev` mode + * --autoseal-finalization-delay + Finalization delay (in seconds) of auto-sealed blocks in the `--dev` mode. + Disabled by default. ## Run Integration Tests --- 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', --- 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( +fn decode_collection_from_bytes( bytes: &[u8], -) -> core::result::Result { - let mut reader = codec::IoReader(bytes); +) -> core::result::Result { + let mut reader = parity_scale_codec::IoReader(bytes); T::decode(&mut reader) } fn detect_type_and_decode_collection( bytes: &[u8], -) -> core::result::Result, codec::Error> { +) -> core::result::Result, parity_scale_codec::Error> { use up_data_structs::{CollectionVersion1, RpcCollectionVersion1}; decode_collection_from_bytes::>(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"); --- 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; --- 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] --- 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); --- 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', +] --- 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 . +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; +pub type UniqueChainSpec = + sc_service::GenericChainSpec; /// The `ChainSpec` parameterized for the quartz runtime. #[cfg(feature = "quartz-runtime")] -pub type QuartzChainSpec = sc_service::GenericChainSpec; +pub type QuartzChainSpec = + sc_service::GenericChainSpec; /// The `ChainSpec` parameterized for the opal runtime. -pub type OpalChainSpec = sc_service::GenericChainSpec; +pub type OpalChainSpec = + sc_service::GenericChainSpec; #[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() } }}; } --- 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 . -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 { --- 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, String> { load_spec(id) - } - - fn native_runtime_version(chain_spec: &Box) -> &'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, String> { polkadot_cli::Cli::from_iter([RelayChainCli::executable_name()].iter()).load_spec(id) } - - fn native_runtime_version(chain_spec: &Box) -> &'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::(&*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::::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() { --- 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 . - -pub mod chain_spec; -pub mod service; --- 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() --- /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 . + +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; + +/// Full client dependencies. +pub struct FullDeps { + /// The client instance to use. + pub client: Arc, + /// Transaction pool instance. + pub pool: Arc

, + /// 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, +} + +/// Instantiate all Full RPC extensions. +pub fn create_full( + io: &mut RpcModule<()>, + deps: FullDeps, +) -> Result<(), Box> +where + C: ProvideRuntimeApi + StorageProvider + AuxStore, + C: HeaderBackend + HeaderMetadata + 'static, + C: Send + Sync + 'static, + C: BlockchainEvents, + C::Api: RuntimeApiDep, + B: sc_client_api::Backend + Send + Sync + 'static, + P: TransactionPool + 'static, + R: RuntimeInstance + Send + Sync + 'static, + ::CrossAccountId: serde::Serialize, + C: sp_api::CallApiAt< + sp_runtime::generic::Block< + sp_runtime::generic::Header, + sp_runtime::OpaqueExtrinsic, + >, + >, + for<'de> ::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 { + /// The client instance to use. + pub client: Arc, + /// Transaction pool instance. + pub pool: Arc

, + /// Graph pool instance. + pub graph: Arc>, + /// Syncing service + pub sync: Arc>, + /// The Node authority flag + pub is_authority: bool, + /// Network service + pub network: Arc>, + + /// Ethereum Backend. + pub eth_backend: Arc + 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>, + /// EthFilterApi pool. + pub eth_filter_pool: Option, + pub eth_pubsub_notification_sinks: + Arc>>, + /// Whether to enable eth dev signer + pub enable_dev_signer: bool, + + pub overrides: Arc>, + pub pending_create_inherent_data_providers: CIDP, +} + +pub fn create_eth( + io: &mut RpcModule<()>, + deps: EthDeps, + subscription_task_executor: SubscriptionTaskExecutor, +) -> Result<(), Box> +where + C: ProvideRuntimeApi + StorageProvider + AuxStore, + C: HeaderBackend + HeaderMetadata + 'static, + C: Send + Sync + 'static, + C: BlockchainEvents, + C: UsageProvider, + C::Api: RuntimeApiDep, + P: TransactionPool + 'static, + CA: ChainApi + 'static, + B: sc_client_api::Backend + Send + Sync + 'static, + C: sp_api::CallApiAt, + CIDP: CreateInherentDataProviders + Send + 'static, + EC: EthConfig, + 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); + } + 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::, + 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(()) +} --- a/node/cli/src/service.rs +++ b/node/cli/src/service.rs @@ -15,73 +15,72 @@ // along with Unique Network. If not, see . // 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>( +pub fn open_frontier_backend>( client: Arc, config: &Configuration, ) -> Result>, String> { @@ -210,12 +209,42 @@ type ParachainBlockImport = TParachainBlockImport>, 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 $name$(<$($gen,)*>)? for T + where T: $($super +)* {} + } +} +ez_bounds!( + pub trait RuntimeApiDep: + sp_transaction_pool::runtime_api::TaggedTransactionQueue + + sp_consensus_aura::AuraApi + + fp_rpc::EthereumRuntimeRPCApi + + sp_session::SessionKeys + + sp_block_builder::BlockBuilder + + pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi + + sp_api::ApiExt + + up_rpc::UniqueApi + + app_promotion_rpc::AppPromotionApi + + up_pov_estimate_rpc::PovEstimateApi + + substrate_frame_rpc_system::AccountNonceApi + + sp_api::Metadata + + sp_offchain::OffchainWorkerApi + + cumulus_primitives_core::CollectCollationInfo + // Deprecated, not used. + + fp_rpc::ConvertTransactionRuntimeApi + { + } +); + /// 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( +pub fn new_partial( config: &Configuration, build_import_queue: BIQ, ) -> Result< @@ -223,7 +252,7 @@ FullClient, FullBackend, FullSelectChain, - sc_consensus::DefaultImportQueue>, + sc_consensus::DefaultImportQueue, sc_transaction_pool::FullPool>, OtherPartial, >, @@ -235,7 +264,8 @@ + Send + Sync + 'static, - RuntimeApi::RuntimeApi: sp_transaction_pool::runtime_api::TaggedTransactionQueue, + RuntimeApi::RuntimeApi: RuntimeApiDep + 'static, + Runtime: RuntimeInstance, ExecutorDispatch: NativeExecutionDispatch + 'static, BIQ: FnOnce( Arc>, @@ -243,10 +273,7 @@ &Configuration, Option, &TaskManager, - ) -> Result< - sc_consensus::DefaultImportQueue>, - sc_service::Error, - >, + ) -> Result, 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, - task_manager: &mut TaskManager, - collator_options: CollatorOptions, - hwbench: Option, -) -> RelayChainResult<( - Arc<(dyn RelayChainInterface + 'static)>, - Option, -)> { - 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( +pub async fn start_node( parachain_config: Configuration, polkadot_config: Configuration, collator_options: CollatorOptions, - id: ParaId, - build_import_queue: BIQ, - build_consensus: BIC, + para_id: ParaId, hwbench: Option, ) -> sc_service::error::Result<(TaskManager, Arc>)> where @@ -378,48 +374,16 @@ + Send + Sync + 'static, - RuntimeApi::RuntimeApi: sp_transaction_pool::runtime_api::TaggedTransactionQueue - + fp_rpc::EthereumRuntimeRPCApi - + fp_rpc::ConvertTransactionRuntimeApi - + sp_session::SessionKeys - + sp_block_builder::BlockBuilder - + pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi - + sp_api::ApiExt> - + up_rpc::UniqueApi - + app_promotion_rpc::AppPromotionApi - + up_pov_estimate_rpc::PovEstimateApi - + substrate_frame_rpc_system::AccountNonceApi - + sp_api::Metadata - + sp_offchain::OffchainWorkerApi - + cumulus_primitives_core::CollectCollationInfo, + RuntimeApi::RuntimeApi: RuntimeApiDep + 'static, + Runtime: RuntimeInstance, ExecutorDispatch: NativeExecutionDispatch + 'static, - BIQ: FnOnce( - Arc>, - Arc, - &Configuration, - Option, - &TaskManager, - ) -> Result< - sc_consensus::DefaultImportQueue>, - sc_service::Error, - >, - BIC: FnOnce( - Arc>, - Arc, - Option<&Registry>, - Option, - &TaskManager, - Arc, - Arc>>, - Arc>, - KeystorePtr, - bool, - ) -> Result>, sc_service::Error>, { let parachain_config = prepare_node_config(parachain_config); - let params = - new_partial::(¶chain_config, build_import_queue)?; + let params = new_partial::( + ¶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>, + >( &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( +pub fn parachain_build_import_queue( client: Arc>, backend: Arc, config: &Configuration, telemetry: Option, task_manager: &TaskManager, -) -> Result< - sc_consensus::DefaultImportQueue>, - sc_service::Error, -> +) -> Result, sc_service::Error> where RuntimeApi: sp_api::ConstructRuntimeApi> + Send + Sync + 'static, - RuntimeApi::RuntimeApi: sp_transaction_pool::runtime_api::TaggedTransactionQueue - + sp_block_builder::BlockBuilder - + sp_consensus_aura::AuraApi - + sp_api::ApiExt>, + RuntimeApi::RuntimeApi: RuntimeApiDep + '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( - parachain_config: Configuration, - polkadot_config: Configuration, - collator_options: CollatorOptions, - id: ParaId, - hwbench: Option, -) -> sc_service::error::Result<(TaskManager, Arc>)> +pub fn start_consensus( + client: Arc>, + backend: Arc, + prometheus_registry: Option<&Registry>, + telemetry: Option, + task_manager: &TaskManager, + relay_chain_interface: Arc, + transaction_pool: Arc< + sc_transaction_pool::FullPool>, + >, + sync_oracle: Arc>, + keystore: KeystorePtr, + overseer_handle: OverseerHandle, + relay_chain_slot_duration: Duration, + para_id: ParaId, + collator_key: CollatorPair, + announce_block: Arc>) + Send + Sync>, +) -> Result<(), sc_service::Error> where - Runtime: RuntimeInstance + Send + Sync + 'static, - ::CrossAccountId: Serialize, - for<'de> ::CrossAccountId: Deserialize<'de>, + ExecutorDispatch: NativeExecutionDispatch + 'static, RuntimeApi: sp_api::ConstructRuntimeApi> + Send + Sync + 'static, - RuntimeApi::RuntimeApi: sp_transaction_pool::runtime_api::TaggedTransactionQueue - + fp_rpc::EthereumRuntimeRPCApi - + fp_rpc::ConvertTransactionRuntimeApi - + sp_session::SessionKeys - + sp_block_builder::BlockBuilder - + pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi - + sp_api::ApiExt> - + up_rpc::UniqueApi - + app_promotion_rpc::AppPromotionApi - + up_pov_estimate_rpc::PovEstimateApi - + substrate_frame_rpc_system::AccountNonceApi - + sp_api::Metadata - + sp_offchain::OffchainWorkerApi - + cumulus_primitives_core::CollectCollationInfo - + sp_consensus_aura::AuraApi, - ExecutorDispatch: NativeExecutionDispatch + 'static, + RuntimeApi::RuntimeApi: RuntimeApiDep + 'static, + Runtime: RuntimeInstance, { - start_node_impl::( - 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::::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( @@ -854,17 +770,14 @@ config: &Configuration, _: Option, task_manager: &TaskManager, -) -> Result< - sc_consensus::DefaultImportQueue>, - sc_service::Error, -> +) -> Result, sc_service::Error> where RuntimeApi: sp_api::ConstructRuntimeApi> + Send + Sync + 'static, - RuntimeApi::RuntimeApi: sp_transaction_pool::runtime_api::TaggedTransactionQueue - + sp_api::ApiExt>, + RuntimeApi::RuntimeApi: + sp_transaction_pool::runtime_api::TaggedTransactionQueue + sp_api::ApiExt, ExecutorDispatch: NativeExecutionDispatch + 'static, { Ok(sc_consensus_manual_seal::import_queue( @@ -881,6 +794,15 @@ pub eth_backend: Arc>, } +struct DefaultEthConfig(PhantomData); +impl EthConfig for DefaultEthConfig +where + C: StorageProvider + Sync + Send + 'static, +{ + type EstimateGasAdapter = (); + type RuntimeStorageOverride = SystemAccountId32StorageOverride; +} + /// Builds a new development service. This service uses instant seal, and mocks /// the parachain inherent pub fn start_dev_node( @@ -897,28 +819,14 @@ + Send + Sync + 'static, - RuntimeApi::RuntimeApi: sp_transaction_pool::runtime_api::TaggedTransactionQueue - + fp_rpc::EthereumRuntimeRPCApi - + fp_rpc::ConvertTransactionRuntimeApi - + sp_session::SessionKeys - + sp_block_builder::BlockBuilder - + pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi - + sp_api::ApiExt> - + up_rpc::UniqueApi - + app_promotion_rpc::AppPromotionApi - + up_pov_estimate_rpc::PovEstimateApi - + substrate_frame_rpc_system::AccountNonceApi - + sp_api::Metadata - + sp_offchain::OffchainWorkerApi - + cumulus_primitives_core::CollectCollationInfo - + sp_consensus_aura::AuraApi, + RuntimeApi::RuntimeApi: RuntimeApiDep + '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::( + } = new_partial::( &config, dev_build_import_queue::, )?; @@ -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>, + >( &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, - pub substrate_backend: Arc, - pub eth_backend: Arc>, + pub substrate_backend: Arc, + pub eth_backend: Arc>, pub eth_filter_pool: Option, - pub overrides: Arc>, + pub overrides: Arc>, pub fee_history_limit: u64, pub fee_history_cache: FeeHistoryCache, pub sync_strategy: SyncStrategy, pub prometheus_registry: Option, } -pub fn spawn_frontier_tasks( - params: FrontierTaskParams, - sync: Arc>, +pub fn spawn_frontier_tasks( + params: FrontierTaskParams, + sync: Arc>, pubsub_notification_sinks: Arc< - EthereumBlockNotificationSinks>, + EthereumBlockNotificationSinks>, >, -) -> Arc> +) -> Arc> where - C: ProvideRuntimeApi + BlockOf, - C: HeaderBackend + HeaderMetadata + 'static, - C: BlockchainEvents + StorageProvider, + C: ProvideRuntimeApi + BlockOf, + C: HeaderBackend + HeaderMetadata + 'static, + C: BlockchainEvents + StorageProvider, C: Send + Sync + 'static, - C::Api: EthereumRuntimeRPCApi, - C::Api: BlockBuilder, - B: BlockT + Send + Sync + 'static, - B::Header: HeaderT, - BE: Backend + 'static, - BE::State: StateBackend, + C::Api: EthereumRuntimeRPCApi, + C::Api: BlockBuilder, + B: Backend + 'static, + B::State: StateBackend, { let FrontierTaskParams { task_manager, --- a/node/rpc/CHANGELOG.md +++ /dev/null @@ -1,15 +0,0 @@ - -## [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 --- a/node/rpc/Cargo.toml +++ /dev/null @@ -1,48 +0,0 @@ -[package] -authors = ['Unique Network '] -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 = [] --- 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 . - -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; - -/// Full client dependencies. -pub struct FullDeps { - /// The client instance to use. - pub client: Arc, - /// Transaction pool instance. - pub pool: Arc

, - /// 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, -} - -pub fn overrides_handle(client: Arc) -> Arc> -where - C: ProvideRuntimeApi + StorageProvider + AuxStore, - C: HeaderBackend + HeaderMetadata, - C: Send + Sync + 'static, - C::Api: fp_rpc::EthereumRuntimeRPCApi, - C::Api: up_rpc::UniqueApi::CrossAccountId, AccountId>, - BE: Backend + 'static, - BE::State: StateBackend, - R: RuntimeInstance + Send + Sync + 'static, -{ - let mut overrides_map = BTreeMap::new(); - overrides_map.insert( - EthereumStorageSchema::V1, - Box::new(SchemaV1Override::new(client.clone())) as Box + 'static>, - ); - overrides_map.insert( - EthereumStorageSchema::V2, - Box::new(SchemaV2Override::new(client.clone())) as Box + 'static>, - ); - overrides_map.insert( - EthereumStorageSchema::V3, - Box::new(SchemaV3Override::new(client.clone())) as Box + 'static>, - ); - - Arc::new(OverrideHandle { - schemas: overrides_map, - fallback: Box::new(RuntimeApiStorageOverride::new(client)), - }) -} - -/// Instantiate all Full RPC extensions. -pub fn create_full( - io: &mut RpcModule<()>, - deps: FullDeps, -) -> Result<(), Box> -where - C: ProvideRuntimeApi + StorageProvider + AuxStore, - C: HeaderBackend + HeaderMetadata + 'static, - C: Send + Sync + 'static, - C: BlockchainEvents, - C::Api: substrate_frame_rpc_system::AccountNonceApi, - C::Api: BlockBuilder, - // C::Api: pallet_contracts_rpc::ContractsRuntimeApi, - C::Api: pallet_transaction_payment_rpc::TransactionPaymentRuntimeApi, - C::Api: up_rpc::UniqueApi::CrossAccountId, AccountId>, - C::Api: app_promotion_rpc::AppPromotionApi< - Block, - BlockNumber, - ::CrossAccountId, - AccountId, - >, - C::Api: up_pov_estimate_rpc::PovEstimateApi, - B: sc_client_api::Backend + Send + Sync + 'static, - B::State: sc_client_api::backend::StateBackend>, - P: TransactionPool + 'static, - R: RuntimeInstance + Send + Sync + 'static, - ::CrossAccountId: serde::Serialize, - C: sp_api::CallApiAt< - sp_runtime::generic::Block< - sp_runtime::generic::Header, - sp_runtime::OpaqueExtrinsic, - >, - >, - for<'de> ::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 { - /// The client instance to use. - pub client: Arc, - /// Transaction pool instance. - pub pool: Arc

, - /// Graph pool instance. - pub graph: Arc>, - /// Syncing service - pub sync: Arc>, - /// The Node authority flag - pub is_authority: bool, - /// Network service - pub network: Arc>, - - /// Ethereum Backend. - pub eth_backend: Arc + 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>, - /// EthFilterApi pool. - pub eth_filter_pool: Option, - pub eth_pubsub_notification_sinks: - Arc>>, - /// Whether to enable eth dev signer - pub enable_dev_signer: bool, - - pub overrides: Arc>, -} - -/// This converter is never used, but we have a generic -/// Option, where T should implement ConvertTransaction -/// -/// TODO: remove after never-type (`!`) stabilization -enum NeverConvert {} -impl fp_rpc::ConvertTransaction for NeverConvert { - fn convert_transaction(&self, _transaction: pallet_ethereum::Transaction) -> T { - unreachable!() - } -} - -pub fn create_eth( - io: &mut RpcModule<()>, - deps: EthDeps, - subscription_task_executor: SubscriptionTaskExecutor, -) -> Result<(), Box> -where - C: ProvideRuntimeApi + StorageProvider + AuxStore, - C: HeaderBackend + HeaderMetadata + 'static, - C: Send + Sync + 'static, - C: BlockchainEvents, - C::Api: BlockBuilder, - C::Api: fp_rpc::EthereumRuntimeRPCApi, - C::Api: fp_rpc::ConvertTransactionRuntimeApi, - P: TransactionPool + 'static, - CA: ChainApi + 'static, - B: sc_client_api::Backend + Send + Sync + 'static, - C: sp_api::CallApiAt< - sp_runtime::generic::Block< - sp_runtime::generic::Header, - 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); - } - 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::, - 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(()) -} --- 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 } --- 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() -> Result where T: Config + pallet_unique::Config + pallet_evm_migration::Config, - T::BlockNumber: From + Into, + BlockNumberFor: From + Into, BalanceOf: Sum + From, { let pallet_admin = account::("admin", 0, SEED); @@ -53,7 +52,7 @@ benchmarks! { where_clause{ where T: Config + pallet_unique::Config + pallet_evm_migration::Config , - T::BlockNumber: From + Into, + BlockNumberFor: From + Into, BalanceOf: Sum + From } --- 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; + type RecalculationInterval: Get>; /// In parachain blocks. #[pallet::constant] - type PendingInterval: Get; + type PendingInterval: Get>; /// 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; + type RelayBlockNumberProvider: BlockNumberProvider>; /// Events compatible with [`frame_system::Config::Event`]. type RuntimeEvent: IsType<::RuntimeEvent> + From>; @@ -230,9 +226,9 @@ pub type Staked = StorageNMap< Key = ( Key, - Key, + Key>, ), - Value = (BalanceOf, T::BlockNumber), + Value = (BalanceOf, BlockNumberFor), QueryKind = ValueQuery, >; @@ -252,7 +248,7 @@ pub type PendingUnstake = StorageMap< _, Twox64Concat, - T::BlockNumber, + BlockNumberFor, BoundedVec<(T::AccountId, BalanceOf), ConstU32>, ValueQuery, >; @@ -262,16 +258,16 @@ #[pallet::storage] #[pallet::getter(fn get_next_calculated_record)] pub type PreviousCalculatedRecord = - StorageValue; + StorageValue), QueryKind = OptionQuery>; #[pallet::hooks] impl Hooks> for Pallet { /// 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) -> Weight where - ::BlockNumber: From, + BlockNumberFor: From, { if T::IsMaintenanceModeEnabled::get() { return T::DbWeight::get().reads_writes(1, 0); @@ -302,7 +298,7 @@ #[pallet::call] impl Pallet where - T::BlockNumber: From + Into, + BlockNumberFor: From + Into, <::Currency as Inspect>::Balance: Sum + From, { /// 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 = if block_number % config.recalculation_interval == 0u32.into() { 1u32.into() } else { @@ -705,7 +701,7 @@ #[pallet::weight(::WeightInfo::on_initialize(PENDING_LIMIT_PER_BLOCK*pending_blocks.len() as u32))] pub fn force_unstake( origin: OriginFor, - pending_blocks: Vec, + pending_blocks: Vec>, ) -> DispatchResult { ensure_root(origin)?; @@ -917,7 +913,7 @@ /// - `staker`: staker account. pub fn total_staked_by_id_per_block( staker: impl EncodeLike, - ) -> Option)>> { + ) -> Option, BalanceOf)>> { let mut staked = Staked::::iter_prefix((staker,)) .map(|(block, (amount, _))| (block, amount)) .collect::>(); @@ -944,14 +940,14 @@ /// - `staker`: staker account. pub fn cross_id_total_staked_per_block( staker: T::CrossAccountId, - ) -> Vec<(T::BlockNumber, BalanceOf)> { + ) -> Vec<(BlockNumberFor, BalanceOf)> { 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, + next_recalc_block: BlockNumberFor, base: BalanceOf, iters: u32, income_acc: &mut BalanceOf, @@ -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, config: &PalletConfiguration, - ) -> T::BlockNumber { + ) -> BlockNumberFor { (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)> { + ) -> Vec<(BlockNumberFor, BalanceOf)> { let mut unsorted_res = vec![]; PendingUnstake::::iter().for_each(|(block, pendings)| { pendings.into_iter().for_each(|(id, amount)| { --- 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 { /// In relay blocks. - pub recalculation_interval: T::BlockNumber, + pub recalculation_interval: BlockNumberFor, /// In parachain blocks. - pub pending_interval: T::BlockNumber, + pub pending_interval: BlockNumberFor, /// 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. --- 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 --- 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(PhantomData); // All implementations with `Weight::default` used in methods that return error `UnsupportedOperation`. --- 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 {...} --- 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 --- 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", --- 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::() * 4u32.into(), ); let author = account("author", 0, SEED); - let new_block: T::BlockNumber = 10u32.into(); + let new_block: BlockNumberFor= 10u32.into(); frame_system::Pallet::::set_block_number(new_block); assert!(T::Currency::balance(&author) == 0u32.into()); @@ -338,8 +337,8 @@ register_validators::(c); register_candidates::(c); - let new_block: T::BlockNumber = 1800u32.into(); - let zero_block: T::BlockNumber = 0u32.into(); + let new_block: BlockNumberFor= 1800u32.into(); + let zero_block: BlockNumberFor = 0u32.into(); let candidates = >::get(); let non_removals = c.saturating_sub(r); --- a/pallets/collator-selection/src/lib.rs +++ b/pallets/collator-selection/src/lib.rs @@ -96,26 +96,27 @@ <::Currency as Inspect<::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> + IsType<::RuntimeEvent>; + /// Overarching hold reason. + type RuntimeHoldReason: From; + type Currency: Mutate - + MutateHold + + MutateHold + BalancedHold; /// 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<>::Reason>; - type DesiredCollators: Get; type LicenseBond: Get>; - type KickThreshold: Get; + type KickThreshold: Get>; } + #[pallet::composite_enum] + pub enum HoldReason { + /// The funds are held as the license bond. + LicenseBond, + } + #[pallet::pallet] pub struct Pallet(_); @@ -199,14 +206,13 @@ #[pallet::storage] #[pallet::getter(fn last_authored_block)] pub type LastAuthoredBlock = - StorageMap<_, Twox64Concat, T::AccountId, T::BlockNumber, ValueQuery>; + StorageMap<_, Twox64Concat, T::AccountId, BlockNumberFor, ValueQuery>; #[pallet::genesis_config] pub struct GenesisConfig { pub invulnerables: Vec, } - #[cfg(feature = "std")] impl Default for GenesisConfig { fn default() -> Self { Self { @@ -216,12 +222,11 @@ } #[pallet::genesis_build] - impl GenesisBuild for GenesisConfig { + impl BuildGenesisConfig for GenesisConfig { fn build(&self) { - let duplicate_invulnerables = self - .invulnerables - .iter() - .collect::>(); + use sp_std::collections::btree_set::BTreeSet; + + let duplicate_invulnerables = self.invulnerables.iter().collect::>(); 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::::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 - pallet_authorship::EventHandler for Pallet + pallet_authorship::EventHandler> for Pallet { fn note_author(author: T::AccountId) { let pot = Self::account_id(); --- 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; -type Block = frame_system::mocking::MockBlock; +use super::*; +use crate as collator_selection; + +type Block = frame_system::mocking::MockBlockU32; // 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}, - Timestamp: pallet_timestamp::{Pallet, Call, Storage, Inherent}, - Session: pallet_session::{Pallet, Call, Storage, Event, Config}, - Aura: pallet_aura::{Pallet, Storage, Config}, - Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, - CollatorSelection: collator_selection::{Pallet, Call, Storage, Event}, - 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; - 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; } sp_runtime::impl_opaque_keys! { @@ -168,27 +164,27 @@ parameter_types! { pub static SessionHandlerCollators: Vec = Vec::new(); - pub static SessionChangeBlock: u64 = 0; + pub static SessionChangeBlock: u32 = 0; } pub struct TestSessionHandler; impl pallet_session::SessionHandler for TestSessionHandler { const KEY_TYPE_IDS: &'static [sp_runtime::KeyTypeId] = &[UintAuthorityId::ID]; fn on_genesis_session(keys: &[(u64, Ks)]) { - SessionHandlerCollators::set(keys.into_iter().map(|(a, _)| *a).collect::>()) + SessionHandlerCollators::set(keys.iter().map(|(a, _)| *a).collect::>()) } fn on_new_session(_: bool, keys: &[(u64, Ks)], _: &[(u64, Ks)]) { SessionChangeBlock::set(System::block_number()); dbg!(keys.len()); - SessionHandlerCollators::set(keys.into_iter().map(|(a, _)| *a).collect::>()) + SessionHandlerCollators::set(keys.iter().map(|(a, _)| *a).collect::>()) } 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; type PotId = PotId; type MaxCollators = MaxCollators; @@ -244,7 +241,6 @@ type ValidatorId = ::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::() + let mut t = >::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); - >::on_initialize(i); + >::on_initialize(i); } } --- 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: ::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::() + let mut t = >::default() + .build_storage() .unwrap(); let invulnerables = vec![1, 1]; --- 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 = [] --- 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; --- 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}; --- 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. --- 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 --- 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` --- 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(PhantomData); - #[cfg(feature = "std")] impl Default for GenesisConfig { fn default() -> Self { Self(Default::default()) @@ -471,7 +473,7 @@ } #[pallet::genesis_build] - impl GenesisBuild for GenesisConfig { + impl BuildGenesisConfig for GenesisConfig { fn build(&self) { StorageVersion::new(1).put::>(); } @@ -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 --- 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"] --- 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(generic_event: ::RuntimeEvent) { let events = frame_system::Pallet::::events(); @@ -52,7 +53,7 @@ } set_app_promotion_configuration_override { - let configuration: AppPromotionConfiguration = Default::default(); + let configuration: AppPromotionConfiguration> = Default::default(); }: { assert_ok!( >::set_app_promotion_configuration_override(RawOrigin::Root.into(), configuration) @@ -82,7 +83,7 @@ } set_collator_selection_kick_threshold { - let threshold: Option = Some(900u32.into()); + let threshold: Option> = Some(900u32.into()); }: { assert_ok!( >::set_collator_selection_kick_threshold(RawOrigin::Root.into(), threshold) --- 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; #[pallet::constant] - type DayRelayBlocks: Get; + type DayRelayBlocks: Get>; #[pallet::constant] type DefaultCollatorSelectionMaxCollators: Get; #[pallet::constant] type DefaultCollatorSelectionLicenseBond: Get; #[pallet::constant] - type DefaultCollatorSelectionKickThreshold: Get; + type DefaultCollatorSelectionKickThreshold: Get>; /// The weight information of this pallet. type WeightInfo: WeightInfo; @@ -103,7 +100,7 @@ bond_cost: Option, }, NewCollatorKickThreshold { - length_in_blocks: Option, + length_in_blocks: Option>, }, } @@ -134,7 +131,6 @@ #[pallet::genesis_config] pub struct GenesisConfig(PhantomData); - #[cfg(feature = "std")] impl Default for GenesisConfig { fn default() -> Self { Self(Default::default()) @@ -142,7 +138,7 @@ } #[pallet::genesis_build] - impl GenesisBuild for GenesisConfig { + impl BuildGenesisConfig for GenesisConfig { fn build(&self) { update_base_fee::(); } @@ -166,7 +162,7 @@ #[pallet::storage] pub type AppPromomotionConfigurationOverride = - StorageValue, QueryKind = ValueQuery>; + StorageValue>, QueryKind = ValueQuery>; #[pallet::storage] pub type CollatorSelectionDesiredCollatorsOverride = StorageValue< @@ -184,7 +180,7 @@ #[pallet::storage] pub type CollatorSelectionKickThresholdOverride = StorageValue< - Value = T::BlockNumber, + Value = BlockNumberFor, 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, - mut configuration: AppPromotionConfiguration, + mut configuration: AppPromotionConfiguration>, ) -> 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, - threshold: Option, + threshold: Option>, ) -> DispatchResult { ensure_root(origin)?; if let Some(threshold) = threshold { --- 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"] --- 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 = result::Result; --- 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)] --- 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 --- 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] --- 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 = >::block_number() as T::BlockNumber; + let block_number = >::block_number() as BlockNumberFor; if let Some(last_tx_block) = >::get(contract_address, who.as_eth()) { let limit = >::get(contract_address); --- 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; + type DefaultSponsoringRateLimit: Get>; } #[pallet::error] @@ -115,7 +116,7 @@ pub(super) type SponsoringRateLimit = StorageMap< Hasher = Twox128, Key = H160, - Value = T::BlockNumber, + Value = BlockNumberFor, QueryKind = ValueQuery, OnEmpty = T::DefaultSponsoringRateLimit, >; @@ -139,7 +140,7 @@ Key1 = H160, Hasher2 = Twox128, Key2 = H160, - Value = T::BlockNumber, + Value = BlockNumberFor, 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) { >::insert(contract, rate_limit); } --- 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"] --- 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 ::RuntimeEvent: codec::Encode } + where_clause { where ::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(|_| ::RuntimeEvent::from(crate::Event::::TestEvent).encode()).collect::>(); }: _(RawOrigin::Root, logs) } --- 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 { --- 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 } --- 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(_); } -/// Implements [`fp_evm::TransactionValidityHack`], which provides sponsor address to pallet-evm -pub struct TransactionValidityHack(PhantomData<*const T>); -impl fp_evm::TransactionValidityHack for TransactionValidityHack { - fn who_pays_fee( - origin: H160, - max_fee: U256, - reason: &WithdrawReason, - ) -> Option { - 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( + origin: H160, + max_fee: U256, + reason: &WithdrawReason, +) -> Option { + 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( + source: H160, + max_fee_per_gas: Option, + gas_limit: u64, + reason: &WithdrawReason, + is_transactional: bool, + is_check: bool, +) -> Option { + 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::(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(PhantomData); impl SponsorshipHandler for BridgeSponsorshipHandler @@ -120,3 +162,135 @@ } } } + +/// Set transaction sponsor if available and enough balance. +pub struct TransactionValidity(PhantomData); +impl OnCheckEvmTransaction for TransactionValidity { + 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::( + *origin.as_eth(), + max_fee_per_gas, + gas_limit, + &reason, + v.config.is_transactional, + true, + ) + .as_ref() + .map(pallet_evm::Pallet::::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(sp_std::marker::PhantomData<(C, OU)>); +impl OnChargeEVMTransaction for WrappedEVMCurrencyAdapter +where + T: Config, + C: Currency<::AccountId>, + C::PositiveImbalance: Imbalance< + ::AccountId>>::Balance, + Opposite = C::NegativeImbalance, + >, + C::NegativeImbalance: Imbalance< + ::AccountId>>::Balance, + Opposite = C::PositiveImbalance, + >, + OU: OnUnbalanced>, + U256: UniqueSaturatedInto<::AccountId>>::Balance>, +{ + // Kept type as Option to satisfy bound of Default + type LiquidityInfo = (Option>, Option); + + fn withdraw_fee( + who: &T::CrossAccountId, + reason: WithdrawReason, + fee: U256, + ) -> Result> { + let sponsor = match reason { + WithdrawReason::Call { + max_fee_per_gas, + gas_limit, + is_transactional, + is_check, + .. + } => get_sponsor::( + *who.as_eth(), + max_fee_per_gas, + gas_limit, + &reason, + is_transactional, + is_check, + ), + _ => None, + }; + + let who = sponsor.as_ref().unwrap_or(who); + as OnChargeEVMTransaction>::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); + ( + as OnChargeEVMTransaction>::correct_and_deposit_fee( + who, + corrected_fee, + base_fee, + already_withdrawn, + ), + None + ) + } + + fn pay_priority_fee(tip: Self::LiquidityInfo) { + as OnChargeEVMTransaction>::pay_priority_fee( + tip.0, + ) + } +} --- 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"] --- 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>>(slice: &[u8]) -> T { T::try_from(slice.to_vec()) --- 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 fungibles::Inspect<::AccountId> for Pallet where - T: orml_tokens::Config, + T: orml_tokens::Config, BalanceOf: From<::Balance>, BalanceOf: From<::Balance>, ::Balance: From>, ::Balance: From>, { - type AssetId = AssetIds; + type AssetId = AssetId; type Balance = BalanceOf; 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) => { as fungible::Inspect>::total_issuance() .into() } - AssetIds::NativeAssetId(NativeCurrency::Parent) => { + AssetId::NativeAssetId(NativeCurrency::Parent) => { as fungibles::Inspect>::total_issuance( - AssetIds::NativeAssetId(NativeCurrency::Parent), + AssetId::NativeAssetId(NativeCurrency::Parent), ) .into() } - AssetIds::ForeignAssetId(fid) => { + AssetId::ForeignAssetId(fid) => { let target_collection_id = match >::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) => { as fungible::Inspect>::minimum_balance() .into() } - AssetIds::NativeAssetId(NativeCurrency::Parent) => { + AssetId::NativeAssetId(NativeCurrency::Parent) => { as fungibles::Inspect>::minimum_balance( - AssetIds::NativeAssetId(NativeCurrency::Parent), + AssetId::NativeAssetId(NativeCurrency::Parent), ) .into() } - AssetIds::ForeignAssetId(fid) => { - AssetMetadatas::::get(AssetIds::ForeignAssetId(fid)) - .map(|x| x.minimal_balance) - .unwrap_or_else(Zero::zero) - } + AssetId::ForeignAssetId(fid) => AssetMetadatas::::get(AssetId::ForeignAssetId(fid)) + .map(|x| x.minimal_balance) + .unwrap_or_else(Zero::zero), } } fn balance(asset: Self::AssetId, who: &::AccountId) -> Self::Balance { log::trace!(target: "fassets::impl_foreign_assets", "impl_fungible balance"); match asset { - AssetIds::NativeAssetId(NativeCurrency::Here) => { + AssetId::NativeAssetId(NativeCurrency::Here) => { as fungible::Inspect>::balance(who).into() } - AssetIds::NativeAssetId(NativeCurrency::Parent) => { + AssetId::NativeAssetId(NativeCurrency::Parent) => { as fungibles::Inspect>::balance( - AssetIds::NativeAssetId(NativeCurrency::Parent), + AssetId::NativeAssetId(NativeCurrency::Parent), who, ) .into() } - AssetIds::ForeignAssetId(fid) => { + AssetId::ForeignAssetId(fid) => { let target_collection_id = match >::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) => { as fungible::Inspect>::reducible_balance( who, preservation, @@ -141,9 +138,9 @@ ) .into() } - AssetIds::NativeAssetId(NativeCurrency::Parent) => { + AssetId::NativeAssetId(NativeCurrency::Parent) => { as fungibles::Inspect>::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) => { as fungible::Inspect>::can_deposit( who, amount.into(), provenance, ) } - AssetIds::NativeAssetId(NativeCurrency::Parent) => { + AssetId::NativeAssetId(NativeCurrency::Parent) => { as fungibles::Inspect>::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: ::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: ::Balance = match value.try_into() { Ok(val) => val, Err(_) => { @@ -248,7 +245,7 @@ } }; match as fungibles::Inspect>::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) => >::contains_key(fid), + AssetId::NativeAssetId(_) => true, + AssetId::ForeignAssetId(fid) => >::contains_key(fid), } } } impl fungibles::Mutate<::AccountId> for Pallet where - T: orml_tokens::Config, + T: orml_tokens::Config, BalanceOf: From<::Balance>, BalanceOf: From<::Balance>, ::Balance: From>, @@ -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) => { as fungible::Mutate>::mint_into( who, amount.into(), ) .map(Into::into) } - AssetIds::NativeAssetId(NativeCurrency::Parent) => { + AssetId::NativeAssetId(NativeCurrency::Parent) => { as fungibles::Mutate>::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 >::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) => { as fungible::Mutate>::burn_from( who, amount.into(), @@ -358,9 +355,9 @@ ) .map(Into::into) } - AssetIds::NativeAssetId(NativeCurrency::Parent) => { + AssetId::NativeAssetId(NativeCurrency::Parent) => { as fungibles::Mutate>::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 >::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 as fungible::Mutate>::transfer( source, dest, @@ -414,9 +411,9 @@ )), } } - AssetIds::NativeAssetId(NativeCurrency::Parent) => { + AssetId::NativeAssetId(NativeCurrency::Parent) => { match as fungibles::Mutate>::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 >::get(fid) { Some(v) => v, None => { @@ -479,7 +476,7 @@ impl fungibles::Unbalanced<::AccountId> for Pallet where - T: orml_tokens::Config, + T: orml_tokens::Config, BalanceOf: From<::Balance>, BalanceOf: From<::Balance>, ::Balance: From>, --- 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; } -impl TryAsForeign for AssetIds { - fn try_as_foreign(asset: AssetIds) -> Option { +impl TryAsForeign for AssetId { + fn try_as_foreign(asset: AssetId) -> Option { 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>> { log::trace!(target: "fassets::asset_metadatas", "call"); - Pallet::::asset_metadatas(AssetIds::ForeignAssetId(foreign_asset_id)) + Pallet::::asset_metadatas(AssetId::ForeignAssetId(foreign_asset_id)) } fn get_multi_location(foreign_asset_id: ForeignAssetId) -> Option { @@ -161,7 +160,7 @@ fn get_currency_id(multi_location: MultiLocation) -> Option { log::trace!(target: "fassets::get_currency_id", "call"); - Pallet::::location_to_currency_ids(multi_location).map(AssetIds::ForeignAssetId) + Pallet::::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>, }, /// The asset updated. AssetUpdated { - asset_id: AssetIds, + asset_id: AssetId, metadata: AssetMetadata>, }, } @@ -253,7 +252,7 @@ #[pallet::storage] #[pallet::getter(fn foreign_asset_locations)] pub type ForeignAssetLocations = - 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 = - 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 = - StorageMap<_, Twox64Concat, AssetIds, AssetMetadata>, OptionQuery>; + StorageMap<_, Twox64Concat, AssetId, AssetMetadata>, OptionQuery>; /// The storages for assets to fungible collection binding /// @@ -381,7 +380,7 @@ *maybe_location = Some(*location); AssetMetadatas::::try_mutate( - AssetIds::ForeignAssetId(foreign_asset_id), + AssetId::ForeignAssetId(foreign_asset_id), |maybe_asset_metadatas| -> DispatchResult { ensure!(maybe_asset_metadatas.is_none(), Error::::AssetIdExisted); *maybe_asset_metadatas = Some(metadata.clone()); @@ -413,7 +412,7 @@ .ok_or(Error::::AssetIdNotExists)?; AssetMetadatas::::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 { + fn buy_weight( + &mut self, + weight: Weight, + payment: Assets, + _xcm: &XcmContext, + ) -> Result { log::trace!(target: "fassets::weight", "buy_weight weight: {:?}, payment: {:?}", weight, payment); Ok(payment) } --- 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 } --- 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 . -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; --- 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(PhantomData); --- 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! { --- 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] --- 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 } --- 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] --- 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"] --- 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(generic_event: ::RuntimeEvent) { --- 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 = <::Currency as Currency<::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. --- 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; -type Block = frame_system::mocking::MockBlock; +use super::*; +use crate as pallet_identity; + +type Block = frame_system::mocking::MockBlockU32; frame_support::construct_runtime!( - pub enum Test where - Block = Block, - NodeBlock = Block, - UncheckedExtrinsic = UncheckedExtrinsic, - { - System: frame_system::{Pallet, Call, Config, Storage, Event}, - Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, - Identity: pallet_identity::{Pallet, Call, Storage, Event}, + 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; - 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::() + let mut t = >::default() + .build_storage() .unwrap(); pallet_balances::GenesisConfig:: { balances: vec![(1, 10), (2, 10), (3, 10), (10, 100), (20, 100), (30, 100)], --- 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(input: &mut I) -> sp_std::result::Result { + fn decode( + input: &mut I, + ) -> sp_std::result::Result { 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(input: &mut I) -> sp_std::result::Result { + fn decode( + input: &mut I, + ) -> sp_std::result::Result { let field = u64::decode(input)?; Ok(Self( >::from_bits(field).map_err(|_| "invalid value")?, @@ -445,7 +450,9 @@ MaxAdditionalFields: Get, > Decode for Registration { - fn decode(input: &mut I) -> sp_std::result::Result { + fn decode( + input: &mut I, + ) -> sp_std::result::Result { let (judgements, deposit, info) = Decode::decode(&mut AppendZerosInput::new(input))?; Ok(Self { judgements, --- 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 } --- 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::::on_initialize(block1); // Create Treasury account - }: { Inflation::::on_initialize(block2); } // Benchmark deposit_into_existing path + let block1: BlockNumberFor = 1u32.into(); + let block2: BlockNumberFor = 2u32.into(); + as Hooks>::on_initialize(block1); // Create Treasury account + }: { as Hooks>::on_initialize(block2); } // Benchmark deposit_into_existing path } --- 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 = @@ -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 @@ -73,11 +71,11 @@ type TreasuryAccountId: Get; // The block number provider - type BlockNumberProvider: BlockNumberProvider; + type BlockNumberProvider: BlockNumberProvider>; /// Number of blocks that pass between treasury balance updates due to inflation #[pallet::constant] - type InflationBlockInterval: Get; + type InflationBlockInterval: Get>; } #[pallet::pallet] @@ -95,22 +93,23 @@ /// Next target (relay) block when inflation will be applied #[pallet::storage] pub type NextInflationBlock = - StorageValue; + StorageValue, QueryKind = ValueQuery>; /// Next target (relay) block when inflation is recalculated #[pallet::storage] pub type NextRecalculationBlock = - StorageValue; + StorageValue, QueryKind = ValueQuery>; /// Relay block when inflation has started #[pallet::storage] - pub type StartBlock = StorageValue; + pub type StartBlock = + StorageValue, QueryKind = ValueQuery>; #[pallet::hooks] impl Hooks> for Pallet { - fn on_initialize(_: T::BlockNumber) -> Weight + fn on_initialize(_: BlockNumberFor) -> Weight where - ::BlockNumber: From, + BlockNumberFor: From, { 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 = >::get(); + let next_inflation: BlockNumberFor = >::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 = >::get(); + let next_recalculation: BlockNumberFor = >::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, - inflation_start_relay_block: T::BlockNumber, + inflation_start_relay_block: BlockNumberFor, ) -> DispatchResult where - ::BlockNumber: From, + BlockNumberFor: From, { ensure_root(origin)?; @@ -200,9 +199,9 @@ } impl Pallet { - pub fn recalculate_inflation(recalculation_block: T::BlockNumber) { + pub fn recalculate_inflation(recalculation_block: BlockNumberFor) { let current_year: u32 = ((recalculation_block - >::get()) - / T::BlockNumber::from(YEAR)) + / BlockNumberFor::::from(YEAR)) .try_into() .unwrap_or(0); let block_interval: u32 = T::InflationBlockInterval::get().try_into().unwrap_or(0); --- 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; -type Block = frame_system::mocking::MockBlock; +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; + +// 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}, - 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; - 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::() + >::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 _ = >::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 < >::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)), >::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 _ = >::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)), >::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 _ = >::deposit(&1234, initial_issuance, Precision::Exact); assert_eq!(Balances::free_balance(1234), initial_issuance); --- 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"] --- 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 . -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 { --- 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())?; --- 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 } --- 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 . -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(owner: T::CrossAccountId) -> CreateItemData { --- 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(PhantomData); --- 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. --- 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 { /// Not Nonfungible item data used to mint in Nonfungible collection. @@ -285,7 +285,6 @@ #[pallet::genesis_config] pub struct GenesisConfig(PhantomData); - #[cfg(feature = "std")] impl Default for GenesisConfig { fn default() -> Self { Self(Default::default()) @@ -293,7 +292,7 @@ } #[pallet::genesis_build] - impl GenesisBuild for GenesisConfig { + impl BuildGenesisConfig for GenesisConfig { fn build(&self) { StorageVersion::new(1).put::>(); } --- 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 } --- 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 . -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( --- 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 = >::check_indirectly_owned( + >::check_indirectly_owned( maybe_owner.clone(), self.id, token, None, nesting_budget, - )?; - - Ok(is_bundle_owner) + ) } /// Returns 10 token in no particular order. --- 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! { --- 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 --- 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 { /// Not Refungible item data used to mint in Refungible collection. --- a/pallets/scheduler-v2/Cargo.toml +++ /dev/null @@ -1,45 +0,0 @@ -[package] -authors = ["Unique Network "] -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"] --- 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 . - -// 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(when: T::BlockNumber, n: u32) -> Result<(), &'static str> { - let t = DispatchTime::At(when); - let origin: ::PalletsOrigin = frame_system::RawOrigin::Root.into(); - for i in 0..n { - let call = make_call::(None); - let period = Some(((i + 100).into(), 100)); - let name = u32_to_name(i); - Scheduler::::do_schedule_named(name, t, period, 0, origin.clone(), call)?; - } - ensure!( - Agenda::::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( - periodic: bool, - named: bool, - signed: bool, - maybe_lookup_len: Option, - priority: Priority, -) -> ScheduledOf { - let call = make_call::(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::(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(len: u32) -> Option> { - let call = <::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(maybe_lookup_len: Option) -> ScheduledCall { - let bound = EncodedCall::bound() as u32; - let mut len = match maybe_lookup_len { - Some(len) => { - len.clamp( - bound, - >::MaxSize::get() - 2, - ) - 3 - } - None => bound.saturating_sub(4), - }; - - loop { - let c = match bounded::(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(signed: bool) -> ::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::::put(now - One::one()); - }: { - Scheduler::::service_agendas(&mut dummy_counter(), now, 0); - } verify { - assert_eq!(IncompleteSince::::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::(now, s)?; - let mut executed = 0; - }: { - Scheduler::::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::(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::::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) .. (>::MaxSize::get()); - // let now = BLOCK_NUMBER.into(); - // let task = make_task::(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::::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::(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::::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::(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::::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::(true); - let call = T::Preimages::realize(&make_call::(None)).unwrap().0; - }: { - assert!(Scheduler::::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::(false); - let call = T::Preimages::realize(&make_call::(None)).unwrap().0; - }: { - assert!(Scheduler::::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::(when, s)?; - }: _(RawOrigin::Root, when, periodic, priority, call) - verify { - ensure!( - Agenda::::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::(when, s)?; - assert_eq!(Agenda::::get(when).agenda.len(), s as usize); - }: _(RawOrigin::Root, when, 0) - verify { - ensure!( - Lookup::::get(u32_to_name(0)).is_none(), - "didn't remove from lookup" - ); - // Removed schedule is NONE - ensure!( - Agenda::::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::(when, s)?; - }: _(RawOrigin::Root, id, when, periodic, priority, call) - verify { - ensure!( - Agenda::::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::(when, s)?; - }: _(RawOrigin::Root, u32_to_name(0)) - verify { - ensure!( - Lookup::::get(u32_to_name(0)).is_none(), - "didn't remove from lookup" - ); - // Removed schedule is NONE - ensure!( - Agenda::::get(when).agenda[0].is_none(), - "didn't remove from schedule" - ); - } - - change_named_priority { - let origin: RawOrigin = 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::(when, s)?; - }: _(origin, id, priority) - verify { - ensure!( - Agenda::::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); -} --- 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 . - -// 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` 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, u32); - -/// A an encoded bounded `Call`. Its encoding must be at most 128 bytes. -pub type EncodedCall = BoundedVec>; - -#[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 { - /// 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 ScheduledCall { - /// 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: ::RuntimeCall) -> Result { - let encoded = call.encode(); - let len = encoded.len(); - - match EncodedCall::try_from(encoded.clone()) { - Ok(bounded) => Ok(Self::Inline(bounded)), - Err(_) => { - let hash = ::Hashing::hash_of(&encoded); - ::Preimages::note_preimage( - encoded - .try_into() - .map_err(|_| >::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 { - 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<::RuntimeCall, DispatchError> { - ::RuntimeCall::decode(&mut data) - .map_err(|_| >::ScheduledCallCorrupted.into()) - } -} - -/// Weight Info for the Preimages fetches. -pub trait SchedulerPreimagesWeightInfo { - /// Get the weight of a task fetches with a given decoded length. - fn service_task_fetched(call_length: u32) -> Weight; -} - -impl SchedulerPreimagesWeightInfo 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: - PreimageRecipient + SchedulerPreimagesWeightInfo -{ - /// No longer request that the data for decoding the given `call` is available. - fn drop(call: &ScheduledCall); - - /// 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, - ) -> Result<(::RuntimeCall, Option), 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, - ) -> Result<(::RuntimeCall, Option), DispatchError>; -} - -impl + SchedulerPreimagesWeightInfo> - SchedulerPreimages for PP -{ - fn drop(call: &ScheduledCall) { - match call { - ScheduledCall::Inline(_) => {} - ScheduledCall::PreimageLookup { hash, .. } => Self::unrequest_preimage(hash), - } - } - - fn peek( - call: &ScheduledCall, - ) -> Result<(::RuntimeCall, Option), DispatchError> { - match call { - ScheduledCall::Inline(data) => Ok((ScheduledCall::::decode(data)?, None)), - ScheduledCall::PreimageLookup { - hash, - unbounded_len, - } => { - let (preimage, len) = Self::get_preimage(hash) - .ok_or(>::PreimageNotFound) - .map(|preimage| (preimage, *unbounded_len))?; - - Ok((ScheduledCall::::decode(preimage.as_slice())?, Some(len))) - } - } - } - - fn realize( - call: &ScheduledCall, - ) -> Result<(::RuntimeCall, Option), DispatchError> { - let r = Self::peek(call)?; - Self::drop(call); - Ok(r) - } -} - -/// Scheduler's supported origins. -pub enum ScheduledEnsureOriginSuccess { - /// 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 { - /// The unique identity for this task, if there is one. - maybe_id: Option, - - /// 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>, - - /// The origin with which to dispatch the call. - origin: PalletsOrigin, - _phantom: PhantomData, -} - -/// Information regarding an item to be executed in the future. -pub type ScheduledOf = Scheduled< - TaskName, - ScheduledCall, - ::BlockNumber, - ::PalletsOrigin, - ::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 { - agenda: BoundedVec>, T::MaxScheduledPerBlock>, - free_places: u32, -} - -impl BlockAgenda { - /// 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) -> Result> { - 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>) { - self.agenda[index as usize] = slot; - } - - /// Returns an iterator containing references to the agenda's slots. - fn iter(&self) -> impl Iterator>> + '_ { - 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> { - 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> { - 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> { - 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 Default for BlockAgenda { - 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(sp_std::marker::PhantomData); - -impl MarginalWeightInfo { - /// Return the weight of servicing a single task. - fn service_task(maybe_lookup_len: Option, 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(_); - - #[pallet::config] - pub trait Config: frame_system::Config { - /// The overarching event type. - type RuntimeEvent: From> + IsType<::RuntimeEvent>; - - /// The aggregated origin which the dispatch will take. - type RuntimeOrigin: OriginTrait - + From - + IsType<::RuntimeOrigin> - + Clone; - - /// The caller origin, overarching type of all pallets origins. - type PalletsOrigin: From> - + Codec - + Clone - + Eq - + TypeInfo - + MaxEncodedLen; - - /// The aggregated call type. - type RuntimeCall: Parameter - + Dispatchable< - RuntimeOrigin = ::RuntimeOrigin, - PostInfo = PostDispatchInfo, - > + UnfilteredDispatchable::RuntimeOrigin> - + GetDispatchInfo - + From>; - - /// The maximum weight that may be scheduled per block for any dispatchables. - #[pallet::constant] - type MaximumWeight: Get; - - /// Required origin to schedule or cancel calls. - type ScheduleOrigin: EnsureOrigin< - ::RuntimeOrigin, - Success = ScheduledEnsureOriginSuccess, - >; - - /// 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; - - /// The maximum number of scheduled calls in the queue for a single block. - #[pallet::constant] - type MaxScheduledPerBlock: Get; - - /// 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; - - /// The helper type used for custom transaction fee logic. - type CallExecutor: DispatchCall; - - /// Required origin to set/change calls' priority. - type PrioritySetOrigin: EnsureOrigin<::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 = StorageValue<_, T::BlockNumber>; - - /// Items to be executed, indexed by the block number that they should be executed on. - #[pallet::storage] - pub type Agenda = - StorageMap<_, Twox64Concat, T::BlockNumber, BlockAgenda, ValueQuery>; - - /// Lookup from a name to the block number and index of the task. - #[pallet::storage] - pub(crate) type Lookup = - StorageMap<_, Twox64Concat, TaskName, TaskAddress>; - - /// Events type. - #[pallet::event] - #[pallet::generate_deposit(pub(super) fn deposit_event)] - pub enum Event { - /// 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, - - /// 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, - - /// 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, - - /// 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, - - /// The task's name if it is not anonymous. - id: Option<[u8; 32]>, - }, - } - - #[pallet::error] - pub enum Error { - /// 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 Hooks> for Pallet { - /// 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 Pallet { - /// 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(::WeightInfo::schedule(T::MaxScheduledPerBlock::get()))] - pub fn schedule( - origin: OriginFor, - when: T::BlockNumber, - maybe_periodic: Option>, - priority: Option, - call: Box<::RuntimeCall>, - ) -> DispatchResult { - T::ScheduleOrigin::ensure_origin(origin.clone())?; - - if priority.is_some() { - T::PrioritySetOrigin::ensure_origin(origin.clone())?; - } - - let origin = ::RuntimeOrigin::from(origin); - Self::do_schedule( - DispatchTime::At(when), - maybe_periodic, - priority.unwrap_or(LOWEST_PRIORITY), - origin.caller().clone(), - >::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(::WeightInfo::cancel(T::MaxScheduledPerBlock::get()))] - pub fn cancel(origin: OriginFor, when: T::BlockNumber, index: u32) -> DispatchResult { - T::ScheduleOrigin::ensure_origin(origin.clone())?; - let origin = ::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(::WeightInfo::schedule_named(T::MaxScheduledPerBlock::get()))] - pub fn schedule_named( - origin: OriginFor, - id: TaskName, - when: T::BlockNumber, - maybe_periodic: Option>, - priority: Option, - call: Box<::RuntimeCall>, - ) -> DispatchResult { - T::ScheduleOrigin::ensure_origin(origin.clone())?; - - if priority.is_some() { - T::PrioritySetOrigin::ensure_origin(origin.clone())?; - } - - let origin = ::RuntimeOrigin::from(origin); - Self::do_schedule_named( - id, - DispatchTime::At(when), - maybe_periodic, - priority.unwrap_or(LOWEST_PRIORITY), - origin.caller().clone(), - >::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(::WeightInfo::cancel_named(T::MaxScheduledPerBlock::get()))] - pub fn cancel_named(origin: OriginFor, id: TaskName) -> DispatchResult { - T::ScheduleOrigin::ensure_origin(origin.clone())?; - let origin = ::RuntimeOrigin::from(origin); - Self::do_cancel_named(Some(origin.caller().clone()), id)?; - Ok(()) - } - - /// Anonymously schedule a task after a delay. - /// - /// # - /// Same as [`schedule`]. - /// # - #[pallet::call_index(4)] - #[pallet::weight(::WeightInfo::schedule(T::MaxScheduledPerBlock::get()))] - pub fn schedule_after( - origin: OriginFor, - after: T::BlockNumber, - maybe_periodic: Option>, - priority: Option, - call: Box<::RuntimeCall>, - ) -> DispatchResult { - T::ScheduleOrigin::ensure_origin(origin.clone())?; - - if priority.is_some() { - T::PrioritySetOrigin::ensure_origin(origin.clone())?; - } - - let origin = ::RuntimeOrigin::from(origin); - Self::do_schedule( - DispatchTime::After(after), - maybe_periodic, - priority.unwrap_or(LOWEST_PRIORITY), - origin.caller().clone(), - >::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. - /// - /// # - /// Same as [`schedule_named`](Self::schedule_named). - /// # - #[pallet::call_index(5)] - #[pallet::weight(::WeightInfo::schedule_named(T::MaxScheduledPerBlock::get()))] - pub fn schedule_named_after( - origin: OriginFor, - id: TaskName, - after: T::BlockNumber, - maybe_periodic: Option>, - priority: Option, - call: Box<::RuntimeCall>, - ) -> DispatchResult { - T::ScheduleOrigin::ensure_origin(origin.clone())?; - - if priority.is_some() { - T::PrioritySetOrigin::ensure_origin(origin.clone())?; - } - - let origin = ::RuntimeOrigin::from(origin); - Self::do_schedule_named( - id, - DispatchTime::After(after), - maybe_periodic, - priority.unwrap_or(LOWEST_PRIORITY), - origin.caller().clone(), - >::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(::WeightInfo::change_named_priority(T::MaxScheduledPerBlock::get()))] - pub fn change_named_priority( - origin: OriginFor, - id: TaskName, - priority: schedule::Priority, - ) -> DispatchResult { - T::PrioritySetOrigin::ensure_origin(origin.clone())?; - let origin = ::RuntimeOrigin::from(origin); - Self::do_change_named_priority(origin.caller().clone(), id, priority) - } - } -} - -impl Pallet { - /// Converts the `DispatchTime` to the `BlockNumber`. - /// - /// Returns an error if the block number is in the past. - fn resolve_time(when: DispatchTime) -> Result { - let now = frame_system::Pallet::::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::::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) { - 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, - ) -> Result, 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, - is_mandatory: bool, - ) -> Result, 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::::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, - is_mandatory: bool, - ) -> Result { - let mut agenda; - - let index = loop { - agenda = Agenda::::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(>::AgendaIsExhausted.into()), - } - }; - - Agenda::::insert(when, agenda); - Ok(index) - } - - fn do_schedule( - when: DispatchTime, - maybe_periodic: Option>, - priority: schedule::Priority, - origin: T::PalletsOrigin, - call: ScheduledCall, - ) -> Result, 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, - (when, index): TaskAddress, - ) -> Result<(), DispatchError> { - let scheduled = Agenda::::try_mutate( - when, - |agenda| -> Result>, 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::::remove(id); - } - Self::deposit_event(Event::Canceled { when, index }); - Ok(()) - } else { - Err(Error::::NotFound.into()) - } - } - - fn do_schedule_named( - id: TaskName, - when: DispatchTime, - maybe_periodic: Option>, - priority: schedule::Priority, - origin: T::PalletsOrigin, - call: ScheduledCall, - ) -> Result, DispatchError> { - // ensure id it is unique - if Lookup::::contains_key(id) { - return Err(Error::::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, id: TaskName) -> DispatchResult { - Lookup::::try_mutate_exists(id, |lookup| -> DispatchResult { - if let Some((when, index)) = lookup.take() { - Agenda::::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::::NotFound.into()) - } - }) - } - - fn do_change_named_priority( - origin: T::PalletsOrigin, - id: TaskName, - priority: schedule::Priority, - ) -> DispatchResult { - match Lookup::::get(id) { - Some((when, index)) => Agenda::::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::::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 { - /// Resolve the call dispatch, including any post-dispatch operations. - fn dispatch_call( - signer: Option, - function: ::RuntimeCall, - ) -> Result< - Result>, - TransactionValidityError, - >; -} - -impl Pallet { - /// 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::::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::::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::::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::>(); - 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::::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::::insert(when, agenda); - } else { - Agenda::::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, - ) -> Result<(), (ServiceTaskError, Option>)> { - let (call, lookup_len) = match T::Preimages::peek(&task.call) { - Ok(c) => c, - Err(_) => { - if let Some(ref id) = task.maybe_id { - Lookup::::remove(id); - } - - return Err((Unavailable, Some(task))); - } - }; - - weight.check_accrue(MarginalWeightInfo::::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::::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::::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::::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::::remove(id); - } - - T::Preimages::drop(&task.call) - } - } - Ok(()) - } - } - } - - fn is_runtime_upgraded() -> bool { - let last = system::LastRuntimeUpgrade::::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: ::RuntimeCall, - ) -> Result { - let dispatch_origin: ::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) - } -} --- 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 . - -// 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(PhantomData); - - #[pallet::hooks] - impl Hooks> for Pallet {} - - #[pallet::config] - pub trait Config: frame_system::Config { - type RuntimeEvent: From> + IsType<::RuntimeEvent>; - } - - #[pallet::event] - #[pallet::generate_deposit(pub(super) fn deposit_event)] - pub enum Event { - Logged(u32, Weight), - } - - #[pallet::call] - impl Pallet - where - ::RuntimeOrigin: OriginTrait, - { - #[pallet::call_index(0)] - #[pallet::weight(*weight)] - pub fn log(origin: OriginFor, 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, 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; -type Block = frame_system::mocking::MockBlock; - -frame_support::construct_runtime!( - pub enum Test where - Block = Block, - NodeBlock = Block, - UncheckedExtrinsic = UncheckedExtrinsic, - { - System: frame_system::{Pallet, Call, Config, Storage, Event}, - Logger: logger::{Pallet, Call, Event}, - Scheduler: scheduler::{Pallet, Call, Storage, Event}, - } -); - -// Scheduler must dispatch with root and no filter, this tests base filter is indeed not used. -pub struct BaseFilter; -impl Contains 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; - 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>> + From>> EnsureOrigin - for EnsureSignedOneOrRoot -{ - type Success = ScheduledEnsureOriginSuccess; - fn try_origin(o: O) -> Result { - 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 { - Ok(O::from(RawOrigin::Root)) - } -} - -pub struct Executor; -impl DispatchCall for Executor { - fn dispatch_call( - signer: Option, - function: RuntimeCall, - ) -> Result< - Result>, - 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; - type CallExecutor = Executor; -} - -pub type LoggerCall = logger::Call; - -pub type SystemCall = frame_system::Call; - -pub fn new_test_ext() -> sp_io::TestExternalities { - let t = system::GenesisConfig::default() - .build_storage::() - .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() -} --- 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 . - -// 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!(!::BaseCallFilter::contains( - &call - )); - assert_ok!(Scheduler::do_schedule( - DispatchTime::At(4), - None, - 127, - root(), - >::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!(!::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(), - >::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!(!::BaseCallFilter::contains( - &call - )); - assert_ok!(Scheduler::do_schedule( - DispatchTime::After(0), - None, - 127, - root(), - >::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(), - >::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(), - >::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(), - >::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(), - >::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(), - >::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(), - >::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 = ::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(), - >::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(), - >::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 = ::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(), - >::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::::get(4).agenda[0].is_some()); - }); -} - -#[test] -fn scheduler_periodic_tasks_always_find_place() { - let max_weight: Weight = ::MaximumWeight::get(); - let max_per_block = ::MaxScheduledPerBlock::get(); - - new_test_ext().execute_with(|| { - let call = RuntimeCall::Logger(LoggerCall::log { - i: 42, - weight: (max_weight / 3) * 2, - }); - let call = >::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!(>::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 = ::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(), - >::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(), - >::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 = ::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(), - >::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(), - >::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(), - >::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(), - >::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(), - >::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(), - >::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(), - >::new(call).unwrap(), - )); - - // Will include the named periodic only - assert_eq!( - Scheduler::on_initialize(1), - TestWeightInfo::service_agendas_base() - + TestWeightInfo::service_agenda_base(1) - + >::service_task(None, true, true) - + TestWeightInfo::execute_dispatch_unsigned() - + call_weight + Weight::from_ref_time(4) - ); - assert_eq!(IncompleteSince::::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) - + >::service_task(None, false, true) - + TestWeightInfo::execute_dispatch_unsigned() - + call_weight + Weight::from_ref_time(3) - + >::service_task(None, false, false) - + TestWeightInfo::execute_dispatch_unsigned() - + call_weight + Weight::from_ref_time(2) - ); - assert_eq!(IncompleteSince::::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) - + >::service_task(None, true, false) - + TestWeightInfo::execute_dispatch_unsigned() - + call_weight + Weight::from_ref_time(1) - ); - assert_eq!(IncompleteSince::::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::::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::::TargetBlockNumberInPast, - ); - - assert_noop!( - Scheduler::schedule(RuntimeOrigin::root(), 2, None, Some(127), call2), - Error::::TargetBlockNumberInPast, - ); - - assert_noop!( - Scheduler::schedule(RuntimeOrigin::root(), 3, None, Some(127), call3), - Error::::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::::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::::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(), - >::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(), - >::new(call).unwrap(), - ) - .unwrap(); - - // Should not re-use the address. - assert!(addr_1 != addr_2); - }); -} - -#[test] -fn schedule_agenda_overflows() { - let max: u32 = ::MaxScheduledPerBlock::get(); - - new_test_ext().execute_with(|| { - let call = RuntimeCall::Logger(LoggerCall::log { - i: 42, - weight: Weight::from_ref_time(10), - }); - let call = >::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,), - >::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 = ::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 = >::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(<::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(<::RuntimeCall>::from(SystemCall::remark { - remark: vec![0; EncodedCall::bound() - 3], - })); - - assert_err!( - Scheduler::schedule(RuntimeOrigin::root(), 4, None, Some(127), call), - >::TooBigScheduledCall - ); - }); -} --- 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(PhantomData); -impl WeightInfo for SubstrateWeight { - // 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)) - } -} --- 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", ] --- 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 . -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! { --- 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 = ::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::*; --- 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 } --- 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( --- 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 {...} --- 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 = StorageMap< Hasher = Blake2_128Concat, Key = (CollectionId, T::AccountId), - Value = T::BlockNumber, + Value = BlockNumberFor, 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, 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, QueryKind = OptionQuery, >; /// Collection id (controlled?2), token id (controlled?2) @@ -208,7 +208,7 @@ Key, Key, ), - Value = T::BlockNumber, + Value = BlockNumberFor, QueryKind = OptionQuery, >; //#endregion @@ -221,7 +221,7 @@ Key1 = CollectionId, Hasher2 = Blake2_128Concat, Key2 = TokenId, - Value = T::BlockNumber, + Value = BlockNumberFor, QueryKind = OptionQuery, >; @@ -233,7 +233,7 @@ Key1 = CollectionId, Hasher2 = Blake2_128Concat, Key2 = TokenId, - Value = T::BlockNumber, + Value = BlockNumberFor, 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, QueryKind = OptionQuery, >; /// Last sponsoring of RFT approval in a collection @@ -256,7 +256,7 @@ Key, Key, ), - Value = T::BlockNumber, + Value = BlockNumberFor, QueryKind = OptionQuery, >; --- 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"] --- 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 = core::result::Result; --- 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 } --- 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 . -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; --- 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), } - /// Opaque block header type. pub type Header = generic::Header; - /// Opaque block type. pub type Block = generic::Block; 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; --- 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", --- 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(&self, dest: &mut O) { + fn encode_to(&self, dest: &mut O) { dest.write(&self.into_bytes()) } } - impl codec::Decode for $T { - fn decode(from: &mut I) -> Result { + impl parity_scale_codec::Decode for $T { + fn decode( + from: &mut I, + ) -> Result { let mut bytes = [0; Self::BYTE_SIZE]; from.read(&mut bytes)?; Ok(Self::from_bytes(bytes)) --- 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).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( value: &BoundedBTreeMap, serializer: D, @@ -117,17 +119,17 @@ (v as &BTreeMap).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( value: &BoundedBTreeSet, serializer: D, --- 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 for CollectionId {} impl EncodeLike 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 for TokenId {} impl EncodeLike 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 { /// Properties of token. pub properties: Vec, @@ -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 { 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 { /// 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 { /// Collection owner account. pub owner: AccountId, @@ -538,8 +551,10 @@ pub struct RawEncoded(Vec); -impl codec::Decode for RawEncoded { - fn decode(input: &mut I) -> Result { +impl parity_scale_codec::Decode for RawEncoded { + fn decode( + input: &mut I, + ) -> Result { 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>; /// 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>; /// 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(); >::encoded_size(&Compact(data.len() as u32 + prefix.len() as u32)) as u32 + data.len() as u32 --- 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

{ --- 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 #[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 { 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(), --- 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", +] --- 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)] --- 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", --- 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 = core::result::Result; sp_api::decl_runtime_apis! { @@ -82,7 +81,7 @@ collection: CollectionId, token_id: TokenId, keys: Option>> - ) -> Result>; + ) -> Result>; /// Total number of tokens in collection. fn total_supply(collection: CollectionId) -> Result; @@ -117,7 +116,7 @@ fn collection_by_id(collection: CollectionId) -> Result>>; #[changed_in(3)] - fn collection_by_id(collection: CollectionId) -> Result>; + fn collection_by_id(collection: CollectionId) -> Result>; /// Get collection stats. fn collection_stats() -> Result; --- 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; @@ -87,12 +89,13 @@ type OnCreate = pallet_evm_contract_helpers::HelpersOnCreate; type ChainId = ChainId; type Runner = pallet_evm::runner::stack::Runner; - type OnChargeTransaction = pallet_evm::EVMCurrencyAdapter; - type TransactionValidityHack = pallet_evm_transaction_payment::TransactionValidityHack; + type OnChargeTransaction = + pallet_evm_transaction_payment::WrappedEVMCurrencyAdapter; type FindAuthor = EthereumFindAuthor; type Timestamp = crate::Timestamp; type WeightInfo = pallet_evm::weights::SubstrateWeight; type GasLimitPovSizeRatio = ProofSizePerGas; + type OnCheckEvmTransaction = pallet_evm_transaction_payment::TransactionValidity; } impl pallet_evm_migration::Config for Runtime { --- 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; --- 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 . 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::*; --- 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 --- 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 . -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; --- 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 . 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; - type LicenceBondIdentifier = LicenceBondIdentifier; type DesiredCollators = DesiredCollators; type LicenseBond = LicenseBond; type KickThreshold = KickThreshold; --- 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; --- 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 . 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; --- 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; } --- 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 . - -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 = Some(10); - pub const Preimage: Option = Some(10); -} - -pub struct EnsureSignedOrRoot(sp_std::marker::PhantomData); -impl, O>> + From>, AccountId: Decode> - EnsureOrigin for EnsureSignedOrRoot -{ - type Success = ScheduledEnsureOriginSuccess; - fn try_origin(o: O) -> Result { - 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 for EqualOrRootOnly { - fn cmp_privilege(left: &OriginCaller, right: &OriginCaller) -> Option { - 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; - type OriginPrivilegeCmp = EqualOrRootOnly; - type MaxScheduledPerBlock = MaxScheduledPerBlock; - type WeightInfo = (); - type Preimages = (); - type CallExecutor = SchedulerPaymentExecutor; - type PrioritySetOrigin = EnsureRoot; -} --- 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 . -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); --- 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 . -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; --- a/runtime/common/config/substrate.rs +++ b/runtime/common/config/substrate.rs @@ -15,31 +15,32 @@ // along with Unique Network. If not, see . 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; /// 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; /// 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; - 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; } impl pallet_utility::Config for Runtime { --- 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 . -use crate::{Runtime, RuntimeEvent, RuntimeCall}; +use crate::{Runtime, RuntimeCall, RuntimeEvent}; impl pallet_test_utils::Config for Runtime { type RuntimeEvent = RuntimeEvent; --- 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 . -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(PhantomData<(AssetId, ConvertAssetId)>); -impl> - ConvertXcm for AsInnerId -where - AssetId: Borrow, - AssetId: TryAsForeign, - AssetIds: Borrow, +pub struct AsInnerId(PhantomData<(AssetId, ConvertAssetId)>); +impl> MaybeEquivalence + for AsInnerId { - fn convert_ref(id: impl Borrow) -> Result { - let id = id.borrow(); - + fn convert(id: &MultiLocation) -> Option { 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::::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) -> Result { + fn convert_back(asset_id: &AssetId) -> Option { 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 >::try_as_foreign(asset_id.clone()) { - Some(fid) => match XcmForeignAssetIdMapping::::get_multi_location(fid) { - Some(location) => Ok(location), - None => Err(()), - }, - None => Err(()), - } + let fid = + >::try_as_foreign(asset_id.clone())?; + XcmForeignAssetIdMapping::::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, JustTry>, + ConvertedConcreteId, 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 { + ) -> Result { FungiblesTransactor::withdraw_asset(what, who, maybe_context) } @@ -163,7 +150,7 @@ from: &MultiLocation, to: &MultiLocation, context: &XcmContext, - ) -> Result { + ) -> Result { FungiblesTransactor::internal_transfer_asset(what, from, to, context) } } @@ -179,15 +166,15 @@ >; pub struct CurrencyIdConvert; -impl Convert> for CurrencyIdConvert { - fn convert(id: AssetIds) -> Option { +impl Convert> for CurrencyIdConvert { + fn convert(id: AssetId) -> Option { 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::::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::::get_currency_id(location) { --- 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 . 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], 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(PhantomData); -impl xcm_executor::Config for XcmExecutorConfig +impl staging_xcm_executor::Config for XcmExecutorConfig 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")] --- 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 . +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> MatchesFungible for OnlySelfCurrency { fn matches_fungible(a: &MultiAsset) -> Option { @@ -106,7 +103,12 @@ Self(Weight::from_parts(0, 0), Zero::zero(), PhantomData) } - fn buy_weight(&mut self, _weight: Weight, payment: Assets) -> Result { + fn buy_weight( + &mut self, + _weight: Weight, + payment: Assets, + _xcm: &XcmContext, + ) -> Result { Ok(payment) } } --- 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, --- a/runtime/common/dispatch.rs +++ b/runtime/common/dispatch.rs @@ -15,28 +15,27 @@ // along with Unique Network. If not, see . 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 where --- 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 . -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; --- 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}; --- 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 . -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. --- 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" --- 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 --- 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 . -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; --- 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; --- 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( call: CollectionCall, --- 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( call: UniqueRefungibleCall, --- 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 . +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; --- 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; } --- 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 . +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(_) => { --- 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; -/// Block header type as expected by this runtime. +/// A Block signed with a Justification +pub type SignedBlock = generic::SignedBlock; +/// Frontier wrapped extrinsic +pub type UncheckedExtrinsic = + fp_self_contained::UncheckedExtrinsic; +/// Header type. pub type Header = generic::Header; -/// Block type as expected by this runtime. +/// Block type. pub type Block = generic::Block; -/// A Block signed with a Justification -pub type SignedBlock = generic::SignedBlock; /// BlockId type as expected by this runtime. pub type BlockId = generic::BlockId; @@ -103,14 +100,6 @@ pallet_ethereum::FakeTransactionFinalizer, ); -/// Unchecked extrinsic type as expected by this runtime. -pub type UncheckedExtrinsic = - fp_self_contained::UncheckedExtrinsic; - -/// Extrinsic type that has already been checked. -pub type CheckedExtrinsic = - fp_self_contained::CheckedExtrinsic; - /// 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 { /// 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 = ::DbWeight::get().reads(1); --- 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 for Runtime { + fn account_tokens(collection: CollectionId, account: CrossAccountId) -> Result, DispatchError> { + dispatch_unique_runtime!(collection.account_tokens(account)) + } + fn collection_tokens(collection: CollectionId) -> Result, DispatchError> { + dispatch_unique_runtime!(collection.collection_tokens()) + } + fn token_exists(collection: CollectionId, token: TokenId) -> Result { + dispatch_unique_runtime!(collection.token_exists(token)) + } - impl up_rpc::UniqueApi for Runtime { - fn account_tokens(collection: CollectionId, account: CrossAccountId) -> Result, DispatchError> { - dispatch_unique_runtime!(collection.account_tokens(account)) - } - fn collection_tokens(collection: CollectionId) -> Result, DispatchError> { - dispatch_unique_runtime!(collection.collection_tokens()) - } - fn token_exists(collection: CollectionId, token: TokenId) -> Result { - dispatch_unique_runtime!(collection.token_exists(token)) - } + fn token_owner(collection: CollectionId, token: TokenId) -> Result, DispatchError> { + dispatch_unique_runtime!(collection.token_owner(token).ok()) + } - fn token_owner(collection: CollectionId, token: TokenId) -> Result, DispatchError> { - dispatch_unique_runtime!(collection.token_owner(token).ok()) - } + fn token_owners(collection: CollectionId, token: TokenId) -> Result, DispatchError> { + dispatch_unique_runtime!(collection.token_owners(token)) + } - fn token_owners(collection: CollectionId, token: TokenId) -> Result, DispatchError> { - dispatch_unique_runtime!(collection.token_owners(token)) - } + fn topmost_token_owner(collection: CollectionId, token: TokenId) -> Result, DispatchError> { + let budget = up_data_structs::budget::Value::new(10); - fn topmost_token_owner(collection: CollectionId, token: TokenId) -> Result, DispatchError> { - let budget = up_data_structs::budget::Value::new(10); + >::find_topmost_owner(collection, token, &budget) + } + fn token_children(collection: CollectionId, token: TokenId) -> Result, DispatchError> { + Ok(>::token_children_ids(collection, token)) + } + fn collection_properties( + collection: CollectionId, + keys: Option>> + ) -> Result, DispatchError> { + let keys = keys.map( + |keys| Common::bytes_keys_to_property_keys(keys) + ).transpose()?; - >::find_topmost_owner(collection, token, &budget) - } - fn token_children(collection: CollectionId, token: TokenId) -> Result, DispatchError> { - Ok(>::token_children_ids(collection, token)) - } - fn collection_properties( - collection: CollectionId, - keys: Option>> - ) -> Result, 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>> + ) -> Result, DispatchError> { + let keys = keys.map( + |keys| Common::bytes_keys_to_property_keys(keys) + ).transpose()?; - fn token_properties( - collection: CollectionId, - token_id: TokenId, - keys: Option>> - ) -> Result, 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>> + ) -> Result, DispatchError> { + let keys = keys.map( + |keys| Common::bytes_keys_to_property_keys(keys) + ).transpose()?; - fn property_permissions( - collection: CollectionId, - keys: Option>> - ) -> Result, 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>> + ) -> Result, 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>> - ) -> Result, 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 { + dispatch_unique_runtime!(collection.total_supply()) + } + fn account_balance(collection: CollectionId, account: CrossAccountId) -> Result { + dispatch_unique_runtime!(collection.account_balance(account)) + } + fn balance(collection: CollectionId, account: CrossAccountId, token: TokenId) -> Result { + dispatch_unique_runtime!(collection.balance(account, token)) + } + fn allowance( + collection: CollectionId, + sender: CrossAccountId, + spender: CrossAccountId, + token: TokenId, + ) -> Result { + dispatch_unique_runtime!(collection.allowance(sender, spender, token)) + } - fn total_supply(collection: CollectionId) -> Result { - dispatch_unique_runtime!(collection.total_supply()) - } - fn account_balance(collection: CollectionId, account: CrossAccountId) -> Result { - dispatch_unique_runtime!(collection.account_balance(account)) - } - fn balance(collection: CollectionId, account: CrossAccountId, token: TokenId) -> Result { - dispatch_unique_runtime!(collection.balance(account, token)) - } - fn allowance( - collection: CollectionId, - sender: CrossAccountId, - spender: CrossAccountId, - token: TokenId, - ) -> Result { - dispatch_unique_runtime!(collection.allowance(sender, spender, token)) - } + fn adminlist(collection: CollectionId) -> Result, DispatchError> { + Ok(>::adminlist(collection)) + } + fn allowlist(collection: CollectionId) -> Result, DispatchError> { + Ok(>::allowlist(collection)) + } + fn allowed(collection: CollectionId, user: CrossAccountId) -> Result { + Ok(>::allowed(collection, user)) + } + fn last_token_id(collection: CollectionId) -> Result { + dispatch_unique_runtime!(collection.last_token_id()) + } + fn collection_by_id(collection: CollectionId) -> Result>, DispatchError> { + Ok(>::rpc_collection(collection)) + } + fn collection_stats() -> Result { + Ok(>::collection_stats()) + } + fn next_sponsored(collection: CollectionId, account: CrossAccountId, token: TokenId) -> Result, DispatchError> { + Ok( as SponsorshipPredict>::predict( + collection, + account, + token + )) + } - fn adminlist(collection: CollectionId) -> Result, DispatchError> { - Ok(>::adminlist(collection)) - } - fn allowlist(collection: CollectionId) -> Result, DispatchError> { - Ok(>::allowlist(collection)) - } - fn allowed(collection: CollectionId, user: CrossAccountId) -> Result { - Ok(>::allowed(collection, user)) - } - fn last_token_id(collection: CollectionId) -> Result { - dispatch_unique_runtime!(collection.last_token_id()) - } - fn collection_by_id(collection: CollectionId) -> Result>, DispatchError> { - Ok(>::rpc_collection(collection)) - } - fn collection_stats() -> Result { - Ok(>::collection_stats()) - } - fn next_sponsored(collection: CollectionId, account: CrossAccountId, token: TokenId) -> Result, DispatchError> { - Ok( as SponsorshipPredict>::predict( - collection, - account, - token - )) - } + fn effective_collection_limits(collection: CollectionId) -> Result, DispatchError> { + Ok(>::effective_collection_limits(collection)) + } - fn effective_collection_limits(collection: CollectionId) -> Result, DispatchError> { - Ok(>::effective_collection_limits(collection)) - } + fn total_pieces(collection: CollectionId, token_id: TokenId) -> Result, DispatchError> { + dispatch_unique_runtime!(collection.total_pieces(token_id)) + } - fn total_pieces(collection: CollectionId, token_id: TokenId) -> Result, DispatchError> { - dispatch_unique_runtime!(collection.total_pieces(token_id)) - } + fn allowance_for_all(collection: CollectionId, owner: CrossAccountId, operator: CrossAccountId) -> Result { + dispatch_unique_runtime!(collection.allowance_for_all(owner, operator)) + } + } - fn allowance_for_all(collection: CollectionId, owner: CrossAccountId, operator: CrossAccountId) -> Result { - dispatch_unique_runtime!(collection.allowance_for_all(owner, operator)) - } - } + impl app_promotion_rpc::AppPromotionApi for Runtime { + #[allow(unused_variables)] + fn total_staked(staker: Option) -> Result { + #[cfg(not(feature = "app-promotion"))] + return unsupported!(); - impl app_promotion_rpc::AppPromotionApi for Runtime { - #[allow(unused_variables)] - fn total_staked(staker: Option) -> Result { - #[cfg(not(feature = "app-promotion"))] - return unsupported!(); + #[cfg(feature = "app-promotion")] + return Ok(>::cross_id_total_staked(staker).unwrap_or_default()); + } - #[cfg(feature = "app-promotion")] - return Ok(>::cross_id_total_staked(staker).unwrap_or_default()); - } + #[allow(unused_variables)] + fn total_staked_per_block(staker: CrossAccountId) -> Result, DispatchError> { + #[cfg(not(feature = "app-promotion"))] + return unsupported!(); - #[allow(unused_variables)] - fn total_staked_per_block(staker: CrossAccountId) -> Result, DispatchError> { - #[cfg(not(feature = "app-promotion"))] - return unsupported!(); + #[cfg(feature = "app-promotion")] + return Ok(>::cross_id_total_staked_per_block(staker)); + } - #[cfg(feature = "app-promotion")] - return Ok(>::cross_id_total_staked_per_block(staker)); - } + #[allow(unused_variables)] + fn pending_unstake(staker: Option) -> Result { + #[cfg(not(feature = "app-promotion"))] + return unsupported!(); - #[allow(unused_variables)] - fn pending_unstake(staker: Option) -> Result { - #[cfg(not(feature = "app-promotion"))] - return unsupported!(); + #[cfg(feature = "app-promotion")] + return Ok(>::cross_id_pending_unstake(staker)); + } - #[cfg(feature = "app-promotion")] - return Ok(>::cross_id_pending_unstake(staker)); - } + #[allow(unused_variables)] + fn pending_unstake_per_block(staker: CrossAccountId) -> Result, DispatchError> { + #[cfg(not(feature = "app-promotion"))] + return unsupported!(); - #[allow(unused_variables)] - fn pending_unstake_per_block(staker: CrossAccountId) -> Result, DispatchError> { - #[cfg(not(feature = "app-promotion"))] - return unsupported!(); + #[cfg(feature = "app-promotion")] + return Ok(>::cross_id_pending_unstake_per_block(staker)) + } + } - #[cfg(feature = "app-promotion")] - return Ok(>::cross_id_pending_unstake_per_block(staker)) - } - } + impl sp_api::Core for Runtime { + fn version() -> RuntimeVersion { + VERSION + } - impl sp_api::Core 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: &::Header) { + Executive::initialize_block(header) + } + } - fn initialize_block(header: &::Header) { - Executive::initialize_block(header) - } - } + impl sp_api::Metadata for Runtime { + fn metadata() -> OpaqueMetadata { + OpaqueMetadata::new(Runtime::metadata().into()) + } - impl sp_api::Metadata for Runtime { - fn metadata() -> OpaqueMetadata { - OpaqueMetadata::new(Runtime::metadata().into()) - } + fn metadata_at_version(version: u32) -> Option { + Runtime::metadata_at_version(version) + } - fn metadata_at_version(version: u32) -> Option { - Runtime::metadata_at_version(version) - } + fn metadata_versions() -> sp_std::vec::Vec { + Runtime::metadata_versions() + } + } - fn metadata_versions() -> sp_std::vec::Vec { - Runtime::metadata_versions() - } - } + impl sp_block_builder::BlockBuilder for Runtime { + fn apply_extrinsic(extrinsic: ::Extrinsic) -> ApplyExtrinsicResult { + Executive::apply_extrinsic(extrinsic) + } - impl sp_block_builder::BlockBuilder for Runtime { - fn apply_extrinsic(extrinsic: ::Extrinsic) -> ApplyExtrinsicResult { - Executive::apply_extrinsic(extrinsic) - } + fn finalize_block() -> ::Header { + Executive::finalize_block() + } - fn finalize_block() -> ::Header { - Executive::finalize_block() - } + fn inherent_extrinsics(data: sp_inherents::InherentData) -> Vec<::Extrinsic> { + data.create_extrinsics() + } - fn inherent_extrinsics(data: sp_inherents::InherentData) -> Vec<::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() -> ::Hash { + // RandomnessCollectiveFlip::random_seed().0 + // } + } - // fn random_seed() -> ::Hash { - // RandomnessCollectiveFlip::random_seed().0 - // } - } + impl sp_transaction_pool::runtime_api::TaggedTransactionQueue for Runtime { + fn validate_transaction( + source: TransactionSource, + tx: ::Extrinsic, + hash: ::Hash, + ) -> TransactionValidity { + Executive::validate_transaction(source, tx, hash) + } + } - impl sp_transaction_pool::runtime_api::TaggedTransactionQueue for Runtime { - fn validate_transaction( - source: TransactionSource, - tx: ::Extrinsic, - hash: ::Hash, - ) -> TransactionValidity { - Executive::validate_transaction(source, tx, hash) - } - } + impl sp_offchain::OffchainWorkerApi for Runtime { + fn offchain_worker(header: &::Header) { + Executive::offchain_worker(header) + } + } - impl sp_offchain::OffchainWorkerApi for Runtime { - fn offchain_worker(header: &::Header) { - Executive::offchain_worker(header) - } - } + impl fp_rpc::EthereumRuntimeRPCApi for Runtime { + fn chain_id() -> u64 { + ::ChainId::get() + } - impl fp_rpc::EthereumRuntimeRPCApi for Runtime { - fn chain_id() -> u64 { - ::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, _) = ::FeeCalculator::min_gas_price(); + price + } - fn gas_price() -> U256 { - let (price, _) = ::FeeCalculator::min_gas_price(); - price - } + fn account_code_at(address: H160) -> Vec { + use pallet_evm::OnMethodCall; + ::OnMethodCall::get_code(&address) + .unwrap_or_else(|| pallet_evm::AccountCodes::::get(address)) + } - fn account_code_at(address: H160) -> Vec { - use pallet_evm::OnMethodCall; - ::OnMethodCall::get_code(&address) - .unwrap_or_else(|| pallet_evm::AccountCodes::::get(address)) - } + fn author() -> H160 { + >::find_author() + } - fn author() -> H160 { - >::find_author() - } + fn storage_at(address: H160, index: U256) -> H256 { + let mut tmp = [0u8; 32]; + index.to_big_endian(&mut tmp); + pallet_evm::AccountStorages::::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::::get(address, H256::from_slice(&tmp[..])) - } + #[allow(clippy::redundant_closure)] + fn call( + from: H160, + to: H160, + data: Vec, + value: U256, + gas_limit: U256, + max_fee_per_gas: Option, + max_priority_fee_per_gas: Option, + nonce: Option, + estimate: bool, + access_list: Option)>>, + ) -> Result { + let config = if estimate { + let mut config = ::config().clone(); + config.estimate = true; + Some(config) + } else { + None + }; - #[allow(clippy::redundant_closure)] - fn call( - from: H160, - to: H160, - data: Vec, - value: U256, - gas_limit: U256, - max_fee_per_gas: Option, - max_priority_fee_per_gas: Option, - nonce: Option, - estimate: bool, - access_list: Option)>>, - ) -> Result { - let config = if estimate { - let mut config = ::config().clone(); - config.estimate = true; - Some(config) - } else { - None - }; + let is_transactional = false; + let validate = false; + ::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; - ::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(|| ::config()), + ).map_err(|err| err.error.into()) + } - config.as_ref().unwrap_or_else(|| ::config()), - ).map_err(|err| err.error.into()) - } + #[allow(clippy::redundant_closure)] + fn create( + from: H160, + data: Vec, + value: U256, + gas_limit: U256, + max_fee_per_gas: Option, + max_priority_fee_per_gas: Option, + nonce: Option, + estimate: bool, + access_list: Option)>>, + ) -> Result { + let config = if estimate { + let mut config = ::config().clone(); + config.estimate = true; + Some(config) + } else { + None + }; - #[allow(clippy::redundant_closure)] - fn create( - from: H160, - data: Vec, - value: U256, - gas_limit: U256, - max_fee_per_gas: Option, - max_priority_fee_per_gas: Option, - nonce: Option, - estimate: bool, - access_list: Option)>>, - ) -> Result { - let config = if estimate { - let mut config = ::config().clone(); - config.estimate = true; - Some(config) - } else { - None - }; + let is_transactional = false; + let validate = false; + ::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; - ::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(|| ::config()), + ).map_err(|err| err.error.into()) + } - config.as_ref().unwrap_or_else(|| ::config()), - ).map_err(|err| err.error.into()) - } + fn current_transaction_statuses() -> Option> { + pallet_ethereum::CurrentTransactionStatuses::::get() + } - fn current_transaction_statuses() -> Option> { - pallet_ethereum::CurrentTransactionStatuses::::get() - } + fn current_block() -> Option { + pallet_ethereum::CurrentBlock::::get() + } - fn current_block() -> Option { - pallet_ethereum::CurrentBlock::::get() - } + fn current_receipts() -> Option> { + pallet_ethereum::CurrentReceipts::::get() + } - fn current_receipts() -> Option> { - pallet_ethereum::CurrentReceipts::::get() - } + fn current_all() -> ( + Option, + Option>, + Option> + ) { + ( + pallet_ethereum::CurrentBlock::::get(), + pallet_ethereum::CurrentReceipts::::get(), + pallet_ethereum::CurrentTransactionStatuses::::get() + ) + } - fn current_all() -> ( - Option, - Option>, - Option> - ) { - ( - pallet_ethereum::CurrentBlock::::get(), - pallet_ethereum::CurrentReceipts::::get(), - pallet_ethereum::CurrentTransactionStatuses::::get() - ) - } + fn extrinsic_filter(xts: Vec<::Extrinsic>) -> Vec { + 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<::Extrinsic>) -> Vec { - xts.into_iter().filter_map(|xt| match xt.0.function { - RuntimeCall::Ethereum(pallet_ethereum::Call::transact { transaction }) => Some(transaction), - _ => None - }).collect() - } + fn elasticity() -> Option { + None + } - fn elasticity() -> Option { - None - } + fn gas_limit_multiplier_support() {} - fn gas_limit_multiplier_support() {} + fn pending_block( + xts: Vec<::Extrinsic>, + ) -> (Option, Option>) { + for ext in xts.into_iter() { + let _ = Executive::apply_extrinsic(ext); + } - fn pending_block( - xts: Vec<::Extrinsic>, - ) -> (Option, Option>) { - 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::::get(), + pallet_ethereum::CurrentTransactionStatuses::::get() + ) + } + } - ( - pallet_ethereum::CurrentBlock::::get(), - pallet_ethereum::CurrentTransactionStatuses::::get() - ) - } - } + impl sp_session::SessionKeys for Runtime { + fn decode_session_keys( + encoded: Vec, + ) -> Option, KeyTypeId)>> { + SessionKeys::decode_into_raw_public_keys(&encoded) + } - impl fp_rpc::ConvertTransactionRuntimeApi for Runtime { - fn convert_transaction(transaction: pallet_ethereum::Transaction) -> ::Extrinsic { - UncheckedExtrinsic::new_unsigned( - pallet_ethereum::Call::::transact { transaction }.into(), - ) - } - } + fn generate_session_keys(seed: Option>) -> Vec { + SessionKeys::generate(seed) + } + } - impl sp_session::SessionKeys for Runtime { - fn decode_session_keys( - encoded: Vec, - ) -> Option, KeyTypeId)>> { - SessionKeys::decode_into_raw_public_keys(&encoded) - } + impl sp_consensus_aura::AuraApi 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 { - SessionKeys::generate(seed) - } - } + fn authorities() -> Vec { + Aura::authorities().to_vec() + } + } - impl sp_consensus_aura::AuraApi for Runtime { - fn slot_duration() -> sp_consensus_aura::SlotDuration { - sp_consensus_aura::SlotDuration::from_millis(Aura::slot_duration()) - } + impl cumulus_primitives_core::CollectCollationInfo for Runtime { + fn collect_collation_info(header: &::Header) -> cumulus_primitives_core::CollationInfo { + ParachainSystem::collect_collation_info(header) + } + } - fn authorities() -> Vec { - Aura::authorities().to_vec() - } - } + impl frame_system_rpc_runtime_api::AccountNonceApi for Runtime { + fn account_nonce(account: AccountId) -> Nonce { + System::account_nonce(account) + } + } - impl cumulus_primitives_core::CollectCollationInfo for Runtime { - fn collect_collation_info(header: &::Header) -> cumulus_primitives_core::CollationInfo { - ParachainSystem::collect_collation_info(header) - } - } + impl pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi for Runtime { + fn query_info(uxt: ::Extrinsic, len: u32) -> RuntimeDispatchInfo { + TransactionPayment::query_info(uxt, len) + } + fn query_fee_details(uxt: ::Extrinsic, len: u32) -> FeeDetails { + 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 for Runtime { - fn account_nonce(account: AccountId) -> Index { - System::account_nonce(account) - } - } + #[cfg(feature = "runtime-benchmarks")] + impl frame_benchmarking::Benchmark for Runtime { + fn benchmark_metadata(extra: bool) -> ( + Vec, + Vec, + ) { + use frame_benchmarking::{list_benchmark, Benchmarking, BenchmarkList}; + use frame_support::traits::StorageInfoTrait; - impl pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi for Runtime { - fn query_info(uxt: ::Extrinsic, len: u32) -> RuntimeDispatchInfo { - TransactionPayment::query_info(uxt, len) - } - fn query_fee_details(uxt: ::Extrinsic, len: u32) -> FeeDetails { - 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::::new(); + list_benchmark!(list, extra, pallet_xcm, PolkadotXcm); - /* - impl pallet_contracts_rpc_runtime_api::ContractsApi - for Runtime - { - fn call( - origin: AccountId, - dest: AccountId, - value: Balance, - gas_limit: u64, - input_data: Vec, - ) -> 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, - data: Vec, - salt: Vec, - ) -> pallet_contracts_primitives::ContractInstantiateResult - { - 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 { - Contracts::rent_projection(address) - } - } - */ + #[cfg(feature = "refungible")] + list_benchmark!(list, extra, pallet_refungible, Refungible); - #[cfg(feature = "runtime-benchmarks")] - impl frame_benchmarking::Benchmark for Runtime { - fn benchmark_metadata(extra: bool) -> ( - Vec, - Vec, - ) { - 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::::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, 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 = 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::::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, 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 = 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::::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 for Runtime { + #[allow(unused_variables)] + fn pov_estimate(uxt: Vec) -> ApplyExtrinsicResult { + #[cfg(feature = "pov-estimate")] + { + use parity_scale_codec::Decode; - impl up_pov_estimate_rpc::PovEstimateApi for Runtime { - #[allow(unused_variables)] - fn pov_estimate(uxt: Vec) -> ApplyExtrinsicResult { - #[cfg(feature = "pov-estimate")] - { - use codec::Decode; + let uxt_decode = <::Extrinsic as Decode>::decode(&mut &*uxt) + .map_err(|_| DispatchError::Other("failed to decode the extrinsic")); - let uxt_decode = <::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 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 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 for Runtime { + fn convert_transaction( + transaction: pallet_ethereum::Transaction + ) -> ::Extrinsic { + UncheckedExtrinsic::new_unsigned( + pallet_ethereum::Call::::transact { transaction }.into(), + ) + } + } + } + } } --- 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 . -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, --- a/runtime/common/sponsoring.rs +++ b/runtime/common/sponsoring.rs @@ -15,25 +15,25 @@ // along with Unique Network. If not, see . 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 Config for T where T: UniqueConfig + FungibleConfig + NonfungibleConfig + RefungibleConfig {} @@ -79,7 +79,7 @@ return None; } - let block_number = >::block_number() as T::BlockNumber; + let block_number = >::block_number() as BlockNumberFor; let limit = collection.limits.sponsored_data_rate_limit()?; if let Some(last_tx_block) = TokenPropertyBasket::::get(collection.id, item_id) { @@ -123,7 +123,7 @@ } // sponsor timeout - let block_number = >::block_number() as T::BlockNumber; + let block_number = >::block_number() as BlockNumberFor; let limit = collection .limits .sponsor_transfer_timeout(match collection.mode { @@ -169,7 +169,7 @@ properties: &CreateItemData, ) -> Option<()> { // sponsor timeout - let block_number = >::block_number() as T::BlockNumber; + let block_number = >::block_number() as BlockNumberFor; let limit = collection .limits .sponsor_transfer_timeout(match properties { @@ -195,7 +195,7 @@ item_id: &TokenId, ) -> Option<()> { // sponsor timeout - let block_number = >::block_number() as T::BlockNumber; + let block_number = >::block_number() as BlockNumberFor; let limit = collection.limits.sponsor_approve_timeout(); let last_tx_block = match collection.mode { @@ -307,7 +307,7 @@ pub trait SponsorshipPredict { fn predict(collection: CollectionId, account: T::CrossAccountId, token: TokenId) -> Option where - u64: From<::BlockNumber>; + u64: From>; } pub struct UniqueSponsorshipPredict(PhantomData); @@ -315,13 +315,13 @@ impl SponsorshipPredict for UniqueSponsorshipPredict { fn predict(collection_id: CollectionId, who: T::CrossAccountId, token: TokenId) -> Option where - u64: From<::BlockNumber>, + u64: From>, { let collection = >::try_get(collection_id).ok()?; let _ = collection.sponsorship.sponsor()?; // sponsor timeout - let block_number = >::block_number() as T::BlockNumber; + let block_number = >::block_number() as BlockNumberFor; let limit = collection .limits .sponsor_transfer_timeout(match collection.mode { --- 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 . +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 = ::Signer; fn get_account_id_from_seed(seed: &str) -> AccountId @@ -94,13 +95,14 @@ .map(|acc| get_account_id_from_seed::(acc)) .collect::>(); - 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::("Alice"), @@ -119,8 +121,9 @@ }, parachain_info: ParachainInfoConfig { parachain_id: PARA_ID.into(), + ..Default::default() }, - ..GenesisConfig::default() + ..Default::default() }; cfg.build_storage().unwrap().into() --- 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 . -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::::Attempted( - Outcome::Incomplete(_weight, Error::NoPermission), - )) => { /* Pass */ } + RuntimeEvent::PolkadotXcm(pallet_xcm::Event::::Attempted { + outcome: Outcome::Incomplete(_weight, Error::NoPermission), + }) => { /* Pass */ } _ => panic!( "Expected PolkadotXcm.Attempted(Incomplete(_weight, NoPermission)),\ found: {xcm_event:#?}" --- a/runtime/common/weights/mod.rs +++ b/runtime/common/weights/mod.rs @@ -15,20 +15,21 @@ // along with Unique Network. If not, see . 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; --- 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 } --- 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, --- 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 . 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 = { --- 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 } --- 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, --- 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 . 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; --- 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"] } --- /dev/null +++ b/runtime/tests/src/dispatch.rs @@ -0,0 +1 @@ +../../common/dispatch.rs \ No newline at end of file --- 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; -type Block = frame_system::mocking::MockBlock; +type Block = frame_system::mocking::MockBlockU32; #[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}, - Common: pallet_common::{Pallet, Storage, Event}, - Fungible: pallet_fungible::{Pallet, Storage}, - Refungible: pallet_refungible::{Pallet, Storage}, - Nonfungible: pallet_nonfungible::{Pallet, Storage}, - Structure: pallet_structure::{Pallet, Storage, Event}, - TransactionPayment: pallet_transaction_payment::{Pallet, Storage, Event}, - Ethereum: pallet_ethereum::{Pallet, Config, Call, Storage, Event, Origin}, - EVM: pallet_evm::{Pallet, Config, Call, Storage, Event}, + 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; - 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; - 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::() + >::default() + .build_storage() .unwrap() .into() } --- a/runtime/tests/src/tests.rs +++ b/runtime/tests/src/tests.rs @@ -15,19 +15,22 @@ // along with Unique Network. If not, see . // 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 bool>( i: usize, test_case: &pallet_common::tests::TestCase, --- /dev/null +++ b/runtime/tests/src/weights @@ -0,0 +1 @@ +../../common/weights \ No newline at end of file --- 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 } --- 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, --- 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 . 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; --- 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"] --- 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*/ { --- 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 . - -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 => { - 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); -}); --- 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); } --- 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, --- 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, --- 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, --- 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,