diff --git a/Cargo.lock b/Cargo.lock index 0c4bcf664..e193e0529 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -14,7 +14,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" dependencies = [ - "crypto-common", + "crypto-common 0.1.7", "generic-array", ] @@ -26,7 +26,7 @@ checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" dependencies = [ "cfg-if", "cipher", - "cpufeatures", + "cpufeatures 0.2.17", ] [[package]] @@ -101,7 +101,7 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9ebac8ff9c2f07667e1803dc777304337e160ce5153335beb45e8ec0751808" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", "num_enum", "serde", @@ -110,15 +110,15 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "1.1.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6440213a22df93a87ed512d2f668e7dc1d62a05642d107f82d61edc9e12370" +checksum = "7f16daaf7e1f95f62c6c3bf8a3fc3d78b08ae9777810c0bb5e94966c7cd57ef0" dependencies = [ "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-serde", - "alloy-trie 0.9.1", + "alloy-trie", "alloy-tx-macros", "arbitrary", "auto_impl", @@ -138,13 +138,13 @@ dependencies = [ [[package]] name = "alloy-consensus-any" -version = "1.1.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15d0bea09287942405c4f9d2a4f22d1e07611c2dbd9d5bf94b75366340f9e6e0" +checksum = "118998d9015332ab1b4720ae1f1e3009491966a0349938a1f43ff45a8a4c6299" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-serde", "arbitrary", @@ -153,19 +153,19 @@ dependencies = [ [[package]] name = "alloy-dyn-abi" -version = "1.4.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdff496dd4e98a81f4861e66f7eaf5f2488971848bb42d9c892f871730245c8" +checksum = "a475bb02d9cef2dbb99065c1664ab3fe1f9352e21d6d5ed3f02cdbfc06ed1abc" dependencies = [ "alloy-json-abi", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-sol-type-parser", "alloy-sol-types", "derive_more 2.1.0", "itoa", "serde", "serde_json", - "winnow", + "winnow 1.0.3", ] [[package]] @@ -174,7 +174,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "741bdd7499908b3aa0b159bba11e71c8cddd009a2c2eb7a06e825f1ec87900a5" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", "arbitrary", "crc", @@ -189,7 +189,7 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9441120fa82df73e8959ae0e4ab8ade03de2aaae61be313fbf5746277847ce25" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", "arbitrary", "borsh", @@ -203,7 +203,7 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2919c5a56a1007492da313e7a3b6d45ef5edc5d33416fdec63c0d7a2702a0d20" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", "arbitrary", "borsh", @@ -214,16 +214,32 @@ dependencies = [ "thiserror 2.0.17", ] +[[package]] +name = "alloy-eip7928" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b827a6d7784fe3eb3489d40699407a4cdcce74271421a01bdffe60cf573bb16" +dependencies = [ + "alloy-primitives 1.6.0", + "alloy-rlp", + "arbitrary", + "borsh", + "once_cell", + "serde", + "thiserror 2.0.17", +] + [[package]] name = "alloy-eips" -version = "1.1.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bd2c7ae05abcab4483ce821f12f285e01c0b33804e6883dd9ca1569a87ee2be" +checksum = "e6ef28c9fdad22d4eec52d894f5f2673a0895f1e5ef196734568e68c0f6caca8" dependencies = [ "alloy-eip2124", "alloy-eip2930", "alloy-eip7702", - "alloy-primitives 1.4.1", + "alloy-eip7928", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-serde", "arbitrary", @@ -233,30 +249,28 @@ dependencies = [ "derive_more 2.1.0", "either", "ethereum_ssz 0.9.1", - "ethereum_ssz_derive", + "ethereum_ssz_derive 0.9.1", "serde", "serde_with", "sha2 0.10.9", - "thiserror 2.0.17", ] [[package]] name = "alloy-evm" -version = "0.23.3" +version = "0.27.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "527b47dc39850c6168002ddc1f7a2063e15d26137c1bb5330f6065a7524c1aa9" +checksum = "b991c370ce44e70a3a9e474087e3d65e42e66f967644ad729dc4cec09a21fd09" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-hardforks 0.4.4", - "alloy-primitives 1.4.1", + "alloy-hardforks 0.4.7", + "alloy-primitives 1.6.0", "alloy-rpc-types-engine", "alloy-rpc-types-eth", "alloy-sol-types", "auto_impl", "derive_more 2.1.0", - "op-alloy-consensus", - "op-alloy-rpc-types-engine", + "op-alloy", "op-revm", "revm", "thiserror 2.0.17", @@ -264,14 +278,14 @@ dependencies = [ [[package]] name = "alloy-genesis" -version = "1.1.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc47eaae86488b07ea8e20236184944072a78784a1f4993f8ec17b3aa5d08c21" +checksum = "bbf9480307b09d22876efb67d30cadd9013134c21f3a17ec9f93fd7536d38024" dependencies = [ "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-serde", - "alloy-trie 0.9.1", + "alloy-trie", "borsh", "serde", "serde_with", @@ -285,20 +299,20 @@ checksum = "3165210652f71dfc094b051602bafd691f506c54050a174b1cba18fb5ef706a3" dependencies = [ "alloy-chains", "alloy-eip2124", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "auto_impl", "dyn-clone", ] [[package]] name = "alloy-hardforks" -version = "0.4.4" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e29d7eacf42f89c21d7f089916d0bdb4f36139a31698790e8837d2dbbd4b2c3" +checksum = "83ba208044232d14d4adbfa77e57d6329f51bc1acc21f5667bb7db72d88a0831" dependencies = [ "alloy-chains", "alloy-eip2124", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "auto_impl", "dyn-clone", "serde", @@ -306,11 +320,11 @@ dependencies = [ [[package]] name = "alloy-json-abi" -version = "1.4.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5513d5e6bd1cba6bdcf5373470f559f320c05c8c59493b6e98912fbe6733943f" +checksum = "7c36c9d7f9021601b04bfef14a4b64849f6d73116a4e91e071d7fbfe10247901" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-sol-type-parser", "serde", "serde_json", @@ -318,11 +332,11 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "1.1.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "003f46c54f22854a32b9cc7972660a476968008ad505427eabab49225309ec40" +checksum = "422d110f1c40f1f8d0e5562b0b649c35f345fccb7093d9f02729943dcd1eef71" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-sol-types", "http 1.4.0", "serde", @@ -333,16 +347,16 @@ dependencies = [ [[package]] name = "alloy-network" -version = "1.1.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f4029954d9406a40979f3a3b46950928a0fdcfe3ea8a9b0c17490d57e8aa0e3" +checksum = "7197a66d94c4de1591cdc16a9bcea5f8cccd0da81b865b49aef97b1b4016e0fa" dependencies = [ "alloy-consensus", "alloy-consensus-any", "alloy-eips", "alloy-json-rpc", "alloy-network-primitives", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rpc-types-any", "alloy-rpc-types-eth", "alloy-serde", @@ -359,30 +373,31 @@ dependencies = [ [[package]] name = "alloy-network-primitives" -version = "1.1.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7805124ad69e57bbae7731c9c344571700b2a18d351bda9e0eba521c991d1bcb" +checksum = "eb82711d59a43fdfd79727c99f270b974c784ec4eb5728a0d0d22f26716c87ef" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-serde", "serde", ] [[package]] name = "alloy-node-bindings" -version = "1.1.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b03d35475a02d2a8b76209cb4a1336cb7d85331d10a0f6ec329ee42151695c19" +checksum = "a9b2fda91b56bb08907cd44c5068130360e027e46a8c17612d386869fa7940be" dependencies = [ "alloy-genesis", "alloy-hardforks 0.2.13", "alloy-network", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-signer", "alloy-signer-local", "k256 0.13.4", + "libc", "rand 0.8.5", "serde_json", "tempfile", @@ -436,15 +451,15 @@ dependencies = [ "ruint", "rustc-hash 2.1.1", "serde", - "sha3", + "sha3 0.10.8", "tiny-keccak", ] [[package]] name = "alloy-primitives" -version = "1.4.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "355bf68a433e0fd7f7d33d5a9fc2583fde70bf5c530f63b80845f8da5505cf28" +checksum = "4885c1409b6936c4898e646ef58baf6ec54edaf6d8179f79df805a7b85b7cf3e" dependencies = [ "alloy-rlp", "arbitrary", @@ -452,29 +467,31 @@ dependencies = [ "cfg-if", "const-hex", "derive_more 2.1.0", + "fixed-cache", "foldhash 0.2.0", - "getrandom 0.3.4", - "hashbrown 0.16.1", + "getrandom 0.4.2", + "hashbrown 0.17.1", "indexmap 2.12.1", "itoa", "k256 0.13.4", "keccak-asm", "paste", "proptest", - "proptest-derive 0.6.0", + "proptest-derive 0.8.0", "rand 0.9.2", + "rapidhash", "ruint", "rustc-hash 2.1.1", + "secp256k1 0.31.1", "serde", - "sha3", - "tiny-keccak", + "sha3 0.11.0", ] [[package]] name = "alloy-provider" -version = "1.1.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d369e12c92870d069e0c9dc5350377067af8a056e29e3badf8446099d7e00889" +checksum = "bf6b18b929ef1d078b834c3631e9c925177f3b23ddc6fa08a722d13047205876" dependencies = [ "alloy-chains", "alloy-consensus", @@ -482,10 +499,12 @@ dependencies = [ "alloy-json-rpc", "alloy-network", "alloy-network-primitives", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-pubsub", "alloy-rpc-client", + "alloy-rpc-types-debug", "alloy-rpc-types-eth", + "alloy-rpc-types-trace", "alloy-signer", "alloy-sol-types", "alloy-transport", @@ -499,10 +518,10 @@ dependencies = [ "either", "futures", "futures-utils-wasm", - "lru 0.13.0", + "lru 0.16.4", "parking_lot", "pin-project", - "reqwest 0.12.24", + "reqwest 0.13.4", "serde", "serde_json", "thiserror 2.0.17", @@ -514,12 +533,12 @@ dependencies = [ [[package]] name = "alloy-pubsub" -version = "1.1.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f77d20cdbb68a614c7a86b3ffef607b37d087bb47a03c58f4c3f8f99bc3ace3b" +checksum = "5ad54073131e7292d4e03e1aa2287730f737280eb160d8b579fb31939f558c11" dependencies = [ "alloy-json-rpc", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-transport", "auto_impl", "bimap", @@ -536,9 +555,9 @@ dependencies = [ [[package]] name = "alloy-rlp" -version = "0.3.12" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f70d83b765fdc080dbcd4f4db70d8d23fe4761f2f02ebfa9146b833900634b4" +checksum = "dc90b1e703d3c03f4ff7f48e82dd0bc1c8211ab7d079cd836a06fcfeb06651cb" dependencies = [ "alloy-rlp-derive", "arrayvec", @@ -547,23 +566,23 @@ dependencies = [ [[package]] name = "alloy-rlp-derive" -version = "0.3.12" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" +checksum = "f36834a5c0a2fa56e171bf256c34d70fca07d0c0031583edea1c4946b7889c9e" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] name = "alloy-rpc-client" -version = "1.1.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31c89883fe6b7381744cbe80fef638ac488ead4f1956a4278956a1362c71cd2e" +checksum = "94fcc9604042ca80bd37aa5e232ea1cd851f337e31e2babbbb345bc0b1c30de3" dependencies = [ "alloy-json-rpc", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-pubsub", "alloy-transport", "alloy-transport-http", @@ -571,7 +590,7 @@ dependencies = [ "alloy-transport-ws", "futures", "pin-project", - "reqwest 0.12.24", + "reqwest 0.13.4", "serde", "serde_json", "tokio", @@ -584,11 +603,11 @@ dependencies = [ [[package]] name = "alloy-rpc-types" -version = "1.1.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e279e6d40ee40fe8f76753b678d8d5d260cb276dc6c8a8026099b16d2b43f4" +checksum = "4faad925d3a669ffc15f43b3deec7fbdf2adeb28a4d6f9cf4bc661698c0f8f4b" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rpc-types-engine", "alloy-rpc-types-eth", "alloy-serde", @@ -597,23 +616,23 @@ dependencies = [ [[package]] name = "alloy-rpc-types-admin" -version = "1.1.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bcf50ccb65d29b8599f8f5e23dcac685f1d79459654c830cba381345760e901" +checksum = "b38080c2b01ad1bacbd3583cf7f6f800e5e0ffc11eaddaad7321225733a2d818" dependencies = [ "alloy-genesis", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "serde", "serde_json", ] [[package]] name = "alloy-rpc-types-anvil" -version = "1.1.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e176c26fdd87893b6afeb5d92099d8f7e7a1fe11d6f4fe0883d6e33ac5f31ba" +checksum = "47df51bedb3e6062cb9981187a51e86d0d64a4de66eb0855e9efe6574b044ddf" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rpc-types-eth", "alloy-serde", "serde", @@ -621,9 +640,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" -version = "1.1.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b43c1622aac2508d528743fd4cfdac1dea92d5a8fa894038488ff7edd0af0b32" +checksum = "3823026d1ed239a40f12364fac50726c8daf1b6ab8077a97212c5123910429ed" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -632,16 +651,16 @@ dependencies = [ [[package]] name = "alloy-rpc-types-beacon" -version = "1.1.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1786681640d4c60f22b6b8376b0f3fa200360bf1c3c2cb913e6c97f51928eb1b" +checksum = "f526dbd7bb039327cfd0ccf18c8a29ffd7402616b0c7a0239512bf8417d544c7" dependencies = [ "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rpc-types-engine", "derive_more 2.1.0", "ethereum_ssz 0.9.1", - "ethereum_ssz_derive", + "ethereum_ssz_derive 0.9.1", "serde", "serde_json", "serde_with", @@ -652,11 +671,11 @@ dependencies = [ [[package]] name = "alloy-rpc-types-debug" -version = "1.1.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b2ca3a434a6d49910a7e8e51797eb25db42ef8a5578c52d877fcb26d0afe7bc" +checksum = "2145138f3214928f08cd13da3cb51ef7482b5920d8ac5a02ecd4e38d1a8f6d1e" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "derive_more 2.1.0", "serde", "serde_with", @@ -664,18 +683,18 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" -version = "1.1.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4c53a8b0905d931e7921774a1830609713bd3e8222347963172b03a3ecc68" +checksum = "bb9b97b6e7965679ad22df297dda809b11cebc13405c1b537e5cffecc95834fa" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-serde", "derive_more 2.1.0", "ethereum_ssz 0.9.1", - "ethereum_ssz_derive", + "ethereum_ssz_derive 0.9.1", "jsonwebtoken", "rand 0.8.5", "serde", @@ -684,15 +703,15 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" -version = "1.1.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed5fafb741c19b3cca4cdd04fa215c89413491f9695a3e928dee2ae5657f607e" +checksum = "59c095f92c4e1ff4981d89e9aa02d5f98c762a1980ab66bec49c44be11349da2" dependencies = [ "alloy-consensus", "alloy-consensus-any", "alloy-eips", "alloy-network-primitives", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-serde", "alloy-sol-types", @@ -706,13 +725,13 @@ dependencies = [ [[package]] name = "alloy-rpc-types-mev" -version = "1.1.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49a97bfc6d9b411c85bb08e1174ddd3e5d61b10d3bd13f529d6609f733cb2f6f" +checksum = "8eae9c65ff60dcc262247b6ebb5ad391ddf36d09029802c1768c5723e0cfa2f4" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rpc-types-eth", "alloy-serde", "serde", @@ -721,11 +740,11 @@ dependencies = [ [[package]] name = "alloy-rpc-types-trace" -version = "1.1.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c55324323aa634b01bdecb2d47462a8dce05f5505b14a6e5db361eef16eda476" +checksum = "2e5a4d010f86cd4e01e5205ec273911e538e1738e76d8bafe9ecd245910ea5a3" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rpc-types-eth", "alloy-serde", "serde", @@ -735,11 +754,11 @@ dependencies = [ [[package]] name = "alloy-rpc-types-txpool" -version = "1.1.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96b1aa28effb6854be356ce92ed64cea3b323acd04c3f8bfb5126e2839698043" +checksum = "942d26a2ca8891b26de4a8529d21091e21c1093e27eb99698f1a86405c76b1ff" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rpc-types-eth", "alloy-serde", "serde", @@ -747,11 +766,11 @@ dependencies = [ [[package]] name = "alloy-serde" -version = "1.1.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6f180c399ca7c1e2fe17ea58343910cad0090878a696ff5a50241aee12fc529" +checksum = "11ece63b89294b8614ab3f483560c08d016930f842bf36da56bf0b764a15c11e" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "arbitrary", "serde", "serde_json", @@ -759,11 +778,11 @@ dependencies = [ [[package]] name = "alloy-signer" -version = "1.1.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc39ad2c0a3d2da8891f4081565780703a593f090f768f884049aa3aa929cbc" +checksum = "43f447aefab0f1c0649f71edc33f590992d4e122bc35fb9cdbbf67d4421ace85" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "async-trait", "auto_impl", "either", @@ -774,13 +793,13 @@ dependencies = [ [[package]] name = "alloy-signer-local" -version = "1.1.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "930e17cb1e46446a193a593a3bfff8d0ecee4e510b802575ebe300ae2e43ef75" +checksum = "f721f4bf2e4812e5505aaf5de16ef3065a8e26b9139ac885862d00b5a55a659a" dependencies = [ "alloy-consensus", "alloy-network", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-signer", "async-trait", "coins-bip32", @@ -793,23 +812,23 @@ dependencies = [ [[package]] name = "alloy-sol-macro" -version = "1.4.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3ce480400051b5217f19d6e9a82d9010cdde20f1ae9c00d53591e4a1afbb312" +checksum = "840128ed2b2971d6d4668a553fe403a82683d3acc646c73e75887e7157408033" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", "proc-macro-error2", "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] name = "alloy-sol-macro-expander" -version = "1.4.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d792e205ed3b72f795a8044c52877d2e6b6e9b1d13f431478121d8d4eaa9028" +checksum = "63ec265e5d65d725175f6ca7711c970824c90ef9c0d1f1973711d4150ee612dd" dependencies = [ "alloy-sol-macro-input", "const-hex", @@ -818,16 +837,16 @@ dependencies = [ "proc-macro-error2", "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "sha3 0.11.0", + "syn 2.0.117", "syn-solidity", - "tiny-keccak", ] [[package]] name = "alloy-sol-macro-input" -version = "1.4.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bd1247a8f90b465ef3f1207627547ec16940c35597875cdc09c49d58b19693c" +checksum = "89bf01077f18650876cfa682eb1f949967b5cde03f1a51c955c469d2c9b4aa67" dependencies = [ "const-hex", "dunce", @@ -835,37 +854,37 @@ dependencies = [ "macro-string", "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", "syn-solidity", ] [[package]] name = "alloy-sol-type-parser" -version = "1.4.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "954d1b2533b9b2c7959652df3076954ecb1122a28cc740aa84e7b0a49f6ac0a9" +checksum = "857b470ecdd2ed38beaf82ad1a38c516a8ff75266750f38b9eeed001d575241b" dependencies = [ "serde", - "winnow", + "winnow 1.0.3", ] [[package]] name = "alloy-sol-types" -version = "1.4.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70319350969a3af119da6fb3e9bddb1bce66c9ea933600cb297c8b1850ad2a3c" +checksum = "384cf252de0db2dec52821eac037a7f57e2aa33fe5b900ce6fe39973402341f1" dependencies = [ "alloy-json-abi", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-sol-macro", "serde", ] [[package]] name = "alloy-transport" -version = "1.1.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cae82426d98f8bc18f53c5223862907cac30ab8fc5e4cd2bb50808e6d3ab43d8" +checksum = "8098f965442a9feb620965ba4b4be5e2b320f4ec5a3fff6bfa9e1ff7ef42bed1" dependencies = [ "alloy-json-rpc", "auto_impl", @@ -886,13 +905,14 @@ dependencies = [ [[package]] name = "alloy-transport-http" -version = "1.1.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90aa6825760905898c106aba9c804b131816a15041523e80b6d4fe7af6380ada" +checksum = "e8597d36d546e1dab822345ad563243ec3920e199322cb554ce56c8ef1a1e2e7" dependencies = [ "alloy-json-rpc", "alloy-transport", - "reqwest 0.12.24", + "itertools 0.14.0", + "reqwest 0.13.4", "serde_json", "tower 0.5.2", "tracing", @@ -901,9 +921,9 @@ dependencies = [ [[package]] name = "alloy-transport-ipc" -version = "1.1.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ace83a4a6bb896e5894c3479042e6ba78aa5271dde599aa8c36a021d49cc8cc" +checksum = "a1bd98c3870b8a44b79091dde5216a81d58ffbc1fd8ed61b776f9fee0f3bdf20" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -921,9 +941,9 @@ dependencies = [ [[package]] name = "alloy-transport-ws" -version = "1.1.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86c9ab4c199e3a8f3520b60ba81aa67bb21fed9ed0d8304e0569094d0758a56f" +checksum = "ec3ab7a72b180992881acc112628b7668337a19ce15293ee974600ea7b693691" dependencies = [ "alloy-pubsub", "alloy-transport", @@ -932,56 +952,42 @@ dependencies = [ "rustls 0.23.35", "serde_json", "tokio", - "tokio-tungstenite 0.26.2", + "tokio-tungstenite 0.28.0", "tracing", + "url", "ws_stream_wasm", ] [[package]] name = "alloy-trie" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "983d99aa81f586cef9dae38443245e585840fcf0fc58b09aee0b1f27aed1d500" -dependencies = [ - "alloy-primitives 1.4.1", - "alloy-rlp", - "arrayvec", - "derive_more 2.1.0", - "nybbles 0.3.4", - "smallvec", - "tracing", -] - -[[package]] -name = "alloy-trie" -version = "0.9.1" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3412d52bb97c6c6cc27ccc28d4e6e8cf605469101193b50b0bd5813b1f990b5" +checksum = "3f14b5d9b2c2173980202c6ff470d96e7c5e202c65a9f67884ad565226df7fbb" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", "arbitrary", - "arrayvec", "derive_arbitrary", "derive_more 2.1.0", - "nybbles 0.4.6", + "nybbles", "proptest", - "proptest-derive 0.5.1", + "proptest-derive 0.7.0", "serde", "smallvec", + "thiserror 2.0.17", "tracing", ] [[package]] name = "alloy-tx-macros" -version = "1.1.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae109e33814b49fc0a62f2528993aa8a2dd346c26959b151f05441dc0b9da292" +checksum = "d69722eddcdf1ce096c3ab66cf8116999363f734eb36fe94a148f4f71c85da84" dependencies = [ - "darling 0.21.3", + "darling 0.23.0", "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -1055,6 +1061,15 @@ version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" +[[package]] +name = "approx" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" +dependencies = [ + "num-traits", +] + [[package]] name = "aquamarine" version = "0.6.0" @@ -1066,7 +1081,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -1217,7 +1232,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" dependencies = [ "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -1255,7 +1270,7 @@ dependencies = [ "num-traits", "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -1344,7 +1359,7 @@ checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -1519,7 +1534,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -1530,7 +1545,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -1577,7 +1592,7 @@ checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -1595,6 +1610,28 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +[[package]] +name = "aws-lc-rs" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ec2f1fc3ec205783a5da9a7e6c1509cc69dedf09a1949e412c1e18469326d00" +dependencies = [ + "aws-lc-sys", + "zeroize", +] + +[[package]] +name = "aws-lc-sys" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a2f9779ce85b93ab6170dd940ad0169b5766ff848247aff13bb788b832fe3f4" +dependencies = [ + "cc", + "cmake", + "dunce", + "fs_extra", +] + [[package]] name = "axum" version = "0.8.7" @@ -1638,12 +1675,6 @@ dependencies = [ "tower-service", ] -[[package]] -name = "az" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b7e4c2464d97fe331d41de9d5db0def0a96f4d823b8b32a2efd503578988973" - [[package]] name = "backon" version = "1.6.0" @@ -1744,13 +1775,13 @@ dependencies = [ name = "bid-scraper" version = "0.1.0" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-provider", "alloy-rpc-types-beacon", "async-trait", "derivative", "ethereum_ssz 0.9.1", - "ethereum_ssz_derive", + "ethereum_ssz_derive 0.9.1", "exponential-backoff", "eyre", "futures", @@ -1813,31 +1844,13 @@ dependencies = [ "serde", ] -[[package]] -name = "bindgen" -version = "0.71.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3" -dependencies = [ - "bitflags 2.10.0", - "cexpr", - "clang-sys", - "itertools 0.13.0", - "proc-macro2 1.0.103", - "quote 1.0.42", - "regex", - "rustc-hash 2.1.1", - "shlex", - "syn 2.0.111", -] - [[package]] name = "bindgen" version = "0.72.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "cexpr", "clang-sys", "itertools 0.13.0", @@ -1847,8 +1860,8 @@ dependencies = [ "quote 1.0.42", "regex", "rustc-hash 2.1.1", - "shlex", - "syn 2.0.111", + "shlex 1.3.0", + "syn 2.0.117", ] [[package]] @@ -1890,9 +1903,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.10.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" dependencies = [ "serde_core", ] @@ -1928,6 +1941,15 @@ dependencies = [ "generic-array", ] +[[package]] +name = "block-buffer" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdd35008169921d80bc60d3d0ab416eecb028c4cd653352907921d95084790be" +dependencies = [ + "hybrid-array", +] + [[package]] name = "block-padding" version = "0.3.3" @@ -1961,7 +1983,7 @@ version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc119a5ad34c3f459062a96907f53358989b173d104258891bb74f95d93747e8" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "boa_interner", "boa_macros", "boa_string", @@ -1978,7 +2000,7 @@ checksum = "e637ec52ea66d76b0ca86180c259d6c7bb6e6a6e14b2f36b85099306d8b00cc3" dependencies = [ "aligned-vec", "arrayvec", - "bitflags 2.10.0", + "bitflags 2.13.0", "boa_ast", "boa_gc", "boa_interner", @@ -2060,7 +2082,7 @@ dependencies = [ "cow-utils", "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", "synstructure 0.13.2", ] @@ -2070,7 +2092,7 @@ version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "02f99bf5b684f0de946378fcfe5f38c3a0fbd51cbf83a0f39ff773a0e218541f" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "boa_ast", "boa_interner", "boa_macros", @@ -2116,7 +2138,7 @@ dependencies = [ "proc-macro-crate 3.4.0", "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -2212,16 +2234,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] -name = "byte-slice-cast" -version = "1.2.3" +name = "by_address" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" +checksum = "64fa3c856b712db6612c019f14756e64e4bcea13337a6b33b696333a9eaa2d06" [[package]] -name = "bytecount" -version = "0.6.9" +name = "byte-slice-cast" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" [[package]] name = "bytemuck" @@ -2240,7 +2262,7 @@ checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -2251,9 +2273,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" dependencies = [ "serde", ] @@ -2280,9 +2302,9 @@ dependencies = [ [[package]] name = "c-kzg" -version = "2.1.5" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e00bf4b112b07b505472dbefd19e37e53307e2bfed5a79e0cc161d58ccd0e687" +checksum = "6648ed1e4ea8e8a1a4a2c78e1cda29a3fd500bc622899c340d8525ea9a76b24a" dependencies = [ "arbitrary", "blst", @@ -2305,31 +2327,19 @@ dependencies = [ [[package]] name = "cargo-platform" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo_metadata" -version = "0.14.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181fa" +checksum = "dd0061da739915fae12ea00e16397555ed4371a6bb285431aab930f61b0aa4ba" dependencies = [ - "camino", - "cargo-platform", - "semver 1.0.27", "serde", - "serde_json", + "serde_core", ] [[package]] name = "cargo_metadata" -version = "0.19.2" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" +checksum = "ef987d17b0a113becdd19d3d0022d04d7ef41f9efe4f3fb63ac44ba61df3ade9" dependencies = [ "camino", "cargo-platform", @@ -2339,12 +2349,6 @@ dependencies = [ "thiserror 2.0.17", ] -[[package]] -name = "cassowary" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53" - [[package]] name = "cast" version = "0.3.0" @@ -2362,13 +2366,14 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.15" +version = "1.2.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c736e259eea577f443d5c86c304f9f4ae0295c43f3ba05c21f1d66b5f06001af" +checksum = "556e016178bb5662a08681bbe0f00f8e17631781a4dfc8c45e466e4b185ec27f" dependencies = [ + "find-msvc-tools", "jobserver", "libc", - "shlex", + "shlex 2.0.1", ] [[package]] @@ -2455,7 +2460,7 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ - "crypto-common", + "crypto-common 0.1.7", "inout", ] @@ -2507,7 +2512,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -2534,7 +2539,7 @@ dependencies = [ "hyper 1.8.1", "hyper-tls 0.6.0", "hyper-util", - "lz4_flex", + "lz4_flex 0.11.5", "polonius-the-crab", "quanta", "serde", @@ -2554,7 +2559,7 @@ dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", "serde_derive_internals", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -2641,7 +2646,7 @@ dependencies = [ "ripemd", "serde", "sha2 0.10.9", - "sha3", + "sha3 0.10.8", "thiserror 1.0.69", ] @@ -2667,16 +2672,16 @@ version = "7.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b03b7db8e0b4b2fdad6c551e634134e99ec000e5c8c3b6856c65e8bbaded7a3b" dependencies = [ - "crossterm 0.29.0", + "crossterm", "unicode-segmentation", - "unicode-width 0.2.0", + "unicode-width", ] [[package]] name = "compact_str" -version = "0.8.1" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b79c4069c6cad78e2e0cdfcbd26275770669fb39fd308a752dc110e83b9af32" +checksum = "9dfdd1c2274d9aa354115b09dc9a901d6c5576818cdf70d14cae2bdb47df00ab" dependencies = [ "castaway", "cfg-if", @@ -2733,7 +2738,7 @@ dependencies = [ "encode_unicode", "libc", "once_cell", - "unicode-width 0.2.0", + "unicode-width", "windows-sys 0.59.0", ] @@ -2744,7 +2749,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3bb320cac8a0750d7f25280aa97b09c26edfe161164238ecbbb31092b079e735" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "proptest", "serde_core", ] @@ -2862,6 +2867,15 @@ dependencies = [ "libc", ] +[[package]] +name = "cpufeatures" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" +dependencies = [ + "libc", +] + [[package]] name = "crc" version = "3.4.0" @@ -2986,33 +3000,21 @@ version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" -[[package]] -name = "crossterm" -version = "0.28.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" -dependencies = [ - "bitflags 2.10.0", - "crossterm_winapi", - "mio", - "parking_lot", - "rustix 0.38.44", - "signal-hook", - "signal-hook-mio", - "winapi", -] - [[package]] name = "crossterm" version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "crossterm_winapi", + "derive_more 2.1.0", "document-features", + "mio", "parking_lot", - "rustix 1.1.2", + "rustix", + "signal-hook", + "signal-hook-mio", "winapi", ] @@ -3066,6 +3068,15 @@ dependencies = [ "typenum", ] +[[package]] +name = "crypto-common" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" +dependencies = [ + "hybrid-array", +] + [[package]] name = "cssparser" version = "0.31.2" @@ -3086,7 +3097,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -3117,7 +3128,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501" dependencies = [ "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -3136,7 +3147,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "curve25519-dalek-derive", "digest 0.10.7", "fiat-crypto", @@ -3153,7 +3164,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -3176,6 +3187,16 @@ dependencies = [ "darling_macro 0.21.3", ] +[[package]] +name = "darling" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" +dependencies = [ + "darling_core 0.23.0", + "darling_macro 0.23.0", +] + [[package]] name = "darling_core" version = "0.20.11" @@ -3187,7 +3208,7 @@ dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", "strsim", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -3197,12 +3218,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" dependencies = [ "fnv", + "ident_case", + "proc-macro2 1.0.103", + "quote 1.0.42", + "strsim", + "syn 2.0.117", +] + +[[package]] +name = "darling_core" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" +dependencies = [ "ident_case", "proc-macro2 1.0.103", "quote 1.0.42", "serde", "strsim", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -3213,7 +3247,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -3224,7 +3258,18 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core 0.21.3", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", +] + +[[package]] +name = "darling_macro" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" +dependencies = [ + "darling_core 0.23.0", + "quote 1.0.42", + "syn 2.0.117", ] [[package]] @@ -3246,6 +3291,7 @@ version = "6.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" dependencies = [ + "arbitrary", "cfg-if", "crossbeam-utils", "hashbrown 0.14.5", @@ -3253,6 +3299,7 @@ dependencies = [ "once_cell", "parking_lot_core", "rayon", + "serde", ] [[package]] @@ -3278,7 +3325,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d162beedaa69905488a8da94f5ac3edb4dd4788b732fadb7bd120b2625c1976" dependencies = [ "data-encoding", - "syn 2.0.111", + "syn 1.0.109", ] [[package]] @@ -3348,7 +3395,7 @@ checksum = "ef941ded77d15ca19b40374869ac6000af1c9f2a4c0f3d4c70926287e6364a8f" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -3359,7 +3406,7 @@ checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -3380,7 +3427,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -3390,7 +3437,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -3403,7 +3450,7 @@ dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", "rustc_version 0.4.1", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -3432,7 +3479,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -3445,7 +3492,7 @@ dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", "rustc_version 0.4.1", - "syn 2.0.111", + "syn 2.0.117", "unicode-xid 0.2.6", ] @@ -3478,10 +3525,20 @@ checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer 0.10.4", "const-oid", - "crypto-common", + "crypto-common 0.1.7", "subtle", ] +[[package]] +name = "digest" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" +dependencies = [ + "block-buffer 0.12.0", + "crypto-common 0.2.2", +] + [[package]] name = "dirs" version = "6.0.0" @@ -3565,7 +3622,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -3639,7 +3696,7 @@ checksum = "1ec431cd708430d5029356535259c5d645d60edd3d39c54e5eea9782d46caa7d" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -3703,7 +3760,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -3803,7 +3860,7 @@ dependencies = [ "rand 0.8.5", "rlp", "serde", - "sha3", + "sha3 0.10.8", "zeroize", ] @@ -3823,7 +3880,7 @@ dependencies = [ "rand 0.8.5", "secp256k1 0.30.0", "serde", - "sha3", + "sha3 0.10.8", "zeroize", ] @@ -3836,7 +3893,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -3856,7 +3913,7 @@ checksum = "685adfa4d6f3d765a26bc5dbc936577de9abf756c1feeb3089b01dd395034842" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -3876,7 +3933,7 @@ checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -3888,7 +3945,7 @@ dependencies = [ "once_cell", "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -3908,7 +3965,7 @@ checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -3927,15 +3984,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "error-chain" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc" -dependencies = [ - "version_check 0.9.5", -] - [[package]] name = "etcetera" version = "0.8.0" @@ -3951,9 +3999,9 @@ dependencies = [ name = "eth-sparse-mpt" version = "0.1.0" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", - "alloy-trie 0.8.1", + "alloy-trie", "arrayvec", "criterion", "dashmap 6.1.0", @@ -3961,7 +4009,7 @@ dependencies = [ "eyre", "flate2", "hash-db", - "nybbles 0.3.4", + "nybbles", "parking_lot", "proptest", "rand 0.8.5", @@ -3976,6 +4024,7 @@ dependencies = [ "reth-node-ethereum", "reth-provider", "reth-revm", + "reth-tasks", "reth-trie", "reth-trie-db", "reth-trie-parallel", @@ -4002,7 +4051,7 @@ dependencies = [ "regex", "serde", "serde_json", - "sha3", + "sha3 0.10.8", "thiserror 1.0.69", "uint 0.9.5", ] @@ -4068,7 +4117,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c853bd72c9e5787f8aafc3df2907c2ed03cff3150c3acd94e2e53a98ab70a8ab" dependencies = [ - "cpufeatures", + "cpufeatures 0.2.17", "ring", "sha2 0.10.9", ] @@ -4092,7 +4141,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3dc1355dbb41fbbd34ec28d4fb2a57d9a70c67ac3c19f6a5ca4d4a176b9e997a" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "hex", "serde", "serde_derive", @@ -4116,7 +4165,7 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dcddb2554d19cde19b099fadddde576929d7a4d0c1cd3512d1fd95cf174375c" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "ethereum_serde_utils 0.8.0", "itertools 0.13.0", "serde", @@ -4125,6 +4174,21 @@ dependencies = [ "typenum", ] +[[package]] +name = "ethereum_ssz" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e462875ad8693755ea8913d6e905715c76ea4836e2254e18c9cf0f7a8f8c2a13" +dependencies = [ + "alloy-primitives 1.6.0", + "ethereum_serde_utils 0.8.0", + "itertools 0.14.0", + "serde", + "serde_derive", + "smallvec", + "typenum", +] + [[package]] name = "ethereum_ssz_derive" version = "0.9.1" @@ -4134,7 +4198,19 @@ dependencies = [ "darling 0.20.11", "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", +] + +[[package]] +name = "ethereum_ssz_derive" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf022360bdbe9456eda5f35718a50476d5b2a0d51a97ed4eae27420737a6fba" +dependencies = [ + "darling 0.23.0", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.117", ] [[package]] @@ -4176,6 +4252,17 @@ version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" +[[package]] +name = "evmap" +version = "11.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8874945f036109c72242964c1174cf99434e30cfa45bf45fedc983f50046f8" +dependencies = [ + "hashbag", + "left-right", + "smallvec", +] + [[package]] name = "exponential-backoff" version = "1.2.1" @@ -4213,6 +4300,12 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8eb564c5c7423d25c886fb561d1e4ee69f72354d16918afa32c08811f6b6a55" +[[package]] +name = "fast-srgb8" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd2e7510819d6fbf51a5545c8f922716ecfb14df168a3242f7d33e0239efe6a1" + [[package]] name = "fastrand" version = "1.9.0" @@ -4298,6 +4391,23 @@ dependencies = [ "windows-sys 0.60.2", ] +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + +[[package]] +name = "fixed-cache" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fe63500644ef0269fe6b744e7e5dc5c20b5eebf3d881bc2be53f194636f6583" +dependencies = [ + "equivalent", + "rapidhash", + "typeid", +] + [[package]] name = "fixed-hash" version = "0.8.0" @@ -4310,6 +4420,27 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "fixed-map" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86ed19add84e8cb9e8cc5f7074de0324247149ffef0b851e215fb0edc50c229b" +dependencies = [ + "fixed-map-derive", + "serde", +] + +[[package]] +name = "fixed-map-derive" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dc7a9cb3326bafb80642c5ce99b39a2c0702d4bfa8ee8a3e773791a6cbe2407" +dependencies = [ + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.117", +] + [[package]] name = "fixedbitset" version = "0.5.7" @@ -4402,6 +4533,12 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28dd6caf6059519a65843af8fe2a3ae298b14b80179855aeb4adc2c1934ee619" +[[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + [[package]] name = "fsevent-sys" version = "4.1.0" @@ -4589,7 +4726,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -4724,7 +4861,7 @@ version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfe4fbac503b8d1f88e6676011885f34b7174f46e59956bba534ba83abded4df" dependencies = [ - "unicode-width 0.2.0", + "unicode-width", ] [[package]] @@ -4760,11 +4897,24 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "r-efi", + "r-efi 5.3.0", "wasip2", "wasm-bindgen", ] +[[package]] +name = "getrandom" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +dependencies = [ + "cfg-if", + "libc", + "r-efi 6.0.0", + "wasip2", + "wasip3", +] + [[package]] name = "ghash" version = "0.5.1" @@ -4781,7 +4931,7 @@ version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2deb07a133b1520dc1a5690e9bd08950108873d7ed5de38dcc74d3b5ebffa110" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "libc", "libgit2-sys", "log", @@ -4861,16 +5011,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "gmp-mpfr-sys" -version = "1.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60f8970a75c006bb2f8ae79c6768a116dd215fa8346a87aed99bf9d82ca43394" -dependencies = [ - "libc", - "windows-sys 0.60.2", -] - [[package]] name = "governor" version = "0.6.3" @@ -4974,6 +5114,12 @@ version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b4b9ebce26001bad2e6366295f64e381c1e9c479109202149b9e15e154973e9" +[[package]] +name = "hashbag" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7040a10f52cba493ddb09926e15d10a9d8a28043708a405931fe4c6f19fac064" + [[package]] name = "hashbrown" version = "0.12.3" @@ -5017,6 +5163,17 @@ name = "hashbrown" version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash 0.2.0", +] + +[[package]] +name = "hashbrown" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" dependencies = [ "allocator-api2", "equivalent", @@ -5334,6 +5491,15 @@ dependencies = [ "serde", ] +[[package]] +name = "hybrid-array" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3944cf8cf766b40e2a1a333ee5e9b563f854d5fa49d6a8ca2764e97c6eddb214" +dependencies = [ + "typenum", +] + [[package]] name = "hyper" version = "0.14.32" @@ -5555,7 +5721,7 @@ dependencies = [ "iceoryx2-bb-elementary-traits", "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -5692,7 +5858,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd2ff4c48a8b992baabb09a573db9446bff89e39a193500dd5c8f8196c241c63" dependencies = [ - "bindgen 0.72.1", + "bindgen", "cc", "iceoryx2-pal-concurrency-sync", "iceoryx2-pal-configuration", @@ -5790,6 +5956,12 @@ dependencies = [ "zerovec", ] +[[package]] +name = "id-arena" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" + [[package]] name = "ident_case" version = "1.0.1" @@ -5862,7 +6034,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -5923,7 +6095,7 @@ dependencies = [ "console", "number_prefix", "portable-atomic", - "unicode-width 0.2.0", + "unicode-width", "web-time", ] @@ -5948,7 +6120,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "inotify-sys", "libc", ] @@ -5982,7 +6154,7 @@ dependencies = [ "indoc", "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -6051,16 +6223,6 @@ version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" -[[package]] -name = "iri-string" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397" -dependencies = [ - "memchr", - "serde", -] - [[package]] name = "is-terminal" version = "0.4.17" @@ -6129,19 +6291,68 @@ dependencies = [ "cesu8", "cfg-if", "combine", - "jni-sys", + "jni-sys 0.3.0", "log", "thiserror 1.0.69", "walkdir", "windows-sys 0.45.0", ] +[[package]] +name = "jni" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498" +dependencies = [ + "cfg-if", + "combine", + "jni-macros", + "jni-sys 0.4.1", + "log", + "simd_cesu8", + "thiserror 2.0.17", + "walkdir", + "windows-link 0.2.1", +] + +[[package]] +name = "jni-macros" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3" +dependencies = [ + "proc-macro2 1.0.103", + "quote 1.0.42", + "rustc_version 0.4.1", + "simd_cesu8", + "syn 2.0.117", +] + [[package]] name = "jni-sys" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" +[[package]] +name = "jni-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote 1.0.42", + "syn 2.0.117", +] + [[package]] name = "jobserver" version = "0.1.34" @@ -6236,7 +6447,7 @@ dependencies = [ "pin-project", "rustls 0.23.35", "rustls-pki-types", - "rustls-platform-verifier", + "rustls-platform-verifier 0.5.3", "soketto 0.8.1", "thiserror 2.0.17", "tokio", @@ -6334,7 +6545,7 @@ dependencies = [ "jsonrpsee-core 0.26.0", "jsonrpsee-types 0.26.0", "rustls 0.23.35", - "rustls-platform-verifier", + "rustls-platform-verifier 0.5.3", "serde", "serde_json", "thiserror 2.0.17", @@ -6366,7 +6577,7 @@ dependencies = [ "proc-macro-crate 3.4.0", "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -6537,20 +6748,41 @@ dependencies = [ "signature 2.2.0", ] +[[package]] +name = "kasuari" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fe90c1150662e858c7d5f945089b7517b0a80d8bf7ba4b1b5ffc984e7230a5b" +dependencies = [ + "hashbrown 0.16.1", + "portable-atomic", + "thiserror 2.0.17", +] + [[package]] name = "keccak" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" dependencies = [ - "cpufeatures", + "cpufeatures 0.2.17", +] + +[[package]] +name = "keccak" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e24a010dd405bd7ed803e5253182815b41bf2e6a80cc3bfc066658e03a198aa" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.0", ] [[package]] name = "keccak-asm" -version = "0.1.4" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6" +checksum = "dd5dc2c0d691cbf7595cde551ced329cca99c2387c2cbc97754c5d0cd045d3ee" dependencies = [ "digest 0.10.7", "sha3-asm", @@ -6585,6 +6817,23 @@ dependencies = [ "spin 0.9.8", ] +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + +[[package]] +name = "left-right" +version = "0.11.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f0c21e4c8ff95f487fb34e6f9182875f42c84cef966d29216bf115d9bba835a" +dependencies = [ + "crossbeam-utils", + "loom", + "slab", +] + [[package]] name = "lexical" version = "6.1.1" @@ -6717,7 +6966,7 @@ version = "0.14.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a54ad7278b8bc5301d5ffd2a94251c004feb971feba96c971ea4063645990757" dependencies = [ - "bindgen 0.72.1", + "bindgen", "errno", "libc", ] @@ -6728,7 +6977,7 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "libc", "redox_syscall", ] @@ -6756,6 +7005,15 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "line-clipping" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f50e8f47623268b5407192d26876c4d7f89d686ca130fdc53bced4814cd29f8" +dependencies = [ + "bitflags 2.13.0", +] + [[package]] name = "linked-hash-map" version = "0.5.6" @@ -6772,12 +7030,6 @@ dependencies = [ "serde_core", ] -[[package]] -name = "linux-raw-sys" -version = "0.4.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" - [[package]] name = "linux-raw-sys" version = "0.11.0" @@ -6845,11 +7097,20 @@ dependencies = [ [[package]] name = "lru" -version = "0.13.0" +version = "0.16.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "227748d55f2f0ab4735d87fd623798cb6b664512fe979705f829c9f81c934465" +checksum = "7f66e8d5d03f609abc3a39e6f08e4164ebf1447a732906d39eb9b99b7919ef39" dependencies = [ - "hashbrown 0.15.5", + "hashbrown 0.16.1", +] + +[[package]] +name = "lru" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a860605968fce16869fd239cf4237a82f3ac470723415db603b0e8b6c8d4fb9" +dependencies = [ + "hashbrown 0.17.1", ] [[package]] @@ -6886,6 +7147,12 @@ dependencies = [ "twox-hash", ] +[[package]] +name = "lz4_flex" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90071f8077f8e40adfc4b7fe9cd495ce316263f19e75c2211eeff3fdf475a3d9" + [[package]] name = "mac" version = "0.1.1" @@ -6903,13 +7170,13 @@ dependencies = [ [[package]] name = "macro-string" -version = "0.1.4" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" +checksum = "59a9dbbfc75d2688ed057456ce8a3ee3f48d12eec09229f560f3643b9f275653" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -7034,38 +7301,38 @@ dependencies = [ [[package]] name = "metrics" -version = "0.24.3" +version = "0.24.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d5312e9ba3771cfa961b585728215e3d972c950a3eed9252aa093d6301277e8" +checksum = "89550ee9f79e88fef3119de263694973a8adb26c21d75322164fb8c493039fe2" dependencies = [ - "ahash", "portable-atomic", + "rapidhash", ] [[package]] name = "metrics-derive" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3dbdd96ed57d565ec744cba02862d707acf373c5772d152abae6ec5c4e24f6c" +checksum = "161ab904c2c62e7bda0f7562bf22f96440ca35ff79e66c800cbac298f2f4f5ec" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "regex", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] name = "metrics-exporter-prometheus" -version = "0.16.2" +version = "0.18.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd7399781913e5393588a8d8c6a2867bf85fb38eaf2502fdce465aad2dc6f034" +checksum = "1db0d8f1fc9e62caebd0319e11eaec5822b0186c171568f0480b46a0137f9108" dependencies = [ "base64 0.22.1", + "evmap", "indexmap 2.12.1", "metrics", "metrics-util", "quanta", - "thiserror 1.0.69", + "thiserror 2.0.17", ] [[package]] @@ -7079,24 +7346,25 @@ dependencies = [ "mach2", "metrics", "once_cell", - "procfs 0.18.0", + "procfs", "rlimit", "windows 0.62.2", ] [[package]] name = "metrics-util" -version = "0.19.1" +version = "0.20.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8496cc523d1f94c1385dd8f0f0c2c480b2b8aeccb5b7e4485ad6365523ae376" +checksum = "96f8722f8562635f92f8ed992f26df0532266eb03d5202607c20c0d7e9745e13" dependencies = [ "crossbeam-epoch", "crossbeam-utils", - "hashbrown 0.15.5", + "hashbrown 0.16.1", "metrics", "quanta", "rand 0.9.2", "rand_xoshiro", + "rapidhash", "sketches-ddsketch", ] @@ -7105,7 +7373,7 @@ name = "metrics_macros" version = "0.1.0" dependencies = [ "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -7143,21 +7411,6 @@ dependencies = [ "unicase", ] -[[package]] -name = "mini-moka" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c325dfab65f261f386debee8b0969da215b3fa0037e74c8a1234db7ba986d803" -dependencies = [ - "crossbeam-channel", - "crossbeam-utils", - "dashmap 5.5.3", - "skeptic", - "smallvec", - "tagptr", - "triomphe", -] - [[package]] name = "minimal-lexical" version = "0.2.1" @@ -7210,14 +7463,14 @@ dependencies = [ "cfg-if", "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] name = "modular-bitfield" -version = "0.11.2" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a53d79ba8304ac1c4f9eb3b9d281f21f7be9d4626f72ce7df4ad8fbde4f38a74" +checksum = "2956e537fc68236d2aa048f55704f231cc93f1c4de42fe1ecb5bd7938061fc4a" dependencies = [ "modular-bitfield-impl", "static_assertions", @@ -7225,13 +7478,13 @@ dependencies = [ [[package]] name = "modular-bitfield-impl" -version = "0.11.2" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a7d5f7076603ebc68de2dc6a650ec331a062a13abaa346975be747bbfa4b789" +checksum = "59b43b4fd69e3437618106f7754f34021b831a514f9e1a98ae863cabcd8d8dad" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 1.0.109", + "syn 2.0.117", ] [[package]] @@ -7456,7 +7709,7 @@ version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "fsevent-sys", "inotify", "kqueue", @@ -7553,9 +7806,9 @@ dependencies = [ [[package]] name = "num-conv" -version = "0.1.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" [[package]] name = "num-integer" @@ -7627,7 +7880,7 @@ dependencies = [ "proc-macro-crate 3.4.0", "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -7647,30 +7900,36 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "nybbles" -version = "0.3.4" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8983bb634df7248924ee0c4c3a749609b5abcb082c28fffe3254b3eb3602b307" +checksum = "0d49ff0c0d00d4a502b39df9af3a525e1efeb14b9dabb5bb83335284c1309210" dependencies = [ "alloy-rlp", - "const-hex", + "arbitrary", + "cfg-if", "proptest", + "ruint", "serde", "smallvec", ] [[package]] -name = "nybbles" -version = "0.4.6" +name = "objc2-core-foundation" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c4b5ecbd0beec843101bffe848217f770e8b8da81d8355b7d6e226f2199b3dc" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ - "alloy-rlp", - "arbitrary", - "cfg-if", - "proptest", - "ruint", - "serde", - "smallvec", + "bitflags 2.13.0", +] + +[[package]] +name = "objc2-io-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33fafba39597d6dc1fb709123dfa8289d39406734be322956a69f0931c73bb15" +dependencies = [ + "libc", + "objc2-core-foundation", ] [[package]] @@ -7695,16 +7954,31 @@ version = "11.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" +[[package]] +name = "op-alloy" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9b8fee21003dd4f076563de9b9d26f8c97840157ef78593cd7f262c5ca99848" +dependencies = [ + "op-alloy-consensus", + "op-alloy-network", + "op-alloy-provider", + "op-alloy-rpc-types", + "op-alloy-rpc-types-engine", +] + [[package]] name = "op-alloy-consensus" -version = "0.22.4" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "726da827358a547be9f1e37c2a756b9e3729cb0350f43408164794b370cad8ae" +checksum = "736381a95471d23e267263cfcee9e1d96d30b9754a94a2819148f83379de8a86" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-network", + "alloy-primitives 1.6.0", "alloy-rlp", + "alloy-rpc-types-eth", "alloy-serde", "arbitrary", "derive_more 2.1.0", @@ -7714,31 +7988,82 @@ dependencies = [ ] [[package]] -name = "op-alloy-rpc-types-engine" -version = "0.22.4" +name = "op-alloy-network" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8f24b8cb66e4b33e6c9e508bf46b8ecafc92eadd0b93fedd306c0accb477657" +checksum = "4034183dca6bff6632e7c24c92e75ff5f0eabb58144edb4d8241814851334d47" dependencies = [ "alloy-consensus", - "alloy-eips", - "alloy-primitives 1.4.1", - "alloy-rlp", - "alloy-rpc-types-engine", - "alloy-serde", + "alloy-network", + "alloy-primitives 1.6.0", + "alloy-provider", + "alloy-rpc-types-eth", + "alloy-signer", + "op-alloy-consensus", + "op-alloy-rpc-types", +] + +[[package]] +name = "op-alloy-provider" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6753d90efbaa8ea8bcb89c1737408ca85fa60d7adb875049d3f382c063666f86" +dependencies = [ + "alloy-network", + "alloy-primitives 1.6.0", + "alloy-provider", + "alloy-rpc-types-engine", + "alloy-transport", + "async-trait", + "op-alloy-rpc-types-engine", +] + +[[package]] +name = "op-alloy-rpc-types" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd87c6b9e5b6eee8d6b76f41b04368dca0e9f38d83338e5b00e730c282098a4" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-network-primitives", + "alloy-primitives 1.6.0", + "alloy-rpc-types-eth", + "alloy-serde", + "derive_more 2.1.0", + "op-alloy-consensus", + "serde", + "serde_json", + "thiserror 2.0.17", +] + +[[package]] +name = "op-alloy-rpc-types-engine" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77727699310a18cdeed32da3928c709e2704043b6584ed416397d5da65694efc" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives 1.6.0", + "alloy-rlp", + "alloy-rpc-types-engine", + "alloy-serde", "derive_more 2.1.0", "ethereum_ssz 0.9.1", - "ethereum_ssz_derive", + "ethereum_ssz_derive 0.9.1", "op-alloy-consensus", "serde", + "sha2 0.10.9", "snap", "thiserror 2.0.17", ] [[package]] name = "op-revm" -version = "12.0.2" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e31622d03b29c826e48800f4c8f389c8a9c440eb796a3e35203561a288f12985" +checksum = "79c92b75162c2ed1661849fa51683b11254a5b661798360a2c24be918edafd40" dependencies = [ "auto_impl", "revm", @@ -7782,7 +8107,7 @@ version = "0.10.75" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "cfg-if", "foreign-types", "libc", @@ -7799,7 +8124,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -7834,6 +8159,18 @@ dependencies = [ "tracing", ] +[[package]] +name = "opentelemetry-appender-tracing" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef6a1ac5ca3accf562b8c306fa8483c85f4390f768185ab775f242f7fe8fdcc2" +dependencies = [ + "opentelemetry", + "tracing", + "tracing-core", + "tracing-subscriber 0.3.22", +] + [[package]] name = "opentelemetry-http" version = "0.31.0" @@ -7928,6 +8265,30 @@ dependencies = [ "winapi", ] +[[package]] +name = "palette" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cbf71184cc5ecc2e4e1baccdb21026c20e5fc3dcf63028a086131b3ab00b6e6" +dependencies = [ + "approx", + "fast-srgb8", + "libm", + "palette_derive", +] + +[[package]] +name = "palette_derive" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5030daf005bface118c096f510ffb781fc28f9ab6a32ab224d8631be6851d30" +dependencies = [ + "by_address", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.117", +] + [[package]] name = "parity-scale-codec" version = "3.7.5" @@ -7955,7 +8316,7 @@ dependencies = [ "proc-macro-crate 3.4.0", "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -8189,7 +8550,7 @@ dependencies = [ "phf_shared 0.11.3", "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -8202,7 +8563,7 @@ dependencies = [ "phf_shared 0.13.1", "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -8249,7 +8610,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -8386,7 +8747,7 @@ checksum = "b24f92fc5b167f668ff85ab9607dfa72e2c09664cacef59297ee8601dee60126" dependencies = [ "ahash", "arrow2", - "bitflags 2.10.0", + "bitflags 2.13.0", "chrono", "comfy-table", "either", @@ -8457,7 +8818,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c33762ec2a55e01c9f8776b34db86257c70a0a3b3929bd4eb91a52aacf61456" dependencies = [ "ahash", - "bitflags 2.10.0", + "bitflags 2.13.0", "glob", "once_cell", "polars-arrow", @@ -8613,7 +8974,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "opaque-debug", "universal-hash", ] @@ -8709,7 +9070,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2 1.0.103", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -8808,7 +9169,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -8829,40 +9190,17 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "procfs" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc5b72d8145275d844d4b5f6d4e1eef00c8cd889edb6035c21675d1bb1f45c9f" -dependencies = [ - "bitflags 2.10.0", - "chrono", - "flate2", - "hex", - "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.10.0", - "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.10.0", + "bitflags 2.13.0", "chrono", - "hex", + "flate2", + "procfs-core", + "rustix", ] [[package]] @@ -8871,7 +9209,8 @@ version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6401bf7b6af22f78b563665d15a22e9aef27775b79b149a66ca022468a4e405" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", + "chrono", "hex", ] @@ -8898,7 +9237,7 @@ checksum = "bee689443a2bd0a16ab0348b52ee43e3b2d1b1f931c8aa5c9f8de4c86fbe8c40" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.10.0", + "bitflags 2.13.0", "num-traits", "rand 0.9.2", "rand_chacha 0.9.0", @@ -8921,24 +9260,24 @@ dependencies = [ [[package]] name = "proptest-derive" -version = "0.5.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee1c9ac207483d5e7db4940700de86a9aae46ef90c48b57f99fe7edb8345e49" +checksum = "fb6dc647500e84a25a85b100e76c85b8ace114c209432dc174f20aac11d4ed6c" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] name = "proptest-derive" -version = "0.6.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "095a99f75c69734802359b682be8daaf8980296731f6470434ea2c652af1dd30" +checksum = "c57924a81864dddafba92e1bf92f9bf82f97096c44489548a60e888e1547549b" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -8977,7 +9316,7 @@ dependencies = [ "prost 0.13.5", "prost-types", "regex", - "syn 2.0.111", + "syn 2.0.117", "tempfile", ] @@ -8991,7 +9330,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -9004,7 +9343,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -9022,17 +9361,6 @@ version = "2.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94" -[[package]] -name = "pulldown-cmark" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57206b407293d2bcd3af849ce869d52068623f19e1b5ff8e8778e3309439682b" -dependencies = [ - "bitflags 2.10.0", - "memchr", - "unicase", -] - [[package]] name = "quanta" version = "0.12.6" @@ -9101,6 +9429,7 @@ version = "0.11.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" dependencies = [ + "aws-lc-rs", "bytes", "getrandom 0.3.4", "lru-slab", @@ -9154,6 +9483,12 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + [[package]] name = "radium" version = "0.7.0" @@ -9397,25 +9732,81 @@ dependencies = [ "rand_core 0.9.3", ] +[[package]] +name = "rapidhash" +version = "4.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e48930979c155e2f33aa36ab3119b5ee81332beb6482199a8ecd6029b80b59" +dependencies = [ + "rand 0.9.2", + "rustversion", +] + [[package]] name = "ratatui" -version = "0.29.0" +version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabd94c2f37801c20583fc49dd5cd6b0ba68c716787c2dd6ed18571e1e63117b" +checksum = "1695748e3a735b34968c887ceea5a380b43545903868ae8f5b666593100f6b68" dependencies = [ - "bitflags 2.10.0", - "cassowary", + "instability", + "ratatui-core", + "ratatui-crossterm", + "ratatui-widgets", + "serde", +] + +[[package]] +name = "ratatui-core" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d3603f354bba8c595fa47860e60142d7372b7210c27044c6a7d0e1a4336b44" +dependencies = [ + "bitflags 2.13.0", "compact_str", - "crossterm 0.28.1", + "hashbrown 0.17.1", "indoc", - "instability", - "itertools 0.13.0", - "lru 0.12.5", - "paste", - "strum 0.26.3", + "itertools 0.14.0", + "kasuari", + "lru 0.18.0", + "palette", + "serde", + "strum 0.28.0", + "thiserror 2.0.17", "unicode-segmentation", "unicode-truncate", - "unicode-width 0.2.0", + "unicode-width", +] + +[[package]] +name = "ratatui-crossterm" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b2867bedcbd6a690ca4f8672a687b730ec07660c79844517b084311b529980c" +dependencies = [ + "cfg-if", + "crossterm", + "instability", + "ratatui-core", +] + +[[package]] +name = "ratatui-widgets" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef4f17dd7ac3abf5adc2b920a03c61eee4bfe6a88fa5191936895525371d79c" +dependencies = [ + "bitflags 2.13.0", + "hashbrown 0.17.1", + "indoc", + "instability", + "itertools 0.14.0", + "line-clipping", + "ratatui-core", + "serde", + "strum 0.28.0", + "time", + "unicode-segmentation", + "unicode-width", ] [[package]] @@ -9424,7 +9815,7 @@ version = "11.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "498cd0dc59d73224351ee52a95fee0f1a617a2eae0e7d9d720cc622c73a54186" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", ] [[package]] @@ -9460,7 +9851,7 @@ dependencies = [ "alloy-network", "alloy-network-primitives", "alloy-node-bindings", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-provider", "alloy-rlp", "alloy-rpc-types", @@ -9468,7 +9859,7 @@ dependencies = [ "alloy-rpc-types-engine", "alloy-rpc-types-eth", "alloy-signer-local", - "alloy-trie 0.8.1", + "alloy-trie", "assert_matches", "async-trait", "beacon-api-client", @@ -9498,7 +9889,7 @@ dependencies = [ "jsonrpsee 0.20.4", "lazy_static", "lru 0.12.5", - "lz4_flex", + "lz4_flex 0.11.5", "mempool-dumpster", "metrics_macros", "mev-share-sse", @@ -9531,6 +9922,7 @@ dependencies = [ "reth-primitives-traits", "reth-provider", "reth-trie", + "reth-trie-db", "reth-trie-parallel", "revm", "schnellru", @@ -9582,7 +9974,7 @@ name = "rbuilder-operator" version = "0.1.0" dependencies = [ "ahash", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rpc-types-beacon", "alloy-signer", "alloy-signer-local", @@ -9635,7 +10027,7 @@ dependencies = [ "ahash", "alloy-consensus", "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-rpc-types", "alloy-rpc-types-beacon", @@ -9645,7 +10037,7 @@ dependencies = [ "derive_more 2.1.0", "ethereum-consensus", "ethereum_ssz 0.9.1", - "ethereum_ssz_derive", + "ethereum_ssz_derive 0.9.1", "eyre", "integer-encoding", "proptest", @@ -9678,7 +10070,7 @@ version = "0.1.0" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-provider", "alloy-rpc-types-eth", "alloy-signer", @@ -9699,12 +10091,12 @@ dependencies = [ name = "rbuilder-utils" version = "0.1.0" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "clickhouse", "derive_more 2.1.0", "rand 0.9.2", "redb", - "reth-tasks 1.8.2", + "reth-tasks", "serde", "serde_json", "strum 0.27.2", @@ -9759,7 +10151,7 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", ] [[package]] @@ -9801,7 +10193,7 @@ checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -9855,7 +10247,7 @@ version = "0.1.0" source = "git+https://github.com/nethermindeth/reipc.git?rev=b0b70735cda6273652212d1591188642e3449ed7#b0b70735cda6273652212d1591188642e3449ed7" dependencies = [ "alloy-json-rpc", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rpc-types-eth", "bytes", "crossbeam", @@ -9961,6 +10353,43 @@ dependencies = [ "webpki-roots 1.0.4", ] +[[package]] +name = "reqwest" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219c5811de6525e5416c7d5d53bb656d3afdbc6c5af816e0802bcfa42dbdc1c3" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-core", + "http 1.4.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.8.1", + "hyper-rustls 0.27.7", + "hyper-util", + "js-sys", + "log", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls 0.23.35", + "rustls-pki-types", + "rustls-platform-verifier 0.7.0", + "serde", + "serde_json", + "sync_wrapper 1.0.2", + "tokio", + "tokio-rustls 0.26.4", + "tower 0.5.2", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + [[package]] name = "resolv-conf" version = "0.7.6" @@ -9969,13 +10398,13 @@ checksum = "1e061d1b48cb8d38042de4ae0a7a6401009d6143dc80d2e2d6f31f0bdd6470c7" [[package]] name = "reth" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ + "alloy-primitives 1.6.0", "alloy-rpc-types", "aquamarine", "clap", - "eyre", "reth-chainspec", "reth-cli-runner", "reth-cli-util", @@ -9984,8 +10413,6 @@ dependencies = [ "reth-db", "reth-ethereum-cli", "reth-ethereum-payload-builder", - "reth-ethereum-primitives", - "reth-evm", "reth-network", "reth-network-api", "reth-node-api", @@ -9997,8 +10424,6 @@ dependencies = [ "reth-payload-primitives", "reth-primitives", "reth-provider", - "reth-ress-protocol", - "reth-ress-provider", "reth-revm", "reth-rpc", "reth-rpc-api", @@ -10006,45 +10431,43 @@ dependencies = [ "reth-rpc-convert", "reth-rpc-eth-types", "reth-rpc-server-types", - "reth-tasks 1.9.3", - "reth-tokio-util", + "reth-tasks", "reth-transaction-pool", - "tokio", "tracing", ] [[package]] name = "reth-basic-payload-builder" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "futures-core", "futures-util", "metrics", "reth-chain-state", - "reth-metrics 1.9.3", + "reth-metrics", "reth-payload-builder", "reth-payload-builder-primitives", "reth-payload-primitives", "reth-primitives-traits", "reth-revm", "reth-storage-api", - "reth-tasks 1.9.3", + "reth-tasks", "tokio", "tracing", ] [[package]] name = "reth-chain-state" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-signer", "alloy-signer-local", "derive_more 2.1.0", @@ -10052,11 +10475,12 @@ dependencies = [ "parking_lot", "pin-project", "rand 0.9.2", + "rayon", "reth-chainspec", "reth-errors", "reth-ethereum-primitives", "reth-execution-types", - "reth-metrics 1.9.3", + "reth-metrics", "reth-primitives-traits", "reth-storage-api", "reth-trie", @@ -10070,16 +10494,16 @@ dependencies = [ [[package]] name = "reth-chainspec" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-chains", "alloy-consensus", "alloy-eips", "alloy-evm", "alloy-genesis", - "alloy-primitives 1.4.1", - "alloy-trie 0.9.1", + "alloy-primitives 1.6.0", + "alloy-trie", "auto_impl", "derive_more 2.1.0", "reth-ethereum-forks", @@ -10090,8 +10514,8 @@ dependencies = [ [[package]] name = "reth-cli" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-genesis", "clap", @@ -10104,18 +10528,18 @@ dependencies = [ [[package]] name = "reth-cli-commands" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-chains", "alloy-consensus", "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", "backon", "clap", "comfy-table", - "crossterm 0.28.1", + "crossterm", "eyre", "fdlimit", "futures", @@ -10123,6 +10547,8 @@ dependencies = [ "humantime", "itertools 0.14.0", "lz4", + "metrics", + "parking_lot", "ratatui", "reqwest 0.12.24", "reth-chainspec", @@ -10163,6 +10589,8 @@ dependencies = [ "reth-stages", "reth-static-file", "reth-static-file-types", + "reth-storage-api", + "reth-tasks", "reth-trie", "reth-trie-common", "reth-trie-db", @@ -10172,28 +10600,29 @@ dependencies = [ "tar", "tokio", "tokio-stream", - "toml 0.8.23", + "toml 0.9.8", "tracing", + "url", "zstd 0.13.3", ] [[package]] name = "reth-cli-runner" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ - "reth-tasks 1.9.3", + "reth-tasks", "tokio", "tracing", ] [[package]] name = "reth-cli-util" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "cfg-if", "eyre", "libc", @@ -10207,14 +10636,14 @@ dependencies = [ [[package]] name = "reth-codecs" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", "alloy-eips", "alloy-genesis", - "alloy-primitives 1.4.1", - "alloy-trie 0.9.1", + "alloy-primitives 1.6.0", + "alloy-trie", "arbitrary", "bytes", "modular-bitfield", @@ -10227,36 +10656,37 @@ dependencies = [ [[package]] name = "reth-codecs-derive" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] name = "reth-config" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "eyre", "humantime-serde", "reth-network-types", "reth-prune-types", "reth-stages-types", + "reth-static-file-types", "serde", - "toml 0.8.23", + "toml 0.9.8", "url", ] [[package]] name = "reth-consensus" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "auto_impl", "reth-execution-types", "reth-primitives-traits", @@ -10265,8 +10695,8 @@ dependencies = [ [[package]] name = "reth-consensus-common" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10277,13 +10707,13 @@ dependencies = [ [[package]] name = "reth-consensus-debug-client" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", "alloy-eips", "alloy-json-rpc", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-provider", "alloy-rpc-types-engine", "alloy-transport", @@ -10303,10 +10733,10 @@ dependencies = [ [[package]] name = "reth-db" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "derive_more 2.1.0", "eyre", "metrics", @@ -10315,37 +10745,39 @@ dependencies = [ "reth-db-api", "reth-fs-util", "reth-libmdbx", - "reth-metrics 1.9.3", + "reth-metrics", "reth-nippy-jar", "reth-static-file-types", "reth-storage-errors", "reth-tracing", "rustc-hash 2.1.1", "strum 0.27.2", - "sysinfo 0.33.1", + "sysinfo 0.38.4", "tempfile", "thiserror 2.0.17", + "tracing", ] [[package]] name = "reth-db-api" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", "alloy-genesis", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "arbitrary", + "arrayvec", "bytes", "derive_more 2.1.0", "metrics", "modular-bitfield", + "op-alloy-consensus", "parity-scale-codec", "proptest", "reth-codecs", "reth-db-models", "reth-ethereum-primitives", - "reth-optimism-primitives", "reth-primitives-traits", "reth-prune-types", "reth-stages-types", @@ -10357,12 +10789,12 @@ dependencies = [ [[package]] name = "reth-db-common" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", "alloy-genesis", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "boyer-moore-magiclen", "eyre", "reth-chainspec", @@ -10387,11 +10819,11 @@ dependencies = [ [[package]] name = "reth-db-models" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "arbitrary", "bytes", "modular-bitfield", @@ -10402,10 +10834,10 @@ dependencies = [ [[package]] name = "reth-discv4" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", "discv5", "enr 0.13.0", @@ -10427,10 +10859,10 @@ dependencies = [ [[package]] name = "reth-discv5" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", "derive_more 2.1.0", "discv5", @@ -10441,7 +10873,7 @@ dependencies = [ "rand 0.9.2", "reth-chainspec", "reth-ethereum-forks", - "reth-metrics 1.9.3", + "reth-metrics", "reth-network-peers", "secp256k1 0.30.0", "thiserror 2.0.17", @@ -10451,15 +10883,15 @@ dependencies = [ [[package]] name = "reth-dns-discovery" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", + "dashmap 6.1.0", "data-encoding", "enr 0.13.0", "hickory-resolver", "linked_hash_set", - "parking_lot", "reth-ethereum-forks", "reth-network-peers", "reth-tokio-util", @@ -10475,12 +10907,12 @@ dependencies = [ [[package]] name = "reth-downloaders" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", "async-compression", "futures", @@ -10491,12 +10923,12 @@ dependencies = [ "rayon", "reth-config", "reth-consensus", - "reth-metrics 1.9.3", + "reth-metrics", "reth-network-p2p", "reth-network-peers", "reth-primitives-traits", "reth-storage-api", - "reth-tasks 1.9.3", + "reth-tasks", "thiserror 2.0.17", "tokio", "tokio-stream", @@ -10506,11 +10938,11 @@ dependencies = [ [[package]] name = "reth-ecies" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "aes", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", "block-padding", "byteorder", @@ -10519,29 +10951,26 @@ dependencies = [ "ctr", "digest 0.10.7", "futures", - "generic-array", "hmac", "pin-project", "rand 0.8.5", "reth-network-peers", "secp256k1 0.30.0", "sha2 0.10.9", - "sha3", "thiserror 2.0.17", "tokio", "tokio-stream", "tokio-util", "tracing", - "typenum", ] [[package]] name = "reth-engine-local" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rpc-types-engine", "eyre", "futures-util", @@ -10550,6 +10979,7 @@ dependencies = [ "reth-ethereum-engine-primitives", "reth-payload-builder", "reth-payload-primitives", + "reth-primitives-traits", "reth-storage-api", "reth-transaction-pool", "tokio", @@ -10559,12 +10989,12 @@ dependencies = [ [[package]] name = "reth-engine-primitives" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rpc-types-engine", "auto_impl", "futures", @@ -10584,8 +11014,8 @@ dependencies = [ [[package]] name = "reth-engine-service" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "futures", "pin-project", @@ -10593,7 +11023,6 @@ dependencies = [ "reth-consensus", "reth-engine-primitives", "reth-engine-tree", - "reth-ethereum-primitives", "reth-evm", "reth-network-p2p", "reth-node-types", @@ -10601,26 +11030,28 @@ dependencies = [ "reth-provider", "reth-prune", "reth-stages-api", - "reth-tasks 1.9.3", + "reth-tasks", + "reth-trie-db", ] [[package]] name = "reth-engine-tree" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", + "alloy-eip7928", "alloy-eips", "alloy-evm", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-rpc-types-engine", "crossbeam-channel", - "dashmap 6.1.0", "derive_more 2.1.0", + "fixed-cache", "futures", "metrics", - "mini-moka", + "moka", "parking_lot", "rayon", "reth-chain-state", @@ -10631,7 +11062,7 @@ dependencies = [ "reth-ethereum-primitives", "reth-evm", "reth-execution-types", - "reth-metrics 1.9.3", + "reth-metrics", "reth-network-p2p", "reth-payload-builder", "reth-payload-primitives", @@ -10640,11 +11071,12 @@ dependencies = [ "reth-prune", "reth-revm", "reth-stages-api", - "reth-tasks 1.9.3", + "reth-tasks", "reth-trie", + "reth-trie-common", + "reth-trie-db", "reth-trie-parallel", "reth-trie-sparse", - "reth-trie-sparse-parallel", "revm", "revm-primitives", "schnellru", @@ -10656,8 +11088,8 @@ dependencies = [ [[package]] name = "reth-engine-util" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", "alloy-rpc-types-engine", @@ -10684,30 +11116,30 @@ dependencies = [ [[package]] name = "reth-era" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", - "ethereum_ssz 0.9.1", - "ethereum_ssz_derive", - "reth-ethereum-primitives", + "ethereum_ssz 0.10.4", + "ethereum_ssz_derive 0.10.4", "snap", "thiserror 2.0.17", ] [[package]] name = "reth-era-downloader" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "bytes", "eyre", "futures-util", "reqwest 0.12.24", + "reth-era", "reth-fs-util", "sha2 0.10.9", "tokio", @@ -10715,11 +11147,11 @@ dependencies = [ [[package]] name = "reth-era-utils" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "eyre", "futures-util", "reth-db-api", @@ -10737,8 +11169,8 @@ dependencies = [ [[package]] name = "reth-errors" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "reth-consensus", "reth-execution-errors", @@ -10748,11 +11180,11 @@ dependencies = [ [[package]] name = "reth-eth-wire" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-chains", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", "bytes", "derive_more 2.1.0", @@ -10762,7 +11194,7 @@ dependencies = [ "reth-ecies", "reth-eth-wire-types", "reth-ethereum-forks", - "reth-metrics 1.9.3", + "reth-metrics", "reth-network-peers", "reth-primitives-traits", "serde", @@ -10776,14 +11208,14 @@ dependencies = [ [[package]] name = "reth-eth-wire-types" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-chains", "alloy-consensus", "alloy-eips", - "alloy-hardforks 0.4.4", - "alloy-primitives 1.4.1", + "alloy-hardforks 0.4.7", + "alloy-primitives 1.6.0", "alloy-rlp", "bytes", "derive_more 2.1.0", @@ -10797,8 +11229,8 @@ dependencies = [ [[package]] name = "reth-ethereum-cli" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "clap", "eyre", @@ -10813,20 +11245,19 @@ dependencies = [ "reth-node-ethereum", "reth-node-metrics", "reth-rpc-server-types", + "reth-tasks", "reth-tracing", - "reth-tracing-otlp", "tracing", - "url", ] [[package]] name = "reth-ethereum-consensus" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "reth-chainspec", "reth-consensus", "reth-consensus-common", @@ -10837,11 +11268,11 @@ dependencies = [ [[package]] name = "reth-ethereum-engine-primitives" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-rpc-types-engine", "reth-engine-primitives", @@ -10855,12 +11286,12 @@ dependencies = [ [[package]] name = "reth-ethereum-forks" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-eip2124", - "alloy-hardforks 0.4.4", - "alloy-primitives 1.4.1", + "alloy-hardforks 0.4.7", + "alloy-primitives 1.6.0", "auto_impl", "once_cell", "rustc-hash 2.1.1", @@ -10868,12 +11299,12 @@ dependencies = [ [[package]] name = "reth-ethereum-payload-builder" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-rpc-types-engine", "reth-basic-payload-builder", @@ -10897,12 +11328,12 @@ dependencies = [ [[package]] name = "reth-ethereum-primitives" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-rpc-types-eth", "alloy-serde", @@ -10917,8 +11348,8 @@ dependencies = [ [[package]] name = "reth-etl" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "rayon", "reth-db-api", @@ -10927,20 +11358,21 @@ dependencies = [ [[package]] name = "reth-evm" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", "alloy-eips", "alloy-evm", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "auto_impl", "derive_more 2.1.0", "futures-util", "metrics", + "rayon", "reth-execution-errors", "reth-execution-types", - "reth-metrics 1.9.3", + "reth-metrics", "reth-primitives-traits", "reth-storage-api", "reth-storage-errors", @@ -10950,13 +11382,13 @@ dependencies = [ [[package]] name = "reth-evm-ethereum" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", "alloy-eips", "alloy-evm", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rpc-types-engine", "derive_more 2.1.0", "reth-chainspec", @@ -10971,26 +11403,26 @@ dependencies = [ [[package]] name = "reth-execution-errors" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-evm", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", - "nybbles 0.4.6", + "nybbles", "reth-storage-errors", "thiserror 2.0.17", ] [[package]] name = "reth-execution-types" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", "alloy-eips", "alloy-evm", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "derive_more 2.1.0", "reth-ethereum-primitives", "reth-primitives-traits", @@ -11002,12 +11434,12 @@ dependencies = [ [[package]] name = "reth-exex" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "eyre", "futures", "itertools 0.14.0", @@ -11020,7 +11452,7 @@ dependencies = [ "reth-evm", "reth-exex-types", "reth-fs-util", - "reth-metrics 1.9.3", + "reth-metrics", "reth-node-api", "reth-node-core", "reth-payload-builder", @@ -11029,7 +11461,7 @@ dependencies = [ "reth-prune-types", "reth-revm", "reth-stages-api", - "reth-tasks 1.9.3", + "reth-tasks", "reth-tracing", "rmp-serde", "thiserror 2.0.17", @@ -11040,11 +11472,11 @@ dependencies = [ [[package]] name = "reth-exex-types" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "reth-chain-state", "reth-execution-types", "reth-primitives-traits", @@ -11054,8 +11486,8 @@ dependencies = [ [[package]] name = "reth-fs-util" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "serde", "serde_json", @@ -11064,11 +11496,11 @@ dependencies = [ [[package]] name = "reth-invalid-block-hooks" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-rpc-types-debug", "eyre", @@ -11092,8 +11524,8 @@ dependencies = [ [[package]] name = "reth-ipc" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "bytes", "futures", @@ -11112,10 +11544,10 @@ dependencies = [ [[package]] name = "reth-libmdbx" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "byteorder", "dashmap 6.1.0", "derive_more 2.1.0", @@ -11128,26 +11560,17 @@ dependencies = [ [[package]] name = "reth-mdbx-sys" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ - "bindgen 0.71.1", + "bindgen", "cc", ] [[package]] name = "reth-metrics" -version = "1.8.2" -source = "git+https://github.com/paradigmxyz/reth?rev=9c30bf7af5e0d45deaf5917375c9922c16654b28#9c30bf7af5e0d45deaf5917375c9922c16654b28" -dependencies = [ - "metrics", - "metrics-derive", -] - -[[package]] -name = "reth-metrics" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "futures", "metrics", @@ -11158,16 +11581,17 @@ dependencies = [ [[package]] name = "reth-net-banlist" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", + "ipnet", ] [[package]] name = "reth-net-nat" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "futures-util", "if-addrs", @@ -11180,12 +11604,12 @@ dependencies = [ [[package]] name = "reth-network" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", "aquamarine", "auto_impl", @@ -11199,6 +11623,7 @@ dependencies = [ "pin-project", "rand 0.8.5", "rand 0.9.2", + "rayon", "reth-chainspec", "reth-consensus", "reth-discv4", @@ -11210,7 +11635,7 @@ dependencies = [ "reth-ethereum-forks", "reth-ethereum-primitives", "reth-fs-util", - "reth-metrics 1.9.3", + "reth-metrics", "reth-net-banlist", "reth-network-api", "reth-network-p2p", @@ -11218,7 +11643,7 @@ dependencies = [ "reth-network-types", "reth-primitives-traits", "reth-storage-api", - "reth-tasks 1.9.3", + "reth-tasks", "reth-tokio-util", "reth-transaction-pool", "rustc-hash 2.1.1", @@ -11235,11 +11660,11 @@ dependencies = [ [[package]] name = "reth-network-api" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rpc-types-admin", "alloy-rpc-types-eth", "auto_impl", @@ -11260,12 +11685,12 @@ dependencies = [ [[package]] name = "reth-network-p2p" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "auto_impl", "derive_more 2.1.0", "futures", @@ -11282,10 +11707,10 @@ dependencies = [ [[package]] name = "reth-network-peers" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", "enr 0.13.0", "secp256k1 0.30.0", @@ -11297,8 +11722,8 @@ dependencies = [ [[package]] name = "reth-network-types" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-eip2124", "humantime-serde", @@ -11311,13 +11736,13 @@ dependencies = [ [[package]] name = "reth-nippy-jar" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "anyhow", "bincode", "derive_more 2.1.0", - "lz4_flex", + "lz4_flex 0.12.2", "memmap2 0.9.9", "reth-fs-util", "serde", @@ -11328,8 +11753,8 @@ dependencies = [ [[package]] name = "reth-node-api" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-rpc-types-engine", "eyre", @@ -11345,19 +11770,19 @@ dependencies = [ "reth-payload-builder-primitives", "reth-payload-primitives", "reth-provider", - "reth-tasks 1.9.3", + "reth-tasks", "reth-tokio-util", "reth-transaction-pool", ] [[package]] name = "reth-node-builder" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-provider", "alloy-rpc-types", "alloy-rpc-types-engine", @@ -11366,11 +11791,11 @@ dependencies = [ "fdlimit", "futures", "jsonrpsee 0.26.0", + "parking_lot", "rayon", "reth-basic-payload-builder", "reth-chain-state", "reth-chainspec", - "reth-cli-util", "reth-config", "reth-consensus", "reth-consensus-debug-client", @@ -11407,10 +11832,11 @@ dependencies = [ "reth-rpc-layer", "reth-stages", "reth-static-file", - "reth-tasks 1.9.3", + "reth-tasks", "reth-tokio-util", "reth-tracing", "reth-transaction-pool", + "reth-trie-db", "secp256k1 0.30.0", "serde_json", "tokio", @@ -11420,12 +11846,12 @@ dependencies = [ [[package]] name = "reth-node-core" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rpc-types-engine", "clap", "derive_more 2.1.0", @@ -11433,6 +11859,7 @@ dependencies = [ "eyre", "futures", "humantime", + "ipnet", "rand 0.9.2", "reth-chainspec", "reth-cli-util", @@ -11444,6 +11871,7 @@ dependencies = [ "reth-engine-local", "reth-engine-primitives", "reth-ethereum-forks", + "reth-net-banlist", "reth-net-nat", "reth-network", "reth-network-p2p", @@ -11464,7 +11892,7 @@ dependencies = [ "shellexpand", "strum 0.27.2", "thiserror 2.0.17", - "toml 0.8.23", + "toml 0.9.8", "tracing", "url", "vergen", @@ -11473,8 +11901,8 @@ dependencies = [ [[package]] name = "reth-node-ethereum" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-eips", "alloy-network", @@ -11511,11 +11939,11 @@ dependencies = [ [[package]] name = "reth-node-ethstats" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "chrono", "futures-util", "reth-chain-state", @@ -11528,19 +11956,19 @@ dependencies = [ "thiserror 2.0.17", "tokio", "tokio-stream", - "tokio-tungstenite 0.26.2", + "tokio-tungstenite 0.28.0", "tracing", "url", ] [[package]] name = "reth-node-events" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rpc-types-engine", "derive_more 2.1.0", "futures", @@ -11559,20 +11987,22 @@ dependencies = [ [[package]] name = "reth-node-metrics" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ + "bytes", "eyre", "http 1.4.0", + "http-body-util", "jsonrpsee-server 0.26.0", "metrics", "metrics-exporter-prometheus", "metrics-process", "metrics-util", - "procfs 0.17.0", + "procfs", "reqwest 0.12.24", - "reth-metrics 1.9.3", - "reth-tasks 1.9.3", + "reth-metrics", + "reth-tasks", "tikv-jemalloc-ctl", "tokio", "tower 0.5.2", @@ -11581,8 +12011,8 @@ dependencies = [ [[package]] name = "reth-node-types" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "reth-chainspec", "reth-db-api", @@ -11591,39 +12021,19 @@ dependencies = [ "reth-primitives-traits", ] -[[package]] -name = "reth-optimism-primitives" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives 1.4.1", - "alloy-rlp", - "arbitrary", - "bytes", - "modular-bitfield", - "op-alloy-consensus", - "reth-codecs", - "reth-primitives-traits", - "reth-zstd-compressors", - "serde", - "serde_with", -] - [[package]] name = "reth-payload-builder" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rpc-types", "futures-util", "metrics", "reth-chain-state", "reth-ethereum-engine-primitives", - "reth-metrics 1.9.3", + "reth-metrics", "reth-payload-builder-primitives", "reth-payload-primitives", "reth-primitives-traits", @@ -11634,8 +12044,8 @@ dependencies = [ [[package]] name = "reth-payload-builder-primitives" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "pin-project", "reth-payload-primitives", @@ -11646,11 +12056,12 @@ dependencies = [ [[package]] name = "reth-payload-primitives" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ + "alloy-consensus", "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rpc-types-engine", "auto_impl", "either", @@ -11658,7 +12069,9 @@ dependencies = [ "reth-chain-state", "reth-chainspec", "reth-errors", + "reth-execution-types", "reth-primitives-traits", + "reth-trie-common", "serde", "thiserror 2.0.17", "tokio", @@ -11666,8 +12079,8 @@ dependencies = [ [[package]] name = "reth-payload-validator" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", "alloy-rpc-types-engine", @@ -11676,10 +12089,14 @@ dependencies = [ [[package]] name = "reth-primitives" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", + "alloy-eips", + "alloy-genesis", + "alloy-primitives 1.6.0", + "alloy-rlp", "c-kzg", "once_cell", "reth-ethereum-forks", @@ -11690,20 +12107,21 @@ dependencies = [ [[package]] name = "reth-primitives-traits" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", "alloy-eips", "alloy-genesis", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-rpc-types-eth", - "alloy-trie 0.9.1", + "alloy-trie", "arbitrary", "auto_impl", "byteorder", "bytes", + "dashmap 6.1.0", "derive_more 2.1.0", "modular-bitfield", "once_cell", @@ -11723,14 +12141,13 @@ dependencies = [ [[package]] name = "reth-provider" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rpc-types-engine", - "dashmap 6.1.0", "eyre", "itertools 0.14.0", "metrics", @@ -11747,7 +12164,7 @@ dependencies = [ "reth-ethereum-primitives", "reth-execution-types", "reth-fs-util", - "reth-metrics 1.9.3", + "reth-metrics", "reth-nippy-jar", "reth-node-types", "reth-primitives-traits", @@ -11756,6 +12173,7 @@ dependencies = [ "reth-static-file-types", "reth-storage-api", "reth-storage-errors", + "reth-tasks", "reth-trie", "reth-trie-db", "revm-database", @@ -11767,12 +12185,12 @@ dependencies = [ [[package]] name = "reth-prune" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "itertools 0.14.0", "metrics", "rayon", @@ -11780,11 +12198,13 @@ dependencies = [ "reth-db-api", "reth-errors", "reth-exex-types", - "reth-metrics 1.9.3", + "reth-metrics", "reth-primitives-traits", "reth-provider", "reth-prune-types", + "reth-stages-types", "reth-static-file-types", + "reth-storage-api", "reth-tokio-util", "rustc-hash 2.1.1", "thiserror 2.0.17", @@ -11794,10 +12214,10 @@ dependencies = [ [[package]] name = "reth-prune-types" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "arbitrary", "derive_more 2.1.0", "modular-bitfield", @@ -11805,6 +12225,7 @@ dependencies = [ "serde", "strum 0.27.2", "thiserror 2.0.17", + "tracing", ] [[package]] @@ -11826,58 +12247,12 @@ dependencies = [ "tracing", ] -[[package]] -name = "reth-ress-protocol" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" -dependencies = [ - "alloy-consensus", - "alloy-primitives 1.4.1", - "alloy-rlp", - "futures", - "reth-eth-wire", - "reth-ethereum-primitives", - "reth-network", - "reth-network-api", - "reth-storage-errors", - "tokio", - "tokio-stream", - "tracing", -] - -[[package]] -name = "reth-ress-provider" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" -dependencies = [ - "alloy-consensus", - "alloy-primitives 1.4.1", - "eyre", - "futures", - "parking_lot", - "reth-chain-state", - "reth-errors", - "reth-ethereum-primitives", - "reth-evm", - "reth-node-api", - "reth-primitives-traits", - "reth-ress-protocol", - "reth-revm", - "reth-storage-api", - "reth-tasks 1.9.3", - "reth-tokio-util", - "reth-trie", - "schnellru", - "tokio", - "tracing", -] - [[package]] name = "reth-revm" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "reth-primitives-traits", "reth-storage-api", "reth-storage-errors", @@ -11887,16 +12262,17 @@ dependencies = [ [[package]] name = "reth-rpc" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", "alloy-dyn-abi", + "alloy-eip7928", "alloy-eips", "alloy-evm", "alloy-genesis", "alloy-network", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-rpc-client", "alloy-rpc-types", @@ -11915,13 +12291,9 @@ dependencies = [ "derive_more 2.1.0", "dyn-clone", "futures", - "http 1.4.0", - "http-body 1.0.1", - "hyper 1.8.1", "itertools 0.14.0", "jsonrpsee 0.26.0", "jsonrpsee-types 0.26.0", - "jsonwebtoken", "parking_lot", "pin-project", "reth-chain-state", @@ -11930,10 +12302,12 @@ dependencies = [ "reth-consensus-common", "reth-engine-primitives", "reth-errors", + "reth-ethereum-engine-primitives", + "reth-ethereum-primitives", "reth-evm", "reth-evm-ethereum", "reth-execution-types", - "reth-metrics 1.9.3", + "reth-metrics", "reth-network-api", "reth-network-peers", "reth-network-types", @@ -11947,7 +12321,7 @@ dependencies = [ "reth-rpc-eth-types", "reth-rpc-server-types", "reth-storage-api", - "reth-tasks 1.9.3", + "reth-tasks", "reth-transaction-pool", "reth-trie-common", "revm", @@ -11959,20 +12333,20 @@ dependencies = [ "thiserror 2.0.17", "tokio", "tokio-stream", - "tower 0.5.2", "tracing", "tracing-futures", ] [[package]] name = "reth-rpc-api" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ + "alloy-eip7928", "alloy-eips", "alloy-genesis", "alloy-json-rpc", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rpc-types", "alloy-rpc-types-admin", "alloy-rpc-types-anvil", @@ -11990,12 +12364,13 @@ dependencies = [ "reth-network-peers", "reth-rpc-eth-api", "reth-trie-common", + "serde_json", ] [[package]] name = "reth-rpc-builder" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-network", "alloy-provider", @@ -12007,9 +12382,10 @@ dependencies = [ "reth-chain-state", "reth-chainspec", "reth-consensus", + "reth-engine-primitives", "reth-evm", "reth-ipc", - "reth-metrics 1.9.3", + "reth-metrics", "reth-network-api", "reth-node-core", "reth-primitives-traits", @@ -12020,7 +12396,8 @@ dependencies = [ "reth-rpc-layer", "reth-rpc-server-types", "reth-storage-api", - "reth-tasks 1.9.3", + "reth-tasks", + "reth-tokio-util", "reth-transaction-pool", "serde", "thiserror 2.0.17", @@ -12033,13 +12410,14 @@ dependencies = [ [[package]] name = "reth-rpc-convert" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", + "alloy-evm", "alloy-json-rpc", "alloy-network", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rpc-types-eth", "alloy-signer", "auto_impl", @@ -12048,33 +12426,32 @@ dependencies = [ "reth-ethereum-primitives", "reth-evm", "reth-primitives-traits", - "revm-context", "thiserror 2.0.17", ] [[package]] name = "reth-rpc-engine-api" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rpc-types-engine", "async-trait", "jsonrpsee-core 0.26.0", "jsonrpsee-types 0.26.0", "metrics", - "parking_lot", "reth-chainspec", "reth-engine-primitives", - "reth-metrics 1.9.3", + "reth-metrics", + "reth-network-api", "reth-payload-builder", "reth-payload-builder-primitives", "reth-payload-primitives", "reth-primitives-traits", "reth-rpc-api", "reth-storage-api", - "reth-tasks 1.9.3", + "reth-tasks", "reth-transaction-pool", "serde", "thiserror 2.0.17", @@ -12084,8 +12461,8 @@ dependencies = [ [[package]] name = "reth-rpc-eth-api" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -12093,7 +12470,7 @@ dependencies = [ "alloy-evm", "alloy-json-rpc", "alloy-network", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-rpc-types-eth", "alloy-rpc-types-mev", @@ -12117,7 +12494,7 @@ dependencies = [ "reth-rpc-eth-types", "reth-rpc-server-types", "reth-storage-api", - "reth-tasks 1.9.3", + "reth-tasks", "reth-transaction-pool", "reth-trie-common", "revm", @@ -12128,14 +12505,14 @@ dependencies = [ [[package]] name = "reth-rpc-eth-types" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", "alloy-eips", "alloy-evm", "alloy-network", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rpc-client", "alloy-rpc-types-eth", "alloy-sol-types", @@ -12154,13 +12531,13 @@ dependencies = [ "reth-ethereum-primitives", "reth-evm", "reth-execution-types", - "reth-metrics 1.9.3", + "reth-metrics", "reth-primitives-traits", "reth-revm", "reth-rpc-convert", "reth-rpc-server-types", "reth-storage-api", - "reth-tasks 1.9.3", + "reth-tasks", "reth-transaction-pool", "reth-trie", "revm", @@ -12171,12 +12548,13 @@ dependencies = [ "tokio", "tokio-stream", "tracing", + "url", ] [[package]] name = "reth-rpc-layer" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-rpc-types-engine", "http 1.4.0", @@ -12189,11 +12567,11 @@ dependencies = [ [[package]] name = "reth-rpc-server-types" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rpc-types-engine", "jsonrpsee-core 0.26.0", "jsonrpsee-types 0.26.0", @@ -12205,12 +12583,12 @@ dependencies = [ [[package]] name = "reth-stages" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "bincode", "eyre", "futures-util", @@ -12239,7 +12617,9 @@ dependencies = [ "reth-revm", "reth-stages-api", "reth-static-file-types", + "reth-storage-api", "reth-storage-errors", + "reth-tasks", "reth-trie", "reth-trie-db", "thiserror 2.0.17", @@ -12249,18 +12629,18 @@ dependencies = [ [[package]] name = "reth-stages-api" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "aquamarine", "auto_impl", "futures-util", "metrics", "reth-consensus", "reth-errors", - "reth-metrics 1.9.3", + "reth-metrics", "reth-network-p2p", "reth-primitives-traits", "reth-provider", @@ -12276,10 +12656,10 @@ dependencies = [ [[package]] name = "reth-stages-types" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "arbitrary", "bytes", "modular-bitfield", @@ -12290,10 +12670,10 @@ dependencies = [ [[package]] name = "reth-static-file" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "parking_lot", "rayon", "reth-codecs", @@ -12310,24 +12690,27 @@ dependencies = [ [[package]] name = "reth-static-file-types" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "clap", "derive_more 2.1.0", + "fixed-map", + "reth-stages-types", "serde", "strum 0.27.2", + "tracing", ] [[package]] name = "reth-storage-api" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rpc-types-engine", "auto_impl", "reth-chainspec", @@ -12341,44 +12724,30 @@ dependencies = [ "reth-storage-errors", "reth-trie-common", "revm-database", + "serde_json", ] [[package]] name = "reth-storage-errors" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", "derive_more 2.1.0", "reth-primitives-traits", "reth-prune-types", "reth-static-file-types", "revm-database-interface", + "revm-state", "thiserror 2.0.17", ] [[package]] name = "reth-tasks" -version = "1.8.2" -source = "git+https://github.com/paradigmxyz/reth?rev=9c30bf7af5e0d45deaf5917375c9922c16654b28#9c30bf7af5e0d45deaf5917375c9922c16654b28" -dependencies = [ - "auto_impl", - "dyn-clone", - "futures-util", - "metrics", - "reth-metrics 1.8.2", - "thiserror 2.0.17", - "tokio", - "tracing", - "tracing-futures", -] - -[[package]] -name = "reth-tasks" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "auto_impl", "dyn-clone", @@ -12386,7 +12755,7 @@ dependencies = [ "metrics", "pin-project", "rayon", - "reth-metrics 1.9.3", + "reth-metrics", "thiserror 2.0.17", "tokio", "tracing", @@ -12395,8 +12764,8 @@ dependencies = [ [[package]] name = "reth-tokio-util" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "tokio", "tokio-stream", @@ -12405,8 +12774,8 @@ dependencies = [ [[package]] name = "reth-tracing" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "clap", "eyre", @@ -12416,18 +12785,19 @@ dependencies = [ "tracing-appender", "tracing-journald", "tracing-logfmt", + "tracing-samply", "tracing-subscriber 0.3.22", - "url", ] [[package]] name = "reth-tracing-otlp" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "clap", "eyre", "opentelemetry", + "opentelemetry-appender-tracing", "opentelemetry-otlp", "opentelemetry-semantic-conventions", "opentelemetry_sdk", @@ -12439,16 +12809,16 @@ dependencies = [ [[package]] name = "reth-transaction-pool" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", "aquamarine", "auto_impl", - "bitflags 2.10.0", + "bitflags 2.13.0", "futures-util", "metrics", "parking_lot", @@ -12458,12 +12828,15 @@ dependencies = [ "reth-chainspec", "reth-eth-wire-types", "reth-ethereum-primitives", + "reth-evm", + "reth-evm-ethereum", "reth-execution-types", "reth-fs-util", - "reth-metrics 1.9.3", + "reth-metrics", "reth-primitives-traits", "reth-storage-api", - "reth-tasks 1.9.3", + "reth-tasks", + "revm", "revm-interpreter", "revm-primitives", "rustc-hash 2.1.1", @@ -12479,19 +12852,20 @@ dependencies = [ [[package]] name = "reth-trie" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", - "alloy-trie 0.9.1", + "alloy-trie", "auto_impl", "itertools 0.14.0", "metrics", + "parking_lot", "reth-execution-errors", - "reth-metrics 1.9.3", + "reth-metrics", "reth-primitives-traits", "reth-stages-types", "reth-storage-errors", @@ -12504,22 +12878,22 @@ dependencies = [ [[package]] name = "reth-trie-common" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "alloy-consensus", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", "alloy-rpc-types-eth", "alloy-serde", - "alloy-trie 0.9.1", + "alloy-trie", "arbitrary", "arrayvec", "bytes", "derive_more 2.1.0", "hash-db", "itertools 0.14.0", - "nybbles 0.4.6", + "nybbles", "plain_hasher", "rayon", "reth-codecs", @@ -12531,92 +12905,81 @@ dependencies = [ [[package]] name = "reth-trie-db" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", + "metrics", + "parking_lot", "reth-db-api", "reth-execution-errors", + "reth-metrics", "reth-primitives-traits", + "reth-stages-types", + "reth-storage-api", + "reth-storage-errors", "reth-trie", + "reth-trie-common", "tracing", ] [[package]] name = "reth-trie-parallel" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", "crossbeam-channel", - "dashmap 6.1.0", "derive_more 2.1.0", "itertools 0.14.0", "metrics", "rayon", "reth-execution-errors", - "reth-metrics 1.9.3", + "reth-metrics", + "reth-primitives-traits", "reth-provider", "reth-storage-errors", + "reth-tasks", "reth-trie", "reth-trie-common", "reth-trie-sparse", "thiserror 2.0.17", - "tokio", "tracing", ] [[package]] name = "reth-trie-sparse" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rlp", - "alloy-trie 0.9.1", + "alloy-trie", "auto_impl", "metrics", "rayon", "reth-execution-errors", - "reth-metrics 1.9.3", + "reth-metrics", "reth-primitives-traits", "reth-trie-common", "smallvec", "tracing", ] -[[package]] -name = "reth-trie-sparse-parallel" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" -dependencies = [ - "alloy-primitives 1.4.1", - "alloy-rlp", - "alloy-trie 0.9.1", - "metrics", - "rayon", - "reth-execution-errors", - "reth-metrics 1.9.3", - "reth-trie-common", - "reth-trie-sparse", - "smallvec", - "tracing", -] - [[package]] name = "reth-zstd-compressors" -version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?rev=27a8c0f5a6dfb27dea84c5751776ecabdd069646#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +version = "1.11.3" +source = "git+https://github.com/paradigmxyz/reth?rev=d6324d63e27ef6b7c49cdc9b1977c1b808234c7b#d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" dependencies = [ "zstd 0.13.3", ] [[package]] name = "revm" -version = "31.0.2" +version = "34.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb67a5223602113cae59a305acde2d9936bc18f2478dda879a6124b267cebfb6" +checksum = "c2aabdebaa535b3575231a88d72b642897ae8106cf6b0d12eafc6bfdf50abfc7" dependencies = [ "revm-bytecode", "revm-context", @@ -12633,9 +12996,9 @@ dependencies = [ [[package]] name = "revm-bytecode" -version = "7.1.1" +version = "8.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2c6b5e6e8dd1e28a4a60e5f46615d4ef0809111c9e63208e55b5c7058200fb0" +checksum = "74d1e5c1eaa44d39d537f668bc5c3409dc01e5c8be954da6c83370bbdf006457" dependencies = [ "bitvec", "phf 0.13.1", @@ -12645,9 +13008,9 @@ dependencies = [ [[package]] name = "revm-context" -version = "11.0.2" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92850e150f4f99d46c05a20ad0cd09286a7ad4ee21866fffb87101de6e602231" +checksum = "892ff3e6a566cf8d72ffb627fdced3becebbd9ba64089c25975b9b028af326a5" dependencies = [ "bitvec", "cfg-if", @@ -12662,9 +13025,9 @@ dependencies = [ [[package]] name = "revm-context-interface" -version = "12.0.1" +version = "14.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6d701e2c2347d65216b066489ab22a0a8e1f7b2568256110d73a7d5eff3385c" +checksum = "57f61cc6d23678c4840af895b19f8acfbbd546142ec8028b6526c53cc1c16c98" dependencies = [ "alloy-eip2930", "alloy-eip7702", @@ -12678,9 +13041,9 @@ dependencies = [ [[package]] name = "revm-database" -version = "9.0.6" +version = "10.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "980d8d6bba78c5dd35b83abbb6585b0b902eb25ea4448ed7bfba6283b0337191" +checksum = "529528d0b05fe646be86223032c3e77aa8b05caa2a35447d538c55965956a511" dependencies = [ "alloy-eips", "revm-bytecode", @@ -12692,22 +13055,23 @@ dependencies = [ [[package]] name = "revm-database-interface" -version = "8.0.5" +version = "9.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cce03e3780287b07abe58faf4a7f5d8be7e81321f93ccf3343c8f7755602bae" +checksum = "b7bf93ac5b91347c057610c0d96e923db8c62807e03f036762d03e981feddc1d" dependencies = [ "auto_impl", "either", "revm-primitives", "revm-state", "serde", + "thiserror 2.0.17", ] [[package]] name = "revm-handler" -version = "12.0.2" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45418ed95cfdf0cb19effdbb7633cf2144cab7fb0e6ffd6b0eb9117a50adff6" +checksum = "0cd0e43e815a85eded249df886c4badec869195e70cdd808a13cfca2794622d2" dependencies = [ "auto_impl", "derive-where", @@ -12724,9 +13088,9 @@ dependencies = [ [[package]] name = "revm-inspector" -version = "12.0.2" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c99801eac7da06cc112df2244bd5a64024f4ef21240e923b26e73c4b4a0e5da6" +checksum = "4f3ccad59db91ef93696536a0dbaf2f6f17cfe20d4d8843ae118edb7e97947ef" dependencies = [ "auto_impl", "either", @@ -12742,11 +13106,11 @@ dependencies = [ [[package]] name = "revm-inspectors" -version = "0.32.0" +version = "0.34.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21caa99f22184a6818946362778cccd3ff02f743c1e085bee87700671570ecb7" +checksum = "699b3689517761b838844d715482dfa6059c20a0a5a68bc363e1604d29918555" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-rpc-types-eth", "alloy-rpc-types-trace", "alloy-sol-types", @@ -12762,9 +13126,9 @@ dependencies = [ [[package]] name = "revm-interpreter" -version = "29.0.1" +version = "32.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22789ce92c5808c70185e3bc49732f987dc6fd907f77828c8d3470b2299c9c65" +checksum = "11406408597bc249392d39295831c4b641b3a6f5c471a7c41104a7a1e3564c07" dependencies = [ "revm-bytecode", "revm-context-interface", @@ -12775,9 +13139,9 @@ dependencies = [ [[package]] name = "revm-precompile" -version = "29.0.1" +version = "32.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "968b124028960201abf6d6bf8e223f15fadebb4307df6b7dc9244a0aab5d2d05" +checksum = "e2ec11f45deec71e4945e1809736bb20d454285f9167ab53c5159dae1deb603f" dependencies = [ "ark-bls12-381", "ark-bn254", @@ -12793,18 +13157,17 @@ dependencies = [ "p256", "revm-primitives", "ripemd", - "rug", "secp256k1 0.31.1", "sha2 0.10.9", ] [[package]] name = "revm-primitives" -version = "21.0.2" +version = "22.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29e161db429d465c09ba9cbff0df49e31049fe6b549e28eb0b7bd642fcbd4412" +checksum = "4bcfb5ce6cf18b118932bcdb7da05cd9c250f2cb9f64131396b55f3fe3537c35" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "num_enum", "once_cell", "serde", @@ -12812,11 +13175,12 @@ dependencies = [ [[package]] name = "revm-state" -version = "8.1.1" +version = "9.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d8be953b7e374dbdea0773cf360debed8df394ea8d82a8b240a6b5da37592fc" +checksum = "311720d4f0f239b041375e7ddafdbd20032a33b7bae718562ea188e188ed9fd3" dependencies = [ - "bitflags 2.10.0", + "alloy-eip7928", + "bitflags 2.13.0", "revm-bytecode", "revm-primitives", "serde", @@ -12859,9 +13223,9 @@ dependencies = [ [[package]] name = "ringbuffer" -version = "0.15.0" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3df6368f71f205ff9c33c076d170dd56ebf68e8161c733c0caa07a7a5509ed53" +checksum = "57b0b88a509053cbfd535726dcaaceee631313cef981266119527a1d110f6d2b" [[package]] name = "ripemd" @@ -12927,9 +13291,9 @@ dependencies = [ [[package]] name = "roaring" -version = "0.10.12" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19e8d2cfa184d94d0726d650a9f4a1be7f9b76ac9fdb954219878dc00c1c1e7b" +checksum = "1dedc5658c6ecb3bdb5ef5f3295bb9253f42dcf3fd1402c03f6b1f7659c3c4a9" dependencies = [ "bytemuck", "byteorder", @@ -12970,18 +13334,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "rug" -version = "1.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58ad2e973fe3c3214251a840a621812a4f40468da814b1a3d6947d433c2af11f" -dependencies = [ - "az", - "gmp-mpfr-sys", - "libc", - "libm", -] - [[package]] name = "ruint" version = "1.17.0" @@ -13095,22 +13447,9 @@ dependencies = [ name = "rustc_version" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" -dependencies = [ - "semver 1.0.27", -] - -[[package]] -name = "rustix" -version = "0.38.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" -dependencies = [ - "bitflags 2.10.0", - "errno", - "libc", - "linux-raw-sys 0.4.15", - "windows-sys 0.59.0", +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver 1.0.27", ] [[package]] @@ -13119,10 +13458,10 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "errno", "libc", - "linux-raw-sys 0.11.0", + "linux-raw-sys", "windows-sys 0.61.2", ] @@ -13144,6 +13483,7 @@ version = "0.23.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f" dependencies = [ + "aws-lc-rs", "log", "once_cell", "ring", @@ -13204,7 +13544,7 @@ checksum = "19787cda76408ec5404443dc8b31795c87cd8fec49762dc75fa727740d34acc1" dependencies = [ "core-foundation 0.10.1", "core-foundation-sys", - "jni", + "jni 0.21.1", "log", "once_cell", "rustls 0.23.35", @@ -13217,6 +13557,27 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "rustls-platform-verifier" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d1e2536ce4f35f4846aa13bff16bd0ff40157cdb14cc056c7b14ba41233ba0" +dependencies = [ + "core-foundation 0.10.1", + "core-foundation-sys", + "jni 0.22.4", + "log", + "once_cell", + "rustls 0.23.35", + "rustls-native-certs 0.8.2", + "rustls-platform-verifier-android", + "rustls-webpki 0.103.8", + "security-framework 3.5.1", + "security-framework-sys", + "webpki-root-certs 1.0.4", + "windows-sys 0.61.2", +] + [[package]] name = "rustls-platform-verifier-android" version = "0.1.1" @@ -13239,6 +13600,7 @@ version = "0.103.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52" dependencies = [ + "aws-lc-rs", "ring", "rustls-pki-types", "untrusted", @@ -13304,7 +13666,7 @@ dependencies = [ "proc-macro-crate 3.4.0", "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -13466,7 +13828,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -13479,7 +13841,7 @@ version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -13502,7 +13864,7 @@ version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4eb30575f3638fc8f6815f448d50cb1a2e255b0897985c8c59f4d37b72a07b06" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "cssparser", "derive_more 0.99.20", "fxhash", @@ -13603,7 +13965,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -13614,7 +13976,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -13650,7 +14012,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -13662,6 +14024,15 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_spanned" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" +dependencies = [ + "serde_core", +] + [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -13702,7 +14073,7 @@ dependencies = [ "darling 0.21.3", "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -13744,7 +14115,7 @@ checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" dependencies = [ "block-buffer 0.9.0", "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "digest 0.9.0", "opaque-debug", ] @@ -13756,7 +14127,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "digest 0.10.7", ] @@ -13774,7 +14145,7 @@ checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" dependencies = [ "block-buffer 0.9.0", "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "digest 0.9.0", "opaque-debug", ] @@ -13786,7 +14157,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "digest 0.10.7", "sha2-asm", ] @@ -13807,14 +14178,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" dependencies = [ "digest 0.10.7", - "keccak", + "keccak 0.1.5", +] + +[[package]] +name = "sha3" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be176f1a57ce4e3d31c1a166222d9768de5954f811601fb7ca06fc8203905ce1" +dependencies = [ + "digest 0.11.3", + "keccak 0.2.0", ] [[package]] name = "sha3-asm" -version = "0.1.4" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" +checksum = "a6287fd675f713484342a89cbf0a386abef5f15919cfad607e5e1f19e1e15331" dependencies = [ "cc", "cfg-if", @@ -13844,6 +14225,12 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "shlex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + [[package]] name = "signal-hook" version = "0.3.18" @@ -13900,6 +14287,16 @@ version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" +[[package]] +name = "simd_cesu8" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33" +dependencies = [ + "rustc_version 0.4.1", + "simdutf8", +] + [[package]] name = "simdutf8" version = "0.1.5" @@ -13930,21 +14327,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" -[[package]] -name = "skeptic" -version = "0.13.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16d23b015676c90a0f01c197bfdc786c20342c73a0afdda9025adb0bc42940a8" -dependencies = [ - "bytecount", - "cargo_metadata 0.14.2", - "error-chain", - "glob", - "pulldown-cmark", - "tempfile", - "walkdir", -] - [[package]] name = "sketches-ddsketch" version = "0.3.0" @@ -14213,7 +14595,7 @@ dependencies = [ "atoi", "base64 0.21.7", "bigdecimal 0.3.1", - "bitflags 2.10.0", + "bitflags 2.13.0", "byteorder", "bytes", "chrono", @@ -14259,7 +14641,7 @@ dependencies = [ "atoi", "base64 0.21.7", "bigdecimal 0.3.1", - "bitflags 2.10.0", + "bitflags 2.13.0", "byteorder", "chrono", "crc", @@ -14460,6 +14842,15 @@ dependencies = [ "strum_macros 0.27.2", ] +[[package]] +name = "strum" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9628de9b8791db39ceda2b119bbe13134770b56c138ec1d3af810d045c04f9bd" +dependencies = [ + "strum_macros 0.28.0", +] + [[package]] name = "strum_macros" version = "0.25.3" @@ -14470,7 +14861,7 @@ dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", "rustversion", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -14483,7 +14874,7 @@ dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", "rustversion", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -14495,7 +14886,19 @@ dependencies = [ "heck 0.5.0", "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", +] + +[[package]] +name = "strum_macros" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab85eea0270ee17587ed4156089e10b9e6880ee688791d45a905f5b1ca36f664" +dependencies = [ + "heck 0.5.0", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.117", ] [[package]] @@ -14528,9 +14931,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.111" +version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", @@ -14539,14 +14942,14 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "1.4.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff790eb176cc81bb8936aed0f7b9f14fc4670069a2d371b3e3b0ecce908b2cb3" +checksum = "ec005042c7d952febc1a3ef5b0f6674e9054aa836877a31c90b20e25b3d31744" dependencies = [ "paste", "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -14584,7 +14987,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -14615,11 +15018,25 @@ dependencies = [ "windows 0.57.0", ] +[[package]] +name = "sysinfo" +version = "0.38.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92ab6a2f8bfe508deb3c6406578252e491d299cbbf3bc0529ecc3313aee4a52f" +dependencies = [ + "libc", + "memchr", + "ntapi", + "objc2-core-foundation", + "objc2-io-kit", + "windows 0.62.2", +] + [[package]] name = "sysperf" version = "0.1.0" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "rand 0.8.5", "rayon", "sysinfo 0.33.1", @@ -14642,7 +15059,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "core-foundation 0.9.4", "system-configuration-sys 0.6.0", ] @@ -14711,7 +15128,7 @@ dependencies = [ "fastrand 2.3.0", "getrandom 0.3.4", "once_cell", - "rustix 1.1.2", + "rustix", "windows-sys 0.61.2", ] @@ -14739,7 +15156,7 @@ dependencies = [ "ahash", "alloy-consensus", "alloy-json-rpc", - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "alloy-provider", "alloy-rpc-types-beacon", "clap", @@ -14772,7 +15189,7 @@ version = "0.1.0" dependencies = [ "quote 1.0.42", "reqwest 0.11.27", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -14807,7 +15224,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -14818,7 +15235,7 @@ checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -14872,9 +15289,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.44" +version = "0.3.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" +checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" dependencies = [ "deranged", "itoa", @@ -14883,22 +15300,22 @@ dependencies = [ "num-conv", "num_threads", "powerfmt", - "serde", + "serde_core", "time-core", "time-macros", ] [[package]] name = "time-core" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" +checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" [[package]] name = "time-macros" -version = "0.2.24" +version = "0.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" +checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" dependencies = [ "num-conv", "time-core", @@ -14980,7 +15397,7 @@ checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -15051,6 +15468,21 @@ dependencies = [ "tokio", "tokio-rustls 0.26.4", "tungstenite 0.26.2", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857" +dependencies = [ + "futures-util", + "log", + "rustls 0.23.35", + "rustls-pki-types", + "tokio", + "tokio-rustls 0.26.4", + "tungstenite 0.28.0", "webpki-roots 0.26.11", ] @@ -15085,11 +15517,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ "serde", - "serde_spanned", + "serde_spanned 0.6.9", "toml_datetime 0.6.11", "toml_edit 0.22.27", ] +[[package]] +name = "toml" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8" +dependencies = [ + "indexmap 2.12.1", + "serde_core", + "serde_spanned 1.1.1", + "toml_datetime 0.7.3", + "toml_parser", + "toml_writer", + "winnow 0.7.14", +] + [[package]] name = "toml_datetime" version = "0.6.11" @@ -15116,10 +15563,10 @@ checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ "indexmap 2.12.1", "serde", - "serde_spanned", + "serde_spanned 0.6.9", "toml_datetime 0.6.11", "toml_write", - "winnow", + "winnow 0.7.14", ] [[package]] @@ -15131,7 +15578,7 @@ dependencies = [ "indexmap 2.12.1", "toml_datetime 0.7.3", "toml_parser", - "winnow", + "winnow 0.7.14", ] [[package]] @@ -15140,7 +15587,7 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" dependencies = [ - "winnow", + "winnow 0.7.14", ] [[package]] @@ -15149,6 +15596,12 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" +[[package]] +name = "toml_writer" +version = "1.1.1+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" + [[package]] name = "tonic" version = "0.13.1" @@ -15215,7 +15668,7 @@ dependencies = [ "prost-build", "prost-types", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -15266,13 +15719,13 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.7" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf146f99d442e8e68e585f5d798ccd3cad9a7835b917e09728880a862706456" +checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840" dependencies = [ "async-compression", "base64 0.22.1", - "bitflags 2.10.0", + "bitflags 2.13.0", "bytes", "futures-core", "futures-util", @@ -15281,7 +15734,6 @@ dependencies = [ "http-body-util", "http-range-header", "httpdate", - "iri-string", "mime", "mime_guess", "percent-encoding", @@ -15292,6 +15744,7 @@ dependencies = [ "tower-layer", "tower-service", "tracing", + "url", "uuid", ] @@ -15339,7 +15792,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -15415,6 +15868,22 @@ dependencies = [ "web-time", ] +[[package]] +name = "tracing-samply" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c175f7ecc002b6ef04776a39f440503e4e788790ddbdbfac8259b7a069526334" +dependencies = [ + "cfg-if", + "itoa", + "libc", + "mach2", + "memmap2 0.9.9", + "smallvec", + "tracing-core", + "tracing-subscriber 0.3.22", +] + [[package]] name = "tracing-serde" version = "0.2.0" @@ -15472,7 +15941,7 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee44f4cef85f88b4dea21c0b1f58320bdf35715cf56d840969487cff00613321" dependencies = [ - "alloy-primitives 1.4.1", + "alloy-primitives 1.6.0", "ethereum_hashing", "ethereum_ssz 0.9.1", "smallvec", @@ -15488,7 +15957,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -15500,7 +15969,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -15513,12 +15982,6 @@ dependencies = [ "rlp", ] -[[package]] -name = "triomphe" -version = "0.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd69c5aa8f924c7519d6372789a74eac5b94fb0f8fcf0d4a97eb0bfc3e785f39" - [[package]] name = "try-lock" version = "0.2.5" @@ -15563,12 +16026,37 @@ dependencies = [ "utf-8", ] +[[package]] +name = "tungstenite" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8628dcc84e5a09eb3d8423d6cb682965dea9133204e8fb3efee74c2a0c259442" +dependencies = [ + "bytes", + "data-encoding", + "http 1.4.0", + "httparse", + "log", + "rand 0.9.2", + "rustls 0.23.35", + "rustls-pki-types", + "sha1", + "thiserror 2.0.17", + "utf-8", +] + [[package]] name = "twox-hash" version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ea3136b675547379c4bd395ca6b938e5ad3c3d20fad76e7fe85f9e0d011419c" +[[package]] +name = "typeid" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" + [[package]] name = "typenum" version = "1.19.0" @@ -15652,21 +16140,15 @@ checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-truncate" -version = "1.1.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3644627a5af5fa321c95b9b235a72fd24cd29c648c2c379431e6628655627bf" +checksum = "16b380a1238663e5f8a691f9039c73e1cdae598a30e9855f541d29b08b53e9a5" dependencies = [ - "itertools 0.13.0", + "itertools 0.14.0", "unicode-segmentation", - "unicode-width 0.1.14", + "unicode-width", ] -[[package]] -name = "unicode-width" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" - [[package]] name = "unicode-width" version = "0.2.0" @@ -15697,7 +16179,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" dependencies = [ - "crypto-common", + "crypto-common 0.1.7", "subtle", ] @@ -15804,12 +16286,12 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "vergen" -version = "9.0.6" +version = "9.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b2bf58be11fc9414104c6d3a2e464163db5ef74b12296bda593cac37b6e4777" +checksum = "b849a1f6d8639e8de261e81ee0fc881e3e3620db1af9f2e0da015d4382ceaf75" dependencies = [ "anyhow", - "cargo_metadata 0.19.2", + "cargo_metadata", "derive_builder", "regex", "rustversion", @@ -15819,9 +16301,9 @@ dependencies = [ [[package]] name = "vergen-git2" -version = "1.0.7" +version = "9.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f6ee511ec45098eabade8a0750e76eec671e7fb2d9360c563911336bea9cac1" +checksum = "d51ab55ddf1188c8d679f349775362b0fa9e90bd7a4ac69838b2a087623f0d57" dependencies = [ "anyhow", "derive_builder", @@ -15834,9 +16316,9 @@ dependencies = [ [[package]] name = "vergen-lib" -version = "0.1.6" +version = "9.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b07e6010c0f3e59fcb164e0163834597da68d1f864e2b8ca49f74de01e9c166" +checksum = "b34a29ba7e9c59e62f229ae1932fb1b8fb8a6fdcc99215a641913f5f5a59a569" dependencies = [ "anyhow", "derive_builder", @@ -15863,7 +16345,7 @@ checksum = "d674d135b4a8c1d7e813e2f8d1c9a58308aee4a680323066025e53132218bd91" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -15947,7 +16429,16 @@ version = "1.0.1+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" dependencies = [ - "wit-bindgen", + "wit-bindgen 0.46.0", +] + +[[package]] +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" +dependencies = [ + "wit-bindgen 0.51.0", ] [[package]] @@ -16001,7 +16492,7 @@ dependencies = [ "bumpalo", "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", "wasm-bindgen-shared", ] @@ -16014,6 +16505,28 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "wasm-encoder" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +dependencies = [ + "leb128fmt", + "wasmparser", +] + +[[package]] +name = "wasm-metadata" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +dependencies = [ + "anyhow", + "indexmap 2.12.1", + "wasm-encoder", + "wasmparser", +] + [[package]] name = "wasm-streams" version = "0.4.2" @@ -16027,6 +16540,18 @@ dependencies = [ "web-sys", ] +[[package]] +name = "wasmparser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +dependencies = [ + "bitflags 2.13.0", + "hashbrown 0.15.5", + "indexmap 2.12.1", + "semver 1.0.27", +] + [[package]] name = "wasmtimer" version = "0.4.3" @@ -16271,7 +16796,7 @@ checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -16282,7 +16807,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -16293,7 +16818,7 @@ checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -16304,7 +16829,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -16719,6 +17244,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "winnow" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" +dependencies = [ + "memchr", +] + [[package]] name = "winreg" version = "0.50.0" @@ -16735,6 +17269,94 @@ version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" +[[package]] +name = "wit-bindgen" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +dependencies = [ + "wit-bindgen-rust-macro", +] + +[[package]] +name = "wit-bindgen-core" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +dependencies = [ + "anyhow", + "heck 0.5.0", + "wit-parser", +] + +[[package]] +name = "wit-bindgen-rust" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +dependencies = [ + "anyhow", + "heck 0.5.0", + "indexmap 2.12.1", + "prettyplease", + "syn 2.0.117", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +dependencies = [ + "anyhow", + "prettyplease", + "proc-macro2 1.0.103", + "quote 1.0.42", + "syn 2.0.117", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +dependencies = [ + "anyhow", + "bitflags 2.13.0", + "indexmap 2.12.1", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +dependencies = [ + "anyhow", + "id-arena", + "indexmap 2.12.1", + "log", + "semver 1.0.27", + "serde", + "serde_derive", + "serde_json", + "unicode-xid 0.2.6", + "wasmparser", +] + [[package]] name = "write16" version = "1.0.0" @@ -16782,7 +17404,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156" dependencies = [ "libc", - "rustix 1.1.2", + "rustix", ] [[package]] @@ -16831,7 +17453,7 @@ checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", "synstructure 0.13.2", ] @@ -16852,7 +17474,7 @@ checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -16872,7 +17494,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", "synstructure 0.13.2", ] @@ -16893,7 +17515,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] @@ -16927,7 +17549,7 @@ checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", - "syn 2.0.111", + "syn 2.0.117", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index c8fdfc229..0c9d92bba 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -70,62 +70,73 @@ codegen-units = 1 incremental = false [workspace.dependencies] -reth = { git = "https://github.com/paradigmxyz/reth", rev = "27a8c0f5a6dfb27dea84c5751776ecabdd069646" } -reth-cli-util = { git = "https://github.com/paradigmxyz/reth", rev = "27a8c0f5a6dfb27dea84c5751776ecabdd069646" } -reth-db = { git = "https://github.com/paradigmxyz/reth", rev = "27a8c0f5a6dfb27dea84c5751776ecabdd069646" } -reth-db-common = { git = "https://github.com/paradigmxyz/reth", rev = "27a8c0f5a6dfb27dea84c5751776ecabdd069646" } -reth-errors = { git = "https://github.com/paradigmxyz/reth", rev = "27a8c0f5a6dfb27dea84c5751776ecabdd069646" } -reth-payload-builder = { git = "https://github.com/paradigmxyz/reth", rev = "27a8c0f5a6dfb27dea84c5751776ecabdd069646" } -reth-node-api = { git = "https://github.com/paradigmxyz/reth", rev = "27a8c0f5a6dfb27dea84c5751776ecabdd069646" } -reth-node-ethereum = { git = "https://github.com/paradigmxyz/reth", rev = "27a8c0f5a6dfb27dea84c5751776ecabdd069646" } -reth-trie = { git = "https://github.com/paradigmxyz/reth", rev = "27a8c0f5a6dfb27dea84c5751776ecabdd069646" } -reth-trie-parallel = { git = "https://github.com/paradigmxyz/reth", rev = "27a8c0f5a6dfb27dea84c5751776ecabdd069646" } -reth-node-core = { git = "https://github.com/paradigmxyz/reth", rev = "27a8c0f5a6dfb27dea84c5751776ecabdd069646" } -reth-primitives = { git = "https://github.com/paradigmxyz/reth", rev = "27a8c0f5a6dfb27dea84c5751776ecabdd069646" } -reth-ethereum-primitives = { git = "https://github.com/paradigmxyz/reth", rev = "27a8c0f5a6dfb27dea84c5751776ecabdd069646" } -reth-primitives-traits = { git = "https://github.com/paradigmxyz/reth", rev = "27a8c0f5a6dfb27dea84c5751776ecabdd069646" } -reth-provider = { git = "https://github.com/paradigmxyz/reth", rev = "27a8c0f5a6dfb27dea84c5751776ecabdd069646", features = [ +# default-features minus "rocksdb": we only read reth datadirs via MDBX + static files. +# ("reth-revm/portable" from reth's default set is re-enabled on the reth-revm dep below.) +reth = { git = "https://github.com/paradigmxyz/reth", rev = "d6324d63e27ef6b7c49cdc9b1977c1b808234c7b", default-features = false, features = [ + "jemalloc", + "otlp", + "otlp-logs", + "js-tracer", + "keccak-cache-global", + "asm-keccak", + "min-debug-logs", +] } +reth-cli-util = { git = "https://github.com/paradigmxyz/reth", rev = "d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" } +reth-db = { git = "https://github.com/paradigmxyz/reth", rev = "d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" } +reth-db-common = { git = "https://github.com/paradigmxyz/reth", rev = "d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" } +reth-errors = { git = "https://github.com/paradigmxyz/reth", rev = "d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" } +reth-payload-builder = { git = "https://github.com/paradigmxyz/reth", rev = "d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" } +reth-node-api = { git = "https://github.com/paradigmxyz/reth", rev = "d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" } +reth-node-ethereum = { git = "https://github.com/paradigmxyz/reth", rev = "d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" } +reth-trie = { git = "https://github.com/paradigmxyz/reth", rev = "d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" } +reth-trie-parallel = { git = "https://github.com/paradigmxyz/reth", rev = "d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" } +reth-node-core = { git = "https://github.com/paradigmxyz/reth", rev = "d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" } +reth-primitives = { git = "https://github.com/paradigmxyz/reth", rev = "d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" } +reth-ethereum-primitives = { git = "https://github.com/paradigmxyz/reth", rev = "d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" } +reth-primitives-traits = { git = "https://github.com/paradigmxyz/reth", rev = "d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" } +reth-provider = { git = "https://github.com/paradigmxyz/reth", rev = "d6324d63e27ef6b7c49cdc9b1977c1b808234c7b", features = [ "test-utils", ] } -reth-chainspec = { git = "https://github.com/paradigmxyz/reth", rev = "27a8c0f5a6dfb27dea84c5751776ecabdd069646" } -reth-evm = { git = "https://github.com/paradigmxyz/reth", rev = "27a8c0f5a6dfb27dea84c5751776ecabdd069646" } -reth-evm-ethereum = { git = "https://github.com/paradigmxyz/reth", rev = "27a8c0f5a6dfb27dea84c5751776ecabdd069646" } -reth-revm = { git = "https://github.com/paradigmxyz/reth", rev = "27a8c0f5a6dfb27dea84c5751776ecabdd069646" } -reth-execution-errors = { git = "https://github.com/paradigmxyz/reth", rev = "27a8c0f5a6dfb27dea84c5751776ecabdd069646" } -reth-trie-db = { git = "https://github.com/paradigmxyz/reth", rev = "27a8c0f5a6dfb27dea84c5751776ecabdd069646" } -reth-transaction-pool = { git = "https://github.com/paradigmxyz/reth", rev = "27a8c0f5a6dfb27dea84c5751776ecabdd069646" } - -# compatible with reth 27a8c0f5a6dfb27dea84c5751776ecabdd069646 dependencies -revm = { version = "31.0.2", features = [ +reth-chainspec = { git = "https://github.com/paradigmxyz/reth", rev = "d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" } +reth-evm = { git = "https://github.com/paradigmxyz/reth", rev = "d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" } +reth-evm-ethereum = { git = "https://github.com/paradigmxyz/reth", rev = "d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" } +reth-revm = { git = "https://github.com/paradigmxyz/reth", rev = "d6324d63e27ef6b7c49cdc9b1977c1b808234c7b", features = ["portable"] } +reth-execution-errors = { git = "https://github.com/paradigmxyz/reth", rev = "d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" } +reth-trie-db = { git = "https://github.com/paradigmxyz/reth", rev = "d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" } +reth-transaction-pool = { git = "https://github.com/paradigmxyz/reth", rev = "d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" } +reth-tasks = { git = "https://github.com/paradigmxyz/reth", rev = "d6324d63e27ef6b7c49cdc9b1977c1b808234c7b" } + +# compatible with reth v1.11.3 (d6324d63e27ef6b7c49cdc9b1977c1b808234c7b) dependencies +revm = { version = "34.0.0", features = [ "std", "secp256k1", "optional_balance_check", ], default-features = false } -revm-inspectors = { version = "0.32.0", default-features = false } +revm-inspectors = { version = "0.34.2", default-features = false } ethereum_ssz_derive = "0.9.0" ethereum_ssz = "0.9.0" -alloy-primitives = { version = "1.4.1", default-features = false, features = [ +alloy-primitives = { version = "1.5.6", default-features = false, features = [ "getrandom", ] } -alloy-rlp = "0.3.10" +alloy-rlp = "0.3.13" alloy-chains = "0.2.5" -alloy-trie = { version = "0.8.1", default-features = false } -alloy-evm = { version = "0.23.3", default-features = false } -alloy-provider = { version = "1.0.41", features = ["ipc", "pubsub", "ws"] } -alloy-eips = { version = "1.0.41" } -alloy-rpc-types = { version = "1.0.41" } -alloy-json-rpc = { version = "1.0.41" } -alloy-network = { version = "1.0.41" } -alloy-network-primitives = { version = "1.0.41" } -alloy-node-bindings = { version = "1.0.41" } -alloy-consensus = { version = "1.0.41", features = ["kzg"] } -alloy-rpc-types-beacon = { version = "1.0.41", features = ["ssz"] } -alloy-rpc-types-engine = { version = "1.0.41", features = ["ssz"] } -alloy-rpc-types-eth = { version = "1.0.41" } -alloy-signer = { version = "1.0.41" } -alloy-signer-local = { version = "1.0.41" } +alloy-trie = { version = "0.9.4", default-features = false } +alloy-evm = { version = "0.27.2", default-features = false } +alloy-provider = { version = "1.6.3", features = ["ipc", "pubsub", "ws"] } +alloy-eips = { version = "1.6.3" } +alloy-rpc-types = { version = "1.6.3" } +alloy-json-rpc = { version = "1.6.3" } +alloy-network = { version = "1.6.3" } +alloy-network-primitives = { version = "1.6.3" } +alloy-node-bindings = { version = "1.6.3" } +alloy-consensus = { version = "1.6.3", features = ["kzg"] } +alloy-rpc-types-beacon = { version = "1.6.3", features = ["ssz"] } +alloy-rpc-types-engine = { version = "1.6.3", features = ["ssz"] } +alloy-rpc-types-eth = { version = "1.6.3" } +alloy-signer = { version = "1.6.3" } +alloy-signer-local = { version = "1.6.3" } # Version required by ethereum-consensus beacon-api-client mev-share-sse = { git = "https://github.com/paradigmxyz/mev-share-rs", rev = "9eb2b0138ab3202b9eb3af4b19c7b3bf40b0faa8", default-features = false } @@ -141,7 +152,7 @@ parking_lot = { version = "0.12.3" } tokio = { version = "1.40.0", default-features = false } futures = "0.3" futures-util = "0.3" -reqwest = { version = "0.12.8" } +reqwest = { version = "0.12.8", features = ["json"] } serde = { version = "1.0.210" } serde_json = { version = "1.0" } serde_with = { version = "3.8.1" } diff --git a/crates/eth-sparse-mpt/Cargo.toml b/crates/eth-sparse-mpt/Cargo.toml index e918ac349..8aa72210c 100644 --- a/crates/eth-sparse-mpt/Cargo.toml +++ b/crates/eth-sparse-mpt/Cargo.toml @@ -17,7 +17,7 @@ rustc-hash = "2.0.0" rayon = "1.10.0" smallvec = "1.13.2" alloy-trie.workspace = true -nybbles = { version = "0.3.3", features = ["serde"] } +nybbles = { version = "0.4", features = ["serde"] } tracing.workspace = true @@ -32,6 +32,7 @@ reth-node-api = { workspace = true, optional = true } reth-node-ethereum = { workspace = true, optional = true } reth-trie.workspace = true reth-trie-parallel = { workspace = true, optional = true } +reth-tasks = { workspace = true, optional = true } reth-trie-db.workspace = true reth-provider.workspace = true reth-revm = { workspace = true, optional = true } @@ -64,6 +65,7 @@ dev-tools = [ "dep:reth-node-api", "dep:reth-node-ethereum", "dep:reth-trie-parallel", + "dep:reth-tasks", "dep:reth-revm", ] diff --git a/crates/eth-sparse-mpt/benches/trie_do_bench.rs b/crates/eth-sparse-mpt/benches/trie_do_bench.rs index 1f760ded1..246bd9c6b 100644 --- a/crates/eth-sparse-mpt/benches/trie_do_bench.rs +++ b/crates/eth-sparse-mpt/benches/trie_do_bench.rs @@ -92,14 +92,14 @@ fn insert_proofs(c: &mut Criterion) { let mut proofs: HashMap> = Default::default(); for key in &byte_keys { let key = Nibbles::unpack(key); - let current_key_proofs = proofs.entry(key.clone()).or_default(); + let current_key_proofs = proofs.entry(key).or_default(); for (path, node) in &nodes { if key.starts_with(path) { - current_key_proofs.push((path.clone(), node.clone().into())); + current_key_proofs.push((*path, node.clone().into())); } } - current_key_proofs.sort_by_key(|(p, _)| p.clone()); - current_key_proofs.dedup_by_key(|(p, _)| p.clone()); + current_key_proofs.sort_by_key(|(p, _)| *p); + current_key_proofs.dedup_by_key(|(p, _)| *p); } for (path, proof) in proofs { proof_store.add_proof(path, proof).unwrap(); diff --git a/crates/eth-sparse-mpt/benches/trie_insert_bench.rs b/crates/eth-sparse-mpt/benches/trie_insert_bench.rs index c0b3212f7..47b1db7ae 100644 --- a/crates/eth-sparse-mpt/benches/trie_insert_bench.rs +++ b/crates/eth-sparse-mpt/benches/trie_insert_bench.rs @@ -120,8 +120,8 @@ fn gather_nodes(c: &mut Criterion) { .into_iter() .flat_map(|mp| mp.account_subtree.into_iter().collect::>()) .collect(); - account_proof.sort_by_key(|(p, _)| p.clone()); - account_proof.dedup_by_key(|(p, _)| p.clone()); + account_proof.sort_by_key(|(p, _)| *p); + account_proof.dedup_by_key(|(p, _)| *p); account_proof }; diff --git a/crates/eth-sparse-mpt/src/bin/correctness-harness.rs b/crates/eth-sparse-mpt/src/bin/correctness-harness.rs index 203211b76..cd15dc451 100644 --- a/crates/eth-sparse-mpt/src/bin/correctness-harness.rs +++ b/crates/eth-sparse-mpt/src/bin/correctness-harness.rs @@ -14,12 +14,16 @@ use reth_evm_ethereum::EthEvmConfig; use reth_node_api::NodeTypesWithDBAdapter; use reth_node_ethereum::EthereumNode; use reth_provider::{ - providers::{ConsistentDbView, OverlayStateProviderFactory, StaticFileProvider}, + providers::{ + ConsistentDbView, OverlayStateProviderFactory, RocksDBProvider, StaticFileProvider, + StaticFileProviderBuilder, + }, BlockHashReader, BlockNumReader, BlockReader, ChainSpecProvider, HeaderProvider, ProviderFactory, TransactionVariant, }; use reth_revm::database::StateProviderDatabase; use reth_trie::TrieInput; +use reth_trie_db::ChangesetCache; use reth_trie_parallel::root::ParallelStateRoot; use revm::database::BundleState; use std::{ @@ -347,13 +351,13 @@ fn calculate_reth_root( parent_hash: B256, outcome: &BundleState, ) -> Result { - let overlay = OverlayStateProviderFactory::new(factory.clone()); + let overlay = OverlayStateProviderFactory::new(factory.clone(), ChangesetCache::new()); let hasher = factory .history_by_block_hash(parent_hash) .with_context(|| format!("failed to open state provider at parent hash {parent_hash:?}"))?; let hashed_post_state = hasher.hashed_post_state(outcome); let trie_input = TrieInput::from_state(hashed_post_state); - ParallelStateRoot::new(overlay, trie_input.prefix_sets.freeze()) + ParallelStateRoot::new(overlay, trie_input.prefix_sets.freeze(), task_runtime()) .incremental_root() .with_context(|| "parallel state root failed") } @@ -403,24 +407,46 @@ fn open_provider_factory( .with_context(|| format!("failed to open reth db at {}", db_path.display()))?, ); - let static_files = - StaticFileProvider::read_only(&static_files_path, false).with_context(|| { - format!( - "failed to open static files at {}", - static_files_path.display() - ) - })?; let static_files = if let Some(blocks_per_file) = static_file_blocks_per_file { - static_files.with_custom_blocks_per_file(blocks_per_file) + StaticFileProviderBuilder::read_only(&static_files_path) + .with_blocks_per_file(blocks_per_file) + .build() } else { - static_files - }; + StaticFileProvider::read_only(&static_files_path, false) + } + .with_context(|| { + format!( + "failed to open static files at {}", + static_files_path.display() + ) + })?; + let rocksdb_provider = RocksDBProvider::builder(datadir.join("rocksdb")) + .with_default_tables() + .with_read_only(true) + .build() + .context("failed to open rocksdb provider")?; Ok(ProviderFactory::::new( db, chain_spec, static_files, - )) + rocksdb_provider, + task_runtime(), + )?) +} + +/// Process-wide reth task runtime for parallel provider/trie I/O. +fn task_runtime() -> reth_tasks::Runtime { + use reth_tasks::{Runtime, RuntimeBuilder, RuntimeConfig}; + + static RUNTIME: std::sync::OnceLock = std::sync::OnceLock::new(); + RUNTIME + .get_or_init(|| { + RuntimeBuilder::new(RuntimeConfig::default()) + .build() + .expect("failed to build reth task runtime") + }) + .clone() } fn parse_chain_spec(chain: &str) -> Result> { diff --git a/crates/eth-sparse-mpt/src/utils.rs b/crates/eth-sparse-mpt/src/utils.rs index 288ff1c96..42a31abfa 100644 --- a/crates/eth-sparse-mpt/src/utils.rs +++ b/crates/eth-sparse-mpt/src/utils.rs @@ -29,25 +29,23 @@ pub fn rlp_pointer(rlp_encode: Bytes) -> Bytes { } pub fn concat_path(p1: &Nibbles, p2: &[u8]) -> Nibbles { - let mut result = Nibbles::with_capacity(p1.len() + p2.len()); - result.extend_from_slice_unchecked(p1); + let mut result = *p1; result.extend_from_slice_unchecked(p2); result } pub fn strip_first_nibble_mut(p: &mut Nibbles) -> u8 { - let nibble = p[0]; - let vec = p.as_mut_vec_unchecked(); - vec.remove(0); + let nibble = p.get_unchecked(0); + *p = p.slice_unchecked(1, p.len()); nibble } #[inline] pub fn extract_prefix_and_suffix(p1: &Nibbles, p2: &Nibbles) -> (Nibbles, Nibbles, Nibbles) { let prefix_len = p1.common_prefix_length(p2); - let prefix = Nibbles::from_nibbles_unchecked(&p1[..prefix_len]); - let suffix1 = Nibbles::from_nibbles_unchecked(&p1[prefix_len..]); - let suffix2 = Nibbles::from_nibbles_unchecked(&p2[prefix_len..]); + let prefix = p1.slice_unchecked(0, prefix_len); + let suffix1 = p1.slice_unchecked(prefix_len, p1.len()); + let suffix2 = p2.slice_unchecked(prefix_len, p2.len()); (prefix, suffix1, suffix2) } @@ -136,16 +134,3 @@ fn mismatch_chunks(xs: &[u8], ys: &[u8]) -> usize { .take_while(|(x, y)| x == y) .count() } - -// rbuilder uses nybbles v3.3.0 and reth_trie uses nybbles v4.3.0. This is a temporary fix to convert between the two. -// We can remove the below methods once rbuilder has been upgraded to nybbles v4.3.0. -// nybbles v4.3.0 has a breaking change (byte array with 1 byte per nybble vs U256 packed data + length) in the API which breaks a lot of parts of the eth sparse trie code. -#[inline] -pub fn convert_reth_nybbles_to_nibbles(n: reth_trie::Nibbles) -> Nibbles { - Nibbles::from_nibbles(n.to_vec()) -} - -#[inline] -pub fn convert_nibbles_to_reth_nybbles(n: Nibbles) -> reth_trie::Nibbles { - reth_trie::Nibbles::from_nibbles(n.as_slice()) -} diff --git a/crates/eth-sparse-mpt/src/v1/reth_sparse_trie/shared_cache.rs b/crates/eth-sparse-mpt/src/v1/reth_sparse_trie/shared_cache.rs index 47447807b..e3815302f 100644 --- a/crates/eth-sparse-mpt/src/v1/reth_sparse_trie/shared_cache.rs +++ b/crates/eth-sparse-mpt/src/v1/reth_sparse_trie/shared_cache.rs @@ -146,11 +146,11 @@ impl RethSparseTrieShareCacheInternal { multiproof: MultiProof, ) -> Result<(), AddNodeError> { let mut nodes: Vec<_> = multiproof.account_subtree.into_iter().collect(); - nodes.sort_by_key(|(p, _)| p.clone()); + nodes.sort_by_key(|(p, _)| *p); self.account_trie.add_nodes(&nodes)?; for (account, storge_proofs) in multiproof.storages { let mut nodes: Vec<_> = storge_proofs.subtree.into_iter().collect(); - nodes.sort_by_key(|(p, _)| p.clone()); + nodes.sort_by_key(|(p, _)| *p); let account = Bytes::copy_from_slice(account.as_slice()); let storage_trie = self.storage_tries.entry(account).or_default(); storage_trie.add_nodes(&nodes)?; diff --git a/crates/eth-sparse-mpt/src/v1/reth_sparse_trie/trie_fetcher/mod.rs b/crates/eth-sparse-mpt/src/v1/reth_sparse_trie/trie_fetcher/mod.rs index 9fd0f6669..72a2e98cc 100644 --- a/crates/eth-sparse-mpt/src/v1/reth_sparse_trie/trie_fetcher/mod.rs +++ b/crates/eth-sparse-mpt/src/v1/reth_sparse_trie/trie_fetcher/mod.rs @@ -1,6 +1,6 @@ use std::time::Instant; -use crate::utils::{convert_reth_nybbles_to_nibbles, hash_map_with_capacity, HashMap, HashSet}; +use crate::utils::{hash_map_with_capacity, HashMap, HashSet}; use alloy_primitives::map::HashSet as AlloyHashSet; use tracing::trace; @@ -106,7 +106,9 @@ where } fn pad_path(mut path: Nibbles) -> B256 { - path.as_mut_vec_unchecked().resize(64, 0); + while path.len() < 64 { + path.push_unchecked(0); + } let mut res = B256::default(); path.pack_to(res.as_mut_slice()); res @@ -164,16 +166,16 @@ fn merge_results( let mut result = MultiProof::default(); for mut proof in multiproofs { result.account_subtree.append(&mut proof.account_subtree); - result.account_subtree.sort_by_key(|s| s.0.clone()); - result.account_subtree.dedup_by_key(|s| s.0.clone()); + result.account_subtree.sort_by_key(|s| s.0); + result.account_subtree.dedup_by_key(|s| s.0); for (account, mut storage_proof) in proof.storages { let result_storage_proof = result.storages.entry(account).or_default(); result_storage_proof .subtree .append(&mut storage_proof.subtree); - result_storage_proof.subtree.sort_by_key(|s| s.0.clone()); - result_storage_proof.subtree.dedup_by_key(|s| s.0.clone()); + result_storage_proof.subtree.sort_by_key(|s| s.0); + result_storage_proof.subtree.dedup_by_key(|s| s.0); } } @@ -192,9 +194,9 @@ fn convert_reth_multiproof( ) -> MultiProof { let mut account_subtree = Vec::with_capacity(reth_proof.account_subtree.len()); for (k, v) in reth_proof.account_subtree.into_inner() { - account_subtree.push((convert_reth_nybbles_to_nibbles(k), v)); + account_subtree.push((k, v)); } - account_subtree.sort_by_key(|a| a.0.clone()); + account_subtree.sort_by_key(|a| a.0); let mut storages = hash_map_with_capacity(reth_proof.storages.len()); for (k, reth_storage_proof) in reth_proof.storages { if !all_requested_accounts.contains(&k) { @@ -206,9 +208,9 @@ fn convert_reth_multiproof( let mut subtree = Vec::with_capacity(reth_storage_proof.subtree.len()); for (k, v) in reth_storage_proof.subtree.into_inner() { - subtree.push((convert_reth_nybbles_to_nibbles(k), v)); + subtree.push((k, v)); } - subtree.sort_by_key(|a| a.0.clone()); + subtree.sort_by_key(|a| a.0); let v = StorageMultiProof { subtree }; storages.insert(k, v); } diff --git a/crates/eth-sparse-mpt/src/v1/sparse_mpt/diff_trie/mod.rs b/crates/eth-sparse-mpt/src/v1/sparse_mpt/diff_trie/mod.rs index 81210807a..fe0ceef9d 100644 --- a/crates/eth-sparse-mpt/src/v1/sparse_mpt/diff_trie/mod.rs +++ b/crates/eth-sparse-mpt/src/v1/sparse_mpt/diff_trie/mod.rs @@ -65,7 +65,7 @@ pub struct NodeCursor { impl NodeCursor { pub fn new(key: Nibbles, head: u64) -> Self { - let current_path = Nibbles::with_capacity(key.len()); + let current_path = Nibbles::new(); Self { current_node: head, current_path, @@ -76,8 +76,8 @@ impl NodeCursor { pub fn step_into_extension(&mut self, ext: &DiffExtensionNode) { let len = ext.key().len(); self.current_path - .extend_from_slice_unchecked(&self.path_left[..len]); - self.path_left.as_mut_vec_unchecked().drain(..len); + .extend(&self.path_left.slice_unchecked(0, len)); + self.path_left = self.path_left.slice_unchecked(len, self.path_left.len()); self.current_node = ext.child.ptr(); } @@ -101,10 +101,9 @@ fn try_get_node_mut<'a>( ptr: u64, path: &Nibbles, ) -> Result<&'a mut DiffTrieNode, ErrSparseNodeNotFound> { - nodes.get_mut(&ptr).ok_or_else(|| ErrSparseNodeNotFound { - path: path.clone(), - ptr, - }) + nodes + .get_mut(&ptr) + .ok_or(ErrSparseNodeNotFound { path: *path, ptr }) } pub fn get_new_ptr(ptrs: &mut u64) -> u64 { @@ -238,13 +237,10 @@ impl DiffTrie { let n = c.step_into_branch(branch); if branch.has_child(n) { - let child = - branch - .get_diff_child_mut(n) - .ok_or_else(|| ErrSparseNodeNotFound { - path: c.current_path.clone(), - ptr: u64::MAX, - })?; + let child = branch.get_diff_child_mut(n).ok_or(ErrSparseNodeNotFound { + path: c.current_path, + ptr: u64::MAX, + })?; child.mark_dirty(); continue; } else { @@ -313,9 +309,9 @@ impl DiffTrie { return Err(DeletionError::KeyNotFound); } - let child = branch.get_diff_child_mut(n).ok_or_else(|| { + let child = branch.get_diff_child_mut(n).ok_or({ DeletionError::NodeNotFound(ErrSparseNodeNotFound { - path: c.current_path.clone(), + path: c.current_path, ptr: u64::MAX, }) })?; @@ -332,9 +328,10 @@ impl DiffTrie { .other_child_nibble(n) .expect("other child must exist"); if branch.get_diff_child(other_child_nibble).is_none() { - let mut other_child_path = c.current_path.clone(); - if let Some(l) = other_child_path.as_mut_vec_unchecked().last_mut() { - *l = other_child_nibble; + let mut other_child_path = c.current_path; + if !other_child_path.is_empty() { + let last_idx = other_child_path.len() - 1; + other_child_path.set_at(last_idx, other_child_nibble); } return Err(DeletionError::NodeNotFound(ErrSparseNodeNotFound { path: other_child_path, @@ -428,9 +425,9 @@ impl DiffTrie { DiffTrieNodeKind::Leaf(leaf_below), ) => { // we just replace extension node by merging its path into leaf with child_nibble - let mut new_leaf_key = ext_above.key().clone(); + let mut new_leaf_key = *ext_above.key(); new_leaf_key.push(*child_nibble); - new_leaf_key.extend_from_slice_unchecked(leaf_below.key()); + new_leaf_key.extend(leaf_below.key()); let mut new_leaf = leaf_below; new_leaf.changed_key = Some(new_leaf_key); @@ -443,7 +440,7 @@ impl DiffTrie { // we merge two extension nodes into current node with child_nibble let ext_key = ext_above.key_mut(); ext_key.push(*child_nibble); - ext_key.extend_from_slice_unchecked(ext_below.key()); + ext_key.extend(ext_below.key()); ext_above.child = ext_below.child.clone(); } @@ -469,10 +466,9 @@ impl DiffTrie { DiffTrieNodeKind::Leaf(mut leaf_below), ) => { // merge missing nibble into the leaf - leaf_below - .key_mut() - .as_mut_vec_unchecked() - .insert(0, *child_nibble); + let leaf_key = leaf_below.key_mut(); + *leaf_key = + Nibbles::from_nibbles_unchecked([*child_nibble]).join(leaf_key); let new_leaf_ptr = get_new_ptr(&mut self.ptrs); let new_child = DiffTrieNode { @@ -491,10 +487,9 @@ impl DiffTrie { DiffTrieNodeKind::Extension(mut ext_below), ) => { // merge missing nibble into the extension - ext_below - .key_mut() - .as_mut_vec_unchecked() - .insert(0, *child_nibble); + let ext_key = ext_below.key_mut(); + *ext_key = + Nibbles::from_nibbles_unchecked([*child_nibble]).join(ext_key); let new_child_ptr = get_new_ptr(&mut self.ptrs); let new_child = DiffTrieNode { kind: DiffTrieNodeKind::Extension(ext_below), @@ -563,13 +558,13 @@ impl DiffTrie { .expect("orphaned child existence verif"); match &mut child_below.kind { DiffTrieNodeKind::Leaf(leaf) => { - leaf.key_mut() - .as_mut_vec_unchecked() - .insert(0, child_nibble); + let leaf_key = leaf.key_mut(); + *leaf_key = Nibbles::from_nibbles_unchecked([child_nibble]).join(leaf_key); child_below.rlp_pointer = None; } DiffTrieNodeKind::Extension(ext) => { - ext.key_mut().as_mut_vec_unchecked().insert(0, child_nibble); + let ext_key = ext.key_mut(); + *ext_key = Nibbles::from_nibbles_unchecked([child_nibble]).join(ext_key); child_below.rlp_pointer = None; } DiffTrieNodeKind::Branch(_) => { diff --git a/crates/eth-sparse-mpt/src/v1/sparse_mpt/diff_trie/nodes.rs b/crates/eth-sparse-mpt/src/v1/sparse_mpt/diff_trie/nodes.rs index 164aaebb5..620ffcd58 100644 --- a/crates/eth-sparse-mpt/src/v1/sparse_mpt/diff_trie/nodes.rs +++ b/crates/eth-sparse-mpt/src/v1/sparse_mpt/diff_trie/nodes.rs @@ -174,7 +174,7 @@ impl DiffLeafNode { let fixed_key = self .fixed .as_ref() - .map(|k| k.key.clone()) + .map(|k| k.key) .expect("leaf incorrect form"); self.changed_key = Some(fixed_key); } @@ -331,7 +331,7 @@ impl DiffExtensionNode { let fixed_key = self .fixed .as_ref() - .map(|k| k.key.clone()) + .map(|k| k.key) .expect("ext incorrect form"); self.changed_key = Some(fixed_key); } diff --git a/crates/eth-sparse-mpt/src/v1/sparse_mpt/fixed_trie.rs b/crates/eth-sparse-mpt/src/v1/sparse_mpt/fixed_trie.rs index 2934337f0..935ead06b 100644 --- a/crates/eth-sparse-mpt/src/v1/sparse_mpt/fixed_trie.rs +++ b/crates/eth-sparse-mpt/src/v1/sparse_mpt/fixed_trie.rs @@ -167,12 +167,12 @@ impl FixedTrie { for (ptr, node) in &diff_trie.nodes { let fixed_node = match &node.kind { DiffTrieNodeKind::Leaf(leaf) => FixedTrieNode::Leaf(Arc::new(FixedLeafNode { - key: leaf.key().clone(), + key: *leaf.key(), value: leaf.value().clone(), })), DiffTrieNodeKind::Extension(ext) => FixedTrieNode::Extension { node: Arc::new(FixedExtensionNode { - key: ext.key().clone(), + key: *ext.key(), child: ext .child .rlp_pointer @@ -261,7 +261,7 @@ impl FixedTrie { // here we find parent to link with this new node let mut current_path = Nibbles::new(); - let mut path_left = path.clone(); + let mut path_left = *path; let mut current_node = self.head; let mut parent: Option = None; @@ -286,8 +286,8 @@ impl FixedTrie { parent_child_idx = None; let len = node.key.len(); - current_path.extend_from_slice_unchecked(&path_left[..len]); - path_left.as_mut_vec_unchecked().drain(..len); + current_path.extend(&path_left.slice_unchecked(0, len)); + path_left = path_left.slice_unchecked(len, path_left.len()); if path_left.is_empty() { break; @@ -455,11 +455,9 @@ impl FixedTrie { // orphan node is missing // we stepped into child above so the path is the path of current child and orphan child differs // only in last nibble - let mut path = c.current_path.clone(); - path.as_mut_vec_unchecked() - .last_mut() - .map(|n| *n = orphan_nibble) - .unwrap(); + let mut path = c.current_path; + let last_idx = path.len() - 1; + path.set_at(last_idx, orphan_nibble); missing_nodes.push(path); } } @@ -498,8 +496,8 @@ mod tests { .into_iter() .flat_map(|mp| mp.account_subtree.into_iter().collect::>()) .collect(); - account_proof.sort_by_key(|(p, _)| p.clone()); - account_proof.dedup_by_key(|(p, _)| p.clone()); + account_proof.sort_by_key(|(p, _)| *p); + account_proof.dedup_by_key(|(p, _)| *p); account_proof }; diff --git a/crates/eth-sparse-mpt/src/v2/fetch.rs b/crates/eth-sparse-mpt/src/v2/fetch.rs index 9a004537c..b8540e069 100644 --- a/crates/eth-sparse-mpt/src/v2/fetch.rs +++ b/crates/eth-sparse-mpt/src/v2/fetch.rs @@ -1,9 +1,6 @@ use std::sync::Arc; -use crate::{ - utils::{convert_nibbles_to_reth_nybbles, convert_reth_nybbles_to_nibbles, HashMap}, - SparseTrieError, -}; +use crate::{utils::HashMap, SparseTrieError}; use alloy_primitives::map::B256Set; use parking_lot::Mutex; use rayon::prelude::*; @@ -52,12 +49,12 @@ impl MissingNodesFetcher { .storage_proof_targets .entry(*hashed_address) .or_default(); - entry.0.insert(pad_path(node.clone())); + entry.0.insert(pad_path(node)); entry.1.push(node); } pub fn add_missing_account_node(&mut self, node: Nibbles) { - self.account_proof_targets.push(pad_path(node.clone())); + self.account_proof_targets.push(pad_path(node)); self.account_proof_requested_nodes.push(node); } @@ -94,17 +91,13 @@ impl MissingNodesFetcher { .map_err(SparseTrieError::other)?; *fetched_nodes.lock() += requested_proofs.len(); for requested_proof in requested_proofs { - let proof_for_node = storge_multiproof.subtree.matching_nodes_sorted( - &convert_nibbles_to_reth_nybbles(requested_proof.clone()), - ); - let reth_proof_for_node = proof_for_node - .into_iter() - .map(|(k, v)| (convert_reth_nybbles_to_nibbles(k), v)) - .collect(); + let proof_for_node = storge_multiproof + .subtree + .matching_nodes_sorted(&requested_proof); let proof_store = shared_cache.account_proof_store_hashed_address(&hashed_address); proof_store - .add_proof(requested_proof, reth_proof_for_node) + .add_proof(requested_proof, proof_for_node) .map_err(SparseTrieError::other)?; } Ok(()) @@ -130,15 +123,11 @@ impl MissingNodesFetcher { for requested_node in self.account_proof_requested_nodes.drain(..) { let proof_for_node = multiproof .account_subtree - .matching_nodes_sorted(&convert_nibbles_to_reth_nybbles(requested_node.clone())); + .matching_nodes_sorted(&requested_node); - let reth_proof_for_node = proof_for_node - .into_iter() - .map(|(k, v)| (convert_reth_nybbles_to_nibbles(k), v)) - .collect(); shared_cache .account_trie - .add_proof(requested_node, reth_proof_for_node) + .add_proof(requested_node, proof_for_node) .map_err(SparseTrieError::other)?; } let fetched_nodes = *fetched_nodes.lock(); @@ -146,8 +135,9 @@ impl MissingNodesFetcher { } } -fn pad_path(mut path: Nibbles) -> B256 { - path.as_mut_vec_unchecked().resize(64, 0); +fn pad_path(path: Nibbles) -> B256 { + // `pack_to` fills the first `byte_len` bytes; the remaining bytes stay zero, + // which is equivalent to padding the path with zero nibbles up to 64. let mut res = B256::default(); path.pack_to(res.as_mut_slice()); res diff --git a/crates/eth-sparse-mpt/src/v2/mod.rs b/crates/eth-sparse-mpt/src/v2/mod.rs index fdc996a8b..306a4c17c 100644 --- a/crates/eth-sparse-mpt/src/v2/mod.rs +++ b/crates/eth-sparse-mpt/src/v2/mod.rs @@ -446,7 +446,7 @@ impl RootHashCalculator { { fetcher .lock() - .add_missing_account_node(storage_calc.unpacked_hashed_address.clone()); + .add_missing_account_node(storage_calc.unpacked_hashed_address); } if storage_calc.insert_keys.is_empty() && storage_calc.delete_keys.is_empty() { @@ -466,7 +466,7 @@ impl RootHashCalculator { if !storage_calc.proof_store.has_proof(node) { fetcher .lock() - .add_missing_storage_node(&storage_calc.hashed_address, node.clone()); + .add_missing_storage_node(&storage_calc.hashed_address, *node); } } }); @@ -549,7 +549,7 @@ impl RootHashCalculator { storage_calc.insert_storage_key[i], AppliedStorageOp { inserted_value: storage_calc.insert_storage_value[i], - revert_key: storage_calc.insert_keys[i].clone(), + revert_key: storage_calc.insert_keys[i], revert_value, }, ); @@ -574,7 +574,7 @@ impl RootHashCalculator { storage_calc.delete_storage_key[i], AppliedStorageOp { inserted_value: U256::ZERO, - revert_key: storage_calc.delete_keys[i].clone(), + revert_key: storage_calc.delete_keys[i], revert_value: Some(revert_value), }, ); @@ -639,7 +639,7 @@ impl RootHashCalculator { let ok = storage_calc.trie.try_add_proof_from_proof_store(&missing_node, &storage_calc.proof_store).expect("should be able to insert proofs from proof store when they are found (storage trie)"); assert!(ok, "proof is not added (storage trie)"); } else { - storage_calc.missing_nodes_requested.push(missing_node.clone()); + storage_calc.missing_nodes_requested.push(missing_node); fetcher.lock().add_missing_storage_node(&storage_calc.hashed_address, missing_node); } } @@ -733,7 +733,7 @@ impl RootHashCalculator { } } - let key = storage_calc.unpacked_hashed_address.clone(); + let key = storage_calc.unpacked_hashed_address; if let Some(trie_account) = trie_account { let value = alloy_rlp::encode(trie_account); self.account_trie.insert_keys.push(key); @@ -768,7 +768,7 @@ impl RootHashCalculator { for address in proof_targets { let storage_calc = self.get_account_storage(address); let storage_calc = storage_calc.lock(); - let key = storage_calc.unpacked_hashed_address.clone(); + let key = storage_calc.unpacked_hashed_address; self.account_trie.proof_keys.push(key); self.account_trie.proof_account_keys.push(*address); self.account_trie.proof_ok.push(false); @@ -834,7 +834,7 @@ impl RootHashCalculator { account_trie.insert_account_keys[i], AppliedAccountOp { inserted_value: Some(account_trie.insert_account_values[i]), - revert_key: account_trie.insert_keys[i].clone(), + revert_key: account_trie.insert_keys[i], revert_value, }, ); @@ -859,7 +859,7 @@ impl RootHashCalculator { account_trie.delete_account_keys[i], AppliedAccountOp { inserted_value: None, - revert_key: account_trie.delete_keys[i].clone(), + revert_key: account_trie.delete_keys[i], revert_value: Some(revert_value), }, ); @@ -921,9 +921,7 @@ impl RootHashCalculator { let ok = account_trie.trie.try_add_proof_from_proof_store(&missing_node, proof_store).expect("should be able to insert proofs from proof store when they are found (storage trie)"); assert!(ok, "proof is not added (storage trie)"); } else { - account_trie - .missing_nodes_requested - .push(missing_node.clone()); + account_trie.missing_nodes_requested.push(missing_node); fetcher.add_missing_account_node(missing_node); } } diff --git a/crates/eth-sparse-mpt/src/v2/trie/mod.rs b/crates/eth-sparse-mpt/src/v2/trie/mod.rs index 241202fab..28ea3f6e4 100644 --- a/crates/eth-sparse-mpt/src/v2/trie/mod.rs +++ b/crates/eth-sparse-mpt/src/v2/trie/mod.rs @@ -14,6 +14,16 @@ mod tests; use crate::utils::{encode_branch_node, encode_extension, encode_leaf, mismatch}; +/// Unpacks `nibbles` into `buf` (one nibble per byte) and returns the filled prefix as a slice. +#[inline] +fn unpack_nibbles<'a>(nibbles: &Nibbles, buf: &'a mut [u8; 64]) -> &'a [u8] { + let len = nibbles.len(); + for (i, nibble) in nibbles.iter().enumerate() { + buf[i] = nibble; + } + &buf[..len] +} + #[derive(Debug, Clone, Copy)] enum NodePtr { Local(usize), @@ -153,6 +163,12 @@ impl Trie { offset..offset + key.len() } + fn insert_key_nibbles(&mut self, key: &Nibbles) -> Range { + let offset = self.keys.len(); + self.keys.extend(key.iter()); + offset..offset + key.len() + } + fn create_branch_children(&mut self) -> usize { let idx = self.branch_node_children.len(); self.branch_node_children.push(Default::default()); @@ -199,7 +215,8 @@ impl Trie { nibbles_key: &Nibbles, insert_value: InsertValue<'_>, ) -> Result>, NodeNotFound> { - let ins_key = nibbles_key.as_slice(); + let mut ins_key_buf = [0u8; 64]; + let ins_key = unpack_nibbles(nibbles_key, &mut ins_key_buf); let mut current_node = 0; let mut path_walked = 0; @@ -210,7 +227,7 @@ impl Trie { let node = self .nodes .get(current_node) - .ok_or_else(|| NodeNotFound(nibbles_key.clone()))?; + .ok_or(NodeNotFound(*nibbles_key))?; self.hashed_nodes[current_node] = false; match node { DiffTrieNode::Branch { children } => { @@ -219,9 +236,7 @@ impl Trie { let n = ins_key[path_walked] as usize; path_walked += 1; if let Some(child_ptr) = self.branch_node_children[children][n] { - current_node = child_ptr - .as_local() - .ok_or_else(|| NodeNotFound(nibbles_key.clone()))?; + current_node = child_ptr.as_local().ok_or(NodeNotFound(*nibbles_key))?; continue; } else { let new_leaf_key = self.insert_key(&ins_key[path_walked..]); @@ -239,9 +254,7 @@ impl Trie { if ins_key[path_walked..].starts_with(&self.keys[key.clone()]) { path_walked += key.len(); - current_node = next_node - .as_local() - .ok_or_else(|| NodeNotFound(nibbles_key.clone()))?; + current_node = next_node.as_local().ok_or(NodeNotFound(*nibbles_key))?; continue; } @@ -377,7 +390,8 @@ impl Trie { &mut self, nibbles_key: &Nibbles, ) -> Result, DeletionError> { - let del_key = nibbles_key.as_slice(); + let mut del_key_buf = [0u8; 64]; + let del_key = unpack_nibbles(nibbles_key, &mut del_key_buf); let mut current_node = 0; let mut path_walked = 0; @@ -390,7 +404,7 @@ impl Trie { let node = self .nodes .get(current_node) - .ok_or_else(|| NodeNotFound(nibbles_key.clone()))?; + .ok_or(NodeNotFound(*nibbles_key))?; self.hashed_nodes[current_node] = false; match node { DiffTrieNode::Branch { children } => { @@ -406,9 +420,7 @@ impl Trie { path_walked += 1; if let Some(child_ptr) = self.branch_node_children[children][n as usize] { - current_node = child_ptr - .as_local() - .ok_or_else(|| NodeNotFound(nibbles_key.clone()))?; + current_node = child_ptr.as_local().ok_or(NodeNotFound(*nibbles_key))?; if self.branch_node_children[children] .iter() .filter(|c| c.is_some()) @@ -423,7 +435,7 @@ impl Trie { .unwrap(); let orphan_ptr = orphan_ptr.unwrap(); if orphan_ptr.is_remote() { - let mut orphan_path = Nibbles::with_capacity(path_walked); + let mut orphan_path = Nibbles::new(); orphan_path .extend_from_slice_unchecked(&del_key[..(path_walked - 1)]); orphan_path.push_unchecked(orphan_nibble as u8); @@ -442,9 +454,7 @@ impl Trie { if del_key[path_walked..].starts_with(&self.keys[key.clone()]) { self.walk_path.push((current_node, 0)); path_walked += key.len(); - current_node = next_node - .as_local() - .ok_or_else(|| NodeNotFound(nibbles_key.clone()))?; + current_node = next_node.as_local().ok_or(NodeNotFound(*nibbles_key))?; continue; } @@ -881,19 +891,21 @@ impl Trie { let mut current_node = 0; let mut path_walked = 0; + let mut target_key_buf = [0u8; 64]; + let target_path = unpack_nibbles(target_key, &mut target_key_buf); + loop { let node = self .nodes .get(current_node) - .ok_or_else(|| NodeNotFound(target_key.clone()))?; + .ok_or(NodeNotFound(*target_key))?; if !self.hashed_nodes[current_node] { return Err(ProofError::TrieIsDirty); } self.rlp_encode_node(current_node, &mut buf, proof_store); - let current_node_path = - Nibbles::from_nibbles_unchecked(&target_key.as_slice()[..path_walked]); + let current_node_path = target_key.slice_unchecked(0, path_walked); result.proof.push((current_node_path, buf.clone())); match node { @@ -904,13 +916,11 @@ impl Trie { let children = *children; - let n = target_key[path_walked]; + let n = target_path[path_walked]; path_walked += 1; if let Some(child_ptr) = self.branch_node_children[children][n as usize] { - current_node = child_ptr - .as_local() - .ok_or_else(|| NodeNotFound(target_key.clone()))?; + current_node = child_ptr.as_local().ok_or(NodeNotFound(*target_key))?; continue; } @@ -920,18 +930,16 @@ impl Trie { let key = key.clone(); let next_node = *next_node; - if target_key[path_walked..].starts_with(&self.keys[key.clone()]) { + if target_path[path_walked..].starts_with(&self.keys[key.clone()]) { path_walked += key.len(); - current_node = next_node - .as_local() - .ok_or_else(|| NodeNotFound(target_key.clone()))?; + current_node = next_node.as_local().ok_or(NodeNotFound(*target_key))?; continue; } break; } DiffTrieNode::Leaf { key, value } => { - if self.keys[key.clone()] == target_key[path_walked..] { + if self.keys[key.clone()] == target_path[path_walked..] { result.value = Some(self.values[value.clone()].to_vec()); } break; @@ -1044,13 +1052,13 @@ impl Trie { } ProofNode::Extension { key, child } => { let key = &proof_store.keys_guard()[*key]; - let key = self.insert_key(key); + let key = self.insert_key_nibbles(key); let next_node = NodePtr::Remote(*child); self.push_node(DiffTrieNode::Extension { key, next_node }); } ProofNode::Leaf { key, value } => { let key = &proof_store.keys_guard()[*key]; - let key = self.insert_key(key); + let key = self.insert_key_nibbles(key); let value = &proof_store.values_guard()[*value]; let value = self.copy_value(value); self.push_node(DiffTrieNode::Leaf { key, value }); @@ -1062,6 +1070,9 @@ impl Trie { return Ok(()); } + let mut path_buf = [0u8; 64]; + let path = unpack_nibbles(path, &mut path_buf); + let mut current_node = 0; let mut path_walked = 0; @@ -1131,14 +1142,14 @@ impl Trie { let new_node = match node { ProofNode::Leaf { key, value } => { let key = &proof_store.keys_guard()[*key]; - let key = self.insert_key(key); + let key = self.insert_key_nibbles(key); let value = &proof_store.values_guard()[*value]; let value = self.copy_value(value); self.push_node(DiffTrieNode::Leaf { key, value }) } ProofNode::Extension { key, child } => { let key = &proof_store.keys_guard()[*key]; - let key = self.insert_key(key); + let key = self.insert_key_nibbles(key); let next_node = NodePtr::Remote(*child); self.push_node(DiffTrieNode::Extension { key, next_node }) } diff --git a/crates/eth-sparse-mpt/src/v2/trie/tests.rs b/crates/eth-sparse-mpt/src/v2/trie/tests.rs index ca50155c7..46b05082a 100644 --- a/crates/eth-sparse-mpt/src/v2/trie/tests.rs +++ b/crates/eth-sparse-mpt/src/v2/trie/tests.rs @@ -103,7 +103,7 @@ fn verify_proof(key: &[u8], proof: Vec<(Nibbles, Vec)>) -> B256 { let nibble_key = Nibbles::unpack(key); let proof_store = ProofStore::default(); proof_store - .add_proof(nibble_key.clone(), proof) + .add_proof(nibble_key, proof) .expect("failed to add proof to proof store"); let mut trie = Trie::default(); let found = trie diff --git a/crates/eth-sparse-mpt/src/v_experimental/fetch.rs b/crates/eth-sparse-mpt/src/v_experimental/fetch.rs index 43f27fcaf..2e988b27e 100644 --- a/crates/eth-sparse-mpt/src/v_experimental/fetch.rs +++ b/crates/eth-sparse-mpt/src/v_experimental/fetch.rs @@ -1,9 +1,6 @@ use std::sync::Arc; -use crate::{ - utils::{convert_nibbles_to_reth_nybbles, convert_reth_nybbles_to_nibbles, HashMap}, - SparseTrieError, -}; +use crate::{utils::HashMap, SparseTrieError}; use alloy_primitives::map::B256Set; use parking_lot::Mutex; use rayon::prelude::*; @@ -39,12 +36,12 @@ impl MissingNodesFetcher { .storage_proof_targets .entry(*hashed_address) .or_default(); - entry.0.insert(pad_path(node.clone())); + entry.0.insert(pad_path(node)); entry.1.push(node); } pub fn add_missing_account_node(&mut self, node: Nibbles) { - self.account_proof_targets.push(pad_path(node.clone())); + self.account_proof_targets.push(pad_path(node)); self.account_proof_requested_nodes.push(node); } @@ -89,17 +86,13 @@ impl MissingNodesFetcher { .map_err(SparseTrieError::other)?; *fetched_nodes.lock() += requested_proofs.len(); for requested_proof in requested_proofs { - let proof_for_node = storge_multiproof.subtree.matching_nodes_sorted( - &convert_nibbles_to_reth_nybbles(requested_proof.clone()), - ); - let reth_proof_for_node = proof_for_node - .into_iter() - .map(|(k, v)| (convert_reth_nybbles_to_nibbles(k), v)) - .collect(); + let proof_for_node = storge_multiproof + .subtree + .matching_nodes_sorted(&requested_proof); let proof_store = shared_cache.account_proof_store_hashed_address(&hashed_address); proof_store - .add_proof(requested_proof, reth_proof_for_node) + .add_proof(requested_proof, proof_for_node) .map_err(SparseTrieError::other)?; } Ok(()) @@ -133,15 +126,11 @@ impl MissingNodesFetcher { for requested_node in self.account_proof_requested_nodes.drain(..) { let proof_for_node = multiproof .account_subtree - .matching_nodes_sorted(&convert_nibbles_to_reth_nybbles(requested_node.clone())); + .matching_nodes_sorted(&requested_node); - let reth_proof_for_node = proof_for_node - .into_iter() - .map(|(k, v)| (convert_reth_nybbles_to_nibbles(k), v)) - .collect(); shared_cache .account_trie - .add_proof(requested_node, reth_proof_for_node) + .add_proof(requested_node, proof_for_node) .map_err(SparseTrieError::other)?; } let fetched_nodes = *fetched_nodes.lock(); @@ -150,7 +139,9 @@ impl MissingNodesFetcher { } fn pad_path(mut path: Nibbles) -> B256 { - path.as_mut_vec_unchecked().resize(64, 0); + while path.len() < 64 { + path.push_unchecked(0); + } let mut res = B256::default(); path.pack_to(res.as_mut_slice()); res diff --git a/crates/eth-sparse-mpt/src/v_experimental/mod.rs b/crates/eth-sparse-mpt/src/v_experimental/mod.rs index 612c0233f..ec310a482 100644 --- a/crates/eth-sparse-mpt/src/v_experimental/mod.rs +++ b/crates/eth-sparse-mpt/src/v_experimental/mod.rs @@ -449,7 +449,7 @@ impl RootHashCalculator { { fetcher .lock() - .add_missing_account_node(storage_calc.unpacked_hashed_address.clone()); + .add_missing_account_node(storage_calc.unpacked_hashed_address); } if storage_calc.insert_keys.is_empty() && storage_calc.delete_keys.is_empty() { @@ -469,7 +469,7 @@ impl RootHashCalculator { if !storage_calc.proof_store.has_proof(node) { fetcher .lock() - .add_missing_storage_node(&storage_calc.hashed_address, node.clone()); + .add_missing_storage_node(&storage_calc.hashed_address, *node); } } }); @@ -552,7 +552,7 @@ impl RootHashCalculator { storage_calc.insert_storage_key[i], AppliedStorageOp { inserted_value: storage_calc.insert_storage_value[i], - revert_key: storage_calc.insert_keys[i].clone(), + revert_key: storage_calc.insert_keys[i], revert_value, }, ); @@ -577,7 +577,7 @@ impl RootHashCalculator { storage_calc.delete_storage_key[i], AppliedStorageOp { inserted_value: U256::ZERO, - revert_key: storage_calc.delete_keys[i].clone(), + revert_key: storage_calc.delete_keys[i], revert_value: Some(revert_value), }, ); @@ -642,7 +642,7 @@ impl RootHashCalculator { let ok = storage_calc.trie.try_add_proof_from_proof_store(&missing_node, &storage_calc.proof_store).expect("should be able to insert proofs from proof store when they are found (storage trie)"); assert!(ok, "proof is not added (storage trie)"); } else { - storage_calc.missing_nodes_requested.push(missing_node.clone()); + storage_calc.missing_nodes_requested.push(missing_node); fetcher.lock().add_missing_storage_node(&storage_calc.hashed_address, missing_node); } } @@ -736,7 +736,7 @@ impl RootHashCalculator { } } - let key = storage_calc.unpacked_hashed_address.clone(); + let key = storage_calc.unpacked_hashed_address; if let Some(trie_account) = trie_account { let value = alloy_rlp::encode(trie_account); self.account_trie.insert_keys.push(key); @@ -771,7 +771,7 @@ impl RootHashCalculator { for address in proof_targets { let storage_calc = self.get_account_storage(address); let storage_calc = storage_calc.lock(); - let key = storage_calc.unpacked_hashed_address.clone(); + let key = storage_calc.unpacked_hashed_address; self.account_trie.proof_keys.push(key); self.account_trie.proof_account_keys.push(*address); self.account_trie.proof_ok.push(false); @@ -837,7 +837,7 @@ impl RootHashCalculator { account_trie.insert_account_keys[i], AppliedAccountOp { inserted_value: Some(account_trie.insert_account_values[i]), - revert_key: account_trie.insert_keys[i].clone(), + revert_key: account_trie.insert_keys[i], revert_value, }, ); @@ -862,7 +862,7 @@ impl RootHashCalculator { account_trie.delete_account_keys[i], AppliedAccountOp { inserted_value: None, - revert_key: account_trie.delete_keys[i].clone(), + revert_key: account_trie.delete_keys[i], revert_value: Some(revert_value), }, ); @@ -924,9 +924,7 @@ impl RootHashCalculator { let ok = account_trie.trie.try_add_proof_from_proof_store(&missing_node, proof_store).expect("should be able to insert proofs from proof store when they are found (storage trie)"); assert!(ok, "proof is not added (storage trie)"); } else { - account_trie - .missing_nodes_requested - .push(missing_node.clone()); + account_trie.missing_nodes_requested.push(missing_node); fetcher.add_missing_account_node(missing_node); } } diff --git a/crates/eth-sparse-mpt/src/v_experimental/trie/mod.rs b/crates/eth-sparse-mpt/src/v_experimental/trie/mod.rs index 0a25fcd18..aadee785f 100644 --- a/crates/eth-sparse-mpt/src/v_experimental/trie/mod.rs +++ b/crates/eth-sparse-mpt/src/v_experimental/trie/mod.rs @@ -14,6 +14,16 @@ mod tests; use crate::utils::{encode_branch_node, encode_extension, encode_leaf, mismatch}; +/// Copies nibbles (one nibble per byte) into the provided stack buffer +/// and returns the filled prefix as a slice. +#[inline] +fn nibbles_to_buf<'a>(nibbles: &Nibbles, buf: &'a mut [u8; 64]) -> &'a [u8] { + for (i, nibble) in nibbles.iter().enumerate() { + buf[i] = nibble; + } + &buf[..nibbles.len()] +} + #[derive(Debug, Clone, Copy)] enum NodePtr { Local(usize), @@ -173,6 +183,12 @@ impl Trie { offset..offset + key.len() } + fn insert_key_nibbles(&mut self, key: &Nibbles) -> Range { + let offset = self.keys.len(); + self.keys.extend(key.iter()); + offset..offset + key.len() + } + fn create_branch_children(&mut self) -> usize { let idx = self.branch_node_children.len(); self.branch_node_children.push(Default::default()); @@ -219,7 +235,8 @@ impl Trie { nibbles_key: &Nibbles, insert_value: InsertValue<'_>, ) -> Result>, NodeNotFound> { - let ins_key = nibbles_key.as_slice(); + let mut ins_key_buf = [0u8; 64]; + let ins_key = nibbles_to_buf(nibbles_key, &mut ins_key_buf); let mut current_node = 0; let mut path_walked = 0; @@ -230,7 +247,7 @@ impl Trie { let node = self .nodes .get(current_node) - .ok_or_else(|| NodeNotFound(nibbles_key.clone()))?; + .ok_or(NodeNotFound(*nibbles_key))?; self.hashed_nodes[current_node] = false; match node { DiffTrieNode::Branch { children } => { @@ -239,9 +256,7 @@ impl Trie { let n = ins_key[path_walked] as usize; path_walked += 1; if let Some(child_ptr) = self.branch_node_children[children][n] { - current_node = child_ptr - .as_local() - .ok_or_else(|| NodeNotFound(nibbles_key.clone()))?; + current_node = child_ptr.as_local().ok_or(NodeNotFound(*nibbles_key))?; continue; } else { let new_leaf_key = self.insert_key(&ins_key[path_walked..]); @@ -259,9 +274,7 @@ impl Trie { if ins_key[path_walked..].starts_with(&self.keys[key.clone()]) { path_walked += key.len(); - current_node = next_node - .as_local() - .ok_or_else(|| NodeNotFound(nibbles_key.clone()))?; + current_node = next_node.as_local().ok_or(NodeNotFound(*nibbles_key))?; continue; } @@ -397,7 +410,8 @@ impl Trie { &mut self, nibbles_key: &Nibbles, ) -> Result, DeletionError> { - let del_key = nibbles_key.as_slice(); + let mut del_key_buf = [0u8; 64]; + let del_key = nibbles_to_buf(nibbles_key, &mut del_key_buf); let mut current_node = 0; let mut path_walked = 0; @@ -410,7 +424,7 @@ impl Trie { let node = self .nodes .get(current_node) - .ok_or_else(|| NodeNotFound(nibbles_key.clone()))?; + .ok_or(NodeNotFound(*nibbles_key))?; self.hashed_nodes[current_node] = false; match node { DiffTrieNode::Branch { children } => { @@ -426,9 +440,7 @@ impl Trie { path_walked += 1; if let Some(child_ptr) = self.branch_node_children[children][n as usize] { - current_node = child_ptr - .as_local() - .ok_or_else(|| NodeNotFound(nibbles_key.clone()))?; + current_node = child_ptr.as_local().ok_or(NodeNotFound(*nibbles_key))?; if self.branch_node_children[children] .iter() .filter(|c| c.is_some()) @@ -443,7 +455,7 @@ impl Trie { .unwrap(); let orphan_ptr = orphan_ptr.unwrap(); if orphan_ptr.is_remote() { - let mut orphan_path = Nibbles::with_capacity(path_walked); + let mut orphan_path = Nibbles::new(); orphan_path .extend_from_slice_unchecked(&del_key[..(path_walked - 1)]); orphan_path.push_unchecked(orphan_nibble as u8); @@ -462,9 +474,7 @@ impl Trie { if del_key[path_walked..].starts_with(&self.keys[key.clone()]) { self.walk_path.push((current_node, 0)); path_walked += key.len(); - current_node = next_node - .as_local() - .ok_or_else(|| NodeNotFound(nibbles_key.clone()))?; + current_node = next_node.as_local().ok_or(NodeNotFound(*nibbles_key))?; continue; } @@ -898,6 +908,9 @@ impl Trie { value: None, }; + let mut target_key_buf = [0u8; 64]; + let target_key_slice = nibbles_to_buf(target_key, &mut target_key_buf); + let mut current_node = 0; let mut path_walked = 0; @@ -905,15 +918,14 @@ impl Trie { let node = self .nodes .get(current_node) - .ok_or_else(|| NodeNotFound(target_key.clone()))?; + .ok_or(NodeNotFound(*target_key))?; if !self.hashed_nodes[current_node] { return Err(ProofError::TrieIsDirty); } self.rlp_encode_node(current_node, &mut buf, proof_store); - let current_node_path = - Nibbles::from_nibbles_unchecked(&target_key.as_slice()[..path_walked]); + let current_node_path = target_key.slice_unchecked(0, path_walked); result.proof.push((current_node_path, buf.clone())); match node { @@ -924,13 +936,11 @@ impl Trie { let children = *children; - let n = target_key[path_walked]; + let n = target_key_slice[path_walked]; path_walked += 1; if let Some(child_ptr) = self.branch_node_children[children][n as usize] { - current_node = child_ptr - .as_local() - .ok_or_else(|| NodeNotFound(target_key.clone()))?; + current_node = child_ptr.as_local().ok_or(NodeNotFound(*target_key))?; continue; } @@ -940,18 +950,16 @@ impl Trie { let key = key.clone(); let next_node = *next_node; - if target_key[path_walked..].starts_with(&self.keys[key.clone()]) { + if target_key_slice[path_walked..].starts_with(&self.keys[key.clone()]) { path_walked += key.len(); - current_node = next_node - .as_local() - .ok_or_else(|| NodeNotFound(target_key.clone()))?; + current_node = next_node.as_local().ok_or(NodeNotFound(*target_key))?; continue; } break; } DiffTrieNode::Leaf { key, value } => { - if self.keys[key.clone()] == target_key[path_walked..] { + if self.keys[key.clone()] == target_key_slice[path_walked..] { result.value = Some(self.values[value.clone()].to_vec()); } break; @@ -1063,14 +1071,14 @@ impl Trie { }); } ProofNode::Extension { key, child } => { - let key = &proof_store.keys_guard()[*key]; - let key = self.insert_key(key); + let key = proof_store.keys_guard()[*key]; + let key = self.insert_key_nibbles(&key); let next_node = NodePtr::Remote(*child); self.push_node(DiffTrieNode::Extension { key, next_node }); } ProofNode::Leaf { key, value } => { - let key = &proof_store.keys_guard()[*key]; - let key = self.insert_key(key); + let key = proof_store.keys_guard()[*key]; + let key = self.insert_key_nibbles(&key); let value = &proof_store.values_guard()[*value]; let value = self.copy_value(value); self.push_node(DiffTrieNode::Leaf { key, value }); @@ -1088,19 +1096,22 @@ impl Trie { let mut parent_ptr = None; let mut parent_nibble = 0; + let mut path_buf = [0u8; 64]; + let path_slice = nibbles_to_buf(path, &mut path_buf); + loop { let node = self .nodes .get(current_node) - .ok_or_else(|| NodeNotFound::new(&path[..path_walked]))?; + .ok_or_else(|| NodeNotFound::new(&path_slice[..path_walked]))?; self.hashed_nodes[current_node] = false; match node { DiffTrieNode::Branch { children } => { let children = *children; - let n = path[path_walked] as usize; + let n = path_slice[path_walked] as usize; path_walked += 1; - if path[path_walked..].is_empty() { + if path_slice[path_walked..].is_empty() { parent_ptr = self.branch_node_children[children][n]; parent_nibble = n; break; @@ -1108,27 +1119,27 @@ impl Trie { if let Some(child_ptr) = self.branch_node_children[children][n] { current_node = child_ptr .as_local() - .ok_or_else(|| NodeNotFound::new(&path[..path_walked]))?; + .ok_or_else(|| NodeNotFound::new(&path_slice[..path_walked]))?; continue; } else { - return Err(NodeNotFound::new(&path[..path_walked])); + return Err(NodeNotFound::new(&path_slice[..path_walked])); } } DiffTrieNode::Extension { key, next_node } => { let key = key.clone(); let next_node = *next_node; - if path[path_walked..].starts_with(&self.keys[key.clone()]) { + if path_slice[path_walked..].starts_with(&self.keys[key.clone()]) { path_walked += key.len(); - if path[path_walked..].is_empty() { + if path_slice[path_walked..].is_empty() { parent_ptr = Some(next_node); parent_nibble = 0; break; } - current_node = next_node.as_local().ok_or_else(|| { - NodeNotFound(Nibbles::from_nibbles_unchecked(&path[..path_walked])) - })?; + current_node = next_node + .as_local() + .ok_or_else(|| NodeNotFound::new(&path_slice[..path_walked]))?; continue; } } @@ -1150,15 +1161,15 @@ impl Trie { let new_node = match node { ProofNode::Leaf { key, value } => { - let key = &proof_store.keys_guard()[*key]; - let key = self.insert_key(key); + let key = proof_store.keys_guard()[*key]; + let key = self.insert_key_nibbles(&key); let value = &proof_store.values_guard()[*value]; let value = self.copy_value(value); self.push_node(DiffTrieNode::Leaf { key, value }) } ProofNode::Extension { key, child } => { - let key = &proof_store.keys_guard()[*key]; - let key = self.insert_key(key); + let key = proof_store.keys_guard()[*key]; + let key = self.insert_key_nibbles(&key); let next_node = NodePtr::Remote(*child); self.push_node(DiffTrieNode::Extension { key, next_node }) } diff --git a/crates/eth-sparse-mpt/src/v_experimental/trie/tests.rs b/crates/eth-sparse-mpt/src/v_experimental/trie/tests.rs index ca50155c7..46b05082a 100644 --- a/crates/eth-sparse-mpt/src/v_experimental/trie/tests.rs +++ b/crates/eth-sparse-mpt/src/v_experimental/trie/tests.rs @@ -103,7 +103,7 @@ fn verify_proof(key: &[u8], proof: Vec<(Nibbles, Vec)>) -> B256 { let nibble_key = Nibbles::unpack(key); let proof_store = ProofStore::default(); proof_store - .add_proof(nibble_key.clone(), proof) + .add_proof(nibble_key, proof) .expect("failed to add proof to proof store"); let mut trie = Trie::default(); let found = trie diff --git a/crates/eth-sparse-mpt/test_data/failure_case_0.json.gz b/crates/eth-sparse-mpt/test_data/failure_case_0.json.gz index b4b6ed500..66f8bc9f6 100644 Binary files a/crates/eth-sparse-mpt/test_data/failure_case_0.json.gz and b/crates/eth-sparse-mpt/test_data/failure_case_0.json.gz differ diff --git a/crates/eth-sparse-mpt/test_data/multiproof_0.json.gz b/crates/eth-sparse-mpt/test_data/multiproof_0.json.gz index c344528eb..4c18b55b3 100644 Binary files a/crates/eth-sparse-mpt/test_data/multiproof_0.json.gz and b/crates/eth-sparse-mpt/test_data/multiproof_0.json.gz differ diff --git a/crates/eth-sparse-mpt/test_data/multiproof_1.json.gz b/crates/eth-sparse-mpt/test_data/multiproof_1.json.gz index edb9d658f..2d0535d3b 100644 Binary files a/crates/eth-sparse-mpt/test_data/multiproof_1.json.gz and b/crates/eth-sparse-mpt/test_data/multiproof_1.json.gz differ diff --git a/crates/eth-sparse-mpt/test_data/prepared_tries/example0/tries.json.gz b/crates/eth-sparse-mpt/test_data/prepared_tries/example0/tries.json.gz index 9ee812ec7..ade749990 100644 Binary files a/crates/eth-sparse-mpt/test_data/prepared_tries/example0/tries.json.gz and b/crates/eth-sparse-mpt/test_data/prepared_tries/example0/tries.json.gz differ diff --git a/crates/eth-sparse-mpt/test_data/prepared_tries/example1/tries.json.gz b/crates/eth-sparse-mpt/test_data/prepared_tries/example1/tries.json.gz index edc5fd6b4..6a82211ab 100644 Binary files a/crates/eth-sparse-mpt/test_data/prepared_tries/example1/tries.json.gz and b/crates/eth-sparse-mpt/test_data/prepared_tries/example1/tries.json.gz differ diff --git a/crates/eth-sparse-mpt/test_data/prepared_tries/example2/tries.json.gz b/crates/eth-sparse-mpt/test_data/prepared_tries/example2/tries.json.gz index 1ef8f8450..07747c59b 100644 Binary files a/crates/eth-sparse-mpt/test_data/prepared_tries/example2/tries.json.gz and b/crates/eth-sparse-mpt/test_data/prepared_tries/example2/tries.json.gz differ diff --git a/crates/eth-sparse-mpt/test_data/prepared_tries/example3/tries.json.gz b/crates/eth-sparse-mpt/test_data/prepared_tries/example3/tries.json.gz index d3d4668fc..e48e0a8ac 100644 Binary files a/crates/eth-sparse-mpt/test_data/prepared_tries/example3/tries.json.gz and b/crates/eth-sparse-mpt/test_data/prepared_tries/example3/tries.json.gz differ diff --git a/crates/eth-sparse-mpt/test_data/prepared_tries/example4/tries.json.gz b/crates/eth-sparse-mpt/test_data/prepared_tries/example4/tries.json.gz index 8f5666964..8f7f60829 100644 Binary files a/crates/eth-sparse-mpt/test_data/prepared_tries/example4/tries.json.gz and b/crates/eth-sparse-mpt/test_data/prepared_tries/example4/tries.json.gz differ diff --git a/crates/eth-sparse-mpt/test_data/prepared_tries/example5/tries.json.gz b/crates/eth-sparse-mpt/test_data/prepared_tries/example5/tries.json.gz index 391435e91..d59e8cde4 100644 Binary files a/crates/eth-sparse-mpt/test_data/prepared_tries/example5/tries.json.gz and b/crates/eth-sparse-mpt/test_data/prepared_tries/example5/tries.json.gz differ diff --git a/crates/eth-sparse-mpt/test_data/prepared_tries/example6/tries.json.gz b/crates/eth-sparse-mpt/test_data/prepared_tries/example6/tries.json.gz index d76838fe9..cd1de2323 100644 Binary files a/crates/eth-sparse-mpt/test_data/prepared_tries/example6/tries.json.gz and b/crates/eth-sparse-mpt/test_data/prepared_tries/example6/tries.json.gz differ diff --git a/crates/eth-sparse-mpt/test_data/prepared_tries/example7/tries.json.gz b/crates/eth-sparse-mpt/test_data/prepared_tries/example7/tries.json.gz index d3d4668fc..b4fa7cd50 100644 Binary files a/crates/eth-sparse-mpt/test_data/prepared_tries/example7/tries.json.gz and b/crates/eth-sparse-mpt/test_data/prepared_tries/example7/tries.json.gz differ diff --git a/crates/rbuilder-operator/src/flashbots_config.rs b/crates/rbuilder-operator/src/flashbots_config.rs index cab7818f4..5fdc4748c 100644 --- a/crates/rbuilder-operator/src/flashbots_config.rs +++ b/crates/rbuilder-operator/src/flashbots_config.rs @@ -428,8 +428,9 @@ impl FlashbotsConfig { .with_password(config.password.value()?) .with_validation(false); // CRITICAL for U256 serialization. - let task_manager = rbuilder_utils::tasks::TaskManager::current(); - let task_executor = task_manager.executor(); + let task_executor = rbuilder_utils::tasks::Runtime::with_existing_handle( + tokio::runtime::Handle::current(), + )?; let disk_backup = DiskBackup::new( DiskBackupConfig::new() @@ -441,10 +442,11 @@ impl FlashbotsConfig { ) .expect("could not create disk backup"); - // Task to forward the abort to the task_manager. + // Task to forward the abort to the task runtime. + let shutdown_executor = task_executor.clone(); tokio::spawn(async move { abort_token.cancelled().await; - task_manager.graceful_shutdown(); + shutdown_executor.graceful_shutdown(); }); Ok((client, task_executor, disk_backup)) diff --git a/crates/rbuilder-utils/Cargo.toml b/crates/rbuilder-utils/Cargo.toml index 497bddf35..bf3985e4a 100644 --- a/crates/rbuilder-utils/Cargo.toml +++ b/crates/rbuilder-utils/Cargo.toml @@ -9,7 +9,7 @@ repository.workspace = true exclude.workspace = true [dependencies] -reth-tasks = { git = "https://github.com/paradigmxyz/reth", rev = "9c30bf7af5e0d45deaf5917375c9922c16654b28" } +reth-tasks.workspace = true # misc tracing.workspace = true diff --git a/crates/rbuilder-utils/src/clickhouse/backup/mod.rs b/crates/rbuilder-utils/src/clickhouse/backup/mod.rs index a89138033..e10a2efbd 100644 --- a/crates/rbuilder-utils/src/clickhouse/backup/mod.rs +++ b/crates/rbuilder-utils/src/clickhouse/backup/mod.rs @@ -268,7 +268,7 @@ impl DiskBackup { config, }; - task_executor.spawn({ + task_executor.spawn_task({ let disk_backup: Self = disk_backup.clone(); async move { disk_backup.flush_routine().await; diff --git a/crates/rbuilder/Cargo.toml b/crates/rbuilder/Cargo.toml index 268a7b711..270abb02f 100644 --- a/crates/rbuilder/Cargo.toml +++ b/crates/rbuilder/Cargo.toml @@ -29,6 +29,7 @@ reth-errors.workspace = true reth-payload-builder.workspace = true reth-trie.workspace = true reth-trie-parallel.workspace = true +reth-trie-db.workspace = true reth-node-api.workspace = true reth-node-core.workspace = true reth-primitives.workspace = true diff --git a/crates/rbuilder/benches/benchmarks/mev_boost.rs b/crates/rbuilder/benches/benchmarks/mev_boost.rs index 9a0f93848..fc65804f9 100644 --- a/crates/rbuilder/benches/benchmarks/mev_boost.rs +++ b/crates/rbuilder/benches/benchmarks/mev_boost.rs @@ -1,12 +1,15 @@ use alloy_consensus::{Block, Header}; -use alloy_eips::{eip4844::BlobTransactionSidecar, eip7594::BlobTransactionSidecarVariant}; +use alloy_eips::{ + eip4844::{Blob, BlobTransactionSidecar}, + eip7594::BlobTransactionSidecarVariant, +}; +use alloy_primitives::hex::FromHex; use alloy_primitives::U256; use alloy_rpc_types_beacon::relay::SubmitBlockRequest as AlloySubmitBlockRequest; use alloy_rpc_types_beacon::BlsPublicKey; use criterion::{criterion_group, Criterion}; use rbuilder::mev_boost::{rpc::TestDataGenerator, sign_block_for_relay, BLSBlockSigner}; use reth::primitives::SealedBlock; -use reth_primitives::kzg::Blob; use ssz::Encode; use std::{fs, path::PathBuf, sync::Arc}; diff --git a/crates/rbuilder/src/backtest/restore_landed_orders/resim_landed_block.rs b/crates/rbuilder/src/backtest/restore_landed_orders/resim_landed_block.rs index 812b79d4c..eb186a9a1 100644 --- a/crates/rbuilder/src/backtest/restore_landed_orders/resim_landed_block.rs +++ b/crates/rbuilder/src/backtest/restore_landed_orders/resim_landed_block.rs @@ -1,3 +1,4 @@ +use crate::provider::{StateProviderArc, SyncStateProvider}; use crate::{ building::{ cached_reads::CachedDB, tracers::AccumulatorSimulationTracer, BlockBuildingContext, @@ -16,7 +17,6 @@ use eyre::Context; use rbuilder_primitives::evm_inspector::SlotKey; use reth_chainspec::ChainSpec; use reth_primitives::{Receipt, Recovered, TransactionSigned}; -use reth_provider::StateProvider; use std::sync::Arc; #[derive(Debug)] @@ -69,8 +69,8 @@ where let mut local_ctx = ThreadBlockBuildingContext::default(); - let state_provider: Arc = - Arc::from(provider.history_by_block_hash(ctx.attributes.parent)?); + let state_provider: StateProviderArc = + SyncStateProvider::new_arc(provider.history_by_block_hash(ctx.attributes.parent)?); let cached = CachedDB::new(state_provider, ctx.shared_cached_reads.clone()); let mut partial_block = PartialBlock::new(true); let mut state = BlockState::new(cached); diff --git a/crates/rbuilder/src/bin/debug-bench-machine.rs b/crates/rbuilder/src/bin/debug-bench-machine.rs index 697325976..0489f7e6e 100644 --- a/crates/rbuilder/src/bin/debug-bench-machine.rs +++ b/crates/rbuilder/src/bin/debug-bench-machine.rs @@ -16,6 +16,7 @@ use rbuilder::{ }, live_builder::{cli::LiveBuilderConfig, config::Config}, provider::StateProviderFactory, + provider::SyncStateProvider, utils::{ extract_onchain_block_txs, find_suggested_fee_recipient, http_provider, mevblocker::get_mevblocker_price, Signer, @@ -24,7 +25,6 @@ use rbuilder::{ use rbuilder_config::load_toml_config; use rbuilder_primitives::mev_boost::SubmitBlockRequest; use reth_primitives_traits::SignerRecoverable; -use reth_provider::StateProvider; use std::{path::PathBuf, sync::Arc, time::Instant}; use tracing::{debug, info}; @@ -104,7 +104,7 @@ async fn main() -> eyre::Result<()> { mev_blocker_price, ); - let state_provider = Arc::::from( + let state_provider = SyncStateProvider::new_arc( provider_factory .provider_factory_unchecked() .history_by_block_number(last_block)?, diff --git a/crates/rbuilder/src/bin/run-bundle-on-prefix.rs b/crates/rbuilder/src/bin/run-bundle-on-prefix.rs index d9f5b964c..ccc388451 100644 --- a/crates/rbuilder/src/bin/run-bundle-on-prefix.rs +++ b/crates/rbuilder/src/bin/run-bundle-on-prefix.rs @@ -20,7 +20,7 @@ use rbuilder::{ OrderPriority, ThreadBlockBuildingContext, }, live_builder::{cli::LiveBuilderConfig, config::Config}, - provider::StateProviderFactory, + provider::{StateProviderFactory, SyncStateProvider}, utils::{extract_onchain_block_txs, find_suggested_fee_recipient}, }; use rbuilder_config::load_toml_config; @@ -156,9 +156,8 @@ impl LandedBlockInfo { .config .base_config() .create_reth_provider_factory(true)?; - let block_state = provider - .history_by_block_hash(ctx.attributes.parent)? - .into(); + let block_state = + SyncStateProvider::new_arc(provider.history_by_block_hash(ctx.attributes.parent)?); let order_statistics = OrderStatistics::new(); Ok(BlockBuildingHelperFromProvider::new( BuiltBlockId::ZERO, diff --git a/crates/rbuilder/src/building/builders/block_building_helper.rs b/crates/rbuilder/src/building/builders/block_building_helper.rs index 8e967fe3b..6c252f0ca 100644 --- a/crates/rbuilder/src/building/builders/block_building_helper.rs +++ b/crates/rbuilder/src/building/builders/block_building_helper.rs @@ -1,8 +1,7 @@ +use crate::provider::StateProviderArc; use alloy_primitives::{utils::format_ether, Address, TxHash, I256, U256}; -use reth_provider::StateProvider; use std::{ cmp::max, - sync::Arc, time::{Duration, Instant}, }; use time::OffsetDateTime; @@ -215,7 +214,7 @@ impl BlockBuildingHelperFromProvider { pub fn new( built_block_id: BuiltBlockId, next_journal_sequence_number: JournalSequenceNumber, - state_provider: Arc, + state_provider: StateProviderArc, building_ctx: BlockBuildingContext, builder_name: String, discard_txs: bool, @@ -251,7 +250,7 @@ impl< pub fn new_with_execution_tracer( built_block_id: BuiltBlockId, next_journal_sequence_number: JournalSequenceNumber, - state_provider: Arc, + state_provider: StateProviderArc, building_ctx: BlockBuildingContext, builder_name: String, discard_txs: bool, diff --git a/crates/rbuilder/src/building/builders/ordering_builder.rs b/crates/rbuilder/src/building/builders/ordering_builder.rs index a44a30379..96b26b026 100644 --- a/crates/rbuilder/src/building/builders/ordering_builder.rs +++ b/crates/rbuilder/src/building/builders/ordering_builder.rs @@ -5,6 +5,7 @@ //! The described algorithm is ran continuously adding new SimulatedOrders (they arrive on real time!) on each iteration until we run out of time (slot ends). //! Sorting criteria are described on [`Sorting`]. //! For some more details see [`OrderingBuilderConfig`] +use crate::provider::{StateProviderArc, SyncStateProvider}; use crate::{ building::{ block_orders_from_sim_orders, @@ -32,7 +33,6 @@ use ahash::{HashMap, HashSet}; use alloy_primitives::I256; use derivative::Derivative; use rbuilder_primitives::{AccountNonce, OrderId, SimValue, SimulatedOrder}; -use reth_provider::StateProvider; use serde::Deserialize; use std::{ marker::PhantomData, @@ -95,11 +95,11 @@ pub fn run_ordering_builder( { let payload_id = input.ctx.payload_id; - let block_state: Arc = match input + let block_state: StateProviderArc = match input .provider .history_by_block_hash(input.ctx.attributes.parent) { - Ok(state) => Arc::from(state), + Ok(state) => SyncStateProvider::new_arc(state), Err(err) => { error!( ?err, @@ -191,7 +191,7 @@ where block_orders_from_sim_orders::(input.sim_orders, &state_provider)?; let mut local_ctx = ThreadBlockBuildingContext::default(); let mut builder = OrderingBuilderContext::new( - Arc::from(state_provider), + SyncStateProvider::new_arc(state_provider), input.builder_name, input.ctx.clone(), ordering_config, @@ -220,7 +220,7 @@ where #[derivative(Debug)] pub struct OrderingBuilderContext { #[derivative(Debug = "ignore")] - state: Arc, + state: StateProviderArc, builder_name: String, ctx: BlockBuildingContext, config: OrderingBuilderConfig, @@ -238,7 +238,7 @@ pub struct OrderingBuilderContext { impl OrderingBuilderContext { pub fn new( - state: Arc, + state: StateProviderArc, builder_name: String, ctx: BlockBuildingContext, config: OrderingBuilderConfig, diff --git a/crates/rbuilder/src/building/builders/parallel_builder/block_building_result_assembler.rs b/crates/rbuilder/src/building/builders/parallel_builder/block_building_result_assembler.rs index ef589c4ea..228991e0d 100644 --- a/crates/rbuilder/src/building/builders/parallel_builder/block_building_result_assembler.rs +++ b/crates/rbuilder/src/building/builders/parallel_builder/block_building_result_assembler.rs @@ -2,9 +2,9 @@ use super::{ results_aggregator::BestResults, ConflictGroup, GroupId, ParallelBuilderConfig, ResolutionResult, }; +use crate::provider::StateProviderArc; use ahash::HashMap; use alloy_primitives::utils::format_ether; -use reth_provider::StateProvider; use std::{ sync::Arc, time::{Duration, Instant}, @@ -31,7 +31,7 @@ use rbuilder_primitives::order_statistics::OrderStatistics; /// Assembles block building results from the best orderings of order groups. pub struct BlockBuildingResultAssembler { - state: Arc, + state: StateProviderArc, ctx: BlockBuildingContext, pub local_ctx: ThreadBlockBuildingContext, cancellation_token: CancellationToken, @@ -58,7 +58,7 @@ impl BlockBuildingResultAssembler { pub fn new( config: &ParallelBuilderConfig, best_results: Arc, - state: Arc, + state: StateProviderArc, ctx: BlockBuildingContext, cancellation_token: CancellationToken, builder_name: String, diff --git a/crates/rbuilder/src/building/builders/parallel_builder/conflict_resolvers.rs b/crates/rbuilder/src/building/builders/parallel_builder/conflict_resolvers.rs index f15d6896f..1931a0ca3 100644 --- a/crates/rbuilder/src/building/builders/parallel_builder/conflict_resolvers.rs +++ b/crates/rbuilder/src/building/builders/parallel_builder/conflict_resolvers.rs @@ -1,10 +1,10 @@ +use crate::provider::StateProviderArc; use ahash::HashMap; use alloy_primitives::{Address, U256}; use derivative::Derivative; use eyre::Result; use itertools::Itertools; use rand::{seq::SliceRandom, SeedableRng}; -use reth::providers::StateProvider; use std::sync::Arc; use tokio_util::sync::CancellationToken; use tracing::trace; @@ -26,7 +26,7 @@ use rbuilder_primitives::{OrderId, SimulatedOrder}; #[derivative(Debug)] pub struct ResolverContext { #[derivative(Debug = "ignore")] - pub state: Arc, + pub state: StateProviderArc, pub ctx: BlockBuildingContext, pub cancellation_token: CancellationToken, pub simulation_cache: Arc, @@ -43,7 +43,7 @@ impl ResolverContext { /// * `cache` - Optional cached reads for optimization. /// * `simulation_cache` - Shared cache for simulation results. pub fn new( - state: Arc, + state: StateProviderArc, ctx: BlockBuildingContext, cancellation_token: CancellationToken, simulation_cache: Arc, @@ -126,7 +126,7 @@ impl ResolverContext { &mut self, sequence_of_orders: Vec, task: &ConflictTask, - state_provider: Arc, + state_provider: StateProviderArc, ) -> Result<(ResolutionResult, BlockState)> { // @todo actually reuse it for the duration of the block let mut local_ctx = ThreadBlockBuildingContext::default(); @@ -284,10 +284,7 @@ impl ResolverContext { } /// Initializes the block state, using a cached state if available. - fn initialize_block_state( - &mut self, - state_provider: Arc, - ) -> BlockState { + fn initialize_block_state(&mut self, state_provider: StateProviderArc) -> BlockState { let cached = CachedDB::new(state_provider, self.ctx.shared_cached_reads.clone()); BlockState::new(cached) } diff --git a/crates/rbuilder/src/building/builders/parallel_builder/conflict_resolving_pool.rs b/crates/rbuilder/src/building/builders/parallel_builder/conflict_resolving_pool.rs index 396ab75ea..ce274a4d5 100644 --- a/crates/rbuilder/src/building/builders/parallel_builder/conflict_resolving_pool.rs +++ b/crates/rbuilder/src/building/builders/parallel_builder/conflict_resolving_pool.rs @@ -1,7 +1,7 @@ +use crate::provider::{StateProviderArc, SyncStateProvider}; use alloy_primitives::utils::format_ether; use crossbeam_queue::SegQueue; use eyre::Result; -use reth_provider::StateProvider; use std::{ sync::{mpsc as std_mpsc, Arc}, thread, @@ -65,10 +65,10 @@ where let simulation_cache = self.simulation_cache.clone(); let ctx = self.ctx.clone(); - let block_state: Arc = self - .provider - .history_by_block_hash(self.ctx.attributes.parent)? - .into(); + let block_state: StateProviderArc = SyncStateProvider::new_arc( + self.provider + .history_by_block_hash(self.ctx.attributes.parent)?, + ); thread::spawn(move || { while !cancellation_token.is_cancelled() { if let Some(task) = task_queue.pop() { @@ -112,7 +112,7 @@ where fn process_task( task: ConflictTask, ctx: &BlockBuildingContext, - state: Arc, + state: StateProviderArc, cancellation_token: CancellationToken, simulation_cache: Arc, ) -> Result<(GroupId, (ResolutionResult, ConflictGroup))> { @@ -156,7 +156,7 @@ where &mut self, new_groups: Vec, ctx: &BlockBuildingContext, - state: Arc, + state: StateProviderArc, simulation_cache: Arc, ) -> Vec<(GroupId, (ResolutionResult, ConflictGroup))> { let mut results = Vec::new(); diff --git a/crates/rbuilder/src/building/builders/parallel_builder/mod.rs b/crates/rbuilder/src/building/builders/parallel_builder/mod.rs index ab11a91ac..f41b1b35a 100644 --- a/crates/rbuilder/src/building/builders/parallel_builder/mod.rs +++ b/crates/rbuilder/src/building/builders/parallel_builder/mod.rs @@ -7,6 +7,7 @@ pub mod order_intake_store; pub mod results_aggregator; pub mod simulation_cache; pub mod task; +use crate::provider::{StateProviderArc, SyncStateProvider}; use alloy_primitives::I256; pub use groups::*; @@ -17,7 +18,6 @@ use crossbeam::queue::SegQueue; use eyre::Result; use itertools::Itertools; use results_aggregator::BestResults; -use reth_provider::StateProvider; use serde::Deserialize; use simulation_cache::SharedSimulationCache; use std::{ @@ -123,10 +123,11 @@ where let results_aggregator = ResultsAggregator::new(group_result_receiver, Arc::clone(&best_results)); - let block_state = input - .provider - .history_by_block_hash(input.ctx.attributes.parent)? - .into(); + let block_state = SyncStateProvider::new_arc( + input + .provider + .history_by_block_hash(input.ctx.attributes.parent)?, + ); let block_building_result_assembler = BlockBuildingResultAssembler::new( config, @@ -329,10 +330,11 @@ where let setup_duration = setup_start.elapsed(); - let block_state: Arc = input - .provider - .history_by_block_hash(input.ctx.attributes.parent)? - .into(); + let block_state: StateProviderArc = SyncStateProvider::new_arc( + input + .provider + .history_by_block_hash(input.ctx.attributes.parent)?, + ); // Group processing let processing_start = Instant::now(); diff --git a/crates/rbuilder/src/building/cached_reads.rs b/crates/rbuilder/src/building/cached_reads.rs index 8bfe077d7..d3de3b5c8 100644 --- a/crates/rbuilder/src/building/cached_reads.rs +++ b/crates/rbuilder/src/building/cached_reads.rs @@ -1,6 +1,7 @@ //! Caching layer for database, used to minimize disc access. //! The cache is shared between threads. +use crate::provider::StateProviderArc; use alloy_primitives::{Address, B256, U256}; use dashmap::DashMap; use reth::revm::database::StateProviderDatabase; @@ -45,7 +46,7 @@ impl Drop for SharedCachedReads { /// Database that wraps a reth state provider with a shared read cache. #[derive(Clone)] pub struct CachedDB { - state_provider: Arc, + state_provider: StateProviderArc, shared_cache: Arc, } @@ -56,10 +57,7 @@ impl std::fmt::Debug for CachedDB { } impl CachedDB { - pub fn new( - state_provider: Arc, - shared_cache: Arc, - ) -> Self { + pub fn new(state_provider: StateProviderArc, shared_cache: Arc) -> Self { Self { state_provider, shared_cache, diff --git a/crates/rbuilder/src/building/conflict.rs b/crates/rbuilder/src/building/conflict.rs index 324df3e72..1f4941954 100644 --- a/crates/rbuilder/src/building/conflict.rs +++ b/crates/rbuilder/src/building/conflict.rs @@ -3,15 +3,12 @@ use super::{ ThreadBlockBuildingContext, }; use crate::building::BlockBuildingSpaceState; +use crate::provider::SyncStateProvider; use alloy_primitives::{Address, U256}; use itertools::Itertools; use rbuilder_primitives::{Order, OrderId}; use reth::providers::StateProviderBox; -use reth_provider::StateProvider; -use std::{ - collections::{HashMap, HashSet}, - sync::Arc, -}; +use std::collections::{HashMap, HashSet}; /// Conflict generated by executing an order before another. #[derive(Debug, Clone, PartialEq, Eq, Hash)] @@ -33,7 +30,7 @@ pub fn find_conflict_slow( ctx: &BlockBuildingContext, orders: &[Order], ) -> eyre::Result> { - let state_provider = Arc::::from(state_provider); + let state_provider = SyncStateProvider::new_arc(state_provider); let mut block_state_db = CachedDB::new(state_provider, ctx.shared_cached_reads.clone()); let mut local_ctx = ThreadBlockBuildingContext::default(); // We use empty combined refunds because the value of the bundle will diff --git a/crates/rbuilder/src/building/mod.rs b/crates/rbuilder/src/building/mod.rs index 9d214d3ae..84d2c59a7 100644 --- a/crates/rbuilder/src/building/mod.rs +++ b/crates/rbuilder/src/building/mod.rs @@ -55,7 +55,8 @@ use reth_payload_builder::EthPayloadBuilderAttributes; use reth_primitives::BlockBody; use reth_primitives_traits::{proofs, Block as _}; use revm::{ - context_interface::result::InvalidTransaction, database::states::bundle_state::BundleRetention, + context_interface::result::InvalidTransaction, + database::{states::bundle_state::BundleRetention, DatabaseCommitExt as _}, primitives::hardfork::SpecId, }; use serde::Deserialize; @@ -173,6 +174,7 @@ impl BlockBuildingContext { gas_limit, withdrawals: Some(attributes.withdrawals.clone()), parent_beacon_block_root: attributes.parent_beacon_block_root, + extra_data: extra_data.clone().into(), }, ) .ok()?; diff --git a/crates/rbuilder/src/building/order_commit.rs b/crates/rbuilder/src/building/order_commit.rs index fb7d2575e..de80e1eb1 100644 --- a/crates/rbuilder/src/building/order_commit.rs +++ b/crates/rbuilder/src/building/order_commit.rs @@ -25,11 +25,22 @@ use revm::{ context::result::{ExecutionResult, ResultAndState}, context_interface::result::{EVMError, InvalidTransaction}, database::{states::bundle_state::BundleRetention, BundleState, State}, + database_interface::bal::EvmDatabaseError, Database as _, DatabaseCommit, }; use std::{collections::HashMap, sync::Arc}; use thiserror::Error; +/// Flattens the [`EvmDatabaseError`] wrapper that revm's [`State`] adds on top of the +/// underlying database error. rbuilder never sets up a BAL (Block Access List) so the +/// `Bal` variant is not expected; if it ever happens we preserve it as [`ProviderError::Other`]. +pub fn unwrap_evm_db_error(err: EvmDatabaseError) -> ProviderError { + match err { + EvmDatabaseError::Database(err) => err, + EvmDatabaseError::Bal(err) => ProviderError::other(err), + } +} + #[derive(Clone)] pub struct BlockState { db: DB, @@ -104,7 +115,8 @@ where let mut db = self.new_db_ref(); Ok(db .as_mut() - .basic(address)? + .basic(address) + .map_err(unwrap_evm_db_error)? .map(|acc| acc.balance) .unwrap_or_default()) } @@ -113,7 +125,8 @@ where let mut db = self.new_db_ref(); Ok(db .as_mut() - .basic(address)? + .basic(address) + .map_err(unwrap_evm_db_error)? .map(|acc| acc.nonce) .unwrap_or_default()) } @@ -122,7 +135,8 @@ where let mut db = self.new_db_ref(); Ok(db .as_mut() - .basic(address)? + .basic(address) + .map_err(unwrap_evm_db_error)? .map(|acc| acc.code_hash) .unwrap_or_else(|| KECCAK_EMPTY)) } @@ -435,6 +449,18 @@ pub enum CriticalCommitOrderError { BigIntConversionError(#[from] alloy_primitives::BigIntConversionError), } +impl From> for CriticalCommitOrderError { + fn from(err: EvmDatabaseError) -> Self { + Self::Reth(unwrap_evm_db_error(err)) + } +} + +impl From>> for CriticalCommitOrderError { + fn from(err: EVMError>) -> Self { + Self::EVM(err.map_db_err(unwrap_evm_db_error)) + } +} + /// For all funcs allow_tx_skip means: /// If a tx inside a bundle fails with TransactionErr (don't confuse this with reverting which is TransactionOk with !.receipt.success) /// and it's configured as allowed to revert (for bundles tx in reverting_tx_hashes) we continue the @@ -1117,7 +1143,7 @@ fn execute_evm( evm_env: EvmEnv, tx_with_blobs: &TransactionSignedEcRecoveredWithBlobs, used_state_tracer: Option<&mut UsedStateTrace>, - db: impl Database, + db: impl Database>, blocklist: &HashSet
, ) -> Result, CriticalCommitOrderError> where diff --git a/crates/rbuilder/src/building/payout_tx.rs b/crates/rbuilder/src/building/payout_tx.rs index 30afc154a..67e585944 100644 --- a/crates/rbuilder/src/building/payout_tx.rs +++ b/crates/rbuilder/src/building/payout_tx.rs @@ -1,4 +1,4 @@ -use super::{evm::EvmFactory, BlockBuildingContext, BlockState}; +use super::{evm::EvmFactory, unwrap_evm_db_error, BlockBuildingContext, BlockState}; use crate::{ building::BlockSpace, utils::{constants::BASE_TX_GAS, Signer}, @@ -11,7 +11,10 @@ use reth_chainspec::ChainSpec; use reth_errors::ProviderError; use reth_evm::Evm; use reth_primitives::{Recovered, Transaction, TransactionSigned}; -use revm::context::result::{EVMError, ExecutionResult}; +use revm::{ + context::result::{EVMError, ExecutionResult}, + database_interface::bal::EvmDatabaseError, +}; pub fn create_payout_tx( chain_spec: &ChainSpec, @@ -46,6 +49,12 @@ pub enum PayoutTxErr { EvmError(#[from] EVMError), } +impl From>> for PayoutTxErr { + fn from(err: EVMError>) -> Self { + Self::EvmError(err.map_db_err(unwrap_evm_db_error)) + } +} + impl PartialEq for PayoutTxErr { fn eq(&self, other: &Self) -> bool { match (self, other) { @@ -210,9 +219,12 @@ where #[cfg(test)] mod tests { use super::*; - use crate::building::{ - builders::mock_block_building_helper::MockRootHasher, - cached_reads::{CachedDB, SharedCachedReads}, + use crate::{ + building::{ + builders::mock_block_building_helper::MockRootHasher, + cached_reads::{CachedDB, SharedCachedReads}, + }, + provider::{StateProviderArc, SyncStateProvider}, }; use alloy_eips::eip1559::INITIAL_BASE_FEE; use alloy_primitives::B256; @@ -220,7 +232,7 @@ mod tests { use reth_chainspec::{EthereumHardfork, MAINNET}; use reth_db::{tables, transaction::DbTxMut}; use reth_primitives::Account; - use reth_provider::{test_utils::create_test_provider_factory_with_chain_spec, StateProvider}; + use reth_provider::test_utils::create_test_provider_factory_with_chain_spec; use revm::primitives::hardfork::SpecId; use std::sync::Arc; @@ -270,7 +282,8 @@ mod tests { false, U256::ZERO, ); - let state_provider: Arc = Arc::from(provider_factory.latest().unwrap()); + let state_provider: StateProviderArc = + SyncStateProvider::new_arc(provider_factory.latest().unwrap()); let cached = CachedDB::new(state_provider, Arc::new(SharedCachedReads::default())); let mut state = BlockState::new(cached); diff --git a/crates/rbuilder/src/building/sim.rs b/crates/rbuilder/src/building/sim.rs index 1452afaed..618747561 100644 --- a/crates/rbuilder/src/building/sim.rs +++ b/crates/rbuilder/src/building/sim.rs @@ -10,7 +10,7 @@ use crate::{ NullPartialBlockForkExecutionTracer, }, live_builder::order_input::mempool_txs_detector::MempoolTxsDetector, - provider::StateProviderFactory, + provider::{StateProviderFactory, SyncStateProvider}, telemetry::{add_order_simulation_time, mark_order_pending_nonce}, utils::NonceCache, }; @@ -20,7 +20,6 @@ use alloy_primitives::Address; use rand::seq::SliceRandom; use rbuilder_primitives::{Order, OrderId, SimulatedOrder}; use reth_errors::ProviderError; -use reth_provider::StateProvider; use std::{ cmp::{max, min, Ordering}, collections::hash_map::Entry, @@ -349,7 +348,7 @@ where { let nonces = { let state = provider.history_by_block_hash(ctx.attributes.parent)?; - NonceCache::new(state.into()) + NonceCache::new(SyncStateProvider::new_arc(state)) }; let mut sim_tree = SimTree::new(nonces); @@ -365,7 +364,7 @@ where let mut sim_errors = Vec::new(); let initial_provider = - Arc::::from(provider.history_by_block_hash(ctx.attributes.parent)?); + SyncStateProvider::new_arc(provider.history_by_block_hash(ctx.attributes.parent)?); let mut state_for_sim = CachedDB::new(initial_provider, ctx.shared_cached_reads.clone()); let mut local_ctx = ThreadBlockBuildingContext::default(); loop { diff --git a/crates/rbuilder/src/building/testing/bundle_tests/setup.rs b/crates/rbuilder/src/building/testing/bundle_tests/setup.rs index 67ed2be13..f3afdb0bf 100644 --- a/crates/rbuilder/src/building/testing/bundle_tests/setup.rs +++ b/crates/rbuilder/src/building/testing/bundle_tests/setup.rs @@ -8,13 +8,13 @@ use crate::building::{ BlockState, ExecutionError, ExecutionResult, NullPartialBlockExecutionTracer, OrderErr, PartialBlock, ThreadBlockBuildingContext, }; +use crate::provider::{StateProviderArc, SyncStateProvider}; use alloy_primitives::{Address, TxHash}; use parking_lot::Mutex; use rbuilder_primitives::{ order_builder::OrderBuilder, BundleRefund, BundleReplacementData, SimulatedOrder, TransactionSignedEcRecoveredWithBlobs, TxRevertBehavior, }; -use reth_provider::StateProvider; use revm::database::states::BundleState; use std::sync::Arc; use std::sync::OnceLock; @@ -214,8 +214,8 @@ impl TestSetup { } #[allow(clippy::result_large_err)] fn try_commit_order(&mut self) -> eyre::Result> { - let state_provider: Arc = - Arc::from(self.test_chain.provider_factory().latest()?); + let state_provider: StateProviderArc = + SyncStateProvider::new_arc(self.test_chain.provider_factory().latest()?); let mut local_ctx = ThreadBlockBuildingContext::default(); let sim_order = SimulatedOrder::new( @@ -299,8 +299,8 @@ impl TestSetup { } fn make_block_state(&self) -> eyre::Result> { - let state_provider: Arc = - Arc::from(self.test_chain.provider_factory().latest()?); + let state_provider: StateProviderArc = + SyncStateProvider::new_arc(self.test_chain.provider_factory().latest()?); let cached = CachedDB::new(state_provider, Arc::new(SharedCachedReads::default())); Ok( BlockState::new(cached) diff --git a/crates/rbuilder/src/building/testing/evm_inspector_tests/setup.rs b/crates/rbuilder/src/building/testing/evm_inspector_tests/setup.rs index 4633c67a6..8f752d6d5 100644 --- a/crates/rbuilder/src/building/testing/evm_inspector_tests/setup.rs +++ b/crates/rbuilder/src/building/testing/evm_inspector_tests/setup.rs @@ -4,13 +4,12 @@ use crate::building::{ testing::test_chain_state::{BlockArgs, NamedAddr, TestChainState, TestContracts, TxArgs}, BlockState, }; +use crate::provider::{StateProviderArc, SyncStateProvider}; use alloy_primitives::Address; use rbuilder_primitives::evm_inspector::{RBuilderEVMInspector, UsedStateTrace}; use reth_evm::Evm; use reth_primitives::{Recovered, TransactionSigned}; -use reth_provider::StateProvider; -use std::sync::Arc; #[derive(Debug)] pub struct TestSetup { @@ -91,8 +90,8 @@ impl TestSetup { let mut inspector = RBuilderEVMInspector::new(&tx, Some(&mut used_state_trace)); // block state - let state_provider: Arc = - Arc::from(self.test_chain.provider_factory().latest()?); + let state_provider: StateProviderArc = + SyncStateProvider::new_arc(self.test_chain.provider_factory().latest()?); let cached = CachedDB::new( state_provider, self.test_chain diff --git a/crates/rbuilder/src/building/testing/test_chain_state.rs b/crates/rbuilder/src/building/testing/test_chain_state.rs index 11ac87655..81e096d37 100644 --- a/crates/rbuilder/src/building/testing/test_chain_state.rs +++ b/crates/rbuilder/src/building/testing/test_chain_state.rs @@ -139,7 +139,7 @@ impl TestChainState { { let provider = provider_factory.provider_rw()?; provider.insert_block( - Block::new(genesis_header.header().clone(), BlockBody::default()) + &Block::new(genesis_header.header().clone(), BlockBody::default()) .try_into_recovered() .unwrap(), )?; diff --git a/crates/rbuilder/src/building/tx_sim_cache/mod.rs b/crates/rbuilder/src/building/tx_sim_cache/mod.rs index 789f2fb9a..77bd9fe0e 100644 --- a/crates/rbuilder/src/building/tx_sim_cache/mod.rs +++ b/crates/rbuilder/src/building/tx_sim_cache/mod.rs @@ -11,7 +11,9 @@ use itertools::Itertools; use rbuilder_primitives::evm_inspector::UsedStateTrace; use result_store::{ActionResult, ExecutionResultStore, NextAction}; use reth_errors::ProviderError; -use revm::{context::result::ResultAndState, state::AccountInfo}; +use revm::{ + context::result::ResultAndState, database_interface::bal::EvmDatabaseError, state::AccountInfo, +}; use tracing::info; use crate::utils::signed_uint_delta; @@ -223,7 +225,7 @@ impl TxExecutionCache { pub fn get_cached_result( &self, - mut db: impl Database, + mut db: impl Database>, tx_hash: &B256, coinbase: &Address, ) -> Result { diff --git a/crates/rbuilder/src/building/tx_sim_cache/result_store.rs b/crates/rbuilder/src/building/tx_sim_cache/result_store.rs index a8f244e61..19e9fe1ae 100644 --- a/crates/rbuilder/src/building/tx_sim_cache/result_store.rs +++ b/crates/rbuilder/src/building/tx_sim_cache/result_store.rs @@ -143,6 +143,7 @@ mod tests { balance: u256(balance), nonce: 0, code_hash: Default::default(), + account_id: None, code: None, }), } diff --git a/crates/rbuilder/src/live_builder/base_config.rs b/crates/rbuilder/src/live_builder/base_config.rs index 2cc0a26c2..38a70cc1c 100644 --- a/crates/rbuilder/src/live_builder/base_config.rs +++ b/crates/rbuilder/src/live_builder/base_config.rs @@ -584,7 +584,7 @@ pub fn create_provider_factory( open_reth_db(&reth_db_path) }?; - let reth_static_files_path = match (reth_static_files_path, reth_datadir) { + let reth_static_files_path = match (reth_static_files_path, reth_datadir.clone()) { (Some(reth_static_files_path), _) => PathBuf::from(reth_static_files_path), (None, Some(reth_datadir)) => reth_datadir.join("static_files"), (None, None) => { @@ -592,8 +592,21 @@ pub fn create_provider_factory( } }; - let provider_factory_reopener = - ProviderFactoryReopener::new(db, chain_spec, reth_static_files_path, root_hash_config)?; + let reth_rocksdb_path = match (&reth_db_path, reth_datadir) { + (_, Some(reth_datadir)) => reth_datadir.join("rocksdb"), + (reth_db_path, None) => reth_db_path + .parent() + .ok_or_else(|| eyre::eyre!("Can't derive rocksdb path from reth_db_path"))? + .join("rocksdb"), + }; + + let provider_factory_reopener = ProviderFactoryReopener::new( + db, + chain_spec, + reth_static_files_path, + reth_rocksdb_path, + root_hash_config, + )?; if provider_factory_reopener .provider_factory_unchecked() @@ -632,7 +645,10 @@ mod test { use reth_db::init_db; use reth_db_common::init::init_genesis; use reth_node_core::dirs::{DataDirPath, MaybePlatformPath}; - use reth_provider::{providers::StaticFileProvider, ProviderFactory}; + use reth_provider::{ + providers::{RocksDBProvider, StaticFileProvider}, + ProviderFactory, + }; use tempfile::TempDir; use tokio_util::sync::CancellationToken; @@ -666,13 +682,23 @@ mod test { let data_dir = MaybePlatformPath::::from(tempdir.keep()); let data_dir = data_dir.unwrap_or_chain_default(Chain::mainnet(), DatadirArgs::default()); - let db = Arc::new(init_db(data_dir.data_dir(), Default::default()).unwrap()); - let provider_factory = ProviderFactory::>::new( - db, - SEPOLIA.clone(), - StaticFileProvider::read_write(data_dir.static_files().as_path()).unwrap(), - ); - init_genesis(&provider_factory).unwrap(); + // Scoped so every RW handle (mdbx env, static files, rocksdb lock) is dropped + // before `create_provider_factory` reopens the same paths below. + { + let db = Arc::new(init_db(data_dir.db(), Default::default()).unwrap()); + let provider_factory = ProviderFactory::>::new( + db, + SEPOLIA.clone(), + StaticFileProvider::read_write(data_dir.static_files().as_path()).unwrap(), + RocksDBProvider::builder(data_dir.data_dir().join("rocksdb")) + .with_default_tables() + .build() + .unwrap(), + crate::utils::reth_task_runtime(), + ) + .unwrap(); + init_genesis(&provider_factory).unwrap(); + } // Create longer-lived PathBuf values let data_dir_path = data_dir.data_dir(); diff --git a/crates/rbuilder/src/live_builder/config.rs b/crates/rbuilder/src/live_builder/config.rs index 5de658107..62c1a4b8b 100644 --- a/crates/rbuilder/src/live_builder/config.rs +++ b/crates/rbuilder/src/live_builder/config.rs @@ -781,8 +781,21 @@ pub fn create_provider_factory( } }; - let provider_factory_reopener = - ProviderFactoryReopener::new(db, chain_spec, reth_static_files_path, root_hash_config)?; + let reth_rocksdb_path = match (&reth_db_path, reth_datadir) { + (_, Some(reth_datadir)) => reth_datadir.join("rocksdb"), + (reth_db_path, None) => reth_db_path + .parent() + .ok_or_else(|| eyre::eyre!("Can't derive rocksdb path from reth_db_path"))? + .join("rocksdb"), + }; + + let provider_factory_reopener = ProviderFactoryReopener::new( + db, + chain_spec, + reth_static_files_path, + reth_rocksdb_path, + root_hash_config, + )?; if provider_factory_reopener .provider_factory_unchecked() diff --git a/crates/rbuilder/src/live_builder/order_input/txpool_fetcher.rs b/crates/rbuilder/src/live_builder/order_input/txpool_fetcher.rs index 3c47a2e8f..01d167e33 100644 --- a/crates/rbuilder/src/live_builder/order_input/txpool_fetcher.rs +++ b/crates/rbuilder/src/live_builder/order_input/txpool_fetcher.rs @@ -119,6 +119,7 @@ mod test { use super::*; use alloy_consensus::{SidecarBuilder, SimpleCoder}; + use alloy_eips::{eip4844::BlobTransactionSidecar, eip7594::BlobTransactionSidecarVariant}; use alloy_network::{EthereumWallet, TransactionBuilder}; use alloy_node_bindings::Anvil; use alloy_primitives::U256; @@ -161,7 +162,8 @@ mod test { let sidecar: SidecarBuilder = SidecarBuilder::from_slice("Blobs are fun!".as_bytes()); - let sidecar = sidecar.build().unwrap(); + let sidecar: BlobTransactionSidecar = sidecar.build().unwrap(); + let sidecar = BlobTransactionSidecarVariant::Eip4844(sidecar); let gas_price = provider.get_gas_price().await.unwrap(); let eip1559_est = provider.estimate_eip1559_fees().await.unwrap(); diff --git a/crates/rbuilder/src/live_builder/simulation/mod.rs b/crates/rbuilder/src/live_builder/simulation/mod.rs index f065fcff1..3b370963f 100644 --- a/crates/rbuilder/src/live_builder/simulation/mod.rs +++ b/crates/rbuilder/src/live_builder/simulation/mod.rs @@ -12,7 +12,7 @@ use crate::{ order_input::orderpool::OrdersForBlock, simulation::simulation_job_tracer::SimulationJobTracer, }, - provider::StateProviderFactory, + provider::{StateProviderFactory, SyncStateProvider}, utils::{gen_uid, NonceCache, Signer}, }; use ahash::HashMap; @@ -151,7 +151,7 @@ where return; } }; - NonceCache::new(state.into()) + NonceCache::new(SyncStateProvider::new_arc(state)) }; let sim_tree = SimTree::new(nonces); diff --git a/crates/rbuilder/src/live_builder/simulation/sim_worker.rs b/crates/rbuilder/src/live_builder/simulation/sim_worker.rs index 4b24a12d8..bc47a694d 100644 --- a/crates/rbuilder/src/live_builder/simulation/sim_worker.rs +++ b/crates/rbuilder/src/live_builder/simulation/sim_worker.rs @@ -1,3 +1,4 @@ +use crate::provider::{StateProviderArc, SyncStateProvider}; use crate::{ building::{ cached_reads::CachedDB, @@ -9,7 +10,6 @@ use crate::{ telemetry::{self, add_sim_thread_utilisation_timings, mark_order_simulation_end}, }; use parking_lot::Mutex; -use reth_provider::StateProvider; use std::{ sync::Arc, thread::sleep, @@ -51,9 +51,9 @@ pub fn run_sim_worker

( let mut last_sim_finished = Instant::now(); - let state_provider: Arc = + let state_provider: StateProviderArc = match provider.history_by_block_hash(current_sim_context.block_ctx.attributes.parent) { - Ok(state_provider) => Arc::from(state_provider), + Ok(state_provider) => SyncStateProvider::new_arc(state_provider), Err(err) => { error!(?err, "Error while getting state for block"); continue 'main; diff --git a/crates/rbuilder/src/provider/ipc_state_provider.rs b/crates/rbuilder/src/provider/ipc_state_provider.rs index 7dbd9ac83..355cdcae3 100644 --- a/crates/rbuilder/src/provider/ipc_state_provider.rs +++ b/crates/rbuilder/src/provider/ipc_state_provider.rs @@ -56,7 +56,7 @@ pub struct IpcStateProviderFactory { ipc_provider: RpcProvider, code_cache: Arc>, - state_provider_by_hash: Arc>>, + state_provider_by_hash: Arc>, } impl IpcStateProviderFactory { @@ -126,14 +126,14 @@ impl StateProviderFactory for IpcStateProviderFactory { return Ok(Box::new(state)); } - let state = IpcStateProvider::into_boxed( + let state = IpcStateProvider::new( self.ipc_provider.clone(), block.into(), self.code_cache.clone(), ); - self.state_provider_by_hash.insert(block, *state.clone()); - Ok(state) + self.state_provider_by_hash.insert(block, state.clone()); + Ok(Box::new(state)) } /// Gets block header given block hash @@ -197,13 +197,15 @@ pub struct IpcStateProvider { ipc_provider: RpcProvider, block_id: BlockId, - // Per block cache - block_hash_cache: DashMap, + // Per block cache. Arc'd so that clones of the provider share the same cache + // (reth removed the blanket `StateProvider` impl for `Arc`, so we hand out + // cheap clones instead of `Arc`). + block_hash_cache: Arc>, // Note: It's ok to cache Account (and Storage) even in case of None, this is because StateProvider gives the // state for some past block, so if account didn't exist the first time, it cannot magically // appear later on - account_cache: DashMap>, - storage_cache: DashMap<(Address, StorageKey), Option>, + account_cache: Arc>>, + storage_cache: Arc>>, // Global cache (cache not related to specific block) code_cache: Arc>, @@ -222,22 +224,19 @@ impl IpcStateProvider { code_cache, - block_hash_cache: DashMap::new(), - storage_cache: DashMap::new(), - account_cache: DashMap::new(), + block_hash_cache: Arc::new(DashMap::new()), + storage_cache: Arc::new(DashMap::new()), + account_cache: Arc::new(DashMap::new()), } } /// Crates new instance of state provider on the heap - // Box::new(Arc::new(Self)) is required because StateProviderFactory returns Box - // Note: this is known clippy issue: https://github.com/rust-lang/rust-clippy/issues/7472 - #[allow(clippy::redundant_allocation)] fn into_boxed( ipc_provider: RpcProvider, block_id: BlockId, code_cache: Arc>, - ) -> Box> { - Box::new(Arc::new(Self::new(ipc_provider, block_id, code_cache))) + ) -> Box { + Box::new(Self::new(ipc_provider, block_id, code_cache)) } } @@ -286,6 +285,15 @@ impl StateProvider for IpcStateProvider { Ok(storage) } + + /// Lookup by pre-hashed storage key is not possible over the plain-key RPC interface. + fn storage_by_hashed_key( + &self, + _address: Address, + _hashed_storage_key: StorageKey, + ) -> ProviderResult> { + unimplemented!() + } } impl BlockHashReader for IpcStateProvider { diff --git a/crates/rbuilder/src/provider/mod.rs b/crates/rbuilder/src/provider/mod.rs index 67a28d9a7..1e177404e 100644 --- a/crates/rbuilder/src/provider/mod.rs +++ b/crates/rbuilder/src/provider/mod.rs @@ -1,4 +1,4 @@ -use std::sync::mpsc; +use std::sync::{mpsc, Arc}; use crate::{ building::ThreadBlockBuildingContext, live_builder::simulation::SimulatedOrderCommand, @@ -6,16 +6,183 @@ use crate::{ }; use alloy_consensus::Header; use alloy_eips::BlockNumHash; -use alloy_primitives::{Address, BlockHash, BlockNumber, Bytes, B256}; +use alloy_primitives::{Address, BlockHash, BlockNumber, Bytes, StorageKey, StorageValue, B256}; use eth_sparse_mpt::utils::{HashMap, HashSet}; use reth_errors::ProviderResult; -use reth_provider::StateProviderBox; +use reth_primitives_traits::{Account, Bytecode}; +use reth_provider::{ + AccountReader, BlockHashReader, BytecodeReader, HashedPostStateProvider, StateProofProvider, + StateProvider, StateProviderBox, StateRootProvider, StorageRootProvider, +}; +use reth_trie::{ + updates::TrieUpdates, AccountProof, HashedPostState, HashedStorage, MultiProof, + MultiProofTargets, StorageMultiProof, StorageProof, TrieInput, +}; use revm::database::BundleState; pub mod ipc_state_provider; pub mod reth_prov; pub mod state_provider_factory_from_provider_factory; +/// A state provider shareable across builder threads. +pub type StateProviderArc = Arc; + +/// A [`StateProvider`] wrapper asserting that the wrapped provider is thread-safe. +/// +/// reth 1.10 removed the `Sync` supertrait from [`StateProvider`]/`DbTx` +/// (paradigmxyz/reth#20516) so DB transactions can later grow single-threaded cursor +/// caches. As of reth v1.11.3 no such caches exist: MDBX transactions are still +/// internally synchronized (`TransactionPtr` keeps its lock and its `unsafe impl Sync`), +/// and the in-memory overlay / static-file / IPC providers hold only thread-safe data, +/// so sharing one provider across builder threads is as sound as it was before the +/// bound change. +/// +/// SAFETY invariant: every [`StateProviderBox`] wrapped here must come from one of the +/// factories in this module (reth DB, reth node, IPC). Re-audit on every reth bump: if +/// DB transactions gain non-thread-safe internals this assertion becomes unsound. +pub struct SyncStateProvider(StateProviderBox); + +// SAFETY: see type-level docs. +unsafe impl Sync for SyncStateProvider {} + +impl SyncStateProvider { + /// Wraps a provider produced by one of the factories in this module (see the + /// type-level SAFETY invariant). + pub fn new(provider: StateProviderBox) -> Self { + Self(provider) + } + + /// Like [`Self::new`] but returns a thread-shareable [`StateProviderArc`]. + pub fn new_arc(provider: StateProviderBox) -> StateProviderArc { + Arc::new(Self::new(provider)) + } +} + +impl BlockHashReader for SyncStateProvider { + fn block_hash(&self, number: BlockNumber) -> ProviderResult> { + self.0.block_hash(number) + } + + fn canonical_hashes_range( + &self, + start: BlockNumber, + end: BlockNumber, + ) -> ProviderResult> { + self.0.canonical_hashes_range(start, end) + } +} + +impl AccountReader for SyncStateProvider { + fn basic_account(&self, address: &Address) -> ProviderResult> { + self.0.basic_account(address) + } +} + +impl BytecodeReader for SyncStateProvider { + fn bytecode_by_hash(&self, code_hash: &B256) -> ProviderResult> { + self.0.bytecode_by_hash(code_hash) + } +} + +impl StateRootProvider for SyncStateProvider { + fn state_root(&self, hashed_state: HashedPostState) -> ProviderResult { + self.0.state_root(hashed_state) + } + + fn state_root_from_nodes(&self, input: TrieInput) -> ProviderResult { + self.0.state_root_from_nodes(input) + } + + fn state_root_with_updates( + &self, + hashed_state: HashedPostState, + ) -> ProviderResult<(B256, TrieUpdates)> { + self.0.state_root_with_updates(hashed_state) + } + + fn state_root_from_nodes_with_updates( + &self, + input: TrieInput, + ) -> ProviderResult<(B256, TrieUpdates)> { + self.0.state_root_from_nodes_with_updates(input) + } +} + +impl StorageRootProvider for SyncStateProvider { + fn storage_root( + &self, + address: Address, + hashed_storage: HashedStorage, + ) -> ProviderResult { + self.0.storage_root(address, hashed_storage) + } + + fn storage_proof( + &self, + address: Address, + slot: B256, + hashed_storage: HashedStorage, + ) -> ProviderResult { + self.0.storage_proof(address, slot, hashed_storage) + } + + fn storage_multiproof( + &self, + address: Address, + slots: &[B256], + hashed_storage: HashedStorage, + ) -> ProviderResult { + self.0.storage_multiproof(address, slots, hashed_storage) + } +} + +impl StateProofProvider for SyncStateProvider { + fn proof( + &self, + input: TrieInput, + address: Address, + slots: &[B256], + ) -> ProviderResult { + self.0.proof(input, address, slots) + } + + fn multiproof( + &self, + input: TrieInput, + targets: MultiProofTargets, + ) -> ProviderResult { + self.0.multiproof(input, targets) + } + + fn witness(&self, input: TrieInput, target: HashedPostState) -> ProviderResult> { + self.0.witness(input, target) + } +} + +impl HashedPostStateProvider for SyncStateProvider { + fn hashed_post_state(&self, bundle_state: &BundleState) -> HashedPostState { + self.0.hashed_post_state(bundle_state) + } +} + +impl StateProvider for SyncStateProvider { + fn storage( + &self, + account: Address, + storage_key: StorageKey, + ) -> ProviderResult> { + self.0.storage(account, storage_key) + } + + fn storage_by_hashed_key( + &self, + address: Address, + hashed_storage_key: StorageKey, + ) -> ProviderResult> { + self.0.storage_by_hashed_key(address, hashed_storage_key) + } +} + /// Main trait to interact with the chain data. /// Allows to create different backends for chain data access without implementing lots of interfaces as would happen with reth_provider::StateProviderFactory /// since it only asks for what we really use. diff --git a/crates/rbuilder/src/provider/reth_prov.rs b/crates/rbuilder/src/provider/reth_prov.rs index c3ed1c270..cf1fdce94 100644 --- a/crates/rbuilder/src/provider/reth_prov.rs +++ b/crates/rbuilder/src/provider/reth_prov.rs @@ -4,12 +4,12 @@ use alloy_eips::BlockNumHash; use alloy_primitives::{BlockHash, BlockNumber, B256}; use reth_errors::ProviderResult; use reth_provider::{ - BlockReader, DatabaseProviderFactory, HeaderProvider, PruneCheckpointReader, - StageCheckpointReader, StateProviderBox, TrieReader, + BlockReader, ChangeSetReader, DatabaseProviderFactory, HeaderProvider, PruneCheckpointReader, + StageCheckpointReader, StateProviderBox, StorageChangeSetReader, StorageSettingsCache, }; use tracing::error; -use super::{RootHasher, StateProviderFactory}; +use super::{RootHasher, StateProviderFactory, SyncStateProvider}; /// StateProviderFactory based on a reth traits. #[derive(Clone)] @@ -30,7 +30,12 @@ impl

StateProviderFactoryFromRethProvider

{ impl

StateProviderFactory for StateProviderFactoryFromRethProvider

where P: DatabaseProviderFactory< - Provider: BlockReader + TrieReader + StageCheckpointReader + PruneCheckpointReader, + Provider: BlockReader + + StageCheckpointReader + + PruneCheckpointReader + + ChangeSetReader + + StorageChangeSetReader + + StorageSettingsCache, > + reth_provider::StateProviderFactory + HeaderProvider

+ Clone @@ -69,7 +74,7 @@ where } fn root_hasher(&self, parent_num_hash: BlockNumHash) -> ProviderResult> { - let hasher = self.history_by_block_hash(parent_num_hash.hash)?; + let hasher = SyncStateProvider::new(self.history_by_block_hash(parent_num_hash.hash)?); let parent_state_root = self .provider .header_by_hash_or_number(parent_num_hash.hash.into())? diff --git a/crates/rbuilder/src/roothash/mod.rs b/crates/rbuilder/src/roothash/mod.rs index e4db93915..2715ae0e7 100644 --- a/crates/rbuilder/src/roothash/mod.rs +++ b/crates/rbuilder/src/roothash/mod.rs @@ -4,10 +4,12 @@ use alloy_primitives::{Address, Bytes, B256}; use eth_sparse_mpt::*; use reth::providers::providers::ConsistentDbView; use reth_provider::{ - providers::OverlayStateProviderFactory, BlockReader, DatabaseProviderFactory, - HashedPostStateProvider, PruneCheckpointReader, StageCheckpointReader, TrieReader, + providers::OverlayStateProviderFactory, BlockReader, ChangeSetReader, DatabaseProviderFactory, + HashedPostStateProvider, PruneCheckpointReader, StageCheckpointReader, StorageChangeSetReader, + StorageSettingsCache, }; use reth_trie::TrieInput; +use reth_trie_db::ChangesetCache; use reth_trie_parallel::root::{ParallelStateRoot, ParallelStateRootError}; use revm::database::BundleState; use tracing::trace; @@ -81,7 +83,7 @@ pub fn calculate_account_proofs

( ) -> Result>, RootHashError> where P: DatabaseProviderFactory< - Provider: BlockReader + TrieReader + StageCheckpointReader + PruneCheckpointReader, + Provider: BlockReader + StageCheckpointReader + PruneCheckpointReader, > + Send + Sync + Clone @@ -121,19 +123,25 @@ fn calculate_parallel_root_hash( where HasherType: HashedPostStateProvider, P: DatabaseProviderFactory< - Provider: BlockReader + TrieReader + StageCheckpointReader + PruneCheckpointReader, + Provider: BlockReader + + StageCheckpointReader + + PruneCheckpointReader + + ChangeSetReader + + StorageChangeSetReader + + StorageSettingsCache, > + Send + Sync + Clone + 'static, { - let overlay = OverlayStateProviderFactory::new(provider); + let overlay = OverlayStateProviderFactory::new(provider, ChangesetCache::new()); let hashed_post_state = hasher.hashed_post_state(outcome); let parallel_root_calculator = ParallelStateRoot::new( overlay, TrieInput::from_state(hashed_post_state) .prefix_sets .freeze(), + crate::utils::reth_task_runtime(), ); parallel_root_calculator.incremental_root() } @@ -150,9 +158,14 @@ pub fn calculate_state_root( config: &RootHashContext, ) -> Result where - HasherType: HashedPostStateProvider, + HasherType: HashedPostStateProvider + Send + Sync, P: DatabaseProviderFactory< - Provider: BlockReader + TrieReader + StageCheckpointReader + PruneCheckpointReader, + Provider: BlockReader + + StageCheckpointReader + + PruneCheckpointReader + + ChangeSetReader + + StorageChangeSetReader + + StorageSettingsCache, > + Send + Sync + Clone diff --git a/crates/rbuilder/src/utils/mod.rs b/crates/rbuilder/src/utils/mod.rs index c9239b201..3cd7e6873 100644 --- a/crates/rbuilder/src/utils/mod.rs +++ b/crates/rbuilder/src/utils/mod.rs @@ -32,6 +32,25 @@ pub use provider_factory_reopen::{ ProviderFactoryReopener, RootHasherImpl, }; +/// Process-wide reth task [`Runtime`](reth::tasks::Runtime) used for reth components that +/// need one (e.g. `ProviderFactory`, `ParallelStateRoot`). Attaches to the ambient tokio +/// runtime when first used inside one, otherwise builds a standalone runtime. +pub fn reth_task_runtime() -> reth::tasks::Runtime { + use reth::tasks::{Runtime, RuntimeBuilder, RuntimeConfig}; + static RUNTIME: std::sync::OnceLock = std::sync::OnceLock::new(); + RUNTIME + .get_or_init(|| { + let config = match tokio::runtime::Handle::try_current() { + Ok(handle) => RuntimeConfig::with_existing_handle(handle), + Err(_) => RuntimeConfig::default(), + }; + RuntimeBuilder::new(config) + .build() + .expect("failed to build reth task runtime") + }) + .clone() +} + pub mod reconnect; mod tx_signer; @@ -144,7 +163,7 @@ pub fn default_cfg_env(chain_spec: &ChainSpec, block_timestamp: u64, block_numbe let spec = revm_spec_by_timestamp_and_block_number(chain_spec, block_timestamp, block_number); CfgEnv::new() .with_chain_id(chain_spec.chain().id()) - .with_spec(spec) + .with_spec_and_mainnet_gas_params(spec) } pub fn unix_timestamp_now() -> u64 { diff --git a/crates/rbuilder/src/utils/noncer.rs b/crates/rbuilder/src/utils/noncer.rs index 4234ff172..ff04ee80c 100644 --- a/crates/rbuilder/src/utils/noncer.rs +++ b/crates/rbuilder/src/utils/noncer.rs @@ -1,8 +1,8 @@ +use crate::provider::StateProviderArc; use alloy_primitives::Address; use dashmap::DashMap; use derivative::Derivative; use reth_errors::ProviderResult; -use reth_provider::StateProvider; use std::sync::Arc; /// Struct to get nonces for Addresses, caching the results. @@ -10,12 +10,12 @@ use std::sync::Arc; #[derivative(Debug)] pub struct NonceCache { #[derivative(Debug = "ignore")] - state: Arc, + state: StateProviderArc, cache: Arc>, } impl NonceCache { - pub fn new(state: Arc) -> Self { + pub fn new(state: StateProviderArc) -> Self { Self { state, cache: Arc::new(DashMap::default()), diff --git a/crates/rbuilder/src/utils/provider_factory_reopen.rs b/crates/rbuilder/src/utils/provider_factory_reopen.rs index 1a9f29d19..78ce44ca4 100644 --- a/crates/rbuilder/src/utils/provider_factory_reopen.rs +++ b/crates/rbuilder/src/utils/provider_factory_reopen.rs @@ -18,10 +18,10 @@ use reth_db::DatabaseError; use reth_errors::{ProviderError, ProviderResult, RethResult}; use reth_node_api::{NodePrimitives, NodeTypesWithDB}; use reth_provider::{ - providers::{ProviderNodeTypes, StaticFileProvider}, - BlockNumReader, BlockReader, DatabaseProviderFactory, HashedPostStateProvider, HeaderProvider, - PruneCheckpointReader, StageCheckpointReader, StateProviderBox, StaticFileProviderFactory, - TrieReader, + providers::{ProviderNodeTypes, RocksDBProvider, StaticFileProvider}, + BlockNumReader, BlockReader, ChangeSetReader, DatabaseProviderFactory, HashedPostStateProvider, + HeaderProvider, PruneCheckpointReader, RocksDBProviderFactory, StageCheckpointReader, + StateProviderBox, StaticFileProviderFactory, StorageChangeSetReader, StorageSettingsCache, }; use revm::database::BundleState; use std::{ @@ -40,6 +40,9 @@ pub struct ProviderFactoryReopener { provider_factory: Arc>>, chain_spec: Arc, static_files_path: PathBuf, + /// Auxiliary storage backends needed to rebuild the [`ProviderFactory`] on reopen. + rocksdb_provider: RocksDBProvider, + runtime: reth::tasks::Runtime, /// Patch to disable checking on test mode. Is ugly but ProviderFactoryReopener should die shortly (5/24/2024). testing_mode: bool, /// None ->No root hash (MockRootHasher) @@ -52,18 +55,31 @@ impl ProviderFactoryReopener db: N::DB, chain_spec: Arc, static_files_path: PathBuf, + rocksdb_path: PathBuf, root_hash_config: Option, - ) -> RethResult { + ) -> eyre::Result { + let runtime = crate::utils::reth_task_runtime(); + // Read-only: rbuilder never writes, and a read-only open doesn't take the + // RocksDB lock, so it can coexist with a running reth node on the same datadir + // (mirrors the read-only MDBX / static-files opens above and below). + let rocksdb_provider = RocksDBProvider::builder(&rocksdb_path) + .with_default_tables() + .with_read_only(true) + .build()?; let provider_factory = ProviderFactory::new( db, chain_spec.clone(), StaticFileProvider::read_only(static_files_path.as_path(), true).unwrap(), - ); + rocksdb_provider.clone(), + runtime.clone(), + )?; Ok(Self { provider_factory: Arc::new(Mutex::new(provider_factory)), chain_spec, static_files_path, + rocksdb_provider, + runtime, root_hash_config, testing_mode: false, }) @@ -75,10 +91,13 @@ impl ProviderFactoryReopener ) -> RethResult { let chain_spec = provider_factory.chain_spec(); let static_files_path = provider_factory.static_file_provider().path().to_path_buf(); + let rocksdb_provider = provider_factory.rocksdb_provider(); Ok(Self { provider_factory: Arc::new(Mutex::new(provider_factory)), chain_spec, static_files_path, + rocksdb_provider, + runtime: crate::utils::reth_task_runtime(), root_hash_config, testing_mode: true, }) @@ -115,7 +134,9 @@ impl ProviderFactoryReopener self.chain_spec.clone(), StaticFileProvider::read_only(self.static_files_path.as_path(), true) .unwrap(), - ); + self.rocksdb_provider.clone(), + self.runtime.clone(), + )?; } } @@ -294,9 +315,14 @@ impl RootHasherImpl { impl RootHasher for RootHasherImpl where - HasherType: HashedPostStateProvider, + HasherType: HashedPostStateProvider + Send + Sync, T: DatabaseProviderFactory< - Provider: BlockReader + TrieReader + StageCheckpointReader + PruneCheckpointReader, + Provider: BlockReader + + StageCheckpointReader + + PruneCheckpointReader + + ChangeSetReader + + StorageChangeSetReader + + StorageSettingsCache, > + Send + Sync + Clone diff --git a/crates/reth-rbuilder/src/main.rs b/crates/reth-rbuilder/src/main.rs index 999a1ba78..30a0f5ef7 100644 --- a/crates/reth-rbuilder/src/main.rs +++ b/crates/reth-rbuilder/src/main.rs @@ -22,8 +22,9 @@ use reth::{ }; use reth_node_ethereum::{node::EthereumAddOns, EthereumNode}; use reth_provider::{ - providers::BlockchainProvider, BlockReader, ChainSpecProvider, DatabaseProviderFactory, - HeaderProvider, PruneCheckpointReader, StageCheckpointReader, TrieReader, + providers::BlockchainProvider, BlockReader, ChainSpecProvider, ChangeSetReader, + DatabaseProviderFactory, HeaderProvider, PruneCheckpointReader, StageCheckpointReader, + StorageChangeSetReader, StorageSettingsCache, }; use reth_transaction_pool::{blobstore::DiskFileBlobStore, EthTransactionPool}; use std::{ @@ -88,7 +89,12 @@ fn spawn_rbuilder

( config_path: PathBuf, ) where P: DatabaseProviderFactory< - Provider: BlockReader + TrieReader + StageCheckpointReader + PruneCheckpointReader, + Provider: BlockReader + + StageCheckpointReader + + PruneCheckpointReader + + ChangeSetReader + + StorageChangeSetReader + + StorageSettingsCache, > + reth_provider::StateProviderFactory + HeaderProvider

+ reth_provider::ChainSpecProvider