diff --git a/Cargo.lock b/Cargo.lock index 74073815..0cf65596 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -104,6 +104,12 @@ dependencies = [ "memchr", ] +[[package]] +name = "allocator-api2" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" + [[package]] name = "android-tzdata" version = "0.1.1" @@ -757,6 +763,17 @@ dependencies = [ "futures-lite 1.13.0", ] +[[package]] +name = "async-fs" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc19683171f287921f2405677dd2ed2549c3b3bda697a563ebc3a121ace2aba1" +dependencies = [ + "async-lock 3.2.0", + "blocking", + "futures-lite 2.1.0", +] + [[package]] name = "async-io" version = "1.13.0" @@ -827,6 +844,17 @@ dependencies = [ "futures-lite 1.13.0", ] +[[package]] +name = "async-net" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b948000fad4873c1c9339d60f2623323a0cfd3816e5181033c6a5cb68b2accf7" +dependencies = [ + "async-io 2.2.2", + "blocking", + "futures-lite 2.1.0", +] + [[package]] name = "async-process" version = "1.8.1" @@ -844,6 +872,26 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "async-process" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a53fc6301894e04a92cb2584fedde80cb25ba8e02d9dc39d4a87d036e22f397d" +dependencies = [ + "async-channel 2.1.1", + "async-io 2.2.2", + "async-lock 3.2.0", + "async-signal", + "async-task", + "blocking", + "cfg-if", + "event-listener 5.3.0", + "futures-lite 2.1.0", + "rustix 0.38.28", + "tracing", + "windows-sys 0.52.0", +] + [[package]] name = "async-signal" version = "0.2.5" @@ -864,9 +912,9 @@ dependencies = [ [[package]] name = "async-task" -version = "4.5.0" +version = "4.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4eb2cdb97421e01129ccb49169d8279ed21e829929144f4a22a6e54ac549ca1" +checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799" [[package]] name = "async-trait" @@ -876,7 +924,7 @@ checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -896,6 +944,12 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c59bdb34bc650a32731b31bd8f0829cc15d24a708ee31559e0bb34f2bc320cba" +[[package]] +name = "atomic-take" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8ab6b55fe97976e46f91ddbed8d147d966475dc29b2032757ba47e02376fbc3" + [[package]] name = "atomic-waker" version = "1.1.2" @@ -1004,7 +1058,7 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -1082,6 +1136,12 @@ version = "0.21.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" +[[package]] +name = "base64" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" + [[package]] name = "base64ct" version = "1.6.0" @@ -1930,9 +1990,9 @@ dependencies = [ [[package]] name = "crypto-mac" -version = "0.11.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" +checksum = "25fab6889090c8133f3deb8f73ba3c65a7f456f66436fc012a1b1e272b1e103e" dependencies = [ "generic-array 0.14.7", "subtle", @@ -2019,7 +2079,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -2080,7 +2140,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.10.0", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -2102,7 +2162,7 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core 0.20.3", "quote", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -2291,7 +2351,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.40", + "syn 2.0.60", "termcolor", "toml 0.8.2", "walkdir", @@ -2391,6 +2451,21 @@ dependencies = [ "zeroize", ] +[[package]] +name = "ed25519-zebra" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d9ce6874da5d4415896cd45ffbc4d1cfc0c4f9c079427bd870742c30f2f65a9" +dependencies = [ + "curve25519-dalek 4.1.1", + "ed25519", + "hashbrown 0.14.3", + "hex", + "rand_core 0.6.4", + "sha2 0.10.8", + "zeroize", +] + [[package]] name = "either" version = "1.9.0" @@ -2490,7 +2565,7 @@ dependencies = [ "darling 0.20.3", "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -2649,7 +2724,7 @@ dependencies = [ "regex", "serde", "serde_json", - "syn 2.0.40", + "syn 2.0.60", "toml 0.8.2", "walkdir", ] @@ -2667,7 +2742,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -2693,7 +2768,7 @@ dependencies = [ "serde", "serde_json", "strum", - "syn 2.0.40", + "syn 2.0.60", "tempfile", "thiserror", "tiny-keccak", @@ -2883,6 +2958,17 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "event-listener" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d9944b8ca13534cdfb2800775f8dd4902ff3fc75a50101466decadfdf322a24" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + [[package]] name = "event-listener-strategy" version = "0.4.0" @@ -2903,7 +2989,7 @@ dependencies = [ "fs-err", "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -3108,7 +3194,7 @@ dependencies = [ "proc-macro-warning", "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -3120,7 +3206,7 @@ dependencies = [ "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -3130,7 +3216,7 @@ source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -3160,9 +3246,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ "futures-channel", "futures-core", @@ -3175,9 +3261,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", "futures-sink", @@ -3185,15 +3271,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-executor" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ "futures-core", "futures-task", @@ -3203,9 +3289,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-lite" @@ -3247,26 +3333,26 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] name = "futures-sink" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] name = "futures-task" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-timer" @@ -3280,9 +3366,9 @@ dependencies = [ [[package]] name = "futures-util" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-channel", "futures-core", @@ -3347,6 +3433,16 @@ dependencies = [ "wasi 0.11.0+wasi-snapshot-preview1", ] +[[package]] +name = "getrandom_or_panic" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea1015b5a70616b688dc230cfe50c8af89d972cb132d5a622814d29773b10b9" +dependencies = [ + "rand 0.8.5", + "rand_core 0.6.4", +] + [[package]] name = "ghash" version = "0.5.0" @@ -3487,6 +3583,8 @@ version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" dependencies = [ + "ahash 0.8.6", + "allocator-api2", "serde", ] @@ -3551,7 +3649,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" dependencies = [ - "crypto-mac 0.11.1", + "crypto-mac 0.11.0", "digest 0.9.0", ] @@ -3658,10 +3756,10 @@ dependencies = [ "http", "hyper", "log", - "rustls", - "rustls-native-certs", + "rustls 0.21.10", + "rustls-native-certs 0.6.3", "tokio", - "tokio-rustls", + "tokio-rustls 0.24.1", "webpki-roots", ] @@ -3873,6 +3971,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.10" @@ -3894,13 +4001,35 @@ version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "367a292944c07385839818bb71c8d76611138e2dedb0677d035b8da21d29c78b" dependencies = [ - "jsonrpsee-client-transport", - "jsonrpsee-core", - "jsonrpsee-http-client", - "jsonrpsee-types", + "jsonrpsee-client-transport 0.16.3", + "jsonrpsee-core 0.16.3", + "jsonrpsee-http-client 0.16.3", + "jsonrpsee-types 0.16.3", +] + +[[package]] +name = "jsonrpsee" +version = "0.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "affdc52f7596ccb2d7645231fc6163bb314630c989b64998f3699a28b4d5d4dc" +dependencies = [ + "jsonrpsee-core 0.20.3", + "jsonrpsee-types 0.20.3", "jsonrpsee-ws-client", ] +[[package]] +name = "jsonrpsee" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9579d0ca9fb30da026bac2f0f7d9576ec93489aeb7cd4971dd5b4617d82c79b2" +dependencies = [ + "jsonrpsee-client-transport 0.21.0", + "jsonrpsee-core 0.21.0", + "jsonrpsee-http-client 0.21.0", + "jsonrpsee-types 0.21.0", +] + [[package]] name = "jsonrpsee-client-transport" version = "0.16.3" @@ -3909,19 +4038,60 @@ checksum = "c8b3815d9f5d5de348e5f162b316dc9cdf4548305ebb15b4eb9328e66cf27d7a" dependencies = [ "futures-util", "http", - "jsonrpsee-core", - "jsonrpsee-types", + "jsonrpsee-core 0.16.3", + "jsonrpsee-types 0.16.3", "pin-project", - "rustls-native-certs", + "rustls-native-certs 0.6.3", "soketto", "thiserror", "tokio", - "tokio-rustls", + "tokio-rustls 0.24.1", "tokio-util", "tracing", "webpki-roots", ] +[[package]] +name = "jsonrpsee-client-transport" +version = "0.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b005c793122d03217da09af68ba9383363caa950b90d3436106df8cabce935" +dependencies = [ + "futures-util", + "http", + "jsonrpsee-core 0.20.3", + "pin-project", + "rustls-native-certs 0.6.3", + "soketto", + "thiserror", + "tokio", + "tokio-rustls 0.24.1", + "tokio-util", + "tracing", + "url", +] + +[[package]] +name = "jsonrpsee-client-transport" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9f9ed46590a8d5681975f126e22531698211b926129a40a2db47cbca429220" +dependencies = [ + "futures-util", + "http", + "jsonrpsee-core 0.21.0", + "pin-project", + "rustls-native-certs 0.7.0", + "rustls-pki-types", + "soketto", + "thiserror", + "tokio", + "tokio-rustls 0.25.0", + "tokio-util", + "tracing", + "url", +] + [[package]] name = "jsonrpsee-core" version = "0.16.3" @@ -3936,12 +4106,57 @@ dependencies = [ "futures-timer", "futures-util", "hyper", - "jsonrpsee-types", + "jsonrpsee-types 0.16.3", + "rustc-hash", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "jsonrpsee-core" +version = "0.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da2327ba8df2fdbd5e897e2b5ed25ce7f299d345b9736b6828814c3dbd1fd47b" +dependencies = [ + "anyhow", + "async-lock 2.8.0", + "async-trait", + "beef", + "futures-timer", + "futures-util", + "jsonrpsee-types 0.20.3", + "rustc-hash", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "jsonrpsee-core" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "776d009e2f591b78c038e0d053a796f94575d66ca4e77dd84bfc5e81419e436c" +dependencies = [ + "anyhow", + "async-lock 3.2.0", + "async-trait", + "beef", + "futures-timer", + "futures-util", + "hyper", + "jsonrpsee-types 0.21.0", + "pin-project", "rustc-hash", "serde", "serde_json", "thiserror", "tokio", + "tokio-stream", "tracing", ] @@ -3954,8 +4169,8 @@ dependencies = [ "async-trait", "hyper", "hyper-rustls", - "jsonrpsee-core", - "jsonrpsee-types", + "jsonrpsee-core 0.16.3", + "jsonrpsee-types 0.16.3", "rustc-hash", "serde", "serde_json", @@ -3964,6 +4179,26 @@ dependencies = [ "tracing", ] +[[package]] +name = "jsonrpsee-http-client" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b7de9f3219d95985eb77fd03194d7c1b56c19bce1abfcc9d07462574b15572" +dependencies = [ + "async-trait", + "hyper", + "hyper-rustls", + "jsonrpsee-core 0.21.0", + "jsonrpsee-types 0.21.0", + "serde", + "serde_json", + "thiserror", + "tokio", + "tower", + "tracing", + "url", +] + [[package]] name = "jsonrpsee-types" version = "0.16.3" @@ -3978,16 +4213,44 @@ dependencies = [ "tracing", ] +[[package]] +name = "jsonrpsee-types" +version = "0.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be0be325642e850ed0bdff426674d2e66b2b7117c9be23a7caef68a2902b7d9" +dependencies = [ + "anyhow", + "beef", + "serde", + "serde_json", + "thiserror", + "tracing", +] + +[[package]] +name = "jsonrpsee-types" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3266dfb045c9174b24c77c2dfe0084914bb23a6b2597d70c9dc6018392e1cd1b" +dependencies = [ + "anyhow", + "beef", + "serde", + "serde_json", + "thiserror", +] + [[package]] name = "jsonrpsee-ws-client" -version = "0.16.3" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e1b3975ed5d73f456478681a417128597acd6a2487855fdb7b4a3d4d195bf5e" +checksum = "bca9cb3933ccae417eb6b08c3448eb1cb46e39834e5b503e395e5e5bd08546c0" dependencies = [ "http", - "jsonrpsee-client-transport", - "jsonrpsee-core", - "jsonrpsee-types", + "jsonrpsee-client-transport 0.20.3", + "jsonrpsee-core 0.20.3", + "jsonrpsee-types 0.20.3", + "url", ] [[package]] @@ -4209,6 +4472,15 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "718e8fae447df0c7e1ba7f5189829e63fd536945c8988d61444c19039f16b670" +[[package]] +name = "lru" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc" +dependencies = [ + "hashbrown 0.14.3", +] + [[package]] name = "mach" version = "0.3.2" @@ -4227,7 +4499,7 @@ dependencies = [ "macro_magic_core", "macro_magic_macros", "quote", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -4241,7 +4513,7 @@ dependencies = [ "macro_magic_core_macros", "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -4252,7 +4524,7 @@ checksum = "d710e1214dffbab3b5dacb21475dde7d6ed84c69ff722b3a47a782668d44fbac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -4263,7 +4535,7 @@ checksum = "b8fb85ec1620619edf2984a7693497d4ec88a9665d8b87e942856884c92dbf2a" dependencies = [ "macro_magic_core", "quote", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -4607,7 +4879,7 @@ dependencies = [ "proc-macro-crate 2.0.1", "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -4715,7 +4987,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -4908,7 +5180,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d95f5254224e617595d2cc3cc73ff0a5eaf2637519e25f03388154e9378b6ffa" dependencies = [ - "crypto-mac 0.11.1", + "crypto-mac 0.11.0", ] [[package]] @@ -5006,7 +5278,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -5015,7 +5287,7 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" dependencies = [ - "siphasher", + "siphasher 0.3.11", ] [[package]] @@ -5024,7 +5296,7 @@ version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" dependencies = [ - "siphasher", + "siphasher 0.3.11", ] [[package]] @@ -5044,7 +5316,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -5198,7 +5470,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d" dependencies = [ "proc-macro2", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -5267,14 +5539,14 @@ checksum = "3d1eaa7fa0aa1929ffdf7eeb6eac234dde6268914a14ad44d23521ab6a9b258e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] name = "proc-macro2" -version = "1.0.70" +version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" +checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" dependencies = [ "unicode-ident", ] @@ -5340,9 +5612,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.33" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] @@ -5499,7 +5771,7 @@ checksum = "7f7473c2cfcf90008193dd0e3e16599455cb601a9fce322b5bb55de799664925" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -5515,13 +5787,13 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.2" +version = "1.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.3", + "regex-automata 0.4.6", "regex-syntax 0.8.2", ] @@ -5536,9 +5808,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.3" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" dependencies = [ "aho-corasick", "memchr", @@ -5607,14 +5879,14 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls", - "rustls-pemfile", + "rustls 0.21.10", + "rustls-pemfile 1.0.4", "serde", "serde_json", "serde_urlencoded", "system-configuration", "tokio", - "tokio-rustls", + "tokio-rustls 0.24.1", "tower-service", "url", "wasm-bindgen", @@ -5822,10 +6094,24 @@ checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" dependencies = [ "log", "ring 0.17.7", - "rustls-webpki", + "rustls-webpki 0.101.7", "sct", ] +[[package]] +name = "rustls" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" +dependencies = [ + "log", + "ring 0.17.7", + "rustls-pki-types", + "rustls-webpki 0.102.3", + "subtle", + "zeroize", +] + [[package]] name = "rustls-native-certs" version = "0.6.3" @@ -5833,20 +6119,49 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" dependencies = [ "openssl-probe", - "rustls-pemfile", + "rustls-pemfile 1.0.4", "schannel", "security-framework", ] [[package]] -name = "rustls-pemfile" -version = "1.0.4" +name = "rustls-native-certs" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +checksum = "8f1fb85efa936c42c6d5fc28d2629bb51e4b2f4b8a5211e297d599cc5a093792" dependencies = [ - "base64 0.21.5", + "openssl-probe", + "rustls-pemfile 2.1.2", + "rustls-pki-types", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.5", ] +[[package]] +name = "rustls-pemfile" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" +dependencies = [ + "base64 0.22.0", + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "beb461507cee2c2ff151784c52762cf4d9ff6a61f3e80968600ed24fa837fa54" + [[package]] name = "rustls-webpki" version = "0.101.7" @@ -5857,6 +6172,17 @@ dependencies = [ "untrusted 0.9.0", ] +[[package]] +name = "rustls-webpki" +version = "0.102.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3bce581c0dd41bce533ce695a1437fa16a7ab5ac3ccfa99fe1a620a7885eabf" +dependencies = [ + "ring 0.17.7", + "rustls-pki-types", + "untrusted 0.9.0", +] + [[package]] name = "rustversion" version = "1.0.14" @@ -5874,6 +6200,17 @@ dependencies = [ "twox-hash", ] +[[package]] +name = "ruzstd" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58c4eb8a81997cf040a091d1f7e1938aeab6749d3a0dfa73af43cdc32393483d" +dependencies = [ + "byteorder", + "derive_more", + "twox-hash", +] + [[package]] name = "ryu" version = "1.0.16" @@ -5972,7 +6309,22 @@ dependencies = [ "parity-scale-codec", "primitive-types", "scale-bits", - "scale-decode-derive", + "scale-decode-derive 0.9.0", + "scale-info", + "smallvec", +] + +[[package]] +name = "scale-decode" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7caaf753f8ed1ab4752c6afb20174f03598c664724e0e32628e161c21000ff76" +dependencies = [ + "derive_more", + "parity-scale-codec", + "primitive-types", + "scale-bits", + "scale-decode-derive 0.10.0", "scale-info", "smallvec", ] @@ -5990,6 +6342,19 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "scale-decode-derive" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3475108a1b62c7efd1b5c65974f30109a598b2f45f23c9ae030acb9686966db" +dependencies = [ + "darling 0.14.4", + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "scale-encode" version = "0.5.0" @@ -6044,6 +6409,19 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "scale-typegen" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00860983481ac590ac87972062909bef0d6a658013b592ccc0f2feb272feab11" +dependencies = [ + "proc-macro2", + "quote", + "scale-info", + "syn 2.0.60", + "thiserror", +] + [[package]] name = "scale-value" version = "0.12.0" @@ -6057,7 +6435,27 @@ dependencies = [ "frame-metadata 15.1.0", "parity-scale-codec", "scale-bits", - "scale-decode", + "scale-decode 0.9.0", + "scale-encode", + "scale-info", + "serde", + "yap", +] + +[[package]] +name = "scale-value" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58223c7691bf0bd46b43c9aea6f0472d1067f378d574180232358d7c6e0a8089" +dependencies = [ + "base58", + "blake2 0.10.6", + "derive_more", + "either", + "frame-metadata 15.1.0", + "parity-scale-codec", + "scale-bits", + "scale-decode 0.10.0", "scale-encode", "scale-info", "serde", @@ -6113,12 +6511,30 @@ dependencies = [ "curve25519-dalek-ng", "merlin 3.0.0", "rand_core 0.6.4", - "serde_bytes", "sha2 0.9.9", "subtle-ng", "zeroize", ] +[[package]] +name = "schnorrkel" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de18f6d8ba0aad7045f5feae07ec29899c1112584a38509a84ad7b04451eaa0" +dependencies = [ + "aead", + "arrayref", + "arrayvec 0.7.4", + "curve25519-dalek 4.1.1", + "getrandom_or_panic", + "merlin 3.0.0", + "rand_core 0.6.4", + "serde_bytes", + "sha2 0.10.8", + "subtle", + "zeroize", +] + [[package]] name = "scopeguard" version = "1.2.0" @@ -6178,11 +6594,11 @@ dependencies = [ [[package]] name = "secp256k1" -version = "0.27.0" +version = "0.28.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f" +checksum = "d24b59d129cdadea20aea4fb2352fa053712e5d713eee47d700cd4b2bc002f10" dependencies = [ - "secp256k1-sys 0.8.1", + "secp256k1-sys 0.9.2", ] [[package]] @@ -6196,9 +6612,9 @@ dependencies = [ [[package]] name = "secp256k1-sys" -version = "0.8.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a129b9e9efbfb223753b9163c4ab3b13cff7fd9c7f010fbac25ab4099fa07e" +checksum = "e5d1746aae42c19d583c3c1a8c646bfad910498e2051c551a7f2e3c0c9fbb7eb" dependencies = [ "cc", ] @@ -6276,9 +6692,9 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.193" +version = "1.0.198" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" +checksum = "9846a40c979031340571da2545a4e5b7c4163bdae79b301d5f86d03979451fcc" dependencies = [ "serde_derive", ] @@ -6304,13 +6720,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.193" +version = "1.0.198" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" +checksum = "e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -6477,6 +6893,12 @@ version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +[[package]] +name = "siphasher" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" + [[package]] name = "slab" version = "0.4.9" @@ -6516,15 +6938,32 @@ checksum = "13f2b548cd8447f8de0fdf1c592929f70f4fc7039a05e47404b0d096ec6987a1" dependencies = [ "async-channel 1.9.0", "async-executor", - "async-fs", + "async-fs 1.6.0", "async-io 1.13.0", "async-lock 2.8.0", - "async-net", - "async-process", + "async-net 1.8.0", + "async-process 1.8.1", "blocking", "futures-lite 1.13.0", ] +[[package]] +name = "smol" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e635339259e51ef85ac7aa29a1cd991b957047507288697a690e80ab97d07cad" +dependencies = [ + "async-channel 2.1.1", + "async-executor", + "async-fs 2.1.1", + "async-io 2.2.2", + "async-lock 3.2.0", + "async-net 2.0.0", + "async-process 2.2.2", + "blocking", + "futures-lite 2.1.0", +] + [[package]] name = "smoldot" version = "0.8.0" @@ -6540,7 +6979,7 @@ dependencies = [ "bs58", "crossbeam-queue", "derive_more", - "ed25519-zebra", + "ed25519-zebra 3.1.0", "either", "event-listener 2.5.3", "fnv", @@ -6561,20 +7000,75 @@ dependencies = [ "pin-project", "rand 0.8.5", "rand_chacha 0.3.1", - "ruzstd", + "ruzstd 0.4.0", "schnorrkel 0.10.2", "serde", "serde_json", "sha2 0.10.8", - "siphasher", + "siphasher 0.3.11", "slab", "smallvec", - "smol", + "smol 1.3.0", "snow", "soketto", "tiny-keccak", "twox-hash", - "wasmi", + "wasmi 0.30.0", +] + +[[package]] +name = "smoldot" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d1eaa97d77be4d026a1e7ffad1bb3b78448763b357ea6f8188d3e6f736a9b9" +dependencies = [ + "arrayvec 0.7.4", + "async-lock 3.2.0", + "atomic-take", + "base64 0.21.5", + "bip39", + "blake2-rfc", + "bs58", + "chacha20", + "crossbeam-queue", + "derive_more", + "ed25519-zebra 4.0.3", + "either", + "event-listener 4.0.0", + "fnv", + "futures-lite 2.1.0", + "futures-util", + "hashbrown 0.14.3", + "hex", + "hmac 0.12.1", + "itertools 0.12.1", + "libm", + "libsecp256k1", + "merlin 3.0.0", + "no-std-net", + "nom", + "num-bigint", + "num-rational", + "num-traits", + "pbkdf2 0.12.2", + "pin-project", + "poly1305", + "rand 0.8.5", + "rand_chacha 0.3.1", + "ruzstd 0.5.0", + "schnorrkel 0.11.4", + "serde", + "serde_json", + "sha2 0.10.8", + "sha3", + "siphasher 1.0.1", + "slab", + "smallvec", + "soketto", + "twox-hash", + "wasmi 0.31.2", + "x25519-dalek", + "zeroize", ] [[package]] @@ -6595,15 +7089,51 @@ dependencies = [ "hex", "itertools 0.10.5", "log", - "lru", + "lru 0.10.1", + "parking_lot 0.12.1", + "rand 0.8.5", + "serde", + "serde_json", + "siphasher 0.3.11", + "slab", + "smol 1.3.0", + "smoldot 0.8.0", +] + +[[package]] +name = "smoldot-light" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5496f2d116b7019a526b1039ec2247dd172b8670633b1a64a614c9ea12c9d8c7" +dependencies = [ + "async-channel 2.1.1", + "async-lock 3.2.0", + "base64 0.21.5", + "blake2-rfc", + "derive_more", + "either", + "event-listener 4.0.0", + "fnv", + "futures-channel", + "futures-lite 2.1.0", + "futures-util", + "hashbrown 0.14.3", + "hex", + "itertools 0.12.1", + "log", + "lru 0.12.3", + "no-std-net", "parking_lot 0.12.1", + "pin-project", "rand 0.8.5", + "rand_chacha 0.3.1", "serde", "serde_json", - "siphasher", + "siphasher 1.0.1", "slab", - "smol", - "smoldot", + "smol 2.0.0", + "smoldot 0.16.0", + "zeroize", ] [[package]] @@ -6703,7 +7233,7 @@ dependencies = [ "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -6746,7 +7276,7 @@ dependencies = [ "bounded-collections", "bs58", "dyn-clonable", - "ed25519-zebra", + "ed25519-zebra 3.1.0", "futures", "hash-db", "hash256-std-hasher", @@ -6808,6 +7338,20 @@ dependencies = [ "twox-hash", ] +[[package]] +name = "sp-core-hashing" +version = "15.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0f4990add7b2cefdeca883c0efa99bb4d912cb2196120e1500c0cc099553b0" +dependencies = [ + "blake2b_simd", + "byteorder", + "digest 0.10.7", + "sha2 0.10.8", + "sha3", + "twox-hash", +] + [[package]] name = "sp-core-hashing-proc-macro" version = "9.0.0" @@ -6815,7 +7359,7 @@ source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot dependencies = [ "quote", "sp-core-hashing 9.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -6825,7 +7369,7 @@ source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -6970,7 +7514,7 @@ dependencies = [ "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -7092,7 +7636,7 @@ dependencies = [ "parity-scale-codec", "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -7241,7 +7785,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -7259,9 +7803,9 @@ dependencies = [ [[package]] name = "subtle" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "subtle-ng" @@ -7283,22 +7827,58 @@ dependencies = [ "futures", "hex", "impl-serde", - "jsonrpsee", + "jsonrpsee 0.16.3", "parity-scale-codec", "primitive-types", "scale-bits", - "scale-decode", + "scale-decode 0.9.0", "scale-encode", "scale-info", - "scale-value", + "scale-value 0.12.0", "serde", "serde_json", "sp-core-hashing 9.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "subxt-lightclient", - "subxt-macro", - "subxt-metadata", + "subxt-lightclient 0.31.0", + "subxt-macro 0.31.0", + "subxt-metadata 0.31.0", + "thiserror", + "tracing", +] + +[[package]] +name = "subxt" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3323d5c27898b139d043dc1ee971f602f937b99354ee33ee933bd90e0009fbd" +dependencies = [ + "async-trait", + "base58", + "blake2 0.10.6", + "derivative", + "either", + "frame-metadata 16.0.0", + "futures", + "hex", + "impl-serde", + "instant", + "jsonrpsee 0.21.0", + "parity-scale-codec", + "primitive-types", + "scale-bits", + "scale-decode 0.10.0", + "scale-encode", + "scale-info", + "scale-value 0.13.0", + "serde", + "serde_json", + "sp-core-hashing 15.0.0", + "subxt-lightclient 0.34.0", + "subxt-macro 0.34.0", + "subxt-metadata 0.34.0", "thiserror", + "tokio-util", "tracing", + "url", ] [[package]] @@ -7310,13 +7890,34 @@ dependencies = [ "frame-metadata 16.0.0", "heck 0.4.1", "hex", - "jsonrpsee", + "jsonrpsee 0.16.3", + "parity-scale-codec", + "proc-macro2", + "quote", + "scale-info", + "subxt-metadata 0.31.0", + "syn 2.0.60", + "thiserror", + "tokio", +] + +[[package]] +name = "subxt-codegen" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d0e58c3f88651cff26aa52bae0a0a85f806a2e923a20eb438c16474990743ea" +dependencies = [ + "frame-metadata 16.0.0", + "heck 0.4.1", + "hex", + "jsonrpsee 0.21.0", "parity-scale-codec", "proc-macro2", "quote", "scale-info", - "subxt-metadata", - "syn 2.0.40", + "scale-typegen", + "subxt-metadata 0.34.0", + "syn 2.0.60", "thiserror", "tokio", ] @@ -7331,7 +7932,24 @@ dependencies = [ "futures-util", "serde", "serde_json", - "smoldot-light", + "smoldot-light 0.6.0", + "thiserror", + "tokio", + "tokio-stream", + "tracing", +] + +[[package]] +name = "subxt-lightclient" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecec7066ba7bc0c3608fcd1d0c7d9584390990cd06095b6ae4f114f74c4b8550" +dependencies = [ + "futures", + "futures-util", + "serde", + "serde_json", + "smoldot-light 0.14.0", "thiserror", "tokio", "tokio-stream", @@ -7346,8 +7964,23 @@ checksum = "afe9f7e2994a20ab9748a9a040a3fe96054faa219a60ed21af51b9ab9e5f7da6" dependencies = [ "darling 0.20.3", "proc-macro-error", - "subxt-codegen", - "syn 2.0.40", + "subxt-codegen 0.31.0", + "syn 2.0.60", +] + +[[package]] +name = "subxt-macro" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "365251668613323064803427af8c7c7bc366cd8b28e33639640757669dafebd5" +dependencies = [ + "darling 0.20.3", + "parity-scale-codec", + "proc-macro-error", + "quote", + "scale-typegen", + "subxt-codegen 0.34.0", + "syn 2.0.60", ] [[package]] @@ -7363,11 +7996,24 @@ dependencies = [ "thiserror", ] +[[package]] +name = "subxt-metadata" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c02aca8d39a1f6c55fff3a8fd81557d30a610fedc1cef03f889a81bc0f8f0b52" +dependencies = [ + "frame-metadata 16.0.0", + "parity-scale-codec", + "scale-info", + "sp-core-hashing 15.0.0", + "thiserror", +] + [[package]] name = "subxt-signer" -version = "0.31.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e1e4cf3f57cb7ee062111a8f590670efb385e60cf5805054c4a7f377b2bc65d" +checksum = "f88a76a5d114bfae2f6f9cc1491c46173ecc3fb2b9e53948eb3c8d43d4b43ab5" dependencies = [ "bip39", "hex", @@ -7375,12 +8021,12 @@ dependencies = [ "parity-scale-codec", "pbkdf2 0.12.2", "regex", - "schnorrkel 0.10.2", - "secp256k1 0.27.0", + "schnorrkel 0.11.4", + "secp256k1 0.28.2", "secrecy", "sha2 0.10.8", - "sp-core-hashing 9.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "subxt", + "sp-core-hashing 15.0.0", + "subxt 0.34.0", "thiserror", "zeroize", ] @@ -7398,9 +8044,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.40" +version = "2.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13fa70a4ee923979ffb522cacce59d34421ebdea5625e1073c4326ef9d2dd42e" +checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3" dependencies = [ "proc-macro2", "quote", @@ -7434,6 +8080,16 @@ dependencies = [ "libc", ] +[[package]] +name = "tangle-subxt" +version = "1.0.0" +source = "git+https://github.com/webb-tools/tangle?branch=main#6855eadf2cbbd2810ed3fd7b53078639c41c239c" +dependencies = [ + "parity-scale-codec", + "scale-info", + "subxt 0.34.0", +] + [[package]] name = "tap" version = "1.0.1" @@ -7490,9 +8146,9 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.50" +version = "1.0.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" +checksum = "f0126ad08bff79f29fc3ae6a55cc72352056dfff61e3ff8bb7129476d44b23aa" dependencies = [ "thiserror-impl", ] @@ -7514,18 +8170,18 @@ checksum = "e4c60d69f36615a077cc7663b9cb8e42275722d23e58a7fa3d2c7f2915d09d04" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] name = "thiserror-impl" -version = "1.0.50" +version = "1.0.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" +checksum = "d1cd413b5d558b4c5bf3680e324a6fa5014e7b7c067a51e69dbdf47eb7148b66" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -7647,7 +8303,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -7656,7 +8312,18 @@ version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ - "rustls", + "rustls 0.21.10", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f" +dependencies = [ + "rustls 0.22.4", + "rustls-pki-types", "tokio", ] @@ -7833,7 +8500,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -8066,7 +8733,7 @@ checksum = "f03ca4cb38206e2bef0700092660bb74d696f808514dae47fa1467cbfe26e96e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -8077,7 +8744,7 @@ checksum = "563b3b88238ec95680aef36bdece66896eaa7ce3c0f1b4f39d38fb2435261352" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -8287,7 +8954,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.60", "wasm-bindgen-shared", ] @@ -8321,7 +8988,7 @@ checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.60", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -8582,15 +9249,28 @@ dependencies = [ "smallvec", "spin 0.9.8", "wasmi_arena", - "wasmi_core", + "wasmi_core 0.12.0", + "wasmparser-nostd", +] + +[[package]] +name = "wasmi" +version = "0.31.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8281d1d660cdf54c76a3efa9ddd0c270cada1383a995db3ccb43d166456c7" +dependencies = [ + "smallvec", + "spin 0.9.8", + "wasmi_arena", + "wasmi_core 0.13.0", "wasmparser-nostd", ] [[package]] name = "wasmi_arena" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "401c1f35e413fac1846d4843745589d9ec678977ab35a384db8ae7830525d468" +checksum = "104a7f73be44570cac297b3035d76b169d6599637631cf37a1703326a0727073" [[package]] name = "wasmi_core" @@ -8604,6 +9284,18 @@ dependencies = [ "paste", ] +[[package]] +name = "wasmi_core" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf1a7db34bff95b85c261002720c00c3a6168256dcb93041d3fa2054d19856a" +dependencies = [ + "downcast-rs", + "libm", + "num-traits", + "paste", +] + [[package]] name = "wasmparser" version = "0.83.0" @@ -8807,7 +9499,7 @@ dependencies = [ "scale-info", "serde", "serde_json", - "subxt", + "subxt 0.31.0", "tempfile", "thiserror", ] @@ -8822,7 +9514,7 @@ dependencies = [ "quote", "serde", "serde_json", - "syn 2.0.40", + "syn 2.0.60", "toml 0.7.8", ] @@ -8861,6 +9553,7 @@ dependencies = [ "native-tls", "sled", "subxt-signer", + "tangle-subxt", "tokio", "tracing", "tracing-test", @@ -8912,6 +9605,7 @@ dependencies = [ "hex", "native-tls", "sled", + "tangle-subxt", "tokio", "tracing", "webb", @@ -8969,7 +9663,7 @@ source = "git+https://github.com/webb-tools/webb-rs#8a36d59110fad4861a1452330a61 dependencies = [ "ethers-core 2.0.11 (registry+https://github.com/rust-lang/crates.io-index)", "quote", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -9029,6 +9723,7 @@ dependencies = [ "serde_json", "sled", "subxt-signer", + "tangle-subxt", "tempfile", "tokio", "tower-http", @@ -9086,6 +9781,7 @@ dependencies = [ "serde", "serde_json", "subxt-signer", + "tangle-subxt", "tokio", "tracing", "url", @@ -9166,6 +9862,7 @@ dependencies = [ "rand 0.8.5", "sled", "subxt-signer", + "tangle-subxt", "tokio", "tracing", "tracing-subscriber 0.3.18", @@ -9215,10 +9912,12 @@ version = "0.5.15-dev" dependencies = [ "ethereum-types", "http", - "jsonrpsee", + "jsonrpsee 0.20.3", "native-tls", "serde", + "serde_json", "subxt-signer", + "tangle-subxt", "tiny-bip39", "tracing", "url", @@ -9240,6 +9939,7 @@ dependencies = [ "glob", "hex", "hyper", + "jsonrpsee 0.20.3", "libsecp256k1", "native-tls", "prometheus", @@ -9249,6 +9949,7 @@ dependencies = [ "serde_json", "serde_path_to_error", "sled", + "tangle-subxt", "thiserror", "tokio", "url", @@ -9602,6 +10303,18 @@ dependencies = [ "tap", ] +[[package]] +name = "x25519-dalek" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +dependencies = [ + "curve25519-dalek 4.1.1", + "rand_core 0.6.4", + "serde", + "zeroize", +] + [[package]] name = "yansi" version = "0.5.1" @@ -9631,7 +10344,7 @@ checksum = "be912bf68235a88fbefd1b73415cb218405958d1655b2ece9035a19920bdf6ba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.60", ] [[package]] @@ -9651,5 +10364,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.60", ] diff --git a/Cargo.toml b/Cargo.toml index 23dd3cce..b3ef3711 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,6 +31,8 @@ webb-relayer = { path = "services/webb-relayer" } webb-proof-generation = { path = "crates/proof-generation" } webb-circom-proving = { path = "crates/circom-proving" } +tangle-subxt = { git = "https://github.com/webb-tools/tangle", default-features = false, branch = "main" } + thiserror = "^1" anyhow = "^1" tracing = { version = "^0.1", features = ["log"] } @@ -39,10 +41,10 @@ url = { version = "^2.3", features = ["serde"] } sled = "^0.34" tokio = { version = "^1", features = ["full"] } config = { version = "0.13", default-features = false, features = ["toml", "json"] } -serde_json = { version = "^1", default-features = false } +serde_json = { version = "^1", default-features = false, features = ["raw_value"] } paw = { version = "^1.0" } webb = { version = "0.8.4", default-features = false } -subxt-signer = { version = "0.31", features = ["subxt"] } +subxt-signer = { version = "0.34", features = ["subxt"] } # Used by ethers (but we need it to be vendored with the lib). native-tls = { version = "^0.2", features = ["vendored"] } webb-proposals = { git = "https://github.com/webb-tools/webb-rs", features = ["scale"] } @@ -64,7 +66,7 @@ serde = { version = "^1", default-features = false, features = ["derive"] } glob = "^0.3" serde_path_to_error = "0.1.9" serde_bytes = "0.11" -jsonrpsee = { version = "0.16.2" } +jsonrpsee = { version = "0.20.3" } [profile.release] strip = "symbols" diff --git a/crates/event-watcher-traits/Cargo.toml b/crates/event-watcher-traits/Cargo.toml index c8b5b9fd..a047d911 100644 --- a/crates/event-watcher-traits/Cargo.toml +++ b/crates/event-watcher-traits/Cargo.toml @@ -28,6 +28,7 @@ native-tls = { workspace = true } webb-proposals = { workspace = true } sled = { version = "^0.34" } subxt-signer = { workspace = true } +tangle-subxt = { workspace = true } [dev-dependencies] tracing-test = "0.2" diff --git a/crates/event-watcher-traits/src/substrate/event_watcher.rs b/crates/event-watcher-traits/src/substrate/event_watcher.rs index e7003d36..fb61c84c 100644 --- a/crates/event-watcher-traits/src/substrate/event_watcher.rs +++ b/crates/event-watcher-traits/src/substrate/event_watcher.rs @@ -12,8 +12,12 @@ // See the License for the specific language governing permissions and // limitations under the License. +use tangle_subxt::subxt::{ + backend::{legacy::LegacyRpcMethods, rpc::RpcClient}, + config::Header, + OnlineClient, +}; use tokio::sync::Mutex; -use webb::substrate::subxt::{config::Header, OnlineClient}; use webb_relayer_config::event_watcher::EventsWatcherConfig; use webb_relayer_context::RelayerContext; use webb_relayer_utils::{metric, retry}; @@ -168,10 +172,24 @@ where return Err(backoff::Error::transient(err)); } }; + + let maybe_rpc_client = ctx.get_ws_client::<_>(chain_id).await; + let rpc = match maybe_rpc_client { + Ok(ws_client) => { + let rpc_client = RpcClient::new(ws_client); + LegacyRpcMethods::::new(rpc_client.clone()) + } + Err(err) => { + tracing::error!( + "Failed to connect with substrate rpc client for chain_id: {}, retrying...!", + chain_id + ); + return Err(backoff::Error::transient(err)); + } + }; let client = Arc::new(client); let mut instant = std::time::Instant::now(); let step = 1u64; - let rpc = client.rpc(); // get pallet index let pallet_index = { let metadata = client.metadata(); @@ -196,13 +214,13 @@ where // now we start polling for new events. // get the current latest block number. let latest_head = rpc - .finalized_head() + .chain_get_finalized_head() .map_err(Into::into) .map_err(backoff::Error::transient) .await?; let maybe_latest_header = rpc - .header(Some(latest_head)) + .chain_get_header(Some(latest_head)) .map_err(Into::into) .map_err(backoff::Error::transient) .await?; @@ -243,7 +261,7 @@ where // range [block, dest_block]. // so first we get the hash of the block we want to start from. let maybe_from = rpc - .block_hash(Some(dest_block.into())) + .chain_get_block_hash(Some(dest_block.into())) .map_err(Into::into) .map_err(backoff::Error::transient) .await?; diff --git a/crates/event-watcher-traits/src/substrate/mod.rs b/crates/event-watcher-traits/src/substrate/mod.rs index aa6095a5..d7e2331b 100644 --- a/crates/event-watcher-traits/src/substrate/mod.rs +++ b/crates/event-watcher-traits/src/substrate/mod.rs @@ -18,7 +18,7 @@ use futures::prelude::*; use std::cmp; use std::sync::Arc; use std::time::Duration; -use webb::substrate::subxt::{self, client::OnlineClientT, config::Header}; +use tangle_subxt::subxt::{self, client::OnlineClientT, config::Header}; use webb_proposals::{ ResourceId, SubstrateTargetSystem, TargetSystem, TypedChainId, }; diff --git a/crates/event-watcher-traits/src/tests.rs b/crates/event-watcher-traits/src/tests.rs index a13d681c..9d8d4673 100644 --- a/crates/event-watcher-traits/src/tests.rs +++ b/crates/event-watcher-traits/src/tests.rs @@ -13,9 +13,9 @@ // limitations under the License. use std::sync::Arc; +use tangle_subxt::subxt::{self, Config, OnlineClient}; +use tangle_subxt::tangle_testnet_runtime::api::system; use tokio::sync::Mutex; -use webb::substrate::subxt::{self, Config, OnlineClient}; -use webb::substrate::tangle_runtime::api::system; use webb_relayer_config::event_watcher::EventsWatcherConfig; use webb_relayer_context::RelayerContext; use webb_relayer_store::sled::SledStore; diff --git a/crates/relayer-context/Cargo.toml b/crates/relayer-context/Cargo.toml index 8953864a..d61e243a 100644 --- a/crates/relayer-context/Cargo.toml +++ b/crates/relayer-context/Cargo.toml @@ -30,6 +30,7 @@ serde = { workspace = true } serde_json = { workspace = true } http = "0.2.9" regex = { version = "1" } +tangle-subxt = { workspace = true } [features] default = ["std", "evm", "substrate"] diff --git a/crates/relayer-context/src/ethers_retry_policy.rs b/crates/relayer-context/src/ethers_retry_policy.rs index c97d6d08..350b4e1b 100644 --- a/crates/relayer-context/src/ethers_retry_policy.rs +++ b/crates/relayer-context/src/ethers_retry_policy.rs @@ -142,7 +142,9 @@ impl RetryPolicy for WebbHttpRetryPolicy { if let Some(data) = &json_rpc_error.data { // if daily rate limit exceeded, infura returns the requested backoff in the error // response - let Some(backoff_seconds) = data.get("rate").and_then(|v| v.get("backoff_seconds")) else { + let Some(backoff_seconds) = + data.get("rate").and_then(|v| v.get("backoff_seconds")) + else { return Some(DEFAULT_BACKOFF); }; // infura rate limit error diff --git a/crates/relayer-context/src/lib.rs b/crates/relayer-context/src/lib.rs index a2cfdd54..ba4a6c7a 100644 --- a/crates/relayer-context/src/lib.rs +++ b/crates/relayer-context/src/lib.rs @@ -18,8 +18,8 @@ //! A module for managing the context of the relayer. use std::time::Duration; use std::{collections::HashMap, sync::Arc}; +use tangle_subxt::subxt::OnlineClient; use tokio::sync::{broadcast, Mutex}; -use webb::substrate::subxt::OnlineClient; use webb_relayer_tx_queue::evm::EvmTxQueueConfig; use webb_relayer_tx_queue::substrate::SubstrateTxQueueConfig; use webb_relayer_types::rpc_client::WebbRpcClient; @@ -32,12 +32,12 @@ use webb::evm::ethers::prelude::*; #[cfg(feature = "substrate")] use subxt_signer::sr25519::Keypair as Sr25519Pair; +#[cfg(feature = "substrate")] +use tangle_subxt::subxt; use webb::evm::ethers::middleware::gas_oracle::{ Cache as CachedGasOracle, Etherchain as EtherscanGasOracle, Median as GasOracleMedian, ProviderOracle, }; -#[cfg(feature = "substrate")] -use webb::substrate::subxt; use webb_price_oracle_backends::{ CachedPriceBackend, CoinGeckoBackend, DummyPriceBackend, PriceOracleMerger, @@ -232,6 +232,21 @@ impl RelayerContext { let wallet = LocalWallet::from(key).with_chain_id(chain_id); Ok(wallet) } + + /// Returns a Substrate ws client for the given chain. + #[cfg(feature = "substrate")] + pub async fn get_ws_client>( + &self, + chain_id: I, + ) -> webb_relayer_utils::Result> { + let substrate_ws_clients = self.substrate_providers.lock().await; + substrate_ws_clients + .get(&chain_id.into()) + .cloned() + .ok_or_else(|| { + webb_relayer_utils::Error::Generic("Ws client not found") + }) + } /// Sets up and returns a Substrate client for the relayer. /// /// # Arguments @@ -242,6 +257,10 @@ impl RelayerContext { &self, chain_id: I, ) -> webb_relayer_utils::Result> { + use tangle_subxt::subxt::backend::{ + legacy::LegacyBackend, rpc::RpcClient, + }; + let chain_id: types::U256 = chain_id.into(); let chain_name = chain_id.to_string(); let node_config = @@ -254,15 +273,17 @@ impl RelayerContext { if let Some(webb_rpc_client) = substrate_providers.get(&chain_id) { // check if rpc is connected if not create a new connection and cache it let substrate_client = if webb_rpc_client.0.is_connected() { - subxt::OnlineClient::::from_rpc_client( - webb_rpc_client.clone(), - ) - .await? + let legacy_baclend = + LegacyBackend::new(RpcClient::new(webb_rpc_client.clone())); + subxt::OnlineClient::::from_backend(legacy_baclend.into()) + .await? } else { let url = node_config.ws_endpoint.to_string(); let webb_rpc_client = Arc::new(WebbRpcClient::new(url).await?); substrate_providers.insert(chain_id, webb_rpc_client.clone()); - subxt::OnlineClient::::from_rpc_client(webb_rpc_client) + let legacy_baclend = + LegacyBackend::new(RpcClient::new(webb_rpc_client.clone())); + subxt::OnlineClient::::from_backend(legacy_baclend.into()) .await? }; Ok(substrate_client) diff --git a/crates/relayer-types/Cargo.toml b/crates/relayer-types/Cargo.toml index 3b6f495f..ed79dd9c 100644 --- a/crates/relayer-types/Cargo.toml +++ b/crates/relayer-types/Cargo.toml @@ -22,4 +22,6 @@ ethereum-types = { workspace = true } jsonrpsee = { workspace = true, features = ["ws-client"]} http = "0.2.9" subxt-signer = { workspace = true } +tangle-subxt = { workspace = true } +serde_json = { workspace = true } tiny-bip39 = "1.0.0" diff --git a/crates/relayer-types/src/rpc_client.rs b/crates/relayer-types/src/rpc_client.rs index c3df45c2..dd58bbb7 100644 --- a/crates/relayer-types/src/rpc_client.rs +++ b/crates/relayer-types/src/rpc_client.rs @@ -1,12 +1,28 @@ -use jsonrpsee::async_client::ClientBuilder; -use jsonrpsee::client_transport::ws::WsTransportClientBuilder; -use jsonrpsee::core::client::Client; -use jsonrpsee::core::JsonRawValue; -use webb::substrate::subxt::{self, rpc::RpcClientT}; +use jsonrpsee::core::client::{ + Client, ClientT, SubscriptionClientT, SubscriptionKind, +}; +use jsonrpsee::core::traits::ToRpcParams; +use jsonrpsee::types::SubscriptionId; +use jsonrpsee::ws_client::WsClientBuilder; +use serde_json::value::RawValue; +use tangle_subxt::subxt::backend::rpc::{ + RawRpcFuture, RawRpcSubscription, RpcClientT, +}; +use tangle_subxt::subxt::error::RpcError; +use tangle_subxt::subxt::ext::futures::{StreamExt, TryStreamExt}; #[derive(Debug)] pub struct WebbRpcClient(pub Client); +struct Params(Option>); +impl ToRpcParams for Params { + fn to_rpc_params( + self, + ) -> Result>, jsonrpsee::core::Error> { + Ok(self.0) + } +} + impl WebbRpcClient { pub async fn new( url: impl Into, @@ -14,17 +30,13 @@ impl WebbRpcClient { let url: http::Uri = url.into().parse().map_err(|_| { webb_relayer_utils::Error::Generic("RPC url is invalid") })?; - let (sender, receiver) = WsTransportClientBuilder::default() - .build(url) + let client = WsClientBuilder::default() + .build(url.to_string()) .await .map_err(|_| { webb_relayer_utils::Error::Generic("RPC failed to connect") })?; - let client = ClientBuilder::default() - .max_notifs_per_subscription(4096) - .build_with_tokio(sender, receiver); - Ok(Self(client)) } } @@ -33,17 +45,46 @@ impl RpcClientT for WebbRpcClient { fn request_raw<'a>( &'a self, method: &'a str, - params: Option>, - ) -> subxt::rpc::RpcFuture<'a, Box> { - self.0.request_raw(method, params) + params: Option>, + ) -> RawRpcFuture<'a, Box> { + Box::pin(async move { + let res = self + .0 + .request(method, Params(params)) + .await + .map_err(|e| RpcError::ClientError(Box::new(e)))?; + + Ok(res) + }) } fn subscribe_raw<'a>( &'a self, sub: &'a str, - params: Option>, + params: Option>, unsub: &'a str, - ) -> subxt::rpc::RpcFuture<'a, subxt::rpc::RpcSubscription> { - self.0.subscribe_raw(sub, params, unsub) + ) -> RawRpcFuture<'a, RawRpcSubscription> { + Box::pin(async move { + let stream = SubscriptionClientT::subscribe::, _>( + &self.0, + sub, + Params(params), + unsub, + ) + .await + .map_err(|e| RpcError::ClientError(Box::new(e)))?; + + let id = match stream.kind() { + SubscriptionKind::Subscription(SubscriptionId::Str(id)) => { + Some(id.clone().into_owned()) + } + _ => None, + }; + + let stream = stream + .map_err(|e| RpcError::ClientError(Box::new(e))) + .boxed(); + Ok(RawRpcSubscription { stream, id }) + }) } } diff --git a/crates/relayer-utils/Cargo.toml b/crates/relayer-utils/Cargo.toml index b2844ac4..44daa0c1 100644 --- a/crates/relayer-utils/Cargo.toml +++ b/crates/relayer-utils/Cargo.toml @@ -38,6 +38,8 @@ ark-std = { version = "^0.3.0", default-features = false } derive_more = { version = "0.99", default-features = false, features = ["display"] } prometheus = { version = "0.13.0", default-features = false } hyper = "0.14.24" +tangle-subxt = { workspace = true } +jsonrpsee = { workspace = true } [features] default = ["evm-runtime", "substrate-runtime"] diff --git a/crates/relayer-utils/src/lib.rs b/crates/relayer-utils/src/lib.rs index 48fee087..c47c57b4 100644 --- a/crates/relayer-utils/src/lib.rs +++ b/crates/relayer-utils/src/lib.rs @@ -17,8 +17,9 @@ use std::sync::Arc; use axum::http::StatusCode; use axum::response::{IntoResponse, Response}; use multi_provider::MultiProvider; -use webb::substrate::subxt::PolkadotConfig; -use webb::{evm::ethers, substrate::subxt}; +use tangle_subxt::subxt; +use tangle_subxt::subxt::PolkadotConfig; +use webb::evm::ethers; use webb_proposals::ResourceId; pub mod clickable_link; @@ -252,6 +253,9 @@ pub enum Error { /// Deserialization error. #[error(transparent)] DeserializationError(#[from] webb_proposals::DeserializationError), + /// Jsonrpsee Error + #[error(transparent)] + JsonrpseeError(#[from] jsonrpsee::core::Error), } /// Vanchor withdraw tx relaying errors. diff --git a/crates/relayer-utils/src/static_tx_payload.rs b/crates/relayer-utils/src/static_tx_payload.rs index e236ad36..7afc4203 100644 --- a/crates/relayer-utils/src/static_tx_payload.rs +++ b/crates/relayer-utils/src/static_tx_payload.rs @@ -1,6 +1,6 @@ use core::fmt; -use webb::substrate::subxt::{ +use tangle_subxt::subxt::{ self, ext::scale_encode::EncodeAsFields, tx::{Payload, TxPayload}, @@ -71,7 +71,7 @@ impl TxPayload for TypeErasedStaticTxPayload { &self, _metadata: &subxt::Metadata, out: &mut Vec, - ) -> Result<(), webb::substrate::subxt::Error> { + ) -> Result<(), tangle_subxt::subxt::Error> { *out = self.tx_data.clone(); Ok(()) } diff --git a/crates/tx-queue/Cargo.toml b/crates/tx-queue/Cargo.toml index f879c17f..930936b6 100644 --- a/crates/tx-queue/Cargo.toml +++ b/crates/tx-queue/Cargo.toml @@ -28,6 +28,7 @@ subxt-signer = { workspace = true, optional = true } # Used by ethers (but we need it to be vendored with the lib). native-tls = { workspace = true, optional = true } ethereum-types = { workspace = true } +tangle-subxt = { workspace = true } rand = { workspace = true, default-features = false, features = ["getrandom"] } diff --git a/crates/tx-queue/src/substrate/mod.rs b/crates/tx-queue/src/substrate/mod.rs index 35317041..a9efb5cb 100644 --- a/crates/tx-queue/src/substrate/mod.rs +++ b/crates/tx-queue/src/substrate/mod.rs @@ -16,7 +16,7 @@ mod substrate_tx_queue; #[doc(hidden)] pub use substrate_tx_queue::*; use subxt_signer::sr25519::Keypair as Sr25519Pair; -use webb::substrate::subxt::{self, OnlineClient}; +use tangle_subxt::subxt::{self, OnlineClient}; use webb_relayer_utils::Result; /// Config trait for Substrate tx queue. @@ -47,7 +47,7 @@ mod tests { use std::sync::Arc; use subxt_signer::sr25519::dev; - use webb::substrate::tangle_runtime::api as RuntimeApi; + use tangle_subxt::tangle_testnet_runtime::api as RuntimeApi; use webb_relayer_store::queue::{QueueItem, QueueStore}; use webb_relayer_store::sled::SledQueueKey; use webb_relayer_store::SledStore; diff --git a/crates/tx-queue/src/substrate/substrate_tx_queue.rs b/crates/tx-queue/src/substrate/substrate_tx_queue.rs index 2441da43..4d2e10d1 100644 --- a/crates/tx-queue/src/substrate/substrate_tx_queue.rs +++ b/crates/tx-queue/src/substrate/substrate_tx_queue.rs @@ -12,11 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -use futures::StreamExt; use futures::TryFutureExt; use rand::Rng; -use webb::substrate::subxt; -use webb::substrate::subxt::rpc::types::DryRunResult; +use tangle_subxt::subxt; + +use tangle_subxt::subxt::tx::ValidationResult; use webb_relayer_store::queue::QueueItem; use webb_relayer_store::queue::QueueItemState; use webb_relayer_store::queue::QueueStore; @@ -28,7 +28,7 @@ use webb_relayer_utils::TangleRuntimeConfig; use std::sync::Arc; use std::time::Duration; -use webb::substrate::subxt::tx::TxStatus as TransactionStatus; +use tangle_subxt::subxt::tx::TxStatus as TransactionStatus; use super::SubstrateTxQueueConfig; @@ -174,9 +174,9 @@ where .map_err(backoff::Error::transient) .await?; // dry run test - let dry_run_outcome = signed_extrinsic.dry_run(None).await; + let dry_run_outcome = signed_extrinsic.validate().await; match dry_run_outcome { - Ok(DryRunResult::Success) => { + Ok(ValidationResult::Valid(..)) => { tracing::event!( target: webb_relayer_utils::probe::TARGET, tracing::Level::DEBUG, @@ -204,7 +204,7 @@ where }, )?; } - Ok(DryRunResult::TransactionValidityError) => { + Ok(ValidationResult::Invalid(..)) => { // This kinda bugged in Substrate, as it returns this error // in multiple scenarios, like when the transaction is mostly will // exhaust the resources. However, the transaction may still be valid @@ -221,10 +221,10 @@ where errored = true, error = "The transaction could not be included in the block.", signed_extrinsic = %hex::encode(signed_extrinsic.encoded()), - dry_run = "transaction_validity_error" + dry_run = "transaction_invalid" ); } - Ok(DryRunResult::DispatchError(err)) => { + Ok(ValidationResult::Unknown(..)) => { tracing::event!( target: webb_relayer_utils::probe::TARGET, tracing::Level::ERROR, @@ -233,9 +233,8 @@ where chain_id = %chain_id, tx = %payload, errored = true, - error = %err, signed_extrinsic = %hex::encode(signed_extrinsic.encoded()), - dry_run = "dispatch_error", + dry_run = "dispatch_error unknown", ); // update transaction status as Failed and re insert into queue. store.shift_item_to_end( @@ -247,7 +246,8 @@ where TypeErasedStaticTxPayload, >| { let state = QueueItemState::Failed { - reason: err.to_string(), + reason: "dispatch_error unknown" + .to_string(), }; item.set_state(state); Ok(()) @@ -374,7 +374,7 @@ where }; match e { - TransactionStatus::Future => { + TransactionStatus::Validated => { tracing::event!( target: webb_relayer_utils::probe::TARGET, tracing::Level::DEBUG, @@ -382,7 +382,7 @@ where ty = "SUBSTRATE", tx = %payload, chain_id = %chain_id, - status = "Future", + status = "Validated", ); store.update_item( SledQueueKey::from_substrate_with_custom_key( @@ -391,7 +391,7 @@ where ), |item| { let state = QueueItemState::Processing { - step: "Transaction status: Future" + step: "Transaction status: Validated" .to_string(), progress: Some(0.5), }; @@ -400,33 +400,8 @@ where }, )?; } - TransactionStatus::Ready => { - tracing::event!( - target: webb_relayer_utils::probe::TARGET, - tracing::Level::DEBUG, - kind = %webb_relayer_utils::probe::Kind::TxQueue, - ty = "SUBSTRATE", - tx = %payload, - chain_id = %chain_id, - status = "Ready", - ); - store.update_item( - SledQueueKey::from_substrate_with_custom_key( - chain_id, - tx_item_key, - ), - |item| { - let state = QueueItemState::Processing { - step: "Transaction status: Ready" - .to_string(), - progress: Some(0.6), - }; - item.set_state(state); - Ok(()) - }, - )?; - } - TransactionStatus::Broadcast(_) => { + + TransactionStatus::Broadcasted { .. } => { tracing::event!( target: webb_relayer_utils::probe::TARGET, tracing::Level::DEBUG, @@ -434,7 +409,7 @@ where ty = "SUBSTRATE", tx = %payload, chain_id = %chain_id, - status = "Broadcast", + status = "Broadcasted", ); store.update_item( SledQueueKey::from_substrate_with_custom_key( @@ -443,7 +418,7 @@ where ), |item| { let state = QueueItemState::Processing { - step: "Transaction status: Broadcast" + step: "Transaction status: Broadcasted" .to_string(), progress: Some(0.7), }; @@ -452,7 +427,7 @@ where }, )?; } - TransactionStatus::InBlock(data) => { + TransactionStatus::InBestBlock(block) => { tracing::event!( target: webb_relayer_utils::probe::TARGET, tracing::Level::DEBUG, @@ -460,8 +435,8 @@ where ty = "SUBSTRATE", tx = %payload, chain_id = %chain_id, - block_hash = ?data.block_hash(), - status = "InBlock", + status = "InBestBlock", + block_hash = %block.block_hash(), ); store.update_item( SledQueueKey::from_substrate_with_custom_key( @@ -470,7 +445,7 @@ where ), |item| { let state = QueueItemState::Processing { - step: "Transaction status: InBlock" + step: "Transaction status: InBestBlock" .to_string(), progress: Some(0.8), }; @@ -479,7 +454,7 @@ where }, )?; } - TransactionStatus::Retracted(_) => { + TransactionStatus::NoLongerInBestBlock => { tracing::event!( target: webb_relayer_utils::probe::TARGET, tracing::Level::DEBUG, @@ -487,21 +462,10 @@ where tx = %payload, ty = "SUBSTRATE", chain_id = %chain_id, - status = "Retracted", + status = "NoLongerInBestBlock", ); } - TransactionStatus::FinalityTimeout(_) => { - tracing::event!( - target: webb_relayer_utils::probe::TARGET, - tracing::Level::DEBUG, - kind = %webb_relayer_utils::probe::Kind::TxQueue, - tx = %payload, - ty = "SUBSTRATE", - chain_id = %chain_id, - status = "FinalityTimeout", - ); - } - TransactionStatus::Finalized(_) => { + TransactionStatus::InFinalizedBlock { .. } => { tracing::event!( target: webb_relayer_utils::probe::TARGET, tracing::Level::DEBUG, @@ -509,7 +473,7 @@ where ty = "SUBSTRATE", tx = %payload, chain_id = %chain_id, - status = "Finalized", + status = "InFinalizedBlock", finalized = true, ); store.update_item( @@ -529,18 +493,38 @@ where )?; } - TransactionStatus::Usurped(_) => { + TransactionStatus::Error { message } => { tracing::event!( target: webb_relayer_utils::probe::TARGET, tracing::Level::DEBUG, kind = %webb_relayer_utils::probe::Kind::TxQueue, ty = "SUBSTRATE", - tx = %payload, chain_id = %chain_id, - status = "Usurped", + tx = %payload, + errored = true, + error = message, + signed_extrinsic = %hex::encode(signed_extrinsic.encoded()), + status = "Failed" ); + // update transaction status as Failed and re insert into queue. + store.shift_item_to_end( + SledQueueKey::from_substrate_with_custom_key( + chain_id, + tx_item_key, + ), + |item: &mut QueueItem< + TypeErasedStaticTxPayload, + >| { + let state = QueueItemState::Failed { + reason: message.to_string(), + }; + item.set_state(state); + Ok(()) + }, + )?; } - TransactionStatus::Dropped => { + + TransactionStatus::Dropped { message } => { tracing::event!( target: webb_relayer_utils::probe::TARGET, tracing::Level::DEBUG, @@ -548,10 +532,11 @@ where ty = "SUBSTRATE", tx = %payload, chain_id = %chain_id, + error = message, status = "Dropped", ); } - TransactionStatus::Invalid => { + TransactionStatus::Invalid { .. } => { tracing::event!( target: webb_relayer_utils::probe::TARGET, tracing::Level::DEBUG, diff --git a/event-watchers/tangle/Cargo.toml b/event-watchers/tangle/Cargo.toml index 6bf641b9..d5e907fc 100644 --- a/event-watchers/tangle/Cargo.toml +++ b/event-watchers/tangle/Cargo.toml @@ -26,3 +26,4 @@ webb = { workspace = true } native-tls = { workspace = true, optional = true } webb-proposals = { workspace = true } ethereum-types = { workspace = true } +tangle-subxt = { workspace = true } diff --git a/event-watchers/tangle/src/job_result_handler.rs b/event-watchers/tangle/src/job_result_handler.rs index a532adc2..a5859d3f 100644 --- a/event-watchers/tangle/src/job_result_handler.rs +++ b/event-watchers/tangle/src/job_result_handler.rs @@ -14,10 +14,10 @@ use std::sync::Arc; use tokio::sync::Mutex; -use webb::substrate::subxt::{self, OnlineClient};use webb::substrate::tangle_runtime::api::jobs::events::JobResultSubmitted; -use webb::substrate::tangle_runtime::api as RuntimeApi; -use webb::substrate::tangle_runtime::api::runtime_types::tangle_primitives::jobs::JobResult; -use webb::substrate::tangle_runtime::api::runtime_types::tangle_primitives::roles::RoleType; +use tangle_subxt::subxt::{self, OnlineClient};use tangle_subxt::tangle_testnet_runtime::api::jobs::events::JobResultSubmitted; +use tangle_subxt::tangle_testnet_runtime::api as RuntimeApi; +use tangle_subxt::tangle_testnet_runtime::api::runtime_types::tangle_primitives::jobs::JobResult; +use tangle_subxt::tangle_testnet_runtime::api::runtime_types::tangle_primitives::roles::RoleType; use webb_proposals::evm::AnchorUpdateProposal; use webb_relayer_store::queue::{QueueItem, QueueStore}; use webb_relayer_store::sled::{SledQueueKey, SledStore}; @@ -100,12 +100,17 @@ impl EventHandler for JobResultHandler { .fetch(&known_result_addrs) .await?; - if let Some(phase_result) = maybe_result { if let JobResult::DKGPhaseTwo(result) = phase_result.result { - let anchor_update_proposal = webb_proposals::from_slice::(&result.data)?; - let destination_resource_id = anchor_update_proposal.header().resource_id(); - let bridge_key = BridgeKey::new(destination_resource_id.typed_chain_id()); + let anchor_update_proposal = + webb_proposals::from_slice::( + &result.data.0, + )?; + let destination_resource_id = + anchor_update_proposal.header().resource_id(); + let bridge_key = BridgeKey::new( + destination_resource_id.typed_chain_id(), + ); tracing::debug!( %bridge_key, @@ -115,9 +120,9 @@ impl EventHandler for JobResultHandler { metrics.lock().await.proposals_signed.inc(); let item = QueueItem::new( BridgeCommand::ExecuteProposalWithSignature { - data: result.data.clone(), - signature: result.signature, - } + data: result.data.0, + signature: result.signature.0, + }, ); store.enqueue_item( SledQueueKey::from_bridge_key(bridge_key), diff --git a/event-watchers/tangle/src/lib.rs b/event-watchers/tangle/src/lib.rs index ff88c359..7620a7d8 100644 --- a/event-watchers/tangle/src/lib.rs +++ b/event-watchers/tangle/src/lib.rs @@ -16,8 +16,8 @@ mod job_result_handler; #[doc(hidden)] pub use job_result_handler::*; -use webb::substrate::subxt::events::StaticEvent; -use webb::substrate::tangle_runtime::api::jobs::events::JobResultSubmitted; +use tangle_subxt::subxt::events::StaticEvent; +use tangle_subxt::tangle_testnet_runtime::api::jobs::events::JobResultSubmitted; use webb_event_watcher_traits::SubstrateEventWatcher; use webb_relayer_utils::TangleRuntimeConfig; diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 0456f425..f915b255 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,4 +1,4 @@ [toolchain] -channel = "nightly-2023-04-01" +channel = "stable" components = ["rustfmt", "clippy", "rust-src"] targets = ["x86_64-unknown-linux-musl"] diff --git a/services/webb-relayer/Cargo.toml b/services/webb-relayer/Cargo.toml index ef05d545..b063854e 100644 --- a/services/webb-relayer/Cargo.toml +++ b/services/webb-relayer/Cargo.toml @@ -52,7 +52,7 @@ webb-proposals = { workspace = true } ethereum-types = { workspace = true } dotenv = { workspace = true } axum = { workspace = true } - +tangle-subxt = { workspace = true } tower-http = { version = "0.4", features = ["cors", "trace"] } [dev-dependencies] diff --git a/services/webb-relayer/src/service/tangle.rs b/services/webb-relayer/src/service/tangle.rs index 10204eff..bf40ab12 100644 --- a/services/webb-relayer/src/service/tangle.rs +++ b/services/webb-relayer/src/service/tangle.rs @@ -1,5 +1,5 @@ use std::sync::Arc; -use webb::substrate::subxt; +use tangle_subxt::subxt; use webb_event_watcher_traits::SubstrateEventWatcher; use webb_ew_tangle::*; use webb_relayer_config::substrate::{