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
This commit is contained in:
Luke Parker
2025-08-26 14:32:55 -04:00
parent 5736b87b57
commit 200c1530a4
18 changed files with 353 additions and 599 deletions

217
Cargo.lock generated
View File

@@ -3410,7 +3410,7 @@ checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
[[package]] [[package]]
name = "fork-tree" name = "fork-tree"
version = "13.0.1" 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 = [ dependencies = [
"parity-scale-codec", "parity-scale-codec",
] ]
@@ -3443,7 +3443,7 @@ checksum = "28dd6caf6059519a65843af8fe2a3ae298b14b80179855aeb4adc2c1934ee619"
[[package]] [[package]]
name = "frame-benchmarking" name = "frame-benchmarking"
version = "40.2.1" 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 = [ dependencies = [
"frame-support", "frame-support",
"frame-support-procedural", "frame-support-procedural",
@@ -3467,7 +3467,7 @@ dependencies = [
[[package]] [[package]]
name = "frame-executive" name = "frame-executive"
version = "40.0.1" 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 = [ dependencies = [
"aquamarine", "aquamarine",
"frame-support", "frame-support",
@@ -3497,7 +3497,7 @@ dependencies = [
[[package]] [[package]]
name = "frame-support" name = "frame-support"
version = "40.1.0" 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 = [ dependencies = [
"aquamarine", "aquamarine",
"array-bytes", "array-bytes",
@@ -3537,7 +3537,7 @@ dependencies = [
[[package]] [[package]]
name = "frame-support-procedural" name = "frame-support-procedural"
version = "33.0.1" 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 = [ dependencies = [
"Inflector", "Inflector",
"cfg-expr", "cfg-expr",
@@ -3557,7 +3557,7 @@ dependencies = [
[[package]] [[package]]
name = "frame-support-procedural-tools" name = "frame-support-procedural-tools"
version = "13.0.1" 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 = [ dependencies = [
"frame-support-procedural-tools-derive", "frame-support-procedural-tools-derive",
"proc-macro-crate 3.3.0", "proc-macro-crate 3.3.0",
@@ -3569,7 +3569,7 @@ dependencies = [
[[package]] [[package]]
name = "frame-support-procedural-tools-derive" name = "frame-support-procedural-tools-derive"
version = "12.0.0" 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 = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@@ -3579,7 +3579,7 @@ dependencies = [
[[package]] [[package]]
name = "frame-system" name = "frame-system"
version = "40.2.0" 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 = [ dependencies = [
"cfg-if", "cfg-if",
"docify", "docify",
@@ -3598,7 +3598,7 @@ dependencies = [
[[package]] [[package]]
name = "frame-system-rpc-runtime-api" name = "frame-system-rpc-runtime-api"
version = "36.0.0" 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 = [ dependencies = [
"docify", "docify",
"parity-scale-codec", "parity-scale-codec",
@@ -3608,7 +3608,7 @@ dependencies = [
[[package]] [[package]]
name = "frame-try-runtime" name = "frame-try-runtime"
version = "0.46.0" 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 = [ dependencies = [
"frame-support", "frame-support",
"parity-scale-codec", "parity-scale-codec",
@@ -6664,7 +6664,7 @@ dependencies = [
[[package]] [[package]]
name = "pallet-authorship" name = "pallet-authorship"
version = "40.0.0" 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 = [ dependencies = [
"frame-support", "frame-support",
"frame-system", "frame-system",
@@ -6677,7 +6677,7 @@ dependencies = [
[[package]] [[package]]
name = "pallet-babe" name = "pallet-babe"
version = "40.0.0" 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 = [ dependencies = [
"frame-benchmarking", "frame-benchmarking",
"frame-support", "frame-support",
@@ -6700,7 +6700,7 @@ dependencies = [
[[package]] [[package]]
name = "pallet-grandpa" name = "pallet-grandpa"
version = "40.0.0" 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 = [ dependencies = [
"frame-benchmarking", "frame-benchmarking",
"frame-support", "frame-support",
@@ -6722,7 +6722,7 @@ dependencies = [
[[package]] [[package]]
name = "pallet-session" name = "pallet-session"
version = "40.0.1" 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 = [ dependencies = [
"frame-support", "frame-support",
"frame-system", "frame-system",
@@ -6743,7 +6743,7 @@ dependencies = [
[[package]] [[package]]
name = "pallet-timestamp" name = "pallet-timestamp"
version = "39.0.0" 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 = [ dependencies = [
"docify", "docify",
"frame-benchmarking", "frame-benchmarking",
@@ -6762,7 +6762,7 @@ dependencies = [
[[package]] [[package]]
name = "pallet-transaction-payment" name = "pallet-transaction-payment"
version = "40.0.0" 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 = [ dependencies = [
"frame-benchmarking", "frame-benchmarking",
"frame-support", "frame-support",
@@ -6778,7 +6778,7 @@ dependencies = [
[[package]] [[package]]
name = "pallet-transaction-payment-rpc" name = "pallet-transaction-payment-rpc"
version = "43.0.0" 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 = [ dependencies = [
"jsonrpsee", "jsonrpsee",
"pallet-transaction-payment-rpc-runtime-api", "pallet-transaction-payment-rpc-runtime-api",
@@ -6794,7 +6794,7 @@ dependencies = [
[[package]] [[package]]
name = "pallet-transaction-payment-rpc-runtime-api" name = "pallet-transaction-payment-rpc-runtime-api"
version = "40.0.0" 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 = [ dependencies = [
"pallet-transaction-payment", "pallet-transaction-payment",
"parity-scale-codec", "parity-scale-codec",
@@ -8436,7 +8436,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-allocator" name = "sc-allocator"
version = "31.0.0" 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 = [ dependencies = [
"log", "log",
"sp-core", "sp-core",
@@ -8447,7 +8447,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-authority-discovery" name = "sc-authority-discovery"
version = "0.50.0" 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 = [ dependencies = [
"async-trait", "async-trait",
"futures", "futures",
@@ -8475,7 +8475,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-basic-authorship" name = "sc-basic-authorship"
version = "0.49.0" 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 = [ dependencies = [
"futures", "futures",
"log", "log",
@@ -8496,7 +8496,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-block-builder" name = "sc-block-builder"
version = "0.44.0" 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 = [ dependencies = [
"parity-scale-codec", "parity-scale-codec",
"sp-api", "sp-api",
@@ -8511,7 +8511,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-chain-spec" name = "sc-chain-spec"
version = "43.0.0" 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 = [ dependencies = [
"array-bytes", "array-bytes",
"docify", "docify",
@@ -8537,7 +8537,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-chain-spec-derive" name = "sc-chain-spec-derive"
version = "12.0.0" 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 = [ dependencies = [
"proc-macro-crate 3.3.0", "proc-macro-crate 3.3.0",
"proc-macro2", "proc-macro2",
@@ -8548,7 +8548,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-cli" name = "sc-cli"
version = "0.52.0" 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 = [ dependencies = [
"array-bytes", "array-bytes",
"chrono", "chrono",
@@ -8589,7 +8589,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-client-api" name = "sc-client-api"
version = "39.0.0" 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 = [ dependencies = [
"fnv", "fnv",
"futures", "futures",
@@ -8615,7 +8615,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-client-db" name = "sc-client-db"
version = "0.46.0" 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 = [ dependencies = [
"hash-db", "hash-db",
"kvdb", "kvdb",
@@ -8641,7 +8641,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-consensus" name = "sc-consensus"
version = "0.49.0" 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 = [ dependencies = [
"async-trait", "async-trait",
"futures", "futures",
@@ -8664,7 +8664,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-consensus-babe" name = "sc-consensus-babe"
version = "0.50.0" 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 = [ dependencies = [
"async-trait", "async-trait",
"fork-tree", "fork-tree",
@@ -8700,7 +8700,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-consensus-epochs" name = "sc-consensus-epochs"
version = "0.49.0" 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 = [ dependencies = [
"fork-tree", "fork-tree",
"parity-scale-codec", "parity-scale-codec",
@@ -8713,7 +8713,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-consensus-grandpa" name = "sc-consensus-grandpa"
version = "0.35.0" 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 = [ dependencies = [
"ahash", "ahash",
"array-bytes", "array-bytes",
@@ -8757,7 +8757,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-consensus-slots" name = "sc-consensus-slots"
version = "0.49.0" 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 = [ dependencies = [
"async-trait", "async-trait",
"futures", "futures",
@@ -8780,7 +8780,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-executor" name = "sc-executor"
version = "0.42.0" 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 = [ dependencies = [
"parity-scale-codec", "parity-scale-codec",
"parking_lot 0.12.4", "parking_lot 0.12.4",
@@ -8803,7 +8803,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-executor-common" name = "sc-executor-common"
version = "0.38.0" 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 = [ dependencies = [
"polkavm", "polkavm",
"sc-allocator", "sc-allocator",
@@ -8816,7 +8816,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-executor-polkavm" name = "sc-executor-polkavm"
version = "0.35.0" 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 = [ dependencies = [
"log", "log",
"polkavm", "polkavm",
@@ -8827,7 +8827,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-executor-wasmtime" name = "sc-executor-wasmtime"
version = "0.38.0" 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 = [ dependencies = [
"anyhow", "anyhow",
"log", "log",
@@ -8843,7 +8843,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-informant" name = "sc-informant"
version = "0.49.0" 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 = [ dependencies = [
"console", "console",
"futures", "futures",
@@ -8859,7 +8859,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-keystore" name = "sc-keystore"
version = "35.0.0" 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 = [ dependencies = [
"array-bytes", "array-bytes",
"parking_lot 0.12.4", "parking_lot 0.12.4",
@@ -8873,7 +8873,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-network" name = "sc-network"
version = "0.50.1" 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 = [ dependencies = [
"array-bytes", "array-bytes",
"async-channel", "async-channel",
@@ -8920,7 +8920,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-network-common" name = "sc-network-common"
version = "0.48.0" 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 = [ dependencies = [
"bitflags 1.3.2", "bitflags 1.3.2",
"parity-scale-codec", "parity-scale-codec",
@@ -8930,7 +8930,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-network-gossip" name = "sc-network-gossip"
version = "0.50.0" 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 = [ dependencies = [
"ahash", "ahash",
"futures", "futures",
@@ -8949,7 +8949,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-network-light" name = "sc-network-light"
version = "0.49.0" 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 = [ dependencies = [
"array-bytes", "array-bytes",
"async-channel", "async-channel",
@@ -8970,7 +8970,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-network-sync" name = "sc-network-sync"
version = "0.49.0" 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 = [ dependencies = [
"array-bytes", "array-bytes",
"async-channel", "async-channel",
@@ -9005,7 +9005,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-network-transactions" name = "sc-network-transactions"
version = "0.49.0" 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 = [ dependencies = [
"array-bytes", "array-bytes",
"futures", "futures",
@@ -9024,7 +9024,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-network-types" name = "sc-network-types"
version = "0.16.0" 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 = [ dependencies = [
"bs58", "bs58",
"bytes", "bytes",
@@ -9043,7 +9043,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-offchain" name = "sc-offchain"
version = "45.0.0" 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 = [ dependencies = [
"bytes", "bytes",
"fnv", "fnv",
@@ -9077,7 +9077,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-proposer-metrics" name = "sc-proposer-metrics"
version = "0.20.0" 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 = [ dependencies = [
"log", "log",
"substrate-prometheus-endpoint", "substrate-prometheus-endpoint",
@@ -9086,7 +9086,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-rpc" name = "sc-rpc"
version = "45.0.0" 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 = [ dependencies = [
"futures", "futures",
"jsonrpsee", "jsonrpsee",
@@ -9116,7 +9116,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-rpc-api" name = "sc-rpc-api"
version = "0.49.0" 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 = [ dependencies = [
"jsonrpsee", "jsonrpsee",
"parity-scale-codec", "parity-scale-codec",
@@ -9135,7 +9135,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-rpc-server" name = "sc-rpc-server"
version = "22.0.0" 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 = [ dependencies = [
"dyn-clone", "dyn-clone",
"forwarded-header-value", "forwarded-header-value",
@@ -9159,7 +9159,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-rpc-spec-v2" name = "sc-rpc-spec-v2"
version = "0.50.0" 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 = [ dependencies = [
"array-bytes", "array-bytes",
"futures", "futures",
@@ -9192,7 +9192,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-service" name = "sc-service"
version = "0.51.0" 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 = [ dependencies = [
"async-trait", "async-trait",
"directories", "directories",
@@ -9255,7 +9255,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-state-db" name = "sc-state-db"
version = "0.38.0" 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 = [ dependencies = [
"log", "log",
"parity-scale-codec", "parity-scale-codec",
@@ -9266,7 +9266,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-sysinfo" name = "sc-sysinfo"
version = "42.0.0" 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 = [ dependencies = [
"derive_more 0.99.20", "derive_more 0.99.20",
"futures", "futures",
@@ -9286,7 +9286,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-telemetry" name = "sc-telemetry"
version = "28.1.0" 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 = [ dependencies = [
"chrono", "chrono",
"futures", "futures",
@@ -9305,7 +9305,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-tracing" name = "sc-tracing"
version = "39.0.0" 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 = [ dependencies = [
"chrono", "chrono",
"console", "console",
@@ -9333,7 +9333,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-tracing-proc-macro" name = "sc-tracing-proc-macro"
version = "11.1.0" 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 = [ dependencies = [
"proc-macro-crate 3.3.0", "proc-macro-crate 3.3.0",
"proc-macro2", "proc-macro2",
@@ -9344,7 +9344,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-transaction-pool" name = "sc-transaction-pool"
version = "39.0.0" 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 = [ dependencies = [
"async-trait", "async-trait",
"futures", "futures",
@@ -9376,7 +9376,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-transaction-pool-api" name = "sc-transaction-pool-api"
version = "39.0.0" 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 = [ dependencies = [
"async-trait", "async-trait",
"futures", "futures",
@@ -9393,7 +9393,7 @@ dependencies = [
[[package]] [[package]]
name = "sc-utils" name = "sc-utils"
version = "18.0.1" 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 = [ dependencies = [
"async-channel", "async-channel",
"futures", "futures",
@@ -10600,6 +10600,7 @@ dependencies = [
"scale-info", "scale-info",
"serai-coins-pallet", "serai-coins-pallet",
"serai-primitives", "serai-primitives",
"sp-api",
"sp-core", "sp-core",
"sp-io", "sp-io",
"sp-runtime", "sp-runtime",
@@ -10983,7 +10984,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-api" name = "sp-api"
version = "36.0.1" 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 = [ dependencies = [
"docify", "docify",
"hash-db", "hash-db",
@@ -11005,7 +11006,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-api-proc-macro" name = "sp-api-proc-macro"
version = "22.0.1" 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 = [ dependencies = [
"Inflector", "Inflector",
"blake2 0.10.6", "blake2 0.10.6",
@@ -11019,7 +11020,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-application-crypto" name = "sp-application-crypto"
version = "40.1.0" 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 = [ dependencies = [
"parity-scale-codec", "parity-scale-codec",
"scale-info", "scale-info",
@@ -11031,7 +11032,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-arithmetic" name = "sp-arithmetic"
version = "26.1.0" 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 = [ dependencies = [
"docify", "docify",
"integer-sqrt", "integer-sqrt",
@@ -11045,7 +11046,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-authority-discovery" name = "sp-authority-discovery"
version = "36.0.0" 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 = [ dependencies = [
"parity-scale-codec", "parity-scale-codec",
"scale-info", "scale-info",
@@ -11057,7 +11058,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-block-builder" name = "sp-block-builder"
version = "36.0.0" 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 = [ dependencies = [
"sp-api", "sp-api",
"sp-inherents", "sp-inherents",
@@ -11067,7 +11068,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-blockchain" name = "sp-blockchain"
version = "39.0.0" 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 = [ dependencies = [
"futures", "futures",
"parity-scale-codec", "parity-scale-codec",
@@ -11086,7 +11087,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-consensus" name = "sp-consensus"
version = "0.42.0" 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 = [ dependencies = [
"async-trait", "async-trait",
"futures", "futures",
@@ -11100,7 +11101,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-consensus-babe" name = "sp-consensus-babe"
version = "0.42.1" 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 = [ dependencies = [
"async-trait", "async-trait",
"parity-scale-codec", "parity-scale-codec",
@@ -11118,7 +11119,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-consensus-grandpa" name = "sp-consensus-grandpa"
version = "23.1.0" 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 = [ dependencies = [
"finality-grandpa", "finality-grandpa",
"log", "log",
@@ -11135,7 +11136,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-consensus-slots" name = "sp-consensus-slots"
version = "0.42.1" 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 = [ dependencies = [
"parity-scale-codec", "parity-scale-codec",
"scale-info", "scale-info",
@@ -11146,7 +11147,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-core" name = "sp-core"
version = "36.1.0" 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 = [ dependencies = [
"array-bytes", "array-bytes",
"bitflags 1.3.2", "bitflags 1.3.2",
@@ -11191,7 +11192,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-crypto-hashing" name = "sp-crypto-hashing"
version = "0.1.0" 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 = [ dependencies = [
"blake2b_simd", "blake2b_simd",
"byteorder", "byteorder",
@@ -11204,7 +11205,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-crypto-hashing-proc-macro" name = "sp-crypto-hashing-proc-macro"
version = "0.1.0" 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 = [ dependencies = [
"quote", "quote",
"sp-crypto-hashing", "sp-crypto-hashing",
@@ -11214,7 +11215,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-database" name = "sp-database"
version = "10.0.0" 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 = [ dependencies = [
"kvdb", "kvdb",
"parking_lot 0.12.4", "parking_lot 0.12.4",
@@ -11223,7 +11224,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-debug-derive" name = "sp-debug-derive"
version = "14.0.0" 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 = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@@ -11233,7 +11234,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-externalities" name = "sp-externalities"
version = "0.30.0" 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 = [ dependencies = [
"environmental", "environmental",
"parity-scale-codec", "parity-scale-codec",
@@ -11243,7 +11244,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-genesis-builder" name = "sp-genesis-builder"
version = "0.17.0" 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 = [ dependencies = [
"parity-scale-codec", "parity-scale-codec",
"scale-info", "scale-info",
@@ -11255,7 +11256,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-inherents" name = "sp-inherents"
version = "36.0.0" 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 = [ dependencies = [
"async-trait", "async-trait",
"impl-trait-for-tuples", "impl-trait-for-tuples",
@@ -11268,7 +11269,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-io" name = "sp-io"
version = "40.0.1" 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 = [ dependencies = [
"bytes", "bytes",
"docify", "docify",
@@ -11294,7 +11295,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-keyring" name = "sp-keyring"
version = "41.0.0" 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 = [ dependencies = [
"sp-core", "sp-core",
"sp-runtime", "sp-runtime",
@@ -11304,7 +11305,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-keystore" name = "sp-keystore"
version = "0.42.0" 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 = [ dependencies = [
"parity-scale-codec", "parity-scale-codec",
"parking_lot 0.12.4", "parking_lot 0.12.4",
@@ -11315,7 +11316,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-maybe-compressed-blob" name = "sp-maybe-compressed-blob"
version = "11.0.0" 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 = [ dependencies = [
"thiserror 2.0.16", "thiserror 2.0.16",
"zstd", "zstd",
@@ -11324,7 +11325,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-metadata-ir" name = "sp-metadata-ir"
version = "0.10.0" 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 = [ dependencies = [
"frame-metadata", "frame-metadata",
"parity-scale-codec", "parity-scale-codec",
@@ -11334,7 +11335,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-offchain" name = "sp-offchain"
version = "36.0.0" 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 = [ dependencies = [
"sp-api", "sp-api",
"sp-core", "sp-core",
@@ -11344,7 +11345,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-panic-handler" name = "sp-panic-handler"
version = "13.0.2" 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 = [ dependencies = [
"backtrace", "backtrace",
"regex", "regex",
@@ -11353,7 +11354,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-rpc" name = "sp-rpc"
version = "34.0.0" 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 = [ dependencies = [
"rustc-hash 1.1.0", "rustc-hash 1.1.0",
"serde", "serde",
@@ -11363,7 +11364,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-runtime" name = "sp-runtime"
version = "41.1.0" 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 = [ dependencies = [
"docify", "docify",
"either", "either",
@@ -11391,7 +11392,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-runtime-interface" name = "sp-runtime-interface"
version = "29.0.1" 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 = [ dependencies = [
"bytes", "bytes",
"impl-trait-for-tuples", "impl-trait-for-tuples",
@@ -11410,7 +11411,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-runtime-interface-proc-macro" name = "sp-runtime-interface-proc-macro"
version = "18.0.0" 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 = [ dependencies = [
"Inflector", "Inflector",
"expander", "expander",
@@ -11423,7 +11424,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-session" name = "sp-session"
version = "38.1.0" 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 = [ dependencies = [
"parity-scale-codec", "parity-scale-codec",
"scale-info", "scale-info",
@@ -11437,7 +11438,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-staking" name = "sp-staking"
version = "38.0.0" 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 = [ dependencies = [
"impl-trait-for-tuples", "impl-trait-for-tuples",
"parity-scale-codec", "parity-scale-codec",
@@ -11450,7 +11451,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-state-machine" name = "sp-state-machine"
version = "0.45.0" 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 = [ dependencies = [
"hash-db", "hash-db",
"log", "log",
@@ -11470,12 +11471,12 @@ dependencies = [
[[package]] [[package]]
name = "sp-std" name = "sp-std"
version = "14.0.0" 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]] [[package]]
name = "sp-storage" name = "sp-storage"
version = "22.0.0" 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 = [ dependencies = [
"impl-serde", "impl-serde",
"parity-scale-codec", "parity-scale-codec",
@@ -11487,7 +11488,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-timestamp" name = "sp-timestamp"
version = "36.0.0" 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 = [ dependencies = [
"async-trait", "async-trait",
"parity-scale-codec", "parity-scale-codec",
@@ -11499,7 +11500,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-tracing" name = "sp-tracing"
version = "17.1.0" 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 = [ dependencies = [
"parity-scale-codec", "parity-scale-codec",
"tracing", "tracing",
@@ -11510,7 +11511,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-transaction-pool" name = "sp-transaction-pool"
version = "36.0.0" 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 = [ dependencies = [
"sp-api", "sp-api",
"sp-runtime", "sp-runtime",
@@ -11519,7 +11520,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-trie" name = "sp-trie"
version = "39.1.0" 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 = [ dependencies = [
"ahash", "ahash",
"hash-db", "hash-db",
@@ -11541,7 +11542,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-version" name = "sp-version"
version = "39.0.0" 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 = [ dependencies = [
"impl-serde", "impl-serde",
"parity-scale-codec", "parity-scale-codec",
@@ -11558,7 +11559,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-version-proc-macro" name = "sp-version-proc-macro"
version = "15.0.0" 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 = [ dependencies = [
"parity-scale-codec", "parity-scale-codec",
"proc-macro-warning", "proc-macro-warning",
@@ -11570,7 +11571,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-wasm-interface" name = "sp-wasm-interface"
version = "21.0.1" 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 = [ dependencies = [
"anyhow", "anyhow",
"impl-trait-for-tuples", "impl-trait-for-tuples",
@@ -11582,7 +11583,7 @@ dependencies = [
[[package]] [[package]]
name = "sp-weights" name = "sp-weights"
version = "31.1.0" 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 = [ dependencies = [
"bounded-collections", "bounded-collections",
"parity-scale-codec", "parity-scale-codec",
@@ -11759,7 +11760,7 @@ dependencies = [
[[package]] [[package]]
name = "substrate-bip39" name = "substrate-bip39"
version = "0.6.0" 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 = [ dependencies = [
"hmac 0.12.1", "hmac 0.12.1",
"pbkdf2", "pbkdf2",
@@ -11771,12 +11772,12 @@ dependencies = [
[[package]] [[package]]
name = "substrate-build-script-utils" name = "substrate-build-script-utils"
version = "11.0.0" 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]] [[package]]
name = "substrate-frame-rpc-system" name = "substrate-frame-rpc-system"
version = "44.0.0" 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 = [ dependencies = [
"docify", "docify",
"frame-system-rpc-runtime-api", "frame-system-rpc-runtime-api",
@@ -11796,7 +11797,7 @@ dependencies = [
[[package]] [[package]]
name = "substrate-prometheus-endpoint" name = "substrate-prometheus-endpoint"
version = "0.17.3" 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 = [ dependencies = [
"http-body-util", "http-body-util",
"hyper 1.4.1", "hyper 1.4.1",
@@ -11810,7 +11811,7 @@ dependencies = [
[[package]] [[package]]
name = "substrate-wasm-builder" name = "substrate-wasm-builder"
version = "26.0.1" 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 = [ dependencies = [
"build-helper", "build-helper",
"cargo_metadata", "cargo_metadata",

View File

@@ -22,13 +22,13 @@ workspace = true
borsh = { version = "1", default-features = false, features = ["derive", "de_strict_order"] } borsh = { version = "1", default-features = false, features = ["derive", "de_strict_order"] }
bitvec = { version = "1", default-features = false, features = ["alloc"] } 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 } 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 = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"], optional = true }
scale-info = { version = "2", 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 } 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false, 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 } serai-primitives = { path = "../primitives", version = "0.1", default-features = false }

View File

@@ -31,9 +31,9 @@ serde_json = { version = "1", optional = true }
serai-abi = { path = "../abi", version = "0.1" } serai-abi = { path = "../abi", version = "0.1" }
multiaddr = { version = "0.18", optional = true } multiaddr = { version = "0.18", optional = true }
sp-core = { 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", optional = true } frame-system = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", optional = true }
async-lock = "3" async-lock = "3"

View File

@@ -22,17 +22,17 @@ workspace = true
scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"] } scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"] }
scale-info = { version = "2", 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-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 = "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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", 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-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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", 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"] } serai-primitives = { path = "../primitives", default-features = false, features = ["serde", "non_canonical_scale_derivations"] }
[dev-dependencies] [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] [features]
std = [ std = [

View File

@@ -22,15 +22,15 @@ workspace = true
scale = { package = "parity-scale-codec", version = "3.6.1", default-features = false } scale = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
scale-info = { version = "2.5.0", default-features = false, features = ["derive"] } 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-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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", 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-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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false, optional = true } 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 } coins-pallet = { package = "serai-coins-pallet", path = "../coins", default-features = false }

View File

@@ -22,8 +22,8 @@ workspace = true
scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"] } scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"] }
scale-info = { version = "2", 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-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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", 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 } dex-pallet = { package = "serai-dex-pallet", path = "../dex", default-features = false }
coins-pallet = { package = "serai-coins-pallet", path = "../coins", 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 } serai-primitives = { path = "../primitives", default-features = false }
[dev-dependencies] [dev-dependencies]
pallet-babe = { 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", 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 } 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-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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false } sp-consensus-babe = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5", default-features = false }
[features] [features]
std = [ std = [

View File

@@ -22,11 +22,11 @@ workspace = true
scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"] } scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"] }
scale-info = { version = "2", 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-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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", 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-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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", 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 } 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 } validator-sets-pallet = { package = "serai-validator-sets-pallet", path = "../validator-sets", default-features = false }

View File

@@ -22,12 +22,12 @@ workspace = true
scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"] } scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"] }
scale-info = { version = "2", 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-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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", 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-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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", 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 } dex-pallet = { package = "serai-dex-pallet", path = "../dex", default-features = false }
coins-pallet = { package = "serai-coins-pallet", path = "../coins", default-features = false } coins-pallet = { package = "serai-coins-pallet", path = "../coins", default-features = false }

View File

@@ -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 = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive", "max-encoded-len"] }
scale-info = { version = "2", default-features = false, features = ["derive"] } 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-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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", 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 = "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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", 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-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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", 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 } 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 } emissions-pallet = { package = "serai-emissions-pallet", path = "../emissions", default-features = false }
[dev-dependencies] [dev-dependencies]
pallet-babe = { 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", 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 } economic-security-pallet = { package = "serai-economic-security-pallet", path = "../economic-security", default-features = false }

View File

@@ -34,16 +34,16 @@ secq256k1 = { path = "../../crypto/secq256k1" }
libp2p = "0.54" libp2p = "0.54"
sp-core = { 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } 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"] } 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"] } 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-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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false, features = [] } 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 = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5" }
sc-consensus-babe = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } 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-telemetry = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5" }
sc-cli = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", default-features = false, features = ["rocksdb"] } 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" } 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90" } pallet-transaction-payment-rpc = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "74839cba4a7f48023080215e5194fd6ab7e270e5" }
serai-env = { path = "../../common/env" } 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"] } monero-address = { git = "https://github.com/monero-oxide/monero-oxide", rev = "6966575e05fe09b77674c46984b21686ed9304ff", default-features = false, features = ["std"] }
[build-dependencies] [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] [features]
default = [] default = []

View File

@@ -22,7 +22,7 @@ borsh = { version = "1", default-features = false, features = ["derive", "de_str
bitvec = { version = "1", default-features = false, features = ["alloc"] } bitvec = { version = "1", default-features = false, features = ["alloc"] }
scale = { package = "parity-scale-codec", version = "3", 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 } 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"] } ciphersuite = { path = "../../crypto/ciphersuite", default-features = false, features = ["alloc"] }
dalek-ff-group = { path = "../../crypto/dalek-ff-group", default-features = false, features = ["alloc"] } dalek-ff-group = { path = "../../crypto/dalek-ff-group", default-features = false, features = ["alloc"] }

View File

@@ -6,6 +6,16 @@ use crate::coin::{ExternalCoin, Coin};
/// Identifier for an embedded elliptic curve. /// Identifier for an embedded elliptic curve.
#[derive(Clone, Copy, PartialEq, Eq, Debug, Zeroize, BorshSerialize, BorshDeserialize)] #[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 { pub enum EmbeddedEllipticCurve {
/// The Embedwards25519 curve, defined over (embedded into) Ed25519's/Ristretto's scalar field. /// The Embedwards25519 curve, defined over (embedded into) Ed25519's/Ristretto's scalar field.
Embedwards25519, Embedwards25519,
@@ -50,14 +60,17 @@ impl ExternalNetworkId {
/// ///
/// This is guaranteed to return `[Embedwards25519]` or /// This is guaranteed to return `[Embedwards25519]` or
/// `[Embedwards25519, *network specific curve*]`. /// `[Embedwards25519, *network specific curve*]`.
pub fn embedded_elliptic_curves(&self) -> &'static [EmbeddedEllipticCurve] { pub fn embedded_elliptic_curves(&self) -> impl Iterator<Item = EmbeddedEllipticCurve> {
match self { match self {
// We need to generate a Ristretto key for oraclizing and a Secp256k1 key for the network // We need to generate a Ristretto key for oraclizing and a Secp256k1 key for the network
Self::Bitcoin | Self::Ethereum => { 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 // 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(),
} }
} }

View File

@@ -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 = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"] }
scale-info = { version = "2", 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-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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", 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"] } 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-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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", 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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", 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 } serai-coins-pallet = { path = "../coins", default-features = false }
[build-dependencies] [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] [features]
std = [ std = [

View File

@@ -22,11 +22,11 @@ workspace = true
scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"] } scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"] }
scale-info = { version = "2", 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-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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", 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-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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", 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 } serai-primitives = { path = "../primitives", default-features = false }

View File

@@ -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 = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive", "bit-vec"] }
scale-info = { version = "2", 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-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 = "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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", 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-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 = "2bfdaed4b3614de2fe7d10e4ece3e6a912833e90", 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"] } serai-primitives = { path = "../primitives", default-features = false, features = ["non_canonical_scale_derivations"] }
coins-pallet = { package = "serai-coins-pallet", path = "../coins", default-features = false } coins-pallet = { package = "serai-coins-pallet", path = "../coins", default-features = false }
[dev-dependencies] [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"] } #ciphersuite = { path = "../../../crypto/ciphersuite", default-features = false, features = ["std"] }
#dalek-ff-group = { path = "../../../crypto/dalek-ff-group", 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-core/std",
"sp-io/std", "sp-io/std",
"sp-runtime/std", "sp-runtime/std",
"sp-api/std",
"frame-system/std", "frame-system/std",
"frame-support/std", "frame-support/std",

View File

@@ -0,0 +1,4 @@
# Validator Sets
This pallet is responsible for managing the allocations of, inclusion of, and
rotation of validators.

View File

@@ -1,11 +1,16 @@
#![cfg_attr(docsrs, feature(doc_auto_cfg))]
#![doc = include_str!("../README.md")]
#![cfg_attr(not(feature = "std"), no_std)] #![cfg_attr(not(feature = "std"), no_std)]
#[cfg(test)] extern crate alloc;
mod mock;
#[cfg(test)] mod allocations;
mod tests; use allocations::*;
mod sessions;
use sessions::{*, GenesisValidators as GenesisValidatorsContainer};
/*
use core::marker::PhantomData; use core::marker::PhantomData;
use scale::{Encode, Decode}; use scale::{Encode, Decode};
@@ -63,32 +68,37 @@ impl<T: pallet::Config> GetValidatorCount for MembershipProof<T> {
u32::try_from(Babe::<T>::authorities().len()).unwrap() u32::try_from(Babe::<T>::authorities().len()).unwrap()
} }
} }
*/
#[allow(
deprecated,
unreachable_patterns,
clippy::let_unit_value,
clippy::cast_possible_truncation,
clippy::ignored_unit_patterns
)] // TODO
#[frame_support::pallet] #[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::*; use super::*;
#[pallet::config] #[pallet::config]
pub trait Config: #[pallet::disable_frame_system_supertrait_check]
frame_system::Config<AccountId = Public> pub trait Config: coins_pallet::Config {
+ coins_pallet::Config
+ dex_pallet::Config
+ pallet_babe::Config
+ pallet_grandpa::Config
+ TypeInfo
{
type RuntimeEvent: IsType<<Self as frame_system::Config>::RuntimeEvent> + From<Event<Self>>; type RuntimeEvent: IsType<<Self as frame_system::Config>::RuntimeEvent> + From<Event<Self>>;
type ShouldEndSession: ShouldEndSession<BlockNumberFor<Self>>; // type ShouldEndSession: ShouldEndSession<BlockNumberFor<Self>>;
} }
/* TODO
#[derive(Clone, PartialEq, Eq, Debug, Encode, Decode, serde::Serialize, serde::Deserialize)] #[derive(Clone, PartialEq, Eq, Debug, Encode, Decode, serde::Serialize, serde::Deserialize)]
pub struct AllEmbeddedEllipticCurveKeysAtGenesis { pub struct AllEmbeddedEllipticCurveKeysAtGenesis {
pub embedwards25519: BoundedVec<u8, ConstU32<{ MAX_KEY_LEN }>>, pub embedwards25519: BoundedVec<u8, ConstU32<{ MAX_KEY_LEN }>>,
@@ -112,26 +122,12 @@ pub mod pallet {
GenesisConfig { networks: Default::default(), participants: Default::default() } GenesisConfig { networks: Default::default(), participants: Default::default() }
} }
} }
*/
#[pallet::pallet] #[pallet::pallet]
pub struct Pallet<T>(PhantomData<T>); pub struct Pallet<T>(PhantomData<T>);
/// 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<T: Config> = StorageMap<_, Identity, NetworkId, Session, OptionQuery>;
impl<T: Config> Pallet<T> {
pub fn latest_decided_session(network: NetworkId) -> Option<Session> {
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. /// The allocation required per key share.
// Uses Identity for the lookup to avoid a hash of a severely limited fixed key-space. // Uses Identity for the lookup to avoid a hash of a severely limited fixed key-space.
#[pallet::storage] #[pallet::storage]
@@ -158,50 +154,8 @@ pub mod pallet {
#[pallet::storage] #[pallet::storage]
pub(crate) type InSet<T: Config> = pub(crate) type InSet<T: Config> =
StorageDoubleMap<_, Identity, NetworkId, Blake2_128Concat, Public, u64, OptionQuery>; StorageDoubleMap<_, Identity, NetworkId, Blake2_128Concat, Public, u64, OptionQuery>;
impl<T: Config> Pallet<T> {
// 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::<T>::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::<T>::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::<T>::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::<T>::contains_key(network, account)
}
} }
*/
/// A key on an embedded elliptic curve. /// A key on an embedded elliptic curve.
#[pallet::storage] #[pallet::storage]
@@ -210,133 +164,58 @@ pub mod pallet {
Blake2_128Concat, Blake2_128Concat,
Public, Public,
Identity, Identity,
EmbeddedEllipticCurve, ExternalNetworkId,
BoundedVec<u8, ConstU32<{ MAX_KEY_LEN }>>, serai_primitives::crypto::EmbeddedEllipticCurveKeys,
OptionQuery, OptionQuery,
>; >;
/// The total stake allocated to this network by the active set of validators. struct Abstractions<T: Config>(PhantomData<T>);
// Satisfy the `Allocations` abstraction
#[pallet::storage] #[pallet::storage]
#[pallet::getter(fn total_allocated_stake)] type Allocations<T: Config> =
pub type TotalAllocatedStake<T: Config> = StorageMap<_, Identity, NetworkId, Amount, OptionQuery>; StorageMap<_, Blake2_128Concat, AllocationsKey, Amount, OptionQuery>;
// This has to use `Identity` per the documentation of `AllocationsStorage`
/// The current amount allocated to a validator set by a validator.
#[pallet::storage]
#[pallet::getter(fn allocation)]
pub type Allocations<T: Config> =
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.
*/
#[pallet::storage] #[pallet::storage]
type SortedAllocations<T: Config> = type SortedAllocations<T: Config> =
StorageMap<_, Identity, (NetworkId, [u8; 8], [u8; 16], Public), (), OptionQuery>; StorageMap<_, Identity, SortedAllocationsKey, (), OptionQuery>;
impl<T: Config> Pallet<T> {
#[inline] impl<T: Config> AllocationsStorage for Abstractions<T> {
fn sorted_allocation_key( type Allocations = Allocations<T>;
network: NetworkId, type SortedAllocations = SortedAllocations<T>;
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::<T>::take((network, key));
if let Some(amount) = prior {
SortedAllocations::<T>::remove(Self::sorted_allocation_key(network, key, amount));
}
if amount.0 != 0 {
Allocations::<T>::set((network, key), Some(amount));
SortedAllocations::<T>::set(Self::sorted_allocation_key(network, key, amount), Some(()));
}
prior.is_some()
}
} }
// Doesn't use PrefixIterator as we need to yield the keys *and* values // Satisfy the `Sessions` API
// PrefixIterator only yields the values
struct SortedAllocationsIter<T: Config> {
_t: PhantomData<T>,
prefix: Vec<u8>,
last: Vec<u8>,
allocation_per_key_share: Amount,
}
impl<T: Config> SortedAllocationsIter<T> {
fn new(network: NetworkId) -> Self {
let mut prefix = SortedAllocations::<T>::final_prefix().to_vec();
prefix.extend(&network.encode());
Self {
_t: PhantomData,
prefix: prefix.clone(),
last: prefix,
allocation_per_key_share: Pallet::<T>::allocation_per_key_share(network).expect(
"SortedAllocationsIter iterating over a network without a set allocation per key share",
),
}
}
}
impl<T: Config> Iterator for SortedAllocationsIter<T> {
type Item = (Public, Amount);
fn next(&mut self) -> Option<Self::Item> {
let next = sp_io::storage::next_key(&self.last)?;
if !next.starts_with(&self.prefix) {
None?;
}
let key = Pallet::<T>::recover_key_from_sorted_allocation_key(&next);
let amount = Pallet::<T>::recover_amount_from_sorted_allocation_key(&next);
// We may have validators present, with less than the minimum allocation, due to block // We use `Identity` as the hasher for `NetworkId` due to how constrained it is
// 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.
#[pallet::storage] #[pallet::storage]
#[pallet::getter(fn pending_deallocations)] type GenesisValidators<T: Config> = StorageValue<_, GenesisValidatorsContainer, OptionQuery>;
type PendingDeallocations<T: Config> = StorageDoubleMap< #[pallet::storage]
_, type AllocationPerKeyShare<T: Config> = StorageMap<_, Identity, NetworkId, Amount, OptionQuery>;
Blake2_128Concat, #[pallet::storage]
(NetworkId, Public), type CurrentSession<T: Config> = StorageMap<_, Identity, NetworkId, Session, OptionQuery>;
Identity, #[pallet::storage]
Session, type LatestDecidedSession<T: Config> = StorageMap<_, Identity, NetworkId, Session, OptionQuery>;
Amount, // This has to use `Identity` per the documentation of `SessionsStorage`
OptionQuery, #[pallet::storage]
>; type SelectedValidators<T: Config> =
StorageMap<_, Identity, SelectedValidatorsKey, u64, OptionQuery>;
#[pallet::storage]
type TotalAllocatedStake<T: Config> = StorageMap<_, Identity, NetworkId, Amount, OptionQuery>;
#[pallet::storage]
type DelayedDeallocations<T: Config> =
StorageDoubleMap<_, Blake2_128Concat, Public, Identity, Session, Amount, OptionQuery>;
impl<T: Config> SessionsStorage for Abstractions<T> {
type GenesisValidators = GenesisValidators<T>;
type AllocationPerKeyShare = AllocationPerKeyShare<T>;
type CurrentSession = CurrentSession<T>;
type LatestDecidedSession = LatestDecidedSession<T>;
type SelectedValidators = SelectedValidators<T>;
type TotalAllocatedStake = TotalAllocatedStake<T>;
type DelayedDeallocations = DelayedDeallocations<T>;
}
/// The generated key pair for a given validator set instance. /// The generated key pair for a given validator set instance.
#[pallet::storage] #[pallet::storage]
@@ -353,12 +232,6 @@ pub mod pallet {
#[pallet::storage] #[pallet::storage]
pub type SeraiDisabledIndices<T: Config> = StorageMap<_, Identity, u32, Public, OptionQuery>; pub type SeraiDisabledIndices<T: Config> = StorageMap<_, Identity, u32, Public, OptionQuery>;
/// Mapping from session to its starting block number.
#[pallet::storage]
#[pallet::getter(fn session_begin_block)]
pub type SessionBeginBlock<T: Config> =
StorageDoubleMap<_, Identity, NetworkId, Identity, Session, u64, ValueQuery>;
#[pallet::event] #[pallet::event]
#[pallet::generate_deposit(pub(super) fn deposit_event)] #[pallet::generate_deposit(pub(super) fn deposit_event)]
pub enum Event<T: Config> { pub enum Event<T: Config> {
@@ -399,61 +272,15 @@ pub mod pallet {
impl<T: Config> Pallet<T> { impl<T: Config> Pallet<T> {
fn new_set(network: NetworkId) { 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. // TODO: prevent new set if it doesn't have enough stake for economic security.
Abstractions::<T>::attempt_new_session(network, include_genesis_validators)
// Update CurrentSession /* TODO
let session = {
let new_session =
CurrentSession::<T>::get(network).map_or(Session(0), |session| Session(session.0 + 1));
CurrentSession::<T>::set(network, Some(new_session));
new_session
};
// Clear the current InSet
assert_eq!(
InSet::<T>::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::<T>::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::<T>::set(network, key, Some(*shares));
}
let set = ValidatorSet { network, session }; let set = ValidatorSet { network, session };
Pallet::<T>::deposit_event(Event::NewSet { set }); Pallet::<T>::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::<T>::set(network, Some(Amount(total_allocated_stake)));
}
Participants::<T>::set(network, Some(participants.try_into().unwrap()));
SessionBeginBlock::<T>::set(
network,
session,
<frame_system::Pallet<T>>::block_number().saturated_into::<u64>(),
);
} }
} }
@@ -494,6 +321,7 @@ pub mod pallet {
DeallocationWouldRemoveEconomicSecurity, DeallocationWouldRemoveEconomicSecurity,
} }
/* TODO
#[pallet::hooks] #[pallet::hooks]
impl<T: Config> Hooks<BlockNumberFor<T>> for Pallet<T> { impl<T: Config> Hooks<BlockNumberFor<T>> for Pallet<T> {
fn on_initialize(n: BlockNumberFor<T>) -> Weight { fn on_initialize(n: BlockNumberFor<T>) -> Weight {
@@ -513,7 +341,7 @@ pub mod pallet {
for (id, stake) in self.networks.clone() { for (id, stake) in self.networks.clone() {
AllocationPerKeyShare::<T>::set(id, Some(stake)); AllocationPerKeyShare::<T>::set(id, Some(stake));
for participant in &self.participants { for participant in &self.participants {
if Pallet::<T>::set_allocation(id, participant.0, stake) { if Abstractions::<T>::set_allocation(id, participant.0, stake) {
panic!("participants contained duplicates"); panic!("participants contained duplicates");
} }
EmbeddedEllipticCurveKeys::<T>::set( EmbeddedEllipticCurveKeys::<T>::set(
@@ -531,12 +359,14 @@ pub mod pallet {
} }
} }
} }
*/
impl<T: Config> Pallet<T> { impl<T: Config> Pallet<T> {
fn account() -> T::AccountId { 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. // is_bft returns if the network is able to survive any single node becoming byzantine.
fn is_bft(network: NetworkId) -> bool { fn is_bft(network: NetworkId) -> bool {
let allocation_per_key_share = AllocationPerKeyShare::<T>::get(network).unwrap().0; let allocation_per_key_share = AllocationPerKeyShare::<T>::get(network).unwrap().0;
@@ -544,7 +374,7 @@ pub mod pallet {
let mut validators_len = 0; let mut validators_len = 0;
let mut top = None; let mut top = None;
let mut key_shares = 0; let mut key_shares = 0;
for (_, amount) in SortedAllocationsIter::<T>::new(network) { for (_, amount) in Abstractions::<T>::iter_allocations(network, allocation_per_key_share) {
validators_len += 1; validators_len += 1;
key_shares += amount.0 / allocation_per_key_share; key_shares += amount.0 / allocation_per_key_share;
@@ -573,53 +403,14 @@ pub mod pallet {
amount: Amount, amount: Amount,
block_reward: bool, block_reward: bool,
) -> DispatchResult { ) -> DispatchResult {
let old_allocation = Self::allocation((network, account)).unwrap_or(Amount(0)).0; /* TODO
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::<T>::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::<T>::AllocationWouldRemoveFaultTolerance)?;
}
}
// The above is_bft calls are only used to check a BFT net doesn't become non-BFT // 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 // 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() { if (new_allocation / allocation_per_key_share) >= (MAX_KEY_SHARES_PER_SET_U32 / 3).into() {
Err(Error::<T>::AllocationWouldPreventFaultTolerance)?; Err(Error::<T>::AllocationWouldPreventFaultTolerance)?;
} }
*/
// If they're in the current set, and the current set has completed its handover (so its Abstractions::<T>::increase_allocation(network, account, amount, block_reward)
// currently being tracked by TotalAllocatedStake), update the TotalAllocatedStake
if let Some(session) = Self::session(network) {
if InSet::<T>::contains_key(network, account) && Self::handover_completed(network, session)
{
TotalAllocatedStake::<T>::set(
network,
Some(Amount(TotalAllocatedStake::<T>::get(network).unwrap_or(Amount(0)).0 + amount.0)),
);
}
}
Ok(())
} }
fn session_to_unlock_on_for_current_set(network: NetworkId) -> Option<Session> { fn session_to_unlock_on_for_current_set(network: NetworkId) -> Option<Session> {
@@ -652,6 +443,7 @@ pub mod pallet {
account: T::AccountId, account: T::AccountId,
amount: Amount, amount: Amount,
) -> Result<bool, DispatchError> { ) -> Result<bool, DispatchError> {
/* TODO
// Check it's safe to decrease this set's stake by this amount // Check it's safe to decrease this set's stake by this amount
if let NetworkId::External(n) = network { if let NetworkId::External(n) = network {
let new_total_staked = Self::total_allocated_stake(NetworkId::from(n)) 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::<T>::NonExistentValidator)?.0;
let new_allocation =
old_allocation.checked_sub(amount.0).ok_or(Error::<T>::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::<T>::DeallocationWouldRemoveParticipant)?;
}
let decreased_key_shares = let decreased_key_shares =
(old_allocation / allocation_per_key_share) > (new_allocation / allocation_per_key_share); (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)); 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 let Some(was_bft) = was_bft {
if was_bft && (!Self::is_bft(network)) { if was_bft && (!Self::is_bft(network)) {
Err(Error::<T>::DeallocationWouldRemoveFaultTolerance)?; Err(Error::<T>::DeallocationWouldRemoveFaultTolerance)?;
} }
} }
*/
// If we're not in-set, allow immediate deallocation Sessions::<T>::decrease_allocation(network, account, amount)
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::<T>::get((network, account), to_unlock_on).unwrap_or(Amount(0));
PendingDeallocations::<T>::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)
} }
// Checks if this session has completed the handover from the prior session. // 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::<T>::get(network)
.expect("setting TotalAllocatedStake for a network without participants");
let total_stake = participants.iter().fold(0, |acc, (addr, _)| {
acc + Allocations::<T>::get((network, addr)).unwrap_or(Amount(0)).0
});
TotalAllocatedStake::<T>::set(network, Some(Amount(total_stake)));
}
// TODO: This is called retire_set, yet just starts retiring the set // TODO: This is called retire_set, yet just starts retiring the set
// Update the nomenclature within this function // Update the nomenclature within this function
pub fn retire_set(set: ValidatorSet) { pub fn retire_set(set: ValidatorSet) {
@@ -814,9 +551,6 @@ pub mod pallet {
Self::deposit_event(Event::AcceptedHandover { Self::deposit_event(Event::AcceptedHandover {
set: ValidatorSet { network: set.network, session: Session(set.session.0 + 1) }, 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. /// Take the amount deallocatable.
@@ -938,9 +672,10 @@ pub mod pallet {
fn slash_serai_validator(validator: Public) { fn slash_serai_validator(validator: Public) {
let network = NetworkId::Serai; let network = NetworkId::Serai;
let mut allocation = Self::allocation((network, validator)).unwrap_or(Amount(0)); let mut allocation = Abstractions::<T>::get_allocation((network, validator))
.unwrap_or(Amount(0));
// reduce the current allocation to 0. // reduce the current allocation to 0.
Self::set_allocation(network, validator, Amount(0)); Abstractions::<T>::set_allocation(network, validator, Amount(0));
// Take the pending deallocation from the current session // Take the pending deallocation from the current session
allocation.0 += PendingDeallocations::<T>::take( allocation.0 += PendingDeallocations::<T>::take(
@@ -1002,10 +737,12 @@ pub mod pallet {
Some(keys.1.into_inner()) Some(keys.1.into_inner())
} }
*/
} }
#[pallet::call] #[pallet::call]
impl<T: Config> Pallet<T> { impl<T: Config> Pallet<T> {
/*
#[pallet::call_index(0)] #[pallet::call_index(0)]
#[pallet::weight(0)] // TODO #[pallet::weight(0)] // TODO
pub fn set_keys( pub fn set_keys(
@@ -1066,31 +803,18 @@ pub mod pallet {
Ok(()) Ok(())
} }
*/
#[pallet::call_index(2)] #[pallet::call_index(2)]
#[pallet::weight(0)] // TODO #[pallet::weight(0)] // TODO
pub fn set_embedded_elliptic_curve_key( pub fn set_embedded_elliptic_curve_keys(
origin: OriginFor<T>, origin: OriginFor<T>,
embedded_elliptic_curve: EmbeddedEllipticCurve, network: ExternalNetworkId,
key: BoundedVec<u8, ConstU32<{ MAX_KEY_LEN }>>, keys: serai_primitives::crypto::EmbeddedEllipticCurveKeys,
) -> DispatchResult { ) -> DispatchResult {
let validator = ensure_signed(origin)?; let signer = ensure_signed(origin)?;
// TODO: Add PoKs and check validity
// We don't have the curve formulas, nor the BigInt arithmetic, necessary here to validate EmbeddedEllipticCurveKeys::<T>::set(signer, network, Some(keys));
// 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::<T>::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::<T>::set(validator, embedded_elliptic_curve, Some(key));
Ok(()) Ok(())
} }
@@ -1100,8 +824,8 @@ pub mod pallet {
let validator = ensure_signed(origin)?; let validator = ensure_signed(origin)?;
// If this network utilizes embedded elliptic curve(s), require the validator to have set the // If this network utilizes embedded elliptic curve(s), require the validator to have set the
// appropriate key(s) // appropriate key(s)
for embedded_elliptic_curve in network.embedded_elliptic_curves() { if let Ok(network) = ExternalNetworkId::try_from(network) {
if !EmbeddedEllipticCurveKeys::<T>::contains_key(validator, *embedded_elliptic_curve) { if !EmbeddedEllipticCurveKeys::<T>::contains_key(validator, network) {
Err(Error::<T>::MissingEmbeddedEllipticCurveKey)?; Err(Error::<T>::MissingEmbeddedEllipticCurveKey)?;
} }
} }
@@ -1110,7 +834,8 @@ pub mod pallet {
Self::account(), Self::account(),
Balance { coin: Coin::Serai, amount }, Balance { coin: Coin::Serai, amount },
)?; )?;
Self::increase_allocation(network, validator, amount, false) Abstractions::<T>::increase_allocation(network, validator, amount, false)?;
Ok(())
} }
#[pallet::call_index(4)] #[pallet::call_index(4)]
@@ -1118,8 +843,8 @@ pub mod pallet {
pub fn deallocate(origin: OriginFor<T>, network: NetworkId, amount: Amount) -> DispatchResult { pub fn deallocate(origin: OriginFor<T>, network: NetworkId, amount: Amount) -> DispatchResult {
let account = ensure_signed(origin)?; let account = ensure_signed(origin)?;
let can_immediately_deallocate = Self::decrease_allocation(network, account, amount)?; let deallocation_timeline = Abstractions::<T>::decrease_allocation(network, account, amount)?;
if can_immediately_deallocate { if matches!(deallocation_timeline, DeallocationTimeline::Immediate) {
Coins::<T>::transfer_internal( Coins::<T>::transfer_internal(
Self::account(), Self::account(),
account, account,
@@ -1130,6 +855,7 @@ pub mod pallet {
Ok(()) Ok(())
} }
/*
#[pallet::call_index(5)] #[pallet::call_index(5)]
#[pallet::weight((0, DispatchClass::Operational))] // TODO #[pallet::weight((0, DispatchClass::Operational))] // TODO
pub fn claim_deallocation( pub fn claim_deallocation(
@@ -1149,8 +875,10 @@ pub mod pallet {
Self::deposit_event(Event::DeallocationClaimed { validator: account, network, session }); Self::deposit_event(Event::DeallocationClaimed { validator: account, network, session });
Ok(()) Ok(())
} }
*/
} }
/*
#[pallet::validate_unsigned] #[pallet::validate_unsigned]
impl<T: Config> ValidateUnsigned for Pallet<T> { impl<T: Config> ValidateUnsigned for Pallet<T> {
type Call = Call<T>; type Call = Call<T>;
@@ -1271,8 +999,8 @@ pub mod pallet {
} }
} }
#[rustfmt::skip] impl<T: Config, V: Into<Public> + From<Public>> KeyOwnerProofSystem<(KeyTypeId, V)> for
impl<T: Config, V: Into<Public> + From<Public>> KeyOwnerProofSystem<(KeyTypeId, V)> for Pallet<T> { Pallet<T> {
type Proof = MembershipProof<T>; type Proof = MembershipProof<T>;
type IdentificationTuple = Public; type IdentificationTuple = Public;
@@ -1371,18 +1099,21 @@ pub mod pallet {
SeraiDisabledIndices::<T>::get(index).is_some() SeraiDisabledIndices::<T>::get(index).is_some()
} }
} }
*/
} }
sp_api::decl_runtime_apis! { sp_api::decl_runtime_apis! {
#[api_version(1)] #[api_version(1)]
pub trait ValidatorSetsApi { pub trait ValidatorSetsApi {
/// Returns the validator set for a given network. /// Returns the validator set for a given network.
fn validators(network_id: NetworkId) -> Vec<PublicKey>; fn validators(
network_id: serai_primitives::network_id::NetworkId,
) -> Vec<serai_primitives::crypto::Public>;
/// Returns the external network key for a given external network. /// Returns the external network key for a given external network.
fn external_network_key( fn external_network_key(
network: ExternalNetworkId, network: serai_primitives::network_id::ExternalNetworkId,
) -> Option<Vec<u8>>; ) -> Option<serai_primitives::crypto::ExternalKey>;
} }
} }

View File

@@ -135,6 +135,7 @@ pub(crate) trait Sessions {
network: NetworkId, network: NetworkId,
validator: Public, validator: Public,
amount: Amount, amount: Amount,
block_reward: bool,
) -> Result<(), AllocationError>; ) -> Result<(), AllocationError>;
/// Decrease a validator's allocation. /// Decrease a validator's allocation.
@@ -264,6 +265,7 @@ impl<Storage: SessionsStorage> Sessions for Storage {
network: NetworkId, network: NetworkId,
validator: Public, validator: Public,
amount: Amount, amount: Amount,
block_reward: bool,
) -> Result<(), AllocationError> { ) -> Result<(), AllocationError> {
let Some(allocation_per_key_share) = Storage::AllocationPerKeyShare::get(network) else { let Some(allocation_per_key_share) = Storage::AllocationPerKeyShare::get(network) else {
Err(AllocationError::NoAllocationPerKeyShareSet)? Err(AllocationError::NoAllocationPerKeyShareSet)?
@@ -272,7 +274,8 @@ impl<Storage: SessionsStorage> Sessions for Storage {
let old_allocation = Self::get_allocation(network, validator).unwrap_or(Amount(0)); 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 // 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(); 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)? Err(AllocationError::AllocationLessThanKeyShare)?
} }