diff --git a/Cargo.lock b/Cargo.lock index 344473b20..35cabeb29 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,15 +2,6 @@ # It is not intended for manual editing. version = 4 -[[package]] -name = "addr2line" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" -dependencies = [ - "gimli", -] - [[package]] name = "adler2" version = "2.0.1" @@ -59,7 +50,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ "cfg-if", - "getrandom 0.3.3", + "getrandom 0.3.4", "once_cell", "version_check", "zerocopy", @@ -97,9 +88,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy" -version = "1.0.25" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "992a9d0732a0e0e1a34d61a6553ad28f761c9049bb46572d3916f172348d2cb7" +checksum = "b17c19591d57add4f0c47922877a48aae1f47074e3433436545f8948353b3bbb" dependencies = [ "alloy-consensus", "alloy-contract", @@ -120,11 +111,11 @@ dependencies = [ [[package]] name = "alloy-chains" -version = "0.2.7" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a379c0d821498c996ceb9e7519fc2dab8286c35a203c1fb95f80ecd66e07cf2f" +checksum = "bf01dd83a1ca5e4807d0ca0223c9615e211ce5db0a9fd1443c2778cacf89b546" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "num_enum", "serde", @@ -138,7 +129,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a0dd3ed764953a6b20458b2b7abbfdc93d20d14b38babe1a70fe631a443a9f1" dependencies = [ "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "alloy-serde", "alloy-trie", @@ -155,7 +146,7 @@ dependencies = [ "serde", "serde_json", "serde_with", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -166,7 +157,7 @@ checksum = "9556182afa73cddffa91e64a5aa9508d5e8c912b3a15f26998d2388a824d2c7b" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "alloy-serde", "arbitrary", @@ -181,43 +172,43 @@ checksum = "b19d7092c96defc3d132ee0d8969ca1b79ef512b5eda5c66e3065266b253adf2" dependencies = [ "alloy-consensus", "alloy-dyn-abi", - "alloy-json-abi 1.3.1", + "alloy-json-abi 1.4.1", "alloy-network", "alloy-network-primitives", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-provider", "alloy-rpc-types-eth", - "alloy-sol-types 1.3.1", + "alloy-sol-types 1.4.1", "alloy-transport", "futures", "futures-util", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "alloy-core" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfe6c56d58fbfa9f0f6299376e8ce33091fc6494239466814c3f54b55743cb09" +checksum = "5ca96214615ec8cf3fa2a54b32f486eb49100ca7fe7eb0b8c1137cd316e7250a" dependencies = [ "alloy-dyn-abi", - "alloy-json-abi 1.3.1", - "alloy-primitives 1.3.1", + "alloy-json-abi 1.4.1", + "alloy-primitives 1.4.1", "alloy-rlp", - "alloy-sol-types 1.3.1", + "alloy-sol-types 1.4.1", ] [[package]] name = "alloy-dyn-abi" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3f56873f3cac7a2c63d8e98a4314b8311aa96adb1a0f82ae923eb2119809d2c" +checksum = "3fdff496dd4e98a81f4861e66f7eaf5f2488971848bb42d9c892f871730245c8" dependencies = [ - "alloy-json-abi 1.3.1", - "alloy-primitives 1.3.1", - "alloy-sol-type-parser 1.3.1", - "alloy-sol-types 1.3.1", + "alloy-json-abi 1.4.1", + "alloy-primitives 1.4.1", + "alloy-sol-type-parser 1.4.1", + "alloy-sol-types 1.4.1", "derive_more", "itoa", "serde", @@ -231,13 +222,13 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "741bdd7499908b3aa0b159bba11e71c8cddd009a2c2eb7a06e825f1ec87900a5" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "arbitrary", "crc", "rand 0.8.5", "serde", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -246,7 +237,7 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b82752a889170df67bbb36d42ca63c531eb16274f0d7299ae2a680facba17bd" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "arbitrary", "rand 0.8.5", @@ -259,14 +250,14 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d4769c6ffddca380b0070d71c8b7f30bed375543fe76bb2f74ec0acf4b7cd16" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "arbitrary", "k256", "rand 0.8.5", "serde", "serde_with", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -278,7 +269,7 @@ dependencies = [ "alloy-eip2124", "alloy-eip2930", "alloy-eip7702", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "alloy-serde", "arbitrary", @@ -291,27 +282,30 @@ dependencies = [ "serde", "serde_with", "sha2 0.10.9", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "alloy-evm" -version = "0.21.1" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48e536feefca2ba96c75798ac75a31046e8adfcefecdb6653803361045cc65b9" +checksum = "06a5f67ee74999aa4fe576a83be1996bdf74a30fce3d248bf2007d6fc7dae8aa" dependencies = [ "alloy-consensus", "alloy-eips", "alloy-hardforks", - "alloy-primitives 1.3.1", + "alloy-op-hardforks", + "alloy-primitives 1.4.1", + "alloy-rpc-types-engine", "alloy-rpc-types-eth", - "alloy-sol-types 1.3.1", + "alloy-sol-types 1.4.1", "auto_impl", "derive_more", "op-alloy-consensus", + "op-alloy-rpc-types-engine", "op-revm", "revm", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -321,7 +315,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a272533715aefc900f89d51db00c96e6fd4f517ea081a12fea482a352c8c815c" dependencies = [ "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-serde", "alloy-trie", "serde", @@ -336,7 +330,7 @@ checksum = "889eb3949b58368a09d4f16931c660275ef5fb08e5fbd4a96573b19c7085c41f" dependencies = [ "alloy-chains", "alloy-eip2124", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "auto_impl", "dyn-clone", "serde", @@ -344,24 +338,24 @@ dependencies = [ [[package]] name = "alloy-json-abi" -version = "0.8.25" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe6beff64ad0aa6ad1019a3db26fef565aefeb011736150ab73ed3366c3cfd1b" +checksum = "4584e3641181ff073e9d5bec5b3b8f78f9749d9fb108a1cfbc4399a4a139c72a" dependencies = [ - "alloy-primitives 0.8.25", - "alloy-sol-type-parser 0.8.25", + "alloy-primitives 0.8.26", + "alloy-sol-type-parser 0.8.26", "serde", "serde_json", ] [[package]] name = "alloy-json-abi" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "125a1c373261b252e53e04d6e92c37d881833afc1315fceab53fd46045695640" +checksum = "5513d5e6bd1cba6bdcf5373470f559f320c05c8c59493b6e98912fbe6733943f" dependencies = [ - "alloy-primitives 1.3.1", - "alloy-sol-type-parser 1.3.1", + "alloy-primitives 1.4.1", + "alloy-sol-type-parser 1.4.1", "serde", "serde_json", ] @@ -372,12 +366,12 @@ version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d91676d242c0ced99c0dd6d0096d7337babe9457cc43407d26aa6367fcf90553" dependencies = [ - "alloy-primitives 1.3.1", - "alloy-sol-types 1.3.1", + "alloy-primitives 1.4.1", + "alloy-sol-types 1.4.1", "http", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", "tracing", ] @@ -392,19 +386,19 @@ dependencies = [ "alloy-eips", "alloy-json-rpc", "alloy-network-primitives", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rpc-types-any", "alloy-rpc-types-eth", "alloy-serde", "alloy-signer", - "alloy-sol-types 1.3.1", + "alloy-sol-types 1.4.1", "async-trait", "auto_impl", "derive_more", "futures-utils-wasm", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -415,22 +409,22 @@ checksum = "223612259a080160ce839a4e5df0125ca403a1d5e7206cc911cea54af5d769aa" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-serde", "serde", ] [[package]] name = "alloy-op-evm" -version = "0.21.1" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19f09c7785a3f2df462e4bb898e8b682b43de488d9d44bf2e5264e0bba44af21" +checksum = "17aaeb600740c181bf29c9f138f9b228d115ea74fa6d0f0343e1952f1a766968" dependencies = [ "alloy-consensus", "alloy-eips", "alloy-evm", "alloy-op-hardforks", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "auto_impl", "op-alloy-consensus", "op-revm", @@ -445,24 +439,24 @@ checksum = "599c1d7dfbccb66603cb93fde00980d12848d32fe5e814f50562104a92df6487" dependencies = [ "alloy-chains", "alloy-hardforks", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "auto_impl", ] [[package]] name = "alloy-primitives" -version = "0.8.25" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c77490fe91a0ce933a1f219029521f20fc28c2c0ca95d53fa4da9c00b8d9d4e" +checksum = "777d58b30eb9a4db0e5f59bc30e8c2caef877fee7dc8734cf242a51a60f22e05" dependencies = [ "alloy-rlp", "bytes", "cfg-if", "const-hex", "derive_more", - "foldhash", + "foldhash 0.1.5", "hashbrown 0.15.5", - "indexmap 2.10.0", + "indexmap 2.11.4", "itoa", "k256", "keccak-asm", @@ -478,9 +472,9 @@ dependencies = [ [[package]] name = "alloy-primitives" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc9485c56de23438127a731a6b4c87803d49faf1a7068dcd1d8768aca3a9edb9" +checksum = "355bf68a433e0fd7f7d33d5a9fc2583fde70bf5c530f63b80845f8da5505cf28" dependencies = [ "alloy-rlp", "arbitrary", @@ -488,16 +482,16 @@ dependencies = [ "cfg-if", "const-hex", "derive_more", - "foldhash", - "getrandom 0.3.3", - "hashbrown 0.15.5", - "indexmap 2.10.0", + "foldhash 0.2.0", + "getrandom 0.3.4", + "hashbrown 0.16.0", + "indexmap 2.11.4", "itoa", "k256", "keccak-asm", "paste", "proptest", - "proptest-derive", + "proptest-derive 0.6.0", "rand 0.9.2", "ruint", "rustc-hash 2.1.1", @@ -518,14 +512,14 @@ dependencies = [ "alloy-json-rpc", "alloy-network", "alloy-network-primitives", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-pubsub", "alloy-rpc-client", "alloy-rpc-types-engine", "alloy-rpc-types-eth", "alloy-rpc-types-txpool", "alloy-signer", - "alloy-sol-types 1.3.1", + "alloy-sol-types 1.4.1", "alloy-transport", "alloy-transport-http", "alloy-transport-ipc", @@ -543,7 +537,7 @@ dependencies = [ "reqwest", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tracing", "url", @@ -557,7 +551,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eee7e3d343814ec0dfea69bd1820042a133a9d0b9ac5faf1e6eb133b43366315" dependencies = [ "alloy-json-rpc", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-transport", "auto_impl", "bimap", @@ -601,7 +595,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1154b12d470bef59951c62676e106f4ce5de73b987d86b9faa935acebb138ded" dependencies = [ "alloy-json-rpc", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-pubsub", "alloy-transport", "alloy-transport-http", @@ -626,7 +620,7 @@ version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "47ab76bf97648a1c6ad8fb00f0d594618942b5a9e008afbfb5c8a8fca800d574" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rpc-types-engine", "alloy-rpc-types-eth", "alloy-serde", @@ -640,7 +634,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af8ae38824376e855d73d4060462d86c32afe548af632597ccfd161bdd0fc628" dependencies = [ "alloy-genesis", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "serde", "serde_json", ] @@ -651,7 +645,7 @@ version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "456cfc2c1677260edbd7ce3eddb7de419cb46de0e9826c43401f42b0286a779a" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rpc-types-eth", "alloy-serde", "serde", @@ -675,7 +669,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfa4edd92c3124ec19b9d572dc7923d070fe5c2efb677519214affd6156a4463" dependencies = [ "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rpc-types-engine", "derive_more", "ethereum_ssz", @@ -683,7 +677,7 @@ dependencies = [ "serde", "serde_json", "serde_with", - "thiserror 2.0.16", + "thiserror 2.0.17", "tree_hash", "tree_hash_derive", ] @@ -694,7 +688,7 @@ version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a0ac29dd005c33e3f7e09087accc80843315303685c3f7a1b888002cd27785b" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "derive_more", "serde", "serde_with", @@ -708,7 +702,7 @@ checksum = "1d9d173854879bcf26c7d71c1c3911972a3314df526f4349ffe488e676af577d" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "alloy-serde", "derive_more", @@ -730,16 +724,16 @@ dependencies = [ "alloy-consensus-any", "alloy-eips", "alloy-network-primitives", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "alloy-serde", - "alloy-sol-types 1.3.1", + "alloy-sol-types 1.4.1", "arbitrary", "itertools 0.14.0", "serde", "serde_json", "serde_with", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -750,7 +744,7 @@ checksum = "d3820683ece7cdc31e44d87c88c0ff9b972a1a2fd1f2124cc72ce5c928e64f0d" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rpc-types-eth", "alloy-serde", "serde", @@ -763,12 +757,12 @@ version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c331c8e48665607682e8a9549a2347c13674d4fbcbdc342e7032834eba2424f4" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rpc-types-eth", "alloy-serde", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -777,7 +771,7 @@ version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e2f66afe1e76ca4485e593980056f061b2bdae2055486a062fca050ff111a52" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rpc-types-eth", "alloy-serde", "serde", @@ -789,7 +783,7 @@ version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8468f1a7f9ee3bae73c24eead0239abea720dbf7779384b9c7e20d51bfb6b0" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "arbitrary", "serde", "serde_json", @@ -801,13 +795,13 @@ version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33387c90b0a5021f45a5a77c2ce6c49b8f6980e66a318181468fb24cea771670" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "async-trait", "auto_impl", "either", "elliptic-curve", "k256", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -818,22 +812,22 @@ checksum = "b55d9e795c85e36dcea08786d2e7ae9b73cb554b6bea6ac4c212def24e1b4d03" dependencies = [ "alloy-consensus", "alloy-network", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-signer", "async-trait", "k256", "rand 0.8.5", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "alloy-sol-macro" -version = "0.8.25" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10ae8e9a91d328ae954c22542415303919aabe976fe7a92eb06db1b68fd59f2" +checksum = "e68b32b6fa0d09bb74b4cefe35ccc8269d711c26629bc7cd98a47eeb12fe353f" dependencies = [ - "alloy-sol-macro-expander 0.8.25", - "alloy-sol-macro-input 0.8.25", + "alloy-sol-macro-expander 0.8.26", + "alloy-sol-macro-input 0.8.26", "proc-macro-error2", "proc-macro2", "quote", @@ -842,12 +836,12 @@ dependencies = [ [[package]] name = "alloy-sol-macro" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d20d867dcf42019d4779519a1ceb55eba8d7f3d0e4f0a89bcba82b8f9eb01e48" +checksum = "f3ce480400051b5217f19d6e9a82d9010cdde20f1ae9c00d53591e4a1afbb312" dependencies = [ - "alloy-sol-macro-expander 1.3.1", - "alloy-sol-macro-input 1.3.1", + "alloy-sol-macro-expander 1.4.1", + "alloy-sol-macro-input 1.4.1", "proc-macro-error2", "proc-macro2", "quote", @@ -856,46 +850,46 @@ dependencies = [ [[package]] name = "alloy-sol-macro-expander" -version = "0.8.25" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83ad5da86c127751bc607c174d6c9fe9b85ef0889a9ca0c641735d77d4f98f26" +checksum = "2afe6879ac373e58fd53581636f2cce843998ae0b058ebe1e4f649195e2bd23c" dependencies = [ - "alloy-sol-macro-input 0.8.25", + "alloy-sol-macro-input 0.8.26", "const-hex", "heck", - "indexmap 2.10.0", + "indexmap 2.11.4", "proc-macro-error2", "proc-macro2", "quote", "syn 2.0.106", - "syn-solidity 0.8.25", + "syn-solidity 0.8.26", "tiny-keccak", ] [[package]] name = "alloy-sol-macro-expander" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b74e91b0b553c115d14bd0ed41898309356dc85d0e3d4b9014c4e7715e48c8ad" +checksum = "6d792e205ed3b72f795a8044c52877d2e6b6e9b1d13f431478121d8d4eaa9028" dependencies = [ - "alloy-json-abi 1.3.1", - "alloy-sol-macro-input 1.3.1", + "alloy-json-abi 1.4.1", + "alloy-sol-macro-input 1.4.1", "const-hex", "heck", - "indexmap 2.10.0", + "indexmap 2.11.4", "proc-macro-error2", "proc-macro2", "quote", "syn 2.0.106", - "syn-solidity 1.3.1", + "syn-solidity 1.4.1", "tiny-keccak", ] [[package]] name = "alloy-sol-macro-input" -version = "0.8.25" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3d30f0d3f9ba3b7686f3ff1de9ee312647aac705604417a2f40c604f409a9e" +checksum = "c3ba01aee235a8c699d07e5be97ba215607564e71be72f433665329bec307d28" dependencies = [ "const-hex", "dunce", @@ -904,16 +898,16 @@ dependencies = [ "proc-macro2", "quote", "syn 2.0.106", - "syn-solidity 0.8.25", + "syn-solidity 0.8.26", ] [[package]] name = "alloy-sol-macro-input" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84194d31220803f5f62d0a00f583fd3a062b36382e2bea446f1af96727754565" +checksum = "0bd1247a8f90b465ef3f1207627547ec16940c35597875cdc09c49d58b19693c" dependencies = [ - "alloy-json-abi 1.3.1", + "alloy-json-abi 1.4.1", "const-hex", "dunce", "heck", @@ -922,14 +916,14 @@ dependencies = [ "quote", "serde_json", "syn 2.0.106", - "syn-solidity 1.3.1", + "syn-solidity 1.4.1", ] [[package]] name = "alloy-sol-type-parser" -version = "0.8.25" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d162f8524adfdfb0e4bd0505c734c985f3e2474eb022af32eef0d52a4f3935c" +checksum = "4c13fc168b97411e04465f03e632f31ef94cad1c7c8951bf799237fd7870d535" dependencies = [ "serde", "winnow", @@ -937,9 +931,9 @@ dependencies = [ [[package]] name = "alloy-sol-type-parser" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe8c27b3cf6b2bb8361904732f955bc7c05e00be5f469cec7e2280b6167f3ff0" +checksum = "954d1b2533b9b2c7959652df3076954ecb1122a28cc740aa84e7b0a49f6ac0a9" dependencies = [ "serde", "winnow", @@ -947,26 +941,26 @@ dependencies = [ [[package]] name = "alloy-sol-types" -version = "0.8.25" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d43d5e60466a440230c07761aa67671d4719d46f43be8ea6e7ed334d8db4a9ab" +checksum = "6e960c4b52508ef2ae1e37cae5058e905e9ae099b107900067a503f8c454036f" dependencies = [ - "alloy-json-abi 0.8.25", - "alloy-primitives 0.8.25", - "alloy-sol-macro 0.8.25", + "alloy-json-abi 0.8.26", + "alloy-primitives 0.8.26", + "alloy-sol-macro 0.8.26", "const-hex", "serde", ] [[package]] name = "alloy-sol-types" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5383d34ea00079e6dd89c652bcbdb764db160cef84e6250926961a0b2295d04" +checksum = "70319350969a3af119da6fb3e9bddb1bce66c9ea933600cb297c8b1850ad2a3c" dependencies = [ - "alloy-json-abi 1.3.1", - "alloy-primitives 1.3.1", - "alloy-sol-macro 1.3.1", + "alloy-json-abi 1.4.1", + "alloy-primitives 1.4.1", + "alloy-sol-macro 1.4.1", "serde", ] @@ -977,7 +971,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "702002659778d89a94cd4ff2044f6b505460df6c162e2f47d1857573845b0ace" dependencies = [ "alloy-json-rpc", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "auto_impl", "base64 0.22.1", "derive_more", @@ -986,7 +980,7 @@ dependencies = [ "parking_lot", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tower 0.5.2", "tracing", @@ -1053,7 +1047,7 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3412d52bb97c6c6cc27ccc28d4e6e8cf605469101193b50b0bd5813b1f990b5" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "arbitrary", "arrayvec", @@ -1061,7 +1055,7 @@ dependencies = [ "derive_more", "nybbles", "proptest", - "proptest-derive", + "proptest-derive 0.5.1", "serde", "smallvec", "tracing", @@ -1073,19 +1067,13 @@ version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7bf39928a5e70c9755d6811a2928131b53ba785ad37c8bf85c90175b5d43b818" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "darling 0.21.3", "proc-macro2", "quote", "syn 2.0.106", ] -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - [[package]] name = "android_system_properties" version = "0.1.5" @@ -1097,9 +1085,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.20" +version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ae563653d1938f79b1ab1b5e668c87c76a9930414574a6583a7b7e11a8e6192" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" dependencies = [ "anstyle", "anstyle-parse", @@ -1112,9 +1100,9 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.11" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" +checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" [[package]] name = "anstyle-parse" @@ -1147,9 +1135,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.99" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" [[package]] name = "aquamarine" @@ -1485,8 +1473,8 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f6fd5ddaf0351dff5b8da21b2fb4ff8e08ddd02857f0bf69c47639106c0fff0" dependencies = [ - "asn1-rs-derive", - "asn1-rs-impl", + "asn1-rs-derive 0.4.0", + "asn1-rs-impl 0.1.0", "displaydoc", "nom", "num-traits", @@ -1495,6 +1483,22 @@ dependencies = [ "time", ] +[[package]] +name = "asn1-rs" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56624a96882bb8c26d61312ae18cb45868e5a9992ea73c58e45c3101e56a1e60" +dependencies = [ + "asn1-rs-derive 0.6.0", + "asn1-rs-impl 0.2.0", + "displaydoc", + "nom", + "num-traits", + "rusticata-macros", + "thiserror 2.0.17", + "time", +] + [[package]] name = "asn1-rs-derive" version = "0.4.0" @@ -1507,6 +1511,18 @@ dependencies = [ "synstructure 0.12.6", ] +[[package]] +name = "asn1-rs-derive" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3109e49b1e4909e9db6515a30c633684d68cdeaa252f215214cb4fa1a5bfee2c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", + "synstructure 0.13.2", +] + [[package]] name = "asn1-rs-impl" version = "0.1.0" @@ -1518,6 +1534,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "asn1-rs-impl" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "asn1_der" version = "0.7.6" @@ -1526,18 +1553,33 @@ checksum = "155a5a185e42c6b77ac7b88a15143d930a9e9727a5b7b77eed417404ab15c247" [[package]] name = "async-compression" -version = "0.4.27" +version = "0.4.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddb939d66e4ae03cee6091612804ba446b12878410cfa17f785f4dd67d4014e8" +checksum = "5a89bce6054c720275ac2432fbba080a66a2106a44a1b804553930ca6909f4e0" dependencies = [ - "brotli", - "flate2", + "compression-codecs", + "compression-core", "futures-core", - "memchr", "pin-project-lite", "tokio", - "zstd", - "zstd-safe", +] + +[[package]] +name = "async-io" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" +dependencies = [ + "autocfg", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix 1.1.2", + "slab", + "windows-sys 0.61.2", ] [[package]] @@ -1595,12 +1637,37 @@ dependencies = [ "rustc_version 0.4.1", ] +[[package]] +name = "asynchronous-codec" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a860072022177f903e59730004fb5dc13db9275b79bb2aef7ba8ce831956c233" +dependencies = [ + "bytes", + "futures-sink", + "futures-util", + "memchr", + "pin-project-lite", +] + [[package]] name = "atomic-waker" version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" +[[package]] +name = "attohttpc" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16e2cdb6d5ed835199484bb92bb8b3edd526effe995c61732580439c1a67e2e9" +dependencies = [ + "base64 0.22.1", + "http", + "log", + "url", +] + [[package]] name = "aurora-engine-modexp" version = "1.2.0" @@ -1680,11 +1747,11 @@ dependencies = [ [[package]] name = "axum" -version = "0.8.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "021e862c184ae977658b36c4500f7feac3221ca5da43e3f25bd04ab6c79a29b5" +checksum = "8a18ed336352031311f4e0b4dd2ff392d4fbb370777c9d18d7fc9d7359f73871" dependencies = [ - "axum-core 0.5.2", + "axum-core 0.5.5", "bytes", "form_urlencoded", "futures-util", @@ -1699,8 +1766,7 @@ dependencies = [ "mime", "percent-encoding", "pin-project-lite", - "rustversion", - "serde", + "serde_core", "serde_json", "serde_path_to_error", "serde_urlencoded", @@ -1734,9 +1800,9 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.5.2" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68464cd0412f486726fb3373129ef5d2993f90c34bc2bc1c1e9943b2f4fc7ca6" +checksum = "59446ce19cd142f8833f856eb31f3eb097812d1479ab224f54d72428ca21ea22" dependencies = [ "bytes", "futures-core", @@ -1745,7 +1811,6 @@ dependencies = [ "http-body-util", "mime", "pin-project-lite", - "rustversion", "sync_wrapper", "tower-layer", "tower-service", @@ -1768,21 +1833,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "backtrace" -version = "0.3.75" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" -dependencies = [ - "addr2line", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", - "windows-targets 0.52.6", -] - [[package]] name = "base-x" version = "0.2.11" @@ -1795,6 +1845,16 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" +[[package]] +name = "base256emoji" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e9430d9a245a77c92176e649af6e275f20839a48389859d1661e9a128d077c" +dependencies = [ + "const-str", + "match-lookup", +] + [[package]] name = "base64" version = "0.21.7" @@ -1843,7 +1903,7 @@ version = "0.69.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", "cexpr", "clang-sys", "itertools 0.12.1", @@ -1862,29 +1922,29 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.70.1" +version = "0.71.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" +checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", "cexpr", "clang-sys", - "itertools 0.13.0", + "itertools 0.10.5", "proc-macro2", "quote", "regex", - "rustc-hash 1.1.0", + "rustc-hash 2.1.1", "shlex", "syn 2.0.106", ] [[package]] name = "bindgen" -version = "0.71.1" +version = "0.72.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3" +checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", "cexpr", "clang-sys", "itertools 0.13.0", @@ -1935,18 +1995,18 @@ checksum = "2d7e60934ceec538daadb9d8432424ed043a904d8e0243f3c6446bce549a46ac" [[package]] name = "bitfield" -version = "0.19.1" +version = "0.19.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db1bcd90f88eabbf0cadbfb87a45bceeaebcd3b4bc9e43da379cd2ef0162590d" +checksum = "6bf79f42d21f18b5926a959280215903e659760da994835d27c3a0c5ff4f898f" dependencies = [ "bitfield-macros", ] [[package]] name = "bitfield-macros" -version = "0.19.1" +version = "0.19.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3787a07661997bfc05dd3431e379c0188573f78857080cf682e1393ab8e4d64c" +checksum = "6115af052c7914c0cbb97195e5c72cb61c511527250074f5c041d1048b0d8b16" dependencies = [ "proc-macro2", "quote", @@ -1961,9 +2021,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.2" +version = "2.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a65b545ab31d687cff52899d4890855fec459eb6afe0da6417b8a18da87aa29" +checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" dependencies = [ "serde", ] @@ -1981,6 +2041,15 @@ dependencies = [ "wyz", ] +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest 0.10.7", +] + [[package]] name = "block-buffer" version = "0.9.0" @@ -2010,9 +2079,9 @@ dependencies = [ [[package]] name = "blst" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fd49896f12ac9b6dcd7a5998466b9b58263a695a3dd1ecc1aaca2e12a90b080" +checksum = "dcdb4c7013139a150f9fc55d123186dbfaba0d912817466282c73ac49e71fb45" dependencies = [ "cc", "glob", @@ -2026,11 +2095,11 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c340fe0f0b267787095cbe35240c6786ff19da63ec7b69367ba338eace8169b" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", "boa_interner", "boa_macros", "boa_string", - "indexmap 2.10.0", + "indexmap 2.11.4", "num-bigint", "rustc-hash 2.1.1", ] @@ -2042,7 +2111,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f620c3f06f51e65c0504ddf04978be1b814ac6586f0b45f6019801ab5efd37f9" dependencies = [ "arrayvec", - "bitflags 2.9.2", + "bitflags 2.9.4", "boa_ast", "boa_gc", "boa_interner", @@ -2056,7 +2125,7 @@ dependencies = [ "fast-float2", "hashbrown 0.15.5", "icu_normalizer 1.5.0", - "indexmap 2.10.0", + "indexmap 2.11.4", "intrusive-collections", "itertools 0.13.0", "num-bigint", @@ -2076,7 +2145,7 @@ dependencies = [ "static_assertions", "tap", "thin-vec", - "thiserror 2.0.16", + "thiserror 2.0.17", "time", ] @@ -2102,7 +2171,7 @@ dependencies = [ "boa_gc", "boa_macros", "hashbrown 0.15.5", - "indexmap 2.10.0", + "indexmap 2.11.4", "once_cell", "phf", "rustc-hash 2.1.1", @@ -2127,7 +2196,7 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9cc142dac798cdc6e2dbccfddeb50f36d2523bb977a976e19bdb3ae19b740804" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", "boa_ast", "boa_interner", "boa_macros", @@ -2190,7 +2259,7 @@ dependencies = [ "serde_json", "serde_repr", "serde_urlencoded", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tokio-util", "tower-service", @@ -2268,18 +2337,18 @@ checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" [[package]] name = "bytemuck" -version = "1.23.2" +version = "1.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.10.1" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f154e572231cb6ba2bd1176980827e3d5dc04cc183a75dea38109fbdd672d29" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", @@ -2303,9 +2372,9 @@ dependencies = [ [[package]] name = "c-kzg" -version = "2.1.4" +version = "2.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "137a2a2878ed823ef1bd73e5441e245602aae5360022113b8ad259ca4b5b8727" +checksum = "e00bf4b112b07b505472dbefd19e37e53307e2bfed5a79e0cc161d58ccd0e687" dependencies = [ "arbitrary", "blst", @@ -2319,11 +2388,11 @@ dependencies = [ [[package]] name = "camino" -version = "1.1.11" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d07aa9a93b00c76f71bc35d598bed923f6d4f3a9ca5c24b7737ae1a292841c0" +checksum = "276a59bf2b2c967788139340c9f0c5b12d7fd6630315c15c217e559de85d2609" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -2343,7 +2412,7 @@ checksum = "4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181fa" dependencies = [ "camino", "cargo-platform", - "semver 1.0.26", + "semver 1.0.27", "serde", "serde_json", ] @@ -2356,10 +2425,10 @@ checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" dependencies = [ "camino", "cargo-platform", - "semver 1.0.26", + "semver 1.0.27", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -2385,7 +2454,7 @@ checksum = "975982cdb7ad6a142be15bdf84aea7ec6a9e5d4d797c004d43185b24cfe4e684" dependencies = [ "clap", "heck", - "indexmap 2.10.0", + "indexmap 2.11.4", "log", "proc-macro2", "quote", @@ -2396,6 +2465,15 @@ dependencies = [ "toml", ] +[[package]] +name = "cbor4ii" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "472931dd4dfcc785075b09be910147f9c6258883fc4591d0dac6116392b2daa6" +dependencies = [ + "serde", +] + [[package]] name = "cc" version = "1.2.15" @@ -2434,19 +2512,42 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +[[package]] +name = "chacha20" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "chacha20poly1305" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" +dependencies = [ + "aead", + "chacha20", + "cipher", + "poly1305", + "zeroize", +] + [[package]] name = "chrono" -version = "0.4.41" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" dependencies = [ - "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "serde", "wasm-bindgen", - "windows-link", + "windows-link 0.2.1", ] [[package]] @@ -2457,6 +2558,7 @@ checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ "crypto-common", "inout", + "zeroize", ] [[package]] @@ -2472,9 +2574,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.45" +version = "4.5.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc0e74a703892159f5ae7d3aac52c8e6c392f5ae5f359c70b5881d60aaac318" +checksum = "f4512b90fa68d3a9932cea5184017c5d200f5921df706d45e853537dea51508f" dependencies = [ "clap_builder", "clap_derive", @@ -2482,9 +2584,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.44" +version = "4.5.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3e7f4214277f3c7aa526a59dd3fbe306a370daee1f8b7b8c987069cd8e888a8" +checksum = "0025e98baa12e766c67ba13ff4695a887a1eba19569aad00a472546795bd6730" dependencies = [ "anstream", "anstyle", @@ -2494,9 +2596,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.45" +version = "4.5.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14cb31bb0a7d536caef2639baa7fad459e15c3144efefa6dbd1c84562c4739f6" +checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" dependencies = [ "heck", "proc-macro2", @@ -2506,9 +2608,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" +checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" [[package]] name = "cmake" @@ -2525,7 +2627,7 @@ version = "0.3.0" source = "git+https://github.com/automata-network/coco-provider-sdk#3a832b8cf5e88ef71649ab56e4efd67067b26b7c" dependencies = [ "bincode", - "bitfield 0.19.1", + "bitfield 0.19.3", "cbindgen", "iocuddle", "libc", @@ -2556,11 +2658,11 @@ dependencies = [ [[package]] name = "comfy-table" -version = "7.1.4" +version = "7.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a65ebfec4fb190b6f90e944a817d60499ee0744e582530e2c9900a22e591d9a" +checksum = "b03b7db8e0b4b2fdad6c551e634134e99ec000e5c8c3b6856c65e8bbaded7a3b" dependencies = [ - "crossterm", + "crossterm 0.29.0", "unicode-segmentation", "unicode-width 0.2.0", ] @@ -2579,6 +2681,26 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "compression-codecs" +version = "0.4.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef8a506ec4b81c460798f572caead636d57d3d7e940f998160f52bd254bf2d23" +dependencies = [ + "brotli", + "compression-core", + "flate2", + "memchr", + "zstd", + "zstd-safe", +] + +[[package]] +name = "compression-core" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e47641d3deaf41fb1538ac1f54735925e275eaf3bf4d55c81b137fba797e5cbb" + [[package]] name = "concat-kdf" version = "0.1.0" @@ -2599,15 +2721,14 @@ dependencies = [ [[package]] name = "const-hex" -version = "1.15.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dccd746bf9b1038c0507b7cec21eb2b11222db96a2902c96e8c185d6d20fb9c4" +checksum = "3bb320cac8a0750d7f25280aa97b09c26edfe161164238ecbbb31092b079e735" dependencies = [ "cfg-if", "cpufeatures", - "hex", "proptest", - "serde", + "serde_core", ] [[package]] @@ -2616,11 +2737,17 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "const-str" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f421161cb492475f1661ddc9815a745a1c894592070661180fdec3d4872e9c3" + [[package]] name = "const_format" -version = "0.2.34" +version = "0.2.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" +checksum = "7faa7469a93a566e9ccc1c73fe783b4a65c274c5ace346038dca9c39fe0030ad" dependencies = [ "const_format_proc_macros", ] @@ -2759,7 +2886,7 @@ version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", "crossterm_winapi", "mio", "parking_lot", @@ -2769,6 +2896,20 @@ dependencies = [ "winapi", ] +[[package]] +name = "crossterm" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b" +dependencies = [ + "bitflags 2.9.4", + "crossterm_winapi", + "document-features", + "parking_lot", + "rustix 1.1.2", + "winapi", +] + [[package]] name = "crossterm_winapi" version = "0.9.1" @@ -2988,7 +3129,7 @@ name = "dcap-rs" version = "0.1.0" source = "git+https://github.com/automata-network/dcap-rs.git?rev=d847b8f75a493640c4881bdf67775250b6baefab#d847b8f75a493640c4881bdf67775250b6baefab" dependencies = [ - "alloy-sol-types 0.8.25", + "alloy-sol-types 0.8.26", "chrono", "hex", "p256", @@ -2997,7 +3138,7 @@ dependencies = [ "sha2 0.10.9", "sha3", "time", - "x509-parser", + "x509-parser 0.15.1", ] [[package]] @@ -3034,7 +3175,21 @@ version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbd676fbbab537128ef0278adb5576cf363cff6aa22a7b24effe97347cfab61e" dependencies = [ - "asn1-rs", + "asn1-rs 0.5.2", + "displaydoc", + "nom", + "num-bigint", + "num-traits", + "rusticata-macros", +] + +[[package]] +name = "der-parser" +version = "10.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07da5016415d5a3c4dd39b11ed26f915f52fc4e0dc197d87908bc916e51bc1a6" +dependencies = [ + "asn1-rs 0.7.1", "displaydoc", "nom", "num-bigint", @@ -3044,12 +3199,12 @@ dependencies = [ [[package]] name = "deranged" -version = "0.4.0" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +checksum = "a41953f86f8a05768a6cda24def994fd2f424b04ec5c719cf89989779f199071" dependencies = [ "powerfmt", - "serde", + "serde_core", ] [[package]] @@ -3193,7 +3348,7 @@ dependencies = [ "libc", "option-ext", "redox_users 0.5.2", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -3268,12 +3423,27 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aac81fa3e28d21450aa4d2ac065992ba96a1d7303efbce51a95f4fd175b67562" +[[package]] +name = "document-features" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d" +dependencies = [ + "litrs", +] + [[package]] name = "dotenvy" version = "0.15.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" +[[package]] +name = "dtoa" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6add3b8cff394282be81f3fc1a0605db594ed69890078ca6e2cab1c408bcf04" + [[package]] name = "dtor" version = "0.0.6" @@ -3478,12 +3648,12 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -3534,7 +3704,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3dc1355dbb41fbbd34ec28d4fb2a57d9a70c67ac3c19f6a5ca4d4a176b9e997a" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "hex", "serde", "serde_derive", @@ -3543,11 +3713,11 @@ dependencies = [ [[package]] name = "ethereum_ssz" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ca8ba45b63c389c6e115b095ca16381534fdcc03cf58176a3f8554db2dbe19b" +checksum = "0dcddb2554d19cde19b099fadddde576929d7a4d0c1cd3512d1fd95cf174375c" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "ethereum_serde_utils", "itertools 0.13.0", "serde", @@ -3558,9 +3728,9 @@ dependencies = [ [[package]] name = "ethereum_ssz_derive" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd55d08012b4e0dfcc92b8d6081234df65f2986ad34cc76eeed69c5e2ce7506" +checksum = "a657b6b3b7e153637dc6bdc6566ad9279d9ee11a15b12cfb24a2e04360637e9f" dependencies = [ "darling 0.20.11", "proc-macro2", @@ -3661,14 +3831,14 @@ checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" [[package]] name = "filetime" -version = "0.2.25" +version = "0.2.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" +checksum = "bc0505cd1b6fa6580283f6bdf70a73fcf4aba1184038c90902b92b3dd0df63ed" dependencies = [ "cfg-if", "libc", "libredox", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -3685,9 +3855,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.1.2" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" +checksum = "dc5a4e564e38c699f2880d3fda590bedc2e69f3f84cd48b457bd892ce61d0aa9" dependencies = [ "crc32fast", "miniz_oxide", @@ -3705,6 +3875,12 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + [[package]] name = "foreign-types" version = "0.3.2" @@ -3722,9 +3898,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" dependencies = [ "percent-encoding", ] @@ -3765,6 +3941,16 @@ dependencies = [ "futures-util", ] +[[package]] +name = "futures-bounded" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91f328e7fb845fc832912fb6a34f40cf6d1888c92f974d1893a54e97b5ff542e" +dependencies = [ + "futures-timer", + "futures-util", +] + [[package]] name = "futures-channel" version = "0.3.31" @@ -3790,6 +3976,7 @@ dependencies = [ "futures-core", "futures-task", "futures-util", + "num_cpus", ] [[package]] @@ -3798,6 +3985,16 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" +[[package]] +name = "futures-lite" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" +dependencies = [ + "futures-core", + "pin-project-lite", +] + [[package]] name = "futures-macro" version = "0.3.31" @@ -3809,6 +4006,17 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "futures-rustls" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f2f12607f92c69b12ed746fabf9ca4f5c482cba46679c1a75b874ed7c26adb" +dependencies = [ + "futures-io", + "rustls", + "rustls-pki-types", +] + [[package]] name = "futures-sink" version = "0.3.31" @@ -3855,25 +4063,11 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" -[[package]] -name = "generator" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d18470a76cb7f8ff746cf1f7470914f900252ec36bbc40b569d74b1258446827" -dependencies = [ - "cc", - "cfg-if", - "libc", - "log", - "rustversion", - "windows 0.61.3", -] - [[package]] name = "generic-array" -version = "0.14.7" +version = "0.14.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" dependencies = [ "serde", "typenum", @@ -3890,21 +4084,21 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "wasi 0.11.1+wasi-snapshot-preview1", + "wasi", "wasm-bindgen", ] [[package]] name = "getrandom" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "js-sys", "libc", "r-efi", - "wasi 0.14.2+wasi-0.2.4", + "wasip2", "wasm-bindgen", ] @@ -3918,19 +4112,13 @@ dependencies = [ "polyval", ] -[[package]] -name = "gimli" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" - [[package]] name = "git2" version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2deb07a133b1520dc1a5690e9bd08950108873d7ed5de38dcc74d3b5ebffa110" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", "libc", "libgit2-sys", "log", @@ -3991,12 +4179,12 @@ dependencies = [ [[package]] name = "gmp-mpfr-sys" -version = "1.6.5" +version = "1.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c66d61197a68f6323b9afa616cf83d55d69191e1bf364d4eb7d35ae18defe776" +checksum = "60f8970a75c006bb2f8ae79c6768a116dd215fa8346a87aed99bf9d82ca43394" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -4022,7 +4210,7 @@ dependencies = [ "futures-core", "futures-sink", "http", - "indexmap 2.10.0", + "indexmap 2.11.4", "slab", "tokio", "tokio-util", @@ -4064,7 +4252,17 @@ checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ "allocator-api2", "equivalent", - "foldhash", + "foldhash 0.1.5", + "serde", +] + +[[package]] +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" +dependencies = [ + "foldhash 0.2.0", "serde", ] @@ -4104,9 +4302,6 @@ name = "hex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -dependencies = [ - "serde", -] [[package]] name = "hex-conservative" @@ -4136,7 +4331,8 @@ dependencies = [ "rand 0.9.2", "ring", "serde", - "thiserror 2.0.16", + "socket2 0.5.10", + "thiserror 2.0.17", "tinyvec", "tokio", "tracing", @@ -4160,7 +4356,7 @@ dependencies = [ "resolv-conf", "serde", "smallvec", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tracing", ] @@ -4258,9 +4454,9 @@ checksum = "91f255a4535024abf7640cb288260811fc14794f62b063652ed349f9a6c2348e" [[package]] name = "humantime" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b112acc8b3adf4b107a8ec20977da0273a8c386765a3ec0229bd500a1443f9f" +checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" [[package]] name = "humantime-serde" @@ -4326,7 +4522,7 @@ dependencies = [ "tokio", "tokio-rustls", "tower-service", - "webpki-roots 1.0.2", + "webpki-roots 1.0.3", ] [[package]] @@ -4360,9 +4556,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e" +checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" dependencies = [ "base64 0.22.1", "bytes", @@ -4376,7 +4572,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.0", + "socket2 0.6.1", "system-configuration", "tokio", "tower-service", @@ -4401,9 +4597,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.63" +version = "0.1.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -4411,7 +4607,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core 0.61.2", + "windows-core 0.62.2", ] [[package]] @@ -4635,9 +4831,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "1.0.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" dependencies = [ "idna_adapter", "smallvec", @@ -4654,6 +4850,16 @@ dependencies = [ "icu_properties 2.0.1", ] +[[package]] +name = "if-addrs" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cabb0019d51a643781ff15c9c8a3e5dedc365c47211270f4e8f82812fedd8f0a" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + [[package]] name = "if-addrs" version = "0.13.4" @@ -4664,6 +4870,50 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "if-watch" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdf9d64cfcf380606e64f9a0bcf493616b65331199f984151a6fa11a7b3cde38" +dependencies = [ + "async-io", + "core-foundation 0.9.4", + "fnv", + "futures", + "if-addrs 0.10.2", + "ipnet", + "log", + "netlink-packet-core", + "netlink-packet-route", + "netlink-proto", + "netlink-sys", + "rtnetlink", + "system-configuration", + "tokio", + "windows 0.53.0", +] + +[[package]] +name = "igd-next" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "516893339c97f6011282d5825ac94fc1c7aad5cad26bdc2d0cee068c0bf97f97" +dependencies = [ + "async-trait", + "attohttpc", + "bytes", + "futures", + "http", + "http-body-util", + "hyper", + "hyper-util", + "log", + "rand 0.9.2", + "tokio", + "url", + "xmltree", +] + [[package]] name = "impl-codec" version = "0.6.0" @@ -4722,14 +4972,15 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.10.0" +version = "2.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" +checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" dependencies = [ "arbitrary", "equivalent", - "hashbrown 0.15.5", + "hashbrown 0.16.0", "serde", + "serde_core", ] [[package]] @@ -4744,7 +4995,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", "inotify-sys", "libc", ] @@ -4805,17 +5056,6 @@ dependencies = [ "memoffset", ] -[[package]] -name = "io-uring" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4" -dependencies = [ - "bitflags 2.9.2", - "cfg-if", - "libc", -] - [[package]] name = "iocuddle" version = "0.1.1" @@ -4922,19 +5162,19 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" [[package]] name = "jobserver" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", "libc", ] [[package]] name = "js-sys" -version = "0.3.77" +version = "0.3.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" dependencies = [ "once_cell", "wasm-bindgen", @@ -4989,7 +5229,7 @@ dependencies = [ "rustls-pki-types", "rustls-platform-verifier", "soketto", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tokio-rustls", "tokio-util", @@ -5015,7 +5255,7 @@ dependencies = [ "rustc-hash 2.1.1", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tower 0.5.2", "tracing", @@ -5041,7 +5281,7 @@ dependencies = [ "rustc-hash 2.1.1", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tokio-stream", "tower 0.5.2", @@ -5065,7 +5305,7 @@ dependencies = [ "rustls-platform-verifier", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tower 0.5.2", "url", @@ -5088,7 +5328,7 @@ dependencies = [ "rustls-platform-verifier", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tower 0.5.2", "url", @@ -5137,7 +5377,7 @@ dependencies = [ "serde", "serde_json", "soketto", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tokio-stream", "tokio-util", @@ -5164,7 +5404,7 @@ dependencies = [ "serde", "serde_json", "soketto", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tokio-stream", "tokio-util", @@ -5180,7 +5420,7 @@ dependencies = [ "http", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -5192,7 +5432,7 @@ dependencies = [ "http", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -5304,9 +5544,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.175" +version = "0.2.177" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" [[package]] name = "libgit2-sys" @@ -5322,12 +5562,12 @@ dependencies = [ [[package]] name = "libloading" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" dependencies = [ "cfg-if", - "windows-targets 0.53.3", + "windows-link 0.2.1", ] [[package]] @@ -5336,6 +5576,149 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" +[[package]] +name = "libp2p" +version = "0.56.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce71348bf5838e46449ae240631117b487073d5f347c06d434caddcb91dceb5a" +dependencies = [ + "bytes", + "either", + "futures", + "futures-timer", + "getrandom 0.2.16", + "libp2p-allow-block-list", + "libp2p-autonat", + "libp2p-connection-limits", + "libp2p-core", + "libp2p-dns", + "libp2p-identify", + "libp2p-identity", + "libp2p-mdns", + "libp2p-metrics", + "libp2p-noise", + "libp2p-ping", + "libp2p-quic", + "libp2p-request-response", + "libp2p-swarm", + "libp2p-tcp", + "libp2p-upnp", + "libp2p-yamux", + "multiaddr", + "pin-project", + "rw-stream-sink", + "thiserror 2.0.17", +] + +[[package]] +name = "libp2p-allow-block-list" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d16ccf824ee859ca83df301e1c0205270206223fd4b1f2e512a693e1912a8f4a" +dependencies = [ + "libp2p-core", + "libp2p-identity", + "libp2p-swarm", +] + +[[package]] +name = "libp2p-autonat" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fab5e25c49a7d48dac83d95d8f3bac0a290d8a5df717012f6e34ce9886396c0b" +dependencies = [ + "async-trait", + "asynchronous-codec", + "either", + "futures", + "futures-bounded", + "futures-timer", + "libp2p-core", + "libp2p-identity", + "libp2p-request-response", + "libp2p-swarm", + "quick-protobuf", + "quick-protobuf-codec", + "rand 0.8.5", + "rand_core 0.6.4", + "thiserror 2.0.17", + "tracing", + "web-time", +] + +[[package]] +name = "libp2p-connection-limits" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a18b8b607cf3bfa2f8c57db9c7d8569a315d5cc0a282e6bfd5ebfc0a9840b2a0" +dependencies = [ + "libp2p-core", + "libp2p-identity", + "libp2p-swarm", +] + +[[package]] +name = "libp2p-core" +version = "0.43.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d28e2d2def7c344170f5c6450c0dbe3dfef655610dbfde2f6ac28a527abbe36" +dependencies = [ + "either", + "fnv", + "futures", + "futures-timer", + "libp2p-identity", + "multiaddr", + "multihash", + "multistream-select", + "parking_lot", + "pin-project", + "quick-protobuf", + "rand 0.8.5", + "rw-stream-sink", + "thiserror 2.0.17", + "tracing", + "unsigned-varint 0.8.0", + "web-time", +] + +[[package]] +name = "libp2p-dns" +version = "0.44.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b770c1c8476736ca98c578cba4b505104ff8e842c2876b528925f9766379f9a" +dependencies = [ + "async-trait", + "futures", + "hickory-resolver", + "libp2p-core", + "libp2p-identity", + "parking_lot", + "smallvec", + "tracing", +] + +[[package]] +name = "libp2p-identify" +version = "0.47.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ab792a8b68fdef443a62155b01970c81c3aadab5e659621b063ef252a8e65e8" +dependencies = [ + "asynchronous-codec", + "either", + "futures", + "futures-bounded", + "futures-timer", + "libp2p-core", + "libp2p-identity", + "libp2p-swarm", + "quick-protobuf", + "quick-protobuf-codec", + "smallvec", + "thiserror 2.0.17", + "tracing", +] + [[package]] name = "libp2p-identity" version = "0.2.12" @@ -5349,32 +5732,261 @@ dependencies = [ "k256", "multihash", "quick-protobuf", + "rand 0.8.5", "sha2 0.10.9", - "thiserror 2.0.16", + "thiserror 2.0.17", "tracing", "zeroize", ] +[[package]] +name = "libp2p-mdns" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c66872d0f1ffcded2788683f76931be1c52e27f343edb93bc6d0bcd8887be443" +dependencies = [ + "futures", + "hickory-proto", + "if-watch", + "libp2p-core", + "libp2p-identity", + "libp2p-swarm", + "rand 0.8.5", + "smallvec", + "socket2 0.5.10", + "tokio", + "tracing", +] + +[[package]] +name = "libp2p-metrics" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "805a555148522cb3414493a5153451910cb1a146c53ffbf4385708349baf62b7" +dependencies = [ + "futures", + "libp2p-core", + "libp2p-identify", + "libp2p-identity", + "libp2p-ping", + "libp2p-swarm", + "pin-project", + "prometheus-client", + "web-time", +] + +[[package]] +name = "libp2p-noise" +version = "0.46.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc73eacbe6462a0eb92a6527cac6e63f02026e5407f8831bde8293f19217bfbf" +dependencies = [ + "asynchronous-codec", + "bytes", + "futures", + "libp2p-core", + "libp2p-identity", + "multiaddr", + "multihash", + "quick-protobuf", + "rand 0.8.5", + "snow", + "static_assertions", + "thiserror 2.0.17", + "tracing", + "x25519-dalek", + "zeroize", +] + +[[package]] +name = "libp2p-ping" +version = "0.47.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74bb7fcdfd9fead4144a3859da0b49576f171a8c8c7c0bfc7c541921d25e60d3" +dependencies = [ + "futures", + "futures-timer", + "libp2p-core", + "libp2p-identity", + "libp2p-swarm", + "rand 0.8.5", + "tracing", + "web-time", +] + +[[package]] +name = "libp2p-quic" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8dc448b2de9f4745784e3751fe8bc6c473d01b8317edd5ababcb0dec803d843f" +dependencies = [ + "futures", + "futures-timer", + "if-watch", + "libp2p-core", + "libp2p-identity", + "libp2p-tls", + "quinn", + "rand 0.8.5", + "ring", + "rustls", + "socket2 0.5.10", + "thiserror 2.0.17", + "tokio", + "tracing", +] + +[[package]] +name = "libp2p-request-response" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9f1cca83488b90102abac7b67d5c36fc65bc02ed47620228af7ed002e6a1478" +dependencies = [ + "async-trait", + "cbor4ii", + "futures", + "futures-bounded", + "libp2p-core", + "libp2p-identity", + "libp2p-swarm", + "rand 0.8.5", + "serde", + "smallvec", + "tracing", +] + +[[package]] +name = "libp2p-stream" +version = "0.4.0-alpha" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6bd8025c80205ec2810cfb28b02f362ab48a01bee32c50ab5f12761e033464" +dependencies = [ + "futures", + "libp2p-core", + "libp2p-identity", + "libp2p-swarm", + "rand 0.8.5", + "tracing", +] + +[[package]] +name = "libp2p-swarm" +version = "0.47.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6aa762e5215919a34e31c35d4b18bf2e18566ecab7f8a3d39535f4a3068f8b62" +dependencies = [ + "either", + "fnv", + "futures", + "futures-timer", + "libp2p-core", + "libp2p-identity", + "libp2p-swarm-derive", + "lru 0.12.5", + "multistream-select", + "rand 0.8.5", + "smallvec", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "libp2p-swarm-derive" +version = "0.35.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd297cf53f0cb3dee4d2620bb319ae47ef27c702684309f682bdb7e55a18ae9c" +dependencies = [ + "heck", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "libp2p-tcp" +version = "0.44.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65b4e030c52c46c8d01559b2b8ca9b7c4185f10576016853129ca1fe5cd1a644" +dependencies = [ + "futures", + "futures-timer", + "if-watch", + "libc", + "libp2p-core", + "socket2 0.5.10", + "tokio", + "tracing", +] + +[[package]] +name = "libp2p-tls" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96ff65a82e35375cbc31ebb99cacbbf28cb6c4fefe26bf13756ddcf708d40080" +dependencies = [ + "futures", + "futures-rustls", + "libp2p-core", + "libp2p-identity", + "rcgen", + "ring", + "rustls", + "rustls-webpki", + "thiserror 2.0.17", + "x509-parser 0.17.0", + "yasna", +] + +[[package]] +name = "libp2p-upnp" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4757e65fe69399c1a243bbb90ec1ae5a2114b907467bf09f3575e899815bb8d3" +dependencies = [ + "futures", + "futures-timer", + "igd-next", + "libp2p-core", + "libp2p-swarm", + "tokio", + "tracing", +] + +[[package]] +name = "libp2p-yamux" +version = "0.47.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f15df094914eb4af272acf9adaa9e287baa269943f32ea348ba29cfb9bfc60d8" +dependencies = [ + "either", + "futures", + "libp2p-core", + "thiserror 2.0.17", + "tracing", + "yamux 0.12.1", + "yamux 0.13.7", +] + [[package]] name = "libproc" -version = "0.14.10" +version = "0.14.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e78a09b56be5adbcad5aa1197371688dc6bb249a26da3bca2011ee2fb987ebfb" +checksum = "a54ad7278b8bc5301d5ffd2a94251c004feb971feba96c971ea4063645990757" dependencies = [ - "bindgen 0.70.1", + "bindgen 0.72.1", "errno", "libc", ] [[package]] name = "libredox" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" +checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", "libc", - "redox_syscall 0.5.17", + "redox_syscall 0.5.18", ] [[package]] @@ -5459,9 +6071,9 @@ checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "linux-raw-sys" -version = "0.9.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" [[package]] name = "litemap" @@ -5475,35 +6087,27 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" +[[package]] +name = "litrs" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5e54036fe321fd421e10d732f155734c4e4afd610dd556d9a82833ab3ee0bed" + [[package]] name = "lock_api" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" dependencies = [ - "autocfg", "scopeguard", "serde", ] [[package]] name = "log" -version = "0.4.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" - -[[package]] -name = "loom" -version = "0.7.2" +version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" -dependencies = [ - "cfg-if", - "generator", - "scoped-tls", - "tracing", - "tracing-subscriber 0.3.20", -] +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" [[package]] name = "lru" @@ -5556,9 +6160,9 @@ checksum = "08ab2867e3eeeca90e844d1940eab391c9dc5228783db2ed999acbc0a9ed375a" [[package]] name = "mach2" -version = "0.4.3" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d640282b302c0bb0a2a8e0233ead9035e3bed871f0b7e81fe4a1ec829765db44" +checksum = "6a1b95cd5421ec55b445b5ae102f5ea0e768de1f82bd3001e11f426c269c3aea" dependencies = [ "libc", ] @@ -5578,10 +6182,21 @@ dependencies = [ name = "macros" version = "0.1.0" dependencies = [ - "paste", + "paste", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "match-lookup" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1265724d8cb29dbbc2b0f06fffb8bf1a8c0cf73a78eede9ba73a4a66c52a981e" +dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 1.0.109", ] [[package]] @@ -5617,15 +6232,15 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.5" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" [[package]] name = "memmap2" -version = "0.9.7" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "483758ad303d734cec05e5c12b41d7e93e6a6390c5e9dae6bdeb7c1259012d28" +checksum = "843a98750cd611cc2965a8213b53b43e715f13c37a9e096c6408e69990961db7" dependencies = [ "libc", ] @@ -5672,7 +6287,7 @@ dependencies = [ "hyper", "hyper-rustls", "hyper-util", - "indexmap 2.10.0", + "indexmap 2.11.4", "ipnet", "metrics", "metrics-util 0.19.1", @@ -5693,30 +6308,30 @@ dependencies = [ "hyper", "hyper-rustls", "hyper-util", - "indexmap 2.10.0", + "indexmap 2.11.4", "ipnet", "metrics", "metrics-util 0.20.0", "quanta", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tracing", ] [[package]] name = "metrics-process" -version = "2.4.0" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a82c8add4382f29a122fa64fff1891453ed0f6b2867d971e7d60cb8dfa322ff" +checksum = "f615e08e049bd14a44c4425415782efb9bcd479fc1e19ddeb971509074c060d0" dependencies = [ "libc", "libproc", "mach2", "metrics", "once_cell", - "procfs", + "procfs 0.18.0", "rlimit", - "windows 0.58.0", + "windows 0.62.2", ] [[package]] @@ -5729,7 +6344,7 @@ dependencies = [ "crossbeam-epoch", "crossbeam-utils", "hashbrown 0.15.5", - "indexmap 2.10.0", + "indexmap 2.11.4", "metrics", "ordered-float", "quanta", @@ -5799,6 +6414,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", + "simd-adler32", ] [[package]] @@ -5809,7 +6425,7 @@ checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" dependencies = [ "libc", "log", - "wasi 0.11.1+wasi-snapshot-preview1", + "wasi", "windows-sys 0.59.0", ] @@ -5836,23 +6452,22 @@ dependencies = [ [[package]] name = "moka" -version = "0.12.10" +version = "0.12.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9321642ca94a4282428e6ea4af8cc2ca4eac48ac7a6a4ea8f33f76d0ce70926" +checksum = "8261cd88c312e0004c1d51baad2980c66528dfdb2bee62003e643a4d8f86b077" dependencies = [ "async-lock", "crossbeam-channel", "crossbeam-epoch", "crossbeam-utils", + "equivalent", "event-listener", "futures-util", - "loom", "parking_lot", "portable-atomic", "rustc_version 0.4.1", "smallvec", "tagptr", - "thiserror 1.0.69", "uuid", ] @@ -5877,17 +6492,18 @@ dependencies = [ "percent-encoding", "serde", "static_assertions", - "unsigned-varint", + "unsigned-varint 0.8.0", "url", ] [[package]] name = "multibase" -version = "0.9.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b3539ec3c1f04ac9748a260728e855f261b4977f5c3406612c884564f329404" +checksum = "8694bb4835f452b0e3bb06dbebb1d6fc5385b6ca1caf2e55fd165c042390ec77" dependencies = [ "base-x", + "base256emoji", "data-encoding", "data-encoding-macro", ] @@ -5899,7 +6515,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b430e7953c29dd6a09afc29ff0bb69c6e306329ee6794700aee27b76a1aea8d" dependencies = [ "core2", - "unsigned-varint", + "unsigned-varint 0.8.0", +] + +[[package]] +name = "multistream-select" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea0df8e5eec2298a62b326ee4f0d7fe1a6b90a09dfcf9df37b38f947a8c42f19" +dependencies = [ + "bytes", + "futures", + "log", + "pin-project", + "smallvec", + "unsigned-varint 0.7.2", ] [[package]] @@ -5928,6 +6558,70 @@ dependencies = [ "tempfile", ] +[[package]] +name = "netlink-packet-core" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72724faf704479d67b388da142b186f916188505e7e0b26719019c525882eda4" +dependencies = [ + "anyhow", + "byteorder", + "netlink-packet-utils", +] + +[[package]] +name = "netlink-packet-route" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053998cea5a306971f88580d0829e90f270f940befd7cf928da179d4187a5a66" +dependencies = [ + "anyhow", + "bitflags 1.3.2", + "byteorder", + "libc", + "netlink-packet-core", + "netlink-packet-utils", +] + +[[package]] +name = "netlink-packet-utils" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ede8a08c71ad5a95cdd0e4e52facd37190977039a4704eb82a283f713747d34" +dependencies = [ + "anyhow", + "byteorder", + "paste", + "thiserror 1.0.69", +] + +[[package]] +name = "netlink-proto" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72452e012c2f8d612410d89eea01e2d9b56205274abb35d53f60200b2ec41d60" +dependencies = [ + "bytes", + "futures", + "log", + "netlink-packet-core", + "netlink-sys", + "thiserror 2.0.17", +] + +[[package]] +name = "netlink-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16c903aa70590cb93691bf97a767c8d1d6122d2cc9070433deb3bbf36ce8bd23" +dependencies = [ + "bytes", + "futures", + "libc", + "log", + "tokio", +] + [[package]] name = "nibble_vec" version = "0.1.0" @@ -5937,6 +6631,23 @@ dependencies = [ "smallvec", ] +[[package]] +name = "nix" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "libc", +] + +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + [[package]] name = "nom" version = "7.1.3" @@ -5953,7 +6664,7 @@ version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", "fsevent-sys", "inotify", "kqueue", @@ -5982,11 +6693,11 @@ dependencies = [ [[package]] name = "nu-ansi-term" -version = "0.50.1" +version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -6124,9 +6835,9 @@ dependencies = [ [[package]] name = "nybbles" -version = "0.4.3" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63cb50036b1ad148038105af40aaa70ff24d8a14fbc44ae5c914e1348533d12e" +checksum = "2c4b5ecbd0beec843101bffe848217f770e8b8da81d8355b7d6e226f2199b3dc" dependencies = [ "alloy-rlp", "arbitrary", @@ -6139,32 +6850,23 @@ dependencies = [ [[package]] name = "objc2-core-foundation" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", ] [[package]] name = "objc2-io-kit" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71c1c64d6120e51cd86033f67176b1cb66780c2efe34dec55176f77befd93c0a" +checksum = "33fafba39597d6dc1fb709123dfa8289d39406734be322956a69f0931c73bb15" dependencies = [ "libc", "objc2-core-foundation", ] -[[package]] -name = "object" -version = "0.36.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" -dependencies = [ - "memchr", -] - [[package]] name = "oid" version = "0.2.1" @@ -6180,7 +6882,16 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9bedf36ffb6ba96c2eb7144ef6270557b52e54b20c0a8e1eb2ff99a6c6959bff" dependencies = [ - "asn1-rs", + "asn1-rs 0.5.2", +] + +[[package]] +name = "oid-registry" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f40cff3dde1b6087cc5d5f5d4d65712f34016a03ed60e9c08dcc392736b5b7" +dependencies = [ + "asn1-rs 0.7.1", ] [[package]] @@ -6208,7 +6919,7 @@ dependencies = [ "alloy-consensus", "alloy-eips", "alloy-network", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "alloy-rpc-types-eth", "alloy-serde", @@ -6216,7 +6927,7 @@ dependencies = [ "derive_more", "serde", "serde_with", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -6233,7 +6944,7 @@ checksum = "f80108e3b36901200a4c5df1db1ee9ef6ce685b59ea79d7be1713c845e3765da" dependencies = [ "alloy-consensus", "alloy-network", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-provider", "alloy-rpc-types-eth", "alloy-signer", @@ -6247,7 +6958,7 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8eb878fc5ea95adb5abe55fb97475b3eb0dcc77dfcd6f61bd626a68ae0bdba1" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "jsonrpsee 0.26.0", ] @@ -6260,14 +6971,14 @@ dependencies = [ "alloy-consensus", "alloy-eips", "alloy-network-primitives", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rpc-types-eth", "alloy-serde", "derive_more", "op-alloy-consensus", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -6278,7 +6989,7 @@ checksum = "14e50c94013a1d036a529df259151991dbbd6cf8dc215e3b68b784f95eec60e6" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "alloy-rpc-types-engine", "alloy-serde", @@ -6288,7 +6999,7 @@ dependencies = [ "op-alloy-consensus", "serde", "snap", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -6302,7 +7013,7 @@ dependencies = [ "alloy-json-rpc", "alloy-network", "alloy-op-evm", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-provider", "alloy-rpc-client", "alloy-rpc-types-beacon", @@ -6310,7 +7021,7 @@ dependencies = [ "alloy-rpc-types-eth", "alloy-serde", "alloy-signer-local", - "alloy-sol-types 1.3.1", + "alloy-sol-types 1.4.1", "alloy-transport", "alloy-transport-http", "anyhow", @@ -6345,6 +7056,7 @@ dependencies = [ "op-alloy-rpc-types-engine", "op-revm", "opentelemetry 0.29.1", + "p2p", "parking_lot", "rand 0.9.2", "reqwest", @@ -6416,6 +7128,7 @@ dependencies = [ "tower 0.5.2", "tracing", "tracing-subscriber 0.3.20", + "ureq", "url", "uuid", "vergen", @@ -6424,9 +7137,9 @@ dependencies = [ [[package]] name = "op-revm" -version = "10.1.0" +version = "10.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9ba4f4693811e73449193c8bd656d3978f265871916882e6a51a487e4f96217" +checksum = "826f43a5b1613c224f561847c152bfbaefcb593a9ae2c612ff4dc4661c6e625f" dependencies = [ "auto_impl", "revm", @@ -6445,7 +7158,7 @@ version = "0.10.73" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", "cfg-if", "foreign-types", "libc", @@ -6493,7 +7206,7 @@ dependencies = [ "futures-sink", "js-sys", "pin-project-lite", - "thiserror 2.0.16", + "thiserror 2.0.17", "tracing", ] @@ -6507,7 +7220,7 @@ dependencies = [ "futures-sink", "js-sys", "pin-project-lite", - "thiserror 2.0.16", + "thiserror 2.0.17", "tracing", ] @@ -6555,7 +7268,7 @@ dependencies = [ "prost", "reqwest", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tonic", "tracing", @@ -6575,7 +7288,7 @@ dependencies = [ "opentelemetry_sdk 0.29.0", "prost", "reqwest", - "thiserror 2.0.16", + "thiserror 2.0.17", "tracing", ] @@ -6627,7 +7340,7 @@ dependencies = [ "percent-encoding", "rand 0.8.5", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tokio-stream", "tracing", @@ -6647,7 +7360,7 @@ dependencies = [ "percent-encoding", "rand 0.9.2", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", "tracing", ] @@ -6678,6 +7391,25 @@ dependencies = [ "sha2 0.10.9", ] +[[package]] +name = "p2p" +version = "0.2.6" +dependencies = [ + "derive_more", + "eyre", + "futures", + "futures-util", + "hex", + "libp2p", + "libp2p-stream", + "multiaddr", + "serde", + "serde_json", + "tokio", + "tokio-util", + "tracing", +] + [[package]] name = "page_size" version = "0.6.0" @@ -6726,9 +7458,9 @@ checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" -version = "0.12.4" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" dependencies = [ "lock_api", "parking_lot_core", @@ -6736,15 +7468,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.11" +version = "0.9.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.17", + "redox_syscall 0.5.18", "smallvec", - "windows-targets 0.52.6", + "windows-link 0.2.1", ] [[package]] @@ -6780,12 +7512,12 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pem" -version = "3.0.5" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38af38e8470ac9dee3ce1bae1af9c1671fffc44ddfd8bd1d0a3445bf349a8ef3" +checksum = "1d30c53c26bc5b31a98cd02d20f25a7c8567146caf63ed593a9d87b2775291be" dependencies = [ "base64 0.22.1", - "serde", + "serde_core", ] [[package]] @@ -6799,18 +7531,17 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pest" -version = "2.8.1" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1db05f56d34358a8b1066f67cbb203ee3e7ed2ba674a6263a1d5ec6db2204323" +checksum = "989e7521a040efde50c3ab6bbadafbe15ab6dc042686926be59ac35d74607df4" dependencies = [ "memchr", - "thiserror 2.0.16", "ucd-trie", ] @@ -6959,12 +7690,37 @@ dependencies = [ "crunchy", ] +[[package]] +name = "polling" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix 1.1.2", + "windows-sys 0.61.2", +] + [[package]] name = "pollster" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2f3a9f18d041e6d0e102a0a46750538147e5e8992d3b4873aaafee2520b00ce3" +[[package]] +name = "poly1305" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +dependencies = [ + "cpufeatures", + "opaque-debug", + "universal-hash", +] + [[package]] name = "polyval" version = "0.6.2" @@ -6985,9 +7741,9 @@ checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" [[package]] name = "potential_utf" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" dependencies = [ "zerovec 0.11.4", ] @@ -7049,11 +7805,11 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit", + "toml_edit 0.23.7", ] [[package]] @@ -7093,34 +7849,78 @@ version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc5b72d8145275d844d4b5f6d4e1eef00c8cd889edb6035c21675d1bb1f45c9f" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", "chrono", "flate2", "hex", - "procfs-core", + "procfs-core 0.17.0", "rustix 0.38.44", ] +[[package]] +name = "procfs" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25485360a54d6861439d60facef26de713b1e126bf015ec8f98239467a2b82f7" +dependencies = [ + "bitflags 2.9.4", + "procfs-core 0.18.0", + "rustix 1.1.2", +] + [[package]] name = "procfs-core" version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "239df02d8349b06fc07398a3a1697b06418223b1c7725085e801e7c0fc6a12ec" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", "chrono", "hex", ] +[[package]] +name = "procfs-core" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6401bf7b6af22f78b563665d15a22e9aef27775b79b149a66ca022468a4e405" +dependencies = [ + "bitflags 2.9.4", + "hex", +] + +[[package]] +name = "prometheus-client" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf41c1a7c32ed72abe5082fb19505b969095c12da9f5732a4bc9878757fd087c" +dependencies = [ + "dtoa", + "itoa", + "parking_lot", + "prometheus-client-derive-encode", +] + +[[package]] +name = "prometheus-client-derive-encode" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "proptest" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fcdab19deb5195a31cf7726a210015ff1496ba1464fd42cb4f537b8b01b471f" +checksum = "2bb0be07becd10686a0bb407298fb425360a5c44a663774406340c59a22de4ce" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.9.2", + "bitflags 2.9.4", "lazy_static", "num-traits", "rand 0.9.2", @@ -7153,6 +7953,17 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "proptest-derive" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "095a99f75c69734802359b682be8daaf8980296731f6470434ea2c652af1dd30" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "prost" version = "0.13.5" @@ -7182,7 +7993,7 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57206b407293d2bcd3af849ce869d52068623f19e1b5ff8e8778e3309439682b" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", "memchr", "unicase", ] @@ -7197,7 +8008,7 @@ dependencies = [ "libc", "once_cell", "raw-cpuid", - "wasi 0.11.1+wasi-snapshot-preview1", + "wasi", "web-sys", "winapi", ] @@ -7217,21 +8028,35 @@ dependencies = [ "byteorder", ] +[[package]] +name = "quick-protobuf-codec" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15a0580ab32b169745d7a39db2ba969226ca16738931be152a3209b409de2474" +dependencies = [ + "asynchronous-codec", + "bytes", + "quick-protobuf", + "thiserror 1.0.69", + "unsigned-varint 0.8.0", +] + [[package]] name = "quinn" -version = "0.11.8" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" dependencies = [ "bytes", "cfg_aliases", + "futures-io", "pin-project-lite", "quinn-proto", "quinn-udp", "rustc-hash 2.1.1", "rustls", - "socket2 0.5.10", - "thiserror 2.0.16", + "socket2 0.6.1", + "thiserror 2.0.17", "tokio", "tracing", "web-time", @@ -7239,12 +8064,12 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.12" +version = "0.11.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e" +checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" dependencies = [ "bytes", - "getrandom 0.3.3", + "getrandom 0.3.4", "lru-slab", "rand 0.9.2", "ring", @@ -7252,7 +8077,7 @@ dependencies = [ "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.16", + "thiserror 2.0.17", "tinyvec", "tracing", "web-time", @@ -7260,23 +8085,23 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.13" +version = "0.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.5.10", + "socket2 0.6.1", "tracing", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "quote" -version = "1.0.40" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" dependencies = [ "proc-macro2", ] @@ -7361,7 +8186,7 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", "serde", ] @@ -7389,10 +8214,10 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eabd94c2f37801c20583fc49dd5cd6b0ba68c716787c2dd6ed18571e1e63117b" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", "cassowary", "compact_str", - "crossterm", + "crossterm 0.28.1", "indoc", "instability", "itertools 0.13.0", @@ -7406,11 +8231,11 @@ dependencies = [ [[package]] name = "raw-cpuid" -version = "11.5.0" +version = "11.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6df7ab838ed27997ba19a4664507e6f82b41fe6e20be42929332156e5e85146" +checksum = "498cd0dc59d73224351ee52a95fee0f1a617a2eae0e7d9d720cc622c73a54186" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", ] [[package]] @@ -7433,6 +8258,19 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "rcgen" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75e669e5202259b5314d1ea5397316ad400819437857b90861765f24c4cf80a2" +dependencies = [ + "pem", + "ring", + "rustls-pki-types", + "time", + "yasna", +] + [[package]] name = "recvmsg" version = "1.0.0" @@ -7450,11 +8288,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.17" +version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", ] [[package]] @@ -7476,23 +8314,23 @@ checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" dependencies = [ "getrandom 0.2.16", "libredox", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "ref-cast" -version = "1.0.24" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" dependencies = [ "ref-cast-impl", ] [[package]] name = "ref-cast-impl" -version = "1.0.24" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2", "quote", @@ -7501,9 +8339,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.1" +version = "1.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" dependencies = [ "aho-corasick", "memchr", @@ -7513,9 +8351,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.9" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" dependencies = [ "aho-corasick", "memchr", @@ -7524,9 +8362,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.5" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" [[package]] name = "regress" @@ -7540,9 +8378,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.23" +version = "0.12.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d429f34c8092b2d42c7c93cec323bb4adeb7c67698f70839adec842ec10c7ceb" +checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f" dependencies = [ "base64 0.22.1", "bytes", @@ -7584,14 +8422,14 @@ dependencies = [ "wasm-bindgen-futures", "wasm-streams", "web-sys", - "webpki-roots 1.0.2", + "webpki-roots 1.0.3", ] [[package]] name = "resolv-conf" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95325155c684b1c89f7765e30bc1c42e4a6da51ca513615660cb8a62ef9a88e3" +checksum = "6b3789b30bd25ba102de4beabd95d21ac45b69b1be7d14522bab988c526d6799" [[package]] name = "reth" @@ -7646,7 +8484,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.1#e6608be51ea34424b8e dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "futures-core", "futures-util", "metrics", @@ -7670,7 +8508,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "futures-core", "futures-util", "metrics", @@ -7694,7 +8532,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.1#e6608be51ea34424b8e dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "derive_more", "metrics", "parking_lot", @@ -7720,7 +8558,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-signer", "alloy-signer-local", "derive_more", @@ -7754,7 +8592,7 @@ dependencies = [ "alloy-eips", "alloy-evm", "alloy-genesis", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-trie", "auto_impl", "derive_more", @@ -7774,7 +8612,7 @@ dependencies = [ "alloy-eips", "alloy-evm", "alloy-genesis", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-trie", "auto_impl", "derive_more", @@ -7806,12 +8644,12 @@ dependencies = [ "alloy-chains", "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "backon", "clap", "comfy-table", - "crossterm", + "crossterm 0.28.1", "eyre", "fdlimit", "futures", @@ -7889,7 +8727,7 @@ version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "cfg-if", "eyre", "libc", @@ -7897,7 +8735,7 @@ dependencies = [ "reth-fs-util 1.8.2", "secp256k1 0.30.0", "serde", - "thiserror 2.0.16", + "thiserror 2.0.17", "tikv-jemallocator", ] @@ -7909,7 +8747,7 @@ dependencies = [ "alloy-consensus", "alloy-eips", "alloy-genesis", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-trie", "bytes", "modular-bitfield", @@ -7927,7 +8765,7 @@ dependencies = [ "alloy-consensus", "alloy-eips", "alloy-genesis", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-trie", "arbitrary", "bytes", @@ -7982,11 +8820,11 @@ version = "1.8.1" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.1#e6608be51ea34424b8e3693cf1f946a3eb224736" dependencies = [ "alloy-consensus", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "auto_impl", "reth-execution-types 1.8.1", "reth-primitives-traits 1.8.1", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -7995,11 +8833,11 @@ version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ "alloy-consensus", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "auto_impl", "reth-execution-types 1.8.2", "reth-primitives-traits 1.8.2", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -8034,7 +8872,7 @@ dependencies = [ "alloy-consensus", "alloy-eips", "alloy-json-rpc", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-provider", "alloy-rpc-types-engine", "alloy-transport", @@ -8057,7 +8895,7 @@ name = "reth-db" version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "derive_more", "eyre", "metrics", @@ -8075,7 +8913,7 @@ dependencies = [ "strum 0.27.2", "sysinfo 0.33.1", "tempfile", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -8085,7 +8923,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf dependencies = [ "alloy-consensus", "alloy-genesis", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "arbitrary", "bytes", "derive_more", @@ -8113,7 +8951,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf dependencies = [ "alloy-consensus", "alloy-genesis", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "boyer-moore-magiclen", "eyre", "reth-chainspec 1.8.2", @@ -8132,7 +8970,7 @@ dependencies = [ "reth-trie-db", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", "tracing", ] @@ -8142,7 +8980,7 @@ version = "1.8.1" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.1#e6608be51ea34424b8e3693cf1f946a3eb224736" dependencies = [ "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "reth-primitives-traits 1.8.1", ] @@ -8152,7 +8990,7 @@ version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "arbitrary", "bytes", "modular-bitfield", @@ -8166,7 +9004,7 @@ name = "reth-discv4" version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "discv5", "enr", @@ -8181,7 +9019,7 @@ dependencies = [ "schnellru", "secp256k1 0.30.0", "serde", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tokio-stream", "tracing", @@ -8192,7 +9030,7 @@ name = "reth-discv5" version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "derive_more", "discv5", @@ -8206,7 +9044,7 @@ dependencies = [ "reth-metrics 1.8.2", "reth-network-peers 1.8.2", "secp256k1 0.30.0", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tracing", ] @@ -8216,7 +9054,7 @@ name = "reth-dns-discovery" version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "data-encoding", "enr", "hickory-resolver", @@ -8229,7 +9067,7 @@ dependencies = [ "secp256k1 0.30.0", "serde", "serde_with", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tokio-stream", "tracing", @@ -8242,7 +9080,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "futures", "futures-util", @@ -8263,7 +9101,7 @@ dependencies = [ "reth-tasks 1.8.2", "reth-testing-utils", "tempfile", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tokio-stream", "tokio-util", @@ -8276,7 +9114,7 @@ version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ "aes", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "block-padding", "byteorder", @@ -8293,7 +9131,7 @@ dependencies = [ "secp256k1 0.30.0", "sha2 0.10.9", "sha3", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tokio-stream", "tokio-util", @@ -8307,7 +9145,7 @@ version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ "alloy-consensus", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rpc-types-engine", "eyre", "futures-util", @@ -8332,7 +9170,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.1#e6608be51ea34424b8e dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rpc-types-engine", "auto_impl", "reth-chain-state 1.8.1", @@ -8345,7 +9183,7 @@ dependencies = [ "reth-primitives-traits 1.8.1", "reth-trie-common 1.8.1", "serde", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -8355,7 +9193,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rpc-types-engine", "auto_impl", "futures", @@ -8369,7 +9207,7 @@ dependencies = [ "reth-primitives-traits 1.8.2", "reth-trie-common 1.8.2", "serde", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", ] @@ -8393,7 +9231,7 @@ dependencies = [ "reth-prune", "reth-stages-api", "reth-tasks 1.8.2", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -8404,7 +9242,7 @@ dependencies = [ "alloy-consensus", "alloy-eips", "alloy-evm", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "alloy-rpc-types-engine", "derive_more", @@ -8445,7 +9283,7 @@ dependencies = [ "revm-primitives", "schnellru", "smallvec", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tracing", ] @@ -8485,13 +9323,13 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "ethereum_ssz", "ethereum_ssz_derive", "reth-ethereum-primitives 1.8.2", "snap", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -8499,7 +9337,7 @@ name = "reth-era-downloader" version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "bytes", "eyre", "futures-util", @@ -8515,7 +9353,7 @@ version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ "alloy-consensus", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "eyre", "futures-util", "reth-db-api", @@ -8539,7 +9377,7 @@ dependencies = [ "reth-consensus 1.8.1", "reth-execution-errors 1.8.1", "reth-storage-errors 1.8.1", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -8550,7 +9388,7 @@ dependencies = [ "reth-consensus 1.8.2", "reth-execution-errors 1.8.2", "reth-storage-errors 1.8.2", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -8559,7 +9397,7 @@ version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ "alloy-chains", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "bytes", "derive_more", @@ -8574,7 +9412,7 @@ dependencies = [ "reth-primitives-traits 1.8.2", "serde", "snap", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tokio-stream", "tokio-util", @@ -8590,7 +9428,7 @@ dependencies = [ "alloy-consensus", "alloy-eips", "alloy-hardforks", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "bytes", "derive_more", @@ -8599,7 +9437,7 @@ dependencies = [ "reth-ethereum-primitives 1.8.1", "reth-primitives-traits 1.8.1", "serde", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -8611,7 +9449,7 @@ dependencies = [ "alloy-consensus", "alloy-eips", "alloy-hardforks", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "bytes", "derive_more", @@ -8620,7 +9458,7 @@ dependencies = [ "reth-ethereum-primitives 1.8.2", "reth-primitives-traits 1.8.2", "serde", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -8652,7 +9490,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "reth-chainspec 1.8.2", "reth-consensus 1.8.2", "reth-consensus-common 1.8.2", @@ -8667,7 +9505,7 @@ version = "1.8.1" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.1#e6608be51ea34424b8e3693cf1f946a3eb224736" dependencies = [ "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "alloy-rpc-types-engine", "reth-engine-primitives 1.8.1", @@ -8676,7 +9514,7 @@ dependencies = [ "reth-primitives-traits 1.8.1", "serde", "sha2 0.10.9", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -8685,7 +9523,7 @@ version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "alloy-rpc-types-engine", "reth-engine-primitives 1.8.2", @@ -8694,7 +9532,7 @@ dependencies = [ "reth-primitives-traits 1.8.2", "serde", "sha2 0.10.9", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -8704,7 +9542,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.1#e6608be51ea34424b8e dependencies = [ "alloy-eip2124", "alloy-hardforks", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "auto_impl", "once_cell", "rustc-hash 2.1.1", @@ -8717,7 +9555,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf dependencies = [ "alloy-eip2124", "alloy-hardforks", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "auto_impl", "once_cell", "rustc-hash 2.1.1", @@ -8730,7 +9568,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "alloy-rpc-types-engine", "reth-basic-payload-builder 1.8.2", @@ -8759,7 +9597,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.1#e6608be51ea34424b8e dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "alloy-rpc-types-eth", "alloy-serde", @@ -8776,7 +9614,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "alloy-rpc-types-eth", "alloy-serde", @@ -8807,7 +9645,7 @@ dependencies = [ "alloy-consensus", "alloy-eips", "alloy-evm", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "auto_impl", "derive_more", "futures-util", @@ -8828,7 +9666,7 @@ dependencies = [ "alloy-consensus", "alloy-eips", "alloy-evm", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "auto_impl", "derive_more", "futures-util", @@ -8851,7 +9689,7 @@ dependencies = [ "alloy-consensus", "alloy-eips", "alloy-evm", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rpc-types-engine", "reth-chainspec 1.8.2", "reth-ethereum-forks 1.8.2", @@ -8869,11 +9707,11 @@ version = "1.8.1" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.1#e6608be51ea34424b8e3693cf1f946a3eb224736" dependencies = [ "alloy-evm", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "nybbles", "reth-storage-errors 1.8.1", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -8882,11 +9720,11 @@ version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ "alloy-evm", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "nybbles", "reth-storage-errors 1.8.2", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -8897,7 +9735,7 @@ dependencies = [ "alloy-consensus", "alloy-eips", "alloy-evm", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "derive_more", "reth-ethereum-primitives 1.8.1", "reth-primitives-traits 1.8.1", @@ -8913,7 +9751,7 @@ dependencies = [ "alloy-consensus", "alloy-eips", "alloy-evm", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "derive_more", "reth-ethereum-primitives 1.8.2", "reth-primitives-traits 1.8.2", @@ -8930,7 +9768,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "eyre", "futures", "itertools 0.14.0", @@ -8955,7 +9793,7 @@ dependencies = [ "reth-tasks 1.8.2", "reth-tracing", "rmp-serde", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tokio-util", "tracing", @@ -8967,7 +9805,7 @@ version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "reth-chain-state 1.8.2", "reth-execution-types 1.8.2", "reth-primitives-traits 1.8.2", @@ -8982,7 +9820,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.1#e6608be51ea34424b8e dependencies = [ "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -8992,7 +9830,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf dependencies = [ "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -9001,7 +9839,7 @@ version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ "alloy-consensus", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "alloy-rpc-types-debug", "eyre", @@ -9034,7 +9872,7 @@ dependencies = [ "jsonrpsee 0.26.0", "pin-project", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tokio-stream", "tokio-util", @@ -9047,14 +9885,14 @@ name = "reth-libmdbx" version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", "byteorder", "dashmap 6.1.0", "derive_more", "parking_lot", "reth-mdbx-sys", "smallvec", - "thiserror 2.0.16", + "thiserror 2.0.17", "tracing", ] @@ -9093,7 +9931,7 @@ name = "reth-net-banlist" version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", ] [[package]] @@ -9102,10 +9940,10 @@ version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ "futures-util", - "if-addrs", + "if-addrs 0.13.4", "reqwest", "serde_with", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tracing", ] @@ -9117,7 +9955,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "aquamarine", "auto_impl", @@ -9158,7 +9996,7 @@ dependencies = [ "secp256k1 0.30.0", "serde", "smallvec", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tokio-stream", "tokio-util", @@ -9171,7 +10009,7 @@ version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ "alloy-consensus", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rpc-types-admin", "alloy-rpc-types-eth", "auto_impl", @@ -9185,7 +10023,7 @@ dependencies = [ "reth-network-types", "reth-tokio-util", "serde", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tokio-stream", ] @@ -9197,7 +10035,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "auto_impl", "derive_more", "futures", @@ -9218,11 +10056,11 @@ name = "reth-network-peers" version = "1.8.1" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.1#e6608be51ea34424b8e3693cf1f946a3eb224736" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "secp256k1 0.30.0", "serde_with", - "thiserror 2.0.16", + "thiserror 2.0.17", "url", ] @@ -9231,12 +10069,12 @@ name = "reth-network-peers" version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "enr", "secp256k1 0.30.0", "serde_with", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "url", ] @@ -9267,7 +10105,7 @@ dependencies = [ "memmap2", "reth-fs-util 1.8.2", "serde", - "thiserror 2.0.16", + "thiserror 2.0.17", "tracing", "zstd", ] @@ -9303,7 +10141,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-provider", "alloy-rpc-types", "alloy-rpc-types-engine", @@ -9371,7 +10209,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rpc-types-engine", "clap", "derive_more", @@ -9408,7 +10246,7 @@ dependencies = [ "serde", "shellexpand", "strum 0.27.2", - "thiserror 2.0.16", + "thiserror 2.0.17", "toml", "tracing", "url", @@ -9460,7 +10298,7 @@ version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ "alloy-consensus", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "chrono", "futures-util", "reth-chain-state 1.8.2", @@ -9470,7 +10308,7 @@ dependencies = [ "reth-transaction-pool 1.8.2", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tokio-stream", "tokio-tungstenite", @@ -9485,7 +10323,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rpc-types-engine", "derive_more", "futures", @@ -9514,7 +10352,7 @@ dependencies = [ "metrics-exporter-prometheus 0.16.2", "metrics-process", "metrics-util 0.19.1", - "procfs", + "procfs 0.17.0", "reth-metrics 1.8.2", "reth-tasks 1.8.2", "tikv-jemalloc-ctl", @@ -9545,7 +10383,7 @@ dependencies = [ "alloy-eips", "alloy-genesis", "alloy-hardforks", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "derive_more", "op-alloy-consensus", "op-alloy-rpc-types", @@ -9568,7 +10406,7 @@ dependencies = [ "alloy-eips", "alloy-genesis", "alloy-hardforks", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "derive_more", "miniz_oxide", "op-alloy-consensus", @@ -9583,7 +10421,7 @@ dependencies = [ "serde", "serde_json", "tar-no-std", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -9593,7 +10431,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "clap", "derive_more", @@ -9641,7 +10479,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.1#e6608be51ea34424b8e dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-trie", "reth-chainspec 1.8.1", "reth-consensus 1.8.1", @@ -9655,7 +10493,7 @@ dependencies = [ "reth-storage-errors 1.8.1", "reth-trie-common 1.8.1", "revm", - "thiserror 2.0.16", + "thiserror 2.0.17", "tracing", ] @@ -9666,7 +10504,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-trie", "reth-chainspec 1.8.2", "reth-consensus 1.8.2", @@ -9680,7 +10518,7 @@ dependencies = [ "reth-storage-errors 1.8.2", "reth-trie-common 1.8.2", "revm", - "thiserror 2.0.16", + "thiserror 2.0.17", "tracing", ] @@ -9693,7 +10531,7 @@ dependencies = [ "alloy-eips", "alloy-evm", "alloy-op-evm", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "op-alloy-consensus", "op-alloy-rpc-types-engine", "op-revm", @@ -9708,7 +10546,7 @@ dependencies = [ "reth-primitives-traits 1.8.1", "reth-storage-errors 1.8.1", "revm", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -9720,7 +10558,7 @@ dependencies = [ "alloy-eips", "alloy-evm", "alloy-op-evm", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "op-alloy-consensus", "op-alloy-rpc-types-engine", "op-revm", @@ -9736,7 +10574,7 @@ dependencies = [ "reth-rpc-eth-api", "reth-storage-errors 1.8.2", "revm", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -9746,7 +10584,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rpc-types-engine", "alloy-serde", "brotli", @@ -9780,7 +10618,7 @@ version = "1.8.1" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.1#e6608be51ea34424b8e3693cf1f946a3eb224736" dependencies = [ "alloy-op-hardforks", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "once_cell", "reth-ethereum-forks 1.8.1", ] @@ -9791,7 +10629,7 @@ version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ "alloy-op-hardforks", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "once_cell", "reth-ethereum-forks 1.8.2", ] @@ -9802,7 +10640,7 @@ version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ "alloy-consensus", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rpc-types-engine", "alloy-rpc-types-eth", "clap", @@ -9849,7 +10687,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.1#e6608be51ea34424b8e dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "alloy-rpc-types-debug", "alloy-rpc-types-engine", @@ -9877,7 +10715,7 @@ dependencies = [ "revm", "serde", "sha2 0.10.9", - "thiserror 2.0.16", + "thiserror 2.0.17", "tracing", ] @@ -9888,7 +10726,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "alloy-rpc-types-debug", "alloy-rpc-types-engine", @@ -9916,7 +10754,7 @@ dependencies = [ "revm", "serde", "sha2 0.10.9", - "thiserror 2.0.16", + "thiserror 2.0.17", "tracing", ] @@ -9927,7 +10765,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.1#e6608be51ea34424b8e dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "op-alloy-consensus", "reth-primitives-traits 1.8.1", @@ -9940,7 +10778,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "arbitrary", "bytes", @@ -9961,7 +10799,7 @@ dependencies = [ "alloy-consensus", "alloy-eips", "alloy-json-rpc", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rpc-client", "alloy-rpc-types-debug", "alloy-rpc-types-engine", @@ -10008,7 +10846,7 @@ dependencies = [ "reth-transaction-pool 1.8.2", "revm", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tokio-stream", "tower 0.5.2", @@ -10033,7 +10871,7 @@ dependencies = [ "alloy-consensus", "alloy-eips", "alloy-json-rpc", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rpc-client", "alloy-rpc-types-eth", "alloy-serde", @@ -10056,7 +10894,7 @@ dependencies = [ "reth-storage-api 1.8.1", "reth-transaction-pool 1.8.1", "serde", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tracing", ] @@ -10069,7 +10907,7 @@ dependencies = [ "alloy-consensus", "alloy-eips", "alloy-json-rpc", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rpc-client", "alloy-rpc-types-eth", "alloy-serde", @@ -10092,7 +10930,7 @@ dependencies = [ "reth-storage-api 1.8.2", "reth-transaction-pool 1.8.2", "serde", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tracing", ] @@ -10103,7 +10941,7 @@ version = "1.8.1" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.1#e6608be51ea34424b8e3693cf1f946a3eb224736" dependencies = [ "alloy-consensus", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rpc-types", "futures-util", "metrics", @@ -10124,7 +10962,7 @@ version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ "alloy-consensus", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rpc-types", "futures-util", "metrics", @@ -10169,7 +11007,7 @@ version = "1.8.1" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.1#e6608be51ea34424b8e3693cf1f946a3eb224736" dependencies = [ "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rpc-types-engine", "auto_impl", "either", @@ -10179,7 +11017,7 @@ dependencies = [ "reth-errors 1.8.1", "reth-primitives-traits 1.8.1", "serde", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", ] @@ -10189,7 +11027,7 @@ version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rpc-types-engine", "auto_impl", "either", @@ -10199,7 +11037,7 @@ dependencies = [ "reth-errors 1.8.2", "reth-primitives-traits 1.8.2", "serde", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", ] @@ -10209,7 +11047,7 @@ version = "1.8.1" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.1#e6608be51ea34424b8e3693cf1f946a3eb224736" dependencies = [ "alloy-consensus", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "reth-transaction-pool 1.8.1", ] @@ -10219,7 +11057,7 @@ version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ "alloy-consensus", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "reth-transaction-pool 1.8.2", ] @@ -10265,7 +11103,7 @@ dependencies = [ "alloy-consensus", "alloy-eips", "alloy-genesis", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "alloy-rpc-types-eth", "alloy-trie", @@ -10281,7 +11119,7 @@ dependencies = [ "secp256k1 0.30.0", "serde", "serde_with", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -10292,7 +11130,7 @@ dependencies = [ "alloy-consensus", "alloy-eips", "alloy-genesis", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "alloy-rpc-types-eth", "alloy-trie", @@ -10314,7 +11152,7 @@ dependencies = [ "secp256k1 0.30.0", "serde", "serde_with", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -10324,7 +11162,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rpc-types-engine", "dashmap 6.1.0", "eyre", @@ -10369,7 +11207,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "itertools 0.14.0", "metrics", "rayon", @@ -10385,7 +11223,7 @@ dependencies = [ "reth-static-file-types 1.8.2", "reth-tokio-util", "rustc-hash 2.1.1", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tracing", ] @@ -10395,9 +11233,9 @@ name = "reth-prune-types" version = "1.8.1" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.1#e6608be51ea34424b8e3693cf1f946a3eb224736" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "derive_more", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -10405,13 +11243,13 @@ name = "reth-prune-types" version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "arbitrary", "derive_more", "modular-bitfield", "reth-codecs 1.8.2", "serde", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -10420,7 +11258,7 @@ version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ "alloy-consensus", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "futures", "reth-eth-wire", @@ -10439,7 +11277,7 @@ version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ "alloy-consensus", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "eyre", "futures", "parking_lot", @@ -10465,7 +11303,7 @@ name = "reth-revm" version = "1.8.1" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.1#e6608be51ea34424b8e3693cf1f946a3eb224736" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "reth-primitives-traits 1.8.1", "reth-storage-api 1.8.1", "reth-storage-errors 1.8.1", @@ -10478,7 +11316,7 @@ name = "reth-revm" version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "reth-primitives-traits 1.8.2", "reth-storage-api 1.8.2", "reth-storage-errors 1.8.2", @@ -10497,7 +11335,7 @@ dependencies = [ "alloy-evm", "alloy-genesis", "alloy-network", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "alloy-rpc-client", "alloy-rpc-types", @@ -10557,7 +11395,7 @@ dependencies = [ "serde", "serde_json", "sha2 0.10.9", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tokio-stream", "tower 0.5.2", @@ -10573,7 +11411,7 @@ dependencies = [ "alloy-eips", "alloy-genesis", "alloy-json-rpc", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rpc-types", "alloy-rpc-types-admin", "alloy-rpc-types-anvil", @@ -10624,7 +11462,7 @@ dependencies = [ "reth-tasks 1.8.2", "reth-transaction-pool 1.8.2", "serde", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tokio-util", "tower 0.5.2", @@ -10640,7 +11478,7 @@ dependencies = [ "alloy-consensus", "alloy-json-rpc", "alloy-network", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rpc-types-eth", "alloy-signer", "auto_impl", @@ -10656,7 +11494,7 @@ dependencies = [ "reth-primitives-traits 1.8.2", "reth-storage-api 1.8.2", "revm-context", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -10665,7 +11503,7 @@ version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rpc-types-engine", "async-trait", "jsonrpsee-core 0.26.0", @@ -10684,7 +11522,7 @@ dependencies = [ "reth-tasks 1.8.2", "reth-transaction-pool 1.8.2", "serde", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tracing", ] @@ -10700,7 +11538,7 @@ dependencies = [ "alloy-evm", "alloy-json-rpc", "alloy-network", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "alloy-rpc-types-eth", "alloy-rpc-types-mev", @@ -10742,10 +11580,10 @@ dependencies = [ "alloy-eips", "alloy-evm", "alloy-network", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rpc-client", "alloy-rpc-types-eth", - "alloy-sol-types 1.3.1", + "alloy-sol-types 1.4.1", "alloy-transport", "derive_more", "futures", @@ -10774,7 +11612,7 @@ dependencies = [ "revm-inspectors", "schnellru", "serde", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tokio-stream", "tracing", @@ -10800,7 +11638,7 @@ version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rpc-types-engine", "jsonrpsee-core 0.26.0", "jsonrpsee-types 0.26.0", @@ -10817,7 +11655,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "bincode", "eyre", "futures-util", @@ -10853,7 +11691,7 @@ dependencies = [ "reth-trie 1.8.2", "reth-trie-db", "tempfile", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tracing", ] @@ -10864,7 +11702,7 @@ version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "aquamarine", "auto_impl", "futures-util", @@ -10880,7 +11718,7 @@ dependencies = [ "reth-static-file", "reth-static-file-types 1.8.2", "reth-tokio-util", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tracing", ] @@ -10890,7 +11728,7 @@ name = "reth-stages-types" version = "1.8.1" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.1#e6608be51ea34424b8e3693cf1f946a3eb224736" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "reth-trie-common 1.8.1", ] @@ -10899,7 +11737,7 @@ name = "reth-stages-types" version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "arbitrary", "bytes", "modular-bitfield", @@ -10913,7 +11751,7 @@ name = "reth-static-file" version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "parking_lot", "rayon", "reth-codecs 1.8.2", @@ -10933,7 +11771,7 @@ name = "reth-static-file-types" version = "1.8.1" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.1#e6608be51ea34424b8e3693cf1f946a3eb224736" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "derive_more", "serde", "strum 0.27.2", @@ -10944,7 +11782,7 @@ name = "reth-static-file-types" version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "clap", "derive_more", "serde", @@ -10958,7 +11796,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.1#e6608be51ea34424b8e dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rpc-types-engine", "auto_impl", "reth-chainspec 1.8.1", @@ -10980,7 +11818,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rpc-types-engine", "auto_impl", "reth-chainspec 1.8.2", @@ -11002,14 +11840,14 @@ version = "1.8.1" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.1#e6608be51ea34424b8e3693cf1f946a3eb224736" dependencies = [ "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "derive_more", "reth-primitives-traits 1.8.1", "reth-prune-types 1.8.1", "reth-static-file-types 1.8.1", "revm-database-interface", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -11018,14 +11856,14 @@ version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "derive_more", "reth-primitives-traits 1.8.2", "reth-prune-types 1.8.2", "reth-static-file-types 1.8.2", "revm-database-interface", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -11038,7 +11876,7 @@ dependencies = [ "futures-util", "metrics", "reth-metrics 1.8.1", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tracing", "tracing-futures", @@ -11056,7 +11894,7 @@ dependencies = [ "pin-project", "rayon", "reth-metrics 1.8.2", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tracing", "tracing-futures", @@ -11070,7 +11908,7 @@ dependencies = [ "alloy-consensus", "alloy-eips", "alloy-genesis", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "rand 0.8.5", "rand 0.9.2", "reth-ethereum-primitives 1.8.2", @@ -11124,11 +11962,11 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.1#e6608be51ea34424b8e dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "aquamarine", "auto_impl", - "bitflags 2.9.2", + "bitflags 2.9.4", "futures-util", "metrics", "parking_lot", @@ -11150,7 +11988,7 @@ dependencies = [ "serde", "serde_json", "smallvec", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tokio-stream", "tracing", @@ -11163,11 +12001,11 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "aquamarine", "auto_impl", - "bitflags 2.9.2", + "bitflags 2.9.4", "futures-util", "metrics", "parking_lot", @@ -11191,7 +12029,7 @@ dependencies = [ "serde", "serde_json", "smallvec", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tokio-stream", "tracing", @@ -11204,7 +12042,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.1#e6608be51ea34424b8e dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "alloy-trie", "auto_impl", @@ -11226,7 +12064,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "alloy-trie", "auto_impl", @@ -11250,7 +12088,7 @@ version = "1.8.1" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.1#e6608be51ea34424b8e3693cf1f946a3eb224736" dependencies = [ "alloy-consensus", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "alloy-trie", "derive_more", @@ -11267,7 +12105,7 @@ version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ "alloy-consensus", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "alloy-rpc-types-eth", "alloy-serde", @@ -11292,7 +12130,7 @@ name = "reth-trie-db" version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "reth-db-api", "reth-execution-errors 1.8.2", "reth-primitives-traits 1.8.2", @@ -11305,7 +12143,7 @@ name = "reth-trie-parallel" version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "derive_more", "itertools 0.14.0", @@ -11320,7 +12158,7 @@ dependencies = [ "reth-trie-common 1.8.2", "reth-trie-db", "reth-trie-sparse 1.8.2", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tracing", ] @@ -11330,7 +12168,7 @@ name = "reth-trie-sparse" version = "1.8.1" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.1#e6608be51ea34424b8e3693cf1f946a3eb224736" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "alloy-trie", "auto_impl", @@ -11346,7 +12184,7 @@ name = "reth-trie-sparse" version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "alloy-trie", "auto_impl", @@ -11365,7 +12203,7 @@ name = "reth-trie-sparse-parallel" version = "1.8.2" source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rlp", "alloy-trie", "metrics", @@ -11528,10 +12366,10 @@ version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e9b329afcc0f9fd5adfa2c6349a7435a8558e82bcae203142103a9a95e2a63b6" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rpc-types-eth", "alloy-rpc-types-trace", - "alloy-sol-types 1.3.1", + "alloy-sol-types 1.4.1", "anstyle", "boa_engine", "boa_gc", @@ -11539,7 +12377,7 @@ dependencies = [ "revm", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -11586,7 +12424,7 @@ version = "20.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5aa29d9da06fe03b249b6419b33968ecdf92ad6428e2f012dc57bcd619b5d94e" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "num_enum", "once_cell", "serde", @@ -11598,7 +12436,7 @@ version = "7.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f64fbacb86008394aaebd3454f9643b7d5a782bd251135e17c5b33da592d84d" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", "revm-bytecode", "revm-primitives", "serde", @@ -11708,7 +12546,7 @@ name = "rollup-boost" version = "0.1.0" source = "git+http://github.com/flashbots/rollup-boost?rev=b86af43969557bee18f17ec1d6bcd3e984f910b2#b86af43969557bee18f17ec1d6bcd3e984f910b2" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "alloy-rpc-types-engine", "alloy-rpc-types-eth", "alloy-serde", @@ -11740,7 +12578,7 @@ dependencies = [ "serde_json", "sha2 0.10.9", "testcontainers 0.23.3", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tokio-tungstenite", "tokio-util", @@ -11760,11 +12598,29 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "afab94fb28594581f62d981211a9a4d53cc8130bbcbbb89a0440d9b8e81a7746" +[[package]] +name = "rtnetlink" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a552eb82d19f38c3beed3f786bd23aa434ceb9ac43ab44419ca6d67a7e186c0" +dependencies = [ + "futures", + "log", + "netlink-packet-core", + "netlink-packet-route", + "netlink-packet-utils", + "netlink-proto", + "netlink-sys", + "nix", + "thiserror 1.0.69", + "tokio", +] + [[package]] name = "rug" -version = "1.27.0" +version = "1.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4207e8d668e5b8eb574bda8322088ccd0d7782d3d03c7e8d562e82ed82bdcbc3" +checksum = "58ad2e973fe3c3214251a840a621812a4f40468da814b1a3d6947d433c2af11f" dependencies = [ "az", "gmp-mpfr-sys", @@ -11774,14 +12630,15 @@ dependencies = [ [[package]] name = "ruint" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ecb38f82477f20c5c3d62ef52d7c4e536e38ea9b73fb570a20c5cae0e14bcf6" +checksum = "a68df0380e5c9d20ce49534f292a36a7514ae21350726efe1865bdb1fa91d278" dependencies = [ "alloy-rlp", "arbitrary", "ark-ff 0.3.0", "ark-ff 0.4.2", + "ark-ff 0.5.0", "bytes", "fastrlp 0.3.1", "fastrlp 0.4.0", @@ -11795,7 +12652,7 @@ dependencies = [ "rand 0.9.2", "rlp", "ruint-macro", - "serde", + "serde_core", "valuable", "zeroize", ] @@ -11806,12 +12663,6 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" -[[package]] -name = "rustc-demangle" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" - [[package]] name = "rustc-hash" version = "1.1.0" @@ -11848,7 +12699,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.26", + "semver 1.0.27", ] [[package]] @@ -11866,7 +12717,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", "errno", "libc", "linux-raw-sys 0.4.15", @@ -11875,15 +12726,15 @@ dependencies = [ [[package]] name = "rustix" -version = "1.0.8" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", "errno", "libc", - "linux-raw-sys 0.9.4", - "windows-sys 0.60.2", + "linux-raw-sys 0.11.0", + "windows-sys 0.61.2", ] [[package]] @@ -11911,7 +12762,7 @@ dependencies = [ "openssl-probe", "rustls-pki-types", "schannel", - "security-framework 3.3.0", + "security-framework 3.5.1", ] [[package]] @@ -11948,7 +12799,7 @@ dependencies = [ "rustls-native-certs", "rustls-platform-verifier-android", "rustls-webpki", - "security-framework 3.3.0", + "security-framework 3.5.1", "security-framework-sys", "webpki-root-certs 0.26.11", "windows-sys 0.59.0", @@ -11980,9 +12831,9 @@ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "rusty-fork" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +checksum = "cc6bf79ff24e648f6da1f8d1f011e9cac26491b619e6b9280f2b47f1774e6ee2" dependencies = [ "fnv", "quick-error", @@ -11990,6 +12841,17 @@ dependencies = [ "wait-timeout", ] +[[package]] +name = "rw-stream-sink" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8c9026ff5d2f23da5e45bbc283f156383001bfb09c4e44256d02c1a685fe9a1" +dependencies = [ + "futures", + "pin-project", + "static_assertions", +] + [[package]] name = "ryu" version = "1.0.20" @@ -12013,11 +12875,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -12055,12 +12917,6 @@ dependencies = [ "hashbrown 0.13.2", ] -[[package]] -name = "scoped-tls" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" - [[package]] name = "scopeguard" version = "1.2.0" @@ -12129,7 +12985,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -12138,11 +12994,11 @@ dependencies = [ [[package]] name = "security-framework" -version = "3.3.0" +version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80fb1d92c5028aa318b4b8bd7302a5bfcf48be96a37fc6fc790f806b0004ee0c" +checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -12151,9 +13007,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.14.0" +version = "2.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" dependencies = [ "core-foundation-sys", "libc", @@ -12170,11 +13026,12 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" dependencies = [ "serde", + "serde_core", ] [[package]] @@ -12200,9 +13057,9 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.226" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dca6411025b24b60bfa7ec1fe1f8e710ac09782dca409ee8237ba74b51295fd" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" dependencies = [ "serde_core", "serde_derive", @@ -12219,27 +13076,28 @@ dependencies = [ [[package]] name = "serde_bytes" -version = "0.11.17" +version = "0.11.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8437fd221bde2d4ca316d61b90e337e9e702b3820b87d63caa9ba6c02bd06d96" +checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" dependencies = [ "serde", + "serde_core", ] [[package]] name = "serde_core" -version = "1.0.226" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba2ba63999edb9dac981fb34b3e5c0d111a69b0924e253ed29d83f7c99e966a4" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.226" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8db53ae22f34573731bafa1db20f04027b2d25e02d8205921b569171699cdb33" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", @@ -12248,25 +13106,27 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.143" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.11.4", "itoa", "memchr", "ryu", "serde", + "serde_core", ] [[package]] name = "serde_path_to_error" -version = "0.1.17" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a" +checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457" dependencies = [ "itoa", "serde", + "serde_core", ] [[package]] @@ -12303,19 +13163,18 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.14.0" +version = "3.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2c45cd61fefa9db6f254525d46e392b852e0e61d9a1fd36e5bd183450a556d5" +checksum = "6093cd8c01b25262b84927e0f7151692158fab02d961e04c979d3903eba7ecc5" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.10.0", + "indexmap 2.11.4", "schemars 0.9.0", "schemars 1.0.4", - "serde", - "serde_derive", + "serde_core", "serde_json", "serde_with_macros", "time", @@ -12323,11 +13182,11 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.14.0" +version = "3.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de90945e6565ce0d9a25098082ed4ee4002e047cb59892c318d66821e14bb30f" +checksum = "a7e6c180db0816026a61afa1cff5344fb7ebded7e4d3062772179f2501481c27" dependencies = [ - "darling 0.20.11", + "darling 0.21.3", "proc-macro2", "quote", "syn 2.0.106", @@ -12339,7 +13198,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.11.4", "itoa", "ryu", "serde", @@ -12481,6 +13340,12 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + [[package]] name = "simple_asn1" version = "0.6.3" @@ -12489,7 +13354,7 @@ checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" dependencies = [ "num-bigint", "num-traits", - "thiserror 2.0.16", + "thiserror 2.0.17", "time", ] @@ -12542,6 +13407,23 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b" +[[package]] +name = "snow" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "850948bee068e713b8ab860fe1adc4d109676ab4c3b621fd8147f06b261f2f85" +dependencies = [ + "aes-gcm", + "blake2", + "chacha20poly1305", + "curve25519-dalek", + "rand_core 0.6.4", + "ring", + "rustc_version 0.4.1", + "sha2 0.10.9", + "subtle", +] + [[package]] name = "socket2" version = "0.5.10" @@ -12554,12 +13436,12 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -12596,9 +13478,9 @@ checksum = "3b9b39299b249ad65f3b7e96443bad61c02ca5cd3589f46cb6d610a0fd6c0d6a" [[package]] name = "stable_deref_trait" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "static_assertions" @@ -12708,9 +13590,9 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.8.25" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4560533fbd6914b94a8fb5cc803ed6801c3455668db3b810702c57612bac9412" +checksum = "ab4e6eed052a117409a1a744c8bda9c3ea6934597cf7419f791cb7d590871c4c" dependencies = [ "paste", "proc-macro2", @@ -12720,9 +13602,9 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0b198d366dbec045acfcd97295eb653a7a2b40e4dc764ef1e79aafcad439d3c" +checksum = "ff790eb176cc81bb8936aed0f7b9f14fc4670069a2d371b3e3b0ecce908b2cb3" dependencies = [ "paste", "proc-macro2", @@ -12795,7 +13677,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -12839,7 +13721,7 @@ version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac9ee8b664c9f1740cd813fea422116f8ba29997bb7c878d1940424889802897" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", "log", "num-traits", ] @@ -12868,14 +13750,14 @@ dependencies = [ "serde", "tokio", "ureq", - "x509-parser", + "x509-parser 0.15.1", ] [[package]] name = "tdx-quote-provider" version = "0.1.0" dependencies = [ - "axum 0.8.4", + "axum 0.8.6", "clap", "dotenvy", "eyre", @@ -12895,15 +13777,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.21.0" +version = "3.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15b61f8f20e3a6f7e0649d825294eaf317edce30f82cf6026e7e4cb9222a7d1e" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" dependencies = [ "fastrand", - "getrandom 0.3.3", + "getrandom 0.3.4", "once_cell", - "rustix 1.0.8", - "windows-sys 0.60.2", + "rustix 1.1.2", + "windows-sys 0.61.2", ] [[package]] @@ -12927,7 +13809,7 @@ dependencies = [ "serde", "serde_json", "serde_with", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tokio-stream", "tokio-tar", @@ -12956,7 +13838,7 @@ dependencies = [ "serde", "serde_json", "serde_with", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tokio-stream", "tokio-tar", @@ -12981,11 +13863,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.16" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" dependencies = [ - "thiserror-impl 2.0.16", + "thiserror-impl 2.0.17", ] [[package]] @@ -13001,9 +13883,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.16" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", @@ -13061,9 +13943,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.41" +version = "0.3.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" dependencies = [ "deranged", "itoa", @@ -13079,15 +13961,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" [[package]] name = "time-macros" -version = "0.2.22" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" dependencies = [ "num-conv", "time-core", @@ -13139,29 +14021,26 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.47.1" +version = "1.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" dependencies = [ - "backtrace", "bytes", - "io-uring", "libc", "mio", "parking_lot", "pin-project-lite", "signal-hook-registry", - "slab", - "socket2 0.6.0", + "socket2 0.6.1", "tokio-macros", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "tokio-macros" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", @@ -13180,9 +14059,9 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.2" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" dependencies = [ "rustls", "tokio", @@ -13257,8 +14136,8 @@ checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ "serde", "serde_spanned", - "toml_datetime", - "toml_edit", + "toml_datetime 0.6.11", + "toml_edit 0.22.27", ] [[package]] @@ -13270,20 +14149,50 @@ dependencies = [ "serde", ] +[[package]] +name = "toml_datetime" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +dependencies = [ + "serde_core", +] + [[package]] name = "toml_edit" version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.11.4", "serde", "serde_spanned", - "toml_datetime", + "toml_datetime 0.6.11", "toml_write", "winnow", ] +[[package]] +name = "toml_edit" +version = "0.23.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" +dependencies = [ + "indexmap 2.11.4", + "toml_datetime 0.7.3", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +dependencies = [ + "winnow", +] + [[package]] name = "toml_write" version = "0.1.2" @@ -13349,7 +14258,7 @@ dependencies = [ "futures-core", "futures-util", "hdrhistogram", - "indexmap 2.10.0", + "indexmap 2.11.4", "pin-project-lite", "slab", "sync_wrapper", @@ -13368,7 +14277,7 @@ checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ "async-compression", "base64 0.22.1", - "bitflags 2.9.2", + "bitflags 2.9.4", "bytes", "futures-core", "futures-util", @@ -13574,7 +14483,7 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee44f4cef85f88b4dea21c0b1f58320bdf35715cf56d840969487cff00613321" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.1", "ethereum_hashing", "ethereum_ssz", "smallvec", @@ -13605,9 +14514,9 @@ dependencies = [ [[package]] name = "triomphe" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef8f7726da4807b58ea5c96fdc122f80702030edc33b35aff9190a51148ccc85" +checksum = "dd69c5aa8f924c7519d6372789a74eac5b94fb0f8fcf0d4a97eb0bfc3e785f39" [[package]] name = "try-lock" @@ -13664,15 +14573,15 @@ dependencies = [ "rustls", "rustls-pki-types", "sha1", - "thiserror 2.0.16", + "thiserror 2.0.17", "utf-8", ] [[package]] name = "typenum" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" [[package]] name = "ucd-trie" @@ -13718,9 +14627,9 @@ checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" [[package]] name = "unicode-ident" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" [[package]] name = "unicode-segmentation" @@ -13773,6 +14682,12 @@ version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" +[[package]] +name = "unsigned-varint" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6889a77d49f1f013504cec6bf97a2c730394adedaeb1deb5ea08949a50541105" + [[package]] name = "unsigned-varint" version = "0.8.0" @@ -13805,9 +14720,9 @@ dependencies = [ [[package]] name = "url" -version = "2.5.4" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" dependencies = [ "form_urlencoded", "idna", @@ -13841,11 +14756,11 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.18.0" +version = "1.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f33196643e165781c20a5ead5582283a7dacbb87855d867fbc2df3f81eddc1be" +checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", "js-sys", "serde", "sha1_smol", @@ -13957,31 +14872,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] -name = "wasi" -version = "0.14.2+wasi-0.2.4" +name = "wasip2" +version = "1.0.1+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" dependencies = [ - "wit-bindgen-rt", + "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" dependencies = [ "cfg-if", "once_cell", "rustversion", "wasm-bindgen-macro", + "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19" dependencies = [ "bumpalo", "log", @@ -13993,9 +14909,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.50" +version = "0.4.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +checksum = "7e038d41e478cc73bae0ff9b36c60cff1c98b8f38f8d7e8061e79ee63608ac5c" dependencies = [ "cfg-if", "js-sys", @@ -14006,9 +14922,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -14016,9 +14932,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" dependencies = [ "proc-macro2", "quote", @@ -14029,9 +14945,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1" dependencies = [ "unicode-ident", ] @@ -14051,9 +14967,9 @@ dependencies = [ [[package]] name = "wasmtimer" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8d49b5d6c64e8558d9b1b065014426f35c18de636895d24893dbbd329743446" +checksum = "1c598d6b99ea013e35844697fc4670d08339d5cda15588f193c6beedd12f644b" dependencies = [ "futures", "js-sys", @@ -14065,9 +14981,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.77" +version = "0.3.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +checksum = "9367c417a924a74cae129e6a2ae3b47fabb1f8995595ab474029da749a8be120" dependencies = [ "js-sys", "wasm-bindgen", @@ -14089,14 +15005,14 @@ version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75c7f0ef91146ebfb530314f5f1d24528d7f0767efbfd31dce919275413e393e" dependencies = [ - "webpki-root-certs 1.0.2", + "webpki-root-certs 1.0.3", ] [[package]] name = "webpki-root-certs" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4ffd8df1c57e87c325000a3d6ef93db75279dc3a231125aac571650f22b12a" +checksum = "05d651ec480de84b762e7be71e6efa7461699c19d9e2c272c8d93455f567786e" dependencies = [ "rustls-pki-types", ] @@ -14107,14 +15023,14 @@ version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" dependencies = [ - "webpki-roots 1.0.2", + "webpki-roots 1.0.3", ] [[package]] name = "webpki-roots" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8983c3ab33d6fb807cfcdad2491c4ea8cbc8ed839181c7dfd9c67c83e261b2" +checksum = "32b130c0d2d49f8b6889abc456e795e82525204f27c42cf767cf0d7734e089b8" dependencies = [ "rustls-pki-types", ] @@ -14133,9 +15049,9 @@ dependencies = [ [[package]] name = "widestring" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd7cf3379ca1aac9eea11fba24fd7e315d621f8dfe35c8d7d2be8b793726e07d" +checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471" [[package]] name = "winapi" @@ -14155,11 +15071,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0978bf7171b3d90bac376700cb56d606feb40f251a475a5d6634613564460b22" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -14170,21 +15086,21 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.57.0" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" +checksum = "efc5cf48f83140dcaab716eeaea345f9e93d0018fb81162753a3f76c3397b538" dependencies = [ - "windows-core 0.57.0", + "windows-core 0.53.0", "windows-targets 0.52.6", ] [[package]] name = "windows" -version = "0.58.0" +version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" dependencies = [ - "windows-core 0.58.0", + "windows-core 0.57.0", "windows-targets 0.52.6", ] @@ -14194,11 +15110,23 @@ version = "0.61.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" dependencies = [ - "windows-collections", + "windows-collections 0.2.0", "windows-core 0.61.2", - "windows-future", - "windows-link", - "windows-numerics", + "windows-future 0.2.1", + "windows-link 0.1.3", + "windows-numerics 0.2.0", +] + +[[package]] +name = "windows" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580" +dependencies = [ + "windows-collections 0.3.2", + "windows-core 0.62.2", + "windows-future 0.3.2", + "windows-numerics 0.3.1", ] [[package]] @@ -14210,28 +15138,34 @@ dependencies = [ "windows-core 0.61.2", ] +[[package]] +name = "windows-collections" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610" +dependencies = [ + "windows-core 0.62.2", +] + [[package]] name = "windows-core" -version = "0.57.0" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" +checksum = "9dcc5b895a6377f1ab9fa55acedab1fd5ac0db66ad1e6c7f47e28a22e446a5dd" dependencies = [ - "windows-implement 0.57.0", - "windows-interface 0.57.0", "windows-result 0.1.2", "windows-targets 0.52.6", ] [[package]] name = "windows-core" -version = "0.58.0" +version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" dependencies = [ - "windows-implement 0.58.0", - "windows-interface 0.58.0", - "windows-result 0.2.0", - "windows-strings 0.1.0", + "windows-implement 0.57.0", + "windows-interface 0.57.0", + "windows-result 0.1.2", "windows-targets 0.52.6", ] @@ -14241,13 +15175,26 @@ version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ - "windows-implement 0.60.0", - "windows-interface 0.59.1", - "windows-link", + "windows-implement 0.60.2", + "windows-interface 0.59.3", + "windows-link 0.1.3", "windows-result 0.3.4", "windows-strings 0.4.2", ] +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement 0.60.2", + "windows-interface 0.59.3", + "windows-link 0.2.1", + "windows-result 0.4.1", + "windows-strings 0.5.1", +] + [[package]] name = "windows-future" version = "0.2.1" @@ -14255,26 +15202,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" dependencies = [ "windows-core 0.61.2", - "windows-link", - "windows-threading", + "windows-link 0.1.3", + "windows-threading 0.1.0", ] [[package]] -name = "windows-implement" -version = "0.57.0" +name = "windows-future" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" +checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.106", + "windows-core 0.62.2", + "windows-link 0.2.1", + "windows-threading 0.2.1", ] [[package]] name = "windows-implement" -version = "0.58.0" +version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" dependencies = [ "proc-macro2", "quote", @@ -14283,9 +15230,9 @@ dependencies = [ [[package]] name = "windows-implement" -version = "0.60.0" +version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", @@ -14305,9 +15252,9 @@ dependencies = [ [[package]] name = "windows-interface" -version = "0.58.0" +version = "0.59.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", @@ -14315,21 +15262,16 @@ dependencies = [ ] [[package]] -name = "windows-interface" -version = "0.59.1" +name = "windows-link" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.106", -] +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" [[package]] name = "windows-link" -version = "0.1.3" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] name = "windows-numerics" @@ -14338,7 +15280,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" dependencies = [ "windows-core 0.61.2", - "windows-link", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-numerics" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26" +dependencies = [ + "windows-core 0.62.2", + "windows-link 0.2.1", ] [[package]] @@ -14347,7 +15299,7 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" dependencies = [ - "windows-link", + "windows-link 0.1.3", "windows-result 0.3.4", "windows-strings 0.4.2", ] @@ -14363,39 +15315,38 @@ dependencies = [ [[package]] name = "windows-result" -version = "0.2.0" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" dependencies = [ - "windows-targets 0.52.6", + "windows-link 0.1.3", ] [[package]] name = "windows-result" -version = "0.3.4" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" dependencies = [ - "windows-link", + "windows-link 0.2.1", ] [[package]] name = "windows-strings" -version = "0.1.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ - "windows-result 0.2.0", - "windows-targets 0.52.6", + "windows-link 0.1.3", ] [[package]] name = "windows-strings" -version = "0.4.2" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" dependencies = [ - "windows-link", + "windows-link 0.2.1", ] [[package]] @@ -14440,7 +15391,16 @@ version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" dependencies = [ - "windows-targets 0.53.3", + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link 0.2.1", ] [[package]] @@ -14491,19 +15451,19 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.3" +version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" dependencies = [ - "windows-link", - "windows_aarch64_gnullvm 0.53.0", - "windows_aarch64_msvc 0.53.0", - "windows_i686_gnu 0.53.0", - "windows_i686_gnullvm 0.53.0", - "windows_i686_msvc 0.53.0", - "windows_x86_64_gnu 0.53.0", - "windows_x86_64_gnullvm 0.53.0", - "windows_x86_64_msvc 0.53.0", + "windows-link 0.2.1", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", ] [[package]] @@ -14512,7 +15472,16 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" dependencies = [ - "windows-link", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-threading" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37" +dependencies = [ + "windows-link 0.2.1", ] [[package]] @@ -14535,9 +15504,9 @@ checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" [[package]] name = "windows_aarch64_msvc" @@ -14559,9 +15528,9 @@ checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_aarch64_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" [[package]] name = "windows_i686_gnu" @@ -14583,9 +15552,9 @@ checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnu" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" [[package]] name = "windows_i686_gnullvm" @@ -14595,9 +15564,9 @@ checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" [[package]] name = "windows_i686_msvc" @@ -14619,9 +15588,9 @@ checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_i686_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" [[package]] name = "windows_x86_64_gnu" @@ -14643,9 +15612,9 @@ checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnu" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" [[package]] name = "windows_x86_64_gnullvm" @@ -14667,9 +15636,9 @@ checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" [[package]] name = "windows_x86_64_msvc" @@ -14691,15 +15660,15 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "windows_x86_64_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winnow" -version = "0.7.12" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" dependencies = [ "memchr", ] @@ -14715,13 +15684,10 @@ dependencies = [ ] [[package]] -name = "wit-bindgen-rt" -version = "0.39.0" +name = "wit-bindgen" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" -dependencies = [ - "bitflags 2.9.2", -] +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "write16" @@ -14754,7 +15720,7 @@ dependencies = [ "pharos", "rustc_version 0.4.1", "send_wrapper 0.6.0", - "thiserror 2.0.16", + "thiserror 2.0.17", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -14769,31 +15735,106 @@ 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", + "rand_core 0.6.4", + "serde", + "zeroize", +] + [[package]] name = "x509-parser" version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7069fba5b66b9193bd2c5d3d4ff12b839118f6bcbef5328efafafb5395cf63da" dependencies = [ - "asn1-rs", + "asn1-rs 0.5.2", "data-encoding", - "der-parser", + "der-parser 8.2.0", "lazy_static", "nom", - "oid-registry", + "oid-registry 0.6.1", "rusticata-macros", "thiserror 1.0.69", "time", ] +[[package]] +name = "x509-parser" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4569f339c0c402346d4a75a9e39cf8dad310e287eef1ff56d4c68e5067f53460" +dependencies = [ + "asn1-rs 0.7.1", + "data-encoding", + "der-parser 10.0.0", + "lazy_static", + "nom", + "oid-registry 0.8.1", + "rusticata-macros", + "thiserror 2.0.17", + "time", +] + [[package]] name = "xattr" -version = "1.5.1" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af3a19837351dc82ba89f8a125e22a3c475f05aba604acc023d62b2739ae2909" +checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156" dependencies = [ "libc", - "rustix 1.0.8", + "rustix 1.1.2", +] + +[[package]] +name = "xml-rs" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fd8403733700263c6eb89f192880191f1b83e332f7a20371ddcf421c4a337c7" + +[[package]] +name = "xmltree" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7d8a75eaf6557bb84a65ace8609883db44a29951042ada9b393151532e41fcb" +dependencies = [ + "xml-rs", +] + +[[package]] +name = "yamux" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed0164ae619f2dc144909a9f082187ebb5893693d8c0196e8085283ccd4b776" +dependencies = [ + "futures", + "log", + "nohash-hasher", + "parking_lot", + "pin-project", + "rand 0.8.5", + "static_assertions", +] + +[[package]] +name = "yamux" +version = "0.13.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6927cfe0edfae4b26a369df6bad49cd0ef088c0ec48f4045b2084bcaedc10246" +dependencies = [ + "futures", + "log", + "nohash-hasher", + "parking_lot", + "pin-project", + "rand 0.9.2", + "static_assertions", + "web-time", ] [[package]] @@ -14802,6 +15843,15 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" +[[package]] +name = "yasna" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cd" +dependencies = [ + "time", +] + [[package]] name = "yoke" version = "0.7.5" @@ -14852,18 +15902,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.26" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.26" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" dependencies = [ "proc-macro2", "quote", @@ -14893,9 +15943,9 @@ dependencies = [ [[package]] name = "zeroize" -version = "1.8.1" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" dependencies = [ "zeroize_derive", ] @@ -14986,9 +16036,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.15+zstd.1.5.7" +version = "2.0.16+zstd.1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" dependencies = [ "cc", "pkg-config", diff --git a/Cargo.toml b/Cargo.toml index e381d195c..4ad71ebcd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,7 +8,7 @@ repository = "https://github.com/flashbots/op-rbuilder" exclude = [".github/"] [workspace] -members = [ "crates/op-rbuilder", "crates/tdx-quote-provider"] +members = [ "crates/op-rbuilder", "crates/p2p", "crates/tdx-quote-provider"] default-members = ["crates/op-rbuilder"] resolver = "2" @@ -179,6 +179,9 @@ flate2 = "1.0.37" prometheus = "0.13.4" ctor = "0.2" dashmap = "6.1" +hex = "0.4" +futures = "0.3" +futures-util = "0.3.31" lazy_static = "1.4.0" tikv-jemallocator = { version = "0.6" } diff --git a/crates/op-rbuilder/Cargo.toml b/crates/op-rbuilder/Cargo.toml index c674691c4..6a62052f8 100644 --- a/crates/op-rbuilder/Cargo.toml +++ b/crates/op-rbuilder/Cargo.toml @@ -12,6 +12,8 @@ default-run = "op-rbuilder" workspace = true [dependencies] +p2p = { path = "../p2p" } + reth.workspace = true reth-optimism-node.workspace = true reth-optimism-cli.workspace = true @@ -109,10 +111,11 @@ url.workspace = true anyhow = "1" opentelemetry = { workspace = true, optional = true } dashmap.workspace = true +hex = { workspace = true } +futures = { workspace = true } +futures-util = { workspace = true } tower = "0.5" -futures = "0.3" -futures-util = "0.3.31" time = { version = "0.3.36", features = ["macros", "formatting", "parsing"] } chrono = "0.4" uuid = { version = "1.6.1", features = ["serde", "v5", "v4"] } @@ -124,7 +127,7 @@ serde_yaml = { version = "0.9" } moka = "0.12" http = "1.0" sha3 = "0.10" -hex = "0.4" +ureq = "2.10" reqwest = "0.12.23" k256 = "0.13.4" diff --git a/crates/op-rbuilder/src/args/op.rs b/crates/op-rbuilder/src/args/op.rs index bd860f155..f35f48aa9 100644 --- a/crates/op-rbuilder/src/args/op.rs +++ b/crates/op-rbuilder/src/args/op.rs @@ -157,6 +157,38 @@ pub struct FlashblocksArgs { )] pub flashblocks_calculate_state_root: bool, + /// Enable libp2p networking for flashblock propagation + #[arg( + long = "flashblocks.p2p_enabled", + env = "FLASHBLOCK_P2P_ENABLED", + default_value = "false" + )] + pub flashblocks_p2p_enabled: bool, + + /// Port for the flashblocks p2p node + #[arg( + long = "flashblocks.p2p_port", + env = "FLASHBLOCK_P2P_PORT", + default_value = "9009" + )] + pub flashblocks_p2p_port: u16, + + /// Path to the file containing a hex-encoded libp2p private key. + /// If the file does not exist, a new key will be generated. + #[arg( + long = "flashblocks.p2p_private_key_file", + env = "FLASHBLOCK_P2P_PRIVATE_KEY_FILE" + )] + pub flashblocks_p2p_private_key_file: Option, + + /// Comma-separated list of multiaddrs of known Flashblocks peers + /// Example: "/ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ,/ip4/104.131.131.82/udp/4001/quic-v1/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ" + #[arg( + long = "flashblocks.p2p_known_peers", + env = "FLASHBLOCK_P2P_KNOWN_PEERS" + )] + pub flashblocks_known_peers: Option, + /// Flashblocks number contract address /// /// This is the address of the contract that will be used to increment the flashblock number. diff --git a/crates/op-rbuilder/src/builders/flashblocks/mod.rs b/crates/op-rbuilder/src/builders/flashblocks/mod.rs index 10503fa5d..643bf39a3 100644 --- a/crates/op-rbuilder/src/builders/flashblocks/mod.rs +++ b/crates/op-rbuilder/src/builders/flashblocks/mod.rs @@ -6,7 +6,9 @@ use service::FlashblocksServiceBuilder; mod best_txs; mod builder_tx; mod config; +mod p2p; mod payload; +mod payload_handler; mod service; mod wspub; diff --git a/crates/op-rbuilder/src/builders/flashblocks/p2p.rs b/crates/op-rbuilder/src/builders/flashblocks/p2p.rs new file mode 100644 index 000000000..9f947d959 --- /dev/null +++ b/crates/op-rbuilder/src/builders/flashblocks/p2p.rs @@ -0,0 +1,60 @@ +use alloy_primitives::U256; +use reth::{core::primitives::SealedBlock, payload::PayloadId}; +use reth_optimism_payload_builder::OpBuiltPayload as RethOpBuiltPayload; +use reth_optimism_primitives::OpBlock; +use serde::{Deserialize, Serialize}; + +pub(super) const AGENT_VERSION: &str = "op-rbuilder/1.0.0"; +pub(super) const FLASHBLOCKS_STREAM_PROTOCOL: p2p::StreamProtocol = + p2p::StreamProtocol::new("/flashblocks/1.0.0"); + +#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)] +pub(super) enum Message { + OpBuiltPayload(OpBuiltPayload), +} + +impl p2p::Message for Message { + fn protocol(&self) -> p2p::StreamProtocol { + FLASHBLOCKS_STREAM_PROTOCOL + } +} + +/// Internal type analogous to [`reth_optimism_payload_builder::OpBuiltPayload`] +/// which additionally implements `Serialize` and `Deserialize` for p2p transmission. +#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)] +pub(crate) struct OpBuiltPayload { + /// Identifier of the payload + pub(crate) id: PayloadId, + /// Sealed block + pub(crate) block: SealedBlock, + /// The fees of the block + pub(crate) fees: U256, +} + +impl From for Message { + fn from(value: RethOpBuiltPayload) -> Self { + Message::OpBuiltPayload(value.into()) + } +} + +impl From for Message { + fn from(value: OpBuiltPayload) -> Self { + Message::OpBuiltPayload(value) + } +} + +impl From for RethOpBuiltPayload { + fn from(value: OpBuiltPayload) -> Self { + RethOpBuiltPayload::new(value.id, value.block.into(), value.fees, None) + } +} + +impl From for OpBuiltPayload { + fn from(value: RethOpBuiltPayload) -> Self { + OpBuiltPayload { + id: value.id(), + block: value.block().clone(), + fees: value.fees(), + } + } +} diff --git a/crates/op-rbuilder/src/builders/flashblocks/payload.rs b/crates/op-rbuilder/src/builders/flashblocks/payload.rs index 6a46e4c76..098678432 100644 --- a/crates/op-rbuilder/src/builders/flashblocks/payload.rs +++ b/crates/op-rbuilder/src/builders/flashblocks/payload.rs @@ -18,6 +18,7 @@ use alloy_consensus::{ use alloy_eips::{Encodable2718, eip7685::EMPTY_REQUESTS_HASH, merge::BEACON_NONCE}; use alloy_primitives::{Address, B256, U256, map::foldhash::HashMap}; use core::time::Duration; +use eyre::WrapErr as _; use reth::payload::PayloadBuilderAttributes; use reth_basic_payload_builder::BuildOutcome; use reth_chain_state::{ExecutedBlock, ExecutedBlockWithTrieUpdates, ExecutedTrieUpdates}; @@ -26,9 +27,8 @@ use reth_node_api::{Block, NodePrimitives, PayloadBuilderError}; use reth_optimism_consensus::{calculate_receipt_root_no_memo_optimism, isthmus}; use reth_optimism_evm::{OpEvmConfig, OpNextBlockEnvAttributes}; use reth_optimism_forks::OpHardforks; -use reth_optimism_node::{OpBuiltPayload, OpEngineTypes, OpPayloadBuilderAttributes}; +use reth_optimism_node::{OpBuiltPayload, OpPayloadBuilderAttributes}; use reth_optimism_primitives::{OpPrimitives, OpReceipt, OpTransactionSigned}; -use reth_payload_builder_primitives::Events; use reth_payload_util::BestPayloadTransactions; use reth_primitives_traits::RecoveredBlock; use reth_provider::{ @@ -47,7 +47,7 @@ use rollup_boost::{ use serde::{Deserialize, Serialize}; use std::{ ops::{Div, Rem}, - sync::{Arc, OnceLock}, + sync::Arc, time::Instant, }; use tokio::sync::mpsc; @@ -134,6 +134,9 @@ pub(super) struct OpPayloadBuilder { pub pool: Pool, /// Node client pub client: Client, + /// Sender for sending built payloads to [`PayloadHandler`], + /// which broadcasts outgoing payloads via p2p. + pub payload_tx: mpsc::Sender, /// WebSocket publisher for broadcasting flashblocks /// to all connected subscribers. pub ws_pub: Arc, @@ -143,9 +146,6 @@ pub(super) struct OpPayloadBuilder { pub metrics: Arc, /// The end of builder transaction type pub builder_tx: BuilderTx, - /// Builder events handle to send BuiltPayload events - pub payload_builder_handle: - Arc>>>, /// Rate limiting based on gas. This is an optional feature. pub address_gas_limiter: AddressGasLimiter, } @@ -158,9 +158,7 @@ impl OpPayloadBuilder { client: Client, config: BuilderConfig, builder_tx: BuilderTx, - payload_builder_handle: Arc< - OnceLock>>, - >, + payload_tx: mpsc::Sender, ) -> eyre::Result { let metrics = Arc::new(OpRBuilderMetrics::default()); let ws_pub = WebSocketPublisher::new(config.specific.ws_addr, Arc::clone(&metrics))?.into(); @@ -169,11 +167,11 @@ impl OpPayloadBuilder { evm_config, pool, client, + payload_tx, ws_pub, config, metrics, builder_tx, - payload_builder_handle, address_gas_limiter, }) } @@ -348,8 +346,18 @@ where calculate_state_root || ctx.attributes().no_tx_pool, // need to calculate state root for CL sync )?; - best_payload.set(payload.clone()); - self.send_payload_to_engine(payload); + self.payload_tx + .send(payload.clone()) + .await + .map_err(PayloadBuilderError::other)?; + best_payload.set(payload); + + info!( + target: "payload_builder", + message = "Fallback block built", + payload_id = fb_payload.payload_id.to_string(), + ); + // not emitting flashblock if no_tx_pool in FCU, it's just syncing if !ctx.attributes().no_tx_pool { let flashblock_byte_size = self @@ -361,12 +369,6 @@ where .record(flashblock_byte_size as f64); } - info!( - target: "payload_builder", - message = "Fallback block built", - payload_id = fb_payload.payload_id.to_string(), - ); - if ctx.attributes().no_tx_pool { info!( target: "payload_builder", @@ -494,26 +496,29 @@ where let _entered = fb_span.enter(); // build first flashblock immediately - match self.build_next_flashblock( - &mut ctx, - &mut info, - &mut state, - &state_provider, - &mut best_txs, - &block_cancel, - &best_payload, - &fb_span, - ) { + match self + .build_next_flashblock( + &mut ctx, + &mut info, + &mut state, + &state_provider, + &mut best_txs, + &block_cancel, + &best_payload, + &fb_span, + ) + .await + { Ok(()) => {} Err(err) => { error!( target: "payload_builder", - "Failed to build flashblock {}, flashblock {}: {}", - ctx.block_number(), + "Failed to build flashblock {} for block number {}: {}", ctx.flashblock_index(), + ctx.block_number(), err ); - return Err(err); + return Err(PayloadBuilderError::Other(err.into())); } } @@ -536,7 +541,7 @@ where } #[allow(clippy::too_many_arguments)] - fn build_next_flashblock< + async fn build_next_flashblock< DB: Database + std::fmt::Debug + AsRef

, P: StateRootProvider + HashedPostStateProvider + StorageRootProvider, >( @@ -549,7 +554,7 @@ where block_cancel: &CancellationToken, best_payload: &BlockCell, span: &tracing::Span, - ) -> Result<(), PayloadBuilderError> { + ) -> eyre::Result<()> { // fallback block is index 0, so we need to increment here ctx.increment_flashblock_index(); @@ -626,7 +631,8 @@ where best_txs, target_gas_for_batch.min(ctx.block_gas_limit()), target_da_per_batch, - )?; + ) + .wrap_err("failed to execute best transactions")?; // Extract last transactions let new_transactions = info.executed_transactions[info.extra.last_flashblock_index..] .to_vec() @@ -682,14 +688,10 @@ where .total_block_built_gauge .set(total_block_built_duration); - // Handle build errors with match pattern match build_result { Err(err) => { - // Track invalid/bad block ctx.metrics.invalid_blocks_count.increment(1); - error!(target: "payload_builder", "Failed to build block {}, flashblock {}: {}", ctx.block_number(), ctx.flashblock_index(), err); - // Return the error - return Err(err); + return Err(err).wrap_err("failed to build payload"); } Ok((new_payload, mut fb_payload)) => { fb_payload.index = ctx.flashblock_index(); @@ -710,7 +712,12 @@ where let flashblock_byte_size = self .ws_pub .publish(&fb_payload) - .map_err(PayloadBuilderError::other)?; + .wrap_err("failed to publish flashblock via websocket")?; + self.payload_tx + .send(new_payload.clone()) + .await + .wrap_err("failed to send built payload to handler")?; + best_payload.set(new_payload); // Record flashblock build duration ctx.metrics @@ -723,8 +730,6 @@ where .flashblock_num_tx_histogram .record(info.executed_transactions.len() as f64); - best_payload.set(new_payload.clone()); - self.send_payload_to_engine(new_payload); // Update bundle_state for next iteration if let Some(da_limit) = ctx.extra_ctx.da_per_batch { if let Some(da) = target_da_per_batch.as_mut() { @@ -786,25 +791,6 @@ where span.record("flashblock_count", ctx.flashblock_index()); } - /// Sends built payload via payload builder handle broadcast channel to the engine - pub(super) fn send_payload_to_engine(&self, payload: OpBuiltPayload) { - // Send built payload as created one - match self.payload_builder_handle.get() { - Some(handle) => { - let res = handle.send(Events::BuiltPayload(payload.clone())); - if let Err(e) = res { - error!( - message = "Failed to send payload via payload builder handle", - error = ?e, - ); - } - } - None => { - error!(message = "Payload builder handle is not setup, skipping sending payload") - } - } - } - /// Calculate number of flashblocks. /// If dynamic is enabled this function will take time drift into the account. pub(super) fn calculate_flashblocks(&self, timestamp: u64) -> (u64, Duration) { diff --git a/crates/op-rbuilder/src/builders/flashblocks/payload_handler.rs b/crates/op-rbuilder/src/builders/flashblocks/payload_handler.rs new file mode 100644 index 000000000..d053866d8 --- /dev/null +++ b/crates/op-rbuilder/src/builders/flashblocks/payload_handler.rs @@ -0,0 +1,62 @@ +use crate::builders::flashblocks::p2p::Message; +use reth_node_builder::Events; +use reth_optimism_node::OpEngineTypes; +use reth_optimism_payload_builder::OpBuiltPayload; +use tokio::sync::mpsc; + +pub(crate) struct PayloadHandler { + // receives new payloads built by us. + built_rx: mpsc::Receiver, + // receives incoming p2p messages from peers. + p2p_rx: mpsc::Receiver, + // outgoing p2p channel to broadcast new payloads to peers. + p2p_tx: mpsc::Sender, + // sends a `Events::BuiltPayload` to the reth payload builder when a new payload is received. + payload_events_handle: tokio::sync::broadcast::Sender>, +} + +impl PayloadHandler { + pub(crate) fn new( + built_rx: mpsc::Receiver, + p2p_rx: mpsc::Receiver, + p2p_tx: mpsc::Sender, + payload_events_handle: tokio::sync::broadcast::Sender>, + ) -> Self { + Self { + built_rx, + p2p_rx, + p2p_tx, + payload_events_handle, + } + } + + pub(crate) async fn run(self) { + let Self { + mut built_rx, + mut p2p_rx, + p2p_tx, + payload_events_handle, + } = self; + + tracing::info!("flashblocks payload handler started"); + + loop { + tokio::select! { + Some(payload) = built_rx.recv() => { + let _ = payload_events_handle.send(Events::BuiltPayload(payload.clone())); + // TODO: only broadcast if `!no_tx_pool`? + // ignore error here; if p2p was disabled, the channel will be closed. + let _ = p2p_tx.send(payload.into()).await; + } + Some(message) = p2p_rx.recv() => { + match message { + Message::OpBuiltPayload(payload) => { + let payload: OpBuiltPayload = payload.into(); + let _ = payload_events_handle.send(Events::BuiltPayload(payload)); + } + } + } + } + } + } +} diff --git a/crates/op-rbuilder/src/builders/flashblocks/service.rs b/crates/op-rbuilder/src/builders/flashblocks/service.rs index 46ee8ae88..4c7f5e98b 100644 --- a/crates/op-rbuilder/src/builders/flashblocks/service.rs +++ b/crates/op-rbuilder/src/builders/flashblocks/service.rs @@ -5,20 +5,22 @@ use crate::{ builder_tx::BuilderTransactions, flashblocks::{ builder_tx::{FlashblocksBuilderTx, FlashblocksNumberBuilderTx}, + p2p::{AGENT_VERSION, FLASHBLOCKS_STREAM_PROTOCOL, Message}, payload::FlashblocksExtraCtx, + payload_handler::PayloadHandler, }, generator::BlockPayloadJobGenerator, }, flashtestations::service::bootstrap_flashtestations, traits::{NodeBounds, PoolBounds}, }; +use eyre::WrapErr as _; use reth_basic_payload_builder::BasicPayloadJobGeneratorConfig; use reth_node_api::NodeTypes; use reth_node_builder::{BuilderContext, components::PayloadServiceBuilder}; use reth_optimism_evm::OpEvmConfig; use reth_payload_builder::{PayloadBuilderHandle, PayloadBuilderService}; use reth_provider::CanonStateSubscriptions; -use std::sync::Arc; pub struct FlashblocksServiceBuilder(pub BuilderConfig); @@ -34,16 +36,71 @@ impl FlashblocksServiceBuilder { Pool: PoolBounds, BuilderTx: BuilderTransactions + Unpin + Clone + Send + Sync + 'static, { - let once_lock = Arc::new(std::sync::OnceLock::new()); + let (incoming_message_rx, outgoing_message_tx) = if self.0.p2p_enabled { + let mut builder = p2p::NodeBuilder::new(); + if let Some(ref private_key_file) = self.0.p2p_private_key_file + && !private_key_file.is_empty() + { + let private_key_hex = std::fs::read_to_string(private_key_file) + .wrap_err_with(|| { + format!("failed to read p2p private key file: {private_key_file}") + })? + .trim() + .to_string(); + builder = builder.with_keypair_hex_string(private_key_hex); + } + + let known_peers: Vec = + if let Some(ref p2p_known_peers) = self.0.p2p_known_peers { + p2p_known_peers + .split(',') + .map(|s| s.to_string()) + .filter_map(|s| s.parse().ok()) + .collect() + } else { + vec![] + }; + + let p2p::NodeBuildResult { + node, + outgoing_message_tx, + mut incoming_message_rxs, + } = builder + .with_agent_version(AGENT_VERSION.to_string()) + .with_protocol(FLASHBLOCKS_STREAM_PROTOCOL) + .with_known_peers(known_peers) + .with_port(self.0.p2p_port) + .try_build::() + .wrap_err("failed to build flashblocks p2p node")?; + let multiaddrs = node.multiaddrs(); + ctx.task_executor().spawn(async move { + if let Err(e) = node.run().await { + tracing::error!(error = %e, "p2p node exited"); + } + }); + tracing::info!(multiaddrs = ?multiaddrs, "flashblocks p2p node started"); + + let incoming_message_rx = incoming_message_rxs + .remove(&FLASHBLOCKS_STREAM_PROTOCOL) + .expect("flashblocks p2p protocol must be found in receiver map"); + (incoming_message_rx, outgoing_message_tx) + } else { + let (_incoming_message_tx, incoming_message_rx) = tokio::sync::mpsc::channel(16); + let (outgoing_message_tx, _outgoing_message_rx) = tokio::sync::mpsc::channel(16); + (incoming_message_rx, outgoing_message_tx) + }; + + let (built_payload_tx, built_payload_rx) = tokio::sync::mpsc::channel(16); let payload_builder = OpPayloadBuilder::new( OpEvmConfig::optimism(ctx.chain_spec()), pool, ctx.provider().clone(), self.0.clone(), builder_tx, - once_lock.clone(), - )?; + built_payload_tx, + ) + .wrap_err("failed to create flashblocks payload builder")?; let payload_job_config = BasicPayloadJobGeneratorConfig::default(); @@ -56,19 +113,25 @@ impl FlashblocksServiceBuilder { self.0.block_time_leeway, ); - let (payload_service, payload_builder) = + let (payload_service, payload_builder_handle) = PayloadBuilderService::new(payload_generator, ctx.provider().canonical_state_stream()); - once_lock - .set(payload_service.payload_events_handle()) - .map_err(|_| eyre::eyre!("Cannot initialize payload service handle"))?; + let payload_handler = PayloadHandler::new( + built_payload_rx, + incoming_message_rx, + outgoing_message_tx, + payload_service.payload_events_handle(), + ); ctx.task_executor() .spawn_critical("custom payload builder service", Box::pin(payload_service)); + ctx.task_executor().spawn_critical( + "flashblocks payload handler", + Box::pin(payload_handler.run()), + ); tracing::info!("Flashblocks payload builder service started"); - - Ok(payload_builder) + Ok(payload_builder_handle) } } diff --git a/crates/op-rbuilder/src/builders/flashblocks/wspub.rs b/crates/op-rbuilder/src/builders/flashblocks/wspub.rs index 944edb911..e2f003dc1 100644 --- a/crates/op-rbuilder/src/builders/flashblocks/wspub.rs +++ b/crates/op-rbuilder/src/builders/flashblocks/wspub.rs @@ -1,11 +1,9 @@ use core::{ fmt::{Debug, Formatter}, net::SocketAddr, - pin::Pin, sync::atomic::{AtomicUsize, Ordering}, - task::{Context, Poll}, }; -use futures::{Sink, SinkExt}; +use futures::SinkExt; use futures_util::StreamExt; use rollup_boost::FlashblocksPayloadV1; use std::{io, net::TcpListener, sync::Arc}; @@ -238,24 +236,3 @@ impl Debug for WebSocketPublisher { .finish() } } - -impl Sink<&FlashblocksPayloadV1> for WebSocketPublisher { - type Error = eyre::Report; - - fn poll_ready(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll> { - Poll::Ready(Ok(())) - } - - fn start_send(self: Pin<&mut Self>, item: &FlashblocksPayloadV1) -> Result<(), Self::Error> { - self.publish(item)?; - Ok(()) - } - - fn poll_flush(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll> { - Poll::Ready(Ok(())) - } - - fn poll_close(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll> { - Poll::Ready(Ok(())) - } -} diff --git a/crates/op-rbuilder/src/builders/mod.rs b/crates/op-rbuilder/src/builders/mod.rs index 9dbd949ce..04101aad8 100644 --- a/crates/op-rbuilder/src/builders/mod.rs +++ b/crates/op-rbuilder/src/builders/mod.rs @@ -122,6 +122,18 @@ pub struct BuilderConfig { /// Address gas limiter stuff pub gas_limiter_config: GasLimiterArgs, + + /// Whether to enable the p2p node for flashblocks + pub p2p_enabled: bool, + + /// Port for the p2p node + pub p2p_port: u16, + + /// Optional hex-encoded private key file path for the p2p node + pub p2p_private_key_file: Option, + + /// Comma-separated list of multiaddresses of known peers to connect to + pub p2p_known_peers: Option, } impl core::fmt::Debug for BuilderConfig { @@ -139,9 +151,17 @@ impl core::fmt::Debug for BuilderConfig { .field("block_time", &self.block_time) .field("block_time_leeway", &self.block_time_leeway) .field("da_config", &self.da_config) + .field("sampling_ratio", &self.sampling_ratio) .field("specific", &self.specific) .field("max_gas_per_txn", &self.max_gas_per_txn) .field("gas_limiter_config", &self.gas_limiter_config) + .field("p2p_enabled", &self.p2p_enabled) + .field("p2p_port", &self.p2p_port) + .field( + "p2p_private_key_file", + &self.p2p_private_key_file.as_ref().map(|_| "Some(...)"), + ) + .field("p2p_known_peers", &self.p2p_known_peers) .finish() } } @@ -159,6 +179,10 @@ impl Default for BuilderConfig { sampling_ratio: 100, max_gas_per_txn: None, gas_limiter_config: GasLimiterArgs::default(), + p2p_enabled: false, + p2p_port: 9009, + p2p_private_key_file: None, + p2p_known_peers: None, } } } @@ -180,6 +204,10 @@ where sampling_ratio: args.telemetry.sampling_ratio, max_gas_per_txn: args.max_gas_per_txn, gas_limiter_config: args.gas_limiter.clone(), + p2p_enabled: args.flashblocks.flashblocks_p2p_enabled, + p2p_port: args.flashblocks.flashblocks_p2p_port, + p2p_private_key_file: args.flashblocks.flashblocks_p2p_private_key_file.clone(), + p2p_known_peers: args.flashblocks.flashblocks_known_peers.clone(), specific: S::try_from(args)?, }) } diff --git a/crates/op-rbuilder/src/tests/flashblocks.rs b/crates/op-rbuilder/src/tests/flashblocks.rs index f3e46dae5..055d96503 100644 --- a/crates/op-rbuilder/src/tests/flashblocks.rs +++ b/crates/op-rbuilder/src/tests/flashblocks.rs @@ -1,8 +1,7 @@ use alloy_consensus::Transaction; use alloy_eips::Decodable2718; -use alloy_primitives::{Address, TxHash, U256, address, b128, b256}; +use alloy_primitives::{Address, TxHash, U256, address}; use alloy_provider::Provider; -use alloy_sol_types::SolCall; use macros::rb_test; use op_alloy_consensus::OpTxEnvelope; use std::time::Duration; @@ -10,11 +9,9 @@ use std::time::Duration; use crate::{ args::{FlashblocksArgs, OpRbuilderArgs}, tests::{ - BUILDER_PRIVATE_KEY, BlockTransactionsExt, BundleOpts, ChainDriver, ChainDriverExt, - FUNDED_PRIVATE_KEY, LocalInstance, ONE_ETH, TransactionBuilderExt, + BlockTransactionsExt, BundleOpts, ChainDriver, LocalInstance, TransactionBuilderExt, flashblocks_number_contract::FlashblocksNumber, }, - tx_signer::Signer, }; // If the order of deployment from the signer changes the address will change @@ -29,6 +26,8 @@ const FLASHBLOCKS_NUMBER_ADDRESS: Address = address!("5fbdb2315678afecb367f032d9 flashblocks_block_time: 200, flashblocks_leeway_time: 100, flashblocks_fixed: false, + flashblocks_calculate_state_root: true, + flashblocks_p2p_port: 9002, ..Default::default() }, ..Default::default() @@ -67,6 +66,8 @@ async fn smoke_dynamic_base(rbuilder: LocalInstance) -> eyre::Result<()> { flashblocks_block_time: 200, flashblocks_leeway_time: 100, flashblocks_fixed: false, + flashblocks_calculate_state_root: true, + flashblocks_p2p_port: 9002, ..Default::default() }, ..Default::default() @@ -105,6 +106,8 @@ async fn smoke_dynamic_unichain(rbuilder: LocalInstance) -> eyre::Result<()> { flashblocks_block_time: 200, flashblocks_leeway_time: 50, flashblocks_fixed: true, + flashblocks_calculate_state_root: true, + flashblocks_p2p_port: 9002, ..Default::default() }, ..Default::default() @@ -143,6 +146,8 @@ async fn smoke_classic_unichain(rbuilder: LocalInstance) -> eyre::Result<()> { flashblocks_block_time: 200, flashblocks_leeway_time: 50, flashblocks_fixed: true, + flashblocks_calculate_state_root: true, + flashblocks_p2p_port: 9002, ..Default::default() }, ..Default::default() @@ -181,6 +186,8 @@ async fn smoke_classic_base(rbuilder: LocalInstance) -> eyre::Result<()> { flashblocks_block_time: 200, flashblocks_leeway_time: 100, flashblocks_fixed: false, + flashblocks_calculate_state_root: true, + flashblocks_p2p_port: 9002, ..Default::default() }, ..Default::default() @@ -225,6 +232,9 @@ async fn unichain_dynamic_with_lag(rbuilder: LocalInstance) -> eyre::Result<()> flashblocks_addr: "127.0.0.1".into(), flashblocks_block_time: 200, flashblocks_leeway_time: 0, + flashblocks_fixed: false, + flashblocks_calculate_state_root: true, + flashblocks_p2p_port: 9002, ..Default::default() }, ..Default::default() @@ -261,6 +271,10 @@ async fn dynamic_with_full_block_lag(rbuilder: LocalInstance) -> eyre::Result<() flashblocks_port: 1239, flashblocks_addr: "127.0.0.1".into(), flashblocks_block_time: 200, + flashblocks_leeway_time: 100, + flashblocks_fixed: false, + flashblocks_calculate_state_root: true, + flashblocks_p2p_port: 9002, ..Default::default() }, ..Default::default() @@ -319,6 +333,10 @@ async fn test_flashblock_min_filtering(rbuilder: LocalInstance) -> eyre::Result< flashblocks_port: 1239, flashblocks_addr: "127.0.0.1".into(), flashblocks_block_time: 200, + flashblocks_leeway_time: 100, + flashblocks_fixed: false, + flashblocks_calculate_state_root: true, + flashblocks_p2p_port: 9002, ..Default::default() }, ..Default::default() @@ -375,6 +393,8 @@ async fn test_flashblock_max_filtering(rbuilder: LocalInstance) -> eyre::Result< flashblocks_block_time: 200, flashblocks_leeway_time: 100, flashblocks_fixed: false, + flashblocks_calculate_state_root: true, + flashblocks_p2p_port: 9002, ..Default::default() }, ..Default::default() @@ -421,6 +441,7 @@ async fn test_flashblock_min_max_filtering(rbuilder: LocalInstance) -> eyre::Res flashblocks_leeway_time: 100, flashblocks_fixed: false, flashblocks_calculate_state_root: false, + flashblocks_p2p_port: 9002, ..Default::default() }, ..Default::default() diff --git a/crates/p2p/Cargo.toml b/crates/p2p/Cargo.toml new file mode 100644 index 000000000..5f512c4a2 --- /dev/null +++ b/crates/p2p/Cargo.toml @@ -0,0 +1,28 @@ +[package] +name = "p2p" +version.workspace = true +edition.workspace = true +rust-version.workspace = true +license.workspace = true +homepage.workspace = true +repository.workspace = true +exclude.workspace = true + +[dependencies] +libp2p = { version = "0.56", features = ["identify", "ping", "noise", "tcp", "autonat", "mdns", "tokio", "cbor", "macros", "yamux"] } +libp2p-stream = "0.4.0-alpha" +multiaddr = "0.18" + +derive_more = { workspace = true, features = ["from"] } +eyre = { workspace = true } +futures = { workspace = true} +futures-util = { workspace = true } +hex = { workspace = true } +serde = { workspace = true } +serde_json = { workspace = true } +tokio = { workspace = true, features = [ "macros" ] } +tokio-util = { workspace = true, features = [ "compat", "codec" ] } +tracing = { workspace = true } + +[lints] +workspace = true diff --git a/crates/p2p/src/behaviour.rs b/crates/p2p/src/behaviour.rs new file mode 100644 index 000000000..a61ea7354 --- /dev/null +++ b/crates/p2p/src/behaviour.rs @@ -0,0 +1,103 @@ +use eyre::WrapErr as _; +use libp2p::{ + autonat, connection_limits, connection_limits::ConnectionLimits, identify, identity, mdns, + ping, swarm::NetworkBehaviour, +}; +use std::{convert::Infallible, time::Duration}; + +const DEFAULT_MAX_PEER_COUNT: u32 = 200; +const PROTOCOL_VERSION: &str = "1.0.0"; + +#[derive(NetworkBehaviour)] +#[behaviour(to_swarm = "BehaviourEvent")] +pub(crate) struct Behaviour { + // connection gating + connection_limits: connection_limits::Behaviour, + + // discovery + mdns: mdns::tokio::Behaviour, + + // protocols + identify: identify::Behaviour, + ping: ping::Behaviour, + stream: libp2p_stream::Behaviour, + + // nat traversal + autonat: autonat::Behaviour, +} + +#[allow(clippy::large_enum_variant)] +#[derive(Debug, derive_more::From)] +pub(crate) enum BehaviourEvent { + Autonat(autonat::Event), + Identify(identify::Event), + Mdns(mdns::Event), + Ping(ping::Event), +} + +impl From<()> for BehaviourEvent { + fn from(_: ()) -> Self { + unreachable!("() cannot be converted to BehaviourEvent") + } +} + +impl From for BehaviourEvent { + fn from(_: Infallible) -> Self { + unreachable!("Infallible cannot be converted to BehaviourEvent") + } +} + +impl Behaviour { + pub(crate) fn new(keypair: &identity::Keypair, agent_version: String) -> eyre::Result { + let peer_id = keypair.public().to_peer_id(); + + let autonat = autonat::Behaviour::new(peer_id, autonat::Config::default()); + let mdns = mdns::tokio::Behaviour::new(mdns::Config::default(), peer_id) + .wrap_err("failed to create mDNS behaviour")?; + let connection_limits = connection_limits::Behaviour::new( + ConnectionLimits::default().with_max_established(Some(DEFAULT_MAX_PEER_COUNT)), + ); + + let identify = identify::Behaviour::new( + identify::Config::new(PROTOCOL_VERSION.to_string(), keypair.public()) + .with_agent_version(agent_version), + ); + let ping = ping::Behaviour::new(ping::Config::new().with_interval(Duration::from_secs(10))); + let stream = libp2p_stream::Behaviour::new(); + + Ok(Self { + autonat, + connection_limits, + identify, + ping, + mdns, + stream, + }) + } + + pub(crate) fn new_control(&mut self) -> libp2p_stream::Control { + self.stream.new_control() + } +} + +impl BehaviourEvent { + pub(crate) async fn handle(self) { + match self { + BehaviourEvent::Autonat(_event) => {} + BehaviourEvent::Identify(_event) => {} + BehaviourEvent::Mdns(event) => match event { + mdns::Event::Discovered(list) => { + for (peer_id, multiaddr) in list { + tracing::debug!("mDNS discovered peer {peer_id} at {multiaddr}"); + } + } + mdns::Event::Expired(list) => { + for (peer_id, multiaddr) in list { + tracing::debug!("mDNS expired peer {peer_id} at {multiaddr}"); + } + } + }, + BehaviourEvent::Ping(_event) => {} + } + } +} diff --git a/crates/p2p/src/lib.rs b/crates/p2p/src/lib.rs new file mode 100644 index 000000000..47f432329 --- /dev/null +++ b/crates/p2p/src/lib.rs @@ -0,0 +1,548 @@ +mod behaviour; +mod outgoing; + +use behaviour::Behaviour; +use libp2p_stream::IncomingStreams; + +use eyre::Context; +use libp2p::{ + PeerId, Swarm, Transport as _, + identity::{self, ed25519}, + noise, + swarm::SwarmEvent, + tcp, yamux, +}; +use std::{collections::HashMap, time::Duration}; +use tokio::sync::mpsc; +use tokio_util::sync::CancellationToken; +use tracing::{debug, warn}; + +pub use libp2p::{Multiaddr, StreamProtocol}; + +/// A message that can be sent between peers. +pub trait Message: + serde::Serialize + for<'de> serde::Deserialize<'de> + Send + Sync + Clone + std::fmt::Debug +{ + fn protocol(&self) -> StreamProtocol; + + fn to_string(&self) -> eyre::Result { + serde_json::to_string(self).wrap_err("failed to serialize message to string") + } + + fn from_str(s: &str) -> eyre::Result + where + Self: Sized, + { + serde_json::from_str(s).wrap_err("failed to deserialize message from string") + } +} + +/// The libp2p node. +/// +/// The current behaviour of the node regarding messaging protocols is as follows: +/// - for each supported protocol, the node will accept incoming streams from remote peers on that protocol. +/// - when a new connection is established with a peer, the node will open outbound streams to that peer for each supported protocol. +/// - when a new outgoing message is received on `outgoing_message_rx`, the node will broadcast that message to all connected peers that have an outbound stream open for the message's protocol. +/// - incoming messages received on incoming streams are handled by `IncomingStreamsHandler`, which reads messages from the stream and sends them to a channel for processing by the consumer of this library. +/// +/// Currently, there is no gossip implemented; messages are simply broadcast to connected peers. +pub struct Node { + /// The peer ID of this node. + peer_id: PeerId, + + /// The multiaddresses this node is listening on. + listen_addrs: Vec, + + /// The libp2p swarm, which contains the state of the network + /// and its behaviours. + swarm: Swarm, + + /// The multiaddresses of known peers to connect to on startup. + known_peers: Vec, + + /// Receiver for outgoing messages to be sent to peers. + outgoing_message_rx: mpsc::Receiver, + + /// Handler for managing outgoing streams to peers. + /// Used to determine what peers to broadcast to when a + /// new outgoing message is received on `outgoing_message_rx`. + outgoing_streams_handler: outgoing::StreamsHandler, + + /// Handlers for incoming streams (streams which remote peers have opened with us). + incoming_streams_handlers: Vec>, + + /// The protocols this node supports. + protocols: Vec, + + /// Cancellation token to shut down the node. + cancellation_token: CancellationToken, +} + +impl Node { + /// Returns the multiaddresses that this node is listening on, with the peer ID included. + pub fn multiaddrs(&self) -> Vec { + self.listen_addrs + .iter() + .map(|addr| { + addr.clone() + .with_p2p(self.peer_id) + .expect("can add peer ID to multiaddr") + }) + .collect() + } + + /// Runs the p2p node, dials known peers, and starts listening for incoming connections and messages. + /// + /// This function will run until the cancellation token is triggered. + /// If an error occurs, it will be logged, but the node will continue running. + pub async fn run(self) -> eyre::Result<()> { + use libp2p::futures::StreamExt as _; + + let Node { + peer_id: _, + listen_addrs, + mut swarm, + known_peers, + mut outgoing_message_rx, + mut outgoing_streams_handler, + cancellation_token, + incoming_streams_handlers, + protocols, + } = self; + + for addr in listen_addrs { + swarm + .listen_on(addr) + .wrap_err("swarm failed to listen on multiaddr")?; + } + + for mut address in known_peers { + let peer_id = match address.pop() { + Some(multiaddr::Protocol::P2p(peer_id)) => peer_id, + _ => { + eyre::bail!("no peer ID for known peer"); + } + }; + swarm.add_peer_address(peer_id, address.clone()); + swarm + .dial(address) + .wrap_err("swarm failed to dial known peer")?; + } + + let handles = incoming_streams_handlers + .into_iter() + .map(|handler| tokio::spawn(handler.run())) + .collect::>(); + + loop { + tokio::select! { + biased; + _ = cancellation_token.cancelled() => { + debug!("cancellation token triggered, shutting down node"); + handles.into_iter().for_each(|h| h.abort()); + break Ok(()); + } + Some(message) = outgoing_message_rx.recv() => { + let protocol = message.protocol(); + if let Err(e) = outgoing_streams_handler.broadcast_message(message).await { + warn!("failed to broadcast message on protocol {protocol}: {e:?}"); + } + } + event = swarm.select_next_some() => { + match event { + SwarmEvent::NewListenAddr { + address, + .. + } => { + debug!("new listen address: {address}"); + } + SwarmEvent::ExternalAddrConfirmed { address } => { + debug!("external address confirmed: {address}"); + } + SwarmEvent::ConnectionEstablished { + peer_id, + connection_id, + .. + } => { + // when a new connection is established, open outbound streams for each protocol + // and add them to the outgoing streams handler. + // + // If we already have a connection with this peer, close the new connection, + // as we only want one connection per peer. + debug!("connection established with peer {peer_id}"); + if outgoing_streams_handler.has_peer(&peer_id) { + swarm.close_connection(connection_id); + debug!("already have connection with peer {peer_id}, closed connection {connection_id}"); + } else { + for protocol in &protocols { + match swarm + .behaviour_mut() + .new_control() + .open_stream(peer_id, protocol.clone()) + .await + { + Ok(stream) => { outgoing_streams_handler.insert_peer_and_stream(peer_id, protocol.clone(), stream); + debug!("opened outbound stream with peer {peer_id} with protocol {protocol} on connection {connection_id}"); + } + Err(e) => { + warn!("failed to open stream with peer {peer_id} on connection {connection_id}: {e:?}"); + } + } + } + } + } + SwarmEvent::ConnectionClosed { + peer_id, + cause, + .. + } => { + debug!("connection closed with peer {peer_id}: {cause:?}"); + outgoing_streams_handler.remove_peer(&peer_id); + } + SwarmEvent::Behaviour(event) => event.handle().await, + _ => continue, + } + }, + } + } + } +} + +pub struct NodeBuildResult { + pub node: Node, + pub outgoing_message_tx: mpsc::Sender, + pub incoming_message_rxs: HashMap>, +} + +pub struct NodeBuilder { + port: Option, + listen_addrs: Vec, + keypair_hex: Option, + known_peers: Vec, + agent_version: Option, + protocols: Vec, + cancellation_token: Option, +} + +impl Default for NodeBuilder { + fn default() -> Self { + Self::new() + } +} + +impl NodeBuilder { + pub fn new() -> Self { + Self { + port: None, + listen_addrs: Vec::new(), + keypair_hex: None, + known_peers: Vec::new(), + agent_version: None, + protocols: Vec::new(), + cancellation_token: None, + } + } + + pub fn with_port(mut self, port: u16) -> Self { + self.port = Some(port); + self + } + + pub fn with_listen_addr(mut self, addr: libp2p::Multiaddr) -> Self { + self.listen_addrs.push(addr); + self + } + + pub fn with_keypair_hex_string(mut self, keypair_hex: String) -> Self { + self.keypair_hex = Some(keypair_hex); + self + } + + pub fn with_agent_version(mut self, agent_version: String) -> Self { + self.agent_version = Some(agent_version); + self + } + + pub fn with_protocol(mut self, protocol: StreamProtocol) -> Self { + self.protocols.push(protocol); + self + } + + pub fn with_known_peers(mut self, addresses: I) -> Self + where + I: IntoIterator, + T: Into, + { + for address in addresses { + self.known_peers.push(address.into()); + } + self + } + + pub fn try_build(self) -> eyre::Result> { + let Self { + port, + mut listen_addrs, + keypair_hex, + known_peers, + agent_version, + protocols, + cancellation_token, + } = self; + + // TODO: caller should be forced to provide this + let cancellation_token = cancellation_token.unwrap_or_default(); + + let Some(agent_version) = agent_version else { + eyre::bail!("agent version must be set"); + }; + + let keypair = match keypair_hex { + Some(hex) => { + let mut bytes = hex::decode(hex).wrap_err("failed to decode hex string")?; + let keypair = ed25519::Keypair::try_from_bytes(&mut bytes) + .wrap_err("failed to create keypair from bytes")?; + Some(keypair.into()) + } + None => None, + }; + let keypair = keypair.unwrap_or(identity::Keypair::generate_ed25519()); + let peer_id = keypair.public().to_peer_id(); + + let transport = create_transport(&keypair)?; + let mut behaviour = + Behaviour::new(&keypair, agent_version).context("failed to create behaviour")?; + let mut control = behaviour.new_control(); + + let mut incoming_streams_handlers = Vec::new(); + let mut incoming_message_rxs = HashMap::new(); + for protocol in &protocols { + let incoming_streams = control + .accept(protocol.clone()) + .wrap_err("failed to subscribe to incoming streams for flashblocks protocol")?; + let (incoming_streams_handler, message_rx) = IncomingStreamsHandler::new( + protocol.clone(), + incoming_streams, + cancellation_token.clone(), + ); + incoming_streams_handlers.push(incoming_streams_handler); + incoming_message_rxs.insert(protocol.clone(), message_rx); + } + + let swarm = libp2p::SwarmBuilder::with_existing_identity(keypair) + .with_tokio() + .with_other_transport(|_| transport)? + .with_behaviour(|_| behaviour)? + .with_swarm_config(|cfg| { + cfg.with_idle_connection_timeout(Duration::from_secs(u64::MAX)) // don't disconnect from idle peers + }) + .build(); + if listen_addrs.is_empty() { + let port = port.unwrap_or(0); + let listen_addr = format!("/ip4/0.0.0.0/tcp/{port}") + .parse() + .expect("can parse valid multiaddr"); + listen_addrs.push(listen_addr); + } + + let (outgoing_message_tx, outgoing_message_rx) = tokio::sync::mpsc::channel(100); + + Ok(NodeBuildResult { + node: Node { + peer_id, + swarm, + listen_addrs, + known_peers, + outgoing_message_rx, + outgoing_streams_handler: outgoing::StreamsHandler::new(), + cancellation_token, + incoming_streams_handlers, + protocols, + }, + outgoing_message_tx, + incoming_message_rxs, + }) + } +} + +struct IncomingStreamsHandler { + protocol: StreamProtocol, + incoming: IncomingStreams, + tx: mpsc::Sender, + cancellation_token: CancellationToken, +} + +impl IncomingStreamsHandler { + fn new( + protocol: StreamProtocol, + incoming: IncomingStreams, + cancellation_token: CancellationToken, + ) -> (Self, mpsc::Receiver) { + const CHANNEL_SIZE: usize = 100; + let (tx, rx) = mpsc::channel(CHANNEL_SIZE); + ( + Self { + protocol, + incoming, + tx, + cancellation_token, + }, + rx, + ) + } + + async fn run(self) { + use futures::StreamExt as _; + + let Self { + protocol, + mut incoming, + tx, + cancellation_token, + } = self; + let mut handle_stream_futures = futures::stream::FuturesUnordered::new(); + + loop { + tokio::select! { + _ = cancellation_token.cancelled() => { + debug!("cancellation token triggered, shutting down incoming streams handler for protocol {protocol}"); + return; + } + Some((from, stream)) = incoming.next() => { + debug!("new incoming stream on protocol {protocol} from peer {from}"); + handle_stream_futures.push(tokio::spawn(handle_incoming_stream(from, stream, tx.clone()))); + } + Some(res) = handle_stream_futures.next() => { + match res { + Ok(Ok(())) => {} + Ok(Err(e)) => { + warn!("error handling incoming stream: {e:?}"); + } + Err(e) => { + warn!("task handling incoming stream panicked: {e:?}"); + } + } + } + } + } + } +} + +async fn handle_incoming_stream( + peer_id: PeerId, + stream: libp2p::Stream, + payload_tx: mpsc::Sender, +) -> eyre::Result<()> { + use futures::StreamExt as _; + use tokio_util::{ + codec::{FramedRead, LinesCodec}, + compat::FuturesAsyncReadCompatExt as _, + }; + + let codec = LinesCodec::new(); + let mut reader = FramedRead::new(stream.compat(), codec); + + while let Some(res) = reader.next().await { + match res { + Ok(str) => { + let payload = M::from_str(&str).wrap_err("failed to decode stream message")?; + debug!("got message from peer {peer_id}: {payload:?}"); + let _ = payload_tx.send(payload).await; + } + Err(e) => { + return Err(e).wrap_err(format!("failed to read from stream of peer {peer_id}")); + } + } + } + + Ok(()) +} + +fn create_transport( + keypair: &identity::Keypair, +) -> eyre::Result> { + let transport = tcp::tokio::Transport::new(tcp::Config::default()) + .upgrade(libp2p::core::upgrade::Version::V1) + .authenticate(noise::Config::new(keypair)?) + .multiplex(yamux::Config::default()) + .timeout(Duration::from_secs(20)) + .boxed(); + + Ok(transport) +} + +#[cfg(test)] +mod test { + use super::*; + + const TEST_AGENT_VERSION: &str = "test/1.0.0"; + const TEST_PROTOCOL: StreamProtocol = StreamProtocol::new("/test/1.0.0"); + + #[derive(Debug, PartialEq, Eq, Clone)] + struct TestMessage { + content: String, + } + + impl Message for TestMessage { + fn protocol(&self) -> StreamProtocol { + TEST_PROTOCOL + } + } + + impl serde::Serialize for TestMessage { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(&self.content) + } + } + + impl<'de> serde::Deserialize<'de> for TestMessage { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let s = String::deserialize(deserializer)?; + Ok(TestMessage { content: s }) + } + } + + #[tokio::test] + async fn two_nodes_can_connect_and_message() { + let NodeBuildResult { + node: node1, + outgoing_message_tx: _, + incoming_message_rxs: mut rx1, + } = NodeBuilder::new() + .with_listen_addr("/ip4/127.0.0.1/tcp/9000".parse().unwrap()) + .with_agent_version(TEST_AGENT_VERSION.to_string()) + .with_protocol(TEST_PROTOCOL) + .try_build::() + .unwrap(); + let NodeBuildResult { + node: node2, + outgoing_message_tx: tx2, + incoming_message_rxs: _, + } = NodeBuilder::new() + .with_known_peers(node1.multiaddrs()) + .with_protocol(TEST_PROTOCOL) + .with_listen_addr("/ip4/127.0.0.1/tcp/9001".parse().unwrap()) + .with_agent_version(TEST_AGENT_VERSION.to_string()) + .try_build::() + .unwrap(); + + tokio::spawn(async move { node1.run().await }); + tokio::spawn(async move { node2.run().await }); + // sleep to allow nodes to connect + tokio::time::sleep(Duration::from_secs(2)).await; + + let message = TestMessage { + content: "message".to_string(), + }; + tx2.send(message.clone()).await.unwrap(); + + let recv_message: TestMessage = rx1.remove(&TEST_PROTOCOL).unwrap().recv().await.unwrap(); + assert_eq!(recv_message, message); + } +} diff --git a/crates/p2p/src/outgoing.rs b/crates/p2p/src/outgoing.rs new file mode 100644 index 000000000..c948bde66 --- /dev/null +++ b/crates/p2p/src/outgoing.rs @@ -0,0 +1,95 @@ +use crate::Message; +use eyre::Context; +use futures::stream::FuturesUnordered; +use libp2p::{PeerId, StreamProtocol, swarm::Stream}; +use std::collections::HashMap; +use tracing::{debug, warn}; + +pub(crate) struct StreamsHandler { + peers_to_stream: HashMap>, +} + +impl StreamsHandler { + pub(crate) fn new() -> Self { + Self { + peers_to_stream: HashMap::new(), + } + } + + pub(crate) fn has_peer(&self, peer: &PeerId) -> bool { + self.peers_to_stream.contains_key(peer) + } + + pub(crate) fn insert_peer_and_stream( + &mut self, + peer: PeerId, + protocol: StreamProtocol, + stream: Stream, + ) { + self.peers_to_stream + .entry(peer) + .or_default() + .insert(protocol, stream); + } + + pub(crate) fn remove_peer(&mut self, peer: &PeerId) { + self.peers_to_stream.remove(peer); + } + + pub(crate) async fn broadcast_message(&mut self, message: M) -> eyre::Result<()> { + use futures::{SinkExt as _, StreamExt as _}; + use tokio_util::{ + codec::{FramedWrite, LinesCodec}, + compat::FuturesAsyncReadCompatExt as _, + }; + + let protocol = message.protocol(); + let payload = message + .to_string() + .wrap_err("failed to serialize payload")?; + + let peers = self.peers_to_stream.keys().cloned().collect::>(); + let mut futures = FuturesUnordered::new(); + for peer in peers { + let protocol_to_stream = self + .peers_to_stream + .get_mut(&peer) + .expect("stream map must exist for peer"); + let Some(stream) = protocol_to_stream.remove(&protocol) else { + warn!("no stream for protocol {protocol:?} to peer {peer}"); + continue; + }; + let stream = stream.compat(); + let payload = payload.clone(); + let fut = async move { + let mut writer = FramedWrite::new(stream, LinesCodec::new()); + writer.send(payload).await?; + Ok::<(PeerId, libp2p::swarm::Stream), eyre::ErrReport>(( + peer, + writer.into_inner().into_inner(), + )) + }; + futures.push(fut); + } + while let Some(result) = futures.next().await { + match result { + Ok((peer, stream)) => { + let protocol_to_stream = self + .peers_to_stream + .get_mut(&peer) + .expect("stream map must exist for peer"); + protocol_to_stream.insert(protocol.clone(), stream); + } + Err(e) => { + warn!("failed to send payload to peer: {e:?}"); + } + } + } + debug!( + "broadcasted message to {} peers", + self.peers_to_stream.len() + ); + + Ok(()) + } +}