diff --git a/based/Cargo.lock b/based/Cargo.lock index af514c813..e263ab6e1 100644 --- a/based/Cargo.lock +++ b/based/Cargo.lock @@ -74,6 +74,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "aligned-vec" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc890384c8602f339876ded803c97ad529f3842aba97f6392b3dba0dd171769b" +dependencies = [ + "equator", +] + [[package]] name = "alloc-no-stdlib" version = "2.0.4" @@ -110,9 +119,9 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "1.0.42" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3abecb92ba478a285fbf5689100dbafe4003ded4a09bf4b5ef62cca87cd4f79e" +checksum = "2e318e25fb719e747a7e8db1654170fc185024f3ed5b10f86c08d448a912f6e2" dependencies = [ "alloy-eips", "alloy-primitives", @@ -122,6 +131,7 @@ dependencies = [ "alloy-tx-macros", "arbitrary", "auto_impl", + "borsh", "c-kzg", "derive_more", "either", @@ -132,14 +142,14 @@ dependencies = [ "serde", "serde_json", "serde_with", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] name = "alloy-consensus-any" -version = "1.0.42" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e864d4f11d1fb8d3ac2fd8f3a15f1ee46d55ec6d116b342ed1b2cb737f25894" +checksum = "364380a845193a317bcb7a5398fc86cdb66c47ebe010771dde05f6869bf9e64a" dependencies = [ "alloy-consensus", "alloy-eips", @@ -179,43 +189,45 @@ dependencies = [ "crc", "rand 0.8.5", "serde", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] name = "alloy-eip2930" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b82752a889170df67bbb36d42ca63c531eb16274f0d7299ae2a680facba17bd" +checksum = "9441120fa82df73e8959ae0e4ab8ade03de2aaae61be313fbf5746277847ce25" dependencies = [ "alloy-primitives", "alloy-rlp", "arbitrary", + "borsh", "rand 0.8.5", "serde", ] [[package]] name = "alloy-eip7702" -version = "0.6.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d4769c6ffddca380b0070d71c8b7f30bed375543fe76bb2f74ec0acf4b7cd16" +checksum = "2919c5a56a1007492da313e7a3b6d45ef5edc5d33416fdec63c0d7a2702a0d20" dependencies = [ "alloy-primitives", "alloy-rlp", "arbitrary", + "borsh", "k256", "rand 0.8.5", "serde", "serde_with", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] name = "alloy-eips" -version = "1.0.42" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07d9a64522a0db6ebcc4ff9c904e329e77dd737c2c25d30f1bdc32ca6c6ce334" +checksum = "a4c4d7c5839d9f3a467900c625416b24328450c65702eb3d8caff8813e4d1d33" dependencies = [ "alloy-eip2124", "alloy-eip2930", @@ -225,6 +237,7 @@ dependencies = [ "alloy-serde", "arbitrary", "auto_impl", + "borsh", "c-kzg", "derive_more", "either", @@ -233,7 +246,7 @@ dependencies = [ "serde", "serde_with", "sha2", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -256,7 +269,7 @@ dependencies = [ "op-alloy-rpc-types-engine", "op-revm", "revm", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -301,24 +314,24 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "1.0.42" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f87b774478fcc616993e97659697f3e3c7988fdad598e46ee0ed11209cd0d8ee" +checksum = "f72cf87cda808e593381fb9f005ffa4d2475552b7a6c5ac33d087bf77d82abd0" dependencies = [ "alloy-primitives", "alloy-sol-types", "http", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", "tracing", ] [[package]] name = "alloy-network" -version = "1.0.42" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5d6ed73d440bae8f27771b7cd507fa8f10f19ddf0b8f67e7622a52e0dbf798e" +checksum = "12aeb37b6f2e61b93b1c3d34d01ee720207c76fe447e2a2c217e433ac75b17f5" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -337,14 +350,14 @@ dependencies = [ "futures-utils-wasm", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] name = "alloy-network-primitives" -version = "1.0.42" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219dccd2cf753a43bd9b0fbb7771a16927ffdb56e43e3a15755bef1a74d614aa" +checksum = "abd29ace62872083e30929cd9b282d82723196d196db589f3ceda67edcc05552" dependencies = [ "alloy-consensus", "alloy-eips", @@ -368,7 +381,7 @@ dependencies = [ "op-alloy-consensus", "op-revm", "revm", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -385,9 +398,9 @@ dependencies = [ [[package]] name = "alloy-primitives" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "355bf68a433e0fd7f7d33d5a9fc2583fde70bf5c530f63b80845f8da5505cf28" +checksum = "5c850e6ccbd34b8a463a1e934ffc8fc00e1efc5e5489f2ad82d7797949f3bd4e" dependencies = [ "alloy-rlp", "arbitrary", @@ -398,14 +411,15 @@ dependencies = [ "foldhash 0.2.0", "getrandom 0.3.3", "hashbrown 0.16.0", - "indexmap 2.10.0", + "indexmap 2.12.0", "itoa", "k256", "keccak-asm", "paste 1.0.15", "proptest", "proptest-derive 0.6.0", - "rand 0.9.1", + "rand 0.9.2", + "rapidhash", "ruint", "rustc-hash 2.1.1", "serde", @@ -448,7 +462,7 @@ dependencies = [ "reqwest", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tracing", "url", @@ -496,7 +510,7 @@ checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -527,9 +541,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types" -version = "1.0.42" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe106e50522980bc9e7cc9016f445531edf1a53e0fdba904c833b98c6fdff3f0" +checksum = "39cf1398cb33aacb139a960fa3d8cf8b1202079f320e77e952a0b95967bf7a9f" dependencies = [ "alloy-primitives", "alloy-rpc-types-engine", @@ -564,9 +578,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" -version = "1.0.42" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "425e14ee32eb8b7edd6a2247fe0ed640785e6eba75af27db27f1e6220c15ef0d" +checksum = "6a63fb40ed24e4c92505f488f9dd256e2afaed17faa1b7a221086ebba74f4122" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -588,7 +602,7 @@ dependencies = [ "serde", "serde_json", "serde_with", - "thiserror 2.0.12", + "thiserror 2.0.17", "tree_hash", "tree_hash_derive", ] @@ -607,9 +621,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" -version = "1.0.42" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aabc17f0eac3f747eeddebc768c8e30763d6f6c53188f5335a935dedc57ddfbd" +checksum = "4c60bdce3be295924122732b7ecd0b2495ce4790bedc5370ca7019c08ad3f26e" dependencies = [ "alloy-consensus", "alloy-eips", @@ -627,9 +641,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" -version = "1.0.42" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0185f68a0f8391ab996d335a887087d7ccdbc97952efab3516f6307d456ba2cd" +checksum = "9eae0c7c40da20684548cbc8577b6b7447f7bf4ddbac363df95e3da220e41e72" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -644,7 +658,7 @@ dependencies = [ "serde", "serde_json", "serde_with", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -673,7 +687,7 @@ dependencies = [ "alloy-serde", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -690,9 +704,9 @@ dependencies = [ [[package]] name = "alloy-serde" -version = "1.0.42" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "596cfa360922ba9af901cc7370c68640e4f72adb6df0ab064de32f21fec498d7" +checksum = "c0df1987ed0ff2d0159d76b52e7ddfc4e4fbddacc54d2fbee765e0d14d7c01b5" dependencies = [ "alloy-primitives", "arbitrary", @@ -702,9 +716,9 @@ dependencies = [ [[package]] name = "alloy-signer" -version = "1.0.42" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f06333680d04370c8ed3a6b0eccff384e422c3d8e6b19e61fedc3a9f0ab7743" +checksum = "6ff69deedee7232d7ce5330259025b868c5e6a52fa8dffda2c861fb3a5889b24" dependencies = [ "alloy-primitives", "async-trait", @@ -712,7 +726,7 @@ dependencies = [ "either", "elliptic-curve", "k256", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -730,7 +744,7 @@ dependencies = [ "coins-bip39", "k256", "rand 0.8.5", - "thiserror 2.0.12", + "thiserror 2.0.17", "zeroize", ] @@ -745,7 +759,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -757,11 +771,11 @@ dependencies = [ "alloy-sol-macro-input", "const-hex", "heck 0.5.0", - "indexmap 2.10.0", + "indexmap 2.12.0", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", "syn-solidity", "tiny-keccak", ] @@ -778,7 +792,7 @@ dependencies = [ "macro-string", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", "syn-solidity", ] @@ -819,7 +833,7 @@ dependencies = [ "parking_lot", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tower", "tracing", @@ -902,14 +916,14 @@ dependencies = [ [[package]] name = "alloy-tx-macros" -version = "1.0.42" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab54221eccefa254ce9f65b079c097b1796e48c21c7ce358230f8988d75392fb" +checksum = "333544408503f42d7d3792bfc0f7218b643d968a03d2c0ed383ae558fb4a76d0" dependencies = [ "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -994,7 +1008,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -1006,6 +1020,12 @@ dependencies = [ "derive_arbitrary", ] +[[package]] +name = "arc-swap" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" + [[package]] name = "ark-bls12-381" version = "0.5.0" @@ -1136,7 +1156,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" dependencies = [ "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -1174,7 +1194,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -1263,7 +1283,7 @@ checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -1352,7 +1372,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -1363,7 +1383,7 @@ checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -1401,7 +1421,7 @@ checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -1499,7 +1519,7 @@ checksum = "604fde5e028fea851ce1d8570bbdc034bec850d157f7569d10f347d06808c05c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -1563,6 +1583,53 @@ version = "1.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89e25b6adfb930f02d1981565a6e5d9c547ac15a96606256d3b59040e5cd4ca3" +[[package]] +name = "based-op-reth" +version = "0.1.0" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-network", + "alloy-primitives", + "alloy-rpc-types", + "alloy-rpc-types-eth", + "anyhow", + "arc-swap", + "bop-common", + "clap", + "eyre", + "futures", + "jsonrpsee", + "op-alloy-consensus", + "op-alloy-network", + "op-alloy-rpc-types", + "reth", + "reth-chainspec 1.9.3", + "reth-db 1.9.3", + "reth-engine-tree 1.9.3", + "reth-evm 1.9.3", + "reth-exex 1.9.3", + "reth-node-builder 1.9.3", + "reth-optimism-chainspec 1.9.3", + "reth-optimism-cli 1.9.3", + "reth-optimism-consensus 1.9.3", + "reth-optimism-evm 1.9.3", + "reth-optimism-node 1.9.3", + "reth-optimism-primitives 1.9.3", + "reth-optimism-rpc 1.9.3", + "reth-revm 1.9.3", + "reth-rpc 1.9.3", + "reth-rpc-convert 1.9.3", + "reth-rpc-eth-api 1.9.3", + "reth-storage-api 1.9.3", + "reth-storage-errors 1.9.3", + "revm", + "thiserror 2.0.17", + "tokio", + "tokio-stream", + "tracing", +] + [[package]] name = "based-portal" version = "0.1.0" @@ -1575,13 +1642,13 @@ dependencies = [ "clap", "eyre", "futures", - "indexmap 2.10.0", + "indexmap 2.12.0", "jsonrpsee", "op-alloy-rpc-types", "op-alloy-rpc-types-engine", "parking_lot", "reqwest", - "reth-rpc-layer", + "reth-rpc-layer 1.9.2", "serde", "serde_json", "tokio", @@ -1607,10 +1674,10 @@ dependencies = [ "op-alloy-rpc-types-engine", "parking_lot", "reqwest", - "reth-rpc-layer", + "reth-rpc-layer 1.9.2", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tower", "tower-http", @@ -1657,7 +1724,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.101", + "syn 2.0.111", "which", ] @@ -1676,7 +1743,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -1694,7 +1761,7 @@ dependencies = [ "regex", "rustc-hash 2.1.1", "shlex", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -1786,6 +1853,147 @@ dependencies = [ "zeroize", ] +[[package]] +name = "boa_ast" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc119a5ad34c3f459062a96907f53358989b173d104258891bb74f95d93747e8" +dependencies = [ + "bitflags 2.10.0", + "boa_interner", + "boa_macros", + "boa_string", + "indexmap 2.12.0", + "num-bigint", + "rustc-hash 2.1.1", +] + +[[package]] +name = "boa_engine" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e637ec52ea66d76b0ca86180c259d6c7bb6e6a6e14b2f36b85099306d8b00cc3" +dependencies = [ + "aligned-vec", + "arrayvec", + "bitflags 2.10.0", + "boa_ast", + "boa_gc", + "boa_interner", + "boa_macros", + "boa_parser", + "boa_string", + "bytemuck", + "cfg-if", + "cow-utils", + "dashmap 6.1.0", + "dynify", + "fast-float2", + "float16", + "futures-channel", + "futures-concurrency", + "futures-lite", + "hashbrown 0.16.0", + "icu_normalizer", + "indexmap 2.12.0", + "intrusive-collections", + "itertools 0.14.0", + "num-bigint", + "num-integer", + "num-traits", + "num_enum", + "paste 1.0.15", + "portable-atomic", + "rand 0.9.2", + "regress", + "rustc-hash 2.1.1", + "ryu-js", + "serde", + "serde_json", + "small_btree", + "static_assertions", + "tag_ptr", + "tap", + "thin-vec", + "thiserror 2.0.17", + "time", + "xsum", +] + +[[package]] +name = "boa_gc" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1179f690cbfcbe5364cceee5f1cb577265bb6f07b0be6f210aabe270adcf9da" +dependencies = [ + "boa_macros", + "boa_string", + "hashbrown 0.16.0", + "thin-vec", +] + +[[package]] +name = "boa_interner" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9626505d33dc63d349662437297df1d3afd9d5fc4a2b3ad34e5e1ce879a78848" +dependencies = [ + "boa_gc", + "boa_macros", + "hashbrown 0.16.0", + "indexmap 2.12.0", + "once_cell", + "phf", + "rustc-hash 2.1.1", + "static_assertions", +] + +[[package]] +name = "boa_macros" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f36418a46544b152632c141b0a0b7a453cd69ca150caeef83aee9e2f4b48b7d" +dependencies = [ + "cfg-if", + "cow-utils", + "proc-macro2", + "quote", + "syn 2.0.111", + "synstructure 0.13.2", +] + +[[package]] +name = "boa_parser" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02f99bf5b684f0de946378fcfe5f38c3a0fbd51cbf83a0f39ff773a0e218541f" +dependencies = [ + "bitflags 2.10.0", + "boa_ast", + "boa_interner", + "boa_macros", + "fast-float2", + "icu_properties", + "num-bigint", + "num-traits", + "regress", + "rustc-hash 2.1.1", +] + +[[package]] +name = "boa_string" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45ce9d7aa5563a2e14eab111e2ae1a06a69a812f6c0c3d843196c9d03fbef440" +dependencies = [ + "fast-float2", + "itoa", + "paste 1.0.15", + "rustc-hash 2.1.1", + "ryu-js", + "static_assertions", +] + [[package]] name = "bop-common" version = "0.1.0" @@ -1825,30 +2033,30 @@ dependencies = [ "parking_lot", "paste 0.1.18", "quanta", - "rand 0.9.1", + "rand 0.9.2", "reqwest", - "reth-chainspec", - "reth-cli", - "reth-db", - "reth-db-api", - "reth-evm", - "reth-execution-errors", - "reth-node-ethereum", - "reth-node-types", - "reth-optimism-chainspec", - "reth-optimism-cli", - "reth-optimism-consensus", - "reth-optimism-forks", - "reth-optimism-node", - "reth-optimism-payload-builder", - "reth-optimism-primitives", - "reth-primitives", - "reth-primitives-traits", - "reth-provider", - "reth-storage-api", - "reth-storage-errors", - "reth-trie-common", - "reth-trie-parallel", + "reth-chainspec 1.9.2", + "reth-cli 1.9.2", + "reth-db 1.9.2", + "reth-db-api 1.9.2", + "reth-evm 1.9.2", + "reth-execution-errors 1.9.2", + "reth-node-ethereum 1.9.2", + "reth-node-types 1.9.2", + "reth-optimism-chainspec 1.9.2", + "reth-optimism-cli 1.9.2", + "reth-optimism-consensus 1.9.2", + "reth-optimism-forks 1.9.2", + "reth-optimism-node 1.9.2", + "reth-optimism-payload-builder 1.9.2", + "reth-optimism-primitives 1.9.2", + "reth-primitives 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-provider 1.9.2", + "reth-storage-api 1.9.2", + "reth-storage-errors 1.9.2", + "reth-trie-common 1.9.2", + "reth-trie-parallel 1.9.2", "revm", "revm-interpreter", "revm-primitives", @@ -1859,7 +2067,7 @@ dependencies = [ "ssz_types", "strum 0.24.1", "strum_macros 0.24.3", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tracing", "tracing-appender", @@ -1886,26 +2094,26 @@ dependencies = [ "op-revm", "parking_lot", "reqwest", - "reth-chainspec", - "reth-db", - "reth-db-api", - "reth-db-common", - "reth-engine-tree", - "reth-node-types", - "reth-optimism-chainspec", - "reth-optimism-node", - "reth-optimism-primitives", - "reth-primitives", - "reth-provider", - "reth-stages-types", - "reth-storage-api", - "reth-storage-errors", - "reth-trie", - "reth-trie-common", - "reth-trie-db", - "reth-trie-parallel", + "reth-chainspec 1.9.2", + "reth-db 1.9.2", + "reth-db-api 1.9.2", + "reth-db-common 1.9.2", + "reth-engine-tree 1.9.2", + "reth-node-types 1.9.2", + "reth-optimism-chainspec 1.9.2", + "reth-optimism-node 1.9.2", + "reth-optimism-primitives 1.9.2", + "reth-primitives 1.9.2", + "reth-provider 1.9.2", + "reth-stages-types 1.9.2", + "reth-storage-api 1.9.2", + "reth-storage-errors 1.9.2", + "reth-trie 1.9.2", + "reth-trie-common 1.9.2", + "reth-trie-db 1.9.2", + "reth-trie-parallel 1.9.2", "revm-primitives", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tracing", ] @@ -1932,9 +2140,9 @@ dependencies = [ "op-alloy-consensus", "op-alloy-rpc-types", "reqwest", - "reth-optimism-chainspec", - "reth-primitives", - "reth-rpc-builder", + "reth-optimism-chainspec 1.9.2", + "reth-primitives 1.9.2", + "reth-rpc-builder 1.9.2", "revm-primitives", "serde", "serde_json", @@ -1974,8 +2182,8 @@ dependencies = [ "alloy-primitives", "bop-common", "op-revm", - "reth-optimism-primitives", - "reth-primitives-traits", + "reth-optimism-primitives 1.9.2", + "reth-primitives-traits 1.9.2", "revm-primitives", "rustc-hash 2.1.1", "tracing", @@ -1999,9 +2207,9 @@ dependencies = [ "op-alloy-rpc-types", "op-alloy-rpc-types-engine", "reqwest", - "reth-optimism-payload-builder", - "reth-optimism-primitives", - "reth-rpc-layer", + "reth-optimism-payload-builder 1.9.2", + "reth-optimism-primitives 1.9.2", + "reth-rpc-layer 1.9.2", "serde", "serde_json", "tokio", @@ -2034,35 +2242,58 @@ dependencies = [ "op-alloy-rpc-types", "op-alloy-rpc-types-engine", "op-revm", - "rand 0.9.1", + "rand 0.9.2", "reqwest", - "reth-chainspec", - "reth-consensus", - "reth-db", - "reth-evm", - "reth-optimism-chainspec", - "reth-optimism-consensus", - "reth-optimism-evm", - "reth-optimism-forks", - "reth-optimism-payload-builder", - "reth-optimism-primitives", - "reth-optimism-txpool", - "reth-primitives", - "reth-primitives-traits", - "reth-provider", - "reth-trie-common", + "reth-chainspec 1.9.2", + "reth-consensus 1.9.2", + "reth-db 1.9.2", + "reth-evm 1.9.2", + "reth-optimism-chainspec 1.9.2", + "reth-optimism-consensus 1.9.2", + "reth-optimism-evm 1.9.2", + "reth-optimism-forks 1.9.2", + "reth-optimism-payload-builder 1.9.2", + "reth-optimism-primitives 1.9.2", + "reth-optimism-txpool 1.9.2", + "reth-primitives 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-provider 1.9.2", + "reth-trie-common 1.9.2", "revm", "revm-handler", "revm-inspector", "revm-primitives", "serde_json", "strum_macros 0.24.3", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tracing", "uuid", ] +[[package]] +name = "borsh" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f" +dependencies = [ + "borsh-derive", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0686c856aa6aac0c4498f936d7d6a02df690f614c03e4d906d1018062b5c5e2c" +dependencies = [ + "once_cell", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "boyer-moore-magiclen" version = "0.2.20" @@ -2123,9 +2354,23 @@ checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce" [[package]] name = "bytemuck" -version = "1.23.0" +version = "1.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9134a6ef01ce4b366b50689c94f82c14bc72bc5d0386829828a2e2752ef7958c" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] [[package]] name = "byteorder" @@ -2200,7 +2445,7 @@ dependencies = [ "semver 1.0.26", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -2246,9 +2491,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cfg_aliases" @@ -2323,7 +2568,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -2508,6 +2753,16 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "cordyceps" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "688d7fbb8092b8de775ef2536f36c8c31f2bc4006ece2e8d8ad2d17d00ce0a2a" +dependencies = [ + "loom", + "tracing", +] + [[package]] name = "core-foundation" version = "0.9.4" @@ -2543,6 +2798,12 @@ dependencies = [ "memchr", ] +[[package]] +name = "cow-utils" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "417bef24afe1460300965a25ff4a24b8b45ad011948302ec221e8a0a81eb2c79" + [[package]] name = "cpufeatures" version = "0.2.17" @@ -2715,7 +2976,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -2749,7 +3010,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -2764,7 +3025,7 @@ dependencies = [ "quote", "serde", "strsim", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -2775,7 +3036,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -2786,7 +3047,7 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core 0.21.3", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -2839,7 +3100,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d162beedaa69905488a8da94f5ac3edb4dd4788b732fadb7bd120b2625c1976" dependencies = [ "data-encoding", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -2871,12 +3132,12 @@ dependencies = [ [[package]] name = "deranged" -version = "0.4.0" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" dependencies = [ "powerfmt", - "serde", + "serde_core", ] [[package]] @@ -2898,7 +3159,7 @@ checksum = "ef941ded77d15ca19b40374869ac6000af1c9f2a4c0f3d4c70926287e6364a8f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -2909,7 +3170,7 @@ checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -2930,7 +3191,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -2940,7 +3201,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -2961,10 +3222,16 @@ dependencies = [ "convert_case", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", "unicode-xid", ] +[[package]] +name = "diatomic-waker" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab03c107fafeb3ee9f5925686dbb7a73bc76e3932abb0d2b365cb64b169cf04c" + [[package]] name = "diff" version = "0.1.13" @@ -3096,7 +3363,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -3117,6 +3384,26 @@ version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005" +[[package]] +name = "dynify" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81acb15628a3e22358bf73de5e7e62360b8a777dbcb5fc9ac7dfa9ae73723747" +dependencies = [ + "dynify-macros", +] + +[[package]] +name = "dynify-macros" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec431cd708430d5029356535259c5d645d60edd3d39c54e5eea9782d46caa7d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "ecdsa" version = "0.16.9" @@ -3166,7 +3453,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -3236,7 +3523,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -3256,7 +3543,27 @@ checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", +] + +[[package]] +name = "equator" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4711b213838dfee0117e3be6ac926007d7f433d7bbe33595975d4190cb07e6fc" +dependencies = [ + "equator-macro", +] + +[[package]] +name = "equator-macro" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", ] [[package]] @@ -3332,7 +3639,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -3367,6 +3674,12 @@ dependencies = [ "synstructure 0.12.6", ] +[[package]] +name = "fast-float2" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8eb564c5c7423d25c886fb561d1e4ee69f72354d16918afa32c08811f6b6a55" + [[package]] name = "fastrand" version = "2.3.0" @@ -3445,6 +3758,12 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "fixedbitset" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" + [[package]] name = "flate2" version = "1.1.1" @@ -3455,6 +3774,16 @@ dependencies = [ "miniz_oxide", ] +[[package]] +name = "float16" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bffafbd079d520191c7c2779ae9cf757601266cf4167d3f659ff09617ff8483" +dependencies = [ + "cfg-if", + "rustc_version 0.2.3", +] + [[package]] name = "fnv" version = "1.0.7" @@ -3539,6 +3868,19 @@ dependencies = [ "futures-util", ] +[[package]] +name = "futures-buffered" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8e0e1f38ec07ba4abbde21eed377082f17ccb988be9d988a5adbf4bafc118fd" +dependencies = [ + "cordyceps", + "diatomic-waker", + "futures-core", + "pin-project-lite", + "spin", +] + [[package]] name = "futures-channel" version = "0.3.31" @@ -3549,6 +3891,21 @@ dependencies = [ "futures-sink", ] +[[package]] +name = "futures-concurrency" +version = "7.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eb68017df91f2e477ed4bea586c59eaecaa47ed885a770d0444e21e62572cd2" +dependencies = [ + "fixedbitset", + "futures-buffered", + "futures-core", + "futures-lite", + "pin-project", + "slab", + "smallvec", +] + [[package]] name = "futures-core" version = "0.3.31" @@ -3573,14 +3930,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] -name = "futures-macro" -version = "0.3.31" +name = "futures-lite" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", ] [[package]] @@ -3653,7 +4023,7 @@ dependencies = [ "reqwest", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tracing", ] @@ -3824,7 +4194,7 @@ dependencies = [ "futures-core", "futures-sink", "http", - "indexmap 2.10.0", + "indexmap 2.12.0", "slab", "tokio", "tokio-util", @@ -3875,6 +4245,8 @@ version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" dependencies = [ + "allocator-api2", + "equivalent", "foldhash 0.2.0", "serde", ] @@ -3956,10 +4328,10 @@ dependencies = [ "idna", "ipnet", "once_cell", - "rand 0.9.1", + "rand 0.9.2", "ring", "serde", - "thiserror 2.0.12", + "thiserror 2.0.17", "tinyvec", "tokio", "tracing", @@ -3979,11 +4351,11 @@ dependencies = [ "moka", "once_cell", "parking_lot", - "rand 0.9.1", + "rand 0.9.2", "resolv-conf", "serde", "smallvec", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tracing", ] @@ -4246,6 +4618,8 @@ dependencies = [ "icu_properties", "icu_provider", "smallvec", + "utf16_iter", + "write16", "zerovec", ] @@ -4348,7 +4722,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -4389,14 +4763,15 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.10.0" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" +checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" dependencies = [ "arbitrary", "equivalent", - "hashbrown 0.15.3", + "hashbrown 0.16.0", "serde", + "serde_core", ] [[package]] @@ -4445,7 +4820,7 @@ dependencies = [ "indoc", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -4463,6 +4838,15 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "intrusive-collections" +version = "0.9.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "189d0897e4cbe8c75efedf3502c18c887b05046e59d28404d4d8e46cbc4d1e86" +dependencies = [ + "memoffset 0.9.1", +] + [[package]] name = "ipconfig" version = "0.3.2" @@ -4607,7 +4991,7 @@ dependencies = [ "rustls-pki-types", "rustls-platform-verifier", "soketto", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tokio-rustls", "tokio-util", @@ -4631,11 +5015,11 @@ dependencies = [ "jsonrpsee-types", "parking_lot", "pin-project", - "rand 0.9.1", + "rand 0.9.2", "rustc-hash 2.1.1", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tokio-stream", "tower", @@ -4660,7 +5044,7 @@ dependencies = [ "rustls-platform-verifier", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tower", "url", @@ -4676,7 +5060,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -4698,7 +5082,7 @@ dependencies = [ "serde", "serde_json", "soketto", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tokio-stream", "tokio-util", @@ -4715,7 +5099,7 @@ dependencies = [ "http", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -4873,7 +5257,7 @@ dependencies = [ "multihash", "quick-protobuf", "sha2", - "thiserror 2.0.12", + "thiserror 2.0.17", "tracing", "zeroize", ] @@ -5042,7 +5426,7 @@ checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -5090,6 +5474,15 @@ dependencies = [ "autocfg", ] +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + [[package]] name = "metrics" version = "0.24.2" @@ -5109,7 +5502,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -5123,7 +5516,7 @@ dependencies = [ "hyper", "hyper-rustls", "hyper-util", - "indexmap 2.10.0", + "indexmap 2.12.0", "ipnet", "metrics", "metrics-util", @@ -5160,7 +5553,7 @@ dependencies = [ "hashbrown 0.15.3", "metrics", "quanta", - "rand 0.9.1", + "rand 0.9.2", "rand_xoshiro", "sketches-ddsketch", ] @@ -5365,7 +5758,7 @@ dependencies = [ "cc", "cfg-if", "libc", - "memoffset", + "memoffset 0.6.5", ] [[package]] @@ -5442,6 +5835,7 @@ checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ "num-integer", "num-traits", + "serde", ] [[package]] @@ -5512,23 +5906,24 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.3" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" dependencies = [ "num_enum_derive", + "rustversion", ] [[package]] name = "num_enum_derive" -version = "0.7.3" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -5591,7 +5986,7 @@ dependencies = [ "derive_more", "serde", "serde_with", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -5642,7 +6037,7 @@ dependencies = [ "op-alloy-consensus", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -5663,7 +6058,7 @@ dependencies = [ "op-alloy-consensus", "serde", "snap", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -5706,7 +6101,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -5737,7 +6132,7 @@ dependencies = [ "futures-sink", "js-sys", "pin-project-lite", - "thiserror 2.0.12", + "thiserror 2.0.17", "tracing", ] @@ -5767,7 +6162,7 @@ dependencies = [ "opentelemetry_sdk", "prost", "reqwest", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tonic", "tracing", @@ -5803,8 +6198,8 @@ dependencies = [ "futures-util", "opentelemetry", "percent-encoding", - "rand 0.9.1", - "thiserror 2.0.12", + "rand 0.9.2", + "thiserror 2.0.17", ] [[package]] @@ -5894,9 +6289,15 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + [[package]] name = "parking_lot" version = "0.12.3" @@ -5978,7 +6379,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1db05f56d34358a8b1066f67cbb203ee3e7ed2ba674a6263a1d5ec6db2204323" dependencies = [ "memchr", - "thiserror 2.0.12", + "thiserror 2.0.17", "ucd-trie", ] @@ -6002,7 +6403,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -6056,7 +6457,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -6085,7 +6486,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -6184,7 +6585,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6837b9e10d61f45f987d50808f83d1ee3d206c66acf650c3e4ae2e1f6ddedf55" dependencies = [ "proc-macro2", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -6235,7 +6636,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -6288,7 +6689,7 @@ dependencies = [ "bit-vec", "bitflags 2.10.0", "num-traits", - "rand 0.9.1", + "rand 0.9.2", "rand_chacha 0.9.0", "rand_xorshift", "regex-syntax", @@ -6315,7 +6716,7 @@ checksum = "4ee1c9ac207483d5e7db4940700de86a9aae46ef90c48b57f99fe7edb8345e49" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -6326,7 +6727,7 @@ checksum = "095a99f75c69734802359b682be8daaf8980296731f6470434ea2c652af1dd30" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -6349,7 +6750,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -6407,7 +6808,7 @@ dependencies = [ "rustc-hash 2.1.1", "rustls", "socket2 0.5.9", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tracing", "web-time", @@ -6422,13 +6823,13 @@ dependencies = [ "bytes", "getrandom 0.3.3", "lru-slab", - "rand 0.9.1", + "rand 0.9.2", "ring", "rustc-hash 2.1.1", "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.12", + "thiserror 2.0.17", "tinyvec", "tracing", "web-time", @@ -6450,9 +6851,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.40" +version = "1.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" dependencies = [ "proc-macro2", ] @@ -6483,9 +6884,9 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ "rand_chacha 0.9.0", "rand_core 0.9.3", @@ -6549,6 +6950,16 @@ dependencies = [ "rand_core 0.9.3", ] +[[package]] +name = "rapidhash" +version = "4.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8e65c75143ce5d47c55b510297eeb1182f3c739b6043c537670e9fc18612dae" +dependencies = [ + "rand 0.9.2", + "rustversion", +] + [[package]] name = "ratatui" version = "0.29.0" @@ -6633,7 +7044,7 @@ checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b" dependencies = [ "getrandom 0.2.16", "libredox", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -6665,6 +7076,16 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +[[package]] +name = "regress" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2057b2325e68a893284d1538021ab90279adac1139957ca2a74426c6f118fb48" +dependencies = [ + "hashbrown 0.16.0", + "memchr", +] + [[package]] name = "relative-path" version = "1.9.3" @@ -6726,6 +7147,52 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95325155c684b1c89f7765e30bc1c42e4a6da51ca513615660cb8a62ef9a88e3" +[[package]] +name = "reth" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-rpc-types", + "aquamarine", + "clap", + "eyre", + "reth-chainspec 1.9.3", + "reth-cli-runner 1.9.3", + "reth-cli-util 1.9.3", + "reth-consensus 1.9.3", + "reth-consensus-common 1.9.3", + "reth-db 1.9.3", + "reth-ethereum-cli", + "reth-ethereum-payload-builder 1.9.3", + "reth-ethereum-primitives 1.9.3", + "reth-evm 1.9.3", + "reth-network 1.9.3", + "reth-network-api 1.9.3", + "reth-node-api 1.9.3", + "reth-node-builder 1.9.3", + "reth-node-core 1.9.3", + "reth-node-ethereum 1.9.3", + "reth-node-metrics 1.9.3", + "reth-payload-builder 1.9.3", + "reth-payload-primitives 1.9.3", + "reth-primitives 1.9.3", + "reth-provider 1.9.3", + "reth-ress-protocol", + "reth-ress-provider", + "reth-revm 1.9.3", + "reth-rpc 1.9.3", + "reth-rpc-api 1.9.3", + "reth-rpc-builder 1.9.3", + "reth-rpc-convert 1.9.3", + "reth-rpc-eth-types 1.9.3", + "reth-rpc-server-types 1.9.3", + "reth-tasks 1.9.3", + "reth-tokio-util 1.9.3", + "reth-transaction-pool 1.9.3", + "tokio", + "tracing", +] + [[package]] name = "reth-basic-payload-builder" version = "1.9.2" @@ -6737,15 +7204,39 @@ dependencies = [ "futures-core", "futures-util", "metrics", - "reth-chain-state", - "reth-metrics", - "reth-payload-builder", - "reth-payload-builder-primitives", - "reth-payload-primitives", - "reth-primitives-traits", - "reth-revm", - "reth-storage-api", - "reth-tasks", + "reth-chain-state 1.9.2", + "reth-metrics 1.9.2", + "reth-payload-builder 1.9.2", + "reth-payload-builder-primitives 1.9.2", + "reth-payload-primitives 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-revm 1.9.2", + "reth-storage-api 1.9.2", + "reth-tasks 1.9.2", + "tokio", + "tracing", +] + +[[package]] +name = "reth-basic-payload-builder" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "futures-core", + "futures-util", + "metrics", + "reth-chain-state 1.9.3", + "reth-metrics 1.9.3", + "reth-payload-builder 1.9.3", + "reth-payload-builder-primitives 1.9.3", + "reth-payload-primitives 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-revm 1.9.3", + "reth-storage-api 1.9.3", + "reth-tasks 1.9.3", "tokio", "tracing", ] @@ -6764,15 +7255,44 @@ dependencies = [ "metrics", "parking_lot", "pin-project", - "rand 0.9.1", - "reth-chainspec", - "reth-errors", - "reth-ethereum-primitives", - "reth-execution-types", - "reth-metrics", - "reth-primitives-traits", - "reth-storage-api", - "reth-trie", + "rand 0.9.2", + "reth-chainspec 1.9.2", + "reth-errors 1.9.2", + "reth-ethereum-primitives 1.9.2", + "reth-execution-types 1.9.2", + "reth-metrics 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-storage-api 1.9.2", + "reth-trie 1.9.2", + "revm-database", + "revm-state", + "serde", + "tokio", + "tokio-stream", + "tracing", +] + +[[package]] +name = "reth-chain-state" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "derive_more", + "metrics", + "parking_lot", + "pin-project", + "rand 0.9.2", + "reth-chainspec 1.9.3", + "reth-errors 1.9.3", + "reth-ethereum-primitives 1.9.3", + "reth-execution-types 1.9.3", + "reth-metrics 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-storage-api 1.9.3", + "reth-trie 1.9.3", "revm-database", "revm-state", "serde", @@ -6795,9 +7315,29 @@ dependencies = [ "alloy-trie", "auto_impl", "derive_more", - "reth-ethereum-forks", - "reth-network-peers", - "reth-primitives-traits", + "reth-ethereum-forks 1.9.2", + "reth-network-peers 1.9.2", + "reth-primitives-traits 1.9.2", + "serde_json", +] + +[[package]] +name = "reth-chainspec" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-chains", + "alloy-consensus", + "alloy-eips", + "alloy-evm", + "alloy-genesis", + "alloy-primitives", + "alloy-trie", + "auto_impl", + "derive_more", + "reth-ethereum-forks 1.9.3", + "reth-network-peers 1.9.3", + "reth-primitives-traits 1.9.3", "serde_json", ] @@ -6809,8 +7349,22 @@ dependencies = [ "alloy-genesis", "clap", "eyre", - "reth-cli-runner", - "reth-db", + "reth-cli-runner 1.9.2", + "reth-db 1.9.2", + "serde_json", + "shellexpand", +] + +[[package]] +name = "reth-cli" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-genesis", + "clap", + "eyre", + "reth-cli-runner 1.9.3", + "reth-db 1.9.3", "serde_json", "shellexpand", ] @@ -6838,47 +7392,122 @@ dependencies = [ "lz4", "ratatui", "reqwest", - "reth-chainspec", - "reth-cli", - "reth-cli-runner", - "reth-cli-util", - "reth-codecs", - "reth-config", - "reth-consensus", - "reth-db", - "reth-db-api", - "reth-db-common", - "reth-discv4", - "reth-discv5", - "reth-downloaders", - "reth-ecies", - "reth-era", - "reth-era-downloader", - "reth-era-utils", - "reth-eth-wire", - "reth-etl", - "reth-evm", - "reth-exex", - "reth-fs-util", - "reth-net-nat", - "reth-network", - "reth-network-p2p", - "reth-network-peers", - "reth-node-api", - "reth-node-builder", - "reth-node-core", - "reth-node-events", - "reth-node-metrics", - "reth-primitives-traits", - "reth-provider", - "reth-prune", - "reth-revm", - "reth-stages", - "reth-static-file", - "reth-static-file-types", - "reth-trie", - "reth-trie-common", - "reth-trie-db", + "reth-chainspec 1.9.2", + "reth-cli 1.9.2", + "reth-cli-runner 1.9.2", + "reth-cli-util 1.9.2", + "reth-codecs 1.9.2", + "reth-config 1.9.2", + "reth-consensus 1.9.2", + "reth-db 1.9.2", + "reth-db-api 1.9.2", + "reth-db-common 1.9.2", + "reth-discv4 1.9.2", + "reth-discv5 1.9.2", + "reth-downloaders 1.9.2", + "reth-ecies 1.9.2", + "reth-era 1.9.2", + "reth-era-downloader 1.9.2", + "reth-era-utils 1.9.2", + "reth-eth-wire 1.9.2", + "reth-etl 1.9.2", + "reth-evm 1.9.2", + "reth-exex 1.9.2", + "reth-fs-util 1.9.2", + "reth-net-nat 1.9.2", + "reth-network 1.9.2", + "reth-network-p2p 1.9.2", + "reth-network-peers 1.9.2", + "reth-node-api 1.9.2", + "reth-node-builder 1.9.2", + "reth-node-core 1.9.2", + "reth-node-events 1.9.2", + "reth-node-metrics 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-provider 1.9.2", + "reth-prune 1.9.2", + "reth-revm 1.9.2", + "reth-stages 1.9.2", + "reth-static-file 1.9.2", + "reth-static-file-types 1.9.2", + "reth-trie 1.9.2", + "reth-trie-common 1.9.2", + "reth-trie-db 1.9.2", + "secp256k1 0.30.0", + "serde", + "serde_json", + "tar", + "tokio", + "tokio-stream", + "toml", + "tracing", + "zstd", +] + +[[package]] +name = "reth-cli-commands" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-chains", + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "backon", + "clap", + "comfy-table", + "crossterm", + "eyre", + "fdlimit", + "futures", + "human_bytes", + "humantime", + "itertools 0.14.0", + "lz4", + "ratatui", + "reqwest", + "reth-chainspec 1.9.3", + "reth-cli 1.9.3", + "reth-cli-runner 1.9.3", + "reth-cli-util 1.9.3", + "reth-codecs 1.9.3", + "reth-config 1.9.3", + "reth-consensus 1.9.3", + "reth-db 1.9.3", + "reth-db-api 1.9.3", + "reth-db-common 1.9.3", + "reth-discv4 1.9.3", + "reth-discv5 1.9.3", + "reth-downloaders 1.9.3", + "reth-ecies 1.9.3", + "reth-era 1.9.3", + "reth-era-downloader 1.9.3", + "reth-era-utils 1.9.3", + "reth-eth-wire 1.9.3", + "reth-etl 1.9.3", + "reth-evm 1.9.3", + "reth-exex 1.9.3", + "reth-fs-util 1.9.3", + "reth-net-nat 1.9.3", + "reth-network 1.9.3", + "reth-network-p2p 1.9.3", + "reth-network-peers 1.9.3", + "reth-node-api 1.9.3", + "reth-node-builder 1.9.3", + "reth-node-core 1.9.3", + "reth-node-events 1.9.3", + "reth-node-metrics 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-provider 1.9.3", + "reth-prune 1.9.3", + "reth-revm 1.9.3", + "reth-stages 1.9.3", + "reth-static-file 1.9.3", + "reth-static-file-types 1.9.3", + "reth-trie 1.9.3", + "reth-trie-common 1.9.3", + "reth-trie-db 1.9.3", "secp256k1 0.30.0", "serde", "serde_json", @@ -6895,7 +7524,17 @@ name = "reth-cli-runner" version = "1.9.2" source = "git+https://github.com/gattaca-com/based-op-reth?rev=b053849462eb48e61b24d965cfee59cead7f8a3b#b053849462eb48e61b24d965cfee59cead7f8a3b" dependencies = [ - "reth-tasks", + "reth-tasks 1.9.2", + "tokio", + "tracing", +] + +[[package]] +name = "reth-cli-runner" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "reth-tasks 1.9.3", "tokio", "tracing", ] @@ -6911,10 +7550,28 @@ dependencies = [ "eyre", "libc", "rand 0.8.5", - "reth-fs-util", + "reth-fs-util 1.9.2", + "secp256k1 0.30.0", + "serde", + "thiserror 2.0.17", +] + +[[package]] +name = "reth-cli-util" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "cfg-if", + "eyre", + "libc", + "rand 0.8.5", + "reth-fs-util 1.9.3", "secp256k1 0.30.0", "serde", - "thiserror 2.0.12", + "thiserror 2.0.17", + "tikv-jemallocator", ] [[package]] @@ -6931,12 +7588,30 @@ dependencies = [ "bytes", "modular-bitfield", "op-alloy-consensus", - "reth-codecs-derive", - "reth-zstd-compressors", + "reth-codecs-derive 1.9.2", + "reth-zstd-compressors 1.9.2", "serde", "visibility", ] +[[package]] +name = "reth-codecs" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-genesis", + "alloy-primitives", + "alloy-trie", + "bytes", + "modular-bitfield", + "op-alloy-consensus", + "reth-codecs-derive 1.9.3", + "reth-zstd-compressors 1.9.3", + "serde", +] + [[package]] name = "reth-codecs-derive" version = "1.9.2" @@ -6944,7 +7619,17 @@ source = "git+https://github.com/gattaca-com/based-op-reth?rev=b053849462eb48e61 dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", +] + +[[package]] +name = "reth-codecs-derive" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", ] [[package]] @@ -6954,9 +7639,24 @@ source = "git+https://github.com/gattaca-com/based-op-reth?rev=b053849462eb48e61 dependencies = [ "eyre", "humantime-serde", - "reth-network-types", - "reth-prune-types", - "reth-stages-types", + "reth-network-types 1.9.2", + "reth-prune-types 1.9.2", + "reth-stages-types 1.9.2", + "serde", + "toml", + "url", +] + +[[package]] +name = "reth-config" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "eyre", + "humantime-serde", + "reth-network-types 1.9.3", + "reth-prune-types 1.9.3", + "reth-stages-types 1.9.3", "serde", "toml", "url", @@ -6970,9 +7670,22 @@ dependencies = [ "alloy-consensus", "alloy-primitives", "auto_impl", - "reth-execution-types", - "reth-primitives-traits", - "thiserror 2.0.12", + "reth-execution-types 1.9.2", + "reth-primitives-traits 1.9.2", + "thiserror 2.0.17", +] + +[[package]] +name = "reth-consensus" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-primitives", + "auto_impl", + "reth-execution-types 1.9.3", + "reth-primitives-traits 1.9.3", + "thiserror 2.0.17", ] [[package]] @@ -6982,9 +7695,21 @@ source = "git+https://github.com/gattaca-com/based-op-reth?rev=b053849462eb48e61 dependencies = [ "alloy-consensus", "alloy-eips", - "reth-chainspec", - "reth-consensus", - "reth-primitives-traits", + "reth-chainspec 1.9.2", + "reth-consensus 1.9.2", + "reth-primitives-traits 1.9.2", +] + +[[package]] +name = "reth-consensus-common" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "reth-chainspec 1.9.3", + "reth-consensus 1.9.3", + "reth-primitives-traits 1.9.3", ] [[package]] @@ -7004,9 +7729,35 @@ dependencies = [ "eyre", "futures", "reqwest", - "reth-node-api", - "reth-primitives-traits", - "reth-tracing", + "reth-node-api 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-tracing 1.9.2", + "ringbuffer", + "serde", + "serde_json", + "tokio", +] + +[[package]] +name = "reth-consensus-debug-client" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-json-rpc", + "alloy-primitives", + "alloy-provider", + "alloy-rpc-types-engine", + "alloy-transport", + "auto_impl", + "derive_more", + "eyre", + "futures", + "reqwest", + "reth-node-api 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-tracing 1.9.3", "ringbuffer", "serde", "serde_json", @@ -7024,19 +7775,43 @@ dependencies = [ "metrics", "page_size", "parking_lot", - "reth-db-api", - "reth-fs-util", - "reth-libmdbx", - "reth-metrics", - "reth-nippy-jar", - "reth-static-file-types", - "reth-storage-errors", - "reth-tracing", + "reth-db-api 1.9.2", + "reth-fs-util 1.9.2", + "reth-libmdbx 1.9.2", + "reth-metrics 1.9.2", + "reth-nippy-jar 1.9.2", + "reth-static-file-types 1.9.2", + "reth-storage-errors 1.9.2", + "reth-tracing 1.9.2", "rustc-hash 2.1.1", "strum 0.27.1", "sysinfo", "tempfile", - "thiserror 2.0.12", + "thiserror 2.0.17", +] + +[[package]] +name = "reth-db" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-primitives", + "derive_more", + "eyre", + "metrics", + "page_size", + "reth-db-api 1.9.3", + "reth-fs-util 1.9.3", + "reth-libmdbx 1.9.3", + "reth-metrics 1.9.3", + "reth-nippy-jar 1.9.3", + "reth-static-file-types 1.9.3", + "reth-storage-errors 1.9.3", + "reth-tracing 1.9.3", + "rustc-hash 2.1.1", + "strum 0.27.1", + "sysinfo", + "thiserror 2.0.17", ] [[package]] @@ -7054,15 +7829,41 @@ dependencies = [ "modular-bitfield", "parity-scale-codec", "proptest", - "reth-codecs", - "reth-db-models", - "reth-ethereum-primitives", - "reth-optimism-primitives", - "reth-primitives-traits", - "reth-prune-types", - "reth-stages-types", - "reth-storage-errors", - "reth-trie-common", + "reth-codecs 1.9.2", + "reth-db-models 1.9.2", + "reth-ethereum-primitives 1.9.2", + "reth-optimism-primitives 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-prune-types 1.9.2", + "reth-stages-types 1.9.2", + "reth-storage-errors 1.9.2", + "reth-trie-common 1.9.2", + "roaring", + "serde", +] + +[[package]] +name = "reth-db-api" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-genesis", + "alloy-primitives", + "bytes", + "derive_more", + "metrics", + "modular-bitfield", + "parity-scale-codec", + "reth-codecs 1.9.3", + "reth-db-models 1.9.3", + "reth-ethereum-primitives 1.9.3", + "reth-optimism-primitives 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-prune-types 1.9.3", + "reth-stages-types 1.9.3", + "reth-storage-errors 1.9.3", + "reth-trie-common 1.9.3", "roaring", "serde", ] @@ -7077,23 +7878,53 @@ dependencies = [ "alloy-primitives", "boyer-moore-magiclen", "eyre", - "reth-chainspec", - "reth-codecs", - "reth-config", - "reth-db-api", - "reth-etl", - "reth-execution-errors", - "reth-fs-util", - "reth-node-types", - "reth-primitives-traits", - "reth-provider", - "reth-stages-types", - "reth-static-file-types", - "reth-trie", - "reth-trie-db", + "reth-chainspec 1.9.2", + "reth-codecs 1.9.2", + "reth-config 1.9.2", + "reth-db-api 1.9.2", + "reth-etl 1.9.2", + "reth-execution-errors 1.9.2", + "reth-fs-util 1.9.2", + "reth-node-types 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-provider 1.9.2", + "reth-stages-types 1.9.2", + "reth-static-file-types 1.9.2", + "reth-trie 1.9.2", + "reth-trie-db 1.9.2", + "serde", + "serde_json", + "thiserror 2.0.17", + "tracing", +] + +[[package]] +name = "reth-db-common" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-genesis", + "alloy-primitives", + "boyer-moore-magiclen", + "eyre", + "reth-chainspec 1.9.3", + "reth-codecs 1.9.3", + "reth-config 1.9.3", + "reth-db-api 1.9.3", + "reth-etl 1.9.3", + "reth-execution-errors 1.9.3", + "reth-fs-util 1.9.3", + "reth-node-types 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-provider 1.9.3", + "reth-stages-types 1.9.3", + "reth-static-file-types 1.9.3", + "reth-trie 1.9.3", + "reth-trie-db 1.9.3", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", "tracing", ] @@ -7107,8 +7938,22 @@ dependencies = [ "arbitrary", "bytes", "modular-bitfield", - "reth-codecs", - "reth-primitives-traits", + "reth-codecs 1.9.2", + "reth-primitives-traits 1.9.2", + "serde", +] + +[[package]] +name = "reth-db-models" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "bytes", + "modular-bitfield", + "reth-codecs 1.9.3", + "reth-primitives-traits 1.9.3", "serde", ] @@ -7124,14 +7969,39 @@ dependencies = [ "itertools 0.14.0", "parking_lot", "rand 0.8.5", - "reth-ethereum-forks", - "reth-net-banlist", - "reth-net-nat", - "reth-network-peers", + "reth-ethereum-forks 1.9.2", + "reth-net-banlist 1.9.2", + "reth-net-nat 1.9.2", + "reth-network-peers 1.9.2", + "schnellru", + "secp256k1 0.30.0", + "serde", + "thiserror 2.0.17", + "tokio", + "tokio-stream", + "tracing", +] + +[[package]] +name = "reth-discv4" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "discv5", + "enr", + "itertools 0.14.0", + "parking_lot", + "rand 0.8.5", + "reth-ethereum-forks 1.9.3", + "reth-net-banlist 1.9.3", + "reth-net-nat 1.9.3", + "reth-network-peers 1.9.3", "schnellru", "secp256k1 0.30.0", "serde", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tokio-stream", "tracing", @@ -7150,13 +8020,37 @@ dependencies = [ "futures", "itertools 0.14.0", "metrics", - "rand 0.9.1", - "reth-chainspec", - "reth-ethereum-forks", - "reth-metrics", - "reth-network-peers", + "rand 0.9.2", + "reth-chainspec 1.9.2", + "reth-ethereum-forks 1.9.2", + "reth-metrics 1.9.2", + "reth-network-peers 1.9.2", + "secp256k1 0.30.0", + "thiserror 2.0.17", + "tokio", + "tracing", +] + +[[package]] +name = "reth-discv5" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "derive_more", + "discv5", + "enr", + "futures", + "itertools 0.14.0", + "metrics", + "rand 0.9.2", + "reth-chainspec 1.9.3", + "reth-ethereum-forks 1.9.3", + "reth-metrics 1.9.3", + "reth-network-peers 1.9.3", "secp256k1 0.30.0", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tracing", ] @@ -7172,14 +8066,38 @@ dependencies = [ "hickory-resolver", "linked_hash_set", "parking_lot", - "reth-ethereum-forks", - "reth-network-peers", - "reth-tokio-util", + "reth-ethereum-forks 1.9.2", + "reth-network-peers 1.9.2", + "reth-tokio-util 1.9.2", + "schnellru", + "secp256k1 0.30.0", + "serde", + "serde_with", + "thiserror 2.0.17", + "tokio", + "tokio-stream", + "tracing", +] + +[[package]] +name = "reth-dns-discovery" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-primitives", + "data-encoding", + "enr", + "hickory-resolver", + "linked_hash_set", + "parking_lot", + "reth-ethereum-forks 1.9.3", + "reth-network-peers 1.9.3", + "reth-tokio-util 1.9.3", "schnellru", "secp256k1 0.30.0", "serde", "serde_with", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tokio-stream", "tracing", @@ -7201,19 +8119,50 @@ dependencies = [ "metrics", "pin-project", "rayon", - "reth-config", - "reth-consensus", - "reth-ethereum-primitives", - "reth-metrics", - "reth-network-p2p", - "reth-network-peers", - "reth-primitives-traits", - "reth-provider", - "reth-storage-api", - "reth-tasks", + "reth-config 1.9.2", + "reth-consensus 1.9.2", + "reth-ethereum-primitives 1.9.2", + "reth-metrics 1.9.2", + "reth-network-p2p 1.9.2", + "reth-network-peers 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-provider 1.9.2", + "reth-storage-api 1.9.2", + "reth-tasks 1.9.2", "reth-testing-utils", "tempfile", - "thiserror 2.0.12", + "thiserror 2.0.17", + "tokio", + "tokio-stream", + "tokio-util", + "tracing", +] + +[[package]] +name = "reth-downloaders" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "async-compression", + "futures", + "futures-util", + "itertools 0.14.0", + "metrics", + "pin-project", + "rayon", + "reth-config 1.9.3", + "reth-consensus 1.9.3", + "reth-metrics 1.9.3", + "reth-network-p2p 1.9.3", + "reth-network-peers 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-storage-api 1.9.3", + "reth-tasks 1.9.3", + "thiserror 2.0.17", "tokio", "tokio-stream", "tokio-util", @@ -7239,11 +8188,42 @@ dependencies = [ "hmac", "pin-project", "rand 0.8.5", - "reth-network-peers", + "reth-network-peers 1.9.2", + "secp256k1 0.30.0", + "sha2", + "sha3", + "thiserror 2.0.17", + "tokio", + "tokio-stream", + "tokio-util", + "tracing", + "typenum", +] + +[[package]] +name = "reth-ecies" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "aes", + "alloy-primitives", + "alloy-rlp", + "block-padding", + "byteorder", + "cipher", + "concat-kdf", + "ctr", + "digest 0.10.7", + "futures", + "generic-array", + "hmac", + "pin-project", + "rand 0.8.5", + "reth-network-peers 1.9.3", "secp256k1 0.30.0", "sha2", "sha3", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tokio-stream", "tokio-util", @@ -7262,14 +8242,38 @@ dependencies = [ "eyre", "futures-util", "op-alloy-rpc-types-engine", - "reth-chainspec", - "reth-engine-primitives", - "reth-ethereum-engine-primitives", - "reth-optimism-chainspec", - "reth-payload-builder", - "reth-payload-primitives", - "reth-storage-api", - "reth-transaction-pool", + "reth-chainspec 1.9.2", + "reth-engine-primitives 1.9.2", + "reth-ethereum-engine-primitives 1.9.2", + "reth-optimism-chainspec 1.9.2", + "reth-payload-builder 1.9.2", + "reth-payload-primitives 1.9.2", + "reth-storage-api 1.9.2", + "reth-transaction-pool 1.9.2", + "tokio", + "tokio-stream", + "tracing", +] + +[[package]] +name = "reth-engine-local" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-primitives", + "alloy-rpc-types-engine", + "eyre", + "futures-util", + "op-alloy-rpc-types-engine", + "reth-chainspec 1.9.3", + "reth-engine-primitives 1.9.3", + "reth-ethereum-engine-primitives 1.9.3", + "reth-optimism-chainspec 1.9.3", + "reth-payload-builder 1.9.3", + "reth-payload-primitives 1.9.3", + "reth-storage-api 1.9.3", + "reth-transaction-pool 1.9.3", "tokio", "tokio-stream", "tracing", @@ -7286,17 +8290,42 @@ dependencies = [ "alloy-rpc-types-engine", "auto_impl", "futures", - "reth-chain-state", - "reth-errors", - "reth-ethereum-primitives", - "reth-evm", - "reth-execution-types", - "reth-payload-builder-primitives", - "reth-payload-primitives", - "reth-primitives-traits", - "reth-trie-common", + "reth-chain-state 1.9.2", + "reth-errors 1.9.2", + "reth-ethereum-primitives 1.9.2", + "reth-evm 1.9.2", + "reth-execution-types 1.9.2", + "reth-payload-builder-primitives 1.9.2", + "reth-payload-primitives 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-trie-common 1.9.2", + "serde", + "thiserror 2.0.17", + "tokio", +] + +[[package]] +name = "reth-engine-primitives" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rpc-types-engine", + "auto_impl", + "futures", + "reth-chain-state 1.9.3", + "reth-errors 1.9.3", + "reth-ethereum-primitives 1.9.3", + "reth-evm 1.9.3", + "reth-execution-types 1.9.3", + "reth-payload-builder-primitives 1.9.3", + "reth-payload-primitives 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-trie-common 1.9.3", "serde", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", ] @@ -7307,19 +8336,41 @@ source = "git+https://github.com/gattaca-com/based-op-reth?rev=b053849462eb48e61 dependencies = [ "futures", "pin-project", - "reth-chainspec", - "reth-consensus", - "reth-engine-primitives", - "reth-engine-tree", - "reth-ethereum-primitives", - "reth-evm", - "reth-network-p2p", - "reth-node-types", - "reth-payload-builder", - "reth-provider", - "reth-prune", - "reth-stages-api", - "reth-tasks", + "reth-chainspec 1.9.2", + "reth-consensus 1.9.2", + "reth-engine-primitives 1.9.2", + "reth-engine-tree 1.9.2", + "reth-ethereum-primitives 1.9.2", + "reth-evm 1.9.2", + "reth-network-p2p 1.9.2", + "reth-node-types 1.9.2", + "reth-payload-builder 1.9.2", + "reth-provider 1.9.2", + "reth-prune 1.9.2", + "reth-stages-api 1.9.2", + "reth-tasks 1.9.2", +] + +[[package]] +name = "reth-engine-service" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "futures", + "pin-project", + "reth-chainspec 1.9.3", + "reth-consensus 1.9.3", + "reth-engine-primitives 1.9.3", + "reth-engine-tree 1.9.3", + "reth-ethereum-primitives 1.9.3", + "reth-evm 1.9.3", + "reth-network-p2p 1.9.3", + "reth-node-types 1.9.3", + "reth-payload-builder 1.9.3", + "reth-provider 1.9.3", + "reth-prune 1.9.3", + "reth-stages-api 1.9.3", + "reth-tasks 1.9.3", ] [[package]] @@ -7341,38 +8392,88 @@ dependencies = [ "mini-moka", "parking_lot", "rayon", - "reth-chain-state", - "reth-chainspec", - "reth-consensus", - "reth-db", - "reth-engine-primitives", - "reth-errors", - "reth-ethereum-primitives", - "reth-evm", - "reth-execution-types", - "reth-metrics", - "reth-network-p2p", - "reth-payload-builder", - "reth-payload-primitives", - "reth-primitives-traits", - "reth-provider", - "reth-prune", - "reth-prune-types", - "reth-revm", - "reth-stages", - "reth-stages-api", - "reth-static-file", - "reth-tasks", - "reth-tracing", - "reth-trie", - "reth-trie-parallel", - "reth-trie-sparse", - "reth-trie-sparse-parallel", + "reth-chain-state 1.9.2", + "reth-chainspec 1.9.2", + "reth-consensus 1.9.2", + "reth-db 1.9.2", + "reth-engine-primitives 1.9.2", + "reth-errors 1.9.2", + "reth-ethereum-primitives 1.9.2", + "reth-evm 1.9.2", + "reth-execution-types 1.9.2", + "reth-metrics 1.9.2", + "reth-network-p2p 1.9.2", + "reth-payload-builder 1.9.2", + "reth-payload-primitives 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-provider 1.9.2", + "reth-prune 1.9.2", + "reth-prune-types 1.9.2", + "reth-revm 1.9.2", + "reth-stages 1.9.2", + "reth-stages-api 1.9.2", + "reth-static-file 1.9.2", + "reth-tasks 1.9.2", + "reth-tracing 1.9.2", + "reth-trie 1.9.2", + "reth-trie-parallel 1.9.2", + "reth-trie-sparse 1.9.2", + "reth-trie-sparse-parallel 1.9.2", + "revm", + "revm-primitives", + "schnellru", + "smallvec", + "thiserror 2.0.17", + "tokio", + "tracing", +] + +[[package]] +name = "reth-engine-tree" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-evm", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-engine", + "crossbeam-channel", + "dashmap 6.1.0", + "derive_more", + "futures", + "metrics", + "mini-moka", + "parking_lot", + "rayon", + "reth-chain-state 1.9.3", + "reth-consensus 1.9.3", + "reth-db 1.9.3", + "reth-engine-primitives 1.9.3", + "reth-errors 1.9.3", + "reth-ethereum-primitives 1.9.3", + "reth-evm 1.9.3", + "reth-execution-types 1.9.3", + "reth-metrics 1.9.3", + "reth-network-p2p 1.9.3", + "reth-payload-builder 1.9.3", + "reth-payload-primitives 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-provider 1.9.3", + "reth-prune 1.9.3", + "reth-revm 1.9.3", + "reth-stages-api 1.9.3", + "reth-tasks 1.9.3", + "reth-trie 1.9.3", + "reth-trie-parallel 1.9.3", + "reth-trie-sparse 1.9.3", + "reth-trie-sparse-parallel 1.9.3", "revm", "revm-primitives", "schnellru", "smallvec", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tracing", ] @@ -7388,16 +8489,44 @@ dependencies = [ "futures", "itertools 0.14.0", "pin-project", - "reth-chainspec", - "reth-engine-primitives", - "reth-engine-tree", - "reth-errors", - "reth-evm", - "reth-fs-util", - "reth-payload-primitives", - "reth-primitives-traits", - "reth-revm", - "reth-storage-api", + "reth-chainspec 1.9.2", + "reth-engine-primitives 1.9.2", + "reth-engine-tree 1.9.2", + "reth-errors 1.9.2", + "reth-evm 1.9.2", + "reth-fs-util 1.9.2", + "reth-payload-primitives 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-revm 1.9.2", + "reth-storage-api 1.9.2", + "serde", + "serde_json", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "reth-engine-util" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-rpc-types-engine", + "eyre", + "futures", + "itertools 0.14.0", + "pin-project", + "reth-chainspec 1.9.3", + "reth-engine-primitives 1.9.3", + "reth-engine-tree 1.9.3", + "reth-errors 1.9.3", + "reth-evm 1.9.3", + "reth-fs-util 1.9.3", + "reth-payload-primitives 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-revm 1.9.3", + "reth-storage-api 1.9.3", "serde", "serde_json", "tokio", @@ -7416,9 +8545,25 @@ dependencies = [ "alloy-rlp", "ethereum_ssz", "ethereum_ssz_derive", - "reth-ethereum-primitives", + "reth-ethereum-primitives 1.9.2", + "snap", + "thiserror 2.0.17", +] + +[[package]] +name = "reth-era" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "ethereum_ssz", + "ethereum_ssz_derive", + "reth-ethereum-primitives 1.9.3", "snap", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -7431,29 +8576,66 @@ dependencies = [ "eyre", "futures-util", "reqwest", - "reth-fs-util", + "reth-fs-util 1.9.2", "sha2", "tokio", ] [[package]] -name = "reth-era-utils" -version = "1.9.2" -source = "git+https://github.com/gattaca-com/based-op-reth?rev=b053849462eb48e61b24d965cfee59cead7f8a3b#b053849462eb48e61b24d965cfee59cead7f8a3b" -dependencies = [ +name = "reth-era-downloader" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-primitives", + "bytes", + "eyre", + "futures-util", + "reqwest", + "reth-fs-util 1.9.3", + "sha2", + "tokio", +] + +[[package]] +name = "reth-era-utils" +version = "1.9.2" +source = "git+https://github.com/gattaca-com/based-op-reth?rev=b053849462eb48e61b24d965cfee59cead7f8a3b#b053849462eb48e61b24d965cfee59cead7f8a3b" +dependencies = [ + "alloy-consensus", + "alloy-primitives", + "eyre", + "futures-util", + "reth-db-api 1.9.2", + "reth-era 1.9.2", + "reth-era-downloader 1.9.2", + "reth-etl 1.9.2", + "reth-fs-util 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-provider 1.9.2", + "reth-stages-types 1.9.2", + "reth-storage-api 1.9.2", + "tokio", + "tracing", +] + +[[package]] +name = "reth-era-utils" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ "alloy-consensus", "alloy-primitives", "eyre", "futures-util", - "reth-db-api", - "reth-era", - "reth-era-downloader", - "reth-etl", - "reth-fs-util", - "reth-primitives-traits", - "reth-provider", - "reth-stages-types", - "reth-storage-api", + "reth-db-api 1.9.3", + "reth-era 1.9.3", + "reth-era-downloader 1.9.3", + "reth-etl 1.9.3", + "reth-fs-util 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-provider 1.9.3", + "reth-stages-types 1.9.3", + "reth-storage-api 1.9.3", "tokio", "tracing", ] @@ -7463,10 +8645,21 @@ name = "reth-errors" version = "1.9.2" source = "git+https://github.com/gattaca-com/based-op-reth?rev=b053849462eb48e61b24d965cfee59cead7f8a3b#b053849462eb48e61b24d965cfee59cead7f8a3b" dependencies = [ - "reth-consensus", - "reth-execution-errors", - "reth-storage-errors", - "thiserror 2.0.12", + "reth-consensus 1.9.2", + "reth-execution-errors 1.9.2", + "reth-storage-errors 1.9.2", + "thiserror 2.0.17", +] + +[[package]] +name = "reth-errors" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "reth-consensus 1.9.3", + "reth-execution-errors 1.9.3", + "reth-storage-errors 1.9.3", + "thiserror 2.0.17", ] [[package]] @@ -7481,16 +8674,44 @@ dependencies = [ "derive_more", "futures", "pin-project", - "reth-codecs", - "reth-ecies", - "reth-eth-wire-types", - "reth-ethereum-forks", - "reth-metrics", - "reth-network-peers", - "reth-primitives-traits", + "reth-codecs 1.9.2", + "reth-ecies 1.9.2", + "reth-eth-wire-types 1.9.2", + "reth-ethereum-forks 1.9.2", + "reth-metrics 1.9.2", + "reth-network-peers 1.9.2", + "reth-primitives-traits 1.9.2", + "serde", + "snap", + "thiserror 2.0.17", + "tokio", + "tokio-stream", + "tokio-util", + "tracing", +] + +[[package]] +name = "reth-eth-wire" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-chains", + "alloy-primitives", + "alloy-rlp", + "bytes", + "derive_more", + "futures", + "pin-project", + "reth-codecs 1.9.3", + "reth-ecies 1.9.3", + "reth-eth-wire-types 1.9.3", + "reth-ethereum-forks 1.9.3", + "reth-metrics 1.9.3", + "reth-network-peers 1.9.3", + "reth-primitives-traits 1.9.3", "serde", "snap", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tokio-stream", "tokio-util", @@ -7510,12 +8731,57 @@ dependencies = [ "alloy-rlp", "bytes", "derive_more", - "reth-chainspec", - "reth-codecs-derive", - "reth-ethereum-primitives", - "reth-primitives-traits", + "reth-chainspec 1.9.2", + "reth-codecs-derive 1.9.2", + "reth-ethereum-primitives 1.9.2", + "reth-primitives-traits 1.9.2", + "serde", + "thiserror 2.0.17", +] + +[[package]] +name = "reth-eth-wire-types" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-chains", + "alloy-consensus", + "alloy-eips", + "alloy-hardforks", + "alloy-primitives", + "alloy-rlp", + "bytes", + "derive_more", + "reth-chainspec 1.9.3", + "reth-codecs-derive 1.9.3", + "reth-ethereum-primitives 1.9.3", + "reth-primitives-traits 1.9.3", "serde", - "thiserror 2.0.12", + "thiserror 2.0.17", +] + +[[package]] +name = "reth-ethereum-cli" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "clap", + "eyre", + "reth-chainspec 1.9.3", + "reth-cli 1.9.3", + "reth-cli-commands 1.9.3", + "reth-cli-runner 1.9.3", + "reth-db 1.9.3", + "reth-node-api 1.9.3", + "reth-node-builder 1.9.3", + "reth-node-core 1.9.3", + "reth-node-ethereum 1.9.3", + "reth-node-metrics 1.9.3", + "reth-rpc-server-types 1.9.3", + "reth-tracing 1.9.3", + "reth-tracing-otlp 1.9.3", + "tracing", + "url", ] [[package]] @@ -7526,11 +8792,27 @@ dependencies = [ "alloy-consensus", "alloy-eips", "alloy-primitives", - "reth-chainspec", - "reth-consensus", - "reth-consensus-common", - "reth-execution-types", - "reth-primitives-traits", + "reth-chainspec 1.9.2", + "reth-consensus 1.9.2", + "reth-consensus-common 1.9.2", + "reth-execution-types 1.9.2", + "reth-primitives-traits 1.9.2", + "tracing", +] + +[[package]] +name = "reth-ethereum-consensus" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "reth-chainspec 1.9.3", + "reth-consensus 1.9.3", + "reth-consensus-common 1.9.3", + "reth-execution-types 1.9.3", + "reth-primitives-traits 1.9.3", "tracing", ] @@ -7543,13 +8825,31 @@ dependencies = [ "alloy-primitives", "alloy-rlp", "alloy-rpc-types-engine", - "reth-engine-primitives", - "reth-ethereum-primitives", - "reth-payload-primitives", - "reth-primitives-traits", + "reth-engine-primitives 1.9.2", + "reth-ethereum-primitives 1.9.2", + "reth-payload-primitives 1.9.2", + "reth-primitives-traits 1.9.2", + "serde", + "sha2", + "thiserror 2.0.17", +] + +[[package]] +name = "reth-ethereum-engine-primitives" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-engine", + "reth-engine-primitives 1.9.3", + "reth-ethereum-primitives 1.9.3", + "reth-payload-primitives 1.9.3", + "reth-primitives-traits 1.9.3", "serde", "sha2", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -7565,6 +8865,19 @@ dependencies = [ "rustc-hash 2.1.1", ] +[[package]] +name = "reth-ethereum-forks" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-eip2124", + "alloy-hardforks", + "alloy-primitives", + "auto_impl", + "once_cell", + "rustc-hash 2.1.1", +] + [[package]] name = "reth-ethereum-payload-builder" version = "1.9.2" @@ -7575,21 +8888,50 @@ dependencies = [ "alloy-primitives", "alloy-rlp", "alloy-rpc-types-engine", - "reth-basic-payload-builder", - "reth-chainspec", - "reth-consensus-common", - "reth-errors", - "reth-ethereum-primitives", - "reth-evm", - "reth-evm-ethereum", - "reth-payload-builder", - "reth-payload-builder-primitives", - "reth-payload-primitives", - "reth-payload-validator", - "reth-primitives-traits", - "reth-revm", - "reth-storage-api", - "reth-transaction-pool", + "reth-basic-payload-builder 1.9.2", + "reth-chainspec 1.9.2", + "reth-consensus-common 1.9.2", + "reth-errors 1.9.2", + "reth-ethereum-primitives 1.9.2", + "reth-evm 1.9.2", + "reth-evm-ethereum 1.9.2", + "reth-payload-builder 1.9.2", + "reth-payload-builder-primitives 1.9.2", + "reth-payload-primitives 1.9.2", + "reth-payload-validator 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-revm 1.9.2", + "reth-storage-api 1.9.2", + "reth-transaction-pool 1.9.2", + "revm", + "tracing", +] + +[[package]] +name = "reth-ethereum-payload-builder" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-engine", + "reth-basic-payload-builder 1.9.3", + "reth-chainspec 1.9.3", + "reth-consensus-common 1.9.3", + "reth-errors 1.9.3", + "reth-ethereum-primitives 1.9.3", + "reth-evm 1.9.3", + "reth-evm-ethereum 1.9.3", + "reth-payload-builder 1.9.3", + "reth-payload-builder-primitives 1.9.3", + "reth-payload-primitives 1.9.3", + "reth-payload-validator 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-revm 1.9.3", + "reth-storage-api 1.9.3", + "reth-transaction-pool 1.9.3", "revm", "tracing", ] @@ -7607,9 +8949,28 @@ dependencies = [ "alloy-serde", "arbitrary", "modular-bitfield", - "reth-codecs", - "reth-primitives-traits", - "reth-zstd-compressors", + "reth-codecs 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-zstd-compressors 1.9.2", + "serde", + "serde_with", +] + +[[package]] +name = "reth-ethereum-primitives" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-eth", + "alloy-serde", + "modular-bitfield", + "reth-codecs 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-zstd-compressors 1.9.3", "serde", "serde_with", ] @@ -7620,7 +8981,17 @@ version = "1.9.2" source = "git+https://github.com/gattaca-com/based-op-reth?rev=b053849462eb48e61b24d965cfee59cead7f8a3b#b053849462eb48e61b24d965cfee59cead7f8a3b" dependencies = [ "rayon", - "reth-db-api", + "reth-db-api 1.9.2", + "tempfile", +] + +[[package]] +name = "reth-etl" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "rayon", + "reth-db-api 1.9.3", "tempfile", ] @@ -7637,13 +9008,36 @@ dependencies = [ "derive_more", "futures-util", "metrics", - "reth-execution-errors", - "reth-execution-types", - "reth-metrics", - "reth-primitives-traits", - "reth-storage-api", - "reth-storage-errors", - "reth-trie-common", + "reth-execution-errors 1.9.2", + "reth-execution-types 1.9.2", + "reth-metrics 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-storage-api 1.9.2", + "reth-storage-errors 1.9.2", + "reth-trie-common 1.9.2", + "revm", +] + +[[package]] +name = "reth-evm" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-evm", + "alloy-primitives", + "auto_impl", + "derive_more", + "futures-util", + "metrics", + "reth-execution-errors 1.9.3", + "reth-execution-types 1.9.3", + "reth-metrics 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-storage-api 1.9.3", + "reth-storage-errors 1.9.3", + "reth-trie-common 1.9.3", "revm", ] @@ -7659,13 +9053,33 @@ dependencies = [ "alloy-rpc-types-engine", "derive_more", "parking_lot", - "reth-chainspec", - "reth-ethereum-forks", - "reth-ethereum-primitives", - "reth-evm", - "reth-execution-types", - "reth-primitives-traits", - "reth-storage-errors", + "reth-chainspec 1.9.2", + "reth-ethereum-forks 1.9.2", + "reth-ethereum-primitives 1.9.2", + "reth-evm 1.9.2", + "reth-execution-types 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-storage-errors 1.9.2", + "revm", +] + +[[package]] +name = "reth-evm-ethereum" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-evm", + "alloy-primitives", + "alloy-rpc-types-engine", + "reth-chainspec 1.9.3", + "reth-ethereum-forks 1.9.3", + "reth-ethereum-primitives 1.9.3", + "reth-evm 1.9.3", + "reth-execution-types 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-storage-errors 1.9.3", "revm", ] @@ -7678,8 +9092,21 @@ dependencies = [ "alloy-primitives", "alloy-rlp", "nybbles", - "reth-storage-errors", - "thiserror 2.0.12", + "reth-storage-errors 1.9.2", + "thiserror 2.0.17", +] + +[[package]] +name = "reth-execution-errors" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-evm", + "alloy-primitives", + "alloy-rlp", + "nybbles", + "reth-storage-errors 1.9.3", + "thiserror 2.0.17", ] [[package]] @@ -7692,9 +9119,27 @@ dependencies = [ "alloy-evm", "alloy-primitives", "derive_more", - "reth-ethereum-primitives", - "reth-primitives-traits", - "reth-trie-common", + "reth-ethereum-primitives 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-trie-common 1.9.2", + "revm", + "serde", + "serde_with", +] + +[[package]] +name = "reth-execution-types" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-evm", + "alloy-primitives", + "derive_more", + "reth-ethereum-primitives 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-trie-common 1.9.3", "revm", "serde", "serde_with", @@ -7713,26 +9158,64 @@ dependencies = [ "itertools 0.14.0", "metrics", "parking_lot", - "reth-chain-state", - "reth-chainspec", - "reth-config", - "reth-ethereum-primitives", - "reth-evm", - "reth-exex-types", - "reth-fs-util", - "reth-metrics", - "reth-node-api", - "reth-node-core", - "reth-payload-builder", - "reth-primitives-traits", - "reth-provider", - "reth-prune-types", - "reth-revm", - "reth-stages-api", - "reth-tasks", - "reth-tracing", + "reth-chain-state 1.9.2", + "reth-chainspec 1.9.2", + "reth-config 1.9.2", + "reth-ethereum-primitives 1.9.2", + "reth-evm 1.9.2", + "reth-exex-types 1.9.2", + "reth-fs-util 1.9.2", + "reth-metrics 1.9.2", + "reth-node-api 1.9.2", + "reth-node-core 1.9.2", + "reth-payload-builder 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-provider 1.9.2", + "reth-prune-types 1.9.2", + "reth-revm 1.9.2", + "reth-stages-api 1.9.2", + "reth-tasks 1.9.2", + "reth-tracing 1.9.2", + "rmp-serde", + "thiserror 2.0.17", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "reth-exex" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "eyre", + "futures", + "itertools 0.14.0", + "metrics", + "parking_lot", + "reth-chain-state 1.9.3", + "reth-chainspec 1.9.3", + "reth-config 1.9.3", + "reth-ethereum-primitives 1.9.3", + "reth-evm 1.9.3", + "reth-exex-types 1.9.3", + "reth-fs-util 1.9.3", + "reth-metrics 1.9.3", + "reth-node-api 1.9.3", + "reth-node-core 1.9.3", + "reth-payload-builder 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-provider 1.9.3", + "reth-prune-types 1.9.3", + "reth-revm 1.9.3", + "reth-stages-api 1.9.3", + "reth-tasks 1.9.3", + "reth-tracing 1.9.3", "rmp-serde", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tokio-util", "tracing", @@ -7745,9 +9228,23 @@ source = "git+https://github.com/gattaca-com/based-op-reth?rev=b053849462eb48e61 dependencies = [ "alloy-eips", "alloy-primitives", - "reth-chain-state", - "reth-execution-types", - "reth-primitives-traits", + "reth-chain-state 1.9.2", + "reth-execution-types 1.9.2", + "reth-primitives-traits 1.9.2", + "serde", + "serde_with", +] + +[[package]] +name = "reth-exex-types" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "reth-chain-state 1.9.3", + "reth-execution-types 1.9.3", + "reth-primitives-traits 1.9.3", "serde", "serde_with", ] @@ -7759,7 +9256,17 @@ source = "git+https://github.com/gattaca-com/based-op-reth?rev=b053849462eb48e61 dependencies = [ "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", +] + +[[package]] +name = "reth-fs-util" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "serde", + "serde_json", + "thiserror 2.0.17", ] [[package]] @@ -7775,14 +9282,42 @@ dependencies = [ "futures", "jsonrpsee", "pretty_assertions", - "reth-engine-primitives", - "reth-evm", - "reth-primitives-traits", - "reth-provider", - "reth-revm", - "reth-rpc-api", - "reth-tracing", - "reth-trie", + "reth-engine-primitives 1.9.2", + "reth-evm 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-provider 1.9.2", + "reth-revm 1.9.2", + "reth-rpc-api 1.9.2", + "reth-tracing 1.9.2", + "reth-trie 1.9.2", + "revm", + "revm-bytecode", + "revm-database", + "serde", + "serde_json", +] + +[[package]] +name = "reth-invalid-block-hooks" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-debug", + "eyre", + "futures", + "jsonrpsee", + "pretty_assertions", + "reth-engine-primitives 1.9.3", + "reth-evm 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-provider 1.9.3", + "reth-revm 1.9.3", + "reth-rpc-api 1.9.3", + "reth-tracing 1.9.3", + "reth-trie 1.9.3", "revm", "revm-bytecode", "revm-database", @@ -7802,7 +9337,7 @@ dependencies = [ "jsonrpsee", "pin-project", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tokio-stream", "tokio-util", @@ -7811,8 +9346,28 @@ dependencies = [ ] [[package]] -name = "reth-libmdbx" -version = "1.9.2" +name = "reth-ipc" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "bytes", + "futures", + "futures-util", + "interprocess", + "jsonrpsee", + "pin-project", + "serde_json", + "thiserror 2.0.17", + "tokio", + "tokio-stream", + "tokio-util", + "tower", + "tracing", +] + +[[package]] +name = "reth-libmdbx" +version = "1.9.2" source = "git+https://github.com/gattaca-com/based-op-reth?rev=b053849462eb48e61b24d965cfee59cead7f8a3b#b053849462eb48e61b24d965cfee59cead7f8a3b" dependencies = [ "bitflags 2.10.0", @@ -7820,9 +9375,25 @@ dependencies = [ "dashmap 6.1.0", "derive_more", "parking_lot", - "reth-mdbx-sys", + "reth-mdbx-sys 1.9.2", + "smallvec", + "thiserror 2.0.17", + "tracing", +] + +[[package]] +name = "reth-libmdbx" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "bitflags 2.10.0", + "byteorder", + "dashmap 6.1.0", + "derive_more", + "parking_lot", + "reth-mdbx-sys 1.9.3", "smallvec", - "thiserror 2.0.12", + "thiserror 2.0.17", "tracing", ] @@ -7835,6 +9406,15 @@ dependencies = [ "cc", ] +[[package]] +name = "reth-mdbx-sys" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "bindgen 0.71.1", + "cc", +] + [[package]] name = "reth-metrics" version = "1.9.2" @@ -7847,6 +9427,18 @@ dependencies = [ "tokio-util", ] +[[package]] +name = "reth-metrics" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "futures", + "metrics", + "metrics-derive", + "tokio", + "tokio-util", +] + [[package]] name = "reth-net-banlist" version = "1.9.2" @@ -7855,6 +9447,14 @@ dependencies = [ "alloy-primitives", ] +[[package]] +name = "reth-net-banlist" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-primitives", +] + [[package]] name = "reth-net-nat" version = "1.9.2" @@ -7864,7 +9464,21 @@ dependencies = [ "if-addrs", "reqwest", "serde_with", - "thiserror 2.0.12", + "thiserror 2.0.17", + "tokio", + "tracing", +] + +[[package]] +name = "reth-net-nat" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "futures-util", + "if-addrs", + "reqwest", + "serde_with", + "thiserror 2.0.17", "tokio", "tracing", ] @@ -7889,35 +9503,90 @@ dependencies = [ "parking_lot", "pin-project", "rand 0.8.5", - "rand 0.9.1", - "reth-chainspec", - "reth-consensus", - "reth-discv4", - "reth-discv5", - "reth-dns-discovery", - "reth-ecies", - "reth-eth-wire", - "reth-eth-wire-types", - "reth-ethereum-forks", - "reth-ethereum-primitives", - "reth-fs-util", - "reth-metrics", - "reth-net-banlist", - "reth-network-api", - "reth-network-p2p", - "reth-network-peers", - "reth-network-types", - "reth-primitives-traits", - "reth-storage-api", - "reth-tasks", - "reth-tokio-util", - "reth-transaction-pool", + "rand 0.9.2", + "reth-chainspec 1.9.2", + "reth-consensus 1.9.2", + "reth-discv4 1.9.2", + "reth-discv5 1.9.2", + "reth-dns-discovery 1.9.2", + "reth-ecies 1.9.2", + "reth-eth-wire 1.9.2", + "reth-eth-wire-types 1.9.2", + "reth-ethereum-forks 1.9.2", + "reth-ethereum-primitives 1.9.2", + "reth-fs-util 1.9.2", + "reth-metrics 1.9.2", + "reth-net-banlist 1.9.2", + "reth-network-api 1.9.2", + "reth-network-p2p 1.9.2", + "reth-network-peers 1.9.2", + "reth-network-types 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-storage-api 1.9.2", + "reth-tasks 1.9.2", + "reth-tokio-util 1.9.2", + "reth-transaction-pool 1.9.2", + "rustc-hash 2.1.1", + "schnellru", + "secp256k1 0.30.0", + "serde", + "smallvec", + "thiserror 2.0.17", + "tokio", + "tokio-stream", + "tokio-util", + "tracing", +] + +[[package]] +name = "reth-network" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "aquamarine", + "auto_impl", + "derive_more", + "discv5", + "enr", + "futures", + "itertools 0.14.0", + "metrics", + "parking_lot", + "pin-project", + "rand 0.8.5", + "rand 0.9.2", + "reth-chainspec 1.9.3", + "reth-consensus 1.9.3", + "reth-discv4 1.9.3", + "reth-discv5 1.9.3", + "reth-dns-discovery 1.9.3", + "reth-ecies 1.9.3", + "reth-eth-wire 1.9.3", + "reth-eth-wire-types 1.9.3", + "reth-ethereum-forks 1.9.3", + "reth-ethereum-primitives 1.9.3", + "reth-fs-util 1.9.3", + "reth-metrics 1.9.3", + "reth-net-banlist 1.9.3", + "reth-network-api 1.9.3", + "reth-network-p2p 1.9.3", + "reth-network-peers 1.9.3", + "reth-network-types 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-storage-api 1.9.3", + "reth-tasks 1.9.3", + "reth-tokio-util 1.9.3", + "reth-transaction-pool 1.9.3", "rustc-hash 2.1.1", "schnellru", "secp256k1 0.30.0", "serde", "smallvec", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tokio-stream", "tokio-util", @@ -7937,14 +9606,39 @@ dependencies = [ "derive_more", "enr", "futures", - "reth-eth-wire-types", - "reth-ethereum-forks", - "reth-network-p2p", - "reth-network-peers", - "reth-network-types", - "reth-tokio-util", + "reth-eth-wire-types 1.9.2", + "reth-ethereum-forks 1.9.2", + "reth-network-p2p 1.9.2", + "reth-network-peers 1.9.2", + "reth-network-types 1.9.2", + "reth-tokio-util 1.9.2", + "serde", + "thiserror 2.0.17", + "tokio", + "tokio-stream", +] + +[[package]] +name = "reth-network-api" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-primitives", + "alloy-rpc-types-admin", + "alloy-rpc-types-eth", + "auto_impl", + "derive_more", + "enr", + "futures", + "reth-eth-wire-types 1.9.3", + "reth-ethereum-forks 1.9.3", + "reth-network-p2p 1.9.3", + "reth-network-peers 1.9.3", + "reth-network-types 1.9.3", + "reth-tokio-util 1.9.3", "serde", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tokio-stream", ] @@ -7961,13 +9655,35 @@ dependencies = [ "derive_more", "futures", "parking_lot", - "reth-consensus", - "reth-eth-wire-types", - "reth-ethereum-primitives", - "reth-network-peers", - "reth-network-types", - "reth-primitives-traits", - "reth-storage-errors", + "reth-consensus 1.9.2", + "reth-eth-wire-types 1.9.2", + "reth-ethereum-primitives 1.9.2", + "reth-network-peers 1.9.2", + "reth-network-types 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-storage-errors 1.9.2", + "tokio", + "tracing", +] + +[[package]] +name = "reth-network-p2p" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "auto_impl", + "derive_more", + "futures", + "reth-consensus 1.9.3", + "reth-eth-wire-types 1.9.3", + "reth-ethereum-primitives 1.9.3", + "reth-network-peers 1.9.3", + "reth-network-types 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-storage-errors 1.9.3", "tokio", "tracing", ] @@ -7982,7 +9698,22 @@ dependencies = [ "enr", "secp256k1 0.30.0", "serde_with", - "thiserror 2.0.12", + "thiserror 2.0.17", + "tokio", + "url", +] + +[[package]] +name = "reth-network-peers" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "enr", + "secp256k1 0.30.0", + "serde_with", + "thiserror 2.0.17", "tokio", "url", ] @@ -7994,8 +9725,22 @@ source = "git+https://github.com/gattaca-com/based-op-reth?rev=b053849462eb48e61 dependencies = [ "alloy-eip2124", "humantime-serde", - "reth-net-banlist", - "reth-network-peers", + "reth-net-banlist 1.9.2", + "reth-network-peers 1.9.2", + "serde", + "serde_json", + "tracing", +] + +[[package]] +name = "reth-network-types" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-eip2124", + "humantime-serde", + "reth-net-banlist 1.9.3", + "reth-network-peers 1.9.3", "serde", "serde_json", "tracing", @@ -8011,9 +9756,26 @@ dependencies = [ "derive_more", "lz4_flex", "memmap2", - "reth-fs-util", + "reth-fs-util 1.9.2", + "serde", + "thiserror 2.0.17", + "tracing", + "zstd", +] + +[[package]] +name = "reth-nippy-jar" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "anyhow", + "bincode", + "derive_more", + "lz4_flex", + "memmap2", + "reth-fs-util 1.9.3", "serde", - "thiserror 2.0.12", + "thiserror 2.0.17", "tracing", "zstd", ] @@ -8025,21 +9787,45 @@ source = "git+https://github.com/gattaca-com/based-op-reth?rev=b053849462eb48e61 dependencies = [ "alloy-rpc-types-engine", "eyre", - "reth-basic-payload-builder", - "reth-consensus", - "reth-db-api", - "reth-engine-primitives", - "reth-evm", - "reth-network-api", - "reth-node-core", - "reth-node-types", - "reth-payload-builder", - "reth-payload-builder-primitives", - "reth-payload-primitives", - "reth-provider", - "reth-tasks", - "reth-tokio-util", - "reth-transaction-pool", + "reth-basic-payload-builder 1.9.2", + "reth-consensus 1.9.2", + "reth-db-api 1.9.2", + "reth-engine-primitives 1.9.2", + "reth-evm 1.9.2", + "reth-network-api 1.9.2", + "reth-node-core 1.9.2", + "reth-node-types 1.9.2", + "reth-payload-builder 1.9.2", + "reth-payload-builder-primitives 1.9.2", + "reth-payload-primitives 1.9.2", + "reth-provider 1.9.2", + "reth-tasks 1.9.2", + "reth-tokio-util 1.9.2", + "reth-transaction-pool 1.9.2", +] + +[[package]] +name = "reth-node-api" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-rpc-types-engine", + "eyre", + "reth-basic-payload-builder 1.9.3", + "reth-consensus 1.9.3", + "reth-db-api 1.9.3", + "reth-engine-primitives 1.9.3", + "reth-evm 1.9.3", + "reth-network-api 1.9.3", + "reth-node-core 1.9.3", + "reth-node-types 1.9.3", + "reth-payload-builder 1.9.3", + "reth-payload-builder-primitives 1.9.3", + "reth-payload-primitives 1.9.3", + "reth-provider 1.9.3", + "reth-tasks 1.9.3", + "reth-tokio-util 1.9.3", + "reth-transaction-pool 1.9.3", ] [[package]] @@ -8059,50 +9845,118 @@ dependencies = [ "futures", "jsonrpsee", "rayon", - "reth-basic-payload-builder", - "reth-chain-state", - "reth-chainspec", - "reth-cli-util", - "reth-config", - "reth-consensus", - "reth-consensus-debug-client", - "reth-db", - "reth-db-api", - "reth-db-common", - "reth-downloaders", - "reth-engine-local", - "reth-engine-primitives", - "reth-engine-service", - "reth-engine-tree", - "reth-engine-util", - "reth-evm", - "reth-exex", - "reth-fs-util", - "reth-invalid-block-hooks", - "reth-network", - "reth-network-api", - "reth-network-p2p", - "reth-node-api", - "reth-node-core", - "reth-node-ethstats", - "reth-node-events", - "reth-node-metrics", - "reth-payload-builder", - "reth-primitives-traits", - "reth-provider", - "reth-prune", - "reth-rpc", - "reth-rpc-api", - "reth-rpc-builder", - "reth-rpc-engine-api", - "reth-rpc-eth-types", - "reth-rpc-layer", - "reth-stages", - "reth-static-file", - "reth-tasks", - "reth-tokio-util", - "reth-tracing", - "reth-transaction-pool", + "reth-basic-payload-builder 1.9.2", + "reth-chain-state 1.9.2", + "reth-chainspec 1.9.2", + "reth-cli-util 1.9.2", + "reth-config 1.9.2", + "reth-consensus 1.9.2", + "reth-consensus-debug-client 1.9.2", + "reth-db 1.9.2", + "reth-db-api 1.9.2", + "reth-db-common 1.9.2", + "reth-downloaders 1.9.2", + "reth-engine-local 1.9.2", + "reth-engine-primitives 1.9.2", + "reth-engine-service 1.9.2", + "reth-engine-tree 1.9.2", + "reth-engine-util 1.9.2", + "reth-evm 1.9.2", + "reth-exex 1.9.2", + "reth-fs-util 1.9.2", + "reth-invalid-block-hooks 1.9.2", + "reth-network 1.9.2", + "reth-network-api 1.9.2", + "reth-network-p2p 1.9.2", + "reth-node-api 1.9.2", + "reth-node-core 1.9.2", + "reth-node-ethstats 1.9.2", + "reth-node-events 1.9.2", + "reth-node-metrics 1.9.2", + "reth-payload-builder 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-provider 1.9.2", + "reth-prune 1.9.2", + "reth-rpc 1.9.2", + "reth-rpc-api 1.9.2", + "reth-rpc-builder 1.9.2", + "reth-rpc-engine-api 1.9.2", + "reth-rpc-eth-types 1.9.2", + "reth-rpc-layer 1.9.2", + "reth-stages 1.9.2", + "reth-static-file 1.9.2", + "reth-tasks 1.9.2", + "reth-tokio-util 1.9.2", + "reth-tracing 1.9.2", + "reth-transaction-pool 1.9.2", + "secp256k1 0.30.0", + "serde_json", + "tokio", + "tokio-stream", + "tracing", +] + +[[package]] +name = "reth-node-builder" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-provider", + "alloy-rpc-types", + "alloy-rpc-types-engine", + "aquamarine", + "eyre", + "fdlimit", + "futures", + "jsonrpsee", + "rayon", + "reth-basic-payload-builder 1.9.3", + "reth-chain-state 1.9.3", + "reth-chainspec 1.9.3", + "reth-cli-util 1.9.3", + "reth-config 1.9.3", + "reth-consensus 1.9.3", + "reth-consensus-debug-client 1.9.3", + "reth-db 1.9.3", + "reth-db-api 1.9.3", + "reth-db-common 1.9.3", + "reth-downloaders 1.9.3", + "reth-engine-local 1.9.3", + "reth-engine-primitives 1.9.3", + "reth-engine-service 1.9.3", + "reth-engine-tree 1.9.3", + "reth-engine-util 1.9.3", + "reth-evm 1.9.3", + "reth-exex 1.9.3", + "reth-fs-util 1.9.3", + "reth-invalid-block-hooks 1.9.3", + "reth-network 1.9.3", + "reth-network-api 1.9.3", + "reth-network-p2p 1.9.3", + "reth-node-api 1.9.3", + "reth-node-core 1.9.3", + "reth-node-ethstats 1.9.3", + "reth-node-events 1.9.3", + "reth-node-metrics 1.9.3", + "reth-payload-builder 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-provider 1.9.3", + "reth-prune 1.9.3", + "reth-rpc 1.9.3", + "reth-rpc-api 1.9.3", + "reth-rpc-builder 1.9.3", + "reth-rpc-engine-api 1.9.3", + "reth-rpc-eth-types 1.9.3", + "reth-rpc-layer 1.9.3", + "reth-stages 1.9.3", + "reth-static-file 1.9.3", + "reth-tasks 1.9.3", + "reth-tokio-util 1.9.3", + "reth-tracing 1.9.3", + "reth-transaction-pool 1.9.3", "secp256k1 0.30.0", "serde_json", "tokio", @@ -8125,37 +9979,90 @@ dependencies = [ "eyre", "futures", "humantime", - "rand 0.9.1", - "reth-chainspec", - "reth-cli-util", - "reth-config", - "reth-consensus", - "reth-db", - "reth-discv4", - "reth-discv5", - "reth-engine-local", - "reth-engine-primitives", - "reth-ethereum-forks", - "reth-net-nat", - "reth-network", - "reth-network-p2p", - "reth-network-peers", - "reth-primitives-traits", - "reth-prune-types", - "reth-rpc-convert", - "reth-rpc-eth-types", - "reth-rpc-server-types", - "reth-stages-types", - "reth-storage-api", - "reth-storage-errors", - "reth-tracing", - "reth-tracing-otlp", - "reth-transaction-pool", + "rand 0.9.2", + "reth-chainspec 1.9.2", + "reth-cli-util 1.9.2", + "reth-config 1.9.2", + "reth-consensus 1.9.2", + "reth-db 1.9.2", + "reth-discv4 1.9.2", + "reth-discv5 1.9.2", + "reth-engine-local 1.9.2", + "reth-engine-primitives 1.9.2", + "reth-ethereum-forks 1.9.2", + "reth-net-nat 1.9.2", + "reth-network 1.9.2", + "reth-network-p2p 1.9.2", + "reth-network-peers 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-prune-types 1.9.2", + "reth-rpc-convert 1.9.2", + "reth-rpc-eth-types 1.9.2", + "reth-rpc-server-types 1.9.2", + "reth-stages-types 1.9.2", + "reth-storage-api 1.9.2", + "reth-storage-errors 1.9.2", + "reth-tracing 1.9.2", + "reth-tracing-otlp 1.9.2", + "reth-transaction-pool 1.9.2", + "secp256k1 0.30.0", + "serde", + "shellexpand", + "strum 0.27.1", + "thiserror 2.0.17", + "toml", + "tracing", + "url", + "vergen", + "vergen-git2", +] + +[[package]] +name = "reth-node-core" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rpc-types-engine", + "clap", + "derive_more", + "dirs-next", + "eyre", + "futures", + "humantime", + "rand 0.9.2", + "reth-chainspec 1.9.3", + "reth-cli-util 1.9.3", + "reth-config 1.9.3", + "reth-consensus 1.9.3", + "reth-db 1.9.3", + "reth-discv4 1.9.3", + "reth-discv5 1.9.3", + "reth-engine-local 1.9.3", + "reth-engine-primitives 1.9.3", + "reth-ethereum-forks 1.9.3", + "reth-net-nat 1.9.3", + "reth-network 1.9.3", + "reth-network-p2p 1.9.3", + "reth-network-peers 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-prune-types 1.9.3", + "reth-rpc-convert 1.9.3", + "reth-rpc-eth-types 1.9.3", + "reth-rpc-server-types 1.9.3", + "reth-stages-types 1.9.3", + "reth-storage-api 1.9.3", + "reth-storage-errors 1.9.3", + "reth-tracing 1.9.3", + "reth-tracing-otlp 1.9.3", + "reth-transaction-pool 1.9.3", "secp256k1 0.30.0", "serde", "shellexpand", "strum 0.27.1", - "thiserror 2.0.12", + "thiserror 2.0.17", "toml", "tracing", "url", @@ -8173,30 +10080,68 @@ dependencies = [ "alloy-rpc-types-engine", "alloy-rpc-types-eth", "eyre", - "reth-chainspec", - "reth-engine-local", - "reth-engine-primitives", - "reth-ethereum-consensus", - "reth-ethereum-engine-primitives", - "reth-ethereum-payload-builder", - "reth-ethereum-primitives", - "reth-evm", - "reth-evm-ethereum", - "reth-network", - "reth-node-api", - "reth-node-builder", - "reth-payload-primitives", - "reth-primitives-traits", - "reth-provider", - "reth-revm", - "reth-rpc", - "reth-rpc-api", - "reth-rpc-builder", - "reth-rpc-eth-api", - "reth-rpc-eth-types", - "reth-rpc-server-types", - "reth-tracing", - "reth-transaction-pool", + "reth-chainspec 1.9.2", + "reth-engine-local 1.9.2", + "reth-engine-primitives 1.9.2", + "reth-ethereum-consensus 1.9.2", + "reth-ethereum-engine-primitives 1.9.2", + "reth-ethereum-payload-builder 1.9.2", + "reth-ethereum-primitives 1.9.2", + "reth-evm 1.9.2", + "reth-evm-ethereum 1.9.2", + "reth-network 1.9.2", + "reth-node-api 1.9.2", + "reth-node-builder 1.9.2", + "reth-payload-primitives 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-provider 1.9.2", + "reth-revm 1.9.2", + "reth-rpc 1.9.2", + "reth-rpc-api 1.9.2", + "reth-rpc-builder 1.9.2", + "reth-rpc-eth-api 1.9.2", + "reth-rpc-eth-types 1.9.2", + "reth-rpc-server-types 1.9.2", + "reth-tracing 1.9.2", + "reth-transaction-pool 1.9.2", + "revm", + "tokio", +] + +[[package]] +name = "reth-node-ethereum" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-eips", + "alloy-network", + "alloy-rpc-types-engine", + "alloy-rpc-types-eth", + "eyre", + "reth-chainspec 1.9.3", + "reth-engine-local 1.9.3", + "reth-engine-primitives 1.9.3", + "reth-ethereum-consensus 1.9.3", + "reth-ethereum-engine-primitives 1.9.3", + "reth-ethereum-payload-builder 1.9.3", + "reth-ethereum-primitives 1.9.3", + "reth-evm 1.9.3", + "reth-evm-ethereum 1.9.3", + "reth-network 1.9.3", + "reth-node-api 1.9.3", + "reth-node-builder 1.9.3", + "reth-payload-primitives 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-provider 1.9.3", + "reth-revm 1.9.3", + "reth-rpc 1.9.3", + "reth-rpc-api 1.9.3", + "reth-rpc-builder 1.9.3", + "reth-rpc-eth-api 1.9.3", + "reth-rpc-eth-types 1.9.3", + "reth-rpc-server-types 1.9.3", + "reth-tracing 1.9.3", + "reth-transaction-pool 1.9.3", "revm", "tokio", ] @@ -8210,14 +10155,38 @@ dependencies = [ "alloy-primitives", "chrono", "futures-util", - "reth-chain-state", - "reth-network-api", - "reth-primitives-traits", - "reth-storage-api", - "reth-transaction-pool", + "reth-chain-state 1.9.2", + "reth-network-api 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-storage-api 1.9.2", + "reth-transaction-pool 1.9.2", + "serde", + "serde_json", + "thiserror 2.0.17", + "tokio", + "tokio-stream", + "tokio-tungstenite", + "tracing", + "url", +] + +[[package]] +name = "reth-node-ethstats" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-primitives", + "chrono", + "futures-util", + "reth-chain-state 1.9.3", + "reth-network-api 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-storage-api 1.9.3", + "reth-transaction-pool 1.9.3", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tokio-stream", "tokio-tungstenite", @@ -8238,13 +10207,37 @@ dependencies = [ "futures", "humantime", "pin-project", - "reth-engine-primitives", - "reth-network-api", - "reth-primitives-traits", - "reth-prune-types", - "reth-stages", - "reth-static-file-types", - "reth-storage-api", + "reth-engine-primitives 1.9.2", + "reth-network-api 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-prune-types 1.9.2", + "reth-stages 1.9.2", + "reth-static-file-types 1.9.2", + "reth-storage-api 1.9.2", + "tokio", + "tracing", +] + +[[package]] +name = "reth-node-events" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rpc-types-engine", + "derive_more", + "futures", + "humantime", + "pin-project", + "reth-engine-primitives 1.9.3", + "reth-network-api 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-prune-types 1.9.3", + "reth-stages 1.9.3", + "reth-static-file-types 1.9.3", + "reth-storage-api 1.9.3", "tokio", "tracing", ] @@ -8263,8 +10256,30 @@ dependencies = [ "metrics-util", "procfs", "reqwest", - "reth-metrics", - "reth-tasks", + "reth-metrics 1.9.2", + "reth-tasks 1.9.2", + "tokio", + "tower", + "tracing", +] + +[[package]] +name = "reth-node-metrics" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "eyre", + "http", + "jsonrpsee-server", + "metrics", + "metrics-exporter-prometheus", + "metrics-process", + "metrics-util", + "procfs", + "reqwest", + "reth-metrics 1.9.3", + "reth-tasks 1.9.3", + "tikv-jemalloc-ctl", "tokio", "tower", "tracing", @@ -8275,11 +10290,23 @@ name = "reth-node-types" version = "1.9.2" source = "git+https://github.com/gattaca-com/based-op-reth?rev=b053849462eb48e61b24d965cfee59cead7f8a3b#b053849462eb48e61b24d965cfee59cead7f8a3b" dependencies = [ - "reth-chainspec", - "reth-db-api", - "reth-engine-primitives", - "reth-payload-primitives", - "reth-primitives-traits", + "reth-chainspec 1.9.2", + "reth-db-api 1.9.2", + "reth-engine-primitives 1.9.2", + "reth-payload-primitives 1.9.2", + "reth-primitives-traits 1.9.2", +] + +[[package]] +name = "reth-node-types" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "reth-chainspec 1.9.3", + "reth-db-api 1.9.3", + "reth-engine-primitives 1.9.3", + "reth-payload-primitives 1.9.3", + "reth-primitives-traits 1.9.3", ] [[package]] @@ -8298,16 +10325,44 @@ dependencies = [ "op-alloy-consensus", "op-alloy-rpc-types", "paste 1.0.15", - "reth-chainspec", - "reth-ethereum-forks", - "reth-network-peers", - "reth-optimism-forks", - "reth-optimism-primitives", - "reth-primitives-traits", + "reth-chainspec 1.9.2", + "reth-ethereum-forks 1.9.2", + "reth-network-peers 1.9.2", + "reth-optimism-forks 1.9.2", + "reth-optimism-primitives 1.9.2", + "reth-primitives-traits 1.9.2", + "serde", + "serde_json", + "tar-no-std", + "thiserror 2.0.17", +] + +[[package]] +name = "reth-optimism-chainspec" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-chains", + "alloy-consensus", + "alloy-eips", + "alloy-genesis", + "alloy-hardforks", + "alloy-primitives", + "derive_more", + "miniz_oxide", + "op-alloy-consensus", + "op-alloy-rpc-types", + "paste 1.0.15", + "reth-chainspec 1.9.3", + "reth-ethereum-forks 1.9.3", + "reth-network-peers 1.9.3", + "reth-optimism-forks 1.9.3", + "reth-optimism-primitives 1.9.3", + "reth-primitives-traits 1.9.3", "serde", "serde_json", "tar-no-std", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -8324,35 +10379,85 @@ dependencies = [ "eyre", "futures-util", "op-alloy-consensus", - "reth-chainspec", - "reth-cli", - "reth-cli-commands", - "reth-cli-runner", - "reth-consensus", - "reth-db", - "reth-db-api", - "reth-db-common", - "reth-downloaders", - "reth-execution-types", - "reth-fs-util", - "reth-node-builder", - "reth-node-core", - "reth-node-events", - "reth-node-metrics", - "reth-optimism-chainspec", - "reth-optimism-consensus", - "reth-optimism-evm", - "reth-optimism-node", - "reth-optimism-primitives", - "reth-primitives-traits", - "reth-provider", - "reth-prune", - "reth-rpc-server-types", - "reth-stages", - "reth-static-file", - "reth-static-file-types", - "reth-tracing", - "reth-tracing-otlp", + "reth-chainspec 1.9.2", + "reth-cli 1.9.2", + "reth-cli-commands 1.9.2", + "reth-cli-runner 1.9.2", + "reth-consensus 1.9.2", + "reth-db 1.9.2", + "reth-db-api 1.9.2", + "reth-db-common 1.9.2", + "reth-downloaders 1.9.2", + "reth-execution-types 1.9.2", + "reth-fs-util 1.9.2", + "reth-node-builder 1.9.2", + "reth-node-core 1.9.2", + "reth-node-events 1.9.2", + "reth-node-metrics 1.9.2", + "reth-optimism-chainspec 1.9.2", + "reth-optimism-consensus 1.9.2", + "reth-optimism-evm 1.9.2", + "reth-optimism-node 1.9.2", + "reth-optimism-primitives 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-provider 1.9.2", + "reth-prune 1.9.2", + "reth-rpc-server-types 1.9.2", + "reth-stages 1.9.2", + "reth-static-file 1.9.2", + "reth-static-file-types 1.9.2", + "reth-tracing 1.9.2", + "reth-tracing-otlp 1.9.2", + "serde", + "tokio", + "tokio-util", + "tracing", + "url", +] + +[[package]] +name = "reth-optimism-cli" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "clap", + "derive_more", + "eyre", + "futures-util", + "op-alloy-consensus", + "reth-chainspec 1.9.3", + "reth-cli 1.9.3", + "reth-cli-commands 1.9.3", + "reth-cli-runner 1.9.3", + "reth-consensus 1.9.3", + "reth-db 1.9.3", + "reth-db-api 1.9.3", + "reth-db-common 1.9.3", + "reth-downloaders 1.9.3", + "reth-execution-types 1.9.3", + "reth-fs-util 1.9.3", + "reth-node-builder 1.9.3", + "reth-node-core 1.9.3", + "reth-node-events 1.9.3", + "reth-node-metrics 1.9.3", + "reth-optimism-chainspec 1.9.3", + "reth-optimism-consensus 1.9.3", + "reth-optimism-evm 1.9.3", + "reth-optimism-node 1.9.3", + "reth-optimism-primitives 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-provider 1.9.3", + "reth-prune 1.9.3", + "reth-rpc-server-types 1.9.3", + "reth-stages 1.9.3", + "reth-static-file 1.9.3", + "reth-static-file-types 1.9.3", + "reth-tracing 1.9.3", + "reth-tracing-otlp 1.9.3", "serde", "tokio", "tokio-util", @@ -8369,19 +10474,44 @@ dependencies = [ "alloy-eips", "alloy-primitives", "alloy-trie", - "reth-chainspec", - "reth-consensus", - "reth-consensus-common", - "reth-execution-types", - "reth-optimism-chainspec", - "reth-optimism-forks", - "reth-optimism-primitives", - "reth-primitives-traits", - "reth-storage-api", - "reth-storage-errors", - "reth-trie-common", + "reth-chainspec 1.9.2", + "reth-consensus 1.9.2", + "reth-consensus-common 1.9.2", + "reth-execution-types 1.9.2", + "reth-optimism-chainspec 1.9.2", + "reth-optimism-forks 1.9.2", + "reth-optimism-primitives 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-storage-api 1.9.2", + "reth-storage-errors 1.9.2", + "reth-trie-common 1.9.2", + "revm", + "thiserror 2.0.17", + "tracing", +] + +[[package]] +name = "reth-optimism-consensus" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-trie", + "reth-chainspec 1.9.3", + "reth-consensus 1.9.3", + "reth-consensus-common 1.9.3", + "reth-execution-types 1.9.3", + "reth-optimism-chainspec 1.9.3", + "reth-optimism-forks 1.9.3", + "reth-optimism-primitives 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-storage-api 1.9.3", + "reth-storage-errors 1.9.3", + "reth-trie-common 1.9.3", "revm", - "thiserror 2.0.12", + "thiserror 2.0.17", "tracing", ] @@ -8398,19 +10528,47 @@ dependencies = [ "op-alloy-consensus", "op-alloy-rpc-types-engine", "op-revm", - "reth-chainspec", - "reth-evm", - "reth-execution-errors", - "reth-execution-types", - "reth-optimism-chainspec", - "reth-optimism-consensus", - "reth-optimism-forks", - "reth-optimism-primitives", - "reth-primitives-traits", - "reth-rpc-eth-api", - "reth-storage-errors", + "reth-chainspec 1.9.2", + "reth-evm 1.9.2", + "reth-execution-errors 1.9.2", + "reth-execution-types 1.9.2", + "reth-optimism-chainspec 1.9.2", + "reth-optimism-consensus 1.9.2", + "reth-optimism-forks 1.9.2", + "reth-optimism-primitives 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-rpc-eth-api 1.9.2", + "reth-storage-errors 1.9.2", + "revm", + "thiserror 2.0.17", +] + +[[package]] +name = "reth-optimism-evm" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-evm", + "alloy-op-evm", + "alloy-primitives", + "op-alloy-consensus", + "op-alloy-rpc-types-engine", + "op-revm", + "reth-chainspec 1.9.3", + "reth-evm 1.9.3", + "reth-execution-errors 1.9.3", + "reth-execution-types 1.9.3", + "reth-optimism-chainspec 1.9.3", + "reth-optimism-consensus 1.9.3", + "reth-optimism-forks 1.9.3", + "reth-optimism-primitives 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-rpc-eth-api 1.9.3", + "reth-storage-errors 1.9.3", "revm", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -8428,21 +10586,60 @@ dependencies = [ "eyre", "futures-util", "metrics", - "reth-chain-state", - "reth-engine-primitives", - "reth-errors", - "reth-evm", - "reth-execution-types", - "reth-metrics", - "reth-optimism-evm", - "reth-optimism-payload-builder", - "reth-optimism-primitives", - "reth-payload-primitives", - "reth-primitives-traits", - "reth-revm", - "reth-rpc-eth-types", - "reth-storage-api", - "reth-tasks", + "reth-chain-state 1.9.2", + "reth-engine-primitives 1.9.2", + "reth-errors 1.9.2", + "reth-evm 1.9.2", + "reth-execution-types 1.9.2", + "reth-metrics 1.9.2", + "reth-optimism-evm 1.9.2", + "reth-optimism-payload-builder 1.9.2", + "reth-optimism-primitives 1.9.2", + "reth-payload-primitives 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-revm 1.9.2", + "reth-rpc-eth-types 1.9.2", + "reth-storage-api 1.9.2", + "reth-tasks 1.9.2", + "ringbuffer", + "serde", + "serde_json", + "tokio", + "tokio-tungstenite", + "tracing", + "url", +] + +[[package]] +name = "reth-optimism-flashblocks" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rpc-types-engine", + "alloy-serde", + "brotli", + "derive_more", + "eyre", + "futures-util", + "metrics", + "reth-chain-state 1.9.3", + "reth-engine-primitives 1.9.3", + "reth-errors 1.9.3", + "reth-evm 1.9.3", + "reth-execution-types 1.9.3", + "reth-metrics 1.9.3", + "reth-optimism-evm 1.9.3", + "reth-optimism-payload-builder 1.9.3", + "reth-optimism-primitives 1.9.3", + "reth-payload-primitives 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-revm 1.9.3", + "reth-rpc-eth-types 1.9.3", + "reth-storage-api 1.9.3", + "reth-tasks 1.9.3", "ringbuffer", "serde", "serde_json", @@ -8460,7 +10657,18 @@ dependencies = [ "alloy-op-hardforks", "alloy-primitives", "once_cell", - "reth-ethereum-forks", + "reth-ethereum-forks 1.9.2", +] + +[[package]] +name = "reth-optimism-forks" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-op-hardforks", + "alloy-primitives", + "once_cell", + "reth-ethereum-forks 1.9.3", ] [[package]] @@ -8477,32 +10685,78 @@ dependencies = [ "op-alloy-consensus", "op-alloy-rpc-types-engine", "op-revm", - "reth-chainspec", - "reth-consensus", - "reth-engine-local", - "reth-evm", - "reth-network", - "reth-node-api", - "reth-node-builder", - "reth-node-core", - "reth-optimism-chainspec", - "reth-optimism-consensus", - "reth-optimism-evm", - "reth-optimism-forks", - "reth-optimism-payload-builder", - "reth-optimism-primitives", - "reth-optimism-rpc", - "reth-optimism-storage", - "reth-optimism-txpool", - "reth-payload-builder", - "reth-primitives-traits", - "reth-provider", - "reth-rpc-api", - "reth-rpc-engine-api", - "reth-rpc-server-types", - "reth-tracing", - "reth-transaction-pool", - "reth-trie-common", + "reth-chainspec 1.9.2", + "reth-consensus 1.9.2", + "reth-engine-local 1.9.2", + "reth-evm 1.9.2", + "reth-network 1.9.2", + "reth-node-api 1.9.2", + "reth-node-builder 1.9.2", + "reth-node-core 1.9.2", + "reth-optimism-chainspec 1.9.2", + "reth-optimism-consensus 1.9.2", + "reth-optimism-evm 1.9.2", + "reth-optimism-forks 1.9.2", + "reth-optimism-payload-builder 1.9.2", + "reth-optimism-primitives 1.9.2", + "reth-optimism-rpc 1.9.2", + "reth-optimism-storage 1.9.2", + "reth-optimism-txpool 1.9.2", + "reth-payload-builder 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-provider 1.9.2", + "reth-rpc-api 1.9.2", + "reth-rpc-engine-api 1.9.2", + "reth-rpc-server-types 1.9.2", + "reth-tracing 1.9.2", + "reth-transaction-pool 1.9.2", + "reth-trie-common 1.9.2", + "revm", + "serde", + "tokio", + "url", +] + +[[package]] +name = "reth-optimism-node" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-primitives", + "alloy-rpc-types-engine", + "alloy-rpc-types-eth", + "clap", + "eyre", + "op-alloy-consensus", + "op-alloy-rpc-types-engine", + "op-revm", + "reth-chainspec 1.9.3", + "reth-consensus 1.9.3", + "reth-engine-local 1.9.3", + "reth-evm 1.9.3", + "reth-network 1.9.3", + "reth-node-api 1.9.3", + "reth-node-builder 1.9.3", + "reth-node-core 1.9.3", + "reth-optimism-chainspec 1.9.3", + "reth-optimism-consensus 1.9.3", + "reth-optimism-evm 1.9.3", + "reth-optimism-forks 1.9.3", + "reth-optimism-payload-builder 1.9.3", + "reth-optimism-primitives 1.9.3", + "reth-optimism-rpc 1.9.3", + "reth-optimism-storage 1.9.3", + "reth-optimism-txpool 1.9.3", + "reth-payload-builder 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-provider 1.9.3", + "reth-rpc-api 1.9.3", + "reth-rpc-engine-api 1.9.3", + "reth-rpc-server-types 1.9.3", + "reth-tracing 1.9.3", + "reth-transaction-pool 1.9.3", + "reth-trie-common 1.9.3", "revm", "serde", "tokio", @@ -8524,28 +10778,68 @@ dependencies = [ "derive_more", "op-alloy-consensus", "op-alloy-rpc-types-engine", - "reth-basic-payload-builder", - "reth-chain-state", - "reth-chainspec", - "reth-evm", - "reth-execution-types", - "reth-optimism-evm", - "reth-optimism-forks", - "reth-optimism-primitives", - "reth-optimism-txpool", - "reth-payload-builder", - "reth-payload-builder-primitives", - "reth-payload-primitives", - "reth-payload-util", - "reth-payload-validator", - "reth-primitives-traits", - "reth-revm", - "reth-storage-api", - "reth-transaction-pool", + "reth-basic-payload-builder 1.9.2", + "reth-chain-state 1.9.2", + "reth-chainspec 1.9.2", + "reth-evm 1.9.2", + "reth-execution-types 1.9.2", + "reth-optimism-evm 1.9.2", + "reth-optimism-forks 1.9.2", + "reth-optimism-primitives 1.9.2", + "reth-optimism-txpool 1.9.2", + "reth-payload-builder 1.9.2", + "reth-payload-builder-primitives 1.9.2", + "reth-payload-primitives 1.9.2", + "reth-payload-util 1.9.2", + "reth-payload-validator 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-revm 1.9.2", + "reth-storage-api 1.9.2", + "reth-transaction-pool 1.9.2", + "revm", + "serde", + "sha2", + "thiserror 2.0.17", + "tracing", +] + +[[package]] +name = "reth-optimism-payload-builder" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-evm", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-debug", + "alloy-rpc-types-engine", + "derive_more", + "op-alloy-consensus", + "op-alloy-rpc-types-engine", + "reth-basic-payload-builder 1.9.3", + "reth-chain-state 1.9.3", + "reth-chainspec 1.9.3", + "reth-evm 1.9.3", + "reth-execution-types 1.9.3", + "reth-optimism-evm 1.9.3", + "reth-optimism-forks 1.9.3", + "reth-optimism-primitives 1.9.3", + "reth-optimism-txpool 1.9.3", + "reth-payload-builder 1.9.3", + "reth-payload-builder-primitives 1.9.3", + "reth-payload-primitives 1.9.3", + "reth-payload-util 1.9.3", + "reth-payload-validator 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-revm 1.9.3", + "reth-storage-api 1.9.3", + "reth-transaction-pool 1.9.3", "revm", "serde", "sha2", - "thiserror 2.0.12", + "thiserror 2.0.17", "tracing", ] @@ -8562,9 +10856,28 @@ dependencies = [ "bytes", "modular-bitfield", "op-alloy-consensus", - "reth-codecs", - "reth-primitives-traits", - "reth-zstd-compressors", + "reth-codecs 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-zstd-compressors 1.9.2", + "serde", + "serde_with", +] + +[[package]] +name = "reth-optimism-primitives" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "bytes", + "modular-bitfield", + "op-alloy-consensus", + "reth-codecs 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-zstd-compressors 1.9.3", "serde", "serde_with", ] @@ -8599,31 +10912,92 @@ dependencies = [ "op-alloy-rpc-types-engine", "op-revm", "reqwest", - "reth-chain-state", - "reth-chainspec", - "reth-evm", - "reth-metrics", - "reth-node-api", - "reth-node-builder", - "reth-optimism-evm", - "reth-optimism-flashblocks", - "reth-optimism-forks", - "reth-optimism-payload-builder", - "reth-optimism-primitives", - "reth-optimism-txpool", - "reth-primitives-traits", - "reth-rpc", - "reth-rpc-api", - "reth-rpc-engine-api", - "reth-rpc-eth-api", - "reth-rpc-eth-types", - "reth-rpc-server-types", - "reth-storage-api", - "reth-tasks", - "reth-transaction-pool", + "reth-chain-state 1.9.2", + "reth-chainspec 1.9.2", + "reth-evm 1.9.2", + "reth-metrics 1.9.2", + "reth-node-api 1.9.2", + "reth-node-builder 1.9.2", + "reth-optimism-evm 1.9.2", + "reth-optimism-flashblocks 1.9.2", + "reth-optimism-forks 1.9.2", + "reth-optimism-payload-builder 1.9.2", + "reth-optimism-primitives 1.9.2", + "reth-optimism-txpool 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-rpc 1.9.2", + "reth-rpc-api 1.9.2", + "reth-rpc-engine-api 1.9.2", + "reth-rpc-eth-api 1.9.2", + "reth-rpc-eth-types 1.9.2", + "reth-rpc-server-types 1.9.2", + "reth-storage-api 1.9.2", + "reth-tasks 1.9.2", + "reth-transaction-pool 1.9.2", + "revm", + "serde_json", + "thiserror 2.0.17", + "tokio", + "tokio-stream", + "tower", + "tracing", +] + +[[package]] +name = "reth-optimism-rpc" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-json-rpc", + "alloy-primitives", + "alloy-rpc-client", + "alloy-rpc-types-debug", + "alloy-rpc-types-engine", + "alloy-rpc-types-eth", + "alloy-transport", + "alloy-transport-http", + "async-trait", + "derive_more", + "eyre", + "futures", + "jsonrpsee", + "jsonrpsee-core", + "jsonrpsee-types", + "metrics", + "op-alloy-consensus", + "op-alloy-network", + "op-alloy-rpc-jsonrpsee", + "op-alloy-rpc-types", + "op-alloy-rpc-types-engine", + "op-revm", + "reqwest", + "reth-chain-state 1.9.3", + "reth-chainspec 1.9.3", + "reth-evm 1.9.3", + "reth-metrics 1.9.3", + "reth-node-api 1.9.3", + "reth-node-builder 1.9.3", + "reth-optimism-evm 1.9.3", + "reth-optimism-flashblocks 1.9.3", + "reth-optimism-forks 1.9.3", + "reth-optimism-payload-builder 1.9.3", + "reth-optimism-primitives 1.9.3", + "reth-optimism-txpool 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-rpc 1.9.3", + "reth-rpc-api 1.9.3", + "reth-rpc-engine-api 1.9.3", + "reth-rpc-eth-api 1.9.3", + "reth-rpc-eth-types 1.9.3", + "reth-rpc-server-types 1.9.3", + "reth-storage-api 1.9.3", + "reth-tasks 1.9.3", + "reth-transaction-pool 1.9.3", "revm", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tokio-stream", "tower", @@ -8636,8 +11010,18 @@ version = "1.9.2" source = "git+https://github.com/gattaca-com/based-op-reth?rev=b053849462eb48e61b24d965cfee59cead7f8a3b#b053849462eb48e61b24d965cfee59cead7f8a3b" dependencies = [ "alloy-consensus", - "reth-optimism-primitives", - "reth-storage-api", + "reth-optimism-primitives 1.9.2", + "reth-storage-api 1.9.2", +] + +[[package]] +name = "reth-optimism-storage" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "reth-optimism-primitives 1.9.3", + "reth-storage-api 1.9.3", ] [[package]] @@ -8661,17 +11045,53 @@ dependencies = [ "op-alloy-rpc-types", "op-revm", "parking_lot", - "reth-chain-state", - "reth-chainspec", - "reth-metrics", - "reth-optimism-evm", - "reth-optimism-forks", - "reth-optimism-primitives", - "reth-primitives-traits", - "reth-storage-api", - "reth-transaction-pool", + "reth-chain-state 1.9.2", + "reth-chainspec 1.9.2", + "reth-metrics 1.9.2", + "reth-optimism-evm 1.9.2", + "reth-optimism-forks 1.9.2", + "reth-optimism-primitives 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-storage-api 1.9.2", + "reth-transaction-pool 1.9.2", + "serde", + "thiserror 2.0.17", + "tokio", + "tracing", +] + +[[package]] +name = "reth-optimism-txpool" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-json-rpc", + "alloy-primitives", + "alloy-rpc-client", + "alloy-rpc-types-eth", + "alloy-serde", + "c-kzg", + "derive_more", + "futures-util", + "metrics", + "op-alloy-consensus", + "op-alloy-flz", + "op-alloy-rpc-types", + "op-revm", + "parking_lot", + "reth-chain-state 1.9.3", + "reth-chainspec 1.9.3", + "reth-metrics 1.9.3", + "reth-optimism-evm 1.9.3", + "reth-optimism-forks 1.9.3", + "reth-optimism-primitives 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-storage-api 1.9.3", + "reth-transaction-pool 1.9.3", "serde", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tracing", ] @@ -8686,12 +11106,33 @@ dependencies = [ "alloy-rpc-types", "futures-util", "metrics", - "reth-chain-state", - "reth-ethereum-engine-primitives", - "reth-metrics", - "reth-payload-builder-primitives", - "reth-payload-primitives", - "reth-primitives-traits", + "reth-chain-state 1.9.2", + "reth-ethereum-engine-primitives 1.9.2", + "reth-metrics 1.9.2", + "reth-payload-builder-primitives 1.9.2", + "reth-payload-primitives 1.9.2", + "reth-primitives-traits 1.9.2", + "tokio", + "tokio-stream", + "tracing", +] + +[[package]] +name = "reth-payload-builder" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-primitives", + "alloy-rpc-types", + "futures-util", + "metrics", + "reth-chain-state 1.9.3", + "reth-ethereum-engine-primitives 1.9.3", + "reth-metrics 1.9.3", + "reth-payload-builder-primitives 1.9.3", + "reth-payload-primitives 1.9.3", + "reth-primitives-traits 1.9.3", "tokio", "tokio-stream", "tracing", @@ -8703,7 +11144,19 @@ version = "1.9.2" source = "git+https://github.com/gattaca-com/based-op-reth?rev=b053849462eb48e61b24d965cfee59cead7f8a3b#b053849462eb48e61b24d965cfee59cead7f8a3b" dependencies = [ "pin-project", - "reth-payload-primitives", + "reth-payload-primitives 1.9.2", + "tokio", + "tokio-stream", + "tracing", +] + +[[package]] +name = "reth-payload-builder-primitives" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "pin-project", + "reth-payload-primitives 1.9.3", "tokio", "tokio-stream", "tracing", @@ -8720,12 +11173,32 @@ dependencies = [ "auto_impl", "either", "op-alloy-rpc-types-engine", - "reth-chain-state", - "reth-chainspec", - "reth-errors", - "reth-primitives-traits", + "reth-chain-state 1.9.2", + "reth-chainspec 1.9.2", + "reth-errors 1.9.2", + "reth-primitives-traits 1.9.2", + "serde", + "thiserror 2.0.17", + "tokio", +] + +[[package]] +name = "reth-payload-primitives" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "alloy-rpc-types-engine", + "auto_impl", + "either", + "op-alloy-rpc-types-engine", + "reth-chain-state 1.9.3", + "reth-chainspec 1.9.3", + "reth-errors 1.9.3", + "reth-primitives-traits 1.9.3", "serde", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", ] @@ -8736,7 +11209,17 @@ source = "git+https://github.com/gattaca-com/based-op-reth?rev=b053849462eb48e61 dependencies = [ "alloy-consensus", "alloy-primitives", - "reth-transaction-pool", + "reth-transaction-pool 1.9.2", +] + +[[package]] +name = "reth-payload-util" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-primitives", + "reth-transaction-pool 1.9.3", ] [[package]] @@ -8746,7 +11229,17 @@ source = "git+https://github.com/gattaca-com/based-op-reth?rev=b053849462eb48e61 dependencies = [ "alloy-consensus", "alloy-rpc-types-engine", - "reth-primitives-traits", + "reth-primitives-traits 1.9.2", +] + +[[package]] +name = "reth-payload-validator" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-rpc-types-engine", + "reth-primitives-traits 1.9.3", ] [[package]] @@ -8757,10 +11250,23 @@ dependencies = [ "alloy-consensus", "c-kzg", "once_cell", - "reth-ethereum-forks", - "reth-ethereum-primitives", - "reth-primitives-traits", - "reth-static-file-types", + "reth-ethereum-forks 1.9.2", + "reth-ethereum-primitives 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-static-file-types 1.9.2", +] + +[[package]] +name = "reth-primitives" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "once_cell", + "reth-ethereum-forks 1.9.3", + "reth-ethereum-primitives 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-static-file-types 1.9.3", ] [[package]] @@ -8786,14 +11292,44 @@ dependencies = [ "proptest", "proptest-arbitrary-interop", "rayon", - "reth-codecs", + "reth-codecs 1.9.2", + "revm-bytecode", + "revm-primitives", + "revm-state", + "secp256k1 0.30.0", + "serde", + "serde_with", + "thiserror 2.0.17", +] + +[[package]] +name = "reth-primitives-traits" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-genesis", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-eth", + "alloy-trie", + "auto_impl", + "byteorder", + "bytes", + "derive_more", + "modular-bitfield", + "once_cell", + "op-alloy-consensus", + "rayon", + "reth-codecs 1.9.3", "revm-bytecode", "revm-primitives", "revm-state", "secp256k1 0.30.0", "serde", "serde_with", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -8812,27 +11348,27 @@ dependencies = [ "notify", "parking_lot", "rayon", - "reth-chain-state", - "reth-chainspec", - "reth-codecs", - "reth-db", - "reth-db-api", - "reth-errors", - "reth-ethereum-engine-primitives", - "reth-ethereum-primitives", - "reth-execution-types", - "reth-fs-util", - "reth-metrics", - "reth-nippy-jar", - "reth-node-types", - "reth-primitives-traits", - "reth-prune-types", - "reth-stages-types", - "reth-static-file-types", - "reth-storage-api", - "reth-storage-errors", - "reth-trie", - "reth-trie-db", + "reth-chain-state 1.9.2", + "reth-chainspec 1.9.2", + "reth-codecs 1.9.2", + "reth-db 1.9.2", + "reth-db-api 1.9.2", + "reth-errors 1.9.2", + "reth-ethereum-engine-primitives 1.9.2", + "reth-ethereum-primitives 1.9.2", + "reth-execution-types 1.9.2", + "reth-fs-util 1.9.2", + "reth-metrics 1.9.2", + "reth-nippy-jar 1.9.2", + "reth-node-types 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-prune-types 1.9.2", + "reth-stages-types 1.9.2", + "reth-static-file-types 1.9.2", + "reth-storage-api 1.9.2", + "reth-storage-errors 1.9.2", + "reth-trie 1.9.2", + "reth-trie-db 1.9.2", "revm-database", "revm-state", "strum 0.27.1", @@ -8840,6 +11376,47 @@ dependencies = [ "tracing", ] +[[package]] +name = "reth-provider" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rpc-types-engine", + "dashmap 6.1.0", + "eyre", + "itertools 0.14.0", + "metrics", + "notify", + "parking_lot", + "rayon", + "reth-chain-state 1.9.3", + "reth-chainspec 1.9.3", + "reth-codecs 1.9.3", + "reth-db 1.9.3", + "reth-db-api 1.9.3", + "reth-errors 1.9.3", + "reth-ethereum-primitives 1.9.3", + "reth-execution-types 1.9.3", + "reth-fs-util 1.9.3", + "reth-metrics 1.9.3", + "reth-nippy-jar 1.9.3", + "reth-node-types 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-prune-types 1.9.3", + "reth-stages-types 1.9.3", + "reth-static-file-types 1.9.3", + "reth-storage-api 1.9.3", + "reth-storage-errors 1.9.3", + "reth-trie 1.9.3", + "reth-trie-db 1.9.3", + "revm-database", + "strum 0.27.1", + "tracing", +] + [[package]] name = "reth-prune" version = "1.9.2" @@ -8851,18 +11428,45 @@ dependencies = [ "itertools 0.14.0", "metrics", "rayon", - "reth-config", - "reth-db-api", - "reth-errors", - "reth-exex-types", - "reth-metrics", - "reth-primitives-traits", - "reth-provider", - "reth-prune-types", - "reth-static-file-types", - "reth-tokio-util", + "reth-config 1.9.2", + "reth-db-api 1.9.2", + "reth-errors 1.9.2", + "reth-exex-types 1.9.2", + "reth-metrics 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-provider 1.9.2", + "reth-prune-types 1.9.2", + "reth-static-file-types 1.9.2", + "reth-tokio-util 1.9.2", + "rustc-hash 2.1.1", + "thiserror 2.0.17", + "tokio", + "tracing", +] + +[[package]] +name = "reth-prune" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "itertools 0.14.0", + "metrics", + "rayon", + "reth-config 1.9.3", + "reth-db-api 1.9.3", + "reth-errors 1.9.3", + "reth-exex-types 1.9.3", + "reth-metrics 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-provider 1.9.3", + "reth-prune-types 1.9.3", + "reth-static-file-types 1.9.3", + "reth-tokio-util 1.9.3", "rustc-hash 2.1.1", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tracing", ] @@ -8876,10 +11480,70 @@ dependencies = [ "arbitrary", "derive_more", "modular-bitfield", - "reth-codecs", + "reth-codecs 1.9.2", + "serde", + "strum 0.27.1", + "thiserror 2.0.17", +] + +[[package]] +name = "reth-prune-types" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-primitives", + "derive_more", + "modular-bitfield", + "reth-codecs 1.9.3", "serde", "strum 0.27.1", - "thiserror 2.0.12", + "thiserror 2.0.17", +] + +[[package]] +name = "reth-ress-protocol" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-primitives", + "alloy-rlp", + "futures", + "reth-eth-wire 1.9.3", + "reth-ethereum-primitives 1.9.3", + "reth-network 1.9.3", + "reth-network-api 1.9.3", + "reth-storage-errors 1.9.3", + "tokio", + "tokio-stream", + "tracing", +] + +[[package]] +name = "reth-ress-provider" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-primitives", + "eyre", + "futures", + "parking_lot", + "reth-chain-state 1.9.3", + "reth-errors 1.9.3", + "reth-ethereum-primitives 1.9.3", + "reth-evm 1.9.3", + "reth-node-api 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-ress-protocol", + "reth-revm 1.9.3", + "reth-storage-api 1.9.3", + "reth-tasks 1.9.3", + "reth-tokio-util 1.9.3", + "reth-trie 1.9.3", + "schnellru", + "tokio", + "tracing", ] [[package]] @@ -8888,17 +11552,109 @@ version = "1.9.2" source = "git+https://github.com/gattaca-com/based-op-reth?rev=b053849462eb48e61b24d965cfee59cead7f8a3b#b053849462eb48e61b24d965cfee59cead7f8a3b" dependencies = [ "alloy-primitives", - "reth-primitives-traits", - "reth-storage-api", - "reth-storage-errors", - "reth-trie", + "reth-primitives-traits 1.9.2", + "reth-storage-api 1.9.2", + "reth-storage-errors 1.9.2", + "reth-trie 1.9.2", "revm", ] +[[package]] +name = "reth-revm" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-primitives", + "reth-primitives-traits 1.9.3", + "reth-storage-api 1.9.3", + "reth-storage-errors 1.9.3", + "reth-trie 1.9.3", + "revm", +] + +[[package]] +name = "reth-rpc" +version = "1.9.2" +source = "git+https://github.com/gattaca-com/based-op-reth?rev=b053849462eb48e61b24d965cfee59cead7f8a3b#b053849462eb48e61b24d965cfee59cead7f8a3b" +dependencies = [ + "alloy-consensus", + "alloy-dyn-abi", + "alloy-eips", + "alloy-evm", + "alloy-genesis", + "alloy-network", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-client", + "alloy-rpc-types", + "alloy-rpc-types-admin", + "alloy-rpc-types-beacon", + "alloy-rpc-types-debug", + "alloy-rpc-types-engine", + "alloy-rpc-types-eth", + "alloy-rpc-types-mev", + "alloy-rpc-types-trace", + "alloy-rpc-types-txpool", + "alloy-serde", + "alloy-signer", + "alloy-signer-local", + "async-trait", + "derive_more", + "dyn-clone", + "futures", + "http", + "http-body", + "hyper", + "itertools 0.14.0", + "jsonrpsee", + "jsonrpsee-types", + "jsonwebtoken", + "parking_lot", + "pin-project", + "reth-chain-state 1.9.2", + "reth-chainspec 1.9.2", + "reth-consensus 1.9.2", + "reth-consensus-common 1.9.2", + "reth-engine-primitives 1.9.2", + "reth-errors 1.9.2", + "reth-evm 1.9.2", + "reth-evm-ethereum 1.9.2", + "reth-execution-types 1.9.2", + "reth-metrics 1.9.2", + "reth-network-api 1.9.2", + "reth-network-peers 1.9.2", + "reth-network-types 1.9.2", + "reth-node-api 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-revm 1.9.2", + "reth-rpc-api 1.9.2", + "reth-rpc-convert 1.9.2", + "reth-rpc-engine-api 1.9.2", + "reth-rpc-eth-api 1.9.2", + "reth-rpc-eth-types 1.9.2", + "reth-rpc-server-types 1.9.2", + "reth-storage-api 1.9.2", + "reth-tasks 1.9.2", + "reth-transaction-pool 1.9.2", + "reth-trie-common 1.9.2", + "revm", + "revm-inspectors", + "revm-primitives", + "serde", + "serde_json", + "sha2", + "thiserror 2.0.17", + "tokio", + "tokio-stream", + "tower", + "tracing", + "tracing-futures", +] + [[package]] name = "reth-rpc" -version = "1.9.2" -source = "git+https://github.com/gattaca-com/based-op-reth?rev=b053849462eb48e61b24d965cfee59cead7f8a3b#b053849462eb48e61b24d965cfee59cead7f8a3b" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -8934,39 +11690,39 @@ dependencies = [ "jsonwebtoken", "parking_lot", "pin-project", - "reth-chain-state", - "reth-chainspec", - "reth-consensus", - "reth-consensus-common", - "reth-engine-primitives", - "reth-errors", - "reth-evm", - "reth-evm-ethereum", - "reth-execution-types", - "reth-metrics", - "reth-network-api", - "reth-network-peers", - "reth-network-types", - "reth-node-api", - "reth-primitives-traits", - "reth-revm", - "reth-rpc-api", - "reth-rpc-convert", - "reth-rpc-engine-api", - "reth-rpc-eth-api", - "reth-rpc-eth-types", - "reth-rpc-server-types", - "reth-storage-api", - "reth-tasks", - "reth-transaction-pool", - "reth-trie-common", + "reth-chain-state 1.9.3", + "reth-chainspec 1.9.3", + "reth-consensus 1.9.3", + "reth-consensus-common 1.9.3", + "reth-engine-primitives 1.9.3", + "reth-errors 1.9.3", + "reth-evm 1.9.3", + "reth-evm-ethereum 1.9.3", + "reth-execution-types 1.9.3", + "reth-metrics 1.9.3", + "reth-network-api 1.9.3", + "reth-network-peers 1.9.3", + "reth-network-types 1.9.3", + "reth-node-api 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-revm 1.9.3", + "reth-rpc-api 1.9.3", + "reth-rpc-convert 1.9.3", + "reth-rpc-engine-api 1.9.3", + "reth-rpc-eth-api 1.9.3", + "reth-rpc-eth-types 1.9.3", + "reth-rpc-server-types 1.9.3", + "reth-storage-api 1.9.3", + "reth-tasks 1.9.3", + "reth-transaction-pool 1.9.3", + "reth-trie-common 1.9.3", "revm", "revm-inspectors", "revm-primitives", "serde", "serde_json", "sha2", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tokio-stream", "tower", @@ -8995,11 +11751,39 @@ dependencies = [ "alloy-rpc-types-txpool", "alloy-serde", "jsonrpsee", - "reth-chain-state", - "reth-engine-primitives", - "reth-network-peers", - "reth-rpc-eth-api", - "reth-trie-common", + "reth-chain-state 1.9.2", + "reth-engine-primitives 1.9.2", + "reth-network-peers 1.9.2", + "reth-rpc-eth-api 1.9.2", + "reth-trie-common 1.9.2", +] + +[[package]] +name = "reth-rpc-api" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-eips", + "alloy-genesis", + "alloy-json-rpc", + "alloy-primitives", + "alloy-rpc-types", + "alloy-rpc-types-admin", + "alloy-rpc-types-anvil", + "alloy-rpc-types-beacon", + "alloy-rpc-types-debug", + "alloy-rpc-types-engine", + "alloy-rpc-types-eth", + "alloy-rpc-types-mev", + "alloy-rpc-types-trace", + "alloy-rpc-types-txpool", + "alloy-serde", + "jsonrpsee", + "reth-chain-state 1.9.3", + "reth-engine-primitives 1.9.3", + "reth-network-peers 1.9.3", + "reth-rpc-eth-api 1.9.3", + "reth-trie-common 1.9.3", ] [[package]] @@ -9014,26 +11798,65 @@ dependencies = [ "jsonrpsee", "metrics", "pin-project", - "reth-chain-state", - "reth-chainspec", - "reth-consensus", - "reth-evm", - "reth-ipc", - "reth-metrics", - "reth-network-api", - "reth-node-core", - "reth-primitives-traits", - "reth-rpc", - "reth-rpc-api", - "reth-rpc-eth-api", - "reth-rpc-eth-types", - "reth-rpc-layer", - "reth-rpc-server-types", - "reth-storage-api", - "reth-tasks", - "reth-transaction-pool", - "serde", - "thiserror 2.0.12", + "reth-chain-state 1.9.2", + "reth-chainspec 1.9.2", + "reth-consensus 1.9.2", + "reth-evm 1.9.2", + "reth-ipc 1.9.2", + "reth-metrics 1.9.2", + "reth-network-api 1.9.2", + "reth-node-core 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-rpc 1.9.2", + "reth-rpc-api 1.9.2", + "reth-rpc-eth-api 1.9.2", + "reth-rpc-eth-types 1.9.2", + "reth-rpc-layer 1.9.2", + "reth-rpc-server-types 1.9.2", + "reth-storage-api 1.9.2", + "reth-tasks 1.9.2", + "reth-transaction-pool 1.9.2", + "serde", + "thiserror 2.0.17", + "tokio", + "tokio-util", + "tower", + "tower-http", + "tracing", +] + +[[package]] +name = "reth-rpc-builder" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-network", + "alloy-provider", + "dyn-clone", + "http", + "jsonrpsee", + "metrics", + "pin-project", + "reth-chain-state 1.9.3", + "reth-chainspec 1.9.3", + "reth-consensus 1.9.3", + "reth-evm 1.9.3", + "reth-ipc 1.9.3", + "reth-metrics 1.9.3", + "reth-network-api 1.9.3", + "reth-node-core 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-rpc 1.9.3", + "reth-rpc-api 1.9.3", + "reth-rpc-eth-api 1.9.3", + "reth-rpc-eth-types 1.9.3", + "reth-rpc-layer 1.9.3", + "reth-rpc-server-types 1.9.3", + "reth-storage-api 1.9.3", + "reth-tasks 1.9.3", + "reth-transaction-pool 1.9.3", + "serde", + "thiserror 2.0.17", "tokio", "tokio-util", "tower", @@ -9059,13 +11882,40 @@ dependencies = [ "op-alloy-network", "op-alloy-rpc-types", "op-revm", - "reth-ethereum-primitives", - "reth-evm", - "reth-optimism-primitives", - "reth-primitives-traits", - "reth-storage-api", + "reth-ethereum-primitives 1.9.2", + "reth-evm 1.9.2", + "reth-optimism-primitives 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-storage-api 1.9.2", + "revm-context", + "thiserror 2.0.17", +] + +[[package]] +name = "reth-rpc-convert" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-json-rpc", + "alloy-network", + "alloy-primitives", + "alloy-rpc-types-eth", + "alloy-signer", + "auto_impl", + "dyn-clone", + "jsonrpsee-types", + "op-alloy-consensus", + "op-alloy-network", + "op-alloy-rpc-types", + "op-revm", + "reth-ethereum-primitives 1.9.3", + "reth-evm 1.9.3", + "reth-optimism-primitives 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-storage-api 1.9.3", "revm-context", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -9081,19 +11931,49 @@ dependencies = [ "jsonrpsee-types", "metrics", "parking_lot", - "reth-chainspec", - "reth-engine-primitives", - "reth-metrics", - "reth-payload-builder", - "reth-payload-builder-primitives", - "reth-payload-primitives", - "reth-primitives-traits", - "reth-rpc-api", - "reth-storage-api", - "reth-tasks", - "reth-transaction-pool", + "reth-chainspec 1.9.2", + "reth-engine-primitives 1.9.2", + "reth-metrics 1.9.2", + "reth-payload-builder 1.9.2", + "reth-payload-builder-primitives 1.9.2", + "reth-payload-primitives 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-rpc-api 1.9.2", + "reth-storage-api 1.9.2", + "reth-tasks 1.9.2", + "reth-transaction-pool 1.9.2", + "serde", + "thiserror 2.0.17", + "tokio", + "tracing", +] + +[[package]] +name = "reth-rpc-engine-api" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "alloy-rpc-types-engine", + "async-trait", + "jsonrpsee-core", + "jsonrpsee-types", + "metrics", + "parking_lot", + "reth-chainspec 1.9.3", + "reth-engine-primitives 1.9.3", + "reth-metrics 1.9.3", + "reth-payload-builder 1.9.3", + "reth-payload-builder-primitives 1.9.3", + "reth-payload-primitives 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-rpc-api 1.9.3", + "reth-storage-api 1.9.3", + "reth-tasks 1.9.3", + "reth-transaction-pool 1.9.3", "serde", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tracing", ] @@ -9121,21 +12001,65 @@ dependencies = [ "jsonrpsee", "jsonrpsee-types", "parking_lot", - "reth-chain-state", - "reth-chainspec", - "reth-errors", - "reth-evm", - "reth-network-api", - "reth-node-api", - "reth-primitives-traits", - "reth-revm", - "reth-rpc-convert", - "reth-rpc-eth-types", - "reth-rpc-server-types", - "reth-storage-api", - "reth-tasks", - "reth-transaction-pool", - "reth-trie-common", + "reth-chain-state 1.9.2", + "reth-chainspec 1.9.2", + "reth-errors 1.9.2", + "reth-evm 1.9.2", + "reth-network-api 1.9.2", + "reth-node-api 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-revm 1.9.2", + "reth-rpc-convert 1.9.2", + "reth-rpc-eth-types 1.9.2", + "reth-rpc-server-types 1.9.2", + "reth-storage-api 1.9.2", + "reth-tasks 1.9.2", + "reth-transaction-pool 1.9.2", + "reth-trie-common 1.9.2", + "revm", + "revm-inspectors", + "tokio", + "tracing", +] + +[[package]] +name = "reth-rpc-eth-api" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-dyn-abi", + "alloy-eips", + "alloy-evm", + "alloy-json-rpc", + "alloy-network", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-eth", + "alloy-rpc-types-mev", + "alloy-serde", + "async-trait", + "auto_impl", + "dyn-clone", + "futures", + "jsonrpsee", + "jsonrpsee-types", + "parking_lot", + "reth-chain-state 1.9.3", + "reth-chainspec 1.9.3", + "reth-errors 1.9.3", + "reth-evm 1.9.3", + "reth-network-api 1.9.3", + "reth-node-api 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-revm 1.9.3", + "reth-rpc-convert 1.9.3", + "reth-rpc-eth-types 1.9.3", + "reth-rpc-server-types 1.9.3", + "reth-storage-api 1.9.3", + "reth-tasks 1.9.3", + "reth-transaction-pool 1.9.3", + "reth-trie-common 1.9.3", "revm", "revm-inspectors", "tokio", @@ -9162,28 +12086,75 @@ dependencies = [ "jsonrpsee-core", "jsonrpsee-types", "metrics", - "rand 0.9.1", + "rand 0.9.2", + "reqwest", + "reth-chain-state 1.9.2", + "reth-chainspec 1.9.2", + "reth-errors 1.9.2", + "reth-ethereum-primitives 1.9.2", + "reth-evm 1.9.2", + "reth-execution-types 1.9.2", + "reth-metrics 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-revm 1.9.2", + "reth-rpc-convert 1.9.2", + "reth-rpc-server-types 1.9.2", + "reth-storage-api 1.9.2", + "reth-tasks 1.9.2", + "reth-transaction-pool 1.9.2", + "reth-trie 1.9.2", + "revm", + "revm-inspectors", + "schnellru", + "serde", + "thiserror 2.0.17", + "tokio", + "tokio-stream", + "tracing", +] + +[[package]] +name = "reth-rpc-eth-types" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-evm", + "alloy-network", + "alloy-primitives", + "alloy-rpc-client", + "alloy-rpc-types-eth", + "alloy-sol-types", + "alloy-transport", + "derive_more", + "futures", + "itertools 0.14.0", + "jsonrpsee-core", + "jsonrpsee-types", + "metrics", + "rand 0.9.2", "reqwest", - "reth-chain-state", - "reth-chainspec", - "reth-errors", - "reth-ethereum-primitives", - "reth-evm", - "reth-execution-types", - "reth-metrics", - "reth-primitives-traits", - "reth-revm", - "reth-rpc-convert", - "reth-rpc-server-types", - "reth-storage-api", - "reth-tasks", - "reth-transaction-pool", - "reth-trie", + "reth-chain-state 1.9.3", + "reth-chainspec 1.9.3", + "reth-errors 1.9.3", + "reth-ethereum-primitives 1.9.3", + "reth-evm 1.9.3", + "reth-execution-types 1.9.3", + "reth-metrics 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-revm 1.9.3", + "reth-rpc-convert 1.9.3", + "reth-rpc-server-types 1.9.3", + "reth-storage-api 1.9.3", + "reth-tasks 1.9.3", + "reth-transaction-pool 1.9.3", + "reth-trie 1.9.3", "revm", "revm-inspectors", "schnellru", "serde", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tokio-stream", "tracing", @@ -9203,6 +12174,20 @@ dependencies = [ "tracing", ] +[[package]] +name = "reth-rpc-layer" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-rpc-types-engine", + "http", + "jsonrpsee-http-client", + "pin-project", + "tower", + "tower-http", + "tracing", +] + [[package]] name = "reth-rpc-server-types" version = "1.9.2" @@ -9213,8 +12198,24 @@ dependencies = [ "alloy-rpc-types-engine", "jsonrpsee-core", "jsonrpsee-types", - "reth-errors", - "reth-network-api", + "reth-errors 1.9.2", + "reth-network-api 1.9.2", + "serde", + "strum 0.27.1", +] + +[[package]] +name = "reth-rpc-server-types" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "alloy-rpc-types-engine", + "jsonrpsee-core", + "jsonrpsee-types", + "reth-errors 1.9.3", + "reth-network-api 1.9.3", "serde", "strum 0.27.1", ] @@ -9234,35 +12235,79 @@ dependencies = [ "num-traits", "rayon", "reqwest", - "reth-chainspec", - "reth-codecs", - "reth-config", - "reth-consensus", - "reth-db", - "reth-db-api", - "reth-era", - "reth-era-downloader", - "reth-era-utils", - "reth-ethereum-primitives", - "reth-etl", - "reth-evm", - "reth-execution-types", - "reth-exex", - "reth-fs-util", - "reth-network-p2p", - "reth-primitives-traits", - "reth-provider", - "reth-prune", - "reth-prune-types", - "reth-revm", - "reth-stages-api", - "reth-static-file-types", - "reth-storage-errors", + "reth-chainspec 1.9.2", + "reth-codecs 1.9.2", + "reth-config 1.9.2", + "reth-consensus 1.9.2", + "reth-db 1.9.2", + "reth-db-api 1.9.2", + "reth-era 1.9.2", + "reth-era-downloader 1.9.2", + "reth-era-utils 1.9.2", + "reth-ethereum-primitives 1.9.2", + "reth-etl 1.9.2", + "reth-evm 1.9.2", + "reth-execution-types 1.9.2", + "reth-exex 1.9.2", + "reth-fs-util 1.9.2", + "reth-network-p2p 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-provider 1.9.2", + "reth-prune 1.9.2", + "reth-prune-types 1.9.2", + "reth-revm 1.9.2", + "reth-stages-api 1.9.2", + "reth-static-file-types 1.9.2", + "reth-storage-errors 1.9.2", "reth-testing-utils", - "reth-trie", - "reth-trie-db", + "reth-trie 1.9.2", + "reth-trie-db 1.9.2", "tempfile", - "thiserror 2.0.12", + "thiserror 2.0.17", + "tokio", + "tracing", +] + +[[package]] +name = "reth-stages" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "bincode", + "eyre", + "futures-util", + "itertools 0.14.0", + "num-traits", + "rayon", + "reqwest", + "reth-codecs 1.9.3", + "reth-config 1.9.3", + "reth-consensus 1.9.3", + "reth-db 1.9.3", + "reth-db-api 1.9.3", + "reth-era 1.9.3", + "reth-era-downloader 1.9.3", + "reth-era-utils 1.9.3", + "reth-etl 1.9.3", + "reth-evm 1.9.3", + "reth-execution-types 1.9.3", + "reth-exex 1.9.3", + "reth-fs-util 1.9.3", + "reth-network-p2p 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-provider 1.9.3", + "reth-prune 1.9.3", + "reth-prune-types 1.9.3", + "reth-revm 1.9.3", + "reth-stages-api 1.9.3", + "reth-static-file-types 1.9.3", + "reth-storage-errors 1.9.3", + "reth-trie 1.9.3", + "reth-trie-db 1.9.3", + "thiserror 2.0.17", "tokio", "tracing", ] @@ -9278,18 +12323,45 @@ dependencies = [ "auto_impl", "futures-util", "metrics", - "reth-consensus", - "reth-errors", - "reth-metrics", - "reth-network-p2p", - "reth-primitives-traits", - "reth-provider", - "reth-prune", - "reth-stages-types", - "reth-static-file", - "reth-static-file-types", - "reth-tokio-util", - "thiserror 2.0.12", + "reth-consensus 1.9.2", + "reth-errors 1.9.2", + "reth-metrics 1.9.2", + "reth-network-p2p 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-provider 1.9.2", + "reth-prune 1.9.2", + "reth-stages-types 1.9.2", + "reth-static-file 1.9.2", + "reth-static-file-types 1.9.2", + "reth-tokio-util 1.9.2", + "thiserror 2.0.17", + "tokio", + "tracing", +] + +[[package]] +name = "reth-stages-api" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "aquamarine", + "auto_impl", + "futures-util", + "metrics", + "reth-consensus 1.9.3", + "reth-errors 1.9.3", + "reth-metrics 1.9.3", + "reth-network-p2p 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-provider 1.9.3", + "reth-prune 1.9.3", + "reth-stages-types 1.9.3", + "reth-static-file 1.9.3", + "reth-static-file-types 1.9.3", + "reth-tokio-util 1.9.3", + "thiserror 2.0.17", "tokio", "tracing", ] @@ -9303,8 +12375,21 @@ dependencies = [ "arbitrary", "bytes", "modular-bitfield", - "reth-codecs", - "reth-trie-common", + "reth-codecs 1.9.2", + "reth-trie-common 1.9.2", + "serde", +] + +[[package]] +name = "reth-stages-types" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-primitives", + "bytes", + "modular-bitfield", + "reth-codecs 1.9.3", + "reth-trie-common 1.9.3", "serde", ] @@ -9316,15 +12401,35 @@ dependencies = [ "alloy-primitives", "parking_lot", "rayon", - "reth-codecs", - "reth-db-api", - "reth-primitives-traits", - "reth-provider", - "reth-prune-types", - "reth-stages-types", - "reth-static-file-types", - "reth-storage-errors", - "reth-tokio-util", + "reth-codecs 1.9.2", + "reth-db-api 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-provider 1.9.2", + "reth-prune-types 1.9.2", + "reth-stages-types 1.9.2", + "reth-static-file-types 1.9.2", + "reth-storage-errors 1.9.2", + "reth-tokio-util 1.9.2", + "tracing", +] + +[[package]] +name = "reth-static-file" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-primitives", + "parking_lot", + "rayon", + "reth-codecs 1.9.3", + "reth-db-api 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-provider 1.9.3", + "reth-prune-types 1.9.3", + "reth-stages-types 1.9.3", + "reth-static-file-types 1.9.3", + "reth-storage-errors 1.9.3", + "reth-tokio-util 1.9.3", "tracing", ] @@ -9340,6 +12445,18 @@ dependencies = [ "strum 0.27.1", ] +[[package]] +name = "reth-static-file-types" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-primitives", + "clap", + "derive_more", + "serde", + "strum 0.27.1", +] + [[package]] name = "reth-storage-api" version = "1.9.2" @@ -9350,16 +12467,39 @@ dependencies = [ "alloy-primitives", "alloy-rpc-types-engine", "auto_impl", - "reth-chainspec", - "reth-db-api", - "reth-db-models", - "reth-ethereum-primitives", - "reth-execution-types", - "reth-primitives-traits", - "reth-prune-types", - "reth-stages-types", - "reth-storage-errors", - "reth-trie-common", + "reth-chainspec 1.9.2", + "reth-db-api 1.9.2", + "reth-db-models 1.9.2", + "reth-ethereum-primitives 1.9.2", + "reth-execution-types 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-prune-types 1.9.2", + "reth-stages-types 1.9.2", + "reth-storage-errors 1.9.2", + "reth-trie-common 1.9.2", + "revm-database", +] + +[[package]] +name = "reth-storage-api" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rpc-types-engine", + "auto_impl", + "reth-chainspec 1.9.3", + "reth-db-api 1.9.3", + "reth-db-models 1.9.3", + "reth-ethereum-primitives 1.9.3", + "reth-execution-types 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-prune-types 1.9.3", + "reth-stages-types 1.9.3", + "reth-storage-errors 1.9.3", + "reth-trie-common 1.9.3", "revm-database", ] @@ -9372,17 +12512,51 @@ dependencies = [ "alloy-primitives", "alloy-rlp", "derive_more", - "reth-primitives-traits", - "reth-prune-types", - "reth-static-file-types", + "reth-primitives-traits 1.9.2", + "reth-prune-types 1.9.2", + "reth-static-file-types 1.9.2", "revm-database-interface", - "thiserror 2.0.12", + "thiserror 2.0.17", +] + +[[package]] +name = "reth-storage-errors" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "derive_more", + "reth-primitives-traits 1.9.3", + "reth-prune-types 1.9.3", + "reth-static-file-types 1.9.3", + "revm-database-interface", + "thiserror 2.0.17", +] + +[[package]] +name = "reth-tasks" +version = "1.9.2" +source = "git+https://github.com/gattaca-com/based-op-reth?rev=b053849462eb48e61b24d965cfee59cead7f8a3b#b053849462eb48e61b24d965cfee59cead7f8a3b" +dependencies = [ + "auto_impl", + "dyn-clone", + "futures-util", + "metrics", + "pin-project", + "rayon", + "reth-metrics 1.9.2", + "thiserror 2.0.17", + "tokio", + "tracing", + "tracing-futures", ] [[package]] name = "reth-tasks" -version = "1.9.2" -source = "git+https://github.com/gattaca-com/based-op-reth?rev=b053849462eb48e61b24d965cfee59cead7f8a3b#b053849462eb48e61b24d965cfee59cead7f8a3b" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" dependencies = [ "auto_impl", "dyn-clone", @@ -9390,8 +12564,8 @@ dependencies = [ "metrics", "pin-project", "rayon", - "reth-metrics", - "thiserror 2.0.12", + "reth-metrics 1.9.3", + "thiserror 2.0.17", "tokio", "tracing", "tracing-futures", @@ -9407,9 +12581,9 @@ dependencies = [ "alloy-genesis", "alloy-primitives", "rand 0.8.5", - "rand 0.9.1", - "reth-ethereum-primitives", - "reth-primitives-traits", + "rand 0.9.2", + "reth-ethereum-primitives 1.9.2", + "reth-primitives-traits 1.9.2", "secp256k1 0.30.0", ] @@ -9423,6 +12597,16 @@ dependencies = [ "tracing", ] +[[package]] +name = "reth-tokio-util" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "tokio", + "tokio-stream", + "tracing", +] + [[package]] name = "reth-tracing" version = "1.9.2" @@ -9438,6 +12622,23 @@ dependencies = [ "tracing-subscriber 0.3.20", ] +[[package]] +name = "reth-tracing" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "clap", + "eyre", + "reth-tracing-otlp 1.9.3", + "rolling-file", + "tracing", + "tracing-appender", + "tracing-journald", + "tracing-logfmt", + "tracing-subscriber 0.3.20", + "url", +] + [[package]] name = "reth-tracing-otlp" version = "1.9.2" @@ -9455,6 +12656,23 @@ dependencies = [ "url", ] +[[package]] +name = "reth-tracing-otlp" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "clap", + "eyre", + "opentelemetry", + "opentelemetry-otlp", + "opentelemetry-semantic-conventions", + "opentelemetry_sdk", + "tracing", + "tracing-opentelemetry", + "tracing-subscriber 0.3.20", + "url", +] + [[package]] name = "reth-transaction-pool" version = "1.9.2" @@ -9472,17 +12690,57 @@ dependencies = [ "parking_lot", "paste 1.0.15", "pin-project", - "rand 0.9.1", - "reth-chain-state", - "reth-chainspec", - "reth-eth-wire-types", - "reth-ethereum-primitives", - "reth-execution-types", - "reth-fs-util", - "reth-metrics", - "reth-primitives-traits", - "reth-storage-api", - "reth-tasks", + "rand 0.9.2", + "reth-chain-state 1.9.2", + "reth-chainspec 1.9.2", + "reth-eth-wire-types 1.9.2", + "reth-ethereum-primitives 1.9.2", + "reth-execution-types 1.9.2", + "reth-fs-util 1.9.2", + "reth-metrics 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-storage-api 1.9.2", + "reth-tasks 1.9.2", + "revm-interpreter", + "revm-primitives", + "rustc-hash 2.1.1", + "schnellru", + "serde", + "serde_json", + "smallvec", + "thiserror 2.0.17", + "tokio", + "tokio-stream", + "tracing", +] + +[[package]] +name = "reth-transaction-pool" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "aquamarine", + "auto_impl", + "bitflags 2.10.0", + "futures-util", + "metrics", + "parking_lot", + "pin-project", + "rand 0.9.2", + "reth-chain-state 1.9.3", + "reth-chainspec 1.9.3", + "reth-eth-wire-types 1.9.3", + "reth-ethereum-primitives 1.9.3", + "reth-execution-types 1.9.3", + "reth-fs-util 1.9.3", + "reth-metrics 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-storage-api 1.9.3", + "reth-tasks 1.9.3", "revm-interpreter", "revm-primitives", "rustc-hash 2.1.1", @@ -9490,7 +12748,7 @@ dependencies = [ "serde", "serde_json", "smallvec", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tokio-stream", "tracing", @@ -9509,18 +12767,42 @@ dependencies = [ "auto_impl", "itertools 0.14.0", "metrics", - "reth-execution-errors", - "reth-metrics", - "reth-primitives-traits", - "reth-stages-types", - "reth-storage-errors", - "reth-trie-common", - "reth-trie-sparse", + "reth-execution-errors 1.9.2", + "reth-metrics 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-stages-types 1.9.2", + "reth-storage-errors 1.9.2", + "reth-trie-common 1.9.2", + "reth-trie-sparse 1.9.2", "revm-database", "tracing", "triehash", ] +[[package]] +name = "reth-trie" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-trie", + "auto_impl", + "itertools 0.14.0", + "metrics", + "reth-execution-errors 1.9.3", + "reth-metrics 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-stages-types 1.9.3", + "reth-storage-errors 1.9.3", + "reth-trie-common 1.9.3", + "reth-trie-sparse 1.9.3", + "revm-database", + "tracing", +] + [[package]] name = "reth-trie-common" version = "1.9.2" @@ -9541,8 +12823,32 @@ dependencies = [ "nybbles", "plain_hasher", "rayon", - "reth-codecs", - "reth-primitives-traits", + "reth-codecs 1.9.2", + "reth-primitives-traits 1.9.2", + "revm-database", + "serde", + "serde_with", +] + +[[package]] +name = "reth-trie-common" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-consensus", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-eth", + "alloy-serde", + "alloy-trie", + "arrayvec", + "bytes", + "derive_more", + "itertools 0.14.0", + "nybbles", + "rayon", + "reth-codecs 1.9.3", + "reth-primitives-traits 1.9.3", "revm-database", "serde", "serde_with", @@ -9554,10 +12860,23 @@ version = "1.9.2" source = "git+https://github.com/gattaca-com/based-op-reth?rev=b053849462eb48e61b24d965cfee59cead7f8a3b#b053849462eb48e61b24d965cfee59cead7f8a3b" dependencies = [ "alloy-primitives", - "reth-db-api", - "reth-execution-errors", - "reth-primitives-traits", - "reth-trie", + "reth-db-api 1.9.2", + "reth-execution-errors 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-trie 1.9.2", + "tracing", +] + +[[package]] +name = "reth-trie-db" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-primitives", + "reth-db-api 1.9.3", + "reth-execution-errors 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-trie 1.9.3", "tracing", ] @@ -9574,14 +12893,39 @@ dependencies = [ "itertools 0.14.0", "metrics", "rayon", - "reth-execution-errors", - "reth-metrics", - "reth-provider", - "reth-storage-errors", - "reth-trie", - "reth-trie-common", - "reth-trie-sparse", - "thiserror 2.0.12", + "reth-execution-errors 1.9.2", + "reth-metrics 1.9.2", + "reth-provider 1.9.2", + "reth-storage-errors 1.9.2", + "reth-trie 1.9.2", + "reth-trie-common 1.9.2", + "reth-trie-sparse 1.9.2", + "thiserror 2.0.17", + "tokio", + "tracing", +] + +[[package]] +name = "reth-trie-parallel" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "crossbeam-channel", + "dashmap 6.1.0", + "derive_more", + "itertools 0.14.0", + "metrics", + "rayon", + "reth-execution-errors 1.9.3", + "reth-metrics 1.9.3", + "reth-provider 1.9.3", + "reth-storage-errors 1.9.3", + "reth-trie 1.9.3", + "reth-trie-common 1.9.3", + "reth-trie-sparse 1.9.3", + "thiserror 2.0.17", "tokio", "tracing", ] @@ -9597,10 +12941,29 @@ dependencies = [ "auto_impl", "metrics", "rayon", - "reth-execution-errors", - "reth-metrics", - "reth-primitives-traits", - "reth-trie-common", + "reth-execution-errors 1.9.2", + "reth-metrics 1.9.2", + "reth-primitives-traits 1.9.2", + "reth-trie-common 1.9.2", + "smallvec", + "tracing", +] + +[[package]] +name = "reth-trie-sparse" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "alloy-trie", + "auto_impl", + "metrics", + "rayon", + "reth-execution-errors 1.9.3", + "reth-metrics 1.9.3", + "reth-primitives-traits 1.9.3", + "reth-trie-common 1.9.3", "smallvec", "tracing", ] @@ -9615,10 +12978,28 @@ dependencies = [ "alloy-trie", "metrics", "rayon", - "reth-execution-errors", - "reth-metrics", - "reth-trie-common", - "reth-trie-sparse", + "reth-execution-errors 1.9.2", + "reth-metrics 1.9.2", + "reth-trie-common 1.9.2", + "reth-trie-sparse 1.9.2", + "smallvec", + "tracing", +] + +[[package]] +name = "reth-trie-sparse-parallel" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "alloy-trie", + "metrics", + "rayon", + "reth-execution-errors 1.9.3", + "reth-metrics 1.9.3", + "reth-trie-common 1.9.3", + "reth-trie-sparse 1.9.3", "smallvec", "tracing", ] @@ -9631,6 +13012,14 @@ dependencies = [ "zstd", ] +[[package]] +name = "reth-zstd-compressors" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "zstd", +] + [[package]] name = "revm" version = "31.0.2" @@ -9770,11 +13159,13 @@ dependencies = [ "alloy-rpc-types-trace", "alloy-sol-types", "anstyle", + "boa_engine", + "boa_gc", "colorchoice", "revm", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -9970,7 +13361,7 @@ dependencies = [ "regex", "relative-path", "rustc_version 0.4.1", - "syn 2.0.101", + "syn 2.0.111", "unicode-ident", ] @@ -10007,7 +13398,7 @@ dependencies = [ "primitive-types", "proptest", "rand 0.8.5", - "rand 0.9.1", + "rand 0.9.2", "rlp", "ruint-macro", "serde_core", @@ -10048,6 +13439,15 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver 0.9.0", +] + [[package]] name = "rustc_version" version = "0.3.3" @@ -10193,6 +13593,12 @@ version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" +[[package]] +name = "ryu-js" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd29631678d6fb0903b69223673e122c32e9ae559d0960a38d574695ebc0ea15" + [[package]] name = "same-file" version = "1.0.6" @@ -10268,7 +13674,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c3c81b43dc2d8877c216a3fccf76677ee1ebccd429566d3e67447290d0c42b2" dependencies = [ "bitcoin_hashes", - "rand 0.9.1", + "rand 0.9.2", "secp256k1-sys 0.11.0", ] @@ -10326,13 +13732,22 @@ dependencies = [ "libc", ] +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser 0.7.0", +] + [[package]] name = "semver" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" dependencies = [ - "semver-parser", + "semver-parser 0.10.3", ] [[package]] @@ -10344,6 +13759,12 @@ dependencies = [ "serde", ] +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + [[package]] name = "semver-parser" version = "0.10.3" @@ -10392,7 +13813,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -10401,7 +13822,7 @@ version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.12.0", "itoa", "memchr", "ryu", @@ -10450,7 +13871,7 @@ dependencies = [ "chrono", "hex 0.4.3", "indexmap 1.9.3", - "indexmap 2.10.0", + "indexmap 2.12.0", "serde", "serde_derive", "serde_json", @@ -10467,7 +13888,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -10613,7 +14034,7 @@ checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" dependencies = [ "num-bigint", "num-traits", - "thiserror 2.0.12", + "thiserror 2.0.17", "time", ] @@ -10653,6 +14074,15 @@ dependencies = [ "autocfg", ] +[[package]] +name = "small_btree" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ba60d2df92ba73864714808ca68c059734853e6ab722b40e1cf543ebb3a057a" +dependencies = [ + "arrayvec", +] + [[package]] name = "smallvec" version = "1.15.0" @@ -10705,6 +14135,12 @@ dependencies = [ "sha1", ] +[[package]] +name = "spin" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591" + [[package]] name = "spki" version = "0.7.3" @@ -10796,7 +14232,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -10809,7 +14245,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -10831,9 +14267,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.101" +version = "2.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" +checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" dependencies = [ "proc-macro2", "quote", @@ -10849,7 +14285,7 @@ dependencies = [ "paste 1.0.15", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -10881,7 +14317,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -10927,6 +14363,12 @@ dependencies = [ "unicode-width 0.2.0", ] +[[package]] +name = "tag_ptr" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0e973b34477b7823833469eb0f5a3a60370fef7a453e02d751b59180d0a5a05" + [[package]] name = "tagptr" version = "0.2.0" @@ -10974,6 +14416,12 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "thin-vec" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "144f754d318415ac792f9d69fc87abbbfc043ce2ef041c60f16ad828f638717d" + [[package]] name = "thiserror" version = "1.0.69" @@ -10985,11 +14433,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.12" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" dependencies = [ - "thiserror-impl 2.0.12", + "thiserror-impl 2.0.17", ] [[package]] @@ -11000,18 +14448,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] name = "thiserror-impl" -version = "2.0.12" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -11033,14 +14481,46 @@ dependencies = [ "num_cpus", ] +[[package]] +name = "tikv-jemalloc-ctl" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "661f1f6a57b3a36dc9174a2c10f19513b4866816e13425d3e418b11cc37bc24c" +dependencies = [ + "libc", + "paste 1.0.15", + "tikv-jemalloc-sys", +] + +[[package]] +name = "tikv-jemalloc-sys" +version = "0.6.1+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd8aa5b2ab86a2cefa406d889139c162cbb230092f7d1d7cbc1716405d852a3b" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "tikv-jemallocator" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0359b4327f954e0567e69fb191cf1436617748813819c94b8cd4a431422d053a" +dependencies = [ + "libc", + "tikv-jemalloc-sys", +] + [[package]] name = "time" -version = "0.3.41" +version = "0.3.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" dependencies = [ "deranged", "itoa", + "js-sys", "libc", "num-conv", "num_threads", @@ -11052,15 +14532,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" [[package]] name = "time-macros" -version = "0.2.22" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" dependencies = [ "num-conv", "time-core", @@ -11125,7 +14605,7 @@ checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -11205,7 +14685,7 @@ dependencies = [ "http", "httparse", "openssl", - "rand 0.9.1", + "rand 0.9.2", "simdutf8", "tokio", "tokio-util", @@ -11238,7 +14718,7 @@ version = "0.22.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.12.0", "serde", "serde_spanned", "toml_datetime", @@ -11298,7 +14778,7 @@ dependencies = [ "futures-core", "futures-util", "hdrhistogram", - "indexmap 2.10.0", + "indexmap 2.12.0", "pin-project-lite", "slab", "sync_wrapper", @@ -11354,9 +14834,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.41" +version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +checksum = "2d15d90a0b5c19378952d479dc858407149d7bb45a14de0142f6c534b16fc647" dependencies = [ "log", "pin-project-lite", @@ -11378,20 +14858,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.28" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] name = "tracing-core" -version = "0.1.33" +version = "0.1.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +checksum = "7a04e24fab5c89c6a36eb8558c9656f30d81de51dfa4d3b45f26b21d61fa0a6c" dependencies = [ "once_cell", "valuable", @@ -11452,7 +14932,7 @@ dependencies = [ "opentelemetry_sdk", "rustversion", "smallvec", - "thiserror 2.0.12", + "thiserror 2.0.17", "tracing", "tracing-core", "tracing-log", @@ -11523,7 +15003,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -11582,11 +15062,11 @@ dependencies = [ "http", "httparse", "log", - "rand 0.9.1", + "rand 0.9.2", "rustls", "rustls-pki-types", "sha1", - "thiserror 2.0.12", + "thiserror 2.0.17", "utf-8", ] @@ -11612,12 +15092,12 @@ dependencies = [ "op-alloy-rpc-types", "op-alloy-rpc-types-engine", "parking_lot", - "rand 0.9.1", + "rand 0.9.2", "reqwest", - "reth-rpc-layer", + "reth-rpc-layer 1.9.2", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tokio-websockets", "tower", @@ -11754,6 +15234,12 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + [[package]] name = "utf8_iter" version = "1.0.4" @@ -11851,7 +15337,7 @@ checksum = "d674d135b4a8c1d7e813e2f8d1c9a58308aee4a680323066025e53132218bd91" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -11919,7 +15405,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", "wasm-bindgen-shared", ] @@ -11954,7 +15440,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -12221,7 +15707,7 @@ checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -12232,7 +15718,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -12243,7 +15729,7 @@ checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -12254,7 +15740,7 @@ checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -12265,7 +15751,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -12276,7 +15762,7 @@ checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -12731,6 +16217,12 @@ dependencies = [ "bitflags 2.10.0", ] +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + [[package]] name = "writeable" version = "0.6.1" @@ -12775,6 +16267,12 @@ dependencies = [ "rustix 1.0.7", ] +[[package]] +name = "xsum" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0637d3a5566a82fa5214bae89087bc8c9fb94cd8e8a3c07feb691bb8d9c632db" + [[package]] name = "yansi" version = "1.0.1" @@ -12801,7 +16299,7 @@ checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", "synstructure 0.13.2", ] @@ -12822,7 +16320,7 @@ checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -12842,7 +16340,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", "synstructure 0.13.2", ] @@ -12863,7 +16361,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] @@ -12896,7 +16394,7 @@ checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.111", ] [[package]] diff --git a/based/Cargo.toml b/based/Cargo.toml index e5df44acc..ee2f409c6 100644 --- a/based/Cargo.toml +++ b/based/Cargo.toml @@ -12,9 +12,7 @@ version = "0.1.0" alloy-consensus = "1.0.41" alloy-eips = "1.0.41" alloy-network = "1.0.41" -alloy-primitives = { version = "1.0.41", default-features = false, features = [ - "getrandom", -] } +alloy-primitives = { version = "1.0.41", default-features = false, features = ["getrandom"] } alloy-provider = "1.0.41" alloy-rlp = "0.3.12" alloy-rpc-types = { version = "1.0.41", features = ["engine"] } @@ -41,29 +39,25 @@ either = "1.15.0" ethereum_ssz = "0.9.0" eyre = "0.6.12" futures = "0.3.31" -hickory-resolver = "=0.25.0-alpha.5" # Use the exact version reth expects +hickory-resolver = "=0.25.0-alpha.5" # Use the exact version reth expects http = "1.3.1" hyper = "1.5.2" -jsonrpsee = { version = "0.26", features = ["http-client", "macros", "server", "jsonrpsee-client-transport"] } +jsonrpsee = { version = "0.26", features = ["http-client", "jsonrpsee-client-transport", "macros", "server"] } metrics = "0.24.1" metrics-exporter-prometheus = "0.16.2" mio = { features = ["net", "os-poll"], version = "1.0.4" } mio_httpc = { features = ["native"], version = "0.10.6" } moka = "0.12.10" -op-alloy-consensus = { version = "0.22.0", default-features = false, features = [ - "k256", -] } +op-alloy-consensus = { version = "0.22.0", default-features = false, features = ["k256"] } op-alloy-flz = { version = "0.13.1", default-features = false } op-alloy-network = "0.22.0" op-alloy-rpc-types = "0.22.0" -op-alloy-rpc-types-engine = { version = "0.22.0", default-features = false, features = [ - "serde", -] } +op-alloy-rpc-types-engine = { version = "0.22.0", default-features = false, features = ["serde"] } op-revm = "12.0.1" parking_lot = "0.12.3" paste = "0.1.18" quanta = "0.12.3" -rand = "0.9.0" +rand = "0.9.2" reqwest = { version = "0.12.12", features = ["blocking", "json"] } reth-chain-state = { git = "https://github.com/gattaca-com/based-op-reth", rev = "b053849462eb48e61b24d965cfee59cead7f8a3b", package = "reth-chain-state" } @@ -73,10 +67,12 @@ reth-consensus = { git = "https://github.com/gattaca-com/based-op-reth", rev = " reth-db = { git = "https://github.com/gattaca-com/based-op-reth", rev = "b053849462eb48e61b24d965cfee59cead7f8a3b", package = "reth-db" } reth-db-api = { git = "https://github.com/gattaca-com/based-op-reth", rev = "b053849462eb48e61b24d965cfee59cead7f8a3b", package = "reth-db-api" } reth-db-common = { git = "https://github.com/gattaca-com/based-op-reth", rev = "b053849462eb48e61b24d965cfee59cead7f8a3b", package = "reth-db-common" } +reth-engine-tree = { git = "https://github.com/gattaca-com/based-op-reth", rev = "b053849462eb48e61b24d965cfee59cead7f8a3b", package = "reth-engine-tree" } reth-evm = { git = "https://github.com/gattaca-com/based-op-reth", rev = "b053849462eb48e61b24d965cfee59cead7f8a3b", package = "reth-evm" } reth-execution-errors = { git = "https://github.com/gattaca-com/based-op-reth", rev = "b053849462eb48e61b24d965cfee59cead7f8a3b", package = "reth-execution-errors" } -reth-engine-tree = { git = "https://github.com/gattaca-com/based-op-reth", rev = "b053849462eb48e61b24d965cfee59cead7f8a3b", package = "reth-engine-tree" } -reth-node-ethereum = { git = "https://github.com/gattaca-com/based-op-reth", rev = "b053849462eb48e61b24d965cfee59cead7f8a3b", package = "reth-node-ethereum", features = ["test-utils"] } +reth-node-ethereum = { git = "https://github.com/gattaca-com/based-op-reth", rev = "b053849462eb48e61b24d965cfee59cead7f8a3b", package = "reth-node-ethereum", features = [ + "test-utils", +] } reth-node-types = { git = "https://github.com/gattaca-com/based-op-reth", rev = "b053849462eb48e61b24d965cfee59cead7f8a3b", package = "reth-node-types" } reth-optimism-chainspec = { git = "https://github.com/gattaca-com/based-op-reth", rev = "b053849462eb48e61b24d965cfee59cead7f8a3b", package = "reth-optimism-chainspec" } reth-optimism-cli = { git = "https://github.com/gattaca-com/based-op-reth", rev = "b053849462eb48e61b24d965cfee59cead7f8a3b", package = "reth-optimism-cli" } @@ -85,11 +81,13 @@ reth-optimism-evm = { git = "https://github.com/gattaca-com/based-op-reth", rev reth-optimism-forks = { git = "https://github.com/gattaca-com/based-op-reth", rev = "b053849462eb48e61b24d965cfee59cead7f8a3b", package = "reth-optimism-forks" } reth-optimism-node = { git = "https://github.com/gattaca-com/based-op-reth", rev = "b053849462eb48e61b24d965cfee59cead7f8a3b", package = "reth-optimism-node" } reth-optimism-payload-builder = { git = "https://github.com/gattaca-com/based-op-reth", rev = "b053849462eb48e61b24d965cfee59cead7f8a3b", package = "reth-optimism-payload-builder" } -reth-optimism-txpool = { git = "https://github.com/gattaca-com/based-op-reth", rev = "b053849462eb48e61b24d965cfee59cead7f8a3b", package = "reth-optimism-txpool" } reth-optimism-primitives = { git = "https://github.com/gattaca-com/based-op-reth", rev = "b053849462eb48e61b24d965cfee59cead7f8a3b", package = "reth-optimism-primitives" } +reth-optimism-txpool = { git = "https://github.com/gattaca-com/based-op-reth", rev = "b053849462eb48e61b24d965cfee59cead7f8a3b", package = "reth-optimism-txpool" } reth-primitives = { git = "https://github.com/gattaca-com/based-op-reth", rev = "b053849462eb48e61b24d965cfee59cead7f8a3b", package = "reth-primitives" } reth-primitives-traits = { git = "https://github.com/gattaca-com/based-op-reth", rev = "b053849462eb48e61b24d965cfee59cead7f8a3b", package = "reth-primitives-traits" } -reth-provider = { git = "https://github.com/gattaca-com/based-op-reth", rev = "b053849462eb48e61b24d965cfee59cead7f8a3b", package = "reth-provider", features = ["test-utils"] } +reth-provider = { git = "https://github.com/gattaca-com/based-op-reth", rev = "b053849462eb48e61b24d965cfee59cead7f8a3b", package = "reth-provider", features = [ + "test-utils", +] } reth-revm = { git = "https://github.com/gattaca-com/based-op-reth", rev = "b053849462eb48e61b24d965cfee59cead7f8a3b", package = "reth-revm" } reth-rpc-builder = { git = "https://github.com/gattaca-com/based-op-reth", rev = "b053849462eb48e61b24d965cfee59cead7f8a3b", package = "reth-rpc-builder" } reth-rpc-layer = { git = "https://github.com/gattaca-com/based-op-reth", rev = "b053849462eb48e61b24d965cfee59cead7f8a3b", package = "reth-rpc-layer" } @@ -97,21 +95,17 @@ reth-stages-types = { git = "https://github.com/gattaca-com/based-op-reth", rev reth-storage-api = { git = "https://github.com/gattaca-com/based-op-reth", rev = "b053849462eb48e61b24d965cfee59cead7f8a3b", package = "reth-storage-api" } reth-storage-errors = { git = "https://github.com/gattaca-com/based-op-reth", rev = "b053849462eb48e61b24d965cfee59cead7f8a3b", package = "reth-storage-errors" } reth-trie = { git = "https://github.com/gattaca-com/based-op-reth", rev = "b053849462eb48e61b24d965cfee59cead7f8a3b", package = "reth-trie" } -reth-trie-common = { git = "https://github.com/gattaca-com/based-op-reth", rev = "b053849462eb48e61b24d965cfee59cead7f8a3b", package = "reth-trie-common", features = ["test-utils"] } +reth-trie-common = { git = "https://github.com/gattaca-com/based-op-reth", rev = "b053849462eb48e61b24d965cfee59cead7f8a3b", package = "reth-trie-common", features = [ + "test-utils", +] } reth-trie-db = { git = "https://github.com/gattaca-com/based-op-reth", rev = "b053849462eb48e61b24d965cfee59cead7f8a3b", package = "reth-trie-db" } reth-trie-parallel = { git = "https://github.com/gattaca-com/based-op-reth", rev = "b053849462eb48e61b24d965cfee59cead7f8a3b", package = "reth-trie-parallel" } -revm = { version = "31.0.1", features = [ - "optional_balance_check", - "secp256k1", - "std", -], default-features = false } +revm = { version = "31.0.1", features = ["optional_balance_check", "secp256k1", "std"], default-features = false } revm-handler = "12.0.0" revm-inspector = "12.0.1" revm-interpreter = "29.0.1" -revm-primitives = { version = "21.0.2", features = [ - "std", -], default-features = false } +revm-primitives = { version = "21.0.2", features = ["std"], default-features = false } rustc-hash = "2.0.0" serde = { version = "1.0.217", features = ["derive"] } @@ -124,6 +118,7 @@ strum_macros = "0.24" tabwriter = "1.4.1" thiserror = "2.0.11" tokio = { version = "1.43.0", features = ["full"] } +tokio-stream = "0.1.17" toml = "0.8.19" tower = { version = "0.5", features = ["timeout"] } tower-http = { version = "0.6", features = ["cors"] } diff --git a/based/crates/common/src/p2p.rs b/based/crates/common/src/p2p.rs index aed897d32..05f218e2a 100644 --- a/based/crates/common/src/p2p.rs +++ b/based/crates/common/src/p2p.rs @@ -17,17 +17,17 @@ pub type ExtraData = VariableList; #[derive(Debug, Clone, PartialEq, Eq, TreeHash, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct EnvV0 { - number: u64, - parent_hash: B256, - beneficiary: Address, - timestamp: u64, - gas_limit: u64, - basefee: u64, - difficulty: U256, - prevrandao: B256, + pub number: u64, + pub parent_hash: B256, + pub beneficiary: Address, + pub timestamp: u64, + pub gas_limit: u64, + pub basefee: u64, + pub difficulty: U256, + pub prevrandao: B256, #[serde(with = "ssz_types::serde_utils::hex_var_list")] - extra_data: ExtraData, - parent_beacon_block_root: B256, + pub extra_data: ExtraData, + pub parent_beacon_block_root: B256, } impl EnvV0 { @@ -81,6 +81,10 @@ impl FragV0 { let txs = builder_txs.map(|tx| tx.encode().to_vec()).map(Transaction::from).collect::>(); Self { block_number, seq, txs: Transactions::from(txs), is_last, blob_gas_used } } + + pub fn is_first(&self) -> bool { + self.seq == 0 + } } /// A message sealing a sequence of frags, with fields from the block header @@ -145,6 +149,12 @@ impl From for VersionedMessage { } } +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +pub struct Signed { + pub message: T, + pub signature: Bytes, +} + #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct SignedVersionedMessage { pub message: VersionedMessage, diff --git a/based/crates/reth/Cargo.toml b/based/crates/reth/Cargo.toml new file mode 100644 index 000000000..2075d3f1d --- /dev/null +++ b/based/crates/reth/Cargo.toml @@ -0,0 +1,53 @@ +[package] +edition.workspace = true +name = "based-op-reth" +repository.workspace = true +rust-version.workspace = true +version.workspace = true + +[[bin]] +name = "reth-node" +path = "src/bin/reth-node.rs" + +[dependencies] +alloy-consensus.workspace = true +alloy-eips.workspace = true +alloy-network.workspace = true +alloy-primitives.workspace = true +alloy-rpc-types.workspace = true +alloy-rpc-types-eth = "1.1.3" +anyhow = "1.0.98" +arc-swap = "1.7.1" +bop-common.workspace = true +clap.workspace = true +eyre.workspace = true +futures.workspace = true +jsonrpsee.workspace = true +op-alloy-consensus = "0.22.1" +op-alloy-network.workspace = true +op-alloy-rpc-types.workspace = true +reth = { git = "https://github.com/paradigmxyz/reth", tag = "v1.9.3" } +reth-chainspec = { git = "https://github.com/paradigmxyz/reth", tag = "v1.9.3", package = "reth-chainspec" } +reth-db = { git = "https://github.com/paradigmxyz/reth", tag = "v1.9.3" } +reth-engine-tree = { git = "https://github.com/paradigmxyz/reth", tag = "v1.9.3", package = "reth-engine-tree" } +reth-evm = { git = "https://github.com/paradigmxyz/reth", tag = "v1.9.3", package = "reth-evm" } +reth-exex = { git = "https://github.com/paradigmxyz/reth", tag = "v1.9.3" } +reth-node-builder = { git = "https://github.com/paradigmxyz/reth", tag = "v1.9.3" } +reth-optimism-chainspec = { git = "https://github.com/paradigmxyz/reth", tag = "v1.9.3", package = "reth-optimism-chainspec" } +reth-optimism-cli = { git = "https://github.com/paradigmxyz/reth", tag = "v1.9.3" } +reth-optimism-evm = { git = "https://github.com/paradigmxyz/reth", tag = "v1.9.3", package = "reth-optimism-evm" } +reth-optimism-node = { git = "https://github.com/paradigmxyz/reth", tag = "v1.9.3" } +reth-optimism-primitives = { git = "https://github.com/paradigmxyz/reth", tag = "v1.9.3", package = "reth-optimism-primitives" } +reth-optimism-rpc = { git = "https://github.com/paradigmxyz/reth", tag = "v1.9.3", package = "reth-optimism-rpc" } +reth-revm = { git = "https://github.com/paradigmxyz/reth", tag = "v1.9.3", package = "reth-revm" } +reth-rpc = { git = "https://github.com/paradigmxyz/reth", tag = "v1.9.3" } +reth-rpc-convert = { git = "https://github.com/paradigmxyz/reth", tag = "v1.9.3", package = "reth-rpc-convert" } +reth-rpc-eth-api = { git = "https://github.com/paradigmxyz/reth", tag = "v1.9.3" } +reth-storage-api = { git = "https://github.com/paradigmxyz/reth", tag = "v1.9.3", package = "reth-storage-api" } +reth-storage-errors = { git = "https://github.com/paradigmxyz/reth", tag = "v1.9.3", package = "reth-storage-errors" } +revm = { version = "31.0.1", features = ["optional_balance_check", "secp256k1", "std"], default-features = false } +thiserror.workspace = true +tokio.workspace = true +tokio-stream.workspace = true +tracing.workspace = true +reth_optimism_consensus = { git = "https://github.com/paradigmxyz/reth", tag = "v1.9.3", package = "reth-optimism-consensus" } diff --git a/based/crates/reth/src/api/engine.rs b/based/crates/reth/src/api/engine.rs new file mode 100644 index 000000000..e2efca359 --- /dev/null +++ b/based/crates/reth/src/api/engine.rs @@ -0,0 +1,65 @@ +use bop_common::p2p::{EnvV0, FragV0, SealV0, Signed}; +use jsonrpsee::{ + core::{RpcResult, async_trait}, + proc_macros::rpc, + types::{ErrorCode, ErrorObject}, +}; + +use crate::{driver::Driver, error::DriverError}; + +#[rpc(server, namespace = "engine")] +pub trait BasedEngineApi { + #[method(name = "envV0")] + async fn env_v0(&self, env: Signed) -> RpcResult<()>; + + #[method(name = "newFragV0")] + async fn new_frag_v0(&self, frag: Signed) -> RpcResult<()>; + + #[method(name = "sealFragV0")] + async fn seal_frag_v0(&self, seal: Signed) -> RpcResult<()>; +} + +pub struct BasedEngineApi { + driver: Driver, +} + +impl BasedEngineApi { + /// Initialize a new based engine API instance. + pub fn new(driver: Driver) -> Self { + Self { driver } + } +} + +#[async_trait] +impl BasedEngineApiServer for BasedEngineApi { + #[tracing::instrument(skip(self))] + async fn env_v0(&self, env: Signed) -> RpcResult<()> { + tracing::debug!("handling engine_envV0"); + + self.driver.env_v0(env.message).await?; + Ok(()) + } + + #[tracing::instrument(skip(self))] + async fn new_frag_v0(&self, frag: Signed) -> RpcResult<()> { + tracing::debug!("handling engine_newFragV0"); + + self.driver.new_frag_v0(frag.message).await?; + Ok(()) + } + + #[tracing::instrument(skip(self))] + async fn seal_frag_v0(&self, seal: Signed) -> RpcResult<()> { + tracing::debug!("handling engine_sealFragV0"); + + self.driver.seal_frag_v0(seal.message).await?; + Ok(()) + } +} + +impl From for ErrorObject<'static> { + // TODO: Better error handling + fn from(e: DriverError) -> Self { + ErrorObject::owned(ErrorCode::InternalError.code(), e.to_string(), Option::<()>::None) + } +} diff --git a/based/crates/reth/src/api/eth.rs b/based/crates/reth/src/api/eth.rs new file mode 100644 index 000000000..789611498 --- /dev/null +++ b/based/crates/reth/src/api/eth.rs @@ -0,0 +1,501 @@ +use std::{sync::Arc, time::Duration}; + +use alloy_eips::{BlockId, BlockNumberOrTag}; +use alloy_primitives::{Address, TxHash, U256}; +use alloy_rpc_types::{ + BlockOverrides, Filter, FilterBlockOption, Log, + simulate::{SimBlock, SimulatePayload, SimulatedBlock}, + state::{EvmOverrides, StateOverride, StateOverridesBuilder}, +}; +use arc_swap::ArcSwapOption; +use jsonrpsee::{ + core::{RpcResult, async_trait}, + proc_macros::rpc, + types::{ErrorObject, ErrorObjectOwned, error::INVALID_PARAMS_CODE}, +}; +use op_alloy_network::Optimism; +use op_alloy_rpc_types::OpTransactionRequest; +use reth::{providers::CanonStateSubscriptions as _, rpc::server_types::eth::EthApiError}; +use reth_rpc::EthFilter; +use reth_rpc_convert::RpcReceipt; +use reth_rpc_eth_api::{ + EthApiTypes, EthFilterApiServer, RpcBlock, RpcTransaction, + helpers::{EthBlocks, EthCall, EthState, EthTransactions, FullEthApi}, +}; +use tokio::sync::broadcast::error::RecvError; +use tokio_stream::{StreamExt, wrappers::BroadcastStream}; + +use crate::{api::ToRpc as _, unsealed_block::UnsealedBlock}; + +/// Max configured timeout for `eth_sendRawTransactionSync`. +const SEND_RAW_TX_SYNC_TIMEOUT: Duration = Duration::from_millis(6_000); + +/// `eth_` API that is aware of unsealed state (frags). +#[rpc(server, namespace = "eth")] +pub trait EthApi { + /// Returns block by number with support for pending blocks (frags). + #[method(name = "getBlockByNumber")] + async fn block_by_number(&self, number: BlockNumberOrTag, full: bool) -> RpcResult>>; + + /// Returns the transaction receipt for a given transaction hash, with support for frags. + #[method(name = "getTransactionReceipt")] + async fn get_transaction_receipt(&self, tx_hash: TxHash) -> RpcResult>>; + + /// Returns account balance, with support for pending state. + #[method(name = "getBalance")] + async fn get_balance(&self, address: Address, block_number: Option) -> RpcResult; + + /// Returns transaction count for an address, with support for pending state. + #[method(name = "getTransactionCount")] + async fn get_transaction_count(&self, address: Address, block_number: Option) -> RpcResult; + + /// Returns the transaction for a given hash, with support for frags. + #[method(name = "getTransactionByHash")] + async fn transaction_by_hash(&self, tx_hash: TxHash) -> RpcResult>>; + + /// Sends a raw transaction and waits for inclusion in a frag. + #[method(name = "sendRawTransactionSync")] + async fn send_raw_transaction_sync( + &self, + transaction: alloy_primitives::Bytes, + timeout_ms: Option, + ) -> RpcResult>; + + /// Executes a call with unsealed state support. + #[method(name = "call")] + async fn call( + &self, + transaction: OpTransactionRequest, + block_number: Option, + state_overrides: Option, + block_overrides: Option>, + ) -> RpcResult; + + /// Estimates gas with unsealed state support. + #[method(name = "estimateGas")] + async fn estimate_gas( + &self, + transaction: OpTransactionRequest, + block_number: Option, + overrides: Option, + ) -> RpcResult; + + /// Simulates transactions with unsealed state support. + #[method(name = "simulateV1")] + async fn simulate_v1( + &self, + opts: SimulatePayload, + block_number: Option, + ) -> RpcResult>>>; + + /// Returns logs matching the filter, including unsealed logs. + #[method(name = "getLogs")] + async fn get_logs(&self, filter: Filter) -> RpcResult>; +} + +/// Extended `eth_` API with unsealed state support (frags). +#[derive(Debug)] +pub struct EthApi { + pub canonical: Eth, + pub eth_filter: EthFilter, + pub unsealed_block: Arc>, + pub unsealed_as_latest: bool, +} + +impl EthApi { + fn use_unsealed_state(&self, number: &impl Tag) -> bool { + (self.unsealed_as_latest && number.is_latest()) || number.is_pending() + } +} + +#[async_trait] +impl EthApiServer for EthApi +where + Eth: EthApiTypes + FullEthApi + Send + Sync + 'static, + ErrorObject<'static>: From, +{ + async fn block_by_number(&self, number: BlockNumberOrTag, full: bool) -> RpcResult>> { + tracing::debug!( + message = "rpc::block_by_number", + block_number = ?number + ); + + EthBlocks::rpc_block(&self.canonical, number.into(), full).await.map_err(Into::into) + } + + async fn get_transaction_receipt(&self, tx_hash: TxHash) -> RpcResult>> { + tracing::debug!( + message = "rpc::get_transaction_receipt", + tx_hash = %tx_hash + ); + + // First, check canonical chain + if let Some(canonical_receipt) = EthTransactions::transaction_receipt(&self.canonical, tx_hash).await? { + return Ok(Some(canonical_receipt)); + } + + if let Some(unsealed_block) = self.unsealed_block.load_full() { + if let Some(receipt) = unsealed_block.get_transaction_receipt(&tx_hash) { + return Ok(Some(receipt.into_rpc())); + } + } + + Ok(None) + } + + async fn get_balance(&self, address: Address, block_number: Option) -> RpcResult { + tracing::debug!( + message = "rpc::get_balance", + address = %address + ); + let block_id = block_number.unwrap_or_default(); + if self.use_unsealed_state(&block_id) { + if let Some(unsealed_block) = self.unsealed_block.load_full() { + if let Some(balance) = unsealed_block.get_balance(address) { + return Ok(balance); + } + } + } + + EthState::balance(&self.canonical, address, block_number).await.map_err(Into::into) + } + + async fn get_transaction_count(&self, address: Address, block_number: Option) -> RpcResult { + tracing::debug!( + message = "rpc::get_transaction_count", + address = %address, + ); + + let block_id = block_number.unwrap_or_default(); + + let mut count = + EthState::transaction_count(&self.canonical, address, block_number).await.map_err(Into::into)?; + + if self.use_unsealed_state(&block_id) { + if let Some(unsealed_block) = self.unsealed_block.load_full() { + let unsealed_count = unsealed_block.get_transaction_count(address); + count += unsealed_count; + } + } + + Ok(count) + } + + async fn transaction_by_hash(&self, tx_hash: TxHash) -> RpcResult>> { + tracing::debug!( + message = "rpc::transaction_by_hash", + tx_hash = %tx_hash + ); + + // Check canonical chain first to avoid race condition where unsealed + // state hasn't been cleared yet after canonical block commit + if let Some(canonical_tx) = EthTransactions::transaction_by_hash(&self.canonical, tx_hash) + .await? + .map(|tx| tx.into_transaction(self.canonical.tx_resp_builder())) + .transpose()? + { + return Ok(Some(canonical_tx)); + } + + if let Some(unsealed_block) = self.unsealed_block.load_full() { + if let Some(tx) = unsealed_block.get_transaction(&tx_hash) { + return Ok(Some(tx)); + } + } + + Ok(None) + } + + async fn send_raw_transaction_sync( + &self, + transaction: alloy_primitives::Bytes, + timeout_ms: Option, + ) -> RpcResult> { + tracing::debug!(message = "rpc::send_raw_transaction_sync"); + + let timeout = timeout_ms + .map(|ms| { + let timeout = Duration::from_millis(ms); + if timeout > SEND_RAW_TX_SYNC_TIMEOUT { + return Err(ErrorObjectOwned::owned( + INVALID_PARAMS_CODE, + format!("time out too long, timeout: {ms} ms, max: {SEND_RAW_TX_SYNC_TIMEOUT:?}"), + None::<()>, + )); + } + + Ok(timeout) + }) + .transpose()? + .unwrap_or(SEND_RAW_TX_SYNC_TIMEOUT); + + let tx_hash = match EthTransactions::send_raw_transaction(&self.canonical, transaction).await { + Ok(hash) => hash, + Err(e) => return Err(e.into()), + }; + + tracing::debug!( + message = "rpc::send_raw_transaction_sync::sent_transaction", + tx_hash = %tx_hash, + timeout_ms = timeout_ms, + ); + + loop { + tokio::select! { + receipt = self.wait_for_frag_receipt(tx_hash) => { + if let Some(receipt) = receipt { + return Ok(receipt); + } else { + continue + } + } + receipt = self.wait_for_canonical_receipt(tx_hash) => { + if let Some(receipt) = receipt { + return Ok(receipt); + } else { + continue + } + } + _ = tokio::time::sleep(timeout) => { + return Err(EthApiError::TransactionConfirmationTimeout { + hash: tx_hash, + duration: timeout, + }.into()); + } + } + } + } + + async fn call( + &self, + transaction: OpTransactionRequest, + block_number: Option, + state_overrides: Option, + block_overrides: Option>, + ) -> RpcResult { + tracing::debug!( + message = "rpc::call", + transaction = ?transaction, + block_number = ?block_number, + state_overrides = ?state_overrides, + block_overrides = ?block_overrides, + ); + + let block_id = block_number.unwrap_or_default(); + let mut pending_overrides = EvmOverrides::default(); + // If the call is to pending block use cached override (if they exist) + if self.use_unsealed_state(&block_id) && + let Some(unsealed_block) = self.unsealed_block.load_full() + { + pending_overrides.state = unsealed_block.get_state_overrides(); + } + + // Apply user's overrides on top + let mut state_overrides_builder = StateOverridesBuilder::new(pending_overrides.state.unwrap_or_default()); + state_overrides_builder = state_overrides_builder.extend(state_overrides.unwrap_or_default()); + let final_overrides = state_overrides_builder.build(); + + // Delegate to the underlying eth_api + EthCall::call( + &self.canonical, + transaction, + Some(block_id), + EvmOverrides::new(Some(final_overrides), block_overrides), + ) + .await + .map_err(Into::into) + } + + async fn estimate_gas( + &self, + transaction: OpTransactionRequest, + block_number: Option, + overrides: Option, + ) -> RpcResult { + tracing::debug!( + message = "rpc::estimate_gas", + transaction = ?transaction, + block_number = ?block_number, + overrides = ?overrides, + ); + + let block_id = block_number.unwrap_or_default(); + let mut pending_overrides = EvmOverrides::default(); + // If the call is to pending block use cached override (if they exist) + if self.use_unsealed_state(&block_id) && + let Some(unsealed_block) = self.unsealed_block.load_full() + { + pending_overrides.state = unsealed_block.get_state_overrides(); + } + + let mut state_overrides_builder = StateOverridesBuilder::new(pending_overrides.state.unwrap_or_default()); + state_overrides_builder = state_overrides_builder.extend(overrides.unwrap_or_default()); + let final_overrides = state_overrides_builder.build(); + + EthCall::estimate_gas_at(&self.canonical, transaction, block_id, Some(final_overrides)) + .await + .map_err(Into::into) + } + + async fn simulate_v1( + &self, + opts: SimulatePayload, + block_number: Option, + ) -> RpcResult>>> { + tracing::debug!( + message = "rpc::simulate_v1", + block_number = ?block_number, + ); + + let block_id = block_number.unwrap_or_default(); + let mut pending_overrides = EvmOverrides::default(); + + // If the call is to pending block use cached override (if they exist) + if self.use_unsealed_state(&block_id) && + let Some(unsealed_block) = self.unsealed_block.load_full() + { + pending_overrides.state = unsealed_block.get_state_overrides(); + } + + // Prepend unsealed overrides to the block state calls + let mut block_state_calls: Vec> = Vec::new(); + for sim_block in opts.block_state_calls { + let mut state_overrides_builder = + StateOverridesBuilder::new(pending_overrides.state.clone().unwrap_or_default()); + state_overrides_builder = state_overrides_builder.extend(sim_block.state_overrides.unwrap_or_default()); + let final_overrides = state_overrides_builder.build(); + + let block_state_call = SimBlock { state_overrides: Some(final_overrides), ..sim_block }; + block_state_calls.push(block_state_call); + } + + let payload = SimulatePayload { block_state_calls, ..opts }; + + EthCall::simulate_v1(&self.canonical, payload, Some(block_id)).await.map_err(Into::into) + } + + async fn get_logs(&self, filter: Filter) -> RpcResult> { + tracing::debug!( + message = "rpc::get_logs", + address = ?filter.address + ); + + // Check if this is a mixed query (toBlock is pending) + let (from_block, to_block) = match &filter.block_option { + FilterBlockOption::Range { from_block, to_block } => (*from_block, *to_block), + _ => { + // Block hash queries or other formats - delegate to eth API + return self.eth_filter.logs(filter).await; + } + }; + + // If toBlock is not pending, delegate to eth API + if to_block.is_some_and(|block| !self.use_unsealed_state(&block)) { + return self.eth_filter.logs(filter).await; + } + + // Mixed query: toBlock is pending, so we need to combine historical + pending logs + let mut all_logs = Vec::new(); + + if self.use_unsealed_state(&to_block.unwrap_or_default()) && + let Some(unsealed_block) = self.unsealed_block.load_full() + { + let pending_logs = unsealed_block.get_unsealed_logs(&filter); + all_logs.extend(pending_logs); + } + + // Get historical logs if fromBlock is not pending + if !matches!(from_block, Some(BlockNumberOrTag::Pending)) { + // Create a filter for historical data (fromBlock to latest) + let mut historical_filter = filter.clone(); + historical_filter.block_option = + FilterBlockOption::Range { from_block, to_block: Some(BlockNumberOrTag::Latest) }; + + let historical_logs: Vec = self.eth_filter.logs(historical_filter).await?; + all_logs.extend(historical_logs); + } + + // Dedup any logs from the pending state that may already have been covered in the historical logs + all_logs.dedup(); + + Ok(all_logs) + } +} + +impl EthApi +where + Eth: FullEthApi + Send + Sync + 'static, +{ + async fn wait_for_frag_receipt(&self, tx_hash: TxHash) -> Option> { + if let Some(unsealed_block) = self.unsealed_block.load_full() { + let mut receiver = unsealed_block.subscribe_new_blocks(); + + loop { + match receiver.recv().await { + Ok(block) => { + if let Some(receipt) = unsealed_block.get_transaction_receipt(&tx_hash) { + tracing::debug!(%tx_hash, block_number = block.number(), block_hash = %block.hash(), "Receipt found"); + return Some(receipt.into_rpc()); + } + + continue; + } + Err(RecvError::Closed) => { + tracing::debug!("Unsealed block receipt queue closed"); + return None; + } + Err(RecvError::Lagged(_)) => { + tracing::warn!("Unsealed block receipt queue lagged, maybe missing receipts"); + } + } + } + } + + None + } + + async fn wait_for_canonical_receipt(&self, tx_hash: TxHash) -> Option> { + let mut stream = BroadcastStream::new(self.canonical.provider().subscribe_to_canonical_state()); + + while let Some(Ok(canon_state)) = stream.next().await { + for (block_receipt, _) in canon_state.block_receipts() { + for (canonical_tx_hash, _) in &block_receipt.tx_receipts { + if *canonical_tx_hash == tx_hash { + tracing::debug!( + message = "found receipt in canonical state", + tx_hash = %tx_hash + ); + return EthTransactions::transaction_receipt(&self.canonical, tx_hash).await.ok().flatten(); + } + } + } + } + None + } +} + +/// Helper trait for checking if a block number or id is latest or pending. +trait Tag { + fn is_latest(&self) -> bool; + fn is_pending(&self) -> bool; +} + +impl Tag for BlockNumberOrTag { + fn is_latest(&self) -> bool { + self.is_latest() + } + + fn is_pending(&self) -> bool { + self.is_pending() + } +} + +impl Tag for BlockId { + fn is_latest(&self) -> bool { + self.is_latest() + } + + fn is_pending(&self) -> bool { + self.is_pending() + } +} diff --git a/based/crates/reth/src/api/mod.rs b/based/crates/reth/src/api/mod.rs new file mode 100644 index 000000000..696463efb --- /dev/null +++ b/based/crates/reth/src/api/mod.rs @@ -0,0 +1,21 @@ +use op_alloy_network::Optimism; +use op_alloy_rpc_types::OpTransactionReceipt; +use reth_rpc_eth_api::RpcReceipt; + +pub mod engine; +pub mod eth; + +pub(crate) trait ToRpc { + type RpcVariant; + + /// Convert the type into its RPC variant. + fn into_rpc(self) -> Self::RpcVariant; +} + +impl ToRpc for OpTransactionReceipt { + type RpcVariant = RpcReceipt; + + fn into_rpc(self) -> Self::RpcVariant { + RpcReceipt::::from(self) + } +} diff --git a/based/crates/reth/src/bin/reth-node.rs b/based/crates/reth/src/bin/reth-node.rs new file mode 100644 index 000000000..d618a48cf --- /dev/null +++ b/based/crates/reth/src/bin/reth-node.rs @@ -0,0 +1,3 @@ +fn main() -> eyre::Result<()> { + based_op_reth::run() +} diff --git a/based/crates/reth/src/cli.rs b/based/crates/reth/src/cli.rs new file mode 100644 index 000000000..9fe556889 --- /dev/null +++ b/based/crates/reth/src/cli.rs @@ -0,0 +1,141 @@ +use std::sync::{Arc, OnceLock}; + +use clap::Parser; +use futures::TryStreamExt as _; +use reth::providers::{CanonStateSubscriptions as _, providers::BlockchainProvider}; +use reth_exex::ExExEvent; +use reth_node_builder::Node; +use reth_optimism_cli::{Cli, chainspec::OpChainSpecParser}; +use reth_optimism_node::{OpNode, args::RollupArgs}; + +use crate::{ + api::{ + engine::{BasedEngineApi, BasedEngineApiServer as _}, + eth::{EthApi, EthApiServer as _}, + }, + driver::Driver, +}; + +#[derive(Parser, Debug, Clone)] +pub struct BasedOpRethArgs { + #[command(flatten)] + pub rollup: RollupArgs, + #[command(flatten)] + pub based_op: BasedOpArgs, +} + +#[derive(Parser, Debug, Clone)] +pub struct BasedOpArgs { + /// Whether to use the unsealed block as the "latest" state in RPC calls. + #[arg(long)] + pub unsealed_as_latest: bool, +} + +impl BasedOpRethArgs { + pub fn test() -> Self { + Self { rollup: RollupArgs::default(), based_op: BasedOpArgs { unsealed_as_latest: true } } + } +} + +/// Run the based-op-reth node to completion, parsing args from the command line. +pub fn run() -> eyre::Result<()> { + run_with_cli(Cli::::parse()) +} + +/// Run the based-op-reth node with args parsed from the provided iterator. +/// +/// This is useful for testing where you want to provide args programmatically. +pub fn run_from_args(args: I) -> eyre::Result<()> +where + I: IntoIterator, + T: Into + Clone, +{ + run_with_cli(Cli::::try_parse_from(args)?) +} + +/// Internal helper that runs the node with a parsed CLI instance. +fn run_with_cli(cli: Cli) -> eyre::Result<()> { + cli.run(|builder, args| async move { + let driver = Arc::new(OnceLock::::new()); + + let op_node = OpNode::new(args.rollup.clone()); + + let node_handle = builder + .with_types_and_provider::>() + .with_components(op_node.components()) + .with_add_ons(op_node.add_ons()) + // Install the execution extension to handle canonical chain updates + .install_exex("based-op", { + // Get a clone of the driver handle. + let driver = Arc::clone(&driver); + move |mut ctx| async move { + Ok(async move { + let driver = driver.get_or_init(|| Driver::new(ctx.provider().clone())); + while let Some(note) = ctx.notifications.try_next().await? { + // TODO: Handle reorged and reverted chains? + if let Some(committed) = note.committed_chain() { + // Handle committed blocks by notifying the driver + for block in committed.blocks_iter() { + driver.forkchoice_updated(block.clone().into_block()).await?; + } + + let _ = ctx.events.send(ExExEvent::FinishedHeight(committed.tip().num_hash())); + } + } + + Ok(()) + }) + } + }) + .extend_rpc_modules({ + let driver = driver.clone(); + move |ctx| { + let provider = ctx.provider().clone(); + + let mut canon_stream = provider.subscribe_to_canonical_state(); + + // NOTE: Not entirely sure why this is needed + // Ref: + tokio::spawn(async move { + while let Ok(notif) = canon_stream.recv().await { + provider.canonical_in_memory_state().notify_canon_state(notif); + } + }); + + let driver = driver.get_or_init(|| Driver::new(ctx.provider().clone())); + + // Add based engine API modules to the existing auth module. + ctx.auth_module.merge_auth_methods(BasedEngineApi::new(driver.clone()).into_rpc())?; + + // Print supported engine_ methods + let methods = ctx + .auth_module + .module_mut() + .method_names() + .filter(|m| m.starts_with("engine_")) + .collect::>(); + + tracing::info!(supported_methods = ?methods, "Configured based engine API"); + + // Configure extended Eth API + let eth = EthApi { + canonical: ctx.registry.eth_api().clone(), + eth_filter: ctx.registry.eth_handlers().filter.clone(), + unsealed_block: driver.unsealed_block(), + unsealed_as_latest: args.based_op.unsealed_as_latest, + }; + + ctx.modules.replace_configured(eth.into_rpc())?; + + Ok(()) + } + }) + .launch() + .await?; + + // Run to completion + node_handle.wait_for_node_exit().await?; + + Ok(()) + }) +} diff --git a/based/crates/reth/src/driver.rs b/based/crates/reth/src/driver.rs new file mode 100644 index 000000000..fcf4768a4 --- /dev/null +++ b/based/crates/reth/src/driver.rs @@ -0,0 +1,366 @@ +use std::{sync::Arc, time::Instant}; + +use alloy_consensus::Header; +use alloy_primitives::B256; +use arc_swap::ArcSwapOption; +use bop_common::{ + p2p::{EnvV0, FragV0, SealV0}, + typedefs::OpBlock, +}; +use reth_chainspec::{ChainSpecProvider, EthChainSpec}; +use reth_optimism_chainspec::OpHardforks; +use reth_storage_api::{ + BlockReaderIdExt, BlockWriter, CanonChainTracker, DatabaseProviderFactory, StateProviderFactory, +}; +use tokio::sync::{mpsc, oneshot}; +use tracing::{error, info}; + +use crate::{ + error::{DriverError, ValidateSealError}, + exec::{StateExecutor, UnsealedExecutor}, + unsealed_block::UnsealedBlock, +}; + +/// Result of submitting a frag to the driver. +#[derive(Debug, Clone, Copy)] +pub enum FragStatus { + Ignored, + Valid, + Invalid, +} + +/// Actor handle for sending unsealed-block commands to the driver task. +#[derive(Clone, Debug)] +pub struct Driver { + tx: mpsc::Sender, + unsealed_block: Arc>, +} + +impl From> for DriverError { + fn from(_: mpsc::error::SendError) -> Self { + DriverError::DriverGone + } +} + +impl From for DriverError { + fn from(_: oneshot::error::RecvError) -> Self { + DriverError::ResponseDropped + } +} + +type Resp = oneshot::Sender>; + +#[derive(Debug)] +enum Reply { + Ok(T), + Err(DriverError), +} + +impl Reply { + fn into_result(self) -> Result { + match self { + Reply::Ok(v) => Ok(v), + Reply::Err(e) => Err(e), + } + } +} + +fn respond(resp: Resp, res: Result) { + let _ = resp.send(match res { + Ok(v) => Reply::Ok(v), + Err(e) => Reply::Err(e), + }); +} + +#[derive(Debug)] +enum Cmd { + EnvV0 { env: EnvV0, resp: Resp<()> }, + NewFragV0 { frag: FragV0, resp: Resp }, + SealFragV0 { seal: SealV0, resp: Resp<()> }, + ForkchoiceUpdated { block: Box, resp: Resp<()> }, + GetHeaderView { resp: Resp }, +} + +#[derive(Debug, Clone)] +pub struct HeaderView { + pub enabled: bool, + pub header: Option
, +} + +/// Single-threaded state owned by the driver task (unsealed block + executor + counters). +/// Essentially should be implemented using based-op-reth +#[derive(Debug)] +pub struct DriverInner { + pub current_unsealed_block: Arc>, + pub exec: E, + pub fcu_count_since_unseal_reset: usize, +} + +impl Driver { + pub fn new(client: Client) -> Self + where + Client: StateProviderFactory + + ChainSpecProvider + OpHardforks> + + BlockReaderIdExt
+ + CanonChainTracker
+ + DatabaseProviderFactory + + Clone + + 'static, + ::ProviderRW: BlockWriter, + { + let executor = StateExecutor::new(client); + let current_unsealed_block = executor.shared_unsealed_block(); + + Self::spawn(DriverInner { current_unsealed_block, exec: executor, fcu_count_since_unseal_reset: 0 }) + } + + /// Spawns the driver actor task and returns a handle used to send commands to it. + pub fn spawn(inner: DriverInner) -> Self { + info!(target: "based-op", "Spawning frag driver"); + let (tx, mut rx) = mpsc::channel::(256); + let unsealed_block = inner.current_unsealed_block.clone(); + + tokio::spawn(async move { + let mut inner = inner; + + while let Some(cmd) = rx.recv().await { + match cmd { + Cmd::EnvV0 { env, resp } => { + respond(resp, inner.handle_env_v0(env).await); + } + Cmd::NewFragV0 { frag, resp } => { + respond(resp, inner.handle_new_frag_v0(frag).await); + } + Cmd::SealFragV0 { seal, resp } => { + respond(resp, inner.handle_seal_frag_v0(seal).await); + } + Cmd::ForkchoiceUpdated { block, resp } => { + respond(resp, inner.handle_forkchoice_updated(*block).await); + } + Cmd::GetHeaderView { resp } => { + let _ = resp.send(Reply::Ok(inner.get_header_view())); + } + } + } + }); + + Self { tx, unsealed_block } + } + + /// Returns a clone of the current unsealed block. + pub fn unsealed_block(&self) -> Arc> { + Arc::clone(&self.unsealed_block) + } + + /// Starts a new unsealed block execution context for the given environment. + pub async fn env_v0(&self, env: EnvV0) -> Result<(), DriverError> { + let (resp_tx, resp_rx) = oneshot::channel(); + self.tx.send(Cmd::EnvV0 { env, resp: resp_tx }).await?; + resp_rx.await?.into_result() + } + + /// Executes and records a fragment against the current unsealed block. + pub async fn new_frag_v0(&self, frag: FragV0) -> Result { + let (resp_tx, resp_rx) = oneshot::channel(); + self.tx.send(Cmd::NewFragV0 { frag, resp: resp_tx }).await?; + resp_rx.await?.into_result() + } + + /// Validates and finalizes the current unsealed block using the provided seal. + pub async fn seal_frag_v0(&self, seal_v0: SealV0) -> Result<(), DriverError> { + let (resp_tx, resp_rx) = oneshot::channel(); + self.tx.send(Cmd::SealFragV0 { resp: resp_tx, seal: seal_v0 }).await?; + resp_rx.await?.into_result() + } + + /// Notifies the driver about a forkchoice update and resets state on mismatch. + pub async fn forkchoice_updated(&self, block: OpBlock) -> Result<(), DriverError> { + let (resp_tx, resp_rx) = oneshot::channel(); + self.tx.send(Cmd::ForkchoiceUpdated { block: Box::new(block), resp: resp_tx }).await?; + resp_rx.await?.into_result() + } + + /// Returns a best-effort view of the current unsealed header used as "latest" when enabled. + pub async fn header_view(&self) -> HeaderView { + let (resp_tx, resp_rx) = oneshot::channel(); + + if self.tx.send(Cmd::GetHeaderView { resp: resp_tx }).await.is_err() { + return HeaderView { enabled: false, header: None }; + } + + match resp_rx.await { + Ok(reply) => reply.into_result().unwrap_or(HeaderView { enabled: false, header: None }), + Err(_) => HeaderView { enabled: false, header: None }, + } + } +} + +impl DriverInner { + fn reset_current_unsealed_block(&mut self) { + self.exec.reset(); + self.fcu_count_since_unseal_reset = 0; + } + + async fn handle_env_v0(&mut self, env: EnvV0) -> Result<(), DriverError> { + info!(block = env.number, "envV0 received"); + + if let Some(current) = self.current_unsealed_block.load_full().as_ref() { + let current_num = current.env.number; + + if current_num >= env.number { + return Err(DriverError::UnsealedBlockInProgress { current: current_num, incoming: env.number }); + } + + info!(old = current_num, new = env.number, "env advanced, resetting"); + self.reset_current_unsealed_block(); + } + + self.exec.ensure_env(&env)?; // this should update current_unsealed_block too because shared arc + self.fcu_count_since_unseal_reset = 0; + Ok(()) + } + + async fn handle_forkchoice_updated(&mut self, block: OpBlock) -> Result<(), DriverError> { + self.fcu_count_since_unseal_reset += 1; + + let Some(ub) = self.current_unsealed_block.load_full() else { + return Ok(()); + }; + + let new_block_number = block.header.number; + + // TODO: Check hash etc. Commit state if needed + if ub.env.number != new_block_number { + info!(old = ub.env.number, new = new_block_number, "forkchoiceUpdated block mismatch: resetting unsealed"); + self.reset_current_unsealed_block(); + } + + Ok(()) + } + + async fn handle_new_frag_v0(&mut self, frag: FragV0) -> Result { + let start = Instant::now(); + + let Some(ub) = self.current_unsealed_block.load_full() else { + return Err(DriverError::NotInitialized); + }; + + info!(for_block = frag.block_number, current = ub.env.number, "new frag received"); + + if frag.block_number < ub.env.number { + info!(frag_block = frag.block_number, env_number = ub.env.number, "stale frag (older block), ignoring"); + return Ok(FragStatus::Ignored); + } + + if let Err(e) = ub.validate_new_frag(&frag) { + error!(error = %e, "frag invalid, discarding unsealed block"); + self.reset_current_unsealed_block(); + return Err(DriverError::from(e)); + } + + match self.exec.execute_frag(&frag) { + Ok(()) => (), + Err(e) => { + error!(error = %e, "execution failed, discarding unsealed block"); + self.reset_current_unsealed_block(); + return Err(DriverError::from(e)); + } + }; + + info!(elapsed_ms = start.elapsed().as_millis(), "frag inserted + executed"); + + if ub.last_frag().is_some_and(|f| f.is_last) { + info!("last frag received, pre-sealing block"); + if let Err(e) = self.exec.seal() { + error!(error = %e, "seal failed, discarding unsealed block"); + self.reset_current_unsealed_block(); + return Err(DriverError::from(e)); + } + } + + Ok(FragStatus::Valid) + } + + async fn handle_seal_frag_v0(&mut self, seal: SealV0) -> Result<(), DriverError> { + let start = Instant::now(); + let Some(ub) = self.current_unsealed_block.load_full() else { + return Err(DriverError::NotInitialized); + }; + + if ub.env.number > seal.block_number { + info!(ub = ub.env.number, seal = seal.block_number, "stale seal, dropping"); + return Ok(()); + } + + let presealed_block = match self.exec.get_block(seal.block_hash) { + Ok(b) => b, + Err(e) => { + self.reset_current_unsealed_block(); + return Err(DriverError::from(e)); + } + }; + + self.validate_seal_frag_v0(&presealed_block, ub.as_ref(), &seal)?; + + self.exec.set_canonical(&presealed_block)?; + + self.reset_current_unsealed_block(); + + info!(elapsed_ms = start.elapsed().as_millis(), "block sealed"); + Ok(()) + } + + fn validate_seal_frag_v0( + &self, + presealed_block: &OpBlock, + ub: &UnsealedBlock, + seal: &SealV0, + ) -> Result<(), ValidateSealError> { + let expected_block_hash: B256 = presealed_block.header.hash_slow(); + if expected_block_hash != seal.block_hash { + return Err(ValidateSealError::BlockHash { expected: expected_block_hash, got: seal.block_hash }); + } + + let expected_parent_hash = presealed_block.header.parent_hash; + if expected_parent_hash != seal.parent_hash { + return Err(ValidateSealError::ParentHash { expected: expected_parent_hash, got: seal.parent_hash }); + } + + let expected_state_root = presealed_block.header.state_root; + if expected_state_root != seal.state_root { + return Err(ValidateSealError::StateRoot { expected: expected_state_root, got: seal.state_root }); + } + + let expected_tx_root = presealed_block.header.transactions_root; + if expected_tx_root != seal.transactions_root { + return Err(ValidateSealError::TransactionsRoot { expected: expected_tx_root, got: seal.transactions_root }); + } + + let expected_receipts_root = presealed_block.header.receipts_root; + if expected_receipts_root != seal.receipts_root { + return Err(ValidateSealError::ReceiptsRoot { expected: expected_receipts_root, got: seal.receipts_root }); + } + + let expected_gas_used = presealed_block.header.gas_used; + if expected_gas_used != seal.gas_used { + return Err(ValidateSealError::GasUsed { expected: expected_gas_used, got: seal.gas_used }); + } + + let expected_gas_limit = presealed_block.header.gas_limit; + if expected_gas_limit != seal.gas_limit { + return Err(ValidateSealError::GasLimit { expected: expected_gas_limit, got: seal.gas_limit }); + } + + let expected_total_frags = ub.frags.len() as u64; + if expected_total_frags != seal.total_frags { + return Err(ValidateSealError::TotalFrags { expected: expected_total_frags, got: seal.total_frags }); + } + + Ok(()) + } + + fn get_header_view(&self) -> HeaderView { + let header = self.current_unsealed_block.load_full().map(|ub| ub.get_header()); + HeaderView { enabled: true, header } + } +} diff --git a/based/crates/reth/src/error.rs b/based/crates/reth/src/error.rs new file mode 100644 index 000000000..f96808ff9 --- /dev/null +++ b/based/crates/reth/src/error.rs @@ -0,0 +1,122 @@ +use alloy_consensus::crypto::RecoveryError; +use alloy_eips::eip2718::Eip2718Error; +use alloy_primitives::B256; +use op_alloy_consensus::EIP1559ParamError; +use reth_optimism_evm::OpBlockExecutionError; +use reth_optimism_rpc::OpEthApiError; +use reth_storage_errors::ProviderError; +use thiserror::Error; + +#[derive(Debug, Error)] +pub enum DriverError { + #[error("failed to send command to driver task (task not running)")] + DriverGone, + + #[error("failed to receive response from driver task (response dropped)")] + ResponseDropped, + + #[error("driver not initialized, call env_v0 first")] + NotInitialized, + + #[error( + "cannot open a new unsealed block while there's one already in progress (current={current}, incoming={incoming})" + )] + UnsealedBlockInProgress { current: u64, incoming: u64 }, + + #[error("seal mismatch: {what}")] + SealMismatch { what: String }, + + #[error(transparent)] + Exec(#[from] ExecError), + + #[error(transparent)] + Other(#[from] anyhow::Error), + + #[error(transparent)] + UnsealedBlock(#[from] UnsealedBlockError), + + #[error(transparent)] + ValidateSeal(#[from] ValidateSealError), +} + +#[derive(Debug, Error)] +pub enum ValidateSealError { + #[error("block hash mismatch, expected {expected:?}, got {got:?}")] + BlockHash { expected: B256, got: B256 }, + + #[error("parent hash mismatch, expected {expected:?}, got {got:?}")] + ParentHash { expected: B256, got: B256 }, + + #[error("state root mismatch, expected {expected:?}, got {got:?}")] + StateRoot { expected: B256, got: B256 }, + + #[error("transactions root mismatch, expected {expected:?}, got {got:?}")] + TransactionsRoot { expected: B256, got: B256 }, + + #[error("receipts root mismatch, expected {expected:?}, got {got:?}")] + ReceiptsRoot { expected: B256, got: B256 }, + + #[error("gas used mismatch, expected {expected}, got {got}")] + GasUsed { expected: u64, got: u64 }, + + #[error("gas limit mismatch, expected {expected}, got {got}")] + GasLimit { expected: u64, got: u64 }, + + #[error("total frags mismatch, expected {expected}, got {got}")] + TotalFrags { expected: u64, got: u64 }, +} + +#[derive(Debug, Error)] +pub enum UnsealedBlockError { + #[error("failed to decode EIP-2718 tx at index {index}")] + TxDecode { + index: usize, + #[source] + source: Eip2718Error, + }, + + #[error("stale frag (older block): frag.block={frag_block} < env.number={env_number}")] + StaleFrag { frag_block: u64, env_number: u64 }, + + #[error("frag is not applicable to current unsealed env: frag.block={frag_block} env.number={env_number}")] + WrongBlock { frag_block: u64, env_number: u64 }, + + #[error("frag sequencing violation: expected next seq, got {got}, last={last:?}")] + SeqMismatch { got: u64, last: Option }, + + #[error("received frag after last frag already accepted")] + AlreadyEnded, + + #[error("operation failed: {0}")] + Failed(String), +} + +#[derive(Debug, Error)] +pub enum ExecError { + #[error("executor not initialized")] + NotInitialized, + + #[error("execution failed: {0}")] + Failed(String), + + #[error("seal failed: {0}")] + SealFailed(String), + + #[error(transparent)] + StorageProvider(#[from] ProviderError), + + #[error(transparent)] + OpBlockExecution(#[from] OpBlockExecutionError), + + #[error(transparent)] + Recovery(#[from] RecoveryError), + + #[error(transparent)] + Eip1559Param(#[from] EIP1559ParamError), + + #[error(transparent)] + OpEthApi(#[from] OpEthApiError), + + #[error(transparent)] + UnsealedBlock(#[from] UnsealedBlockError), +} diff --git a/based/crates/reth/src/exec.rs b/based/crates/reth/src/exec.rs new file mode 100644 index 000000000..db58c796a --- /dev/null +++ b/based/crates/reth/src/exec.rs @@ -0,0 +1,439 @@ +use std::sync::{Arc, Mutex}; + +use alloy_consensus::{ + BlockBody, Header, Receipt, Transaction, + transaction::{Recovered, SignerRecoverable, TransactionMeta}, +}; +use alloy_eips::{BlockNumberOrTag, Typed2718, eip2718::Decodable2718}; +use alloy_primitives::{B256, Bytes, Sealable}; +use alloy_rpc_types::Log; +use arc_swap::ArcSwapOption; +use bop_common::{ + p2p::{EnvV0, FragV0}, + typedefs::Database, +}; +use op_alloy_consensus::OpTxEnvelope; +use op_alloy_rpc_types::{OpTransactionReceipt, Transaction as RPCTransaction}; +use reth::{ + api::Block as RethBlock, + network::cache::LruMap, + primitives::{SealedBlock, SealedHeader}, +}; +use reth_chainspec::{ChainSpecProvider, EthChainSpec, EthereumHardforks as _}; +use reth_evm::{ConfigureEvm, Evm, op_revm::OpHaltReason}; +use reth_optimism_chainspec::OpHardforks; +use reth_optimism_consensus::isthmus; +use reth_optimism_evm::{OpEvmConfig, OpNextBlockEnvAttributes}; +use reth_optimism_primitives::{OpBlock, OpPrimitives, OpReceipt, OpTransactionSigned}; +use reth_optimism_rpc::OpReceiptBuilder; +use reth_revm::{ + DatabaseCommit, State, + context::result::{ExecutionResult, ResultAndState}, + database::StateProviderDatabase, +}; +use reth_rpc_convert::transaction::ConvertReceiptInput; +use reth_storage_api::{ + BlockReaderIdExt, BlockWriter, CanonChainTracker, DBProvider, DatabaseProviderFactory, StateProviderFactory, +}; +use revm::database::CacheDB; + +use crate::{error::ExecError, unsealed_block::UnsealedBlock}; + +const BLOCK_CACHE_LIMIT: u32 = 256; + +/// This trait is the ONLY place that needs to know about Reth internals. +/// Everything else is just state-machine + bookkeeping. +pub trait UnsealedExecutor: Send { + /// Ensure the executor context is ready for this env (initialize overlay state, block env, etc.) + fn ensure_env(&mut self, env: &EnvV0) -> Result<(), ExecError>; + + /// Execute all txs in `frag` on top of current overlay state. + /// + /// MUST be cumulative: txs execute after all previous frags's txs. + fn execute_frag(&mut self, frag: &FragV0) -> Result<(), ExecError>; + + fn seal(&mut self) -> Result<(), ExecError>; + + fn set_canonical(&mut self, b: &OpBlock) -> Result<(), ExecError>; + + fn get_block(&self, hash: B256) -> Result; + + /// Reset overlay state completely. + fn reset(&mut self); +} + +pub struct StateExecutor { + client: Client, + current_unsealed_block: Arc>, + block_cache: Mutex>, +} + +impl StateExecutor { + pub fn new(client: Client) -> Self { + Self { + client, + current_unsealed_block: Arc::new(ArcSwapOption::new(None)), + block_cache: Mutex::new(LruMap::new(BLOCK_CACHE_LIMIT)), + } + } + + pub fn shared_unsealed_block(&self) -> Arc> { + Arc::clone(&self.current_unsealed_block) + } +} + +impl UnsealedExecutor for StateExecutor +where + Client: StateProviderFactory + + ChainSpecProvider + OpHardforks> + + BlockReaderIdExt
+ + CanonChainTracker
+ + DatabaseProviderFactory + + Clone + + 'static, + ::ProviderRW: BlockWriter, +{ + fn ensure_env(&mut self, env: &EnvV0) -> Result<(), ExecError> { + let Some(parent) = self.client.block_by_hash(env.parent_hash)? else { + return Err(ExecError::Failed(format!("parent block {} not found", env.parent_hash))) + }; + + let parent_header = parent.header(); + let None = self.current_unsealed_block.load_full() else { return Err(ExecError::NotInitialized) }; + + let expected_block_number = parent_header.number.saturating_sub(1); + if env.number != expected_block_number { + return Err(ExecError::Failed(format!( + "env block number doesn't match expected block number, expected {}, received {}", + expected_block_number, env.number + ))) + } + + if env.timestamp < parent_header.timestamp { + return Err(ExecError::Failed(format!( + "env timestamp is lower than parent block timestamp, parent timestamp {}, env timestamp {}", + parent_header.timestamp, env.timestamp + ))) + } + + let state_provider = + self.client.state_by_block_number_or_tag(BlockNumberOrTag::Number(parent_header.number))?; + let state_provider_db = StateProviderDatabase::new(state_provider); + let state = State::builder().with_database(state_provider_db).with_bundle_update().build(); + + // Check if the current block is a prague block + let is_prague = self.client.chain_spec().is_prague_active_at_timestamp(env.timestamp); + + let ub = UnsealedBlock::new(env.clone(), is_prague).with_db_cache(CacheDB::new(state).cache); + self.current_unsealed_block.store(Some(Arc::new(ub))); + + Ok(()) + } + + fn execute_frag(&mut self, frag: &FragV0) -> Result<(), ExecError> { + let chain_spec = self.client.chain_spec().clone(); + + let ub_arc_opt = self.current_unsealed_block.load_full(); + let frag = frag.clone(); + + let ub_arc = ub_arc_opt.ok_or(ExecError::NotInitialized)?; + + // Make an owned, mutable working copy from the start + let mut ub = ub_arc.as_ref().clone_for_update(); + + let ub_cache = ub.get_db_cache(); + let canonical_block = ub.env.number.saturating_sub(1); + + let last_block_header = self + .client + .header_by_number(canonical_block) + .map_err(|e| ExecError::Failed(format!("header_by_number({canonical_block}) failed: {e}")))? + .ok_or_else(|| ExecError::Failed(format!("missing parent header at {canonical_block}")))?; + + let evm_config = OpEvmConfig::optimism(self.client.chain_spec()); + + let state_provider = self + .client + .state_by_block_number_or_tag(BlockNumberOrTag::Number(canonical_block)) + .map_err(|e| ExecError::Failed(format!("state_by_block_number_or_tag({canonical_block}) failed: {e}")))?; + + let state_provider_db = StateProviderDatabase::new(state_provider); + let state = State::builder().with_database(state_provider_db).with_bundle_update().build(); + + let mut db = CacheDB { cache: ub_cache, db: state }; + + let mut state_overrides = ub.get_state_overrides().unwrap_or_default(); + + let block: OpBlock = build_op_block_from_ub_and_frag(&ub, &frag)?; + let mut l1_block_info = reth_optimism_evm::extract_l1_info(&block.body)?; + let header = block.header.clone().seal_slow(); + + let block_env_attributes = OpNextBlockEnvAttributes { + timestamp: ub.env.timestamp, + suggested_fee_recipient: ub.env.beneficiary, + prev_randao: ub.env.prevrandao, + gas_limit: ub.env.gas_limit, + parent_beacon_block_root: Some(ub.env.parent_beacon_block_root), + extra_data: block.extra_data.clone(), + }; + + let evm_env = evm_config.next_evm_env(&last_block_header, &block_env_attributes)?; + let mut evm = evm_config.evm_with_env(db, evm_env); + + let mut gas_used: u64 = ub.cumulative_blob_gas_used; + let mut logs: Vec = Vec::new(); + let mut next_log_index = 0usize; + let mut receipts: Vec = Vec::new(); + + // Simulate the transactions added by the frag + for (idx, transaction) in block.body.transactions.iter().enumerate() { + let tx_hash = transaction.tx_hash(); + let sender = transaction.recover_signer()?; + ub.increment_nonce(sender); + + let recovered_transaction = Recovered::new_unchecked(transaction.clone(), sender); + let envelope = recovered_transaction.clone().convert::(); + let is_deposit = transaction.is_deposit(); + + let effective_gas_price = if is_deposit { + 0 + } else { + block + .base_fee_per_gas + .map(|base_fee| transaction.effective_tip_per_gas(base_fee).unwrap_or_default() + base_fee as u128) + .unwrap_or_else(|| transaction.max_fee_per_gas()) + }; + + let deposit_nonce = if is_deposit && chain_spec.is_regolith_active_at_timestamp(ub.env.timestamp) { + // depositor nonce (use signer account) + let acc = evm + .db_mut() + .basic(sender) + .map_err(|e| ExecError::Failed(format!("get acc nonce basic() failed: {e}")))? + .unwrap_or_default(); + Some(acc.nonce) // pre-tx nonce + } else { + None + }; + + let deposit_receipt_version = + if is_deposit && chain_spec.is_canyon_active_at_timestamp(ub.env.timestamp) { Some(1) } else { None }; + + let rpc_txn = RPCTransaction { + inner: alloy_rpc_types_eth::Transaction { + inner: envelope, + block_hash: Some(header.hash()), + block_number: Some(block.number), + transaction_index: Some(idx as u64), + effective_gas_price: Some(effective_gas_price), + }, + deposit_nonce, + deposit_receipt_version, + }; + + ub.with_transaction(rpc_txn); + + match evm.transact(recovered_transaction) { + Ok(ResultAndState { state, result }) => { + for (addr, acc) in &state { + let existing_override = state_overrides.entry(*addr).or_default(); + existing_override.balance = Some(acc.info.balance); + existing_override.nonce = Some(acc.info.nonce); + existing_override.code = acc.info.code.clone().map(|code| code.bytes()); + + let existing = existing_override.state_diff.get_or_insert(Default::default()); + let changed_slots = + acc.storage.iter().map(|(&key, slot)| (B256::from(key), B256::from(slot.present_value))); + + existing.extend(changed_slots); + } + + evm.db_mut().commit(state); + + let (success, tx_gas_used, tx_logs) = split_execution_result(&result); + gas_used = gas_used.saturating_add(tx_gas_used); + + logs.extend(tx_logs.iter().map(|inner| Log { inner: inner.clone(), ..Default::default() })); + + let base_receipt = Receipt { status: success.into(), cumulative_gas_used: gas_used, logs: tx_logs }; + + let ty = transaction.ty(); + let op_receipt = wrap_op_receipt(ty, base_receipt, deposit_nonce, deposit_receipt_version)?; + + let meta = TransactionMeta { + tx_hash, + index: idx as u64, + block_hash: header.hash(), + block_number: block.number, + base_fee: block.base_fee_per_gas, + excess_blob_gas: block.excess_blob_gas, + timestamp: block.timestamp, + }; + + let input: ConvertReceiptInput<'_, OpPrimitives> = ConvertReceiptInput { + receipt: op_receipt, + tx: Recovered::new_unchecked(transaction, sender), + gas_used: tx_gas_used, + next_log_index, + meta, + }; + + let receipt = OpReceiptBuilder::new(chain_spec.as_ref(), input, &mut l1_block_info)?.build(); + + // TODO: Is this correct?q + next_log_index += receipt.inner.logs().len(); + ub.with_transaction_receipt(tx_hash, receipt.clone()); + receipts.push(receipt); + } + Err(e) => { + return Err(ExecError::Failed(format!( + "failed to execute transaction: {:?} tx_hash: {:?} sender: {:?}", + e, tx_hash, sender + ))); + } + } + } + + db = evm.into_db(); + ub = ub + .with_db_cache(db.cache) + .with_state_overrides(Some(state_overrides)) + .with_bundle_state(db.db.bundle_state); + + ub.accept_frag_execution(frag, logs, receipts, gas_used); + + self.current_unsealed_block.store(Some(Arc::new(ub))); + + Ok(()) + } + + fn seal(&mut self) -> Result<(), ExecError> { + let ub = self.current_unsealed_block.load_full().ok_or(ExecError::NotInitialized)?; + let withdrawals_hash = if ub.is_prague { + let canonical_block = ub.env.number.saturating_sub(1); + + let state_provider = + self.client.state_by_block_number_or_tag(BlockNumberOrTag::Number(canonical_block)).map_err(|e| { + ExecError::Failed(format!("state_by_block_number_or_tag({canonical_block}) failed: {e}")) + })?; + let bundle_state = ub.get_bundle_state(); + Some(isthmus::withdrawals_root(bundle_state, state_provider)?) + } else { + None + }; + + let block = ub.to_op_block(withdrawals_hash)?; + let sealed = SealedBlock::seal_slow(block); + let recovered = sealed.try_recover().map_err(|e| ExecError::Failed(format!("recover senders: {e}")))?; + + let provider_rw = self.client.database_provider_rw()?; + provider_rw.insert_block(recovered)?; + provider_rw.commit()?; + Ok(()) + } + + fn set_canonical(&mut self, b: &OpBlock) -> Result<(), ExecError> { + let sealed = SealedHeader::seal_slow(b.header.clone()); + self.client.set_canonical_head(sealed); + Ok(()) + } + + fn get_block(&self, hash: B256) -> Result { + if let Some(block) = self + .block_cache + .lock() + .map_err(|_| ExecError::Failed("block_cache mutex poisoned".into()))? + .get(&hash) + .cloned() + { + return Ok(block); + } + + // fetch + let block = self + .client + .block_by_hash(hash) + .map_err(|e| ExecError::Failed(format!("block_by_hash failed: {e}")))? + .ok_or_else(|| ExecError::Failed("pre-sealed block not found".into()))?; + + self.block_cache + .lock() + .map_err(|_| ExecError::Failed("block_cache mutex poisoned".into()))? + .insert(hash, block.clone()); + + Ok(block) + } + + fn reset(&mut self) { + self.current_unsealed_block.store(None); + } +} + +fn build_op_block_from_ub_and_frag(ub: &UnsealedBlock, frag: &FragV0) -> Result { + // Decode EIP-2718 tx bytes -> OpTransactionSigned + let tx_list: Vec = frag + .txs + .iter() + .map(|tx_bytes| { + OpTxEnvelope::decode_2718(&mut tx_bytes.as_ref()) + .map_err(|e| ExecError::Failed(format!("decode tx failed: {e}"))) + }) + .collect::, ExecError>>()?; + + let extra_data: Bytes = Bytes::copy_from_slice(ub.env.extra_data.as_ref()); + let header = Header { + parent_hash: ub.env.parent_hash, + ommers_hash: Default::default(), + beneficiary: ub.env.beneficiary, + state_root: B256::ZERO, + transactions_root: B256::ZERO, + receipts_root: B256::ZERO, + logs_bloom: Default::default(), + difficulty: ub.env.difficulty, + number: frag.block_number, + gas_limit: ub.env.gas_limit, + gas_used: ub.cumulative_gas_used, + timestamp: ub.env.timestamp, + extra_data, + mix_hash: ub.env.prevrandao, + nonce: Default::default(), + base_fee_per_gas: Some(ub.env.basefee), + withdrawals_root: None, + blob_gas_used: Some(ub.cumulative_blob_gas_used), + excess_blob_gas: Some(0), + parent_beacon_block_root: Some(ub.env.parent_beacon_block_root), + requests_hash: None, + }; + + let body = BlockBody { transactions: tx_list, ommers: vec![], withdrawals: None }; + + Ok(OpBlock::new(header, body)) +} + +fn split_execution_result(result: &ExecutionResult) -> (bool, u64, Vec) { + match result { + ExecutionResult::Success { gas_used, logs, .. } => (true, *gas_used, logs.clone()), + ExecutionResult::Revert { gas_used, .. } => (false, *gas_used, vec![]), + ExecutionResult::Halt { gas_used, .. } => (false, *gas_used, vec![]), + } +} + +fn wrap_op_receipt( + tx_type: u8, + receipt: Receipt, + deposit_nonce: Option, + deposit_receipt_version: Option, +) -> Result { + Ok(match tx_type { + 0x00 => OpReceipt::Legacy(receipt), + 0x01 => OpReceipt::Eip2930(receipt), + 0x02 => OpReceipt::Eip1559(receipt), + 0x04 => OpReceipt::Eip7702(receipt), + t if t == op_alloy_consensus::DEPOSIT_TX_TYPE_ID => OpReceipt::Deposit(op_alloy_consensus::OpDepositReceipt { + inner: receipt, + deposit_nonce, + deposit_receipt_version, + }), + other => return Err(ExecError::Failed(format!("unsupported tx type for receipt: 0x{other:02x}"))), + }) +} diff --git a/based/crates/reth/src/lib.rs b/based/crates/reth/src/lib.rs new file mode 100644 index 000000000..d7e3da400 --- /dev/null +++ b/based/crates/reth/src/lib.rs @@ -0,0 +1,47 @@ +mod api; +mod cli; +pub mod driver; +mod error; +pub mod exec; +pub mod unsealed_block; + +pub use cli::*; + +#[cfg(test)] +mod tests { + #[test] + fn test_cli() { + crate::run_from_args([ + "op-reth", + "node", + "--chain", + "base-sepolia", + "--datadir", + "/tmp/base-sepolia", + "--http", + "--http.addr", + "0.0.0.0", + "--ws", + "--ws.addr", + "0.0.0.0", + "--http.api", + "admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots", + "--rollup.sequencer-http", + "https://sepolia-sequencer.base.org", + "--rpc-max-tracing-requests", + "1000000", + "--rpc.gascap", + "18446744073709551615", + "--rpc.max-connections", + "429496729", + "--rpc.max-logs-per-response", + "0", + "--rpc.max-subscriptions-per-connection", + "10000", + "--metrics", + "9003", + "--unsealed-as-latest", + ]) + .unwrap(); + } +} diff --git a/based/crates/reth/src/unsealed_block.rs b/based/crates/reth/src/unsealed_block.rs new file mode 100644 index 000000000..8e71f2287 --- /dev/null +++ b/based/crates/reth/src/unsealed_block.rs @@ -0,0 +1,411 @@ +use alloy_consensus::{BlockBody, Header, TxEnvelope}; +use alloy_eips::{eip2718::Decodable2718, eip7685::EMPTY_REQUESTS_HASH}; +use alloy_primitives::{Address, B256, Bytes, Sealable, TxHash, U256, map::foldhash::HashMap}; +use alloy_rpc_types::{BlockTransactions, Filter, Log, state::StateOverride}; +use alloy_rpc_types_eth::Header as RPCHeader; +use bop_common::p2p::{EnvV0, FragV0, Transaction as TxBytes}; +use op_alloy_consensus::{OpBlock, OpTxEnvelope}; +use op_alloy_network::{Optimism, TransactionResponse}; +use op_alloy_rpc_types::{OpTransactionReceipt, Transaction}; +use reth::revm::db::{BundleState, Cache}; +use reth_optimism_primitives::OpTransactionSigned; +use reth_rpc_eth_api::RpcBlock; +use tokio::sync::broadcast; + +use crate::error::UnsealedBlockError; + +#[derive(Debug, Clone)] +pub struct UnsealedBlock { + /// Block environment. + pub env: EnvV0, + /// Received fragments that contain the raw transaction bytes. + pub frags: Vec, + /// Sequence number of the last fragment that has been accepted/added. + /// + /// - `None` means no fragment has been accepted yet + /// - `Some(n)` means `frags[n]` is considered the latest known fragment + pub last_sequence_number: Option, + /// Block hash. + pub hash: B256, + + /// Transaction receipts for executed transactions. + pub receipts: Vec, + /// Flattened logs emitted during execution. + pub logs: Vec, + /// Cumulative execution gas used across all transactions in the block. + pub cumulative_gas_used: u64, + /// Cumulative blob gas used across all blob-carrying transactions in the block. + pub cumulative_blob_gas_used: u64, + pub is_prague: bool, + + transaction_count: HashMap, + transactions: Vec, + transaction_receipts: HashMap, + state_overrides: Option, + + new_block_sender: broadcast::Sender>, + + db_cache: Cache, + bundle_state: BundleState, +} + +impl UnsealedBlock { + /// Create a fresh unsealed block state for `env` with empty frags/results/caches. + pub fn new(env: EnvV0, is_prague: bool) -> Self { + let (new_block_sender, _) = broadcast::channel(16); + + Self { + env, + frags: Vec::new(), + last_sequence_number: None, + hash: Default::default(), + receipts: Vec::new(), + logs: Vec::new(), + cumulative_gas_used: 0, + cumulative_blob_gas_used: 0, + is_prague, + transaction_count: Default::default(), + transactions: vec![], + transaction_receipts: Default::default(), + state_overrides: None, + new_block_sender, + db_cache: Default::default(), + bundle_state: Default::default(), + } + } + + /// Returns the canonical block number. + pub fn canonical_block_number(&self) -> u64 { + // TODO: Is this correct? + self.env.number.saturating_sub(1) + } + + pub fn subscribe_new_blocks(&self) -> broadcast::Receiver> { + self.new_block_sender.subscribe() + } + + /// Returns `true` if no fragments have been added yet. + pub fn is_empty(&self) -> bool { + self.frags.is_empty() + } + + /// Returns `true` if `f` is the next fragment that should be appended. + pub fn is_next_frag(&self, f: &FragV0) -> bool { + match self.last_sequence_number { + None => f.is_first(), + Some(last_seq) => { + let Some(last_known) = self.frags.get(last_seq as usize) else { + return false; + }; + if last_known.is_last { false } else { last_known.seq + 1 == f.seq } + } + } + } + + /// Raw tx bytes iterator (flattening frags). + pub fn transactions_iter_bytes(&self) -> impl Iterator + '_ { + self.frags.iter().flat_map(|frag| frag.txs.iter()) + } + + /// Decoded txs iterator (lazy decode). + pub fn transactions_iter_decoded(&self) -> impl Iterator> + '_ { + self.transactions_iter_bytes().enumerate().map(|(index, tx)| { + // allocate a Vec to decode from + let raw: Vec = tx.iter().copied().collect(); + TxEnvelope::decode_2718_exact(&raw).map_err(|source| UnsealedBlockError::TxDecode { index, source }) + }) + } + + /// Return list of transaction + pub fn transactions(&self) -> Vec { + self.transactions.clone() + } + + /// Raw tx bytes (allocates Vec>), like Go `ByteTransactions()`. + pub fn byte_transactions(&self) -> Vec> { + self.transactions_iter_bytes().map(|tx| tx.iter().copied().collect::>()).collect() + } + + /// Return the last fragment in the list (if any). + pub fn last_frag(&self) -> Option<&FragV0> { + self.frags.last() + } + + /// Apply the accepted frag into in-memory bookkeeping (NOT executing txs). + /// + /// Execution results (receipts/logs/gas) should be appended separately. + pub fn accept_frag_execution( + &mut self, + f: FragV0, + logs: Vec, + receipts: Vec, + cummulative_gas_used: u64, + ) { + self.last_sequence_number = Some(f.seq); + self.cumulative_blob_gas_used = self.cumulative_blob_gas_used.saturating_add(f.blob_gas_used); + self.frags.push(f.clone()); + self.logs.extend_from_slice(logs.as_slice()); + self.receipts.extend_from_slice(receipts.as_slice()); + self.cumulative_gas_used = cummulative_gas_used; + + let _ = self.new_block_sender.send(self.to_rpc_block(false)); + } + + /// Validate frag against current state (equivalent to your ValidateNewFragV0 + sequencing gate). + pub fn validate_new_frag(&self, f: &FragV0) -> Result<(), UnsealedBlockError> { + if f.block_number < self.env.number { + return Err(UnsealedBlockError::StaleFrag { frag_block: f.block_number, env_number: self.env.number }); + } + + // must target current block + if f.block_number > self.env.number { + return Err(UnsealedBlockError::WrongBlock { frag_block: f.block_number, env_number: self.env.number }); + } + + // sequencing + if !self.is_next_frag(f) { + let last = self.last_sequence_number; + if self.frags.last().is_some_and(|x| x.is_last) { + return Err(UnsealedBlockError::AlreadyEnded); + } + return Err(UnsealedBlockError::SeqMismatch { got: f.seq, last }); + } + + Ok(()) + } + + /// A temporary header derived from env. + pub fn temp_header(&self) -> Header { + Header { + parent_hash: self.env.parent_hash, + parent_beacon_block_root: Some(self.env.parent_beacon_block_root), + number: self.env.number, + timestamp: self.env.timestamp, + extra_data: Bytes::copy_from_slice(self.env.extra_data.as_ref()), + gas_limit: self.env.gas_limit, + base_fee_per_gas: Some(self.env.basefee), + difficulty: self.env.difficulty, + beneficiary: self.env.beneficiary, + mix_hash: self.env.prevrandao, + + // placeholders until seal-time + ommers_hash: B256::ZERO, + state_root: B256::ZERO, + transactions_root: B256::ZERO, + receipts_root: B256::ZERO, + logs_bloom: Default::default(), + gas_used: 0, + nonce: Default::default(), + withdrawals_root: None, + blob_gas_used: None, + excess_blob_gas: None, + requests_hash: None, + } + } + + /// Reset to a fresh env (drop frags/results/counters). + pub fn reset_to_env(&mut self, env: EnvV0) { + *self = Self::new(env, self.is_prague); + } + + /// Attach/replace the DB cache to carry execution overlay state forward. + pub fn with_db_cache(mut self, cache: Cache) -> Self { + self.db_cache = cache; + self + } + + /// Attach/replace the bundle state to carry execution overlay state forward. + pub fn with_bundle_state(mut self, bundle_state: BundleState) -> Self { + self.bundle_state = bundle_state; + self + } + + /// Attach/replace the state overrides that represent the current overlay diff. + pub fn with_state_overrides(mut self, state_overrides: Option) -> Self { + self.state_overrides = state_overrides; + self + } + + /// Returns the database cache. + pub fn get_db_cache(&self) -> Cache { + self.db_cache.clone() + } + + /// Returns the bundle state. + pub fn get_bundle_state(&self) -> &BundleState { + &self.bundle_state + } + + /// Clone this unsealed block into a mutable working copy for in-place updates. + pub fn clone_for_update(&self) -> Self { + Self { + env: self.env.clone(), + frags: self.frags.clone(), + last_sequence_number: self.last_sequence_number, + hash: self.hash, + receipts: self.receipts.clone(), + logs: self.logs.clone(), + cumulative_gas_used: self.cumulative_gas_used, + cumulative_blob_gas_used: self.cumulative_blob_gas_used, + is_prague: self.is_prague, + transaction_count: self.transaction_count.clone(), + transactions: self.transactions.clone(), + db_cache: self.db_cache.clone(), + state_overrides: self.state_overrides.clone(), + new_block_sender: self.new_block_sender.clone(), + transaction_receipts: self.transaction_receipts.clone(), + bundle_state: self.bundle_state.clone(), + } + } + + /// Returns a cloned list of unsealed logs collected so far. + pub fn get_unsealed_logs(&self, filter: &Filter) -> Vec { + self.logs.clone().into_iter().filter(|log| filter.matches(&alloy_primitives::Log::from(log.clone()))).collect() + } + + /// Returns a cloned list of fragments accepted into this unsealed block. + pub fn get_unsealed_frags(&self) -> Vec { + self.frags.clone() + } + + /// Looks up and returns a cloned transaction receipt by transaction hash, if present. + pub fn get_transaction_receipt(&self, tx_hash: &TxHash) -> Option { + self.transaction_receipts.get(tx_hash).cloned() + } + + /// Looks up and returns a cloned transaction by transaction hash, if present. + pub fn get_transaction(&self, tx_hash: &TxHash) -> Option { + self.transactions.iter().find(|tx| tx.tx_hash() == *tx_hash).cloned() + } + + /// Returns a cloned copy of the current state overrides, if any are set. + pub fn get_state_overrides(&self) -> Option { + self.state_overrides.clone() + } + + /// Returns the locally tracked transaction count (nonce) for `address`, or zero if unknown. + pub fn get_transaction_count(&self, address: Address) -> U256 { + self.transaction_count.get(&address).cloned().unwrap_or(U256::from(0)) + } + + /// Returns the cached balance for `address` from the DB cache, if the account is present. + pub fn get_balance(&self, address: Address) -> Option { + self.db_cache.accounts.get(&address).map(|account| account.info.balance) + } + + /// Return a decoded header snapshot derived from the current env + local counters. + pub fn get_header(&self) -> Header { + Header { + parent_hash: self.env.parent_hash, + ommers_hash: Default::default(), + beneficiary: self.env.beneficiary, + state_root: B256::ZERO, + transactions_root: B256::ZERO, + receipts_root: B256::ZERO, + logs_bloom: Default::default(), + difficulty: self.env.difficulty, + number: self.env.number, + gas_limit: self.env.gas_limit, + gas_used: self.cumulative_gas_used, + timestamp: self.env.timestamp, + extra_data: Default::default(), + mix_hash: self.env.prevrandao, + nonce: Default::default(), + base_fee_per_gas: Some(self.env.basefee), + withdrawals_root: None, + blob_gas_used: Some(self.cumulative_blob_gas_used), + excess_blob_gas: Some(0), + parent_beacon_block_root: Some(self.env.parent_beacon_block_root), + requests_hash: None, + } + } + + /// Append a fully materialized transaction to the RPC `transactions` list. + pub(crate) fn with_transaction(&mut self, transaction: Transaction) -> &Self { + self.transactions.push(transaction); + self + } + + /// Insert/replace the receipt for `tx_hash` in the per-tx receipt map. + pub(crate) fn with_transaction_receipt(&mut self, tx_hash: B256, receipt: OpTransactionReceipt) -> &Self { + self.transaction_receipts.insert(tx_hash, receipt); + self + } + + /// Increment the locally tracked nonce for `sender` after accepting a tx. + pub(crate) fn increment_nonce(&mut self, sender: Address) -> &Self { + let zero = U256::from(0); + let current_count = self.transaction_count.get(&sender).unwrap_or(&zero); + + _ = self.transaction_count.insert(sender, *current_count + U256::from(1)); + self + } + + /// Convert current unsealed block into RpcBlock. + pub fn to_rpc_block(&self, full: bool) -> RpcBlock { + let header = self.get_header(); + let header = header.clone().seal_slow(); + let block_transactions = self.transactions.clone(); + + let transactions = if full { + BlockTransactions::Full(block_transactions) + } else { + let tx_hashes: Vec = block_transactions.iter().map(|tx| tx.tx_hash()).collect(); + BlockTransactions::Hashes(tx_hashes) + }; + + RpcBlock:: { + header: RPCHeader::from_consensus(header, None, None), + transactions, + uncles: Vec::new(), + withdrawals: None, + } + } + + pub fn to_op_block(&self, withdrawals_hash: Option) -> Result { + // Decode EIP-2718 tx bytes -> OpTransactionSigned + let tx_list: Vec = self + .frags + .iter() + .enumerate() + .flat_map(|(frag_idx, frag)| { + frag.txs.iter().enumerate().map(move |(tx_idx, tx_bytes)| { + OpTxEnvelope::decode_2718(&mut tx_bytes.as_ref()).map_err(|e| { + UnsealedBlockError::Failed(format!("decode tx failed (frag={frag_idx} tx={tx_idx}): {e}")) + }) + }) + }) + .collect::, UnsealedBlockError>>()?; + + let requests_hash = self.is_prague.then_some(EMPTY_REQUESTS_HASH); + + let extra_data: Bytes = Bytes::copy_from_slice(self.env.extra_data.as_ref()); + let header = Header { + parent_hash: self.env.parent_hash, + ommers_hash: Default::default(), + beneficiary: self.env.beneficiary, + state_root: B256::ZERO, + transactions_root: B256::ZERO, + receipts_root: B256::ZERO, + logs_bloom: Default::default(), + difficulty: self.env.difficulty, + number: self.env.number, + gas_limit: self.env.gas_limit, + gas_used: self.cumulative_gas_used, + timestamp: self.env.timestamp, + extra_data, + mix_hash: self.env.prevrandao, + nonce: Default::default(), + base_fee_per_gas: Some(self.env.basefee), + withdrawals_root: withdrawals_hash, + blob_gas_used: Some(self.cumulative_blob_gas_used), + excess_blob_gas: Some(0), + parent_beacon_block_root: Some(self.env.parent_beacon_block_root), + requests_hash, + }; + + let body = BlockBody { transactions: tx_list, ommers: vec![], withdrawals: None }; + + Ok(reth_optimism_primitives::OpBlock::new(header, body)) + } +} diff --git a/based/crates/sequencer/src/sorting/frag_sequence.rs b/based/crates/sequencer/src/sorting/frag_sequence.rs index 5c184c4ae..00483e4a3 100644 --- a/based/crates/sequencer/src/sorting/frag_sequence.rs +++ b/based/crates/sequencer/src/sorting/frag_sequence.rs @@ -296,7 +296,7 @@ mod tests { let (_frag, _, _sorting_db) = ctx.seal_frag(sorting_db, &mut seq); // Seal the block - let (_seal, payload) = ctx.seal_block(seq); + let (_seal, payload) = ctx.seal_block(seq, None); assert_eq!(block.hash_slow(), payload.execution_payload.payload_inner.payload_inner.payload_inner.block_hash); } } diff --git a/based/reth-node.Dockerfile b/based/reth-node.Dockerfile new file mode 100644 index 000000000..a11e7e573 --- /dev/null +++ b/based/reth-node.Dockerfile @@ -0,0 +1,27 @@ +FROM lukemathwalker/cargo-chef:latest-rust-1 AS chef +ARG TARGETPLATFORM +ARG BUILDPLATFORM +WORKDIR /app + +RUN apt-get update && apt-get install -y clang cmake pkg-config + +FROM chef AS planner +COPY . . +RUN cargo chef prepare --recipe-path recipe.json + +FROM chef AS builder +COPY --from=planner /app/recipe.json recipe.json +RUN cargo chef cook --release --recipe-path recipe.json + +COPY . . +RUN cargo build --release -p based-op-reth --bin reth-node + +FROM debian:stable-slim AS runtime +WORKDIR /app + +RUN apt-get update +RUN apt-get install -y openssl ca-certificates libssl3 libssl-dev + +COPY --from=builder /app/target/release/reth-node /usr/local/bin +ENTRYPOINT ["/usr/local/bin/reth-node"] + diff --git a/follower_node/compose.reth.yml b/follower_node/compose.reth.yml new file mode 100644 index 000000000..6e4bfd999 --- /dev/null +++ b/follower_node/compose.reth.yml @@ -0,0 +1,110 @@ +services: + based-op-geth: + image: local_based_reth:latest + container_name: based-op-geth + entrypoint: ["/bin/sh", "-c"] + command: + - | + # 1) if this directory lacks the reth database, initialize it + if [ ! -d /data/reth/db ]; then + echo ">>> initializing reth datadir…" + reth-node init \ + --datadir=/data/reth \ + --chain=/config/genesis.json + fi + + # 2) then exec the real reth + exec reth-node node \ + --datadir=/data/reth \ + --chain=/config/genesis.json \ + --http \ + --http.addr=0.0.0.0 \ + --http.port=$OP_GETH_RPC_PORT \ + --http.corsdomain="*" \ + --http.api="all" \ + --ws \ + --ws.addr=0.0.0.0 \ + --ws.port=$OP_GETH_WS_PORT \ + --ws.api="all" \ + --ws.origins="*" \ + --authrpc.port=$OP_GETH_ENGINE_RPC_PORT \ + --authrpc.addr=0.0.0.0 \ + --authrpc.jwtsecret=/config/jwt \ + --discovery.port=$OP_GETH_GOSSIP_PORT \ + --port=$OP_GETH_GOSSIP_PORT \ + --bootnodes=$MAIN_OP_GETH_ENODE \ + --rollup.sequencer-http=$TXPROXY \ + --metrics=0.0.0.0:8010 + labels: + - logs=enabled + - service=based-op-geth + volumes: + - ./data/reth:/data/reth + - ./config:/config + restart: unless-stopped + network_mode: "host" + + based-op-node: + image: ghcr.io/gattaca-com/based-optimism/based-op-node:latest + pull_policy: always + container_name: based-op-node + network_mode: "host" + command: + - op-node + - --l2=http://0.0.0.0:$OP_GETH_ENGINE_RPC_PORT + - --l2.jwt-secret=/config/jwt + - --verifier.l1-confs=1 + - --rollup.config=/config/rollup.json + - --rpc.addr=0.0.0.0 + - --rpc.port=8547 + - --rpc.enable-admin + - --l1=$L1_RPC_URL + - --l1.rpckind=standard + - --l1.beacon=$L1_BEACON_RPC_URL + - --p2p.advertise.ip=$OP_NODE_GOSSIP_IP + - --p2p.advertise.tcp=$OP_NODE_GOSSIP_PORT + - --p2p.advertise.udp=$OP_NODE_GOSSIP_PORT + - --p2p.listen.ip=0.0.0.0 + - --p2p.listen.tcp=$OP_NODE_GOSSIP_PORT + - --p2p.listen.udp=$OP_NODE_GOSSIP_PORT + - --safedb.path=/data/op-node/op-node-beacon-data + - --p2p.static=$MAIN_OP_NODE_GOSSIP_STATIC + - --rpc.enable-based + - --registry=$PORTAL + - --p2p.bootnodes=$MAIN_OP_NODE_ENR + - --syncmode=execution-layer + - --metrics.enabled=true + - --metrics.addr=0.0.0.0 + - --metrics.port=8011 + volumes: + - ./data/node:/data/op-node + - ./config:/config + depends_on: + - based-op-geth + restart: unless-stopped + labels: + - logs=enabled + - service=based-op-node + + based-gateway: + image: ghcr.io/gattaca-com/based-op/based-gateway:latest + pull_policy: always + container_name: based-gateway + command: + - --rpc.port=$GATEWAY_PORT + - --rpc.host=0.0.0.0 + - --chain=/config/genesis.json + - --db.datadir=/data/gateway + - --eth_client.url=$PORTAL + - --rpc.jwt=/config/jwt + - --gossip.signer_private_key=$GATEWAY_SEQUENCING_KEY + - --gossip.root_peer_url=http://0.0.0.0:8547 + - --log.dir=/var/log/app + volumes: + - ./config:/config + - ./data/gateway:/data/gateway + - /tmp:/tmp + - /dev/shm:/dev/shm + - /var/log/containers/based-op/based-gateway:/var/log/app + network_mode: "host" + restart: unless-stopped