From 7a314baa9fe5109d86d4a6e391d0f3b6e6306c41 Mon Sep 17 00:00:00 2001 From: Luke Parker Date: Sun, 16 Nov 2025 11:50:24 -0500 Subject: [PATCH] Update all of `serai-coordinator` to compile with the new `serai-client-serai` --- .github/workflows/tests.yml | 2 +- Cargo.lock | 1403 +++++++---------- Cargo.toml | 2 +- coordinator/Cargo.toml | 2 +- coordinator/cosign/Cargo.toml | 1 - coordinator/cosign/src/intend.rs | 16 +- coordinator/cosign/src/lib.rs | 22 +- coordinator/p2p/libp2p/Cargo.toml | 2 +- coordinator/p2p/libp2p/src/authenticate.rs | 4 +- coordinator/p2p/libp2p/src/dial.rs | 13 +- coordinator/p2p/libp2p/src/lib.rs | 9 +- coordinator/p2p/libp2p/src/swarm.rs | 2 +- coordinator/p2p/libp2p/src/validators.rs | 26 +- coordinator/p2p/src/heartbeat.rs | 4 +- coordinator/src/db.rs | 13 +- coordinator/src/dkg_confirmation.rs | 24 +- coordinator/src/main.rs | 30 +- coordinator/src/substrate.rs | 7 +- coordinator/src/tributary.rs | 2 +- coordinator/substrate/Cargo.toml | 2 +- coordinator/substrate/src/canonical.rs | 77 +- coordinator/substrate/src/ephemeral.rs | 146 +- coordinator/substrate/src/lib.rs | 30 +- coordinator/substrate/src/publish_batch.rs | 21 +- .../substrate/src/publish_slash_report.rs | 17 +- coordinator/substrate/src/set_keys.rs | 12 +- coordinator/tributary/Cargo.toml | 2 +- coordinator/tributary/src/db.rs | 30 +- coordinator/tributary/src/lib.rs | 11 +- coordinator/tributary/src/transaction.rs | 18 +- substrate/abi/src/block.rs | 6 + substrate/client/serai/Cargo.toml | 4 +- substrate/client/serai/src/in_instructions.rs | 52 + substrate/client/serai/src/lib.rs | 21 +- substrate/client/serai/src/validator_sets.rs | 48 +- substrate/node/src/rpc/p2p_validators.rs | 13 +- .../primitives/src/validator_sets/slashes.rs | 1 + 37 files changed, 1014 insertions(+), 1081 deletions(-) create mode 100644 substrate/client/serai/src/in_instructions.rs diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 6a47f95a..9befee7c 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -107,8 +107,8 @@ jobs: - name: Run Tests run: | + GITHUB_CI=true RUST_BACKTRACE=1 cargo test --all-features -p serai-client-serai GITHUB_CI=true RUST_BACKTRACE=1 cargo test --all-features -p serai-client-bitcoin GITHUB_CI=true RUST_BACKTRACE=1 cargo test --all-features -p serai-client-ethereum GITHUB_CI=true RUST_BACKTRACE=1 cargo test --all-features -p serai-client-monero - GITHUB_CI=true RUST_BACKTRACE=1 cargo test --all-features -p serai-client-serai GITHUB_CI=true RUST_BACKTRACE=1 cargo test --all-features -p serai-client diff --git a/Cargo.lock b/Cargo.lock index 661d8c43..851dc486 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -33,7 +33,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" dependencies = [ - "crypto-common 0.1.6", + "crypto-common 0.1.7", "generic-array 0.14.7", ] @@ -92,9 +92,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy-chains" -version = "0.2.17" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6068f356948cd84b5ad9ac30c50478e433847f14a50714d2b68f15d052724049" +checksum = "bfaa9ea039a6f9304b4a593d780b1f23e1ae183acdee938b11b38795acacc9f1" dependencies = [ "alloy-primitives", "num_enum", @@ -103,9 +103,9 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90d103d3e440ad6f703dd71a5b58a6abd24834563bde8a5fabe706e00242f810" +checksum = "ad704069c12f68d0c742d0cad7e0a03882b42767350584627fbf8a47b1bf1846" dependencies = [ "alloy-eips", "alloy-primitives", @@ -114,6 +114,7 @@ dependencies = [ "alloy-trie", "alloy-tx-macros", "auto_impl", + "borsh", "c-kzg", "derive_more 2.0.1", "either", @@ -129,9 +130,9 @@ dependencies = [ [[package]] name = "alloy-consensus-any" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48ead76c8c84ab3a50c31c56bc2c748c2d64357ad2131c32f9b10ab790a25e1a" +checksum = "bc374f640a5062224d7708402728e3d6879a514ba10f377da62e7dfb14c673e6" dependencies = [ "alloy-consensus", "alloy-eips", @@ -165,23 +166,25 @@ dependencies = [ [[package]] name = "alloy-eip2930" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b82752a889170df67bbb36d42ca63c531eb16274f0d7299ae2a680facba17bd" +checksum = "9441120fa82df73e8959ae0e4ab8ade03de2aaae61be313fbf5746277847ce25" dependencies = [ "alloy-primitives", "alloy-rlp", + "borsh", "serde", ] [[package]] name = "alloy-eip7702" -version = "0.6.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d4769c6ffddca380b0070d71c8b7f30bed375543fe76bb2f74ec0acf4b7cd16" +checksum = "2919c5a56a1007492da313e7a3b6d45ef5edc5d33416fdec63c0d7a2702a0d20" dependencies = [ "alloy-primitives", "alloy-rlp", + "borsh", "k256", "serde", "thiserror 2.0.17", @@ -189,9 +192,9 @@ dependencies = [ [[package]] name = "alloy-eips" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bdbec74583d0067798d77afa43d58f00d93035335d7ceaa5d3f93857d461bb9" +checksum = "7e867b5fd52ed0372a95016f3a37cbff95a9d5409230fbaef2d8ea00e8618098" dependencies = [ "alloy-eip2124", "alloy-eip2930", @@ -200,6 +203,7 @@ dependencies = [ "alloy-rlp", "alloy-serde", "auto_impl", + "borsh", "c-kzg", "derive_more 2.0.1", "either", @@ -211,9 +215,9 @@ dependencies = [ [[package]] name = "alloy-genesis" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c25d5acb35706e683df1ea333c862bdb6b7c5548836607cd5bb56e501cca0b4f" +checksum = "b90be17e9760a6ba6d13cebdb049cea405ebc8bf57d90664ed708cc5bc348342" dependencies = [ "alloy-eips", "alloy-primitives", @@ -249,9 +253,9 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31b67c5a702121e618217f7a86f314918acb2622276d0273490e2d4534490bc0" +checksum = "dcab4c51fb1273e3b0f59078e0cdf8aa99f697925b09f0d2055c18be46b4d48c" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -264,9 +268,9 @@ dependencies = [ [[package]] name = "alloy-network" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "612296e6b723470bb1101420a73c63dfd535aa9bf738ce09951aedbd4ab7292e" +checksum = "196d7fd3f5d414f7bbd5886a628b7c42bd98d1b126f9a7cff69dbfd72007b39c" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -290,9 +294,9 @@ dependencies = [ [[package]] name = "alloy-network-primitives" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0e7918396eecd69d9c907046ec8a93fb09b89e2f325d5e7ea9c4e3929aa0dd2" +checksum = "0d3ae2777e900a7a47ad9e3b8ab58eff3d93628265e73bbdee09acf90bf68f75" dependencies = [ "alloy-consensus", "alloy-eips", @@ -303,9 +307,9 @@ dependencies = [ [[package]] name = "alloy-node-bindings" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0be31900cc96fede4dc888a100f3c28fa2d22093f8e09fb7992829ce886acc2f" +checksum = "0ead1731af4146c573e2ea0e83c6a0696814efb0c25feea2892bdd5e4ee1f479" dependencies = [ "alloy-genesis", "alloy-hardforks", @@ -351,9 +355,9 @@ dependencies = [ [[package]] name = "alloy-provider" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55c1313a527a2e464d067c031f3c2ec073754ef615cc0eabca702fd0fe35729c" +checksum = "9f9bf40c9b2a90c7677f9c39bccd9f06af457f35362439c0497a706f16557703" dependencies = [ "alloy-chains", "alloy-consensus", @@ -406,14 +410,14 @@ checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] name = "alloy-rpc-client" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45f802228273056528dfd6cc8845cc91a7c7e0c6fc1a66d19e8673743dacdc7e" +checksum = "e7c2630fde9ff6033a780635e1af6ef40e92d74a9cacb8af3defc1b15cfebca5" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -431,9 +435,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdbf6d1766ca41e90ac21c4bc5cbc5e9e965978a25873c3f90b3992d905db4cb" +checksum = "50b8429b5b62d21bf3691eb1ae12aaae9bb496894d5a114e3cc73e27e6800ec8" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -442,9 +446,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-debug" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "977698b458738369ba5ca645d2cdb4d51ba07a81db37306ff85322853161ea3a" +checksum = "01731601ea631bd825c652a225701ab466c09457f446b8d8129368a095389c5d" dependencies = [ "alloy-primitives", "derive_more 2.0.1", @@ -454,9 +458,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15e4831b71eea9d20126a411c1c09facf1d01d5cac84fd51d532d3c429cfc26" +checksum = "29031a6bf46177d65efce661f7ab37829ca09dd341bc40afb5194e97600655cc" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -475,9 +479,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-trace" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb0c800e2ce80829fca1491b3f9063c29092850dc6cf19249d5f678f0ce71bb0" +checksum = "01b842f5aac6676ff4b2e328262d03bdf49807eaec3fe3a4735c45c97388518b" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -489,9 +493,9 @@ dependencies = [ [[package]] name = "alloy-serde" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "751d1887f7d202514a82c5b3caf28ee8bd4a2ad9549e4f498b6f0bff99b52add" +checksum = "01e856112bfa0d9adc85bd7c13db03fad0e71d1d6fb4c2010e475b6718108236" dependencies = [ "alloy-primitives", "serde", @@ -500,9 +504,9 @@ dependencies = [ [[package]] name = "alloy-signer" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf0b42ffbf558badfecf1dde0c3c5ed91f29bb7e97876d0bed008c3d5d67171" +checksum = "66a4f629da632d5279bbc5731634f0f5c9484ad9c4cad0cd974d9669dc1f46d6" dependencies = [ "alloy-primitives", "async-trait", @@ -515,9 +519,9 @@ dependencies = [ [[package]] name = "alloy-signer-local" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e7d555ee5f27be29af4ae312be014b57c6cff9acb23fe2cf008500be6ca7e33" +checksum = "76c8950810dc43660c0f22883659c4218e090a5c75dce33fa4ca787715997b7b" dependencies = [ "alloy-consensus", "alloy-network", @@ -551,7 +555,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -567,7 +571,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", "syn-solidity", "tiny-keccak", ] @@ -584,7 +588,7 @@ dependencies = [ "macro-string", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", "syn-solidity", ] @@ -612,9 +616,9 @@ dependencies = [ [[package]] name = "alloy-transport" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71b3deee699d6f271eab587624a9fa84d02d0755db7a95a043d52a6488d16ebe" +checksum = "fe215a2f9b51d5f1aa5c8cf22c8be8cdb354934de09c9a4e37aefb79b77552fd" dependencies = [ "alloy-json-rpc", "auto_impl", @@ -651,14 +655,14 @@ dependencies = [ [[package]] name = "alloy-tx-macros" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd7ce8ed34106acd6e21942022b6a15be6454c2c3ead4d76811d3bdcd63cf771" +checksum = "7ccf423f6de62e8ce1d6c7a11fb7508ae3536d02e0d68aaeb05c8669337d0937" dependencies = [ "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -702,11 +706,11 @@ dependencies = [ [[package]] name = "anstyle-query" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -761,7 +765,6 @@ checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" dependencies = [ "ark-ec", "ark-ff 0.5.0", - "ark-r1cs-std", "ark-std", ] @@ -821,7 +824,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" dependencies = [ "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -834,7 +837,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -852,35 +855,6 @@ dependencies = [ "hashbrown 0.15.5", ] -[[package]] -name = "ark-r1cs-std" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "941551ef1df4c7a401de7068758db6503598e6f01850bdb2cfdb614a1f9dbea1" -dependencies = [ - "ark-ec", - "ark-ff 0.5.0", - "ark-relations", - "ark-std", - "educe", - "num-bigint", - "num-integer", - "num-traits", - "tracing", -] - -[[package]] -name = "ark-relations" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec46ddc93e7af44bcab5230937635b06fb5744464dd6a7e7b083e80ebd274384" -dependencies = [ - "ark-ff 0.5.0", - "ark-std", - "tracing", - "tracing-subscriber 0.2.25", -] - [[package]] name = "ark-serialize" version = "0.5.0" @@ -902,7 +876,7 @@ checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -960,7 +934,7 @@ checksum = "3109e49b1e4909e9db6515a30c633684d68cdeaa252f215214cb4fa1a5bfee2c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", "synstructure 0.13.2", ] @@ -972,7 +946,7 @@ checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -1035,7 +1009,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -1046,7 +1020,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -1098,7 +1072,7 @@ checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -1140,8 +1114,8 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c8d66485a3a2ea485c1913c4572ce0256067a5377ac8c75c4960e1cda98605f" dependencies = [ - "bitcoin-internals 0.3.0", - "bitcoin_hashes 0.14.0", + "bitcoin-internals", + "bitcoin_hashes", ] [[package]] @@ -1177,7 +1151,19 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.108", + "syn 2.0.110", +] + +[[package]] +name = "bip39" +version = "2.2.0" +source = "git+https://github.com/rust-bitcoin/rust-bip39#f735e2559f30049f6738d1bf68c69a0b7bd7b858" +dependencies = [ + "bitcoin_hashes", + "rand 0.8.5", + "rand_core 0.6.4", + "serde", + "unicode-normalization", ] [[package]] @@ -1203,30 +1189,20 @@ checksum = "0fda569d741b895131a88ee5589a467e73e9c4718e958ac9308e4f7dc44b6945" dependencies = [ "base58ck", "bech32", - "bitcoin-internals 0.3.0", + "bitcoin-internals", "bitcoin-io", "bitcoin-units", - "bitcoin_hashes 0.14.0", - "hex-conservative 0.2.1", + "bitcoin_hashes", + "hex-conservative", "hex_lit", "secp256k1 0.29.1", - "serde", ] -[[package]] -name = "bitcoin-internals" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9425c3bf7089c983facbae04de54513cce73b41c7f9ff8c845b54e7bc64ebbfb" - [[package]] name = "bitcoin-internals" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "30bdbe14aa07b06e6cfeffc529a1f099e5fbe249524f8125358604df99a4bed2" -dependencies = [ - "serde", -] [[package]] name = "bitcoin-io" @@ -1239,13 +1215,13 @@ name = "bitcoin-serai" version = "0.4.0" dependencies = [ "bitcoin", + "core-json-derive", + "core-json-traits", "hex", "k256", "modular-frost", "rand_core 0.6.4", "secp256k1 0.29.1", - "serde", - "serde_json", "simple-request 0.3.0", "std-shims 0.1.5", "subtle", @@ -1260,18 +1236,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5285c8bcaa25876d07f37e3d30c303f2609179716e11d688f51e8f1fe70063e2" dependencies = [ - "bitcoin-internals 0.3.0", - "serde", -] - -[[package]] -name = "bitcoin_hashes" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1930a4dabfebb8d7d9992db18ebe3ae2876f0a305fab206fd168df931ede293b" -dependencies = [ - "bitcoin-internals 0.2.0", - "hex-conservative 0.1.2", + "bitcoin-internals", ] [[package]] @@ -1281,8 +1246,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16" dependencies = [ "bitcoin-io", - "hex-conservative 0.2.1", - "serde", + "hex-conservative", ] [[package]] @@ -1321,11 +1285,11 @@ dependencies = [ [[package]] name = "blake2" -version = "0.11.0-rc.2" +version = "0.11.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edac47499deef695d9431bf241c75ea29f4cf3dcb78d39e19b31515e4ad3b08" +checksum = "679065eb2b85a078ace42411e657bef3a6afe93a40d1b9cb04e39ca303cc3f36" dependencies = [ - "digest 0.11.0-rc.3", + "digest 0.11.0-rc.4", ] [[package]] @@ -1350,9 +1314,9 @@ dependencies = [ [[package]] name = "block-buffer" -version = "0.11.0-rc.5" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9ef36a6fcdb072aa548f3da057640ec10859eb4e91ddf526ee648d50c76a949" +checksum = "96eb4cdd6cf1b31d671e9efe75c5d1ec614776856cefbe109ca373554a6d514f" dependencies = [ "hybrid-array", "zeroize", @@ -1422,14 +1386,14 @@ dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] name = "bounded-collections" -version = "0.2.4" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ad8a0bed7827f0b07a5d23cec2e58cc02038a99e4ca81616cb2bb2025f804d" +checksum = "dee8eddd066a8825ec5570528e6880471210fd5d88cb6abbe1cfdd51ca249c33" dependencies = [ "log", "parity-scale-codec", @@ -1479,9 +1443,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" dependencies = [ "serde", ] @@ -1617,7 +1581,7 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ - "crypto-common 0.1.6", + "crypto-common 0.1.7", "inout", "zeroize", ] @@ -1626,7 +1590,7 @@ dependencies = [ name = "ciphersuite" version = "0.4.2" dependencies = [ - "digest 0.11.0-rc.3", + "digest 0.11.0-rc.4", "ff", "ff-group-tests", "group", @@ -1656,7 +1620,7 @@ dependencies = [ "k256", "p256", "rand_core 0.6.4", - "sha2 0.11.0-rc.2", + "sha2 0.11.0-rc.3", "zeroize", ] @@ -1702,7 +1666,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -1838,6 +1802,27 @@ version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" +[[package]] +name = "core-json" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "043d2b0b61dd6d1e9c6f7f78789a283357ea37254377f6470c5f83492caa071b" + +[[package]] +name = "core-json-derive" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0b4af06d7694a201acc0f99c54d29f89943c7a6ff32a50ee12925cc299cd1d1" + +[[package]] +name = "core-json-traits" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "221e2f365cc6e3208c794e2bcb07a70f7e610d286731c068bce53e0fb623b1c1" +dependencies = [ + "core-json", +] + [[package]] name = "core2" version = "0.4.0" @@ -1858,36 +1843,36 @@ dependencies = [ [[package]] name = "cranelift-assembler-x64" -version = "0.124.2" +version = "0.125.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e2df3d5caad11e71bb0b70115a5210c3af4a0bcb2893f78ee9311b1b266b05" +checksum = "c088d3406f0c0252efa7445adfd2d05736bfb5218838f64eaf79d567077aed14" dependencies = [ "cranelift-assembler-x64-meta", ] [[package]] name = "cranelift-assembler-x64-meta" -version = "0.124.2" +version = "0.125.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b63e87985fc9166a2541b05fd5f913a398cff9aec6b13ebca865253cdee15806" +checksum = "5c03f887a763abb9c1dc08f722aa82b69067fda623b6f0273050f45f8b1a6776" dependencies = [ "cranelift-srcgen", ] [[package]] name = "cranelift-bforest" -version = "0.124.2" +version = "0.125.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b5364dfe182d4b89af2f4bd0dafc8f6c590bbf0216ee8ce60bfd8893c3d14a6" +checksum = "0206887a11a43f507fee320a218dc365980bfc42ec2696792079a9f8c9369e90" dependencies = [ "cranelift-entity", ] [[package]] name = "cranelift-bitset" -version = "0.124.2" +version = "0.125.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3067ca8c10796434497a5faac73d949b5ac0008ed572013debe88694bfef426e" +checksum = "ac0790c83cfdab95709c5d0105fd888221e3af9049a7d7ec376ec901ab4e4dba" dependencies = [ "serde", "serde_derive", @@ -1895,9 +1880,9 @@ dependencies = [ [[package]] name = "cranelift-codegen" -version = "0.124.2" +version = "0.125.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eb420cc46d7f0956e2e3d9e6389036c612ada3542a29edc6f5deedf86d568ba" +checksum = "9a98aed2d262eda69310e84bae8e053ee4f17dbdd3347b8d9156aa618ba2de0a" dependencies = [ "bumpalo", "cranelift-assembler-x64", @@ -1922,9 +1907,9 @@ dependencies = [ [[package]] name = "cranelift-codegen-meta" -version = "0.124.2" +version = "0.125.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "440d31dd36e477fb6292821b593da65df60328bca1046ea5881f424aa5a44b5d" +checksum = "6906852826988563e9b0a9232ad951f53a47aa41ffd02f8ac852d3f41aae836a" dependencies = [ "cranelift-assembler-x64-meta", "cranelift-codegen-shared", @@ -1935,24 +1920,24 @@ dependencies = [ [[package]] name = "cranelift-codegen-shared" -version = "0.124.2" +version = "0.125.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0b342ef4835787577f6e7553747cdd902797509eb5af733cd89e5ce97cea0f0" +checksum = "3a50105aab667b5cc845f2be37c78475d7cc127cd8ec0a31f7b2b71d526099a7" [[package]] name = "cranelift-control" -version = "0.124.2" +version = "0.125.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b34de54534b61c3f3e475558cf19c90b2a7a758c7018e557e5d1a47b9a1fbb03" +checksum = "6adcc7aa7c0bc1727176a6f2d99c28a9e79a541ccd5ca911a0cb352da8befa36" dependencies = [ "arbitrary", ] [[package]] name = "cranelift-entity" -version = "0.124.2" +version = "0.125.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d7bf1aae1800d053aa965381dcb01054404d0bcd8ea5ffe65bb855b8e3f654" +checksum = "981b56af777f9a34ea6dcce93255125776d391410c2a68b75bed5941b714fa15" dependencies = [ "cranelift-bitset", "serde", @@ -1961,9 +1946,9 @@ dependencies = [ [[package]] name = "cranelift-frontend" -version = "0.124.2" +version = "0.125.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36158c03d70e1f443cc2d6d9adc838fc0a031b166f3861534e9cb77742380e2a" +checksum = "dea982589684dfb71afecb9fc09555c3a266300a1162a60d7fa39d41a5705b1c" dependencies = [ "cranelift-codegen", "log", @@ -1973,15 +1958,15 @@ dependencies = [ [[package]] name = "cranelift-isle" -version = "0.124.2" +version = "0.125.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fa194bbc189c965454f3a94c1acb6c89d63d5d0b183e60edc17db758bfbe519" +checksum = "a0422686b22ed6a1f33cc40e3c43eb84b67155788568d1a5cac8439d3dca1783" [[package]] name = "cranelift-native" -version = "0.124.2" +version = "0.125.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c469bb98ffe9f38a1a5ada0427ab096f0f1b9a22a30149fc705205c56cf8985" +checksum = "56f697bbbe135c655ea1deb7af0bae4a5c4fae2c88fdfc0fa57b34ae58c91040" dependencies = [ "cranelift-codegen", "libc", @@ -1990,9 +1975,9 @@ dependencies = [ [[package]] name = "cranelift-srcgen" -version = "0.124.2" +version = "0.125.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12d694cd4c6b28fb8a4d0cf5b58d532b6b3b6e4afb2b65603e2ab8dc35bf18bd" +checksum = "718efe674f3df645462677e22a3128e890d88ba55821bb091083d257707be76c" [[package]] name = "crc" @@ -2090,9 +2075,9 @@ dependencies = [ [[package]] name = "crypto-common" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" dependencies = [ "generic-array 0.14.7", "rand_core 0.6.4", @@ -2101,9 +2086,9 @@ dependencies = [ [[package]] name = "crypto-common" -version = "0.2.0-rc.4" +version = "0.2.0-rc.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8235645834fbc6832939736ce2f2d08192652269e11010a6240f61b908a1c6" +checksum = "919bd05924682a5480aec713596b9e2aabed3a0a6022fab6847f85a99e5f190a" dependencies = [ "hybrid-array", ] @@ -2144,21 +2129,22 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] name = "dalek-ff-group" version = "0.5.0" dependencies = [ - "blake2 0.11.0-rc.2", + "blake2 0.11.0-rc.3", "ciphersuite 0.4.2", + "crypto-bigint 0.5.5", "curve25519-dalek", "ff-group-tests", "hex", "prime-field", "rand_core 0.6.4", - "sha2 0.11.0-rc.2", + "sha2 0.11.0-rc.3", "subtle", "zeroize", ] @@ -2192,7 +2178,7 @@ dependencies = [ "quote", "serde", "strsim", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -2203,7 +2189,7 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -2243,16 +2229,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d162beedaa69905488a8da94f5ac3edb4dd4788b732fadb7bd120b2625c1976" dependencies = [ "data-encoding", - "syn 2.0.108", -] - -[[package]] -name = "debugid" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d" -dependencies = [ - "uuid", + "syn 2.0.110", ] [[package]] @@ -2297,7 +2274,7 @@ checksum = "d65d7ce8132b7c0e54497a4d9a55a1c2a0912a0d786cf894472ba818fba45762" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -2308,7 +2285,7 @@ checksum = "ef941ded77d15ca19b40374869ac6000af1c9f2a4c0f3d4c70926287e6364a8f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -2337,7 +2314,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -2348,7 +2325,7 @@ checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", "unicode-xid", ] @@ -2360,18 +2337,18 @@ checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer 0.10.4", "const-oid", - "crypto-common 0.1.6", + "crypto-common 0.1.7", "subtle", ] [[package]] name = "digest" -version = "0.11.0-rc.3" +version = "0.11.0-rc.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dac89f8a64533a9b0eaa73a68e424db0fb1fd6271c74cc0125336a05f090568d" +checksum = "ea390c940e465846d64775e55e3115d5dc934acb953de6f6e6360bc232fe2bf7" dependencies = [ - "block-buffer 0.11.0-rc.5", - "crypto-common 0.2.0-rc.4", + "block-buffer 0.11.0", + "crypto-common 0.2.0-rc.5", "subtle", "zeroize", ] @@ -2425,7 +2402,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -2453,7 +2430,7 @@ dependencies = [ name = "dkg-evrf" version = "0.1.0" dependencies = [ - "blake2 0.11.0-rc.2", + "blake2 0.11.0-rc.3", "ciphersuite 0.4.2", "ciphersuite-kp256", "dalek-ff-group", @@ -2611,7 +2588,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -2660,7 +2637,7 @@ checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" name = "embedwards25519" version = "0.1.0" dependencies = [ - "blake2 0.11.0-rc.2", + "blake2 0.11.0-rc.3", "ciphersuite 0.4.2", "curve25519-dalek", "ff-group-tests", @@ -2690,7 +2667,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -2710,7 +2687,7 @@ checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -2761,6 +2738,7 @@ dependencies = [ "k256", "rand_core 0.6.4", "sha3 0.10.8", + "std-shims 0.1.5", "subtle", "tokio", ] @@ -2805,7 +2783,7 @@ dependencies = [ "fs-err", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -2919,10 +2897,10 @@ checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" name = "flexible-transcript" version = "0.3.4" dependencies = [ - "blake2 0.11.0-rc.2", - "digest 0.11.0-rc.3", + "blake2 0.11.0-rc.3", + "digest 0.11.0-rc.4", "merlin", - "sha2 0.11.0-rc.2", + "sha2 0.11.0-rc.3", "zeroize", ] @@ -2947,7 +2925,7 @@ checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "fork-tree" version = "13.0.1" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "parity-scale-codec", ] @@ -2979,8 +2957,8 @@ checksum = "28dd6caf6059519a65843af8fe2a3ae298b14b80179855aeb4adc2c1934ee619" [[package]] name = "frame-benchmarking" -version = "41.0.1" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "43.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "frame-support", "frame-support-procedural", @@ -3002,8 +2980,8 @@ dependencies = [ [[package]] name = "frame-executive" -version = "41.0.1" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "43.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "frame-support", "frame-system", @@ -3018,8 +2996,8 @@ dependencies = [ [[package]] name = "frame-support" -version = "41.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "43.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "array-bytes", "bitflags 1.3.2", @@ -3051,8 +3029,8 @@ dependencies = [ [[package]] name = "frame-support-procedural" -version = "34.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "35.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "Inflector", "cfg-expr", @@ -3065,35 +3043,35 @@ dependencies = [ "proc-macro2", "quote", "sp-crypto-hashing", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] name = "frame-support-procedural-tools" version = "13.0.1" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] name = "frame-support-procedural-tools-derive" version = "12.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] name = "frame-system" -version = "41.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "43.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "cfg-if", "frame-support", @@ -3107,19 +3085,10 @@ dependencies = [ "sp-weights", ] -[[package]] -name = "frame-system-rpc-runtime-api" -version = "37.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" -dependencies = [ - "parity-scale-codec", - "sp-api", -] - [[package]] name = "frame-try-runtime" -version = "0.47.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "0.49.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "frame-support", "parity-scale-codec", @@ -3245,7 +3214,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -3301,28 +3270,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" -[[package]] -name = "fxhash" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" -dependencies = [ - "byteorder", -] - -[[package]] -name = "fxprof-processed-profile" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27d12c0aed7f1e24276a241aadc4cb8ea9f83000f34bc062b7cc2d51e3b0fabd" -dependencies = [ - "bitflags 2.10.0", - "debugid", - "fxhash", - "serde", - "serde_json", -] - [[package]] name = "generalized-bulletproofs" version = "0.1.0" @@ -3461,9 +3408,9 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "governor" -version = "0.10.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "444405bbb1a762387aa22dd569429533b54a1d8759d35d3b64cb39b0293eaa19" +checksum = "6e23d5986fd4364c2fb7498523540618b4b8d92eec6c36a02e565f66748e2f79" dependencies = [ "cfg-if", "dashmap", @@ -3471,7 +3418,7 @@ dependencies = [ "futures-timer", "futures-util", "getrandom 0.3.4", - "hashbrown 0.15.5", + "hashbrown 0.16.0", "nonzero_ext", "parking_lot", "portable-atomic", @@ -3566,6 +3513,8 @@ version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" dependencies = [ + "allocator-api2", + "equivalent", "foldhash 0.2.0", "serde", ] @@ -3597,12 +3546,6 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -[[package]] -name = "hex-conservative" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "212ab92002354b4819390025006c897e8140934349e8635c9b077f47b4dcbd20" - [[package]] name = "hex-conservative" version = "0.2.1" @@ -3762,9 +3705,9 @@ dependencies = [ [[package]] name = "hyper" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" +checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" dependencies = [ "atomic-waker", "bytes", @@ -3818,9 +3761,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" +checksum = "52e9a2a24dc5c6821e71a7030e1e14b7b632acac55c40e9d2e082c621261bb56" dependencies = [ "bytes", "futures-channel", @@ -4013,7 +3956,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -4109,26 +4052,6 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" -[[package]] -name = "ittapi" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b996fe614c41395cdaedf3cf408a9534851090959d90d54a535f675550b64b1" -dependencies = [ - "anyhow", - "ittapi-sys", - "log", -] - -[[package]] -name = "ittapi-sys" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f5385394064fa2c886205dba02598013ce83d3e92d33dbdc0c52fe0e7bf4fc" -dependencies = [ - "cc", -] - [[package]] name = "jobserver" version = "0.1.34" @@ -4196,7 +4119,7 @@ dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -4300,9 +4223,9 @@ dependencies = [ [[package]] name = "kvdb-rocksdb" -version = "0.20.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8beb5ce840610e5a945f0306f6e7a2d5b3e68ea3e64e9a4f081fa4ee5aa6525" +checksum = "3b089b6062662d720a836f055931434439fcd3a90f0059db0b831a99da6db460" dependencies = [ "kvdb", "num_cpus", @@ -4675,7 +4598,7 @@ checksum = "dd297cf53f0cb3dee4d2620bb319ae47ef27c702684309f682bdb7e55a18ae9c" dependencies = [ "heck", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -4777,23 +4700,28 @@ dependencies = [ [[package]] name = "librocksdb-sys" version = "0.17.3+10.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cef2a00ee60fe526157c9023edab23943fae1ce2ab6f4abb2a807c1746835de9" +source = "git+https://github.com/rust-rocksdb/rust-rocksdb#a3f6cb54514624c0aed3bf5591f18b82e4c3170b" dependencies = [ "bindgen", "bzip2-sys", "cc", "libc", "libz-sys", - "tikv-jemalloc-sys", "zstd-sys", ] +[[package]] +name = "librocksdb-sys" +version = "0.17.99" +dependencies = [ + "librocksdb-sys 0.17.3+10.4.2", +] + [[package]] name = "libz-sys" -version = "1.1.22" +version = "1.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b70e7a7df205e92a1a4cd9aaae7898dac0aa555503cc0a649494d0d60e7651d" +checksum = "15d118bbf3771060e7311cc7bb0545b01d08a8b4a7de949198dec1fa0ca1c0f7" dependencies = [ "cc", "pkg-config", @@ -4808,9 +4736,9 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linked_hash_set" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bae85b5be22d9843c80e5fc80e9b64c8a3b1f98f867c709956eca3efff4e92e2" +checksum = "984fb35d06508d1e69fc91050cceba9c0b748f983e6739fa2c7a9237154c52c8" dependencies = [ "linked-hash-map", ] @@ -4855,7 +4783,7 @@ dependencies = [ "generator", "scoped-tls", "tracing", - "tracing-subscriber 0.3.20", + "tracing-subscriber", ] [[package]] @@ -4918,7 +4846,7 @@ checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -4930,7 +4858,7 @@ dependencies = [ "macro_magic_core", "macro_magic_macros", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -4944,7 +4872,7 @@ dependencies = [ "macro_magic_core_macros", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -4955,7 +4883,7 @@ checksum = "31e7b9b365f39f573850b21c1e241234e29426ee8b0d6ee13637f714fad7390f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -4966,7 +4894,7 @@ checksum = "54256681b01f4e5b038a619b24896f8c76d61995075909226d4e6bcf60bad525" dependencies = [ "macro_magic_core", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -5115,7 +5043,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -5741,10 +5669,9 @@ version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" dependencies = [ - "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -5821,8 +5748,8 @@ dependencies = [ [[package]] name = "pallet-authorship" -version = "41.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "43.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "frame-support", "frame-system", @@ -5833,8 +5760,8 @@ dependencies = [ [[package]] name = "pallet-babe" -version = "41.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "43.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "frame-benchmarking", "frame-support", @@ -5854,8 +5781,8 @@ dependencies = [ [[package]] name = "pallet-grandpa" -version = "41.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "43.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "frame-benchmarking", "frame-support", @@ -5875,7 +5802,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "41.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "frame-support", "frame-system", @@ -5885,8 +5812,8 @@ dependencies = [ [[package]] name = "pallet-session-original" -version = "41.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "43.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "frame-support", "frame-system", @@ -5905,8 +5832,8 @@ dependencies = [ [[package]] name = "pallet-timestamp" -version = "40.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "42.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "frame-benchmarking", "frame-support", @@ -5920,15 +5847,9 @@ dependencies = [ [[package]] name = "parity-bip39" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e69bf016dc406eff7d53a7d3f7cf1c2e72c82b9088aac1118591e36dd2cd3e9" +version = "2.99.99" dependencies = [ - "bitcoin_hashes 0.13.0", - "rand 0.8.5", - "rand_core 0.6.4", - "serde", - "unicode-normalization", + "bip39", ] [[package]] @@ -5978,7 +5899,7 @@ dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -6061,49 +5982,6 @@ dependencies = [ "indexmap 2.12.0", ] -[[package]] -name = "phf" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" -dependencies = [ - "phf_macros", - "phf_shared", - "serde", -] - -[[package]] -name = "phf_generator" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" -dependencies = [ - "fastrand", - "phf_shared", -] - -[[package]] -name = "phf_macros" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef" -dependencies = [ - "phf_generator", - "phf_shared", - "proc-macro2", - "quote", - "syn 2.0.108", -] - -[[package]] -name = "phf_shared" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" -dependencies = [ - "siphasher", -] - [[package]] name = "pin-project" version = "1.1.10" @@ -6121,7 +5999,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -6255,7 +6133,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -6292,9 +6170,9 @@ dependencies = [ [[package]] name = "primitive-types" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d15600a7d856470b7d278b3fe0e311fe28c2526348549f8ef2ff7db3299c87f5" +checksum = "721a1da530b5a2633218dc9f75713394c983c352be88d2d7c9ee85e2c4c21794" dependencies = [ "fixed-hash", "impl-codec 0.7.1", @@ -6366,7 +6244,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -6377,7 +6255,7 @@ checksum = "75eea531cfcd120e0851a3f8aed42c4841f78c889eefafd96339c72677ae42c3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -6423,7 +6301,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -6471,7 +6349,7 @@ dependencies = [ "prost", "prost-types", "regex", - "syn 2.0.108", + "syn 2.0.110", "tempfile", ] @@ -6485,7 +6363,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -6499,9 +6377,9 @@ dependencies = [ [[package]] name = "pulley-interpreter" -version = "37.0.2" +version = "38.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cff3cc2c3a933419d4989b9dcdee724ebc9ee4cdc1f175dbaeef71d3b963336" +checksum = "beafc309a2d35e16cc390644d88d14dfa45e45e15075ec6a9e37f6dfb43e926f" dependencies = [ "cranelift-bitset", "log", @@ -6511,13 +6389,13 @@ dependencies = [ [[package]] name = "pulley-macros" -version = "37.0.2" +version = "38.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56fca4a86a359a71f35f188de13bdfa9dc5b56a36d236fa98cb0db601ef4d21" +checksum = "1885fbb6c07454cfc8725a18a1da3cfc328ee8c53fb8d0671ea313edc8567947" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -6621,9 +6499,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.41" +version = "1.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" dependencies = [ "proc-macro2", ] @@ -6815,14 +6693,14 @@ checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] name = "regalloc2" -version = "0.13.2" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efd8138ce7c3d7c13be4f61893154b5d711bd798d2d7be3ecb8dcc7e7a06ca98" +checksum = "4e249c660440317032a71ddac302f25f1d5dff387667bcc3978d1f77aa31ac34" dependencies = [ "allocator-api2", "bumpalo", @@ -6869,9 +6747,9 @@ checksum = "6b3789b30bd25ba102de4beabd95d21ac45b69b1be7d14522bab988c526d6799" [[package]] name = "revm" -version = "31.0.0" +version = "33.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7bba993ce958f0b6eb23d2644ea8360982cb60baffedf961441e36faba6a2ca" +checksum = "0c85ed0028f043f87b3c88d4a4cb6f0a76440085523b6a8afe5ff003cf418054" dependencies = [ "revm-bytecode", "revm-context", @@ -6888,21 +6766,19 @@ dependencies = [ [[package]] name = "revm-bytecode" -version = "7.1.0" +version = "7.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f2b51c414b7e79edd4a0569d06e2c4c029f8b60e5f3ee3e2fa21dc6c3717ee3" +checksum = "e2c6b5e6e8dd1e28a4a60e5f46615d4ef0809111c9e63208e55b5c7058200fb0" dependencies = [ "bitvec", - "phf", "revm-primitives", - "serde", ] [[package]] name = "revm-context" -version = "11.0.0" +version = "12.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f69efee45130bd9e5b0a7af27552fddc70bc161dafed533c2f818a2d1eb654e6" +checksum = "f038f0c9c723393ac897a5df9140b21cfa98f5753a2cb7d0f28fa430c4118abf" dependencies = [ "bitvec", "cfg-if", @@ -6912,14 +6788,13 @@ dependencies = [ "revm-database-interface", "revm-primitives", "revm-state", - "serde", ] [[package]] name = "revm-context-interface" -version = "12.0.0" +version = "13.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ce2525e93db0ae2a3ec7dcde5443dfdb6fbf321c5090380d775730c67bc6cee" +checksum = "431c9a14e4ef1be41ae503708fd02d974f80ef1f2b6b23b5e402e8d854d1b225" dependencies = [ "alloy-eip2930", "alloy-eip7702", @@ -6928,41 +6803,37 @@ dependencies = [ "revm-database-interface", "revm-primitives", "revm-state", - "serde", ] [[package]] name = "revm-database" -version = "9.0.3" +version = "9.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2602625aa11ab1eda8e208e96b652c0bfa989b86c104a36537a62b081228af9" +checksum = "980d8d6bba78c5dd35b83abbb6585b0b902eb25ea4448ed7bfba6283b0337191" dependencies = [ - "alloy-eips", "revm-bytecode", "revm-database-interface", "revm-primitives", "revm-state", - "serde", ] [[package]] name = "revm-database-interface" -version = "8.0.4" +version = "8.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58a4621143d6515e32f969306d9c85797ae0d3fe0c74784f1fda02ba441e5a08" +checksum = "8cce03e3780287b07abe58faf4a7f5d8be7e81321f93ccf3343c8f7755602bae" dependencies = [ "auto_impl", "either", "revm-primitives", "revm-state", - "serde", ] [[package]] name = "revm-handler" -version = "12.0.0" +version = "14.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e756198d43b6c4c5886548ffbc4594412d1a82b81723525c6e85ed6da0e91c5f" +checksum = "d44f8f6dbeec3fecf9fe55f78ef0a758bdd92ea46cd4f1ca6e2a946b32c367f3" dependencies = [ "auto_impl", "derive-where", @@ -6974,14 +6845,13 @@ dependencies = [ "revm-precompile", "revm-primitives", "revm-state", - "serde", ] [[package]] name = "revm-inspector" -version = "12.0.0" +version = "14.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3fdd1e74cc99c6173c8692b6e480291e2ad0c21c716d9dc16e937ab2e0da219" +checksum = "5617e49216ce1ca6c8826bcead0386bc84f49359ef67cde6d189961735659f93" dependencies = [ "auto_impl", "either", @@ -6991,28 +6861,25 @@ dependencies = [ "revm-interpreter", "revm-primitives", "revm-state", - "serde", - "serde_json", ] [[package]] name = "revm-interpreter" -version = "29.0.0" +version = "31.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44efb7c2f4034a5bfd3d71ebfed076e48ac75e4972f1c117f2a20befac7716cd" +checksum = "26ec36405f7477b9dccdc6caa3be19adf5662a7a0dffa6270cdb13a090c077e5" dependencies = [ "revm-bytecode", "revm-context-interface", "revm-primitives", "revm-state", - "serde", ] [[package]] name = "revm-precompile" -version = "29.0.0" +version = "31.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585098ede6d84d6fc6096ba804b8e221c44dc77679571d32664a55e665aa236b" +checksum = "9a62958af953cc4043e93b5be9b8497df84cc3bd612b865c49a7a7dfa26a84e2" dependencies = [ "ark-bls12-381", "ark-bn254", @@ -7021,39 +6888,34 @@ dependencies = [ "ark-serialize", "arrayref", "aurora-engine-modexp", - "c-kzg", "cfg-if", "k256", "p256", "revm-primitives", "ripemd", - "rug", - "secp256k1 0.31.99", "sha2 0.10.9", ] [[package]] name = "revm-primitives" -version = "21.0.1" +version = "21.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "536f30e24c3c2bf0d3d7d20fa9cf99b93040ed0f021fd9301c78cddb0dacda13" +checksum = "29e161db429d465c09ba9cbff0df49e31049fe6b549e28eb0b7bd642fcbd4412" dependencies = [ "alloy-primitives", "num_enum", "once_cell", - "serde", ] [[package]] name = "revm-state" -version = "8.1.0" +version = "8.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a0b4873815e31cbc3e5b183b9128b86c09a487c027aaf8cc5cf4b9688878f9b" +checksum = "7d8be953b7e374dbdea0773cf360debed8df394ea8d82a8b240a6b5da37592fc" dependencies = [ "bitflags 2.10.0", "revm-bytecode", "revm-primitives", - "serde", ] [[package]] @@ -7106,7 +6968,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ddb7af00d2b17dbd07d82c0063e25411959748ff03e8d4f96134c2ff41fce34f" dependencies = [ "libc", - "librocksdb-sys", + "librocksdb-sys 0.17.99", ] [[package]] @@ -7154,10 +7016,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "rug" -version = "1.99.99" - [[package]] name = "ruint" version = "1.17.0" @@ -7343,8 +7201,8 @@ dependencies = [ [[package]] name = "sc-allocator" -version = "32.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "34.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "log", "sp-core", @@ -7354,8 +7212,8 @@ dependencies = [ [[package]] name = "sc-authority-discovery" -version = "0.51.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "0.53.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "async-trait", "futures", @@ -7367,7 +7225,6 @@ dependencies = [ "prost", "prost-build", "rand 0.8.5", - "sc-client-api", "sc-network", "sc-network-types", "serde", @@ -7385,8 +7242,8 @@ dependencies = [ [[package]] name = "sc-basic-authorship" -version = "0.50.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "0.52.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "futures", "log", @@ -7401,13 +7258,14 @@ dependencies = [ "sp-core", "sp-inherents", "sp-runtime", + "sp-trie", "substrate-prometheus-endpoint", ] [[package]] name = "sc-block-builder" -version = "0.45.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "0.47.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "parity-scale-codec", "sp-api", @@ -7421,8 +7279,8 @@ dependencies = [ [[package]] name = "sc-chain-spec" -version = "44.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "46.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "array-bytes", "parity-scale-codec", @@ -7446,18 +7304,18 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "12.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] name = "sc-cli" -version = "0.53.1" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "0.55.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "array-bytes", "chrono", @@ -7497,8 +7355,8 @@ dependencies = [ [[package]] name = "sc-client-api" -version = "40.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "42.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "fnv", "futures", @@ -7523,8 +7381,8 @@ dependencies = [ [[package]] name = "sc-client-db" -version = "0.47.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "0.49.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "hash-db", "kvdb", @@ -7550,8 +7408,8 @@ dependencies = [ [[package]] name = "sc-consensus" -version = "0.50.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "0.52.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "async-trait", "futures", @@ -7573,8 +7431,8 @@ dependencies = [ [[package]] name = "sc-consensus-babe" -version = "0.51.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "0.53.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "async-trait", "fork-tree", @@ -7603,14 +7461,15 @@ dependencies = [ "sp-inherents", "sp-keystore", "sp-runtime", + "sp-timestamp", "substrate-prometheus-endpoint", "thiserror 2.0.17", ] [[package]] name = "sc-consensus-epochs" -version = "0.50.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "0.52.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "fork-tree", "parity-scale-codec", @@ -7622,8 +7481,8 @@ dependencies = [ [[package]] name = "sc-consensus-grandpa" -version = "0.36.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "0.38.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "ahash", "array-bytes", @@ -7666,8 +7525,8 @@ dependencies = [ [[package]] name = "sc-consensus-slots" -version = "0.50.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "0.52.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "async-trait", "futures", @@ -7689,8 +7548,8 @@ dependencies = [ [[package]] name = "sc-executor" -version = "0.43.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "0.45.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "parity-scale-codec", "parking_lot", @@ -7711,8 +7570,8 @@ dependencies = [ [[package]] name = "sc-executor-common" -version = "0.39.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "0.41.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "sc-allocator", "sp-wasm-interface", @@ -7722,8 +7581,8 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" -version = "0.39.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "0.41.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "anyhow", "log", @@ -7738,8 +7597,8 @@ dependencies = [ [[package]] name = "sc-informant" -version = "0.50.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "0.52.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "console", "futures", @@ -7754,8 +7613,8 @@ dependencies = [ [[package]] name = "sc-keystore" -version = "36.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "38.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "array-bytes", "parking_lot", @@ -7768,8 +7627,8 @@ dependencies = [ [[package]] name = "sc-network" -version = "0.51.1" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "0.53.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "array-bytes", "async-channel", @@ -7813,8 +7672,8 @@ dependencies = [ [[package]] name = "sc-network-common" -version = "0.49.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "0.51.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "bitflags 1.3.2", "parity-scale-codec", @@ -7823,8 +7682,8 @@ dependencies = [ [[package]] name = "sc-network-gossip" -version = "0.51.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "0.53.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "ahash", "futures", @@ -7840,31 +7699,10 @@ dependencies = [ "tracing", ] -[[package]] -name = "sc-network-light" -version = "0.50.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" -dependencies = [ - "array-bytes", - "async-channel", - "futures", - "log", - "parity-scale-codec", - "prost", - "prost-build", - "sc-client-api", - "sc-network", - "sc-network-types", - "sp-blockchain", - "sp-core", - "sp-runtime", - "thiserror 2.0.17", -] - [[package]] name = "sc-network-sync" -version = "0.50.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "0.52.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "array-bytes", "async-channel", @@ -7898,8 +7736,8 @@ dependencies = [ [[package]] name = "sc-network-transactions" -version = "0.50.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "0.52.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "array-bytes", "futures", @@ -7917,8 +7755,8 @@ dependencies = [ [[package]] name = "sc-network-types" -version = "0.17.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "0.19.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "bs58", "bytes", @@ -7939,7 +7777,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.20.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -7947,56 +7785,40 @@ dependencies = [ [[package]] name = "sc-rpc" -version = "46.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "48.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "futures", "jsonrpsee", "log", "parity-scale-codec", - "parking_lot", - "sc-block-builder", "sc-chain-spec", - "sc-client-api", "sc-rpc-api", "sc-tracing", - "sc-transaction-pool-api", "sc-utils", "serde_json", - "sp-api", - "sp-blockchain", "sp-core", - "sp-keystore", - "sp-offchain", - "sp-rpc", "sp-runtime", - "sp-session", - "sp-version", "tokio", ] [[package]] name = "sc-rpc-api" -version = "0.50.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "0.52.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "jsonrpsee", "parity-scale-codec", "sc-chain-spec", - "sc-transaction-pool-api", "serde", "serde_json", - "sp-core", - "sp-rpc", - "sp-runtime", - "sp-version", "thiserror 2.0.17", ] [[package]] name = "sc-rpc-server" -version = "23.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "25.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "dyn-clone", "forwarded-header-value", @@ -8017,43 +7839,10 @@ dependencies = [ "tower-http", ] -[[package]] -name = "sc-rpc-spec-v2" -version = "0.51.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" -dependencies = [ - "array-bytes", - "futures", - "futures-util", - "hex", - "itertools 0.14.0", - "jsonrpsee", - "log", - "parity-scale-codec", - "parking_lot", - "rand 0.8.5", - "sc-chain-spec", - "sc-client-api", - "sc-rpc", - "sc-transaction-pool-api", - "schnellru", - "serde", - "sp-api", - "sp-blockchain", - "sp-core", - "sp-rpc", - "sp-runtime", - "sp-version", - "substrate-prometheus-endpoint", - "thiserror 2.0.17", - "tokio", - "tokio-stream", -] - [[package]] name = "sc-service" -version = "0.52.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "0.54.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "async-trait", "directories", @@ -8075,13 +7864,11 @@ dependencies = [ "sc-keystore", "sc-network", "sc-network-common", - "sc-network-light", "sc-network-sync", "sc-network-transactions", "sc-network-types", "sc-rpc", "sc-rpc-server", - "sc-rpc-spec-v2", "sc-sysinfo", "sc-telemetry", "sc-tracing", @@ -8114,8 +7901,8 @@ dependencies = [ [[package]] name = "sc-state-db" -version = "0.39.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "0.40.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "log", "parity-scale-codec", @@ -8125,8 +7912,8 @@ dependencies = [ [[package]] name = "sc-sysinfo" -version = "43.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "45.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "derive_more 1.0.0", "futures", @@ -8145,8 +7932,8 @@ dependencies = [ [[package]] name = "sc-telemetry" -version = "29.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "30.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "chrono", "futures", @@ -8164,8 +7951,8 @@ dependencies = [ [[package]] name = "sc-tracing" -version = "40.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "42.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "chrono", "console", @@ -8186,24 +7973,24 @@ dependencies = [ "thiserror 2.0.17", "tracing", "tracing-log", - "tracing-subscriber 0.3.20", + "tracing-subscriber", ] [[package]] name = "sc-tracing-proc-macro" version = "11.1.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] name = "sc-transaction-pool" -version = "40.1.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "42.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "async-trait", "futures", @@ -8232,8 +8019,8 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" -version = "40.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "42.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "async-trait", "futures", @@ -8249,8 +8036,8 @@ dependencies = [ [[package]] name = "sc-utils" -version = "19.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "20.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "async-channel", "futures", @@ -8283,7 +8070,7 @@ dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -8312,7 +8099,7 @@ version = "0.5.2" dependencies = [ "ciphersuite 0.4.2", "dalek-ff-group", - "digest 0.11.0-rc.3", + "digest 0.11.0-rc.4", "flexible-transcript", "hex", "multiexp", @@ -8374,20 +8161,15 @@ version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9465315bc9d4566e1724f0fffcbcc446268cb522e60f9a27bcded6b19c108113" dependencies = [ - "bitcoin_hashes 0.14.0", + "bitcoin_hashes", "rand 0.8.5", "secp256k1-sys", - "serde", ] [[package]] name = "secp256k1" version = "0.30.99" -[[package]] -name = "secp256k1" -version = "0.31.99" - [[package]] name = "secp256k1-sys" version = "0.10.1" @@ -8409,7 +8191,7 @@ dependencies = [ "k256", "prime-field", "rand_core 0.6.4", - "sha2 0.11.0-rc.2", + "sha2 0.11.0-rc.3", "short-weierstrass", "std-shims 0.1.5", ] @@ -8484,8 +8266,9 @@ dependencies = [ "modular-frost", "rand_core 0.6.4", "secp256k1 0.29.1", - "serai-client", + "serai-client-bitcoin", "serai-db", + "serai-primitives", "serai-processor-bin", "serai-processor-key-gen", "serai-processor-primitives", @@ -8502,34 +8285,61 @@ dependencies = [ name = "serai-client" version = "0.1.0" dependencies = [ - "async-lock", + "serai-client-bitcoin", + "serai-client-ethereum", + "serai-client-monero", + "serai-client-serai", +] + +[[package]] +name = "serai-client-bitcoin" +version = "0.1.0" +dependencies = [ "bitcoin", - "bitvec", - "blake2 0.11.0-rc.2", + "borsh", + "serai-primitives", +] + +[[package]] +name = "serai-client-ethereum" +version = "0.1.0" +dependencies = [ + "borsh", + "hex", + "serai-primitives", + "std-shims 0.1.5", +] + +[[package]] +name = "serai-client-monero" +version = "0.1.0" +dependencies = [ "borsh", "ciphersuite 0.4.2", - "ciphersuite-kp256", "dalek-ff-group", - "dkg-musig", - "dockertest", - "frame-system", - "frost-schnorrkel", - "hex", - "modular-frost", "monero-address", - "multiaddr 0.18.2", - "parity-scale-codec", - "rand_core 0.6.4", + "serai-primitives", +] + +[[package]] +name = "serai-client-serai" +version = "0.1.0" +dependencies = [ + "async-lock", + "bitvec", + "blake2 0.11.0-rc.3", + "borsh", + "core-json-derive", + "core-json-traits", + "dockertest", + "hex", "serai-abi", "serai-docker-tests", - "serde", - "serde_json", + "serai-substrate-tests", "simple-request 0.3.0", "sp-core", - "sp-runtime", "thiserror 2.0.17", "tokio", - "zeroize", ] [[package]] @@ -8539,6 +8349,7 @@ dependencies = [ "borsh", "frame-support", "frame-system", + "pallet-timestamp", "parity-scale-codec", "serai-abi", "serai-core-pallet", @@ -8551,7 +8362,7 @@ name = "serai-coordinator" version = "0.1.0" dependencies = [ "bitvec", - "blake2 0.11.0-rc.2", + "blake2 0.11.0-rc.3", "borsh", "ciphersuite 0.4.2", "dalek-ff-group", @@ -8563,7 +8374,7 @@ dependencies = [ "modular-frost", "rand_core 0.6.4", "schnorrkel", - "serai-client", + "serai-client-serai", "serai-coordinator-libp2p-p2p", "serai-coordinator-p2p", "serai-coordinator-substrate", @@ -8585,7 +8396,7 @@ name = "serai-coordinator-libp2p-p2p" version = "0.1.0" dependencies = [ "async-trait", - "blake2 0.11.0-rc.2", + "blake2 0.11.0-rc.3", "borsh", "futures-util", "hex", @@ -8593,7 +8404,7 @@ dependencies = [ "log", "rand_core 0.6.4", "schnorrkel", - "serai-client", + "serai-client-serai", "serai-coordinator-p2p", "serai-cosign", "serai-task", @@ -8626,7 +8437,7 @@ dependencies = [ "dkg", "futures", "log", - "serai-client", + "serai-client-serai", "serai-cosign", "serai-db", "serai-processor-messages", @@ -8638,7 +8449,7 @@ dependencies = [ name = "serai-coordinator-tributary" version = "0.1.0" dependencies = [ - "blake2 0.11.0-rc.2", + "blake2 0.11.0-rc.3", "borsh", "ciphersuite 0.4.2", "dalek-ff-group", @@ -8647,7 +8458,7 @@ dependencies = [ "rand_core 0.6.4", "schnorr-signatures", "serai-coordinator-substrate", - "serai-cosign", + "serai-cosign-types", "serai-db", "serai-primitives", "serai-processor-messages", @@ -8663,6 +8474,7 @@ dependencies = [ "borsh", "frame-support", "frame-system", + "pallet-timestamp", "parity-scale-codec", "serai-abi", "sp-core", @@ -8672,10 +8484,10 @@ dependencies = [ name = "serai-cosign" version = "0.1.0" dependencies = [ - "blake2 0.11.0-rc.2", + "blake2 0.11.0-rc.3", "borsh", "log", - "serai-client", + "serai-client-serai", "serai-cosign-types", "serai-db", "serai-task", @@ -8722,6 +8534,7 @@ name = "serai-docker-tests" version = "0.1.0" dependencies = [ "chrono", + "dockertest", ] [[package]] @@ -8787,9 +8600,10 @@ dependencies = [ "log", "modular-frost", "rand_core 0.6.4", - "serai-client", + "serai-client-ethereum", "serai-db", "serai-env", + "serai-primitives", "serai-processor-bin", "serai-processor-ethereum-erc20", "serai-processor-ethereum-primitives", @@ -8922,7 +8736,8 @@ dependencies = [ "monero-wallet", "rand_chacha 0.3.1", "rand_core 0.6.4", - "serai-client", + "serai-client-monero", + "serai-primitives", "serai-processor-bin", "serai-processor-key-gen", "serai-processor-primitives", @@ -8950,6 +8765,7 @@ dependencies = [ "dkg-musig", "dkg-recovery", "embedwards25519", + "ethereum-schnorr-contract", "flexible-transcript", "frost-schnorrkel", "minimal-ed448", @@ -8958,6 +8774,8 @@ dependencies = [ "prime-field", "schnorr-signatures", "secq256k1", + "serai-client-bitcoin", + "serai-client-ethereum", "short-weierstrass", "std-shims 0.1.5", ] @@ -8967,6 +8785,7 @@ name = "serai-node" version = "0.1.0" dependencies = [ "bitcoin-serai", + "borsh", "ciphersuite 0.4.2", "ciphersuite-kp256", "clap", @@ -8974,7 +8793,6 @@ dependencies = [ "dalek-ff-group", "embedwards25519", "frame-benchmarking", - "frame-system-rpc-runtime-api", "futures-util", "hex", "jsonrpsee", @@ -8987,9 +8805,11 @@ dependencies = [ "sc-chain-spec", "sc-cli", "sc-client-api", + "sc-client-db", "sc-consensus", "sc-consensus-babe", "sc-consensus-grandpa", + "sc-consensus-slots", "sc-executor", "sc-network", "sc-service", @@ -8998,13 +8818,16 @@ dependencies = [ "sc-transaction-pool-api", "schnorrkel", "secq256k1", + "serai-abi", "serai-env", "serai-runtime", "sp-api", "sp-block-builder", "sp-blockchain", + "sp-consensus", "sp-consensus-babe", "sp-core", + "sp-inherents", "sp-io", "sp-keystore", "sp-runtime", @@ -9145,12 +8968,13 @@ dependencies = [ "k256", "rand_core 0.6.4", "revm", - "serai-client", + "serai-client-ethereum", "serai-ethereum-test-primitives", + "serai-primitives", "serai-processor-ethereum-deployer", "serai-processor-ethereum-erc20", "serai-processor-ethereum-primitives", - "syn 2.0.108", + "syn 2.0.110", "syn-solidity", "tokio", ] @@ -9172,7 +8996,7 @@ dependencies = [ name = "serai-processor-key-gen" version = "0.1.0" dependencies = [ - "blake2 0.11.0-rc.2", + "blake2 0.11.0-rc.3", "borsh", "ciphersuite 0.4.2", "dkg-evrf", @@ -9215,7 +9039,7 @@ dependencies = [ name = "serai-processor-scanner" version = "0.1.0" dependencies = [ - "blake2 0.11.0-rc.2", + "blake2 0.11.0-rc.3", "borsh", "group", "hex", @@ -9242,7 +9066,7 @@ dependencies = [ name = "serai-processor-signers" version = "0.1.0" dependencies = [ - "blake2 0.11.0-rc.2", + "blake2 0.11.0-rc.3", "borsh", "ciphersuite 0.4.2", "frost-schnorrkel", @@ -9334,6 +9158,7 @@ dependencies = [ name = "serai-runtime" version = "0.1.0" dependencies = [ + "borsh", "frame-executive", "frame-support", "frame-system", @@ -9348,9 +9173,16 @@ dependencies = [ "serai-signals-pallet", "serai-validator-sets-pallet", "sp-api", + "sp-authority-discovery", + "sp-block-builder", + "sp-consensus-babe", + "sp-consensus-grandpa", "sp-core", + "sp-inherents", "sp-runtime", "sp-session", + "sp-timestamp", + "sp-transaction-pool", "sp-version", "substrate-wasm-builder", ] @@ -9368,6 +9200,16 @@ dependencies = [ "sp-core", ] +[[package]] +name = "serai-substrate-tests" +version = "0.1.0" +dependencies = [ + "dockertest", + "serai-client-serai", + "serai-docker-tests", + "tokio", +] + [[package]] name = "serai-task" version = "0.1.0" @@ -9436,7 +9278,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -9445,7 +9287,6 @@ version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ - "indexmap 2.12.0", "itoa", "memchr", "ryu", @@ -9461,7 +9302,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -9512,7 +9353,7 @@ dependencies = [ "darling 0.20.99", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -9549,13 +9390,13 @@ dependencies = [ [[package]] name = "sha2" -version = "0.11.0-rc.2" +version = "0.11.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1e3878ab0f98e35b2df35fe53201d088299b41a6bb63e3e34dada2ac4abd924" +checksum = "19d43dc0354d88b791216bb5c1bfbb60c0814460cc653ae0ebd71f286d0bd927" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.11.0-rc.3", + "digest 0.11.0-rc.4", ] [[package]] @@ -9574,7 +9415,7 @@ version = "0.11.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2103ca0e6f4e9505eae906de5e5883e06fc3b2232fb5d6914890c7bbcb62f478" dependencies = [ - "digest 0.11.0-rc.3", + "digest 0.11.0-rc.4", "keccak 0.2.0-rc.0", ] @@ -9752,8 +9593,8 @@ dependencies = [ [[package]] name = "sp-api" -version = "37.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "39.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "hash-db", "log", @@ -9771,8 +9612,8 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" -version = "23.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "25.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "Inflector", "blake2 0.10.6", @@ -9780,13 +9621,13 @@ dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] name = "sp-application-crypto" -version = "41.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "43.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "parity-scale-codec", "serde", @@ -9796,8 +9637,8 @@ dependencies = [ [[package]] name = "sp-arithmetic" -version = "27.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "28.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "integer-sqrt", "num-traits", @@ -9808,8 +9649,8 @@ dependencies = [ [[package]] name = "sp-authority-discovery" -version = "37.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "39.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "parity-scale-codec", "sp-api", @@ -9818,8 +9659,8 @@ dependencies = [ [[package]] name = "sp-block-builder" -version = "37.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "39.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "sp-api", "sp-inherents", @@ -9828,8 +9669,8 @@ dependencies = [ [[package]] name = "sp-blockchain" -version = "40.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "42.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "futures", "parity-scale-codec", @@ -9847,8 +9688,8 @@ dependencies = [ [[package]] name = "sp-consensus" -version = "0.43.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "0.45.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "async-trait", "futures", @@ -9861,8 +9702,8 @@ dependencies = [ [[package]] name = "sp-consensus-babe" -version = "0.43.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "0.45.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "async-trait", "parity-scale-codec", @@ -9878,8 +9719,8 @@ dependencies = [ [[package]] name = "sp-consensus-grandpa" -version = "24.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "26.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "finality-grandpa", "log", @@ -9894,8 +9735,8 @@ dependencies = [ [[package]] name = "sp-consensus-slots" -version = "0.43.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "0.45.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "parity-scale-codec", "serde", @@ -9904,8 +9745,8 @@ dependencies = [ [[package]] name = "sp-core" -version = "37.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "38.1.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "array-bytes", "bitflags 1.3.2", @@ -9924,7 +9765,7 @@ dependencies = [ "parity-scale-codec", "parking_lot", "paste", - "primitive-types 0.13.1", + "primitive-types 0.14.0", "rand 0.8.5", "schnorrkel", "secrecy", @@ -9943,7 +9784,7 @@ dependencies = [ [[package]] name = "sp-crypto-hashing" version = "0.1.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "blake2b_simd", "byteorder", @@ -9956,17 +9797,17 @@ dependencies = [ [[package]] name = "sp-crypto-hashing-proc-macro" version = "0.1.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "quote", "sp-crypto-hashing", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] name = "sp-database" version = "10.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "kvdb", "parking_lot", @@ -9975,17 +9816,17 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "14.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] name = "sp-externalities" version = "0.30.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "environmental", "parity-scale-codec", @@ -9994,8 +9835,8 @@ dependencies = [ [[package]] name = "sp-genesis-builder" -version = "0.18.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "0.20.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "parity-scale-codec", "sp-api", @@ -10003,8 +9844,8 @@ dependencies = [ [[package]] name = "sp-inherents" -version = "37.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "39.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -10015,8 +9856,8 @@ dependencies = [ [[package]] name = "sp-io" -version = "41.0.1" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "43.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "bytes", "log", @@ -10036,8 +9877,8 @@ dependencies = [ [[package]] name = "sp-keyring" -version = "42.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "44.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "sp-core", "sp-runtime", @@ -10046,8 +9887,8 @@ dependencies = [ [[package]] name = "sp-keystore" -version = "0.43.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "0.44.1" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "parity-scale-codec", "parking_lot", @@ -10055,20 +9896,10 @@ dependencies = [ "sp-externalities", ] -[[package]] -name = "sp-offchain" -version = "37.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" -dependencies = [ - "sp-api", - "sp-core", - "sp-runtime", -] - [[package]] name = "sp-panic-handler" version = "13.0.2" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "backtrace", "regex", @@ -10076,8 +9907,8 @@ dependencies = [ [[package]] name = "sp-rpc" -version = "35.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "36.0.1" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "rustc-hash", "serde", @@ -10086,8 +9917,8 @@ dependencies = [ [[package]] name = "sp-runtime" -version = "42.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "44.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "either", "hash256-std-hasher", @@ -10110,8 +9941,8 @@ dependencies = [ [[package]] name = "sp-runtime-interface" -version = "30.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "32.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "bytes", "parity-scale-codec", @@ -10124,21 +9955,21 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" -version = "19.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "20.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "Inflector", "expander", "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] name = "sp-session" -version = "39.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "41.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "parity-scale-codec", "sp-api", @@ -10150,8 +9981,8 @@ dependencies = [ [[package]] name = "sp-staking" -version = "39.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "41.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10162,8 +9993,8 @@ dependencies = [ [[package]] name = "sp-state-machine" -version = "0.46.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "0.48.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "hash-db", "log", @@ -10183,12 +10014,12 @@ dependencies = [ [[package]] name = "sp-std" version = "14.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" [[package]] name = "sp-storage" version = "22.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "impl-serde", "parity-scale-codec", @@ -10199,8 +10030,8 @@ dependencies = [ [[package]] name = "sp-timestamp" -version = "37.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "39.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "async-trait", "parity-scale-codec", @@ -10211,19 +10042,20 @@ dependencies = [ [[package]] name = "sp-tracing" -version = "17.1.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "19.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "parity-scale-codec", + "regex", "tracing", "tracing-core", - "tracing-subscriber 0.3.20", + "tracing-subscriber", ] [[package]] name = "sp-transaction-pool" -version = "37.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "39.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "sp-api", "sp-runtime", @@ -10231,8 +10063,8 @@ dependencies = [ [[package]] name = "sp-trie" -version = "40.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "41.1.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "ahash", "foldhash 0.1.5", @@ -10255,8 +10087,8 @@ dependencies = [ [[package]] name = "sp-version" -version = "40.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "42.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "impl-serde", "parity-scale-codec", @@ -10272,19 +10104,19 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "15.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "parity-scale-codec", "proc-macro-warning", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] name = "sp-wasm-interface" -version = "22.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "24.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "anyhow", "impl-trait-for-tuples", @@ -10295,8 +10127,8 @@ dependencies = [ [[package]] name = "sp-weights" -version = "32.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "33.1.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "bounded-collections", "parity-scale-codec", @@ -10408,7 +10240,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -10420,27 +10252,24 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] name = "substrate-prometheus-endpoint" -version = "0.17.6" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "0.17.7" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ - "http-body-util", "hyper", - "hyper-util", "log", "prometheus", "thiserror 2.0.17", - "tokio", ] [[package]] name = "substrate-wasm-builder" -version = "27.0.0" -source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4#5dfddc95c32994c1c09bd0c7a9e3633f1e5c7cc4" +version = "29.0.0" +source = "git+https://github.com/serai-dex/patch-polkadot-sdk?rev=e01101b68c5b0f588dd4cdee48f801a2c1f75b84#e01101b68c5b0f588dd4cdee48f801a2c1f75b84" dependencies = [ "cargo_metadata", "console", @@ -10472,9 +10301,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.108" +version = "2.0.110" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da58917d35242480a05c2897064da0a80589a2a0476c9a3f2fdc83b53502e917" +checksum = "a99801b5bd34ede4cf3fc688c5919368fea4e4814a4664359503e6015b280aea" dependencies = [ "proc-macro2", "quote", @@ -10490,7 +10319,7 @@ dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -10519,7 +10348,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -10638,7 +10467,7 @@ checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -10650,16 +10479,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "tikv-jemalloc-sys" -version = "0.6.1+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd8aa5b2ab86a2cefa406d889139c162cbb230092f7d1d7cbc1716405d852a3b" -dependencies = [ - "cc", - "libc", -] - [[package]] name = "time" version = "0.3.44" @@ -10740,7 +10559,7 @@ checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -10906,7 +10725,7 @@ checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -10940,15 +10759,6 @@ dependencies = [ "tracing-core", ] -[[package]] -name = "tracing-subscriber" -version = "0.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71" -dependencies = [ - "tracing-core", -] - [[package]] name = "tracing-subscriber" version = "0.3.20" @@ -10973,7 +10783,7 @@ dependencies = [ name = "tributary-sdk" version = "0.1.0" dependencies = [ - "blake2 0.11.0-rc.2", + "blake2 0.11.0-rc.3", "borsh", "ciphersuite 0.4.2", "dalek-ff-group", @@ -11094,9 +10904,9 @@ checksum = "d8d00a78170970967fdb83f9d49b92f959ab2bb829186b113e4f4604ad98e180" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" dependencies = [ "tinyvec", ] @@ -11119,7 +10929,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" dependencies = [ - "crypto-common 0.1.6", + "crypto-common 0.1.7", "subtle", ] @@ -11275,7 +11085,7 @@ dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", "wasm-bindgen-shared", ] @@ -11333,9 +11143,9 @@ dependencies = [ [[package]] name = "wasmtime" -version = "37.0.2" +version = "38.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1092d79769b1f888940a572ed881eec18f837cb96201985eb5928226759ebc3e" +checksum = "f81eafc07c867be94c47e0dc66355d9785e09107a18901f76a20701ba0663ad7" dependencies = [ "addr2line", "anyhow", @@ -11344,10 +11154,9 @@ dependencies = [ "bumpalo", "cc", "cfg-if", - "fxprof-processed-profile", + "gimli", "hashbrown 0.15.5", "indexmap 2.12.0", - "ittapi", "libc", "log", "mach2", @@ -11360,12 +11169,10 @@ dependencies = [ "rustix", "serde", "serde_derive", - "serde_json", "smallvec", "target-lexicon", "wasmparser", "wasmtime-environ", - "wasmtime-internal-asm-macros", "wasmtime-internal-cache", "wasmtime-internal-cranelift", "wasmtime-internal-fiber", @@ -11380,9 +11187,9 @@ dependencies = [ [[package]] name = "wasmtime-environ" -version = "37.0.2" +version = "38.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "484db5c4dd06e96559217b60893b5dbb9fe3cd28489c83a4257b277c9ead959c" +checksum = "78587abe085a44a13c90fa16fea6db014e9883e627a7044d7f0cb397ad08d1da" dependencies = [ "anyhow", "cranelift-bitset", @@ -11401,20 +11208,11 @@ dependencies = [ "wasmprinter", ] -[[package]] -name = "wasmtime-internal-asm-macros" -version = "37.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60d3903b8db592bb4f5e847bd6dc38f485791d4d9ebc9e2df167d3c7f072115c" -dependencies = [ - "cfg-if", -] - [[package]] name = "wasmtime-internal-cache" -version = "37.0.2" +version = "38.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ab11f58f3b24a4a47d7d99b45ca22635c33cf26acdda1fe77612180e7285e2f" +checksum = "78fb9299e318b0af3efb75d88321515a20a5ccb040bcde1f0f7d46d656fa8fef" dependencies = [ "anyhow", "base64", @@ -11432,9 +11230,9 @@ dependencies = [ [[package]] name = "wasmtime-internal-cranelift" -version = "37.0.2" +version = "38.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d802c0a214c82fbf3e60ead87bf4d5dff7fc957c9a4449ceeae74bd89283ee57" +checksum = "deb50f1c50365c32e557266ca85acdf77696c44a3f98797ba6af58cebc6d6d1e" dependencies = [ "anyhow", "cfg-if", @@ -11460,37 +11258,34 @@ dependencies = [ [[package]] name = "wasmtime-internal-fiber" -version = "37.0.2" +version = "38.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43fdeb4c50dbbb3ebf01f7e6d270ba4239c8db5ff1e68725386abad2e5250be4" +checksum = "9308cdb17f8d51e3164185616d809e28c29a6515c03b9dd95c89436b71f6d154" dependencies = [ "anyhow", "cc", "cfg-if", "libc", "rustix", - "wasmtime-internal-asm-macros", "wasmtime-internal-versioned-export-macros", "windows-sys 0.60.2", ] [[package]] name = "wasmtime-internal-jit-debug" -version = "37.0.2" +version = "38.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fe059ecd3f572ec2f616f036e5f31a88649a5f16e4838147cb3af6c3b5cedd5" +checksum = "5c9b63a22bf2a8b6a149a41c6768bc17a8b2e3288a249cb8216987fbd7128e81" dependencies = [ "cc", - "object", - "rustix", "wasmtime-internal-versioned-export-macros", ] [[package]] name = "wasmtime-internal-jit-icache-coherence" -version = "37.0.2" +version = "38.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a03f55a9dbfa30f2ed269fa9735c2994b8423461d45c3ca08aa7a103daeff20" +checksum = "eb8e042b6e3de2f3d708279f89f50b4b9aa1b9bab177300cdffb0ffcd2816df5" dependencies = [ "anyhow", "cfg-if", @@ -11500,24 +11295,24 @@ dependencies = [ [[package]] name = "wasmtime-internal-math" -version = "37.0.2" +version = "38.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed7f491d2c7f1be3f6e5485ab5a26f26f177860c8b5c16d3ab87df4b24f28e40" +checksum = "3c1f0674f38cd7d014eb1a49ea1d1766cca1a64459e8856ee118a10005302e16" dependencies = [ "libm", ] [[package]] name = "wasmtime-internal-slab" -version = "37.0.2" +version = "38.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce79a933dd9c5fdcc1ce1f6b46e89e72ccb6767619557f0468d97fbfb0475db6" +checksum = "fb24b7535306713e7a250f8b71e35f05b6a5031bf9c3ed7330c308e899cbe7d3" [[package]] name = "wasmtime-internal-unwinder" -version = "37.0.2" +version = "38.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0e12be7ff91e956c6e7cee17654982669493c4aaa861e3536f7b1c22999519d" +checksum = "21d5a80e2623a49cb8e8c419542337b8fe0260b162c40dcc201080a84cbe9b7c" dependencies = [ "anyhow", "cfg-if", @@ -11528,13 +11323,13 @@ dependencies = [ [[package]] name = "wasmtime-internal-versioned-export-macros" -version = "37.0.2" +version = "38.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67d114c747409b6f76ddf86deb2c5976f809baed3eea8fdca493063ea182246b" +checksum = "23e277f734b9256359b21517c3b0c26a2a9de6c53a51b670ae55cdcde548bf4e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -11686,7 +11481,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -11697,7 +11492,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -12099,7 +11894,7 @@ checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -12119,7 +11914,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 3b978a3f..d4c69f40 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -93,10 +93,10 @@ members = [ "substrate/runtime", "substrate/node", + "substrate/client/serai", "substrate/client/bitcoin", "substrate/client/ethereum", "substrate/client/monero", - "substrate/client/serai", "substrate/client", "orchestration", diff --git a/coordinator/Cargo.toml b/coordinator/Cargo.toml index 80b7ae90..a346c426 100644 --- a/coordinator/Cargo.toml +++ b/coordinator/Cargo.toml @@ -42,7 +42,7 @@ messages = { package = "serai-processor-messages", path = "../processor/messages message-queue = { package = "serai-message-queue", path = "../message-queue" } tributary-sdk = { path = "./tributary-sdk" } -serai-client = { path = "../substrate/client", default-features = false, features = ["serai"] } +serai-client-serai = { path = "../substrate/client/serai", default-features = false } log = { version = "0.4", default-features = false, features = ["std"] } env_logger = { version = "0.10", default-features = false, features = ["humantime"] } diff --git a/coordinator/cosign/Cargo.toml b/coordinator/cosign/Cargo.toml index 03cf337c..63c50ebc 100644 --- a/coordinator/cosign/Cargo.toml +++ b/coordinator/cosign/Cargo.toml @@ -21,7 +21,6 @@ workspace = true blake2 = { version = "0.11.0-rc.0", default-features = false, features = ["alloc"] } borsh = { version = "1", default-features = false, features = ["std", "derive", "de_strict_order"] } -serai-abi = { path = "../../substrate/abi", default-features = false, features = ["std"] } serai-client-serai = { path = "../../substrate/client/serai", default-features = false } log = { version = "0.4", default-features = false, features = ["std"] } diff --git a/coordinator/cosign/src/intend.rs b/coordinator/cosign/src/intend.rs index 644ff0c7..90935b1d 100644 --- a/coordinator/cosign/src/intend.rs +++ b/coordinator/cosign/src/intend.rs @@ -3,11 +3,13 @@ use std::{sync::Arc, collections::HashMap}; use blake2::{Digest, Blake2b256}; -use serai_abi::primitives::{ - balance::Amount, validator_sets::ExternalValidatorSet, address::SeraiAddress, - merkle::IncrementalUnbalancedMerkleTree, +use serai_client_serai::{ + abi::primitives::{ + balance::Amount, validator_sets::ExternalValidatorSet, address::SeraiAddress, + merkle::IncrementalUnbalancedMerkleTree, + }, + Serai, }; -use serai_client_serai::Serai; use serai_db::*; use serai_task::ContinuallyRan; @@ -85,7 +87,7 @@ impl ContinuallyRan for CosignIntendTask { // Check we are indexing a linear chain if block.header.builds_upon() != - builds_upon.clone().calculate(serai_abi::BLOCK_HEADER_BRANCH_TAG) + builds_upon.clone().calculate(serai_client_serai::abi::BLOCK_HEADER_BRANCH_TAG) { Err(format!( "node's block #{block_number} doesn't build upon the block #{} prior indexed", @@ -95,8 +97,8 @@ impl ContinuallyRan for CosignIntendTask { let block_hash = block.header.hash(); SubstrateBlockHash::set(&mut txn, block_number, &block_hash); builds_upon.append( - serai_abi::BLOCK_HEADER_BRANCH_TAG, - Blake2b256::new_with_prefix([serai_abi::BLOCK_HEADER_LEAF_TAG]) + serai_client_serai::abi::BLOCK_HEADER_BRANCH_TAG, + Blake2b256::new_with_prefix([serai_client_serai::abi::BLOCK_HEADER_LEAF_TAG]) .chain_update(block_hash.0) .finalize() .into(), diff --git a/coordinator/cosign/src/lib.rs b/coordinator/cosign/src/lib.rs index c9d95f36..b89f6b3f 100644 --- a/coordinator/cosign/src/lib.rs +++ b/coordinator/cosign/src/lib.rs @@ -9,22 +9,24 @@ use blake2::{Digest, Blake2s256}; use borsh::{BorshSerialize, BorshDeserialize}; -use serai_abi::{ - primitives::{ - BlockHash, - crypto::{Public, KeyPair}, - network_id::ExternalNetworkId, - validator_sets::{Session, ExternalValidatorSet}, - address::SeraiAddress, +use serai_client_serai::{ + abi::{ + primitives::{ + BlockHash, + crypto::{Public, KeyPair}, + network_id::ExternalNetworkId, + validator_sets::{Session, ExternalValidatorSet}, + address::SeraiAddress, + }, + Block, }, - Block, + Serai, TemporalSerai, }; -use serai_client_serai::{Serai, TemporalSerai}; use serai_db::*; use serai_task::*; -use serai_cosign_types::*; +pub use serai_cosign_types::*; /// The cosigns which are intended to be performed. mod intend; diff --git a/coordinator/p2p/libp2p/Cargo.toml b/coordinator/p2p/libp2p/Cargo.toml index 124a5005..168d7567 100644 --- a/coordinator/p2p/libp2p/Cargo.toml +++ b/coordinator/p2p/libp2p/Cargo.toml @@ -29,7 +29,7 @@ schnorrkel = { version = "0.11", default-features = false, features = ["std"] } hex = { version = "0.4", default-features = false, features = ["std"] } borsh = { version = "1", default-features = false, features = ["std", "derive", "de_strict_order"] } -serai-client = { path = "../../../substrate/client", default-features = false, features = ["serai"] } +serai-client-serai = { path = "../../../substrate/client/serai", default-features = false } serai-cosign = { path = "../../cosign" } tributary-sdk = { path = "../../tributary-sdk" } diff --git a/coordinator/p2p/libp2p/src/authenticate.rs b/coordinator/p2p/libp2p/src/authenticate.rs index 641d4481..ae2d1f8b 100644 --- a/coordinator/p2p/libp2p/src/authenticate.rs +++ b/coordinator/p2p/libp2p/src/authenticate.rs @@ -7,7 +7,7 @@ use rand_core::{RngCore, OsRng}; use blake2::{Digest, Blake2s256}; use schnorrkel::{Keypair, PublicKey, Signature}; -use serai_client::primitives::PublicKey as Public; +use serai_client_serai::abi::primitives::crypto::Public; use futures_util::{AsyncRead, AsyncReadExt, AsyncWrite, AsyncWriteExt}; use libp2p::{ @@ -104,7 +104,7 @@ impl OnlyValidators { .verify_simple(PROTOCOL.as_bytes(), &msg, &sig) .map_err(|_| io::Error::other("invalid signature"))?; - Ok(peer_id_from_public(Public::from_raw(public_key.to_bytes()))) + Ok(peer_id_from_public(Public(public_key.to_bytes()))) } } diff --git a/coordinator/p2p/libp2p/src/dial.rs b/coordinator/p2p/libp2p/src/dial.rs index b001446b..6ef7cd36 100644 --- a/coordinator/p2p/libp2p/src/dial.rs +++ b/coordinator/p2p/libp2p/src/dial.rs @@ -1,11 +1,11 @@ -use core::future::Future; +use core::{future::Future, str::FromStr}; use std::{sync::Arc, collections::HashSet}; use rand_core::{RngCore, OsRng}; use tokio::sync::mpsc; -use serai_client::{SeraiError, Serai}; +use serai_client_serai::{RpcError, Serai}; use libp2p::{ core::multiaddr::{Protocol, Multiaddr}, @@ -50,7 +50,7 @@ impl ContinuallyRan for DialTask { const DELAY_BETWEEN_ITERATIONS: u64 = 5 * 60; const MAX_DELAY_BETWEEN_ITERATIONS: u64 = 10 * 60; - type Error = SeraiError; + type Error = RpcError; fn run_iteration(&mut self) -> impl Send + Future> { async move { @@ -94,6 +94,13 @@ impl ContinuallyRan for DialTask { usize::try_from(OsRng.next_u64() % u64::try_from(potential_peers.len()).unwrap()) .unwrap(); let randomly_selected_peer = potential_peers.swap_remove(index_to_dial); + let Ok(randomly_selected_peer) = libp2p::Multiaddr::from_str(&randomly_selected_peer) + else { + log::error!( + "peer from substrate wasn't a valid `Multiaddr`: {randomly_selected_peer}" + ); + continue; + }; log::info!("found peer from substrate: {randomly_selected_peer}"); diff --git a/coordinator/p2p/libp2p/src/lib.rs b/coordinator/p2p/libp2p/src/lib.rs index fd132af5..43cbbe4e 100644 --- a/coordinator/p2p/libp2p/src/lib.rs +++ b/coordinator/p2p/libp2p/src/lib.rs @@ -13,9 +13,10 @@ use rand_core::{RngCore, OsRng}; use zeroize::Zeroizing; use schnorrkel::Keypair; -use serai_client::{ - primitives::{ExternalNetworkId, PublicKey}, - validator_sets::primitives::ExternalValidatorSet, +use serai_client_serai::{ + abi::primitives::{ + crypto::Public, network_id::ExternalNetworkId, validator_sets::ExternalValidatorSet, + }, Serai, }; @@ -66,7 +67,7 @@ use dial::DialTask; const PORT: u16 = 30563; // 5132 ^ (('c' << 8) | 'o') -fn peer_id_from_public(public: PublicKey) -> PeerId { +fn peer_id_from_public(public: Public) -> PeerId { // 0 represents the identity Multihash, that no hash was performed // It's an internal constant so we can't refer to the constant inside libp2p PeerId::from_multihash(Multihash::wrap(0, &public.0).unwrap()).unwrap() diff --git a/coordinator/p2p/libp2p/src/swarm.rs b/coordinator/p2p/libp2p/src/swarm.rs index c9fecd2c..bee1e640 100644 --- a/coordinator/p2p/libp2p/src/swarm.rs +++ b/coordinator/p2p/libp2p/src/swarm.rs @@ -6,7 +6,7 @@ use std::{ use borsh::BorshDeserialize; -use serai_client::validator_sets::primitives::ExternalValidatorSet; +use serai_client_serai::abi::primitives::validator_sets::ExternalValidatorSet; use tokio::sync::{mpsc, oneshot, RwLock}; diff --git a/coordinator/p2p/libp2p/src/validators.rs b/coordinator/p2p/libp2p/src/validators.rs index 25fabacd..eafd259c 100644 --- a/coordinator/p2p/libp2p/src/validators.rs +++ b/coordinator/p2p/libp2p/src/validators.rs @@ -4,9 +4,8 @@ use std::{ collections::{HashSet, HashMap}, }; -use serai_client::{ - primitives::ExternalNetworkId, validator_sets::primitives::Session, SeraiError, Serai, -}; +use serai_client_serai::abi::primitives::{network_id::ExternalNetworkId, validator_sets::Session}; +use serai_client_serai::{RpcError, Serai}; use serai_task::{Task, ContinuallyRan}; @@ -52,7 +51,7 @@ impl Validators { async fn session_changes( serai: impl Borrow, sessions: impl Borrow>, - ) -> Result)>, SeraiError> { + ) -> Result)>, RpcError> { /* This uses the latest finalized block, not the latest cosigned block, which should be fine as in the worst case, we'd connect to unexpected validators. They still shouldn't be able to @@ -69,10 +68,11 @@ impl Validators { // FuturesUnordered can be bad practice as it'll cause timeouts if infrequently polled, but // we poll it till it yields all futures with the most minimal processing possible let mut futures = FuturesUnordered::new(); - for network in serai_client::primitives::EXTERNAL_NETWORKS { + for network in ExternalNetworkId::all() { let sessions = sessions.borrow(); + let temporal_serai = temporal_serai.borrow(); futures.push(async move { - let session = match temporal_serai.session(network.into()).await { + let session = match temporal_serai.current_session(network.into()).await { Ok(Some(session)) => session, Ok(None) => return Ok(None), Err(e) => return Err(e), @@ -81,12 +81,16 @@ impl Validators { if sessions.get(&network) == Some(&session) { Ok(None) } else { - match temporal_serai.active_network_validators(network.into()).await { - Ok(validators) => Ok(Some(( + match temporal_serai.current_validators(network.into()).await { + Ok(Some(validators)) => Ok(Some(( network, session, - validators.into_iter().map(peer_id_from_public).collect(), + validators + .into_iter() + .map(|validator| peer_id_from_public(validator.into())) + .collect(), ))), + Ok(None) => panic!("network has session yet no validators"), Err(e) => Err(e), } } @@ -153,7 +157,7 @@ impl Validators { } /// Update the view of the validators. - pub(crate) async fn update(&mut self) -> Result<(), SeraiError> { + pub(crate) async fn update(&mut self) -> Result<(), RpcError> { let session_changes = Self::session_changes(&*self.serai, &self.sessions).await?; self.incorporate_session_changes(session_changes); Ok(()) @@ -206,7 +210,7 @@ impl ContinuallyRan for UpdateValidatorsTask { const DELAY_BETWEEN_ITERATIONS: u64 = 60; const MAX_DELAY_BETWEEN_ITERATIONS: u64 = 5 * 60; - type Error = SeraiError; + type Error = RpcError; fn run_iteration(&mut self) -> impl Send + Future> { async move { diff --git a/coordinator/p2p/src/heartbeat.rs b/coordinator/p2p/src/heartbeat.rs index 81385e1b..a78db42c 100644 --- a/coordinator/p2p/src/heartbeat.rs +++ b/coordinator/p2p/src/heartbeat.rs @@ -1,7 +1,7 @@ use core::future::Future; use std::time::{Duration, SystemTime}; -use serai_primitives::{MAX_KEY_SHARES_PER_SET, ExternalValidatorSet}; +use serai_primitives::validator_sets::{ExternalValidatorSet, KeyShares}; use futures_lite::FutureExt; @@ -30,7 +30,7 @@ pub const MIN_BLOCKS_PER_BATCH: usize = BLOCKS_PER_MINUTE + 1; /// commit is `8 + (validators * 32) + (32 + (validators * 32))` (for the time, list of validators, /// and aggregate signature). Accordingly, this should be a safe over-estimate. pub const BATCH_SIZE_LIMIT: usize = MIN_BLOCKS_PER_BATCH * - (tributary_sdk::BLOCK_SIZE_LIMIT + 32 + ((MAX_KEY_SHARES_PER_SET as usize) * 128)); + (tributary_sdk::BLOCK_SIZE_LIMIT + 32 + ((KeyShares::MAX_PER_SET as usize) * 128)); /// Sends a heartbeat to other validators on regular intervals informing them of our Tributary's /// tip. diff --git a/coordinator/src/db.rs b/coordinator/src/db.rs index 108e0f32..6f53cf52 100644 --- a/coordinator/src/db.rs +++ b/coordinator/src/db.rs @@ -5,9 +5,10 @@ use serai_db::{create_db, db_channel}; use dkg::Participant; -use serai_client::{ - primitives::ExternalNetworkId, - validator_sets::primitives::{Session, ExternalValidatorSet, KeyPair}, +use serai_client_serai::abi::primitives::{ + crypto::KeyPair, + network_id::ExternalNetworkId, + validator_sets::{Session, ExternalValidatorSet}, }; use serai_cosign::SignedCosign; @@ -49,6 +50,7 @@ fn tributary_db_folder(set: ExternalValidatorSet) -> String { ExternalNetworkId::Bitcoin => "Bitcoin", ExternalNetworkId::Ethereum => "Ethereum", ExternalNetworkId::Monero => "Monero", + _ => panic!("unrecognized `ExternalNetworkId`"), }; format!("{root_path}/tributary-{network}-{}", set.session.0) } @@ -103,7 +105,7 @@ mod _internal_db { // Tributary transactions to publish from the DKG confirmation task TributaryTransactionsFromDkgConfirmation: (set: ExternalValidatorSet) -> Transaction, // Participants to remove - RemoveParticipant: (set: ExternalValidatorSet) -> Participant, + RemoveParticipant: (set: ExternalValidatorSet) -> u16, } } } @@ -139,10 +141,11 @@ impl RemoveParticipant { pub(crate) fn send(txn: &mut impl DbTxn, set: ExternalValidatorSet, participant: Participant) { // If this set has yet to be retired, send this transaction if RetiredTributary::get(txn, set.network).map(|session| session.0) < Some(set.session.0) { - _internal_db::RemoveParticipant::send(txn, set, &participant); + _internal_db::RemoveParticipant::send(txn, set, &u16::from(participant)); } } pub(crate) fn try_recv(txn: &mut impl DbTxn, set: ExternalValidatorSet) -> Option { _internal_db::RemoveParticipant::try_recv(txn, set) + .map(|i| Participant::new(i).expect("sent invalid participant index for removal")) } } diff --git a/coordinator/src/dkg_confirmation.rs b/coordinator/src/dkg_confirmation.rs index a26d9e6e..e6291501 100644 --- a/coordinator/src/dkg_confirmation.rs +++ b/coordinator/src/dkg_confirmation.rs @@ -12,10 +12,8 @@ use frost_schnorrkel::{ use serai_db::{DbTxn, Db as DbTrait}; -use serai_client::{ - primitives::SeraiAddress, - validator_sets::primitives::{ExternalValidatorSet, musig_context, set_keys_message}, -}; +#[rustfmt::skip] +use serai_client_serai::abi::primitives::{validator_sets::ExternalValidatorSet, address::SeraiAddress}; use serai_task::{DoesNotError, ContinuallyRan}; @@ -160,7 +158,7 @@ impl ConfirmDkgTask { let (machine, preprocess) = AlgorithmMachine::new( schnorrkel(), // We use a 1-of-1 Musig here as we don't know who will actually be in this Musig yet - musig(musig_context(set.into()), key, &[public_key]).unwrap(), + musig(ExternalValidatorSet::musig_context(&set), key, &[public_key]).unwrap(), ) .preprocess(&mut OsRng); // We take the preprocess so we can use it in a distinct machine with the actual Musig @@ -260,9 +258,12 @@ impl ContinuallyRan for ConfirmDkgTask { }) .collect::>(); - let keys = - musig(musig_context(self.set.set.into()), self.key.clone(), &musig_public_keys) - .unwrap(); + let keys = musig( + ExternalValidatorSet::musig_context(&self.set.set), + self.key.clone(), + &musig_public_keys, + ) + .unwrap(); // Rebuild the machine let (machine, preprocess_from_cache) = @@ -296,9 +297,10 @@ impl ContinuallyRan for ConfirmDkgTask { }; // Calculate our share - let (machine, share) = match handle_frost_error( - machine.sign(preprocesses, &set_keys_message(&self.set.set, &key_pair)), - ) { + let (machine, share) = match handle_frost_error(machine.sign( + preprocesses, + &ExternalValidatorSet::set_keys_message(&self.set.set, &key_pair), + )) { Ok((machine, share)) => (machine, share), // This yields the *musig participant index* Err(participant) => { diff --git a/coordinator/src/main.rs b/coordinator/src/main.rs index d1f7bbd9..aabc8887 100644 --- a/coordinator/src/main.rs +++ b/coordinator/src/main.rs @@ -14,9 +14,14 @@ use borsh::BorshDeserialize; use tokio::sync::mpsc; -use serai_client::{ - primitives::{ExternalNetworkId, PublicKey, SeraiAddress, Signature}, - validator_sets::primitives::{ExternalValidatorSet, KeyPair}, +use serai_client_serai::{ + abi::primitives::{ + BlockHash, + crypto::{Public, Signature, ExternalKey, KeyPair}, + network_id::ExternalNetworkId, + validator_sets::ExternalValidatorSet, + address::SeraiAddress, + }, Serai, }; use message_queue::{Service, client::MessageQueue}; @@ -61,9 +66,7 @@ async fn serai() -> Arc { let Ok(serai) = Serai::new(format!( "http://{}:9944", serai_env::var("SERAI_HOSTNAME").expect("Serai hostname wasn't provided") - )) - .await - else { + )) else { log::error!("couldn't connect to the Serai node"); tokio::time::sleep(delay).await; delay = (delay + SERAI_CONNECTION_DELAY).min(MAX_SERAI_CONNECTION_DELAY); @@ -213,10 +216,12 @@ async fn handle_network( &mut txn, ExternalValidatorSet { network, session }, &KeyPair( - PublicKey::from_raw(substrate_key), - network_key - .try_into() - .expect("generated a network key which exceeds the maximum key length"), + Public(substrate_key), + ExternalKey( + network_key + .try_into() + .expect("generated a network key which exceeds the maximum key length"), + ), ), ); } @@ -284,12 +289,13 @@ async fn handle_network( &mut txn, ExternalValidatorSet { network, session }, slash_report, - Signature::from(signature), + Signature(signature), ); } }, messages::ProcessorMessage::Substrate(msg) => match msg { messages::substrate::ProcessorMessage::SubstrateBlockAck { block, plans } => { + let block = BlockHash(block); let mut by_session = HashMap::new(); for plan in plans { by_session @@ -481,7 +487,7 @@ async fn main() { ); // Handle each of the networks - for network in serai_client::primitives::EXTERNAL_NETWORKS { + for network in ExternalNetworkId::all() { tokio::spawn(handle_network(db.clone(), message_queue.clone(), serai.clone(), network)); } diff --git a/coordinator/src/substrate.rs b/coordinator/src/substrate.rs index 4e8a66a6..6dfb50c4 100644 --- a/coordinator/src/substrate.rs +++ b/coordinator/src/substrate.rs @@ -10,7 +10,10 @@ use tokio::sync::mpsc; use serai_db::{DbTxn, Db as DbTrait}; -use serai_client::validator_sets::primitives::{Session, ExternalValidatorSet}; +use serai_client_serai::abi::primitives::{ + network_id::ExternalNetworkId, + validator_sets::{Session, ExternalValidatorSet}, +}; use message_queue::{Service, Metadata, client::MessageQueue}; use tributary_sdk::Tributary; @@ -39,7 +42,7 @@ impl ContinuallyRan for SubstrateTask

{ let mut made_progress = false; // Handle the Canonical events - for network in serai_client::primitives::EXTERNAL_NETWORKS { + for network in ExternalNetworkId::all() { loop { let mut txn = self.db.txn(); let Some(msg) = serai_coordinator_substrate::Canonical::try_recv(&mut txn, network) diff --git a/coordinator/src/tributary.rs b/coordinator/src/tributary.rs index d0276676..8834161b 100644 --- a/coordinator/src/tributary.rs +++ b/coordinator/src/tributary.rs @@ -11,7 +11,7 @@ use tokio::sync::mpsc; use serai_db::{Get, DbTxn, Db as DbTrait, create_db, db_channel}; -use serai_client::validator_sets::primitives::ExternalValidatorSet; +use serai_client_serai::abi::primitives::validator_sets::ExternalValidatorSet; use tributary_sdk::{TransactionKind, TransactionError, ProvidedError, TransactionTrait, Tributary}; diff --git a/coordinator/substrate/Cargo.toml b/coordinator/substrate/Cargo.toml index 0e3c330e..15579f33 100644 --- a/coordinator/substrate/Cargo.toml +++ b/coordinator/substrate/Cargo.toml @@ -24,7 +24,7 @@ borsh = { version = "1", default-features = false, features = ["std", "derive", dkg = { path = "../../crypto/dkg", default-features = false, features = ["std"] } -serai-client = { path = "../../substrate/client", version = "0.1", default-features = false, features = ["serai"] } +serai-client-serai = { path = "../../substrate/client/serai", default-features = false } log = { version = "0.4", default-features = false, features = ["std"] } diff --git a/coordinator/substrate/src/canonical.rs b/coordinator/substrate/src/canonical.rs index 81a8ccce..28e6d7fc 100644 --- a/coordinator/substrate/src/canonical.rs +++ b/coordinator/substrate/src/canonical.rs @@ -3,7 +3,13 @@ use std::sync::Arc; use futures::stream::{StreamExt, FuturesOrdered}; -use serai_client::{validator_sets::primitives::ExternalValidatorSet, Serai}; +use serai_client_serai::{ + abi::{ + self, + primitives::{network_id::ExternalNetworkId, validator_sets::ExternalValidatorSet}, + }, + Serai, +}; use messages::substrate::{InInstructionResult, ExecutedBatch, CoordinatorMessage}; @@ -15,6 +21,7 @@ use serai_cosign::Cosigning; create_db!( CoordinatorSubstrateCanonical { NextBlock: () -> u64, + LastIndexedBatchId: (network: ExternalNetworkId) -> u32, } ); @@ -45,10 +52,10 @@ impl ContinuallyRan for CanonicalEventStream { // These are all the events which generate canonical messages struct CanonicalEvents { time: u64, - key_gen_events: Vec, - set_retired_events: Vec, - batch_events: Vec, - burn_events: Vec, + set_keys_events: Vec, + slash_report_events: Vec, + batch_events: Vec, + burn_events: Vec, } // For a cosigned block, fetch all relevant events @@ -66,16 +73,16 @@ impl ContinuallyRan for CanonicalEventStream { } Err(serai_cosign::Faulted) => return Err("cosigning process faulted".to_string()), }; - let temporal_serai = serai.as_of(block_hash); + let temporal_serai = serai.as_of(block_hash).await.map_err(|e| format!("{e}"))?; let temporal_serai_validators = temporal_serai.validator_sets(); let temporal_serai_instructions = temporal_serai.in_instructions(); let temporal_serai_coins = temporal_serai.coins(); - let (block, key_gen_events, set_retired_events, batch_events, burn_events) = + let (block, set_keys_events, slash_report_events, batch_events, burn_events) = tokio::try_join!( serai.block(block_hash), - temporal_serai_validators.key_gen_events(), - temporal_serai_validators.set_retired_events(), + temporal_serai_validators.set_keys_events(), + temporal_serai_validators.slash_report_events(), temporal_serai_instructions.batch_events(), temporal_serai_coins.burn_with_instruction_events(), ) @@ -84,22 +91,14 @@ impl ContinuallyRan for CanonicalEventStream { Err(format!("Serai node didn't have cosigned block #{block_number}"))? }; - let time = if block_number == 0 { - block.time().unwrap_or(0) - } else { - // Serai's block time is in milliseconds - block - .time() - .ok_or_else(|| "non-genesis Serai block didn't have a time".to_string())? / - 1000 - }; - + // We use time in seconds, not milliseconds, here + let time = block.header.unix_time_in_millis() / 1000; Ok(( block_number, CanonicalEvents { time, - key_gen_events, - set_retired_events, + set_keys_events, + slash_report_events, batch_events, burn_events, }, @@ -131,10 +130,9 @@ impl ContinuallyRan for CanonicalEventStream { let mut txn = self.db.txn(); - for key_gen in block.key_gen_events { - let serai_client::validator_sets::ValidatorSetsEvent::KeyGen { set, key_pair } = &key_gen - else { - panic!("KeyGen event wasn't a KeyGen event: {key_gen:?}"); + for set_keys in block.set_keys_events { + let abi::validator_sets::Event::SetKeys { set, key_pair } = &set_keys else { + panic!("`SetKeys` event wasn't a `SetKeys` event: {set_keys:?}"); }; crate::Canonical::send( &mut txn, @@ -147,12 +145,10 @@ impl ContinuallyRan for CanonicalEventStream { ); } - for set_retired in block.set_retired_events { - let serai_client::validator_sets::ValidatorSetsEvent::SetRetired { set } = &set_retired - else { - panic!("SetRetired event wasn't a SetRetired event: {set_retired:?}"); + for slash_report in block.slash_report_events { + let abi::validator_sets::Event::SlashReport { set } = &slash_report else { + panic!("`SlashReport` event wasn't a `SlashReport` event: {slash_report:?}"); }; - let Ok(set) = ExternalValidatorSet::try_from(*set) else { continue }; crate::Canonical::send( &mut txn, set.network, @@ -160,10 +156,12 @@ impl ContinuallyRan for CanonicalEventStream { ); } - for network in serai_client::primitives::EXTERNAL_NETWORKS { + for network in ExternalNetworkId::all() { let mut batch = None; for this_batch in &block.batch_events { - let serai_client::in_instructions::InInstructionsEvent::Batch { + // Only irrefutable as this is the only member of the enum at this time + #[expect(irrefutable_let_patterns)] + let abi::in_instructions::Event::Batch { network: batch_network, publishing_session, id, @@ -194,14 +192,19 @@ impl ContinuallyRan for CanonicalEventStream { }) .collect(), }); + + if LastIndexedBatchId::get(&txn, network) != id.checked_sub(1) { + panic!( + "next batch from Serai's ID was not an increment of the last indexed batch's ID" + ); + } + LastIndexedBatchId::set(&mut txn, network, id); } } let mut burns = vec![]; for burn in &block.burn_events { - let serai_client::coins::CoinsEvent::BurnWithInstruction { from: _, instruction } = - &burn - else { + let abi::coins::Event::BurnWithInstruction { from: _, instruction } = &burn else { panic!("BurnWithInstruction event wasn't a BurnWithInstruction event: {burn:?}"); }; if instruction.balance.coin.network() == network { @@ -223,3 +226,7 @@ impl ContinuallyRan for CanonicalEventStream { } } } + +pub(crate) fn last_indexed_batch_id(txn: &impl DbTxn, network: ExternalNetworkId) -> Option { + LastIndexedBatchId::get(txn, network) +} diff --git a/coordinator/substrate/src/ephemeral.rs b/coordinator/substrate/src/ephemeral.rs index cb6e14cd..30a13021 100644 --- a/coordinator/substrate/src/ephemeral.rs +++ b/coordinator/substrate/src/ephemeral.rs @@ -3,9 +3,14 @@ use std::sync::Arc; use futures::stream::{StreamExt, FuturesOrdered}; -use serai_client::{ - primitives::{SeraiAddress, EmbeddedEllipticCurve}, - validator_sets::primitives::{MAX_KEY_SHARES_PER_SET, ExternalValidatorSet}, +use serai_client_serai::{ + abi::primitives::{ + BlockHash, + crypto::EmbeddedEllipticCurveKeys, + network_id::ExternalNetworkId, + validator_sets::{KeyShares, ExternalValidatorSet}, + address::SeraiAddress, + }, Serai, }; @@ -49,10 +54,10 @@ impl ContinuallyRan for EphemeralEventStream { // These are all the events which generate canonical messages struct EphemeralEvents { - block_hash: [u8; 32], + block_hash: BlockHash, time: u64, - new_set_events: Vec, - accepted_handover_events: Vec, + set_decided_events: Vec, + accepted_handover_events: Vec, } // For a cosigned block, fetch all relevant events @@ -71,11 +76,11 @@ impl ContinuallyRan for EphemeralEventStream { Err(serai_cosign::Faulted) => return Err("cosigning process faulted".to_string()), }; - let temporal_serai = serai.as_of(block_hash); + let temporal_serai = serai.as_of(block_hash).await.map_err(|e| format!("{e}"))?; let temporal_serai_validators = temporal_serai.validator_sets(); - let (block, new_set_events, accepted_handover_events) = tokio::try_join!( + let (block, set_decided_events, accepted_handover_events) = tokio::try_join!( serai.block(block_hash), - temporal_serai_validators.new_set_events(), + temporal_serai_validators.set_decided_events(), temporal_serai_validators.accepted_handover_events(), ) .map_err(|e| format!("{e:?}"))?; @@ -83,19 +88,11 @@ impl ContinuallyRan for EphemeralEventStream { Err(format!("Serai node didn't have cosigned block #{block_number}"))? }; - let time = if block_number == 0 { - block.time().unwrap_or(0) - } else { - // Serai's block time is in milliseconds - block - .time() - .ok_or_else(|| "non-genesis Serai block didn't have a time".to_string())? / - 1000 - }; - + // We use time in seconds, not milliseconds, here + let time = block.header.unix_time_in_millis() / 1000; Ok(( block_number, - EphemeralEvents { block_hash, time, new_set_events, accepted_handover_events }, + EphemeralEvents { block_hash, time, set_decided_events, accepted_handover_events }, )) } } @@ -126,48 +123,40 @@ impl ContinuallyRan for EphemeralEventStream { let mut txn = self.db.txn(); - for new_set in block.new_set_events { - let serai_client::validator_sets::ValidatorSetsEvent::NewSet { set } = &new_set else { - panic!("NewSet event wasn't a NewSet event: {new_set:?}"); + for set_decided in block.set_decided_events { + let serai_client_serai::abi::validator_sets::Event::SetDecided { set, validators } = + &set_decided + else { + panic!("`SetDecided` event wasn't a `SetDecided` event: {set_decided:?}"); }; // We only coordinate over external networks let Ok(set) = ExternalValidatorSet::try_from(*set) else { continue }; - let serai = self.serai.as_of(block.block_hash); + let serai = self.serai.as_of(block.block_hash).await.map_err(|e| format!("{e}"))?; let serai = serai.validator_sets(); - let Some(validators) = - serai.participants(set.network.into()).await.map_err(|e| format!("{e:?}"))? - else { - Err(format!( - "block #{block_number} declared a new set but didn't have the participants" - ))? - }; - let validators = validators - .into_iter() - .map(|(validator, weight)| (SeraiAddress::from(validator), weight)) - .collect::>(); + let validators = + validators.iter().map(|(validator, weight)| (*validator, weight)).collect::>(); let in_set = validators.iter().any(|(validator, _)| *validator == self.validator); if in_set { if u16::try_from(validators.len()).is_err() { Err("more than u16::MAX validators sent")?; } - let Ok(validators) = validators + let validators = validators .into_iter() - .map(|(validator, weight)| u16::try_from(weight).map(|weight| (validator, weight))) - .collect::, _>>() - else { - Err("validator's weight exceeded u16::MAX".to_string())? - }; + .map(|(validator, weight)| (validator, weight.0)) + .collect::>(); // Do the summation in u32 so we don't risk a u16 overflow let total_weight = validators.iter().map(|(_, weight)| u32::from(*weight)).sum::(); - if total_weight > u32::from(MAX_KEY_SHARES_PER_SET) { + if total_weight > u32::from(KeyShares::MAX_PER_SET) { Err(format!( - "{set:?} has {total_weight} key shares when the max is {MAX_KEY_SHARES_PER_SET}" + "{set:?} has {total_weight} key shares when the max is {}", + KeyShares::MAX_PER_SET ))?; } - let total_weight = u16::try_from(total_weight).unwrap(); + let total_weight = u16::try_from(total_weight) + .expect("value smaller than `u16` constant but doesn't fit in `u16`"); // Fetch all of the validators' embedded elliptic curve keys let mut embedded_elliptic_curve_keys = FuturesOrdered::new(); @@ -175,52 +164,51 @@ impl ContinuallyRan for EphemeralEventStream { let validator = *validator; // try_join doesn't return a future so we need to wrap it in this additional async // block - embedded_elliptic_curve_keys.push_back(async move { - tokio::try_join!( - // One future to fetch the substrate embedded key - serai.embedded_elliptic_curve_key( - validator.into(), - EmbeddedEllipticCurve::Embedwards25519 - ), - // One future to fetch the external embedded key, if there is a distinct curve - async { - // `embedded_elliptic_curves` is documented to have the second entry be the - // network-specific curve (if it exists and is distinct from Embedwards25519) - if let Some(curve) = set.network.embedded_elliptic_curves().get(1) { - serai.embedded_elliptic_curve_key(validator.into(), *curve).await.map(Some) - } else { - Ok(None) - } + embedded_elliptic_curve_keys.push_back({ + let serai = serai.clone(); + async move { + match serai.embedded_elliptic_curve_keys(validator, set.network).await { + Ok(Some(keys)) => Ok(Some(( + validator, + match keys { + EmbeddedEllipticCurveKeys::Bitcoin(substrate, external) => { + assert_eq!(set.network, ExternalNetworkId::Bitcoin); + (substrate, external.as_slice().to_vec()) + } + EmbeddedEllipticCurveKeys::Ethereum(substrate, external) => { + assert_eq!(set.network, ExternalNetworkId::Ethereum); + (substrate, external.as_slice().to_vec()) + } + EmbeddedEllipticCurveKeys::Monero(substrate) => { + assert_eq!(set.network, ExternalNetworkId::Monero); + (substrate, substrate.as_slice().to_vec()) + } + }, + ))), + Ok(None) => Ok(None), + Err(e) => Err(e), } - ) - .map(|(substrate_embedded_key, external_embedded_key)| { - (validator, substrate_embedded_key, external_embedded_key) - }) + } }); } let mut evrf_public_keys = Vec::with_capacity(usize::from(total_weight)); for (validator, weight) in &validators { - let (future_validator, substrate_embedded_key, external_embedded_key) = - embedded_elliptic_curve_keys.next().await.unwrap().map_err(|e| format!("{e:?}"))?; + let Some((future_validator, (substrate_embedded_key, external_embedded_key))) = + embedded_elliptic_curve_keys.next().await.unwrap().map_err(|e| format!("{e:?}"))? + else { + Err("`SetDecided` with validator missing an embedded key".to_string())? + }; assert_eq!(*validator, future_validator); - let external_embedded_key = - external_embedded_key.unwrap_or(substrate_embedded_key.clone()); - match (substrate_embedded_key, external_embedded_key) { - (Some(substrate_embedded_key), Some(external_embedded_key)) => { - let substrate_embedded_key = <[u8; 32]>::try_from(substrate_embedded_key) - .map_err(|_| "Embedwards25519 key wasn't 32 bytes".to_string())?; - for _ in 0 .. *weight { - evrf_public_keys.push((substrate_embedded_key, external_embedded_key.clone())); - } - } - _ => Err("NewSet with validator missing an embedded key".to_string())?, + + for _ in 0 .. *weight { + evrf_public_keys.push((substrate_embedded_key, external_embedded_key.clone())); } } let mut new_set = NewSetInformation { set, - serai_block: block.block_hash, + serai_block: block.block_hash.0, declaration_time: block.time, // TODO: This should be inlined into the Processor's key gen code // It's legacy from when we removed participants from the key gen @@ -238,7 +226,7 @@ impl ContinuallyRan for EphemeralEventStream { } for accepted_handover in block.accepted_handover_events { - let serai_client::validator_sets::ValidatorSetsEvent::AcceptedHandover { set } = + let serai_client_serai::abi::validator_sets::Event::AcceptedHandover { set } = &accepted_handover else { panic!("AcceptedHandover event wasn't a AcceptedHandover event: {accepted_handover:?}"); diff --git a/coordinator/substrate/src/lib.rs b/coordinator/substrate/src/lib.rs index bede2e73..23f433f3 100644 --- a/coordinator/substrate/src/lib.rs +++ b/coordinator/substrate/src/lib.rs @@ -8,10 +8,14 @@ use borsh::{BorshSerialize, BorshDeserialize}; use dkg::Participant; -use serai_client::{ - primitives::{ExternalNetworkId, SeraiAddress, Signature}, - validator_sets::primitives::{Session, ExternalValidatorSet, KeyPair, SlashReport}, - in_instructions::primitives::SignedBatch, +use serai_client_serai::abi::{ + primitives::{ + network_id::ExternalNetworkId, + validator_sets::{Session, ExternalValidatorSet, SlashReport}, + crypto::{Signature, KeyPair}, + address::SeraiAddress, + instructions::SignedBatch, + }, Transaction, }; @@ -19,6 +23,7 @@ use serai_db::*; mod canonical; pub use canonical::CanonicalEventStream; +use canonical::last_indexed_batch_id; mod ephemeral; pub use ephemeral::EphemeralEventStream; @@ -37,7 +42,7 @@ pub struct NewSetInformation { pub set: ExternalValidatorSet, /// The Serai block which declared it. pub serai_block: [u8; 32], - /// The time of the block which declared it, in seconds. + /// The time of the block which declared it, in seconds since the epoch. pub declaration_time: u64, /// The threshold to use. pub threshold: u16, @@ -96,9 +101,9 @@ mod _public_db { create_db!( CoordinatorSubstrate { // Keys to set on the Serai network - Keys: (network: ExternalNetworkId) -> (Session, Vec), + Keys: (network: ExternalNetworkId) -> (Session, Transaction), // Slash reports to publish onto the Serai network - SlashReports: (network: ExternalNetworkId) -> (Session, Vec), + SlashReports: (network: ExternalNetworkId) -> (Session, Transaction), } ); } @@ -171,7 +176,7 @@ impl Keys { } } - let tx = serai_client::validator_sets::SeraiValidatorSets::set_keys( + let tx = serai_client_serai::ValidatorSets::set_keys( set.network, key_pair, signature_participants, @@ -192,7 +197,7 @@ pub struct SignedBatches; impl SignedBatches { /// Send a `SignedBatch` to publish onto Serai. pub fn send(txn: &mut impl DbTxn, batch: &SignedBatch) { - _public_db::SignedBatches::send(txn, batch.batch.network, batch); + _public_db::SignedBatches::send(txn, batch.batch.network(), batch); } pub(crate) fn try_recv(txn: &mut impl DbTxn, network: ExternalNetworkId) -> Option { _public_db::SignedBatches::try_recv(txn, network) @@ -219,11 +224,8 @@ impl SlashReports { } } - let tx = serai_client::validator_sets::SeraiValidatorSets::report_slashes( - set.network, - slash_report, - signature, - ); + let tx = + serai_client_serai::ValidatorSets::report_slashes(set.network, slash_report, signature); _public_db::SlashReports::set(txn, set.network, &(set.session, tx)); } pub(crate) fn take( diff --git a/coordinator/substrate/src/publish_batch.rs b/coordinator/substrate/src/publish_batch.rs index ff4b46de..20818478 100644 --- a/coordinator/substrate/src/publish_batch.rs +++ b/coordinator/substrate/src/publish_batch.rs @@ -1,8 +1,10 @@ use core::future::Future; use std::sync::Arc; -#[rustfmt::skip] -use serai_client::{primitives::ExternalNetworkId, in_instructions::primitives::SignedBatch, SeraiError, Serai}; +use serai_client_serai::{ + abi::primitives::{network_id::ExternalNetworkId, instructions::SignedBatch}, + RpcError, Serai, +}; use serai_db::{Get, DbTxn, Db, create_db}; use serai_task::ContinuallyRan; @@ -31,7 +33,7 @@ impl PublishBatchTask { } impl ContinuallyRan for PublishBatchTask { - type Error = SeraiError; + type Error = RpcError; fn run_iteration(&mut self) -> impl Send + Future> { async move { @@ -43,8 +45,8 @@ impl ContinuallyRan for PublishBatchTask { }; // If this is a Batch not yet published, save it into our unordered mapping - if LastPublishedBatch::get(&txn, self.network) < Some(batch.batch.id) { - BatchesToPublish::set(&mut txn, self.network, batch.batch.id, &batch); + if LastPublishedBatch::get(&txn, self.network) < Some(batch.batch.id()) { + BatchesToPublish::set(&mut txn, self.network, batch.batch.id(), &batch); } txn.commit(); @@ -52,12 +54,8 @@ impl ContinuallyRan for PublishBatchTask { // Synchronize our last published batch with the Serai network's let next_to_publish = { - // This uses the latest finalized block, not the latest cosigned block, which should be - // fine as in the worst case, the only impact is no longer attempting TX publication - let serai = self.serai.as_of_latest_finalized_block().await?; - let last_batch = serai.in_instructions().last_batch_for_network(self.network).await?; - let mut txn = self.db.txn(); + let last_batch = crate::last_indexed_batch_id(&txn, self.network); let mut our_last_batch = LastPublishedBatch::get(&txn, self.network); while our_last_batch < last_batch { let next_batch = our_last_batch.map(|batch| batch + 1).unwrap_or(0); @@ -68,6 +66,7 @@ impl ContinuallyRan for PublishBatchTask { if let Some(last_batch) = our_last_batch { LastPublishedBatch::set(&mut txn, self.network, &last_batch); } + txn.commit(); last_batch.map(|batch| batch + 1).unwrap_or(0) }; @@ -75,7 +74,7 @@ impl ContinuallyRan for PublishBatchTask { if let Some(batch) = BatchesToPublish::get(&self.db, self.network, next_to_publish) { self .serai - .publish(&serai_client::in_instructions::SeraiInInstructions::execute_batch(batch)) + .publish_transaction(&serai_client_serai::InInstructions::execute_batch(batch)) .await?; true } else { diff --git a/coordinator/substrate/src/publish_slash_report.rs b/coordinator/substrate/src/publish_slash_report.rs index 7b90d53d..f038fafd 100644 --- a/coordinator/substrate/src/publish_slash_report.rs +++ b/coordinator/substrate/src/publish_slash_report.rs @@ -3,7 +3,10 @@ use std::sync::Arc; use serai_db::{DbTxn, Db}; -use serai_client::{primitives::ExternalNetworkId, validator_sets::primitives::Session, Serai}; +use serai_client_serai::{ + abi::primitives::{network_id::ExternalNetworkId, validator_sets::Session}, + Serai, +}; use serai_task::ContinuallyRan; @@ -36,7 +39,8 @@ impl PublishSlashReportTask { let serai = self.serai.as_of_latest_finalized_block().await.map_err(|e| format!("{e:?}"))?; let serai = serai.validator_sets(); let session_after_slash_report = Session(session.0 + 1); - let current_session = serai.session(network.into()).await.map_err(|e| format!("{e:?}"))?; + let current_session = + serai.current_session(network.into()).await.map_err(|e| format!("{e:?}"))?; let current_session = current_session.map(|session| session.0); // Only attempt to publish the slash report for session #n while session #n+1 is still // active @@ -55,14 +59,13 @@ impl PublishSlashReportTask { } // If this session which should publish a slash report already has, move on - let key_pending_slash_report = - serai.key_pending_slash_report(network).await.map_err(|e| format!("{e:?}"))?; - if key_pending_slash_report.is_none() { + if !serai.pending_slash_report(network).await.map_err(|e| format!("{e:?}"))? { txn.commit(); return Ok(false); }; - match self.serai.publish(&slash_report).await { + // Since this slash report is still pending, publish it + match self.serai.publish_transaction(&slash_report).await { Ok(()) => { txn.commit(); Ok(true) @@ -84,7 +87,7 @@ impl ContinuallyRan for PublishSlashReportTask { async move { let mut made_progress = false; let mut error = None; - for network in serai_client::primitives::EXTERNAL_NETWORKS { + for network in ExternalNetworkId::all() { let network_res = self.publish(network).await; // We made progress if any network successfully published their slash report made_progress |= network_res == Ok(true); diff --git a/coordinator/substrate/src/set_keys.rs b/coordinator/substrate/src/set_keys.rs index b8bf2ad1..37afbb81 100644 --- a/coordinator/substrate/src/set_keys.rs +++ b/coordinator/substrate/src/set_keys.rs @@ -3,7 +3,10 @@ use std::sync::Arc; use serai_db::{DbTxn, Db}; -use serai_client::{validator_sets::primitives::ExternalValidatorSet, Serai}; +use serai_client_serai::{ + abi::primitives::{network_id::ExternalNetworkId, validator_sets::ExternalValidatorSet}, + Serai, +}; use serai_task::ContinuallyRan; @@ -28,7 +31,7 @@ impl ContinuallyRan for SetKeysTask { fn run_iteration(&mut self) -> impl Send + Future> { async move { let mut made_progress = false; - for network in serai_client::primitives::EXTERNAL_NETWORKS { + for network in ExternalNetworkId::all() { let mut txn = self.db.txn(); let Some((session, keys)) = Keys::take(&mut txn, network) else { // No keys to set @@ -40,7 +43,8 @@ impl ContinuallyRan for SetKeysTask { let serai = self.serai.as_of_latest_finalized_block().await.map_err(|e| format!("{e:?}"))?; let serai = serai.validator_sets(); - let current_session = serai.session(network.into()).await.map_err(|e| format!("{e:?}"))?; + let current_session = + serai.current_session(network.into()).await.map_err(|e| format!("{e:?}"))?; let current_session = current_session.map(|session| session.0); // Only attempt to set these keys if this isn't a retired session if Some(session.0) < current_session { @@ -67,7 +71,7 @@ impl ContinuallyRan for SetKeysTask { continue; }; - match self.serai.publish(&keys).await { + match self.serai.publish_transaction(&keys).await { Ok(()) => { txn.commit(); made_progress = true; diff --git a/coordinator/tributary/Cargo.toml b/coordinator/tributary/Cargo.toml index 1926cf81..eb9c1166 100644 --- a/coordinator/tributary/Cargo.toml +++ b/coordinator/tributary/Cargo.toml @@ -36,7 +36,7 @@ serai-task = { path = "../../common/task", version = "0.1" } tributary-sdk = { path = "../tributary-sdk" } -serai-cosign = { path = "../cosign" } +serai-cosign-types = { path = "../cosign/types" } serai-coordinator-substrate = { path = "../substrate" } messages = { package = "serai-processor-messages", path = "../../processor/messages" } diff --git a/coordinator/tributary/src/db.rs b/coordinator/tributary/src/db.rs index 7783801a..fa8d730e 100644 --- a/coordinator/tributary/src/db.rs +++ b/coordinator/tributary/src/db.rs @@ -1,16 +1,14 @@ -#![expect(clippy::cast_possible_truncation)] - use std::collections::HashMap; use borsh::{BorshSerialize, BorshDeserialize}; -use serai_primitives::{address::SeraiAddress, validator_sets::primitives::ExternalValidatorSet}; +use serai_primitives::{BlockHash, validator_sets::ExternalValidatorSet, address::SeraiAddress}; use messages::sign::{VariantSignId, SignId}; use serai_db::*; -use serai_cosign::CosignIntent; +use serai_cosign_types::CosignIntent; use crate::transaction::SigningProtocolRound; @@ -124,7 +122,7 @@ impl Topic { Topic::DkgConfirmation { attempt, round: _ } => Some({ let id = { let mut id = [0; 32]; - let encoded_set = borsh::to_vec(set).unwrap(); + let encoded_set = borsh::to_vec(&set).unwrap(); id[.. encoded_set.len()].copy_from_slice(&encoded_set); VariantSignId::Batch(id) }; @@ -234,18 +232,18 @@ create_db!( SlashPoints: (set: ExternalValidatorSet, validator: SeraiAddress) -> u32, // The cosign intent for a Substrate block - CosignIntents: (set: ExternalValidatorSet, substrate_block_hash: [u8; 32]) -> CosignIntent, + CosignIntents: (set: ExternalValidatorSet, substrate_block_hash: BlockHash) -> CosignIntent, // The latest Substrate block to cosign. - LatestSubstrateBlockToCosign: (set: ExternalValidatorSet) -> [u8; 32], + LatestSubstrateBlockToCosign: (set: ExternalValidatorSet) -> BlockHash, // The hash of the block we're actively cosigning. - ActivelyCosigning: (set: ExternalValidatorSet) -> [u8; 32], + ActivelyCosigning: (set: ExternalValidatorSet) -> BlockHash, // If this block has already been cosigned. - Cosigned: (set: ExternalValidatorSet, substrate_block_hash: [u8; 32]) -> (), + Cosigned: (set: ExternalValidatorSet, substrate_block_hash: BlockHash) -> (), // The plans to recognize upon a `Transaction::SubstrateBlock` being included on-chain. SubstrateBlockPlans: ( set: ExternalValidatorSet, - substrate_block_hash: [u8; 32] + substrate_block_hash: BlockHash ) -> Vec<[u8; 32]>, // The weight accumulated for a topic. @@ -293,26 +291,26 @@ impl TributaryDb { pub(crate) fn latest_substrate_block_to_cosign( getter: &impl Get, set: ExternalValidatorSet, - ) -> Option<[u8; 32]> { + ) -> Option { LatestSubstrateBlockToCosign::get(getter, set) } pub(crate) fn set_latest_substrate_block_to_cosign( txn: &mut impl DbTxn, set: ExternalValidatorSet, - substrate_block_hash: [u8; 32], + substrate_block_hash: BlockHash, ) { LatestSubstrateBlockToCosign::set(txn, set, &substrate_block_hash); } pub(crate) fn actively_cosigning( txn: &mut impl DbTxn, set: ExternalValidatorSet, - ) -> Option<[u8; 32]> { + ) -> Option { ActivelyCosigning::get(txn, set) } pub(crate) fn start_cosigning( txn: &mut impl DbTxn, set: ExternalValidatorSet, - substrate_block_hash: [u8; 32], + substrate_block_hash: BlockHash, substrate_block_number: u64, ) { assert!( @@ -337,14 +335,14 @@ impl TributaryDb { pub(crate) fn mark_cosigned( txn: &mut impl DbTxn, set: ExternalValidatorSet, - substrate_block_hash: [u8; 32], + substrate_block_hash: BlockHash, ) { Cosigned::set(txn, set, substrate_block_hash, &()); } pub(crate) fn cosigned( txn: &mut impl DbTxn, set: ExternalValidatorSet, - substrate_block_hash: [u8; 32], + substrate_block_hash: BlockHash, ) -> bool { Cosigned::get(txn, set, substrate_block_hash).is_some() } diff --git a/coordinator/tributary/src/lib.rs b/coordinator/tributary/src/lib.rs index 059cadd0..d89ddc3d 100644 --- a/coordinator/tributary/src/lib.rs +++ b/coordinator/tributary/src/lib.rs @@ -9,8 +9,9 @@ use ciphersuite::group::GroupEncoding; use dkg::Participant; use serai_primitives::{ - address::SeraiAddress, + BlockHash, validator_sets::{ExternalValidatorSet, Slash}, + address::SeraiAddress, }; use serai_db::*; @@ -25,7 +26,7 @@ use tributary_sdk::{ Transaction as TributaryTransaction, Block, TributaryReader, P2p, }; -use serai_cosign::CosignIntent; +use serai_cosign_types::CosignIntent; use serai_coordinator_substrate::NewSetInformation; use messages::sign::{VariantSignId, SignId}; @@ -79,7 +80,7 @@ impl CosignIntents { fn take( txn: &mut impl DbTxn, set: ExternalValidatorSet, - substrate_block_hash: [u8; 32], + substrate_block_hash: BlockHash, ) -> Option { db::CosignIntents::take(txn, set, substrate_block_hash) } @@ -113,7 +114,7 @@ impl SubstrateBlockPlans { pub fn set( txn: &mut impl DbTxn, set: ExternalValidatorSet, - substrate_block_hash: [u8; 32], + substrate_block_hash: BlockHash, plans: &Vec<[u8; 32]>, ) { db::SubstrateBlockPlans::set(txn, set, substrate_block_hash, plans); @@ -121,7 +122,7 @@ impl SubstrateBlockPlans { fn take( txn: &mut impl DbTxn, set: ExternalValidatorSet, - substrate_block_hash: [u8; 32], + substrate_block_hash: BlockHash, ) -> Option> { db::SubstrateBlockPlans::take(txn, set, substrate_block_hash) } diff --git a/coordinator/tributary/src/transaction.rs b/coordinator/tributary/src/transaction.rs index 6e7c71bd..e2321d1e 100644 --- a/coordinator/tributary/src/transaction.rs +++ b/coordinator/tributary/src/transaction.rs @@ -14,7 +14,7 @@ use schnorr::SchnorrSignature; use borsh::{BorshSerialize, BorshDeserialize}; -use serai_primitives::{addess::SeraiAddress, validator_sets::MAX_KEY_SHARES_PER_SET}; +use serai_primitives::{BlockHash, validator_sets::KeyShares, address::SeraiAddress}; use messages::sign::VariantSignId; @@ -137,7 +137,7 @@ pub enum Transaction { /// be the one selected to be cosigned. Cosign { /// The hash of the Substrate block to cosign - substrate_block_hash: [u8; 32], + substrate_block_hash: BlockHash, }, /// Note an intended-to-be-cosigned Substrate block as cosigned @@ -175,7 +175,7 @@ pub enum Transaction { /// cosigning the block in question, it'd be safe to provide this and move on to the next cosign. Cosigned { /// The hash of the Substrate block which was cosigned - substrate_block_hash: [u8; 32], + substrate_block_hash: BlockHash, }, /// Acknowledge a Substrate block @@ -186,7 +186,7 @@ pub enum Transaction { /// resulting from its handling. SubstrateBlock { /// The hash of the Substrate block - hash: [u8; 32], + hash: BlockHash, }, /// Acknowledge a Batch @@ -250,11 +250,11 @@ impl TransactionTrait for Transaction { signed.to_tributary_signed(0), ), Transaction::DkgConfirmationPreprocess { attempt, signed, .. } => TransactionKind::Signed( - borsh::to_vec(b"DkgConfirmation".as_slice(), attempt).unwrap(), + borsh::to_vec(&(b"DkgConfirmation".as_slice(), attempt)).unwrap(), signed.to_tributary_signed(0), ), Transaction::DkgConfirmationShare { attempt, signed, .. } => TransactionKind::Signed( - borsh::to_vec(b"DkgConfirmation".as_slice(), attempt).unwrap(), + borsh::to_vec(&(b"DkgConfirmation".as_slice(), attempt)).unwrap(), signed.to_tributary_signed(1), ), @@ -264,7 +264,7 @@ impl TransactionTrait for Transaction { Transaction::Batch { .. } => TransactionKind::Provided("Batch"), Transaction::Sign { id, attempt, round, signed, .. } => TransactionKind::Signed( - borsh::to_vec(b"Sign".as_slice(), id, attempt).unwrap(), + borsh::to_vec(&(b"Sign".as_slice(), id, attempt)).unwrap(), signed.to_tributary_signed(round.nonce()), ), @@ -303,14 +303,14 @@ impl TransactionTrait for Transaction { Transaction::Batch { .. } => {} Transaction::Sign { data, .. } => { - if data.len() > usize::from(MAX_KEY_SHARES_PER_SET) { + if data.len() > usize::from(KeyShares::MAX_PER_SET) { Err(TransactionError::InvalidContent)? } // TODO: MAX_SIGN_LEN } Transaction::SlashReport { slash_points, .. } => { - if slash_points.len() > usize::from(MAX_KEY_SHARES_PER_SET) { + if slash_points.len() > usize::from(KeyShares::MAX_PER_SET) { Err(TransactionError::InvalidContent)? } } diff --git a/substrate/abi/src/block.rs b/substrate/abi/src/block.rs index c855942e..e364c16e 100644 --- a/substrate/abi/src/block.rs +++ b/substrate/abi/src/block.rs @@ -83,6 +83,12 @@ impl Header { Header::V1(HeaderV1 { builds_upon, .. }) => *builds_upon, } } + /// Get the UNIX time, in milliseconds since the epoch, for when this block was proposed. + pub fn unix_time_in_millis(&self) -> u64 { + match self { + Header::V1(HeaderV1 { unix_time_in_millis, .. }) => *unix_time_in_millis, + } + } /// The commitment to the transactions within this block. pub fn transactions_commitment(&self) -> UnbalancedMerkleTree { match self { diff --git a/substrate/client/serai/Cargo.toml b/substrate/client/serai/Cargo.toml index 48fb0611..52fa4efa 100644 --- a/substrate/client/serai/Cargo.toml +++ b/substrate/client/serai/Cargo.toml @@ -24,7 +24,9 @@ simple-request = { path = "../../../common/request", version = "0.3" } hex = { version = "0.4", default-features = false, features = ["alloc"] } borsh = { version = "1", default-features = false, features = ["std"] } -serai-abi = { path = "../../abi", version = "0.1" } + +bitvec = { version = "1", default-features = false, features = ["alloc", "std"] } +serai-abi = { path = "../../abi", version = "0.1", default-features = false, features = ["std"] } async-lock = "3" diff --git a/substrate/client/serai/src/in_instructions.rs b/substrate/client/serai/src/in_instructions.rs new file mode 100644 index 00000000..ae603290 --- /dev/null +++ b/substrate/client/serai/src/in_instructions.rs @@ -0,0 +1,52 @@ +pub use serai_abi::{ + primitives::instructions::SignedBatch, + in_instructions::{Call, Event}, + UnsignedCall, Transaction, +}; + +use crate::{RpcError, TemporalSerai}; + +/// A `TemporalSerai` scoped to the in instructions module. +#[derive(Clone)] +pub struct InInstructions<'serai>(pub(super) &'serai TemporalSerai<'serai>); + +impl<'serai> InInstructions<'serai> { + /// The events from the in instructions module. + pub async fn events(&self) -> Result, RpcError> { + Ok( + self + .0 + .events_borrowed() + .await? + .as_ref() + .expect("`TemporalSerai::events` returned None") + .iter() + .flat_map(IntoIterator::into_iter) + .filter_map(|event| match event { + serai_abi::Event::InInstructions(event) => Some(event.clone()), + _ => None, + }) + .collect(), + ) + } + + /// The `Batch` events from the in instructions module. + pub async fn batch_events(&self) -> Result, RpcError> { + Ok( + self + .events() + .await? + .into_iter() + .filter(|event| matches!(event, Event::Batch { .. })) + .collect(), + ) + } + + /// Create a transaction to execute a batch. + pub fn execute_batch(batch: SignedBatch) -> Transaction { + Transaction::Unsigned { + call: UnsignedCall::try_from(serai_abi::Call::from(Call::execute_batch { batch })) + .expect("`execute_batch` wasn't an unsigned call?"), + } + } +} diff --git a/substrate/client/serai/src/lib.rs b/substrate/client/serai/src/lib.rs index 944ce523..760236cb 100644 --- a/substrate/client/serai/src/lib.rs +++ b/substrate/client/serai/src/lib.rs @@ -25,6 +25,9 @@ pub use coins::Coins; mod validator_sets; pub use validator_sets::ValidatorSets; +mod in_instructions; +pub use in_instructions::InInstructions; + /// An error from the RPC. #[derive(Debug, Error)] pub enum RpcError { @@ -58,8 +61,8 @@ pub struct Serai { /// from this block will be cached within this. This allows future calls for events to be done /// cheaply. #[derive(Clone)] -pub struct TemporalSerai<'a> { - serai: &'a Serai, +pub struct TemporalSerai<'serai> { + serai: &'serai Serai, block: BlockHash, events: Arc>>>>, } @@ -176,7 +179,7 @@ impl Serai { /// /// This will yield an error if the block chosen isn't finalized. This ensures, given an honest /// node, that this scope will be available for the lifetime of this object. - pub async fn as_of<'a>(&'a self, block: BlockHash) -> Result, RpcError> { + pub async fn as_of(&self, block: BlockHash) -> Result, RpcError> { if !self.finalized(block).await? { Err(RpcError::NotFinalized)?; } @@ -184,10 +187,7 @@ impl Serai { } /// Scope this RPC client to the state as of the latest finalized block. - pub async fn as_of_latest_finalized_block<'a>( - &'a self, - block: BlockHash, - ) -> Result, RpcError> { + pub async fn as_of_latest_finalized_block(&self) -> Result, RpcError> { let block = self .block_by_number(self.latest_finalized_block_number().await?) .await? @@ -215,7 +215,7 @@ impl Serai { } } -impl<'a> TemporalSerai<'a> { +impl<'serai> TemporalSerai<'serai> { async fn call( &self, method: &str, @@ -282,4 +282,9 @@ impl<'a> TemporalSerai<'a> { pub fn validator_sets(&self) -> ValidatorSets<'_> { ValidatorSets(self) } + + /// Scope to the in instructions module. + pub fn in_instructions(&self) -> InInstructions<'_> { + InInstructions(self) + } } diff --git a/substrate/client/serai/src/validator_sets.rs b/substrate/client/serai/src/validator_sets.rs index 8c4e440b..52d2c1d2 100644 --- a/substrate/client/serai/src/validator_sets.rs +++ b/substrate/client/serai/src/validator_sets.rs @@ -2,12 +2,14 @@ use borsh::BorshDeserialize; pub use serai_abi::{ primitives::{ - crypto::KeyPair, + crypto::{Signature, KeyPair, EmbeddedEllipticCurveKeys}, network_id::{ExternalNetworkId, NetworkId}, - validator_sets::{Session, ExternalValidatorSet, ValidatorSet}, + validator_sets::{Session, ExternalValidatorSet, ValidatorSet, SlashReport}, balance::Amount, + address::SeraiAddress, }, - validator_sets::Event, + validator_sets::{Call, Event}, + UnsignedCall, Transaction, }; use crate::{RpcError, TemporalSerai}; @@ -24,9 +26,9 @@ fn rpc_network(network: impl Into) -> Result<&'static str, RpcError> /// A `TemporalSerai` scoped to the validator sets module. #[derive(Clone)] -pub struct ValidatorSets<'a>(pub(super) &'a TemporalSerai<'a>); +pub struct ValidatorSets<'serai>(pub(super) &'serai TemporalSerai<'serai>); -impl<'a> ValidatorSets<'a> { +impl<'serai> ValidatorSets<'serai> { /// The events from the validator sets module. pub async fn events(&self) -> Result, RpcError> { Ok( @@ -108,7 +110,7 @@ impl<'a> ValidatorSets<'a> { ) } - /// The stake for the current validators for specified network. + /// The stake for the current validators for the specified network. pub async fn current_stake(&self, network: NetworkId) -> Result, RpcError> { Ok( self @@ -142,4 +144,38 @@ impl<'a> ValidatorSets<'a> { .map(Some) .map_err(|_| RpcError::InvalidNode("validator set's keys weren't a valid key pair".to_string())) } + + /// Create a transaction to set a validator set's keys. + pub fn set_keys( + network: ExternalNetworkId, + key_pair: KeyPair, + signature_participants: bitvec::vec::BitVec, + signature: Signature, + ) -> Transaction { + Transaction::Unsigned { + call: UnsignedCall::try_from(serai_abi::Call::from(Call::set_keys { + network, + key_pair, + signature_participants, + signature, + })) + .expect("`set_keys` wasn't an unsigned call?"), + } + } + + /// Create a transaction to report the slashes for a validator set. + pub fn report_slashes( + network: ExternalNetworkId, + slashes: SlashReport, + signature: Signature, + ) -> Transaction { + Transaction::Unsigned { + call: UnsignedCall::try_from(serai_abi::Call::from(Call::report_slashes { + network, + slashes, + signature, + })) + .expect("`report_slashes` wasn't an unsigned call?"), + } + } } diff --git a/substrate/node/src/rpc/p2p_validators.rs b/substrate/node/src/rpc/p2p_validators.rs index 58d493a2..b203f1a3 100644 --- a/substrate/node/src/rpc/p2p_validators.rs +++ b/substrate/node/src/rpc/p2p_validators.rs @@ -48,7 +48,10 @@ pub(crate) fn module< Err(e) => Err(e)?, }; // Always return the protocol's bootnodes - let mut all_p2p_addresses = crate::chain_spec::bootnode_multiaddrs(id); + let mut all_p2p_addresses = crate::chain_spec::bootnode_multiaddrs(id) + .iter() + .map(ToString::to_string) + .collect::>(); // Additionally returns validators found over the DHT for validator in validators { let mut returned_addresses = authority_discovery @@ -66,9 +69,11 @@ pub(crate) fn module< // It isn't beneficial to use multiple addresses for a single peer here if !returned_addresses.is_empty() { all_p2p_addresses.push( - returned_addresses - .remove(usize::try_from(OsRng.next_u64() >> 32).unwrap() % returned_addresses.len()) - .into(), + libp2p::Multiaddr::from( + returned_addresses + .remove(usize::try_from(OsRng.next_u64() >> 32).unwrap() % returned_addresses.len()), + ) + .to_string(), ); } } diff --git a/substrate/primitives/src/validator_sets/slashes.rs b/substrate/primitives/src/validator_sets/slashes.rs index 8bcf8232..83a59909 100644 --- a/substrate/primitives/src/validator_sets/slashes.rs +++ b/substrate/primitives/src/validator_sets/slashes.rs @@ -217,6 +217,7 @@ pub struct SlashReport( ); /// An error when converting from a `Vec`. +#[derive(Debug)] pub enum FromVecError { /// The source `Vec` was too long to be converted. TooLong,