diff --git a/Cargo.lock b/Cargo.lock index 19303dcd..132d4439 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -602,16 +602,24 @@ checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" [[package]] name = "bitcoin" -version = "0.29.2" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0694ea59225b0c5f3cb405ff3f670e4828358ed26aec49dc352f730f0cb1a8a3" +checksum = "b36f4c848f6bd9ff208128f08751135846cc23ae57d66ab10a22efff1c675f3c" dependencies = [ "bech32 0.9.1", + "bitcoin-private", "bitcoin_hashes", + "hex_lit", "secp256k1", "serde", ] +[[package]] +name = "bitcoin-private" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73290177011694f38ec25e165d0387ab7ea749a4b81cd4c80dae5988229f7a57" + [[package]] name = "bitcoin-serai" version = "0.2.0" @@ -635,10 +643,11 @@ dependencies = [ [[package]] name = "bitcoin_hashes" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90064b8dee6815a6470d60bad07bbbaee885c0e12d04177138fa3291a01b7bc4" +checksum = "5d7066118b13d4b20b23645932dfb3a81ce7e29f95726c2036fa33cd7b092501" dependencies = [ + "bitcoin-private", "serde", ] @@ -918,9 +927,9 @@ dependencies = [ [[package]] name = "cfg-expr" -version = "0.10.3" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0aacacf4d96c24b2ad6eb8ee6df040e4f27b0d0b39a5710c30091baa830485db" +checksum = "732ffa2b10f89dd59538349855f3eaf4032e909361ac4917a52fb43cc70fccf0" dependencies = [ "smallvec", ] @@ -1037,7 +1046,7 @@ version = "0.3.0" dependencies = [ "dalek-ff-group", "digest 0.10.6", - "elliptic-curve 0.13.3", + "elliptic-curve 0.13.4", "ff 0.13.0", "ff-group-tests", "flexible-transcript", @@ -1606,14 +1615,14 @@ dependencies = [ [[package]] name = "curve25519-dalek" -version = "4.0.0-pre.5" +version = "4.0.0-rc.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67bc65846be335cb20f4e52d49a437b773a2c1fdb42b19fc84e79e6f6771536f" +checksum = "8d4ba9852b42210c7538b75484f9daa0655e9a3ac04f693747bb0f02cf3cfe16" dependencies = [ "cfg-if", "fiat-crypto", "packed_simd_2", - "platforms 3.0.2", + "platforms", "subtle", "zeroize", ] @@ -2012,7 +2021,7 @@ dependencies = [ "ff 0.13.0", "flexible-transcript", "group 0.13.0", - "hex-literal", + "hex-literal 0.4.1", "k256", "multiexp", "rand_core 0.6.4", @@ -2086,13 +2095,13 @@ dependencies = [ [[package]] name = "ecdsa" -version = "0.16.4" +version = "0.16.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "106401dadc137d05cb0d4ab4d42be089746aefdfe8992df4d0edcf351c16ddca" +checksum = "298d10b6d24e99de17b92bd41bfe33f4e8530ee7948233eb2a4158f4464d2046" dependencies = [ "der 0.7.3", "digest 0.10.6", - "elliptic-curve 0.13.3", + "elliptic-curve 0.13.4", "rfc6979 0.4.0", "signature 2.1.0", ] @@ -2164,9 +2173,9 @@ dependencies = [ [[package]] name = "elliptic-curve" -version = "0.13.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cdacd4d6ed3f9b98680b679c0e52a823b8a2c7a97358d508fe247f2180c282" +checksum = "75c71eaa367f2e5d556414a8eea812bc62985c879748d6403edabd9cb03f16e7" dependencies = [ "base16ct 0.2.0", "crypto-bigint 0.5.1", @@ -2474,7 +2483,7 @@ dependencies = [ "cargo_metadata", "chrono", "convert_case", - "elliptic-curve 0.13.3", + "elliptic-curve 0.13.4", "ethabi", "generic-array", "getrandom 0.2.9", @@ -2585,7 +2594,7 @@ dependencies = [ "async-trait", "coins-bip32", "coins-bip39", - "elliptic-curve 0.13.3", + "elliptic-curve 0.13.4", "eth-keystore", "ethers-core", "hex", @@ -2854,7 +2863,7 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "parity-scale-codec", ] @@ -2877,7 +2886,7 @@ checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "frame-support", "frame-support-procedural", @@ -2902,7 +2911,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "Inflector", "array-bytes", @@ -2949,7 +2958,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "frame-support", "frame-system", @@ -2977,7 +2986,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "bitflags", "environmental", @@ -3010,7 +3019,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "Inflector", "cfg-expr", @@ -3025,7 +3034,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -3037,7 +3046,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "proc-macro2", "quote", @@ -3047,7 +3056,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "frame-support", "log", @@ -3065,7 +3074,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "parity-scale-codec", "sp-api", @@ -3262,12 +3271,12 @@ dependencies = [ [[package]] name = "gethostname" -version = "0.2.3" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" +checksum = "8a329e22866dd78b35d2c639a4a23d7b950aeae300dfd79f4fb19f74055c2404" dependencies = [ "libc", - "winapi", + "windows 0.43.0", ] [[package]] @@ -3510,6 +3519,18 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + +[[package]] +name = "hex_lit" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3011d1213f159867b13cfd6ac92d2cd5f1345762c63be3554e84092d85a50bbd" + [[package]] name = "hkdf" version = "0.12.3" @@ -4142,8 +4163,8 @@ version = "0.13.0" source = "git+https://github.com/RustCrypto/elliptic-curves?rev=8958c2f535cc973a7cf216bcbad1f797ae6f9cdd#8958c2f535cc973a7cf216bcbad1f797ae6f9cdd" dependencies = [ "cfg-if", - "ecdsa 0.16.4", - "elliptic-curve 0.13.3", + "ecdsa 0.16.5", + "elliptic-curve 0.13.4", "once_cell", "sha2 0.10.6", "signature 2.1.0", @@ -4388,7 +4409,7 @@ dependencies = [ "libp2p-core 0.38.0", "libp2p-swarm", "log", - "lru", + "lru 0.8.1", "prost", "prost-build", "prost-codec", @@ -4872,6 +4893,15 @@ dependencies = [ "hashbrown 0.12.3", ] +[[package]] +name = "lru" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e7d46de488603ffdd5f30afbc64fbba2378214a2c3a2fb83abf3d33126df17" +dependencies = [ + "hashbrown 0.13.2", +] + [[package]] name = "lru-cache" version = "0.1.2" @@ -5138,7 +5168,7 @@ dependencies = [ "curve25519-dalek 3.2.0", "fixed-hash 0.7.0", "hex", - "hex-literal", + "hex-literal 0.3.4", "sealed", "serde", "serde-big-array", @@ -5185,7 +5215,7 @@ dependencies = [ "serde", "serde_json", "tracing", - "uuid 1.3.0", + "uuid 1.3.1", ] [[package]] @@ -5202,7 +5232,7 @@ dependencies = [ "futures", "group 0.13.0", "hex", - "hex-literal", + "hex-literal 0.4.1", "lazy_static", "modular-frost", "monero-epee-bin-serde", @@ -5316,9 +5346,9 @@ dependencies = [ [[package]] name = "multihash-derive" -version = "0.8.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6d4752e6230d8ef7adf7bd5d8c4b1f6561c1014c5ba9a37445ccefe18aa1db" +checksum = "fc076939022111618a5026d3be019fd8b366e76314538ff9a1b59ffbcbf98bcd" dependencies = [ "proc-macro-crate", "proc-macro-error", @@ -5377,9 +5407,9 @@ dependencies = [ [[package]] name = "names" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7d66043b25d4a6cccb23619d10c19c25304b355a7dccd4a8e11423dd2382146" +checksum = "7bddcd3bf5144b6392de80e04c347cd7fab2508f6df16a85fc496ecd5cec39bc" dependencies = [ "rand 0.8.5", ] @@ -5749,8 +5779,8 @@ name = "p256" version = "0.13.0" source = "git+https://github.com/RustCrypto/elliptic-curves?rev=8958c2f535cc973a7cf216bcbad1f797ae6f9cdd#8958c2f535cc973a7cf216bcbad1f797ae6f9cdd" dependencies = [ - "ecdsa 0.16.4", - "elliptic-curve 0.13.3", + "ecdsa 0.16.5", + "elliptic-curve 0.13.4", "primeorder", "sha2 0.10.6", ] @@ -5788,7 +5818,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5803,7 +5833,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "frame-support", "frame-system", @@ -5819,7 +5849,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "frame-support", "frame-system", @@ -5833,7 +5863,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5857,7 +5887,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5872,7 +5902,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5895,7 +5925,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "frame-support", "frame-system", @@ -5916,7 +5946,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5934,7 +5964,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "frame-support", "frame-system", @@ -5950,7 +5980,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -5966,7 +5996,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6363,12 +6393,6 @@ version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" -[[package]] -name = "platforms" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8d0eef3571242013a0d5dc84861c3ae4a652e56e12adf8bdc26ff5f8cb34c94" - [[package]] name = "platforms" version = "3.0.2" @@ -6483,7 +6507,7 @@ name = "primeorder" version = "0.13.0" source = "git+https://github.com/RustCrypto/elliptic-curves?rev=8958c2f535cc973a7cf216bcbad1f797ae6f9cdd#8958c2f535cc973a7cf216bcbad1f797ae6f9cdd" dependencies = [ - "elliptic-curve 0.13.3", + "elliptic-curve 0.13.4", ] [[package]] @@ -6502,12 +6526,12 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "1.1.3" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ - "thiserror", - "toml 0.5.11", + "once_cell", + "toml_edit", ] [[package]] @@ -7378,7 +7402,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "log", "sp-core", @@ -7389,7 +7413,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "async-trait", "futures", @@ -7417,7 +7441,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "futures", "futures-timer", @@ -7440,7 +7464,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -7455,7 +7479,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "memmap2", "sc-chain-spec-derive", @@ -7474,7 +7498,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -7485,7 +7509,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "array-bytes", "chrono", @@ -7525,7 +7549,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "fnv", "futures", @@ -7551,7 +7575,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "hash-db", "kvdb", @@ -7577,7 +7601,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "async-trait", "futures", @@ -7602,7 +7626,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "async-trait", "fork-tree", @@ -7641,7 +7665,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "fork-tree", "parity-scale-codec", @@ -7654,7 +7678,7 @@ dependencies = [ [[package]] name = "sc-consensus-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "ahash 0.8.3", "array-bytes", @@ -7694,7 +7718,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "async-trait", "futures", @@ -7717,9 +7741,9 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ - "lru", + "lru 0.9.0", "parity-scale-codec", "parking_lot 0.12.1", "sc-executor-common", @@ -7741,7 +7765,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "sc-allocator", "sp-maybe-compressed-blob", @@ -7754,7 +7778,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "log", "sc-allocator", @@ -7767,7 +7791,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "anyhow", "cfg-if", @@ -7785,7 +7809,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "ansi_term", "futures", @@ -7801,7 +7825,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "array-bytes", "async-trait", @@ -7816,7 +7840,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "array-bytes", "async-channel", @@ -7831,7 +7855,7 @@ dependencies = [ "libp2p", "linked_hash_set", "log", - "lru", + "lru 0.9.0", "mockall", "parity-scale-codec", "parking_lot 0.12.1", @@ -7860,7 +7884,7 @@ dependencies = [ [[package]] name = "sc-network-bitswap" version = "0.10.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "cid", "futures", @@ -7880,7 +7904,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "array-bytes", "async-trait", @@ -7908,14 +7932,14 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "ahash 0.8.3", "futures", "futures-timer", "libp2p", "log", - "lru", + "lru 0.9.0", "sc-network", "sc-network-common", "sc-peerset", @@ -7927,7 +7951,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "array-bytes", "futures", @@ -7949,7 +7973,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "array-bytes", "async-trait", @@ -7958,7 +7982,7 @@ dependencies = [ "futures-timer", "libp2p", "log", - "lru", + "lru 0.9.0", "mockall", "parity-scale-codec", "prost", @@ -7983,7 +8007,7 @@ dependencies = [ [[package]] name = "sc-network-transactions" version = "0.10.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "array-bytes", "futures", @@ -8003,7 +8027,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "array-bytes", "bytes", @@ -8034,7 +8058,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "futures", "libp2p", @@ -8047,7 +8071,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8056,7 +8080,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "futures", "jsonrpsee", @@ -8086,7 +8110,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -8105,7 +8129,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "http", "jsonrpsee", @@ -8120,7 +8144,7 @@ dependencies = [ [[package]] name = "sc-rpc-spec-v2" version = "0.10.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "array-bytes", "futures", @@ -8146,7 +8170,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "async-trait", "directories", @@ -8212,7 +8236,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "log", "parity-scale-codec", @@ -8223,7 +8247,7 @@ dependencies = [ [[package]] name = "sc-storage-monitor" version = "0.1.0" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "clap 4.2.1", "fs4", @@ -8239,7 +8263,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "futures", "libc", @@ -8258,7 +8282,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "chrono", "futures", @@ -8277,7 +8301,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "ansi_term", "atty", @@ -8308,7 +8332,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -8319,7 +8343,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "async-trait", "futures", @@ -8346,7 +8370,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "async-trait", "futures", @@ -8360,7 +8384,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "async-channel", "futures", @@ -8587,9 +8611,9 @@ dependencies = [ [[package]] name = "secp256k1" -version = "0.24.3" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b1629c9c557ef9b293568b338dddfc8208c98a18c59d722a9d53f859d9c9b62" +checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f" dependencies = [ "bitcoin_hashes", "rand 0.8.5", @@ -8599,9 +8623,9 @@ dependencies = [ [[package]] name = "secp256k1-sys" -version = "0.6.1" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83080e2c2fc1006e625be82e5d1eb6a43b7fd9578b617fcc55814daf286bba4b" +checksum = "70a129b9e9efbfb223753b9163c4ab3b13cff7fd9c7f010fbac25ab4099fa07e" dependencies = [ "cc", ] @@ -9005,14 +9029,14 @@ checksum = "5e9f0ab6ef7eb7353d9119c170a436d1bf248eea575ac42d19d12f4e34130831" [[package]] name = "snow" -version = "0.9.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "774d05a3edae07ce6d68ea6984f3c05e9bba8927e3dd591e3b479e5b03213d0d" +checksum = "5ccba027ba85743e09d15c03296797cad56395089b832b48b5a5217880f57733" dependencies = [ "aes-gcm 0.9.4", "blake2", "chacha20poly1305", - "curve25519-dalek 4.0.0-pre.5", + "curve25519-dalek 4.0.0-rc.1", "rand_core 0.6.4", "ring", "rustc_version", @@ -9063,7 +9087,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "hash-db", "log", @@ -9081,7 +9105,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "Inflector", "blake2", @@ -9095,7 +9119,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "7.0.0" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "parity-scale-codec", "scale-info", @@ -9108,7 +9132,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "6.0.0" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "integer-sqrt", "num-traits", @@ -9122,7 +9146,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "parity-scale-codec", "scale-info", @@ -9135,7 +9159,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "parity-scale-codec", "sp-api", @@ -9147,11 +9171,11 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "futures", "log", - "lru", + "lru 0.9.0", "parity-scale-codec", "parking_lot 0.12.1", "sp-api", @@ -9165,7 +9189,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "async-trait", "futures", @@ -9180,7 +9204,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "async-trait", "merlin", @@ -9203,7 +9227,7 @@ dependencies = [ [[package]] name = "sp-consensus-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "finality-grandpa", "log", @@ -9221,7 +9245,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "parity-scale-codec", "scale-info", @@ -9233,7 +9257,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "parity-scale-codec", "scale-info", @@ -9246,7 +9270,7 @@ dependencies = [ [[package]] name = "sp-core" version = "7.0.0" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "array-bytes", "bitflags", @@ -9289,7 +9313,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "5.0.0" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "blake2b_simd", "byteorder", @@ -9318,7 +9342,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "proc-macro2", "quote", @@ -9329,7 +9353,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -9338,7 +9362,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "5.0.0" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "proc-macro2", "quote", @@ -9348,7 +9372,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.13.0" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "environmental", "parity-scale-codec", @@ -9359,7 +9383,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9374,7 +9398,7 @@ dependencies = [ [[package]] name = "sp-io" version = "7.0.0" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "bytes", "ed25519", @@ -9400,7 +9424,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "7.0.0" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "lazy_static", "sp-core", @@ -9411,7 +9435,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.13.0" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "futures", "merlin", @@ -9427,16 +9451,16 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "thiserror", - "zstd", + "zstd 0.12.3+zstd.1.5.2", ] [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "sp-api", "sp-core", @@ -9446,7 +9470,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "5.0.0" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "backtrace", "lazy_static", @@ -9456,7 +9480,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "rustc-hash", "serde", @@ -9466,7 +9490,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "7.0.0" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "either", "hash256-std-hasher", @@ -9488,7 +9512,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "7.0.0" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "bytes", "impl-trait-for-tuples", @@ -9506,7 +9530,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "6.0.0" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "Inflector", "proc-macro-crate", @@ -9518,7 +9542,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "parity-scale-codec", "scale-info", @@ -9532,7 +9556,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "parity-scale-codec", "scale-info", @@ -9544,7 +9568,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.13.0" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "hash-db", "log", @@ -9564,7 +9588,7 @@ dependencies = [ [[package]] name = "sp-std" version = "5.0.0" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" [[package]] name = "sp-std" @@ -9575,7 +9599,7 @@ checksum = "af0ee286f98455272f64ac5bb1384ff21ac029fbb669afbaf48477faff12760e" [[package]] name = "sp-storage" version = "7.0.0" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9588,7 +9612,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "async-trait", "futures-timer", @@ -9603,7 +9627,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "6.0.0" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "parity-scale-codec", "sp-std 5.0.0", @@ -9615,7 +9639,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "sp-api", "sp-runtime", @@ -9624,7 +9648,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "async-trait", "log", @@ -9640,7 +9664,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "7.0.0" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "ahash 0.8.3", "hash-db", @@ -9663,7 +9687,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9680,7 +9704,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -9691,7 +9715,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "7.0.0" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "anyhow", "impl-trait-for-tuples", @@ -9705,7 +9729,7 @@ dependencies = [ [[package]] name = "sp-weights" version = "4.0.0" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "parity-scale-codec", "scale-info", @@ -9873,15 +9897,15 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ - "platforms 2.0.0", + "platforms", ] [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "frame-system-rpc-runtime-api", "futures", @@ -9900,7 +9924,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "hyper", "log", @@ -9912,7 +9936,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/serai-dex/substrate#638c672a7e69b57dc6e19deb9c451af79f72142d" +source = "git+https://github.com/serai-dex/substrate#a22112aa10bf719cd37ae036d0b3580567e567e1" dependencies = [ "ansi_term", "build-helper", @@ -9921,7 +9945,7 @@ dependencies = [ "sp-maybe-compressed-blob", "strum", "tempfile", - "toml 0.5.11", + "toml 0.7.3", "walkdir", "wasm-opt", ] @@ -10863,9 +10887,9 @@ dependencies = [ [[package]] name = "uuid" -version = "1.3.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79" +checksum = "5b55a3fef2a1e3b3a00ce878640918820d3c51081576ac657d23af9fc7928fdb" dependencies = [ "getrandom 0.2.9", ] @@ -11040,18 +11064,18 @@ checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" [[package]] name = "wasm-instrument" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa1dafb3e60065305741e83db35c6c2584bb3725b692b5b66148a38d72ace6cd" +checksum = "2a47ecb37b9734d1085eaa5ae1a81e60801fd8c28d4cabdd8aedb982021918bc" dependencies = [ "parity-wasm", ] [[package]] name = "wasm-opt" -version = "0.111.0" +version = "0.112.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84a303793cbc01fb96551badfc7367db6007396bba6bac97936b3c8b6f7fdb41" +checksum = "87fef6d0d508f08334e0ab0e6877feb4c0ecb3956bcf2cb950699b22fedf3e9c" dependencies = [ "anyhow", "libc", @@ -11065,9 +11089,9 @@ dependencies = [ [[package]] name = "wasm-opt-cxx-sys" -version = "0.111.0" +version = "0.112.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c9deb56f8a9f2ec177b3bd642a8205621835944ed5da55f2388ef216aca5a4" +checksum = "bc816bbc1596c8f2e8127e137a760c798023ef3d378f2ae51f0f1840e2dfa445" dependencies = [ "anyhow", "cxx", @@ -11077,15 +11101,14 @@ dependencies = [ [[package]] name = "wasm-opt-sys" -version = "0.111.0" +version = "0.112.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4432e28b542738a9776cedf92e8a99d8991c7b4667ee2c7ccddfb479dd2856a7" +checksum = "40199e4f68ef1071b3c6d0bd8026a12b481865d4b9e49c156932ea9a6234dd14" dependencies = [ "anyhow", "cc", "cxx", "cxx-build", - "regex", ] [[package]] @@ -11201,7 +11224,7 @@ dependencies = [ "sha2 0.10.6", "toml 0.5.11", "windows-sys 0.42.0", - "zstd", + "zstd 0.11.2+zstd.1.5.2", ] [[package]] @@ -11480,7 +11503,7 @@ dependencies = [ "tokio", "turn", "url", - "uuid 1.3.0", + "uuid 1.3.1", "waitgroup", "webrtc-mdns", "webrtc-util", @@ -11648,6 +11671,21 @@ dependencies = [ "windows_x86_64_msvc 0.34.0", ] +[[package]] +name = "windows" +version = "0.43.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04662ed0e3e5630dfa9b26e4cb823b817f1a9addda855d973a9458c236556244" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + [[package]] name = "windows" version = "0.48.0" @@ -12018,7 +12056,7 @@ dependencies = [ "pbkdf2 0.11.0", "sha1", "time 0.3.20", - "zstd", + "zstd 0.11.2+zstd.1.5.2", ] [[package]] @@ -12027,7 +12065,16 @@ version = "0.11.2+zstd.1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" dependencies = [ - "zstd-safe", + "zstd-safe 5.0.2+zstd.1.5.2", +] + +[[package]] +name = "zstd" +version = "0.12.3+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76eea132fb024e0e13fd9c2f5d5d595d8a967aa72382ac2f9d39fcc95afd0806" +dependencies = [ + "zstd-safe 6.0.5+zstd.1.5.4", ] [[package]] @@ -12040,6 +12087,16 @@ dependencies = [ "zstd-sys", ] +[[package]] +name = "zstd-safe" +version = "6.0.5+zstd.1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d56d9e60b4b1758206c238a10165fbcae3ca37b01744e394c463463f6529d23b" +dependencies = [ + "libc", + "zstd-sys", +] + [[package]] name = "zstd-sys" version = "2.0.8+zstd.1.5.5" diff --git a/coins/bitcoin/Cargo.toml b/coins/bitcoin/Cargo.toml index 83c0adcd..84614879 100644 --- a/coins/bitcoin/Cargo.toml +++ b/coins/bitcoin/Cargo.toml @@ -16,8 +16,8 @@ rand_core = "0.6" sha2 = "0.10" -secp256k1 = { version = "0.24", features = ["global-context"] } -bitcoin = { version = "0.29", features = ["serde"] } +secp256k1 = { version = "0.27", features = ["global-context"] } +bitcoin = { version = "0.30", features = ["serde"] } k256 = { version = "0.13", features = ["arithmetic"] } transcript = { package = "flexible-transcript", path = "../../crypto/transcript", version = "0.3", features = ["recommended"] } diff --git a/coins/bitcoin/src/crypto.rs b/coins/bitcoin/src/crypto.rs index 827530d2..54052a91 100644 --- a/coins/bitcoin/src/crypto.rs +++ b/coins/bitcoin/src/crypto.rs @@ -23,7 +23,7 @@ use frost::{ algorithm::{Hram as HramTrait, Algorithm, Schnorr as FrostSchnorr}, }; -use bitcoin::XOnlyPublicKey; +use bitcoin::key::XOnlyPublicKey; /// Get the x coordinate of a non-infinity, even point. Panics on invalid input. pub fn x(key: &ProjectivePoint) -> [u8; 32] { diff --git a/coins/bitcoin/src/rpc.rs b/coins/bitcoin/src/rpc.rs index 41ece2e9..ba2c8a0f 100644 --- a/coins/bitcoin/src/rpc.rs +++ b/coins/bitcoin/src/rpc.rs @@ -6,10 +6,7 @@ use serde::{Deserialize, de::DeserializeOwned}; use serde_json::json; use bitcoin::{ - hashes::{ - Hash, - hex::{FromHex, ToHex}, - }, + hashes::{Hash, hex::FromHex}, consensus::encode, Txid, Transaction, BlockHash, Block, }; @@ -88,8 +85,11 @@ impl Rpc { /// Get the hash of a block by the block's number. pub async fn get_block_hash(&self, number: usize) -> Result<[u8; 32], RpcError> { - let mut hash = - self.rpc_call::("getblockhash", json!([number])).await?.as_hash().into_inner(); + let mut hash = *self + .rpc_call::("getblockhash", json!([number])) + .await? + .as_raw_hash() + .as_byte_array(); // bitcoin stores the inner bytes in reverse order. hash.reverse(); Ok(hash) @@ -101,16 +101,16 @@ impl Rpc { struct Number { height: usize, } - Ok(self.rpc_call::("getblockheader", json!([hash.to_hex()])).await?.height) + Ok(self.rpc_call::("getblockheader", json!([hex::encode(hash)])).await?.height) } /// Get a block by its hash. pub async fn get_block(&self, hash: &[u8; 32]) -> Result { - let hex = self.rpc_call::("getblock", json!([hash.to_hex(), 0])).await?; + let hex = self.rpc_call::("getblock", json!([hex::encode(hash), 0])).await?; let bytes: Vec = FromHex::from_hex(&hex).map_err(|_| RpcError::InvalidResponse)?; let block: Block = encode::deserialize(&bytes).map_err(|_| RpcError::InvalidResponse)?; - let mut block_hash = block.block_hash().as_hash().into_inner(); + let mut block_hash = *block.block_hash().as_raw_hash().as_byte_array(); block_hash.reverse(); if hash != &block_hash { Err(RpcError::InvalidResponse)?; @@ -130,11 +130,11 @@ impl Rpc { /// Get a transaction by its hash. pub async fn get_transaction(&self, hash: &[u8; 32]) -> Result { - let hex = self.rpc_call::("getrawtransaction", json!([hash.to_hex()])).await?; + let hex = self.rpc_call::("getrawtransaction", json!([hex::encode(hash)])).await?; let bytes: Vec = FromHex::from_hex(&hex).map_err(|_| RpcError::InvalidResponse)?; let tx: Transaction = encode::deserialize(&bytes).map_err(|_| RpcError::InvalidResponse)?; - let mut tx_hash = tx.txid().as_hash().into_inner(); + let mut tx_hash = *tx.txid().as_raw_hash().as_byte_array(); tx_hash.reverse(); if hash != &tx_hash { Err(RpcError::InvalidResponse)?; diff --git a/coins/bitcoin/src/wallet/mod.rs b/coins/bitcoin/src/wallet/mod.rs index 51787614..7f295d7f 100644 --- a/coins/bitcoin/src/wallet/mod.rs +++ b/coins/bitcoin/src/wallet/mod.rs @@ -14,8 +14,8 @@ use frost::{ use bitcoin::{ consensus::encode::{Decodable, serialize}, - schnorr::TweakedPublicKey, - OutPoint, Script, TxOut, Transaction, Block, Network, Address, + key::TweakedPublicKey, + OutPoint, ScriptBuf, TxOut, Transaction, Block, Network, Address, }; use crate::crypto::{x_only, make_even}; @@ -95,7 +95,7 @@ impl ReceivedOutput { #[derive(Clone, Debug)] pub struct Scanner { key: ProjectivePoint, - scripts: HashMap, + scripts: HashMap, } impl Scanner { diff --git a/coins/bitcoin/src/wallet/send.rs b/coins/bitcoin/src/wallet/send.rs index a342c394..33c196c6 100644 --- a/coins/bitcoin/src/wallet/send.rs +++ b/coins/bitcoin/src/wallet/send.rs @@ -13,9 +13,10 @@ use k256::{elliptic_curve::sec1::ToEncodedPoint, Scalar}; use frost::{curve::Secp256k1, Participant, ThresholdKeys, FrostError, sign::*}; use bitcoin::{ - hashes::Hash, - util::sighash::{SchnorrSighashType, SighashCache, Prevouts}, - OutPoint, Script, Sequence, Witness, TxIn, TxOut, PackedLockTime, Transaction, Network, Address, + sighash::{TapSighashType, SighashCache, Prevouts}, + absolute::LockTime, + script::{PushBytesBuf, ScriptBuf}, + OutPoint, Sequence, Witness, TxIn, TxOut, Transaction, Network, Address, }; use crate::{ @@ -61,18 +62,18 @@ impl SignableTransaction { // Expand this a full transaction in order to use the bitcoin library's weight function let mut tx = Transaction { version: 2, - lock_time: PackedLockTime::ZERO, + lock_time: LockTime::ZERO, input: vec![ TxIn { // This is a fixed size // See https://developer.bitcoin.org/reference/transactions.html#raw-transaction-format previous_output: OutPoint::default(), // This is empty for a Taproot spend - script_sig: Script::new(), + script_sig: ScriptBuf::new(), // This is fixed size, yet we do use Sequence::MAX sequence: Sequence::MAX, // Our witnesses contains a single 64-byte signature - witness: Witness::from_vec(vec![vec![0; 64]]) + witness: Witness::from_slice(&[vec![0; 64]]) }; inputs ], @@ -137,7 +138,7 @@ impl SignableTransaction { .iter() .map(|input| TxIn { previous_output: input.outpoint, - script_sig: Script::new(), + script_sig: ScriptBuf::new(), sequence: Sequence::MAX, witness: Witness::new(), }) @@ -151,7 +152,13 @@ impl SignableTransaction { // Add the OP_RETURN output if let Some(data) = data { - tx_outs.push(TxOut { value: 0, script_pubkey: Script::new_op_return(&data) }) + tx_outs.push(TxOut { + value: 0, + script_pubkey: ScriptBuf::new_op_return( + &PushBytesBuf::try_from(data) + .expect("data didn't fit into PushBytes depsite being checked"), + ), + }) } let mut weight = Self::calculate_weight(tx_ins.len(), payments, None); @@ -182,12 +189,7 @@ impl SignableTransaction { } Ok(SignableTransaction { - tx: Transaction { - version: 2, - lock_time: PackedLockTime::ZERO, - input: tx_ins, - output: tx_outs, - }, + tx: Transaction { version: 2, lock_time: LockTime::ZERO, input: tx_ins, output: tx_outs }, offsets, prevouts: inputs.drain(..).map(|input| input.output).collect(), needed_fee, @@ -208,7 +210,7 @@ impl SignableTransaction { // Transcript the inputs and outputs let tx = &self.tx; for input in &tx.input { - transcript.append_message(b"input_hash", input.previous_output.txid.as_hash().into_inner()); + transcript.append_message(b"input_hash", input.previous_output.txid); transcript.append_message(b"input_output_index", input.previous_output.vout.to_le_bytes()); } for payment in &tx.output { @@ -335,9 +337,10 @@ impl SignMachine for TransactionSignMachine { .map(|(i, sig)| { let (sig, share) = sig.sign( commitments[i].clone(), - &cache - .taproot_key_spend_signature_hash(i, &prevouts, SchnorrSighashType::Default) - .unwrap(), + cache + .taproot_key_spend_signature_hash(i, &prevouts, TapSighashType::Default) + .unwrap() + .as_ref(), )?; shares.push(share); Ok(sig) @@ -369,7 +372,7 @@ impl SignatureMachine for TransactionSignatureMachine { shares.iter_mut().map(|(l, shares)| (*l, shares.remove(0))).collect::>(), )?; - let mut witness: Witness = Witness::new(); + let mut witness = Witness::new(); witness.push(sig.as_ref()); input.witness = witness; } diff --git a/coins/bitcoin/tests/rpc.rs b/coins/bitcoin/tests/rpc.rs index aaaba703..21f47e87 100644 --- a/coins/bitcoin/tests/rpc.rs +++ b/coins/bitcoin/tests/rpc.rs @@ -18,7 +18,7 @@ async_sequential! { // Test get_block by checking the received block's hash matches the request let block = rpc.get_block(&hash).await.unwrap(); // Hashes are stored in reverse. It's bs from Satoshi - let mut block_hash = block.block_hash().as_hash().into_inner(); + let mut block_hash = *block.block_hash().as_raw_hash().as_byte_array(); block_hash.reverse(); assert_eq!(hash, block_hash); } diff --git a/coins/bitcoin/tests/wallet.rs b/coins/bitcoin/tests/wallet.rs index 5cedfb27..ab614573 100644 --- a/coins/bitcoin/tests/wallet.rs +++ b/coins/bitcoin/tests/wallet.rs @@ -20,11 +20,9 @@ use frost::{ use bitcoin_serai::{ bitcoin::{ hashes::Hash as HashTrait, - blockdata::{ - opcodes::all::OP_RETURN, - script::{Instruction, Instructions}, - }, - OutPoint, Script, TxOut, Transaction, Network, Address, + blockdata::opcodes::all::OP_RETURN, + script::{PushBytesBuf, Instruction, Instructions, Script}, + OutPoint, TxOut, Transaction, Network, Address, }, wallet::{tweak_keys, address, ReceivedOutput, Scanner, TransactionError, SignableTransaction}, rpc::Rpc, @@ -54,7 +52,7 @@ async fn send_and_get_output(rpc: &Rpc, scanner: &Scanner, key: ProjectivePoint) rpc .rpc_call::>( "generatetoaddress", - serde_json::json!([100, Address::p2sh(&Script::new(), Network::Regtest).unwrap()]), + serde_json::json!([100, Address::p2sh(Script::empty(), Network::Regtest).unwrap()]), ) .await .unwrap(); @@ -306,7 +304,7 @@ async_sequential! { // This also tests send_raw_transaction and get_transaction, which the RPC test can't // effectively test rpc.send_raw_transaction(&tx).await.unwrap(); - let mut hash = tx.txid().as_hash().into_inner(); + let mut hash = *tx.txid().as_raw_hash().as_byte_array(); hash.reverse(); assert_eq!(tx, rpc.get_transaction(&hash).await.unwrap()); } @@ -338,7 +336,10 @@ async_sequential! { assert!(tx.output[0].script_pubkey.is_op_return()); let check = |mut instructions: Instructions| { assert_eq!(instructions.next().unwrap().unwrap(), Instruction::Op(OP_RETURN)); - assert_eq!(instructions.next().unwrap().unwrap(), Instruction::PushBytes(&data)); + assert_eq!( + instructions.next().unwrap().unwrap(), + Instruction::PushBytes(&PushBytesBuf::try_from(data.clone()).unwrap()), + ); assert!(instructions.next().is_none()); }; check(tx.output[0].script_pubkey.instructions()); diff --git a/coins/monero/Cargo.toml b/coins/monero/Cargo.toml index c95f60da..30809ae8 100644 --- a/coins/monero/Cargo.toml +++ b/coins/monero/Cargo.toml @@ -55,7 +55,7 @@ dalek-ff-group = { path = "../../crypto/dalek-ff-group", version = "0.3" } monero-generators = { path = "generators", version = "0.3" } [dev-dependencies] -hex-literal = "0.3" +hex-literal = "0.4" tokio = { version = "1", features = ["full"] } monero-rpc = "0.3" diff --git a/crypto/dleq/Cargo.toml b/crypto/dleq/Cargo.toml index 2a83feb1..295f52fd 100644 --- a/crypto/dleq/Cargo.toml +++ b/crypto/dleq/Cargo.toml @@ -29,7 +29,7 @@ group = "0.13" multiexp = { path = "../multiexp", version = "0.3", features = ["batch"], optional = true } [dev-dependencies] -hex-literal = "0.3" +hex-literal = "0.4" blake2 = "0.10" diff --git a/processor/Cargo.toml b/processor/Cargo.toml index 66fbdf90..24927166 100644 --- a/processor/Cargo.toml +++ b/processor/Cargo.toml @@ -38,7 +38,7 @@ transcript = { package = "flexible-transcript", path = "../crypto/transcript" } frost = { package = "modular-frost", path = "../crypto/frost", features = ["ristretto"] } # Bitcoin -secp256k1 = { version = "0.24", features = ["global-context", "rand-std"], optional = true } +secp256k1 = { version = "0.27", features = ["global-context", "rand-std"], optional = true } k256 = { version = "0.13", features = ["arithmetic"], optional = true } bitcoin-serai = { path = "../coins/bitcoin", optional = true } diff --git a/processor/src/coins/bitcoin.rs b/processor/src/coins/bitcoin.rs index 870584b0..04e9a0af 100644 --- a/processor/src/coins/bitcoin.rs +++ b/processor/src/coins/bitcoin.rs @@ -16,10 +16,8 @@ use bitcoin_serai::{ bitcoin::{ hashes::Hash as HashTrait, consensus::{Encodable, Decodable}, - psbt::serialize::Serialize, - OutPoint, - blockdata::script::Instruction, - Transaction, Block, Network, + script::Instruction, + OutPoint, Transaction, Block, Network, }, wallet::{ tweak_keys, address, ReceivedOutput, Scanner, TransactionError, @@ -31,9 +29,11 @@ use bitcoin_serai::{ #[cfg(test)] use bitcoin_serai::bitcoin::{ secp256k1::{SECP256K1, SecretKey, Message}, - PrivateKey, PublicKey, EcdsaSighashType, - blockdata::script::Builder, - PackedLockTime, Sequence, Script, Witness, TxIn, TxOut, Address as BAddress, + PrivateKey, PublicKey, + sighash::{EcdsaSighashType, SighashCache}, + script::{PushBytesBuf, Builder}, + absolute::LockTime, + Sequence, Script, Witness, TxIn, TxOut, Address as BAddress, }; use serai_client::{ @@ -134,19 +134,21 @@ pub struct Fee(u64); impl TransactionTrait for Transaction { type Id = [u8; 32]; fn id(&self) -> Self::Id { - let mut hash = self.txid().as_hash().into_inner(); + let mut hash = *self.txid().as_raw_hash().as_byte_array(); hash.reverse(); hash } fn serialize(&self) -> Vec { - Serialize::serialize(self) + let mut buf = vec![]; + self.consensus_encode(&mut buf).unwrap(); + buf } #[cfg(test)] async fn fee(&self, coin: &Bitcoin) -> u64 { let mut value = 0; for input in &self.input { let output = input.previous_output; - let mut hash = output.txid.as_hash().into_inner(); + let mut hash = *output.txid.as_raw_hash().as_byte_array(); hash.reverse(); value += coin.rpc.get_transaction(&hash).await.unwrap().output [usize::try_from(output.vout).unwrap()] @@ -191,7 +193,7 @@ impl Eq for SignableTransaction {} impl BlockTrait for Block { type Id = [u8; 32]; fn id(&self) -> Self::Id { - let mut hash = self.block_hash().as_hash().into_inner(); + let mut hash = *self.block_hash().as_raw_hash().as_byte_array(); hash.reverse(); hash } @@ -350,7 +352,7 @@ impl Coin for Bitcoin { for output in &tx.output { if output.script_pubkey.is_op_return() { match output.script_pubkey.instructions_minimal().last() { - Some(Ok(Instruction::PushBytes(data))) => return data.to_vec(), + Some(Ok(Instruction::PushBytes(data))) => return data.as_bytes().to_vec(), _ => continue, } } @@ -552,7 +554,7 @@ impl Coin for Bitcoin { .rpc .rpc_call::>( "generatetoaddress", - serde_json::json!([1, BAddress::p2sh(&Script::new(), Network::Regtest).unwrap()]), + serde_json::json!([1, BAddress::p2sh(Script::empty(), Network::Regtest).unwrap()]), ) .await .unwrap(); @@ -579,10 +581,10 @@ impl Coin for Bitcoin { let tx = self.get_block(new_block).await.unwrap().txdata.swap_remove(0); let mut tx = Transaction { version: 2, - lock_time: PackedLockTime::ZERO, + lock_time: LockTime::ZERO, input: vec![TxIn { previous_output: OutPoint { txid: tx.txid(), vout: 0 }, - script_sig: Script::default(), + script_sig: Script::empty().into(), sequence: Sequence(u32::MAX), witness: Witness::default(), }], @@ -595,15 +597,20 @@ impl Coin for Bitcoin { let mut der = SECP256K1 .sign_ecdsa_low_r( &Message::from( - tx.signature_hash(0, &main_addr.script_pubkey(), EcdsaSighashType::All.to_u32()) - .as_hash(), + SighashCache::new(&tx) + .legacy_signature_hash(0, &main_addr.script_pubkey(), EcdsaSighashType::All.to_u32()) + .unwrap() + .to_raw_hash(), ), &private_key.inner, ) .serialize_der() .to_vec(); der.push(1); - tx.input[0].script_sig = Builder::new().push_slice(&der).push_key(&public_key).into_script(); + tx.input[0].script_sig = Builder::new() + .push_slice(PushBytesBuf::try_from(der).unwrap()) + .push_key(&public_key) + .into_script(); let block = self.get_latest_block_number().await.unwrap() + 1; self.rpc.send_raw_transaction(&tx).await.unwrap(); diff --git a/processor/src/key_gen.rs b/processor/src/key_gen.rs index 06286d6d..65c75488 100644 --- a/processor/src/key_gen.rs +++ b/processor/src/key_gen.rs @@ -164,7 +164,7 @@ impl KeyGen { let rng = |label, id: KeyGenId| { let mut transcript = RecommendedTranscript::new(label); - transcript.append_message(b"entropy", self.entropy.as_ref()); + transcript.append_message(b"entropy", &self.entropy); transcript.append_message(b"context", context(&id)); ChaCha20Rng::from_seed(transcript.rng_seed(b"rng")) }; diff --git a/processor/src/main.rs b/processor/src/main.rs index 02f80c1e..2a74fd01 100644 --- a/processor/src/main.rs +++ b/processor/src/main.rs @@ -178,17 +178,19 @@ async fn run(raw_db: D, coin: C, mut coordinato } let bytes = Zeroizing::new(hex::decode(entropy).expect("entropy wasn't hex-formatted")); let mut entropy = Zeroizing::new([0; 32]); - entropy.as_mut().copy_from_slice(bytes.as_ref()); + let entropy_mut: &mut [u8] = entropy.as_mut(); + entropy_mut.copy_from_slice(bytes.as_ref()); let mut transcript = RecommendedTranscript::new(b"Serai Processor Entropy"); - transcript.append_message(b"entropy", entropy.as_ref()); + transcript.append_message(b"entropy", entropy); transcript }; let mut entropy = |label| { let mut challenge = entropy_transcript.challenge(label); let mut res = Zeroizing::new([0; 32]); - res.as_mut().copy_from_slice(&challenge[.. 32]); + let res_mut: &mut [u8] = res.as_mut(); + res_mut.copy_from_slice(&challenge[.. 32]); challenge.zeroize(); res }; diff --git a/substrate/client/Cargo.toml b/substrate/client/Cargo.toml index 4b2a3e4c..a6c553f9 100644 --- a/substrate/client/Cargo.toml +++ b/substrate/client/Cargo.toml @@ -23,7 +23,7 @@ serai-runtime = { path = "../runtime", version = "0.1" } sp-core = { git = "https://github.com/serai-dex/substrate" } subxt = { version = "0.27", default-features = false, features = ["jsonrpsee-ws"], optional = true } -bitcoin = { version = "0.29", optional = true } +bitcoin = { version = "0.30", optional = true } ciphersuite = { path = "../../crypto/ciphersuite", version = "0.3", optional = true } monero-serai = { path = "../../coins/monero", version = "0.1.4-alpha", optional = true } diff --git a/substrate/client/src/coins/bitcoin.rs b/substrate/client/src/coins/bitcoin.rs index f8a37245..83267e43 100644 --- a/substrate/client/src/coins/bitcoin.rs +++ b/substrate/client/src/coins/bitcoin.rs @@ -6,16 +6,40 @@ use bitcoin::{ hashes::{Hash as HashTrait, hash160::Hash}, PubkeyHash, ScriptHash, network::constants::Network, - util::address::{Error, WitnessVersion, Payload, Address as BAddress}, + address::{ + Error, WitnessVersion, Payload, WitnessProgram, NetworkChecked, Address as BAddressGeneric, + }, }; -#[derive(Clone, PartialEq, Eq, Debug)] +type BAddress = BAddressGeneric; + +#[derive(Clone, Eq, Debug)] pub struct Address(pub BAddress); +impl PartialEq for Address { + fn eq(&self, other: &Self) -> bool { + self.0.payload == other.0.payload + } +} + impl FromStr for Address { type Err = Error; fn from_str(str: &str) -> Result { - BAddress::from_str(str).map(Address) + let mut original_address = BAddressGeneric::from_str(str)?; + // Standardize the network + original_address.network = Network::Bitcoin; + let address = original_address + .clone() + .require_network(Network::Bitcoin) + .expect("network wasn't mainnet despite overriding network"); + + // Also check this isn't caching the string internally + if BAddressGeneric::from_str(&address.to_string())? != original_address { + // TODO: Make this an error? + panic!("Address::from_str(address.to_string()) != address for Bitcoin"); + } + + Ok(Address(address)) } } @@ -38,26 +62,26 @@ enum EncodedAddress { impl TryFrom> for Address { type Error = (); fn try_from(data: Vec) -> Result { - Ok(Address(BAddress { - network: Network::Bitcoin, - payload: match EncodedAddress::decode(&mut data.as_ref()).map_err(|_| ())? { + Ok(Address(BAddress::new( + Network::Bitcoin, + match EncodedAddress::decode(&mut data.as_ref()).map_err(|_| ())? { EncodedAddress::P2PKH(hash) => { - Payload::PubkeyHash(PubkeyHash::from_hash(Hash::from_inner(hash))) + Payload::PubkeyHash(PubkeyHash::from_raw_hash(Hash::from_byte_array(hash))) } EncodedAddress::P2SH(hash) => { - Payload::ScriptHash(ScriptHash::from_hash(Hash::from_inner(hash))) + Payload::ScriptHash(ScriptHash::from_raw_hash(Hash::from_byte_array(hash))) } EncodedAddress::P2WPKH(hash) => { - Payload::WitnessProgram { version: WitnessVersion::V0, program: hash.to_vec() } + Payload::WitnessProgram(WitnessProgram::new(WitnessVersion::V0, hash).unwrap()) } EncodedAddress::P2WSH(hash) => { - Payload::WitnessProgram { version: WitnessVersion::V0, program: hash.to_vec() } + Payload::WitnessProgram(WitnessProgram::new(WitnessVersion::V0, hash).unwrap()) } EncodedAddress::P2TR(key) => { - Payload::WitnessProgram { version: WitnessVersion::V1, program: key.to_vec() } + Payload::WitnessProgram(WitnessProgram::new(WitnessVersion::V1, key).unwrap()) } }, - })) + ))) } } @@ -67,20 +91,29 @@ impl TryInto> for Address { fn try_into(self) -> Result, ()> { Ok( (match self.0.payload { - Payload::PubkeyHash(hash) => EncodedAddress::P2PKH(hash.as_hash().into_inner()), - Payload::ScriptHash(hash) => EncodedAddress::P2SH(hash.as_hash().into_inner()), - Payload::WitnessProgram { version: WitnessVersion::V0, program } => { - if program.len() == 20 { - EncodedAddress::P2WPKH(program.try_into().map_err(|_| ())?) - } else if program.len() == 32 { - EncodedAddress::P2WSH(program.try_into().map_err(|_| ())?) - } else { - Err(())? + Payload::PubkeyHash(hash) => EncodedAddress::P2PKH(*hash.as_raw_hash().as_byte_array()), + Payload::ScriptHash(hash) => EncodedAddress::P2SH(*hash.as_raw_hash().as_byte_array()), + Payload::WitnessProgram(program) => match program.version() { + WitnessVersion::V0 => { + let program = program.program(); + if program.len() == 20 { + let mut buf = [0; 20]; + buf.copy_from_slice(program.as_ref()); + EncodedAddress::P2WPKH(buf) + } else if program.len() == 32 { + let mut buf = [0; 32]; + buf.copy_from_slice(program.as_ref()); + EncodedAddress::P2WSH(buf) + } else { + Err(())? + } } - } - Payload::WitnessProgram { version: WitnessVersion::V1, program } => { - EncodedAddress::P2TR(program.try_into().map_err(|_| ())?) - } + WitnessVersion::V1 => { + let program_ref: &[u8] = program.program().as_ref(); + EncodedAddress::P2TR(program_ref.try_into().map_err(|_| ())?) + } + _ => Err(())?, + }, _ => Err(())?, }) .encode(), diff --git a/substrate/client/src/coins/monero.rs b/substrate/client/src/coins/monero.rs index 65ef13d5..e2268ec2 100644 --- a/substrate/client/src/coins/monero.rs +++ b/substrate/client/src/coins/monero.rs @@ -68,8 +68,8 @@ impl TryFrom> for Address { } }, ), - Ed25519::read_G(&mut addr.spend.as_ref()).map_err(|_| ())?.0, - Ed25519::read_G(&mut addr.view.as_ref()).map_err(|_| ())?.0, + Ed25519::read_G::<&[u8]>(&mut addr.spend.as_ref()).map_err(|_| ())?.0, + Ed25519::read_G::<&[u8]>(&mut addr.view.as_ref()).map_err(|_| ())?.0, ))) } }