From 200c1530a4014124750a86e09b7cb1df68d11a72 Mon Sep 17 00:00:00 2001 From: Luke Parker Date: Tue, 26 Aug 2025 14:32:55 -0400 Subject: [PATCH] WIP changes to validator-sets Actually use the added `Allocations` abstraction Start using the sessions API in the validator-sets pallet Get a `substrate/validator-sets` approximate to compiling --- Cargo.lock | 217 +++++----- substrate/abi/Cargo.toml | 6 +- substrate/client/Cargo.toml | 6 +- substrate/coins/Cargo.toml | 12 +- substrate/dex/Cargo.toml | 16 +- substrate/economic-security/Cargo.toml | 18 +- substrate/emissions/Cargo.toml | 8 +- substrate/genesis-liquidity/Cargo.toml | 10 +- substrate/in-instructions/Cargo.toml | 20 +- substrate/node/Cargo.toml | 56 +-- substrate/primitives/Cargo.toml | 2 +- substrate/primitives/src/network_id.rs | 19 +- substrate/runtime/Cargo.toml | 16 +- substrate/signals/Cargo.toml | 8 +- substrate/validator-sets/Cargo.toml | 16 +- substrate/validator-sets/README.md | 4 + substrate/validator-sets/src/lib.rs | 513 ++++++----------------- substrate/validator-sets/src/sessions.rs | 5 +- 18 files changed, 353 insertions(+), 599 deletions(-) create mode 100644 substrate/validator-sets/README.md diff --git a/Cargo.lock b/Cargo.lock index a016fafd..cc1a1a47 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3410,7 +3410,7 @@ checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "fork-tree" version = "13.0.1" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "parity-scale-codec", ] @@ -3443,7 +3443,7 @@ checksum = "28dd6caf6059519a65843af8fe2a3ae298b14b80179855aeb4adc2c1934ee619" [[package]] name = "frame-benchmarking" version = "40.2.1" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "frame-support", "frame-support-procedural", @@ -3467,7 +3467,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "40.0.1" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "aquamarine", "frame-support", @@ -3497,7 +3497,7 @@ dependencies = [ [[package]] name = "frame-support" version = "40.1.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "aquamarine", "array-bytes", @@ -3537,7 +3537,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "33.0.1" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "Inflector", "cfg-expr", @@ -3557,7 +3557,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "13.0.1" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 3.3.0", @@ -3569,7 +3569,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "12.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "proc-macro2", "quote", @@ -3579,7 +3579,7 @@ dependencies = [ [[package]] name = "frame-system" version = "40.2.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "cfg-if", "docify", @@ -3598,7 +3598,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "36.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "docify", "parity-scale-codec", @@ -3608,7 +3608,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.46.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "frame-support", "parity-scale-codec", @@ -6664,7 +6664,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "40.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "frame-support", "frame-system", @@ -6677,7 +6677,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "40.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "frame-benchmarking", "frame-support", @@ -6700,7 +6700,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "40.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "frame-benchmarking", "frame-support", @@ -6722,7 +6722,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "40.0.1" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "frame-support", "frame-system", @@ -6743,7 +6743,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "39.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "docify", "frame-benchmarking", @@ -6762,7 +6762,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "40.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "frame-benchmarking", "frame-support", @@ -6778,7 +6778,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "43.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6794,7 +6794,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "40.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -8436,7 +8436,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "31.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "log", "sp-core", @@ -8447,7 +8447,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.50.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "async-trait", "futures", @@ -8475,7 +8475,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.49.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "futures", "log", @@ -8496,7 +8496,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.44.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "parity-scale-codec", "sp-api", @@ -8511,7 +8511,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "43.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "array-bytes", "docify", @@ -8537,7 +8537,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "12.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", @@ -8548,7 +8548,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.52.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "array-bytes", "chrono", @@ -8589,7 +8589,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "39.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "fnv", "futures", @@ -8615,7 +8615,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.46.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "hash-db", "kvdb", @@ -8641,7 +8641,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.49.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "async-trait", "futures", @@ -8664,7 +8664,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.50.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "async-trait", "fork-tree", @@ -8700,7 +8700,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.49.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8713,7 +8713,7 @@ dependencies = [ [[package]] name = "sc-consensus-grandpa" version = "0.35.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "ahash", "array-bytes", @@ -8757,7 +8757,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.49.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "async-trait", "futures", @@ -8780,7 +8780,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.42.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "parity-scale-codec", "parking_lot 0.12.4", @@ -8803,7 +8803,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.38.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "polkavm", "sc-allocator", @@ -8816,7 +8816,7 @@ dependencies = [ [[package]] name = "sc-executor-polkavm" version = "0.35.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "log", "polkavm", @@ -8827,7 +8827,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.38.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "anyhow", "log", @@ -8843,7 +8843,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.49.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "console", "futures", @@ -8859,7 +8859,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "35.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "array-bytes", "parking_lot 0.12.4", @@ -8873,7 +8873,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.50.1" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "array-bytes", "async-channel", @@ -8920,7 +8920,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.48.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "bitflags 1.3.2", "parity-scale-codec", @@ -8930,7 +8930,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.50.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "ahash", "futures", @@ -8949,7 +8949,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.49.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "array-bytes", "async-channel", @@ -8970,7 +8970,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.49.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "array-bytes", "async-channel", @@ -9005,7 +9005,7 @@ dependencies = [ [[package]] name = "sc-network-transactions" version = "0.49.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "array-bytes", "futures", @@ -9024,7 +9024,7 @@ dependencies = [ [[package]] name = "sc-network-types" version = "0.16.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "bs58", "bytes", @@ -9043,7 +9043,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "45.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "bytes", "fnv", @@ -9077,7 +9077,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.20.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -9086,7 +9086,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "45.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "futures", "jsonrpsee", @@ -9116,7 +9116,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.49.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -9135,7 +9135,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "22.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "dyn-clone", "forwarded-header-value", @@ -9159,7 +9159,7 @@ dependencies = [ [[package]] name = "sc-rpc-spec-v2" version = "0.50.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "array-bytes", "futures", @@ -9192,7 +9192,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.51.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "async-trait", "directories", @@ -9255,7 +9255,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.38.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "log", "parity-scale-codec", @@ -9266,7 +9266,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "42.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "derive_more 0.99.20", "futures", @@ -9286,7 +9286,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "28.1.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "chrono", "futures", @@ -9305,7 +9305,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "39.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "chrono", "console", @@ -9333,7 +9333,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "11.1.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", @@ -9344,7 +9344,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "39.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "async-trait", "futures", @@ -9376,7 +9376,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "39.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "async-trait", "futures", @@ -9393,7 +9393,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "18.0.1" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "async-channel", "futures", @@ -10600,6 +10600,7 @@ dependencies = [ "scale-info", "serai-coins-pallet", "serai-primitives", + "sp-api", "sp-core", "sp-io", "sp-runtime", @@ -10983,7 +10984,7 @@ dependencies = [ [[package]] name = "sp-api" version = "36.0.1" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "docify", "hash-db", @@ -11005,7 +11006,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "22.0.1" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "Inflector", "blake2 0.10.6", @@ -11019,7 +11020,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "40.1.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "parity-scale-codec", "scale-info", @@ -11031,7 +11032,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "26.1.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "docify", "integer-sqrt", @@ -11045,7 +11046,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "36.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "parity-scale-codec", "scale-info", @@ -11057,7 +11058,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "36.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "sp-api", "sp-inherents", @@ -11067,7 +11068,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "39.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "futures", "parity-scale-codec", @@ -11086,7 +11087,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.42.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "async-trait", "futures", @@ -11100,7 +11101,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.42.1" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "async-trait", "parity-scale-codec", @@ -11118,7 +11119,7 @@ dependencies = [ [[package]] name = "sp-consensus-grandpa" version = "23.1.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "finality-grandpa", "log", @@ -11135,7 +11136,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.42.1" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "parity-scale-codec", "scale-info", @@ -11146,7 +11147,7 @@ dependencies = [ [[package]] name = "sp-core" version = "36.1.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "array-bytes", "bitflags 1.3.2", @@ -11191,7 +11192,7 @@ dependencies = [ [[package]] name = "sp-crypto-hashing" version = "0.1.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "blake2b_simd", "byteorder", @@ -11204,7 +11205,7 @@ dependencies = [ [[package]] name = "sp-crypto-hashing-proc-macro" version = "0.1.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "quote", "sp-crypto-hashing", @@ -11214,7 +11215,7 @@ dependencies = [ [[package]] name = "sp-database" version = "10.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "kvdb", "parking_lot 0.12.4", @@ -11223,7 +11224,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "14.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "proc-macro2", "quote", @@ -11233,7 +11234,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.30.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "environmental", "parity-scale-codec", @@ -11243,7 +11244,7 @@ dependencies = [ [[package]] name = "sp-genesis-builder" version = "0.17.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "parity-scale-codec", "scale-info", @@ -11255,7 +11256,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "36.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11268,7 +11269,7 @@ dependencies = [ [[package]] name = "sp-io" version = "40.0.1" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "bytes", "docify", @@ -11294,7 +11295,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "41.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "sp-core", "sp-runtime", @@ -11304,7 +11305,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.42.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "parity-scale-codec", "parking_lot 0.12.4", @@ -11315,7 +11316,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "11.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "thiserror 2.0.16", "zstd", @@ -11324,7 +11325,7 @@ dependencies = [ [[package]] name = "sp-metadata-ir" version = "0.10.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "frame-metadata", "parity-scale-codec", @@ -11334,7 +11335,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "36.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "sp-api", "sp-core", @@ -11344,7 +11345,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "13.0.2" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "backtrace", "regex", @@ -11353,7 +11354,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "34.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "rustc-hash 1.1.0", "serde", @@ -11363,7 +11364,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "41.1.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "docify", "either", @@ -11391,7 +11392,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "29.0.1" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "bytes", "impl-trait-for-tuples", @@ -11410,7 +11411,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "18.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "Inflector", "expander", @@ -11423,7 +11424,7 @@ dependencies = [ [[package]] name = "sp-session" version = "38.1.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "parity-scale-codec", "scale-info", @@ -11437,7 +11438,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "38.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -11450,7 +11451,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.45.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "hash-db", "log", @@ -11470,12 +11471,12 @@ dependencies = [ [[package]] name = "sp-std" version = "14.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" [[package]] name = "sp-storage" version = "22.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11487,7 +11488,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "36.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "async-trait", "parity-scale-codec", @@ -11499,7 +11500,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "17.1.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "parity-scale-codec", "tracing", @@ -11510,7 +11511,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "36.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "sp-api", "sp-runtime", @@ -11519,7 +11520,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "39.1.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "ahash", "hash-db", @@ -11541,7 +11542,7 @@ dependencies = [ [[package]] name = "sp-version" version = "39.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11558,7 +11559,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "15.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "parity-scale-codec", "proc-macro-warning", @@ -11570,7 +11571,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "21.0.1" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "anyhow", "impl-trait-for-tuples", @@ -11582,7 +11583,7 @@ dependencies = [ [[package]] name = "sp-weights" version = "31.1.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "bounded-collections", "parity-scale-codec", @@ -11759,7 +11760,7 @@ dependencies = [ [[package]] name = "substrate-bip39" version = "0.6.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "hmac 0.12.1", "pbkdf2", @@ -11771,12 +11772,12 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "11.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" [[package]] name = "substrate-frame-rpc-system" version = "44.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "docify", "frame-system-rpc-runtime-api", @@ -11796,7 +11797,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.17.3" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "http-body-util", "hyper 1.4.1", @@ -11810,7 +11811,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "26.0.1" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=2bfdaed4b3614de2fe7d10e4ece3e6a912833e90#2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=74839cba4a7f48023080215e5194fd6ab7e270e5#74839cba4a7f48023080215e5194fd6ab7e270e5" dependencies = [ "build-helper", "cargo_metadata", diff --git a/substrate/abi/Cargo.toml b/substrate/abi/Cargo.toml index 6f1d1f9d..bd059889 100644 --- a/substrate/abi/Cargo.toml +++ b/substrate/abi/Cargo.toml @@ -22,13 +22,13 @@ workspace = true borsh = { version = "1", default-features = false, features = ["derive", "de_strict_order"] } bitvec = { version = "1", default-features = false, features = ["alloc"] } -sp-core = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } +sp-core = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } serde = { version = "1", default-features = false, features = ["derive"], optional = true } scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"], optional = true } scale-info = { version = "2", default-features = false, features = ["derive"], optional = true } -sp-runtime = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false, features = ["serde"], optional = true } -frame-support = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false, optional = true } +sp-runtime = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false, features = ["serde"], optional = true } +frame-support = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false, optional = true } serai-primitives = { path = "../primitives", version = "0.1", default-features = false } diff --git a/substrate/client/Cargo.toml b/substrate/client/Cargo.toml index 09252326..8a9af82f 100644 --- a/substrate/client/Cargo.toml +++ b/substrate/client/Cargo.toml @@ -31,9 +31,9 @@ serde_json = { version = "1", optional = true } serai-abi = { path = "../abi", version = "0.1" } multiaddr = { version = "0.18", optional = true } -sp-core = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", optional = true } -sp-runtime = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", optional = true } -frame-system = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", optional = true } +sp-core = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", optional = true } +sp-runtime = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", optional = true } +frame-system = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", optional = true } async-lock = "3" diff --git a/substrate/coins/Cargo.toml b/substrate/coins/Cargo.toml index 5a225442..375a0869 100644 --- a/substrate/coins/Cargo.toml +++ b/substrate/coins/Cargo.toml @@ -22,17 +22,17 @@ workspace = true scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"] } scale-info = { version = "2", default-features = false, features = ["derive"] } -sp-core = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -sp-std = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -sp-runtime = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } +sp-core = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +sp-std = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +sp-runtime = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } -frame-system = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -frame-support = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } +frame-system = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +frame-support = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } serai-primitives = { path = "../primitives", default-features = false, features = ["serde", "non_canonical_scale_derivations"] } [dev-dependencies] -sp-io = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false, features = ["std"] } +sp-io = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false, features = ["std"] } [features] std = [ diff --git a/substrate/dex/Cargo.toml b/substrate/dex/Cargo.toml index 441de127..e96900a6 100644 --- a/substrate/dex/Cargo.toml +++ b/substrate/dex/Cargo.toml @@ -22,15 +22,15 @@ workspace = true scale = { package = "parity-scale-codec", version = "3.6.1", default-features = false } scale-info = { version = "2.5.0", default-features = false, features = ["derive"] } -sp-std = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -sp-io = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -sp-api = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -sp-runtime = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -sp-core = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } +sp-std = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +sp-io = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +sp-api = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +sp-runtime = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +sp-core = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } -frame-system = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -frame-support = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -frame-benchmarking = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false, optional = true } +frame-system = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +frame-support = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +frame-benchmarking = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false, optional = true } coins-pallet = { package = "serai-coins-pallet", path = "../coins", default-features = false } diff --git a/substrate/economic-security/Cargo.toml b/substrate/economic-security/Cargo.toml index 8de1db43..65e65794 100644 --- a/substrate/economic-security/Cargo.toml +++ b/substrate/economic-security/Cargo.toml @@ -22,8 +22,8 @@ workspace = true scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"] } scale-info = { version = "2", default-features = false, features = ["derive"] } -frame-system = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -frame-support = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } +frame-system = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +frame-support = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } dex-pallet = { package = "serai-dex-pallet", path = "../dex", default-features = false } coins-pallet = { package = "serai-coins-pallet", path = "../coins", default-features = false } @@ -31,16 +31,16 @@ coins-pallet = { package = "serai-coins-pallet", path = "../coins", default-feat serai-primitives = { path = "../primitives", default-features = false } [dev-dependencies] -pallet-babe = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -pallet-grandpa = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -pallet-timestamp = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } +pallet-babe = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +pallet-grandpa = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +pallet-timestamp = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } validator-sets-pallet = { package = "serai-validator-sets-pallet", path = "../validator-sets", default-features = false } -sp-io = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -sp-runtime = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -sp-core = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -sp-consensus-babe = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } +sp-io = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +sp-runtime = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +sp-core = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +sp-consensus-babe = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } [features] std = [ diff --git a/substrate/emissions/Cargo.toml b/substrate/emissions/Cargo.toml index a3dfa14c..f2af02ca 100644 --- a/substrate/emissions/Cargo.toml +++ b/substrate/emissions/Cargo.toml @@ -22,11 +22,11 @@ workspace = true scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"] } scale-info = { version = "2", default-features = false, features = ["derive"] } -frame-system = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -frame-support = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } +frame-system = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +frame-support = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } -sp-std = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -sp-runtime = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } +sp-std = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +sp-runtime = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } coins-pallet = { package = "serai-coins-pallet", path = "../coins", default-features = false } validator-sets-pallet = { package = "serai-validator-sets-pallet", path = "../validator-sets", default-features = false } diff --git a/substrate/genesis-liquidity/Cargo.toml b/substrate/genesis-liquidity/Cargo.toml index 2826281e..0cdcb1f6 100644 --- a/substrate/genesis-liquidity/Cargo.toml +++ b/substrate/genesis-liquidity/Cargo.toml @@ -22,12 +22,12 @@ workspace = true scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"] } scale-info = { version = "2", default-features = false, features = ["derive"] } -frame-system = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -frame-support = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } +frame-system = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +frame-support = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } -sp-std = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -sp-core = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -sp-application-crypto = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } +sp-std = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +sp-core = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +sp-application-crypto = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } dex-pallet = { package = "serai-dex-pallet", path = "../dex", default-features = false } coins-pallet = { package = "serai-coins-pallet", path = "../coins", default-features = false } diff --git a/substrate/in-instructions/Cargo.toml b/substrate/in-instructions/Cargo.toml index 8111ea9e..39cd3427 100644 --- a/substrate/in-instructions/Cargo.toml +++ b/substrate/in-instructions/Cargo.toml @@ -25,14 +25,14 @@ bitvec = { version = "1", default-features = false, features = ["alloc"] } scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive", "max-encoded-len"] } scale-info = { version = "2", default-features = false, features = ["derive"] } -sp-std = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -sp-application-crypto = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -sp-io = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -sp-runtime = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -sp-core = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } +sp-std = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +sp-application-crypto = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +sp-io = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +sp-runtime = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +sp-core = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } -frame-system = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -frame-support = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } +frame-system = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +frame-support = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } serai-primitives = { path = "../primitives", default-features = false } @@ -43,9 +43,9 @@ genesis-liquidity-pallet = { package = "serai-genesis-liquidity-pallet", path = emissions-pallet = { package = "serai-emissions-pallet", path = "../emissions", default-features = false } [dev-dependencies] -pallet-babe = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -pallet-grandpa = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -pallet-timestamp = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } +pallet-babe = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +pallet-grandpa = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +pallet-timestamp = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } economic-security-pallet = { package = "serai-economic-security-pallet", path = "../economic-security", default-features = false } diff --git a/substrate/node/Cargo.toml b/substrate/node/Cargo.toml index ed1b17a7..9d11d5dd 100644 --- a/substrate/node/Cargo.toml +++ b/substrate/node/Cargo.toml @@ -34,16 +34,16 @@ secq256k1 = { path = "../../crypto/secq256k1" } libp2p = "0.54" -sp-core = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } -sp-keystore = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } -sp-timestamp = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } -sp-io = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } -sp-blockchain = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } -sp-api = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } -sp-block-builder = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } -sp-consensus-babe = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } +sp-core = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5" } +sp-keystore = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5" } +sp-timestamp = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5" } +sp-io = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5" } +sp-blockchain = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5" } +sp-api = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5" } +sp-block-builder = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5" } +sp-consensus-babe = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5" } -frame-benchmarking = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } +frame-benchmarking = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5" } serai-runtime = { path = "../runtime", features = ["std"] } @@ -55,28 +55,28 @@ jsonrpsee = { version = "0.24", features = ["server"] } scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"] } -sc-offchain = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } -sc-transaction-pool = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } -sc-transaction-pool-api = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } -sc-basic-authorship = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } -sc-executor = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } -sc-service = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } -sc-client-api = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } -sc-network-common = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } -sc-network = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false, features = [] } +sc-offchain = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5" } +sc-transaction-pool = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5" } +sc-transaction-pool-api = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5" } +sc-basic-authorship = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5" } +sc-executor = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5" } +sc-service = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5" } +sc-client-api = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5" } +sc-network-common = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5" } +sc-network = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false, features = [] } -sc-consensus = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } -sc-consensus-babe = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } -sc-consensus-grandpa = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } -sc-authority-discovery = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } +sc-consensus = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5" } +sc-consensus-babe = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5" } +sc-consensus-grandpa = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5" } +sc-authority-discovery = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5" } -sc-telemetry = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } -sc-cli = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false, features = ["rocksdb"] } +sc-telemetry = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5" } +sc-cli = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false, features = ["rocksdb"] } -sc-rpc-api = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } +sc-rpc-api = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5" } -substrate-frame-rpc-system = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } -pallet-transaction-payment-rpc = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } +substrate-frame-rpc-system = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5" } +pallet-transaction-payment-rpc = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5" } serai-env = { path = "../../common/env" } @@ -85,7 +85,7 @@ bitcoin-serai = { path = "../../networks/bitcoin", default-features = false, fea monero-address = { git = "https://github.com/monero-oxide/monero-oxide", rev = "6966575e05fe09b77674c46984b21686ed9304ff", default-features = false, features = ["std"] } [build-dependencies] -substrate-build-script-utils = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } +substrate-build-script-utils = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5" } [features] default = [] diff --git a/substrate/primitives/Cargo.toml b/substrate/primitives/Cargo.toml index af708cc5..88401035 100644 --- a/substrate/primitives/Cargo.toml +++ b/substrate/primitives/Cargo.toml @@ -22,7 +22,7 @@ borsh = { version = "1", default-features = false, features = ["derive", "de_str bitvec = { version = "1", default-features = false, features = ["alloc"] } scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"], optional = true } scale-info = { version = "2", default-features = false, features = ["derive"], optional = true } -sp-core = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } +sp-core = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } ciphersuite = { path = "../../crypto/ciphersuite", default-features = false, features = ["alloc"] } dalek-ff-group = { path = "../../crypto/dalek-ff-group", default-features = false, features = ["alloc"] } diff --git a/substrate/primitives/src/network_id.rs b/substrate/primitives/src/network_id.rs index 8a963fb9..d71fd542 100644 --- a/substrate/primitives/src/network_id.rs +++ b/substrate/primitives/src/network_id.rs @@ -6,6 +6,16 @@ use crate::coin::{ExternalCoin, Coin}; /// Identifier for an embedded elliptic curve. #[derive(Clone, Copy, PartialEq, Eq, Debug, Zeroize, BorshSerialize, BorshDeserialize)] +#[cfg_attr( + feature = "non_canonical_scale_derivations", + derive( + scale::Encode, + scale::Decode, + scale::MaxEncodedLen, + scale::DecodeWithMemTracking, + scale_info::TypeInfo + ) +)] pub enum EmbeddedEllipticCurve { /// The Embedwards25519 curve, defined over (embedded into) Ed25519's/Ristretto's scalar field. Embedwards25519, @@ -50,14 +60,17 @@ impl ExternalNetworkId { /// /// This is guaranteed to return `[Embedwards25519]` or /// `[Embedwards25519, *network specific curve*]`. - pub fn embedded_elliptic_curves(&self) -> &'static [EmbeddedEllipticCurve] { + pub fn embedded_elliptic_curves(&self) -> impl Iterator { match self { // We need to generate a Ristretto key for oraclizing and a Secp256k1 key for the network Self::Bitcoin | Self::Ethereum => { - &[EmbeddedEllipticCurve::Embedwards25519, EmbeddedEllipticCurve::Secq256k1] + [EmbeddedEllipticCurve::Embedwards25519, EmbeddedEllipticCurve::Secq256k1] + .as_slice() + .iter() + .copied() } // Since the oraclizing key curve is the same as the network's curve, we only need it - Self::Monero => &[EmbeddedEllipticCurve::Embedwards25519], + Self::Monero => [EmbeddedEllipticCurve::Embedwards25519].as_slice().iter().copied(), } } diff --git a/substrate/runtime/Cargo.toml b/substrate/runtime/Cargo.toml index 3565d645..7a6130ca 100644 --- a/substrate/runtime/Cargo.toml +++ b/substrate/runtime/Cargo.toml @@ -23,21 +23,21 @@ borsh = { version = "1", default-features = false, features = ["derive", "de_str scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"] } scale-info = { version = "2", default-features = false, features = ["derive"] } -sp-core = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -sp-version = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -sp-runtime = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -sp-api = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } +sp-core = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +sp-version = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +sp-runtime = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +sp-api = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } serai-abi = { path = "../abi", default-features = false, features = ["substrate"] } -frame-system = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -frame-support = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -frame-executive = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } +frame-system = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +frame-support = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +frame-executive = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } serai-coins-pallet = { path = "../coins", default-features = false } [build-dependencies] -substrate-wasm-builder = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } +substrate-wasm-builder = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5" } [features] std = [ diff --git a/substrate/signals/Cargo.toml b/substrate/signals/Cargo.toml index fb285ef4..1ac5ff94 100644 --- a/substrate/signals/Cargo.toml +++ b/substrate/signals/Cargo.toml @@ -22,11 +22,11 @@ workspace = true scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"] } scale-info = { version = "2", default-features = false, features = ["derive"] } -sp-core = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -sp-io = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } +sp-core = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +sp-io = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } -frame-system = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -frame-support = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } +frame-system = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +frame-support = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } serai-primitives = { path = "../primitives", default-features = false } diff --git a/substrate/validator-sets/Cargo.toml b/substrate/validator-sets/Cargo.toml index 17a674ea..e7a94444 100644 --- a/substrate/validator-sets/Cargo.toml +++ b/substrate/validator-sets/Cargo.toml @@ -21,21 +21,22 @@ bitvec = { version = "1", default-features = false, features = ["alloc", "serde" scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive", "bit-vec"] } scale-info = { version = "2", default-features = false, features = ["derive", "bit-vec"] } -sp-core = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -sp-io = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -sp-runtime = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } +sp-core = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +sp-io = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +sp-runtime = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +sp-api = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } -frame-system = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } -frame-support = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } +frame-system = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } +frame-support = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } serai-primitives = { path = "../primitives", default-features = false, features = ["non_canonical_scale_derivations"] } coins-pallet = { package = "serai-coins-pallet", path = "../coins", default-features = false } [dev-dependencies] -#pallet-timestamp = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } +#pallet-timestamp = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } -#sp-consensus-babe = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } +#sp-consensus-babe = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false } #ciphersuite = { path = "../../../crypto/ciphersuite", default-features = false, features = ["std"] } #dalek-ff-group = { path = "../../../crypto/dalek-ff-group", default-features = false, features = ["std"] } @@ -58,6 +59,7 @@ std = [ "sp-core/std", "sp-io/std", "sp-runtime/std", + "sp-api/std", "frame-system/std", "frame-support/std", diff --git a/substrate/validator-sets/README.md b/substrate/validator-sets/README.md new file mode 100644 index 00000000..0162cc09 --- /dev/null +++ b/substrate/validator-sets/README.md @@ -0,0 +1,4 @@ +# Validator Sets + +This pallet is responsible for managing the allocations of, inclusion of, and +rotation of validators. diff --git a/substrate/validator-sets/src/lib.rs b/substrate/validator-sets/src/lib.rs index 3d955f4a..1b9ff74c 100644 --- a/substrate/validator-sets/src/lib.rs +++ b/substrate/validator-sets/src/lib.rs @@ -1,11 +1,16 @@ +#![cfg_attr(docsrs, feature(doc_auto_cfg))] +#![doc = include_str!("../README.md")] #![cfg_attr(not(feature = "std"), no_std)] -#[cfg(test)] -mod mock; +extern crate alloc; -#[cfg(test)] -mod tests; +mod allocations; +use allocations::*; +mod sessions; +use sessions::{*, GenesisValidators as GenesisValidatorsContainer}; + +/* use core::marker::PhantomData; use scale::{Encode, Decode}; @@ -63,32 +68,37 @@ impl GetValidatorCount for MembershipProof { u32::try_from(Babe::::authorities().len()).unwrap() } } +*/ -#[allow( - deprecated, - unreachable_patterns, - clippy::let_unit_value, - clippy::cast_possible_truncation, - clippy::ignored_unit_patterns -)] // TODO #[frame_support::pallet] -pub mod pallet { +mod pallet { + use sp_core::sr25519::Public; + + use frame_system::pallet_prelude::*; + use frame_support::pallet_prelude::*; + + use serai_primitives::{ + crypto::KeyPair, + network_id::*, + coin::*, + balance::*, + validator_sets::*, + address::SeraiAddress, + }; + + use coins_pallet::Pallet as Coins; + use super::*; #[pallet::config] - pub trait Config: - frame_system::Config - + coins_pallet::Config - + dex_pallet::Config - + pallet_babe::Config - + pallet_grandpa::Config - + TypeInfo - { + #[pallet::disable_frame_system_supertrait_check] + pub trait Config: coins_pallet::Config { type RuntimeEvent: IsType<::RuntimeEvent> + From>; - type ShouldEndSession: ShouldEndSession>; + // type ShouldEndSession: ShouldEndSession>; } + /* TODO #[derive(Clone, PartialEq, Eq, Debug, Encode, Decode, serde::Serialize, serde::Deserialize)] pub struct AllEmbeddedEllipticCurveKeysAtGenesis { pub embedwards25519: BoundedVec>, @@ -112,26 +122,12 @@ pub mod pallet { GenesisConfig { networks: Default::default(), participants: Default::default() } } } + */ #[pallet::pallet] pub struct Pallet(PhantomData); - /// The current session for a network. - // Uses Identity for the lookup to avoid a hash of a severely limited fixed key-space. - #[pallet::storage] - #[pallet::getter(fn session)] - pub type CurrentSession = StorageMap<_, Identity, NetworkId, Session, OptionQuery>; - impl Pallet { - pub fn latest_decided_session(network: NetworkId) -> Option { - let session = Self::session(network); - // we already decided about the next session for serai. - if network == NetworkId::Serai { - return session.map(|s| Session(s.0 + 1)); - } - session - } - } - + /* /// The allocation required per key share. // Uses Identity for the lookup to avoid a hash of a severely limited fixed key-space. #[pallet::storage] @@ -158,50 +154,8 @@ pub mod pallet { #[pallet::storage] pub(crate) type InSet = StorageDoubleMap<_, Identity, NetworkId, Blake2_128Concat, Public, u64, OptionQuery>; - - impl Pallet { - // This exists as InSet, for Serai, is the validators set for the next session, *not* the - // current set's validators - #[inline] - fn in_active_serai_set(account: Public) -> bool { - // TODO: is_member is internally O(n). Update Babe to use an O(1) storage lookup? - Babe::::is_member(&BabeAuthorityId::from(account)) - } - - /// Returns true if the account is included in an active set. - /// - /// This will still include participants which were removed from the DKG. - pub fn in_active_set(network: NetworkId, account: Public) -> bool { - if network == NetworkId::Serai { - Self::in_active_serai_set(account) - } else { - InSet::::contains_key(network, account) - } - } - - /// Returns true if the account has been definitively included in an active or upcoming set. - /// - /// This will still include participants which were removed from the DKG. - pub fn in_set(network: NetworkId, account: Public) -> bool { - if InSet::::contains_key(network, account) { - return true; - } - - if network == NetworkId::Serai { - return Self::in_active_serai_set(account); - } - - false - } - - /// Returns true if the account is present in the latest decided set. - /// - /// This is useful when working with `allocation` and `total_allocated_stake`, which return the - /// latest information. - pub fn in_latest_decided_set(network: NetworkId, account: Public) -> bool { - InSet::::contains_key(network, account) - } } + */ /// A key on an embedded elliptic curve. #[pallet::storage] @@ -210,133 +164,58 @@ pub mod pallet { Blake2_128Concat, Public, Identity, - EmbeddedEllipticCurve, - BoundedVec>, + ExternalNetworkId, + serai_primitives::crypto::EmbeddedEllipticCurveKeys, OptionQuery, >; - /// The total stake allocated to this network by the active set of validators. + struct Abstractions(PhantomData); + + // Satisfy the `Allocations` abstraction + #[pallet::storage] - #[pallet::getter(fn total_allocated_stake)] - pub type TotalAllocatedStake = StorageMap<_, Identity, NetworkId, Amount, OptionQuery>; - - /// The current amount allocated to a validator set by a validator. - #[pallet::storage] - #[pallet::getter(fn allocation)] - pub type Allocations = - StorageMap<_, Blake2_128Concat, (NetworkId, Public), Amount, OptionQuery>; - /// A sorted view of the current allocations premised on the underlying DB itself being sorted. - /* - This uses Identity so we can take advantage of the DB's lexicographic ordering to iterate over - the key space from highest-to-lowest allocated. - - This does remove the protection using a hash algorithm here offers against spam attacks (by - flooding the DB with layers, increasing lookup time and merkle proof sizes, not that we use - merkle proofs as Polkadot does). - - Since amounts are represented with just 8 bytes, only 16 nibbles are presents. This caps the - potential depth caused by spam at 16 layers (as the underlying DB operates on nibbles). - - While there is an entire 32-byte public key after this, a Blake hash of the key is inserted - after the amount to prevent the key from also being used to cause layer spam. - - There's also a minimum stake requirement, which further reduces the potential for spam. - */ + type Allocations = + StorageMap<_, Blake2_128Concat, AllocationsKey, Amount, OptionQuery>; + // This has to use `Identity` per the documentation of `AllocationsStorage` #[pallet::storage] type SortedAllocations = - StorageMap<_, Identity, (NetworkId, [u8; 8], [u8; 16], Public), (), OptionQuery>; - impl Pallet { - #[inline] - fn sorted_allocation_key( - network: NetworkId, - key: Public, - amount: Amount, - ) -> (NetworkId, [u8; 8], [u8; 16], Public) { - let amount = reverse_lexicographic_order(amount.0.to_be_bytes()); - let hash = sp_io::hashing::blake2_128(&(network, amount, key).encode()); - (network, amount, hash, key) - } - fn recover_amount_from_sorted_allocation_key(key: &[u8]) -> Amount { - let distance_from_end = 8 + 16 + 32; - let start_pos = key.len() - distance_from_end; - let mut raw: [u8; 8] = key[start_pos .. (start_pos + 8)].try_into().unwrap(); - for byte in &mut raw { - *byte = !*byte; - } - Amount(u64::from_be_bytes(raw)) - } - fn recover_key_from_sorted_allocation_key(key: &[u8]) -> Public { - Public(key[(key.len() - 32) ..].try_into().unwrap()) - } - // Returns if this validator already had an allocation set. - fn set_allocation(network: NetworkId, key: Public, amount: Amount) -> bool { - let prior = Allocations::::take((network, key)); - if let Some(amount) = prior { - SortedAllocations::::remove(Self::sorted_allocation_key(network, key, amount)); - } - if amount.0 != 0 { - Allocations::::set((network, key), Some(amount)); - SortedAllocations::::set(Self::sorted_allocation_key(network, key, amount), Some(())); - } - prior.is_some() - } + StorageMap<_, Identity, SortedAllocationsKey, (), OptionQuery>; + + impl AllocationsStorage for Abstractions { + type Allocations = Allocations; + type SortedAllocations = SortedAllocations; } - // Doesn't use PrefixIterator as we need to yield the keys *and* values - // PrefixIterator only yields the values - struct SortedAllocationsIter { - _t: PhantomData, - prefix: Vec, - last: Vec, - allocation_per_key_share: Amount, - } - impl SortedAllocationsIter { - fn new(network: NetworkId) -> Self { - let mut prefix = SortedAllocations::::final_prefix().to_vec(); - prefix.extend(&network.encode()); - Self { - _t: PhantomData, - prefix: prefix.clone(), - last: prefix, - allocation_per_key_share: Pallet::::allocation_per_key_share(network).expect( - "SortedAllocationsIter iterating over a network without a set allocation per key share", - ), - } - } - } - impl Iterator for SortedAllocationsIter { - type Item = (Public, Amount); - fn next(&mut self) -> Option { - let next = sp_io::storage::next_key(&self.last)?; - if !next.starts_with(&self.prefix) { - None?; - } - let key = Pallet::::recover_key_from_sorted_allocation_key(&next); - let amount = Pallet::::recover_amount_from_sorted_allocation_key(&next); + // Satisfy the `Sessions` API - // We may have validators present, with less than the minimum allocation, due to block - // rewards - if amount.0 < self.allocation_per_key_share.0 { - None?; - } - - self.last = next; - Some((key, amount)) - } - } - - /// Pending deallocations, keyed by the Session they become unlocked on. + // We use `Identity` as the hasher for `NetworkId` due to how constrained it is #[pallet::storage] - #[pallet::getter(fn pending_deallocations)] - type PendingDeallocations = StorageDoubleMap< - _, - Blake2_128Concat, - (NetworkId, Public), - Identity, - Session, - Amount, - OptionQuery, - >; + type GenesisValidators = StorageValue<_, GenesisValidatorsContainer, OptionQuery>; + #[pallet::storage] + type AllocationPerKeyShare = StorageMap<_, Identity, NetworkId, Amount, OptionQuery>; + #[pallet::storage] + type CurrentSession = StorageMap<_, Identity, NetworkId, Session, OptionQuery>; + #[pallet::storage] + type LatestDecidedSession = StorageMap<_, Identity, NetworkId, Session, OptionQuery>; + // This has to use `Identity` per the documentation of `SessionsStorage` + #[pallet::storage] + type SelectedValidators = + StorageMap<_, Identity, SelectedValidatorsKey, u64, OptionQuery>; + #[pallet::storage] + type TotalAllocatedStake = StorageMap<_, Identity, NetworkId, Amount, OptionQuery>; + #[pallet::storage] + type DelayedDeallocations = + StorageDoubleMap<_, Blake2_128Concat, Public, Identity, Session, Amount, OptionQuery>; + + impl SessionsStorage for Abstractions { + type GenesisValidators = GenesisValidators; + type AllocationPerKeyShare = AllocationPerKeyShare; + type CurrentSession = CurrentSession; + type LatestDecidedSession = LatestDecidedSession; + type SelectedValidators = SelectedValidators; + type TotalAllocatedStake = TotalAllocatedStake; + type DelayedDeallocations = DelayedDeallocations; + } /// The generated key pair for a given validator set instance. #[pallet::storage] @@ -353,12 +232,6 @@ pub mod pallet { #[pallet::storage] pub type SeraiDisabledIndices = StorageMap<_, Identity, u32, Public, OptionQuery>; - /// Mapping from session to its starting block number. - #[pallet::storage] - #[pallet::getter(fn session_begin_block)] - pub type SessionBeginBlock = - StorageDoubleMap<_, Identity, NetworkId, Identity, Session, u64, ValueQuery>; - #[pallet::event] #[pallet::generate_deposit(pub(super) fn deposit_event)] pub enum Event { @@ -399,61 +272,15 @@ pub mod pallet { impl Pallet { fn new_set(network: NetworkId) { + // TODO + let include_genesis_validators = true; // TODO: prevent new set if it doesn't have enough stake for economic security. + Abstractions::::attempt_new_session(network, include_genesis_validators) - // Update CurrentSession - let session = { - let new_session = - CurrentSession::::get(network).map_or(Session(0), |session| Session(session.0 + 1)); - CurrentSession::::set(network, Some(new_session)); - new_session - }; - - // Clear the current InSet - assert_eq!( - InSet::::clear_prefix(network, MAX_KEY_SHARES_PER_SET_U32, None).maybe_cursor, - None - ); - - let allocation_per_key_share = Self::allocation_per_key_share(network).unwrap().0; - - let mut participants = vec![]; - let mut total_allocated_stake = 0; - { - let mut iter = SortedAllocationsIter::::new(network); - let mut key_shares = 0; - while key_shares < u64::from(MAX_KEY_SHARES_PER_SET_U32) { - let Some((key, amount)) = iter.next() else { break }; - - let these_key_shares = - (amount.0 / allocation_per_key_share).min(u64::from(MAX_KEY_SHARES_PER_SET_U32)); - participants.push((key, these_key_shares)); - - total_allocated_stake += amount.0; - key_shares += these_key_shares; - } - amortize_excess_key_shares(&mut participants); - } - - for (key, shares) in &participants { - InSet::::set(network, key, Some(*shares)); - } - + /* TODO let set = ValidatorSet { network, session }; Pallet::::deposit_event(Event::NewSet { set }); - - // other networks set their Session(0) TAS once they set their keys but serai network - // doesn't have that so we set it here. - if network == NetworkId::Serai && session == Session(0) { - TotalAllocatedStake::::set(network, Some(Amount(total_allocated_stake))); - } - - Participants::::set(network, Some(participants.try_into().unwrap())); - SessionBeginBlock::::set( - network, - session, - >::block_number().saturated_into::(), - ); + */ } } @@ -494,6 +321,7 @@ pub mod pallet { DeallocationWouldRemoveEconomicSecurity, } + /* TODO #[pallet::hooks] impl Hooks> for Pallet { fn on_initialize(n: BlockNumberFor) -> Weight { @@ -513,7 +341,7 @@ pub mod pallet { for (id, stake) in self.networks.clone() { AllocationPerKeyShare::::set(id, Some(stake)); for participant in &self.participants { - if Pallet::::set_allocation(id, participant.0, stake) { + if Abstractions::::set_allocation(id, participant.0, stake) { panic!("participants contained duplicates"); } EmbeddedEllipticCurveKeys::::set( @@ -531,12 +359,14 @@ pub mod pallet { } } } + */ impl Pallet { fn account() -> T::AccountId { - system_address(b"ValidatorSets").into() + SeraiAddress::system(b"ValidatorSets").into() } + /* // is_bft returns if the network is able to survive any single node becoming byzantine. fn is_bft(network: NetworkId) -> bool { let allocation_per_key_share = AllocationPerKeyShare::::get(network).unwrap().0; @@ -544,7 +374,7 @@ pub mod pallet { let mut validators_len = 0; let mut top = None; let mut key_shares = 0; - for (_, amount) in SortedAllocationsIter::::new(network) { + for (_, amount) in Abstractions::::iter_allocations(network, allocation_per_key_share) { validators_len += 1; key_shares += amount.0 / allocation_per_key_share; @@ -573,53 +403,14 @@ pub mod pallet { amount: Amount, block_reward: bool, ) -> DispatchResult { - let old_allocation = Self::allocation((network, account)).unwrap_or(Amount(0)).0; - let new_allocation = old_allocation + amount.0; - let allocation_per_key_share = Self::allocation_per_key_share(network).unwrap().0; - // If this is a block reward, we always allow it to be allocated - if (new_allocation < allocation_per_key_share) && (!block_reward) { - Err(Error::::InsufficientAllocation)?; - } - - let increased_key_shares = - (old_allocation / allocation_per_key_share) < (new_allocation / allocation_per_key_share); - - // Check if the net exhibited the ability to handle any single node becoming byzantine - let mut was_bft = None; - if increased_key_shares { - was_bft = Some(Self::is_bft(network)); - } - - // Increase the allocation now - Self::set_allocation(network, account, Amount(new_allocation)); - Self::deposit_event(Event::AllocationIncreased { validator: account, network, amount }); - - // Error if the net no longer can handle any single node becoming byzantine - if let Some(was_bft) = was_bft { - if was_bft && (!Self::is_bft(network)) { - Err(Error::::AllocationWouldRemoveFaultTolerance)?; - } - } - + /* TODO // The above is_bft calls are only used to check a BFT net doesn't become non-BFT // Check here if this call would prevent a non-BFT net from *ever* becoming BFT if (new_allocation / allocation_per_key_share) >= (MAX_KEY_SHARES_PER_SET_U32 / 3).into() { Err(Error::::AllocationWouldPreventFaultTolerance)?; } - - // If they're in the current set, and the current set has completed its handover (so its - // currently being tracked by TotalAllocatedStake), update the TotalAllocatedStake - if let Some(session) = Self::session(network) { - if InSet::::contains_key(network, account) && Self::handover_completed(network, session) - { - TotalAllocatedStake::::set( - network, - Some(Amount(TotalAllocatedStake::::get(network).unwrap_or(Amount(0)).0 + amount.0)), - ); - } - } - - Ok(()) + */ + Abstractions::::increase_allocation(network, account, amount, block_reward) } fn session_to_unlock_on_for_current_set(network: NetworkId) -> Option { @@ -652,6 +443,7 @@ pub mod pallet { account: T::AccountId, amount: Amount, ) -> Result { + /* TODO // Check it's safe to decrease this set's stake by this amount if let NetworkId::External(n) = network { let new_total_staked = Self::total_allocated_stake(NetworkId::from(n)) @@ -665,18 +457,6 @@ pub mod pallet { } } - let old_allocation = - Self::allocation((network, account)).ok_or(Error::::NonExistentValidator)?.0; - let new_allocation = - old_allocation.checked_sub(amount.0).ok_or(Error::::NotEnoughAllocated)?; - - // If we're not removing the entire allocation, yet the allocation is no longer at or above - // the threshold for a key share, error - let allocation_per_key_share = Self::allocation_per_key_share(network).unwrap().0; - if (new_allocation > 0) && (new_allocation < allocation_per_key_share) { - Err(Error::::DeallocationWouldRemoveParticipant)?; - } - let decreased_key_shares = (old_allocation / allocation_per_key_share) > (new_allocation / allocation_per_key_share); @@ -687,48 +467,14 @@ pub mod pallet { was_bft = Some(Self::is_bft(network)); } - // Decrease the allocation now - // Since we don't also update TotalAllocatedStake here, TotalAllocatedStake may be greater - // than the sum of all allocations, according to the Allocations StorageMap - // This is intentional as this allocation has only been queued for deallocation at this time - Self::set_allocation(network, account, Amount(new_allocation)); - if let Some(was_bft) = was_bft { if was_bft && (!Self::is_bft(network)) { Err(Error::::DeallocationWouldRemoveFaultTolerance)?; } } + */ - // If we're not in-set, allow immediate deallocation - if !Self::in_set(network, account) { - Self::deposit_event(Event::AllocationDecreased { - validator: account, - network, - amount, - delayed_until: None, - }); - return Ok(true); - } - - // Set it to PendingDeallocations, letting it be released upon a future session - // This unwrap should be fine as this account is active, meaning a session has occurred - let to_unlock_on = Self::session_to_unlock_on_for_current_set(network).unwrap(); - let existing = - PendingDeallocations::::get((network, account), to_unlock_on).unwrap_or(Amount(0)); - PendingDeallocations::::set( - (network, account), - to_unlock_on, - Some(Amount(existing.0 + amount.0)), - ); - - Self::deposit_event(Event::AllocationDecreased { - validator: account, - network, - amount, - delayed_until: Some(to_unlock_on), - }); - - Ok(false) + Sessions::::decrease_allocation(network, account, amount) } // Checks if this session has completed the handover from the prior session. @@ -779,15 +525,6 @@ pub mod pallet { } } - fn set_total_allocated_stake(network: NetworkId) { - let participants = Participants::::get(network) - .expect("setting TotalAllocatedStake for a network without participants"); - let total_stake = participants.iter().fold(0, |acc, (addr, _)| { - acc + Allocations::::get((network, addr)).unwrap_or(Amount(0)).0 - }); - TotalAllocatedStake::::set(network, Some(Amount(total_stake))); - } - // TODO: This is called retire_set, yet just starts retiring the set // Update the nomenclature within this function pub fn retire_set(set: ValidatorSet) { @@ -814,9 +551,6 @@ pub mod pallet { Self::deposit_event(Event::AcceptedHandover { set: ValidatorSet { network: set.network, session: Session(set.session.0 + 1) }, }); - - // Update the total allocated stake to be for the current set - Self::set_total_allocated_stake(set.network); } /// Take the amount deallocatable. @@ -938,9 +672,10 @@ pub mod pallet { fn slash_serai_validator(validator: Public) { let network = NetworkId::Serai; - let mut allocation = Self::allocation((network, validator)).unwrap_or(Amount(0)); + let mut allocation = Abstractions::::get_allocation((network, validator)) + .unwrap_or(Amount(0)); // reduce the current allocation to 0. - Self::set_allocation(network, validator, Amount(0)); + Abstractions::::set_allocation(network, validator, Amount(0)); // Take the pending deallocation from the current session allocation.0 += PendingDeallocations::::take( @@ -1002,10 +737,12 @@ pub mod pallet { Some(keys.1.into_inner()) } + */ } #[pallet::call] impl Pallet { + /* #[pallet::call_index(0)] #[pallet::weight(0)] // TODO pub fn set_keys( @@ -1066,31 +803,18 @@ pub mod pallet { Ok(()) } + */ #[pallet::call_index(2)] #[pallet::weight(0)] // TODO - pub fn set_embedded_elliptic_curve_key( + pub fn set_embedded_elliptic_curve_keys( origin: OriginFor, - embedded_elliptic_curve: EmbeddedEllipticCurve, - key: BoundedVec>, + network: ExternalNetworkId, + keys: serai_primitives::crypto::EmbeddedEllipticCurveKeys, ) -> DispatchResult { - let validator = ensure_signed(origin)?; - - // We don't have the curve formulas, nor the BigInt arithmetic, necessary here to validate - // these keys. Instead, we solely check the key lengths. Validators are responsible to not - // provide invalid keys. - let expected_len = match embedded_elliptic_curve { - EmbeddedEllipticCurve::Embedwards25519 => 32, - EmbeddedEllipticCurve::Secq256k1 => 33, - }; - if key.len() != expected_len { - Err(Error::::InvalidEmbeddedEllipticCurveKey)?; - } - - // This does allow overwriting an existing key which... is unlikely to be done? - // Yet it isn't an issue as we'll fix to the key as of any set's declaration (uncaring to if - // it's distinct at the latest block) - EmbeddedEllipticCurveKeys::::set(validator, embedded_elliptic_curve, Some(key)); + let signer = ensure_signed(origin)?; + // TODO: Add PoKs and check validity + EmbeddedEllipticCurveKeys::::set(signer, network, Some(keys)); Ok(()) } @@ -1100,8 +824,8 @@ pub mod pallet { let validator = ensure_signed(origin)?; // If this network utilizes embedded elliptic curve(s), require the validator to have set the // appropriate key(s) - for embedded_elliptic_curve in network.embedded_elliptic_curves() { - if !EmbeddedEllipticCurveKeys::::contains_key(validator, *embedded_elliptic_curve) { + if let Ok(network) = ExternalNetworkId::try_from(network) { + if !EmbeddedEllipticCurveKeys::::contains_key(validator, network) { Err(Error::::MissingEmbeddedEllipticCurveKey)?; } } @@ -1110,7 +834,8 @@ pub mod pallet { Self::account(), Balance { coin: Coin::Serai, amount }, )?; - Self::increase_allocation(network, validator, amount, false) + Abstractions::::increase_allocation(network, validator, amount, false)?; + Ok(()) } #[pallet::call_index(4)] @@ -1118,8 +843,8 @@ pub mod pallet { pub fn deallocate(origin: OriginFor, network: NetworkId, amount: Amount) -> DispatchResult { let account = ensure_signed(origin)?; - let can_immediately_deallocate = Self::decrease_allocation(network, account, amount)?; - if can_immediately_deallocate { + let deallocation_timeline = Abstractions::::decrease_allocation(network, account, amount)?; + if matches!(deallocation_timeline, DeallocationTimeline::Immediate) { Coins::::transfer_internal( Self::account(), account, @@ -1130,6 +855,7 @@ pub mod pallet { Ok(()) } + /* #[pallet::call_index(5)] #[pallet::weight((0, DispatchClass::Operational))] // TODO pub fn claim_deallocation( @@ -1149,8 +875,10 @@ pub mod pallet { Self::deposit_event(Event::DeallocationClaimed { validator: account, network, session }); Ok(()) } + */ } + /* #[pallet::validate_unsigned] impl ValidateUnsigned for Pallet { type Call = Call; @@ -1271,8 +999,8 @@ pub mod pallet { } } - #[rustfmt::skip] - impl + From> KeyOwnerProofSystem<(KeyTypeId, V)> for Pallet { + impl + From> KeyOwnerProofSystem<(KeyTypeId, V)> for + Pallet { type Proof = MembershipProof; type IdentificationTuple = Public; @@ -1371,18 +1099,21 @@ pub mod pallet { SeraiDisabledIndices::::get(index).is_some() } } + */ } sp_api::decl_runtime_apis! { #[api_version(1)] pub trait ValidatorSetsApi { /// Returns the validator set for a given network. - fn validators(network_id: NetworkId) -> Vec; + fn validators( + network_id: serai_primitives::network_id::NetworkId, + ) -> Vec; /// Returns the external network key for a given external network. fn external_network_key( - network: ExternalNetworkId, - ) -> Option>; + network: serai_primitives::network_id::ExternalNetworkId, + ) -> Option; } } diff --git a/substrate/validator-sets/src/sessions.rs b/substrate/validator-sets/src/sessions.rs index 841648f6..95b720c2 100644 --- a/substrate/validator-sets/src/sessions.rs +++ b/substrate/validator-sets/src/sessions.rs @@ -135,6 +135,7 @@ pub(crate) trait Sessions { network: NetworkId, validator: Public, amount: Amount, + block_reward: bool, ) -> Result<(), AllocationError>; /// Decrease a validator's allocation. @@ -264,6 +265,7 @@ impl Sessions for Storage { network: NetworkId, validator: Public, amount: Amount, + block_reward: bool, ) -> Result<(), AllocationError> { let Some(allocation_per_key_share) = Storage::AllocationPerKeyShare::get(network) else { Err(AllocationError::NoAllocationPerKeyShareSet)? @@ -272,7 +274,8 @@ impl Sessions for Storage { let old_allocation = Self::get_allocation(network, validator).unwrap_or(Amount(0)); // Safe so long as the SRI supply fits within a u64, per assumptions on how this is called let new_allocation = (old_allocation + amount).unwrap(); - if new_allocation < allocation_per_key_share { + // Always allow a block reward to be added + if (!block_reward) && (new_allocation < allocation_per_key_share) { Err(AllocationError::AllocationLessThanKeyShare)? }