diff --git a/Cargo.lock b/Cargo.lock index 63dfd540..8e2993f9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -88,9 +88,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy-chains" -version = "0.2.21" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9ebac8ff9c2f07667e1803dc777304337e160ce5153335beb45e8ec0751808" +checksum = "35d744058a9daa51a8cf22a3009607498fcf82d3cf4c5444dd8056cdf651f471" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -101,9 +101,9 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6440213a22df93a87ed512d2f668e7dc1d62a05642d107f82d61edc9e12370" +checksum = "2e318e25fb719e747a7e8db1654170fc185024f3ed5b10f86c08d448a912f6e2" dependencies = [ "alloy-eips", "alloy-primitives", @@ -129,9 +129,9 @@ dependencies = [ [[package]] name = "alloy-consensus-any" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15d0bea09287942405c4f9d2a4f22d1e07611c2dbd9d5bf94b75366340f9e6e0" +checksum = "364380a845193a317bcb7a5398fc86cdb66c47ebe010771dde05f6869bf9e64a" dependencies = [ "alloy-consensus", "alloy-eips", @@ -144,9 +144,9 @@ dependencies = [ [[package]] name = "alloy-dyn-abi" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdff496dd4e98a81f4861e66f7eaf5f2488971848bb42d9c892f871730245c8" +checksum = "f3b1db3281bcaf03cfadb9d125fac55603526cc1d0577da555dc6184f5188f6f" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -207,9 +207,9 @@ dependencies = [ [[package]] name = "alloy-eips" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bd2c7ae05abcab4483ce821f12f285e01c0b33804e6883dd9ca1569a87ee2be" +checksum = "a4c4d7c5839d9f3a467900c625416b24328450c65702eb3d8caff8813e4d1d33" dependencies = [ "alloy-eip2124", "alloy-eip2930", @@ -249,16 +249,38 @@ dependencies = [ "derive_more", "op-alloy-consensus 0.22.4", "op-alloy-rpc-types-engine 0.22.4", - "op-revm", - "revm", + "op-revm 12.0.2", + "revm 31.0.2", + "thiserror 2.0.17", +] + +[[package]] +name = "alloy-evm" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6ccc4c702c840148af1ce784cc5c6ed9274a020ef32417c5b1dbeab8c317673" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-hardforks", + "alloy-op-hardforks", + "alloy-primitives", + "alloy-rpc-types-engine", + "alloy-rpc-types-eth", + "alloy-sol-types", + "auto_impl", + "derive_more", + "op-alloy", + "op-revm 14.1.0", + "revm 33.1.0", "thiserror 2.0.17", ] [[package]] name = "alloy-genesis" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc47eaae86488b07ea8e20236184944072a78784a1f4993f8ec17b3aa5d08c21" +checksum = "1ba4b1be0988c11f0095a2380aa596e35533276b8fa6c9e06961bbfe0aebcac5" dependencies = [ "alloy-eips", "alloy-primitives", @@ -285,9 +307,9 @@ dependencies = [ [[package]] name = "alloy-json-abi" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5513d5e6bd1cba6bdcf5373470f559f320c05c8c59493b6e98912fbe6733943f" +checksum = "6bfca3dbbcb7498f0f60e67aff2ad6aff57032e22eb2fd03189854be11a22c03" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -297,9 +319,9 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "003f46c54f22854a32b9cc7972660a476968008ad505427eabab49225309ec40" +checksum = "f72cf87cda808e593381fb9f005ffa4d2475552b7a6c5ac33d087bf77d82abd0" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -312,9 +334,9 @@ dependencies = [ [[package]] name = "alloy-network" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f4029954d9406a40979f3a3b46950928a0fdcfe3ea8a9b0c17490d57e8aa0e3" +checksum = "12aeb37b6f2e61b93b1c3d34d01ee720207c76fe447e2a2c217e433ac75b17f5" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -338,9 +360,9 @@ dependencies = [ [[package]] name = "alloy-network-primitives" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7805124ad69e57bbae7731c9c344571700b2a18d351bda9e0eba521c991d1bcb" +checksum = "abd29ace62872083e30929cd9b282d82723196d196db589f3ceda67edcc05552" dependencies = [ "alloy-consensus", "alloy-eips", @@ -357,13 +379,31 @@ checksum = "6eea81517a852d9e3b03979c10febe00aacc3d50fbd34c5c30281051773285f7" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm", + "alloy-evm 0.23.3", "alloy-op-hardforks", "alloy-primitives", "auto_impl", "op-alloy-consensus 0.22.4", - "op-revm", - "revm", + "op-revm 12.0.2", + "revm 31.0.2", + "thiserror 2.0.17", +] + +[[package]] +name = "alloy-op-evm" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f640da852f93ddaa3b9a602b7ca41d80e0023f77a67b68aaaf511c32f1fe0ce" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-evm 0.25.2", + "alloy-op-hardforks", + "alloy-primitives", + "auto_impl", + "op-alloy", + "op-revm 14.1.0", + "revm 33.1.0", "thiserror 2.0.17", ] @@ -381,9 +421,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", @@ -402,6 +442,7 @@ dependencies = [ "proptest", "proptest-derive 0.6.0", "rand 0.9.2", + "rapidhash", "ruint", "rustc-hash 2.1.1", "serde", @@ -411,9 +452,9 @@ dependencies = [ [[package]] name = "alloy-provider" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d369e12c92870d069e0c9dc5350377067af8a056e29e3badf8446099d7e00889" +checksum = "9b710636d7126e08003b8217e24c09f0cca0b46d62f650a841736891b1ed1fc1" dependencies = [ "alloy-chains", "alloy-consensus", @@ -453,9 +494,9 @@ dependencies = [ [[package]] name = "alloy-pubsub" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f77d20cdbb68a614c7a86b3ffef607b37d087bb47a03c58f4c3f8f99bc3ace3b" +checksum = "cdd4c64eb250a18101d22ae622357c6b505e158e9165d4c7974d59082a600c5e" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -497,9 +538,9 @@ dependencies = [ [[package]] name = "alloy-rpc-client" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31c89883fe6b7381744cbe80fef638ac488ead4f1956a4278956a1362c71cd2e" +checksum = "d0882e72d2c1c0c79dcf4ab60a67472d3f009a949f774d4c17d0bdb669cfde05" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -523,9 +564,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e279e6d40ee40fe8f76753b678d8d5d260cb276dc6c8a8026099b16d2b43f4" +checksum = "39cf1398cb33aacb139a960fa3d8cf8b1202079f320e77e952a0b95967bf7a9f" dependencies = [ "alloy-primitives", "alloy-rpc-types-engine", @@ -536,9 +577,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-admin" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bcf50ccb65d29b8599f8f5e23dcac685f1d79459654c830cba381345760e901" +checksum = "65a583d2029b171301f5dcf122aa2ef443a65a373778ec76540d999691ae867d" dependencies = [ "alloy-genesis", "alloy-primitives", @@ -548,9 +589,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e176c26fdd87893b6afeb5d92099d8f7e7a1fe11d6f4fe0883d6e33ac5f31ba" +checksum = "c3ce4c24e416bd0f17fceeb2f26cd8668df08fe19e1dc02f9d41c3b8ed1e93e0" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -560,9 +601,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b43c1622aac2508d528743fd4cfdac1dea92d5a8fa894038488ff7edd0af0b32" +checksum = "6a63fb40ed24e4c92505f488f9dd256e2afaed17faa1b7a221086ebba74f4122" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -571,9 +612,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-beacon" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1786681640d4c60f22b6b8376b0f3fa200360bf1c3c2cb913e6c97f51928eb1b" +checksum = "16633087e23d8d75161c3a59aa183203637b817a5a8d2f662f612ccb6d129af0" dependencies = [ "alloy-eips", "alloy-primitives", @@ -591,9 +632,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-debug" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b2ca3a434a6d49910a7e8e51797eb25db42ef8a5578c52d877fcb26d0afe7bc" +checksum = "4936f579d9d10eae01772b2ab3497f9d568684f05f26f8175e12f9a1a2babc33" dependencies = [ "alloy-primitives", "derive_more", @@ -603,9 +644,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4c53a8b0905d931e7921774a1830609713bd3e8222347963172b03a3ecc68" +checksum = "4c60bdce3be295924122732b7ecd0b2495ce4790bedc5370ca7019c08ad3f26e" dependencies = [ "alloy-consensus", "alloy-eips", @@ -623,9 +664,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed5fafb741c19b3cca4cdd04fa215c89413491f9695a3e928dee2ae5657f607e" +checksum = "9eae0c7c40da20684548cbc8577b6b7447f7bf4ddbac363df95e3da220e41e72" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -645,9 +686,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-mev" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49a97bfc6d9b411c85bb08e1174ddd3e5d61b10d3bd13f529d6609f733cb2f6f" +checksum = "81c0dd81c24944cfbf45b5df7cd149d9cd3e354db81ccf08aa47e0e05be8ab97" dependencies = [ "alloy-consensus", "alloy-eips", @@ -660,9 +701,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-trace" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c55324323aa634b01bdecb2d47462a8dce05f5505b14a6e5db361eef16eda476" +checksum = "ef206a4b8d436fbb7cf2e6a61c692d11df78f9382becc3c9a283bd58e64f0583" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -674,9 +715,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-txpool" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96b1aa28effb6854be356ce92ed64cea3b323acd04c3f8bfb5126e2839698043" +checksum = "ecb5a795264a02222f9534435b8f40dcbd88de8e9d586647884aae24f389ebf2" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -686,9 +727,9 @@ dependencies = [ [[package]] name = "alloy-serde" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6f180c399ca7c1e2fe17ea58343910cad0090878a696ff5a50241aee12fc529" +checksum = "c0df1987ed0ff2d0159d76b52e7ddfc4e4fbddacc54d2fbee765e0d14d7c01b5" dependencies = [ "alloy-primitives", "arbitrary", @@ -698,9 +739,9 @@ dependencies = [ [[package]] name = "alloy-signer" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc39ad2c0a3d2da8891f4081565780703a593f090f768f884049aa3aa929cbc" +checksum = "6ff69deedee7232d7ce5330259025b868c5e6a52fa8dffda2c861fb3a5889b24" dependencies = [ "alloy-primitives", "async-trait", @@ -713,9 +754,9 @@ dependencies = [ [[package]] name = "alloy-signer-local" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "930e17cb1e46446a193a593a3bfff8d0ecee4e510b802575ebe300ae2e43ef75" +checksum = "72cfe0be3ec5a8c1a46b2e5a7047ed41121d360d97f4405bb7c1c784880c86cb" dependencies = [ "alloy-consensus", "alloy-network", @@ -732,9 +773,9 @@ dependencies = [ [[package]] name = "alloy-sol-macro" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3ce480400051b5217f19d6e9a82d9010cdde20f1ae9c00d53591e4a1afbb312" +checksum = "b2218e3aeb3ee665d117fdf188db0d5acfdc3f7b7502c827421cb78f26a2aec0" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", @@ -746,9 +787,9 @@ dependencies = [ [[package]] name = "alloy-sol-macro-expander" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d792e205ed3b72f795a8044c52877d2e6b6e9b1d13f431478121d8d4eaa9028" +checksum = "b231cb8cc48e66dd1c6e11a1402f3ac86c3667cbc13a6969a0ac030ba7bb8c88" dependencies = [ "alloy-sol-macro-input", "const-hex", @@ -764,9 +805,9 @@ dependencies = [ [[package]] name = "alloy-sol-macro-input" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bd1247a8f90b465ef3f1207627547ec16940c35597875cdc09c49d58b19693c" +checksum = "49a522d79929c1bf0152b07567a38f7eaed3ab149e53e7528afa78ff11994668" dependencies = [ "const-hex", "dunce", @@ -780,9 +821,9 @@ dependencies = [ [[package]] name = "alloy-sol-type-parser" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "954d1b2533b9b2c7959652df3076954ecb1122a28cc740aa84e7b0a49f6ac0a9" +checksum = "0475c459859c8d9428af6ff3736614655a57efda8cc435a3b8b4796fa5ac1dd0" dependencies = [ "serde", "winnow", @@ -790,9 +831,9 @@ dependencies = [ [[package]] name = "alloy-sol-types" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70319350969a3af119da6fb3e9bddb1bce66c9ea933600cb297c8b1850ad2a3c" +checksum = "35287d9d821d5f26011bcd8d9101340898f761c9933cf50fca689bb7ed62fdeb" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -802,9 +843,9 @@ dependencies = [ [[package]] name = "alloy-transport" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cae82426d98f8bc18f53c5223862907cac30ab8fc5e4cd2bb50808e6d3ab43d8" +checksum = "be98b07210d24acf5b793c99b759e9a696e4a2e67593aec0487ae3b3e1a2478c" dependencies = [ "alloy-json-rpc", "auto_impl", @@ -825,9 +866,9 @@ dependencies = [ [[package]] name = "alloy-transport-http" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90aa6825760905898c106aba9c804b131816a15041523e80b6d4fe7af6380ada" +checksum = "4198a1ee82e562cab85e7f3d5921aab725d9bd154b6ad5017f82df1695877c97" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -840,9 +881,9 @@ dependencies = [ [[package]] name = "alloy-transport-ipc" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ace83a4a6bb896e5894c3479042e6ba78aa5271dde599aa8c36a021d49cc8cc" +checksum = "d8db249779ebc20dc265920c7e706ed0d31dbde8627818d1cbde60919b875bb0" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -860,9 +901,9 @@ dependencies = [ [[package]] name = "alloy-transport-ws" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86c9ab4c199e3a8f3520b60ba81aa67bb21fed9ed0d8304e0569094d0758a56f" +checksum = "5ad2344a12398d7105e3722c9b7a7044ea837128e11d453604dec6e3731a86e2" dependencies = [ "alloy-pubsub", "alloy-transport", @@ -898,9 +939,9 @@ dependencies = [ [[package]] name = "alloy-tx-macros" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae109e33814b49fc0a62f2528993aa8a2dd346c26959b151f05441dc0b9da292" +checksum = "333544408503f42d7d3792bfc0f7218b643d968a03d2c0ed383ae558fb4a76d0" dependencies = [ "darling 0.21.3", "proc-macro2", @@ -1330,9 +1371,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.34" +version = "0.4.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e86f6d3dc9dc4352edeea6b8e499e13e3f5dc3b964d7ca5fd411415a3498473" +checksum = "98ec5f6c2f8bc326c994cb9e241cc257ddaba9afa8555a43cffbb5dd86efaa37" dependencies = [ "compression-codecs", "compression-core", @@ -1617,9 +1658,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" +checksum = "0e050f626429857a27ddccb31e0aca21356bfa709c04041aefddac081a8f068a" [[package]] name = "bech32" @@ -1760,6 +1801,19 @@ dependencies = [ "wyz", ] +[[package]] +name = "blake3" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + [[package]] name = "block-buffer" version = "0.10.4" @@ -1971,9 +2025,9 @@ dependencies = [ [[package]] name = "camino" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "276a59bf2b2c967788139340c9f0c5b12d7fd6630315c15c217e559de85d2609" +checksum = "e629a66d692cb9ff1a1c664e41771b3dcaf961985a9774c0eb0bd1b51cf60a48" dependencies = [ "serde_core", ] @@ -2245,9 +2299,9 @@ dependencies = [ [[package]] name = "compression-codecs" -version = "0.4.33" +version = "0.4.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "302266479cb963552d11bd042013a58ef1adc56768016c8b82b4199488f2d4ad" +checksum = "b0f7ac3e5b97fdce45e8922fb05cae2c37f7bbd63d30dd94821dacfd8f3f2bf2" dependencies = [ "brotli", "compression-core", @@ -2325,6 +2379,12 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + [[package]] name = "convert_case" version = "0.10.0" @@ -3010,6 +3070,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ "pkcs8", + "serde", "signature", ] @@ -3355,26 +3416,26 @@ dependencies = [ "metrics", "metrics-derive", "op-alloy-consensus 0.22.4", - "op-alloy-network", - "op-alloy-rpc-types", + "op-alloy-network 0.22.4", + "op-alloy-rpc-types 0.22.4", "reth-db", "reth-e2e-test-utils", "reth-node-api", "reth-node-builder", "reth-node-core", - "reth-optimism-chainspec", + "reth-optimism-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-optimism-cli", - "reth-optimism-evm", - "reth-optimism-forks", + "reth-optimism-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-optimism-forks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-optimism-node", - "reth-optimism-primitives", + "reth-optimism-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-optimism-rpc", "reth-primitives", - "reth-primitives-traits", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-provider", "reth-rpc-eth-api", "reth-rpc-server-types", - "reth-tasks", + "reth-tasks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-tracing", "rollup-boost", "rollup-boost-types", @@ -3653,9 +3714,9 @@ dependencies = [ [[package]] name = "git2" -version = "0.20.2" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2deb07a133b1520dc1a5690e9bd08950108873d7ed5de38dcc74d3b5ebffa110" +checksum = "3e2b37e2f62729cdada11f0e6b3b6fe383c69c29fc619e391223e12856af308c" dependencies = [ "bitflags 2.10.0", "libc", @@ -4212,9 +4273,9 @@ checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" [[package]] name = "icu_properties" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" +checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" dependencies = [ "icu_collections", "icu_locale_core", @@ -4226,9 +4287,9 @@ dependencies = [ [[package]] name = "icu_properties_data" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" +checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" [[package]] name = "icu_provider" @@ -4552,11 +4613,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f3f48dc3e6b8bd21e15436c1ddd0bc22a6a54e8ec46fedd6adf3425f396ec6a" dependencies = [ "jsonrpsee-client-transport", - "jsonrpsee-core 0.26.0", - "jsonrpsee-http-client 0.26.0", + "jsonrpsee-core", + "jsonrpsee-http-client", "jsonrpsee-proc-macros", "jsonrpsee-server", - "jsonrpsee-types 0.26.0", + "jsonrpsee-types", "jsonrpsee-wasm-client", "jsonrpsee-ws-client", "tokio", @@ -4574,7 +4635,7 @@ dependencies = [ "futures-util", "gloo-net", "http", - "jsonrpsee-core 0.26.0", + "jsonrpsee-core", "pin-project", "rustls", "rustls-pki-types", @@ -4588,28 +4649,6 @@ dependencies = [ "url", ] -[[package]] -name = "jsonrpsee-core" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693c93cbb7db25f4108ed121304b671a36002c2db67dff2ee4391a688c738547" -dependencies = [ - "async-trait", - "bytes", - "futures-util", - "http", - "http-body", - "http-body-util", - "jsonrpsee-types 0.25.1", - "pin-project", - "serde", - "serde_json", - "thiserror 2.0.17", - "tokio", - "tower 0.5.2", - "tracing", -] - [[package]] name = "jsonrpsee-core" version = "0.26.0" @@ -4623,7 +4662,7 @@ dependencies = [ "http", "http-body", "http-body-util", - "jsonrpsee-types 0.26.0", + "jsonrpsee-types", "parking_lot", "pin-project", "rand 0.9.2", @@ -4638,29 +4677,6 @@ dependencies = [ "wasm-bindgen-futures", ] -[[package]] -name = "jsonrpsee-http-client" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6962d2bd295f75e97dd328891e58fce166894b974c1f7ce2e7597f02eeceb791" -dependencies = [ - "base64 0.22.1", - "http-body", - "hyper", - "hyper-rustls", - "hyper-util", - "jsonrpsee-core 0.25.1", - "jsonrpsee-types 0.25.1", - "rustls", - "rustls-platform-verifier", - "serde", - "serde_json", - "thiserror 2.0.17", - "tokio", - "tower 0.5.2", - "url", -] - [[package]] name = "jsonrpsee-http-client" version = "0.26.0" @@ -4672,8 +4688,8 @@ dependencies = [ "hyper", "hyper-rustls", "hyper-util", - "jsonrpsee-core 0.26.0", - "jsonrpsee-types 0.26.0", + "jsonrpsee-core", + "jsonrpsee-types", "rustls", "rustls-platform-verifier", "serde", @@ -4709,8 +4725,8 @@ dependencies = [ "http-body-util", "hyper", "hyper-util", - "jsonrpsee-core 0.26.0", - "jsonrpsee-types 0.26.0", + "jsonrpsee-core", + "jsonrpsee-types", "pin-project", "route-recognizer", "serde", @@ -4724,18 +4740,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "jsonrpsee-types" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66df7256371c45621b3b7d2fb23aea923d577616b9c0e9c0b950a6ea5c2be0ca" -dependencies = [ - "http", - "serde", - "serde_json", - "thiserror 2.0.17", -] - [[package]] name = "jsonrpsee-types" version = "0.26.0" @@ -4755,8 +4759,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7902885de4779f711a95d82c8da2d7e5f9f3a7c7cfa44d51c067fd1c29d72a3c" dependencies = [ "jsonrpsee-client-transport", - "jsonrpsee-core 0.26.0", - "jsonrpsee-types 0.26.0", + "jsonrpsee-core", + "jsonrpsee-types", "tower 0.5.2", ] @@ -4768,8 +4772,8 @@ checksum = "9b6fceceeb05301cc4c065ab3bd2fa990d41ff4eb44e4ca1b30fa99c057c3e79" dependencies = [ "http", "jsonrpsee-client-transport", - "jsonrpsee-core 0.26.0", - "jsonrpsee-types 0.26.0", + "jsonrpsee-core", + "jsonrpsee-types", "tower 0.5.2", "url", ] @@ -4863,9 +4867,9 @@ checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091" [[package]] name = "libgit2-sys" -version = "0.18.2+1.9.1" +version = "0.18.3+1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c42fe03df2bd3c53a3a9c7317ad91d80c81cd1fb0caec8d7cc4cd2bfa10c222" +checksum = "c9b3acc4b91781bb0b3386669d325163746af5f6e4f73e6d2d630e09a35f3487" dependencies = [ "cc", "libc", @@ -4891,9 +4895,9 @@ checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libp2p-identity" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3104e13b51e4711ff5738caa1fb54467c8604c2e94d607e27745bcf709068774" +checksum = "f0c7892c221730ba55f7196e98b0b8ba5e04b4155651736036628e9f73ed6fc3" dependencies = [ "asn1_der", "bs58", @@ -4921,13 +4925,13 @@ dependencies = [ [[package]] name = "libredox" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" +checksum = "df15f6eac291ed1cf25865b1ee60399f57e7c227e7f51bdbd4c5270396a9ed50" dependencies = [ "bitflags 2.10.0", "libc", - "redox_syscall 0.5.18", + "redox_syscall 0.6.0", ] [[package]] @@ -5623,6 +5627,19 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" +[[package]] +name = "op-alloy" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9b8fee21003dd4f076563de9b9d26f8c97840157ef78593cd7f262c5ca99848" +dependencies = [ + "op-alloy-consensus 0.23.1", + "op-alloy-network 0.23.1", + "op-alloy-provider", + "op-alloy-rpc-types 0.23.1", + "op-alloy-rpc-types-engine 0.23.1", +] + [[package]] name = "op-alloy-consensus" version = "0.22.4" @@ -5645,14 +5662,16 @@ dependencies = [ [[package]] name = "op-alloy-consensus" -version = "0.23.0" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baac15f8823a36112356594845beb21df41c9cfbb80d4322b73c18643cc96e89" +checksum = "736381a95471d23e267263cfcee9e1d96d30b9754a94a2819148f83379de8a86" dependencies = [ "alloy-consensus", "alloy-eips", + "alloy-network", "alloy-primitives", "alloy-rlp", + "alloy-rpc-types-eth", "alloy-serde", "derive_more", "serde", @@ -5678,7 +5697,38 @@ dependencies = [ "alloy-rpc-types-eth", "alloy-signer", "op-alloy-consensus 0.22.4", - "op-alloy-rpc-types", + "op-alloy-rpc-types 0.22.4", +] + +[[package]] +name = "op-alloy-network" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4034183dca6bff6632e7c24c92e75ff5f0eabb58144edb4d8241814851334d47" +dependencies = [ + "alloy-consensus", + "alloy-network", + "alloy-primitives", + "alloy-provider", + "alloy-rpc-types-eth", + "alloy-signer", + "op-alloy-consensus 0.23.1", + "op-alloy-rpc-types 0.23.1", +] + +[[package]] +name = "op-alloy-provider" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6753d90efbaa8ea8bcb89c1737408ca85fa60d7adb875049d3f382c063666f86" +dependencies = [ + "alloy-network", + "alloy-primitives", + "alloy-provider", + "alloy-rpc-types-engine", + "alloy-transport", + "async-trait", + "op-alloy-rpc-types-engine 0.23.1", ] [[package]] @@ -5710,6 +5760,25 @@ dependencies = [ "thiserror 2.0.17", ] +[[package]] +name = "op-alloy-rpc-types" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd87c6b9e5b6eee8d6b76f41b04368dca0e9f38d83338e5b00e730c282098a4" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-network-primitives", + "alloy-primitives", + "alloy-rpc-types-eth", + "alloy-serde", + "derive_more", + "op-alloy-consensus 0.23.1", + "serde", + "serde_json", + "thiserror 2.0.17", +] + [[package]] name = "op-alloy-rpc-types-engine" version = "0.22.4" @@ -5733,9 +5802,9 @@ dependencies = [ [[package]] name = "op-alloy-rpc-types-engine" -version = "0.23.0" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7563637aab01688fb7263359939598a4a630db79a59ed5ca9048ad0aec43d2ba" +checksum = "77727699310a18cdeed32da3928c709e2704043b6584ed416397d5da65694efc" dependencies = [ "alloy-consensus", "alloy-eips", @@ -5746,7 +5815,7 @@ dependencies = [ "derive_more", "ethereum_ssz", "ethereum_ssz_derive", - "op-alloy-consensus 0.23.0", + "op-alloy-consensus 0.23.1", "serde", "sha2", "snap", @@ -5760,7 +5829,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e31622d03b29c826e48800f4c8f389c8a9c440eb796a3e35203561a288f12985" dependencies = [ "auto_impl", - "revm", + "revm 31.0.2", + "serde", +] + +[[package]] +name = "op-revm" +version = "14.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1475a779c73999fc803778524042319691b31f3d6699d2b560c4ed8be1db802a" +dependencies = [ + "auto_impl", + "revm 33.1.0", "serde", ] @@ -6371,7 +6451,7 @@ version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit 0.23.7", + "toml_edit 0.23.9", ] [[package]] @@ -6755,6 +6835,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" @@ -6846,6 +6936,15 @@ dependencies = [ "bitflags 2.10.0", ] +[[package]] +name = "redox_syscall" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec96166dafa0886eb81fe1c0a388bece180fbef2135f97c1e2cf8302e74b43b5" +dependencies = [ + "bitflags 2.10.0", +] + [[package]] name = "redox_users" version = "0.4.6" @@ -6919,9 +7018,9 @@ checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" [[package]] name = "reqwest" -version = "0.12.24" +version = "0.12.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f" +checksum = "3b4c14b2d9afca6a60277086b0cc6a6ae0b568f6f7916c943a8cdc79f8be240f" dependencies = [ "base64 0.22.1", "bytes", @@ -6983,15 +7082,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.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-metrics 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-payload-builder 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-payload-builder-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-payload-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-revm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-tasks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "tokio", + "tracing", +] + +[[package]] +name = "reth-basic-payload-builder" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "futures-core", + "futures-util", + "metrics", + "reth-chain-state 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-metrics 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-payload-builder 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-payload-builder-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-payload-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-revm 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-tasks 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", "tokio", "tracing", ] @@ -7011,14 +7134,14 @@ dependencies = [ "parking_lot", "pin-project", "rand 0.9.2", - "reth-chainspec", - "reth-errors", - "reth-ethereum-primitives", - "reth-execution-types", - "reth-metrics", - "reth-primitives-traits", - "reth-storage-api", - "reth-trie", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-ethereum-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-execution-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-metrics 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-trie 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "revm-database", "revm-state", "serde", @@ -7027,6 +7150,32 @@ dependencies = [ "tracing", ] +[[package]] +name = "reth-chain-state" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "derive_more", + "metrics", + "parking_lot", + "pin-project", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-ethereum-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-execution-types 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-metrics 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-trie 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "revm-database", + "tokio", + "tokio-stream", + "tracing", +] + [[package]] name = "reth-chainspec" version = "1.9.3" @@ -7035,25 +7184,45 @@ dependencies = [ "alloy-chains", "alloy-consensus", "alloy-eips", - "alloy-evm", + "alloy-evm 0.23.3", "alloy-genesis", "alloy-primitives", "alloy-trie", "auto_impl", "derive_more", - "reth-ethereum-forks", - "reth-network-peers", - "reth-primitives-traits", + "reth-ethereum-forks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-network-peers 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "serde_json", ] [[package]] -name = "reth-cli" +name = "reth-chainspec" version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" dependencies = [ + "alloy-chains", + "alloy-consensus", + "alloy-eips", + "alloy-evm 0.25.2", "alloy-genesis", - "clap", + "alloy-primitives", + "alloy-trie", + "auto_impl", + "derive_more", + "reth-ethereum-forks 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-network-peers 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "serde_json", +] + +[[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", "reth-db", @@ -7084,13 +7253,13 @@ dependencies = [ "lz4", "ratatui", "reqwest", - "reth-chainspec", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-cli", "reth-cli-runner", "reth-cli-util", - "reth-codecs", + "reth-codecs 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-config", - "reth-consensus", + "reth-consensus 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-db", "reth-db-api", "reth-db-common", @@ -7103,27 +7272,27 @@ dependencies = [ "reth-era-utils", "reth-eth-wire", "reth-etl", - "reth-evm", + "reth-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-exex", - "reth-fs-util", + "reth-fs-util 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-net-nat", "reth-network", "reth-network-p2p", - "reth-network-peers", + "reth-network-peers 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-node-api", "reth-node-builder", "reth-node-core", "reth-node-events", "reth-node-metrics", - "reth-primitives-traits", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-provider", "reth-prune", - "reth-revm", + "reth-revm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-stages", "reth-static-file", - "reth-static-file-types", - "reth-trie", - "reth-trie-common", + "reth-static-file-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-trie 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-trie-common 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-trie-db", "secp256k1 0.30.0", "serde", @@ -7141,7 +7310,7 @@ name = "reth-cli-runner" version = "1.9.3" source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" dependencies = [ - "reth-tasks", + "reth-tasks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "tokio", "tracing", ] @@ -7157,7 +7326,7 @@ dependencies = [ "eyre", "libc", "rand 0.8.5", - "reth-fs-util", + "reth-fs-util 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "secp256k1 0.30.0", "serde", "thiserror 2.0.17", @@ -7177,12 +7346,30 @@ dependencies = [ "bytes", "modular-bitfield", "op-alloy-consensus 0.22.4", - "reth-codecs-derive", - "reth-zstd-compressors", + "reth-codecs-derive 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-zstd-compressors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "serde", "visibility", ] +[[package]] +name = "reth-codecs" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-genesis", + "alloy-primitives", + "alloy-trie", + "bytes", + "modular-bitfield", + "op-alloy-consensus 0.23.1", + "reth-codecs-derive 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-zstd-compressors 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "serde", +] + [[package]] name = "reth-codecs-derive" version = "1.9.3" @@ -7193,6 +7380,16 @@ dependencies = [ "syn 2.0.111", ] +[[package]] +name = "reth-codecs-derive" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "reth-config" version = "1.9.3" @@ -7201,8 +7398,8 @@ dependencies = [ "eyre", "humantime-serde", "reth-network-types", - "reth-prune-types", - "reth-stages-types", + "reth-prune-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-stages-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "serde", "toml", "url", @@ -7216,8 +7413,21 @@ dependencies = [ "alloy-consensus", "alloy-primitives", "auto_impl", - "reth-execution-types", - "reth-primitives-traits", + "reth-execution-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "thiserror 2.0.17", +] + +[[package]] +name = "reth-consensus" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "alloy-consensus", + "alloy-primitives", + "auto_impl", + "reth-execution-types 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", "thiserror 2.0.17", ] @@ -7228,9 +7438,21 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea8 dependencies = [ "alloy-consensus", "alloy-eips", - "reth-chainspec", - "reth-consensus", - "reth-primitives-traits", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-consensus 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", +] + +[[package]] +name = "reth-consensus-common" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-consensus 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", ] [[package]] @@ -7251,7 +7473,7 @@ dependencies = [ "futures", "reqwest", "reth-node-api", - "reth-primitives-traits", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-tracing", "ringbuffer", "serde", @@ -7271,12 +7493,12 @@ dependencies = [ "page_size", "parking_lot", "reth-db-api", - "reth-fs-util", + "reth-fs-util 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-libmdbx", - "reth-metrics", + "reth-metrics 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-nippy-jar", - "reth-static-file-types", - "reth-storage-errors", + "reth-static-file-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-storage-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-tracing", "rustc-hash 2.1.1", "strum 0.27.2", @@ -7300,15 +7522,15 @@ 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.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-db-models 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-ethereum-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-optimism-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-prune-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-stages-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-storage-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-trie-common 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "roaring", "serde", ] @@ -7323,19 +7545,19 @@ dependencies = [ "alloy-primitives", "boyer-moore-magiclen", "eyre", - "reth-chainspec", - "reth-codecs", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-codecs 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-config", "reth-db-api", "reth-etl", - "reth-execution-errors", - "reth-fs-util", + "reth-execution-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-fs-util 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-node-types", - "reth-primitives-traits", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-provider", - "reth-stages-types", - "reth-static-file-types", - "reth-trie", + "reth-stages-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-static-file-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-trie 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-trie-db", "serde", "serde_json", @@ -7353,11 +7575,21 @@ dependencies = [ "arbitrary", "bytes", "modular-bitfield", - "reth-codecs", - "reth-primitives-traits", + "reth-codecs 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "serde", ] +[[package]] +name = "reth-db-models" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", +] + [[package]] name = "reth-discv4" version = "1.9.3" @@ -7370,10 +7602,10 @@ dependencies = [ "itertools 0.14.0", "parking_lot", "rand 0.8.5", - "reth-ethereum-forks", + "reth-ethereum-forks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-net-banlist", "reth-net-nat", - "reth-network-peers", + "reth-network-peers 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "schnellru", "secp256k1 0.30.0", "serde", @@ -7397,10 +7629,10 @@ dependencies = [ "itertools 0.14.0", "metrics", "rand 0.9.2", - "reth-chainspec", - "reth-ethereum-forks", - "reth-metrics", - "reth-network-peers", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-ethereum-forks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-metrics 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-network-peers 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "secp256k1 0.30.0", "thiserror 2.0.17", "tokio", @@ -7418,8 +7650,8 @@ dependencies = [ "hickory-resolver", "linked_hash_set", "parking_lot", - "reth-ethereum-forks", - "reth-network-peers", + "reth-ethereum-forks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-network-peers 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-tokio-util", "schnellru", "secp256k1 0.30.0", @@ -7448,15 +7680,15 @@ dependencies = [ "pin-project", "rayon", "reth-config", - "reth-consensus", - "reth-ethereum-primitives", - "reth-metrics", + "reth-consensus 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-ethereum-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-metrics 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-network-p2p", - "reth-network-peers", - "reth-primitives-traits", + "reth-network-peers 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-provider", - "reth-storage-api", - "reth-tasks", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-tasks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-testing-utils", "tempfile", "thiserror 2.0.17", @@ -7485,37 +7717,37 @@ dependencies = [ "eyre", "futures-util", "jsonrpsee", - "reth-chainspec", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-cli-commands", "reth-config", - "reth-consensus", + "reth-consensus 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-db", "reth-db-common", "reth-engine-local", - "reth-engine-primitives", - "reth-ethereum-primitives", + "reth-engine-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-ethereum-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-network-api", "reth-network-p2p", - "reth-network-peers", + "reth-network-peers 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-node-api", "reth-node-builder", "reth-node-core", "reth-node-ethereum", - "reth-payload-builder", - "reth-payload-builder-primitives", - "reth-payload-primitives", + "reth-payload-builder 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-payload-builder-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-payload-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-primitives", - "reth-primitives-traits", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-provider", "reth-rpc-api", "reth-rpc-builder", "reth-rpc-eth-api", "reth-rpc-server-types", - "reth-stages-types", - "reth-tasks", + "reth-stages-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-tasks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-tokio-util", "reth-tracing", - "revm", + "revm 31.0.2", "serde_json", "tempfile", "tokio", @@ -7543,7 +7775,7 @@ dependencies = [ "hmac", "pin-project", "rand 0.8.5", - "reth-network-peers", + "reth-network-peers 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "secp256k1 0.30.0", "sha2", "sha3", @@ -7566,14 +7798,14 @@ dependencies = [ "eyre", "futures-util", "op-alloy-rpc-types-engine 0.22.4", - "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.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-engine-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-ethereum-engine-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-optimism-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-payload-builder 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-payload-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-transaction-pool 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "tokio", "tokio-stream", "tracing", @@ -7590,20 +7822,43 @@ 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.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-ethereum-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-execution-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-payload-builder-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-payload-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-trie-common 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "serde", "thiserror 2.0.17", "tokio", ] +[[package]] +name = "reth-engine-primitives" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rpc-types-engine", + "auto_impl", + "reth-chain-state 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-ethereum-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-execution-types 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-payload-builder-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-payload-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-trie-common 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "serde", + "thiserror 2.0.17", +] + [[package]] name = "reth-engine-service" version = "1.9.3" @@ -7611,19 +7866,19 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea8 dependencies = [ "futures", "pin-project", - "reth-chainspec", - "reth-consensus", - "reth-engine-primitives", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-consensus 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-engine-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-engine-tree", - "reth-ethereum-primitives", - "reth-evm", + "reth-ethereum-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-network-p2p", "reth-node-types", - "reth-payload-builder", + "reth-payload-builder 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-provider", "reth-prune", "reth-stages-api", - "reth-tasks", + "reth-tasks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", ] [[package]] @@ -7633,7 +7888,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea8 dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm", + "alloy-evm 0.23.3", "alloy-primitives", "alloy-rlp", "alloy-rpc-types-engine", @@ -7645,34 +7900,34 @@ dependencies = [ "mini-moka", "parking_lot", "rayon", - "reth-chain-state", - "reth-chainspec", - "reth-consensus", + "reth-chain-state 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-consensus 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-db", - "reth-engine-primitives", - "reth-errors", - "reth-ethereum-primitives", - "reth-evm", - "reth-execution-types", - "reth-metrics", + "reth-engine-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-ethereum-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-execution-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-metrics 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-network-p2p", - "reth-payload-builder", - "reth-payload-primitives", - "reth-primitives-traits", + "reth-payload-builder 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-payload-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-provider", "reth-prune", - "reth-prune-types", - "reth-revm", + "reth-prune-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-revm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-stages", "reth-stages-api", "reth-static-file", - "reth-tasks", + "reth-tasks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-tracing", - "reth-trie", + "reth-trie 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-trie-parallel", - "reth-trie-sparse", + "reth-trie-sparse 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-trie-sparse-parallel", - "revm", + "revm 31.0.2", "revm-primitives", "schnellru", "smallvec", @@ -7692,16 +7947,16 @@ dependencies = [ "futures", "itertools 0.14.0", "pin-project", - "reth-chainspec", - "reth-engine-primitives", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-engine-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-engine-tree", - "reth-errors", - "reth-evm", - "reth-fs-util", - "reth-payload-primitives", - "reth-primitives-traits", - "reth-revm", - "reth-storage-api", + "reth-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-fs-util 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-payload-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-revm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "serde", "serde_json", "tokio", @@ -7720,7 +7975,7 @@ dependencies = [ "alloy-rlp", "ethereum_ssz", "ethereum_ssz_derive", - "reth-ethereum-primitives", + "reth-ethereum-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "snap", "thiserror 2.0.17", ] @@ -7735,7 +7990,7 @@ dependencies = [ "eyre", "futures-util", "reqwest", - "reth-fs-util", + "reth-fs-util 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "sha2", "tokio", ] @@ -7753,11 +8008,11 @@ dependencies = [ "reth-era", "reth-era-downloader", "reth-etl", - "reth-fs-util", - "reth-primitives-traits", + "reth-fs-util 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-provider", - "reth-stages-types", - "reth-storage-api", + "reth-stages-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "tokio", "tracing", ] @@ -7767,9 +8022,20 @@ name = "reth-errors" version = "1.9.3" source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" dependencies = [ - "reth-consensus", - "reth-execution-errors", - "reth-storage-errors", + "reth-consensus 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-execution-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-storage-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "thiserror 2.0.17", +] + +[[package]] +name = "reth-errors" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "reth-consensus 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-execution-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-storage-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", "thiserror 2.0.17", ] @@ -7785,13 +8051,13 @@ dependencies = [ "derive_more", "futures", "pin-project", - "reth-codecs", + "reth-codecs 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-ecies", - "reth-eth-wire-types", - "reth-ethereum-forks", - "reth-metrics", - "reth-network-peers", - "reth-primitives-traits", + "reth-eth-wire-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-ethereum-forks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-metrics 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-network-peers 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "serde", "snap", "thiserror 2.0.17", @@ -7814,10 +8080,31 @@ dependencies = [ "alloy-rlp", "bytes", "derive_more", - "reth-chainspec", - "reth-codecs-derive", - "reth-ethereum-primitives", - "reth-primitives-traits", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-codecs-derive 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-ethereum-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "serde", + "thiserror 2.0.17", +] + +[[package]] +name = "reth-eth-wire-types" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "alloy-chains", + "alloy-consensus", + "alloy-eips", + "alloy-hardforks", + "alloy-primitives", + "alloy-rlp", + "bytes", + "derive_more", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-codecs-derive 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-ethereum-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", "serde", "thiserror 2.0.17", ] @@ -7830,11 +8117,11 @@ dependencies = [ "alloy-consensus", "alloy-eips", "alloy-primitives", - "reth-chainspec", - "reth-consensus", - "reth-consensus-common", - "reth-execution-types", - "reth-primitives-traits", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-consensus 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-consensus-common 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-execution-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "tracing", ] @@ -7847,10 +8134,28 @@ 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.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-ethereum-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-payload-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "serde", + "sha2", + "thiserror 2.0.17", +] + +[[package]] +name = "reth-ethereum-engine-primitives" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-engine", + "reth-engine-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-ethereum-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-payload-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", "serde", "sha2", "thiserror 2.0.17", @@ -7869,6 +8174,19 @@ dependencies = [ "rustc-hash 2.1.1", ] +[[package]] +name = "reth-ethereum-forks" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +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.3" @@ -7879,22 +8197,22 @@ 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-basic-payload-builder 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-consensus-common 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-ethereum-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "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", - "revm", + "reth-payload-builder 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-payload-builder-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-payload-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-payload-validator 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-revm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-transaction-pool 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "revm 31.0.2", "tracing", ] @@ -7911,9 +8229,26 @@ dependencies = [ "alloy-serde", "arbitrary", "modular-bitfield", - "reth-codecs", - "reth-primitives-traits", - "reth-zstd-compressors", + "reth-codecs 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-zstd-compressors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "serde", + "serde_with", +] + +[[package]] +name = "reth-ethereum-primitives" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-eth", + "alloy-serde", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-zstd-compressors 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", "serde", "serde_with", ] @@ -7935,20 +8270,41 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea8 dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm", + "alloy-evm 0.23.3", "alloy-primitives", "auto_impl", "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", - "revm", + "reth-execution-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-execution-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-metrics 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-storage-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-trie-common 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "revm 31.0.2", +] + +[[package]] +name = "reth-evm" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-evm 0.25.2", + "alloy-primitives", + "auto_impl", + "derive_more", + "futures-util", + "reth-execution-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-execution-types 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-storage-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-trie-common 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "revm 33.1.0", ] [[package]] @@ -7958,17 +8314,17 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea8 dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm", + "alloy-evm 0.23.3", "alloy-primitives", "alloy-rpc-types-engine", - "reth-chainspec", - "reth-ethereum-forks", - "reth-ethereum-primitives", - "reth-evm", - "reth-execution-types", - "reth-primitives-traits", - "reth-storage-errors", - "revm", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-ethereum-forks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-ethereum-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-execution-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-storage-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "revm 31.0.2", ] [[package]] @@ -7976,11 +8332,24 @@ name = "reth-execution-errors" version = "1.9.3" source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" dependencies = [ - "alloy-evm", + "alloy-evm 0.23.3", "alloy-primitives", "alloy-rlp", "nybbles", - "reth-storage-errors", + "reth-storage-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "thiserror 2.0.17", +] + +[[package]] +name = "reth-execution-errors" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "alloy-evm 0.25.2", + "alloy-primitives", + "alloy-rlp", + "nybbles", + "reth-storage-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", "thiserror 2.0.17", ] @@ -7991,13 +8360,31 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea8 dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm", + "alloy-evm 0.23.3", "alloy-primitives", "derive_more", - "reth-ethereum-primitives", - "reth-primitives-traits", - "reth-trie-common", - "revm", + "reth-ethereum-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-trie-common 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "revm 31.0.2", + "serde", + "serde_with", +] + +[[package]] +name = "reth-execution-types" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-evm 0.25.2", + "alloy-primitives", + "derive_more", + "reth-ethereum-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-trie-common 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "revm 33.1.0", "serde", "serde_with", ] @@ -8015,23 +8402,23 @@ dependencies = [ "itertools 0.14.0", "metrics", "parking_lot", - "reth-chain-state", - "reth-chainspec", + "reth-chain-state 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-config", - "reth-ethereum-primitives", - "reth-evm", + "reth-ethereum-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-exex-types", - "reth-fs-util", - "reth-metrics", + "reth-fs-util 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-metrics 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-node-api", "reth-node-core", - "reth-payload-builder", - "reth-primitives-traits", + "reth-payload-builder 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-provider", - "reth-prune-types", - "reth-revm", + "reth-prune-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-revm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-stages-api", - "reth-tasks", + "reth-tasks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-tracing", "rmp-serde", "thiserror 2.0.17", @@ -8047,9 +8434,9 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea8 dependencies = [ "alloy-eips", "alloy-primitives", - "reth-chain-state", - "reth-execution-types", - "reth-primitives-traits", + "reth-chain-state 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-execution-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "serde", "serde_with", ] @@ -8064,6 +8451,16 @@ dependencies = [ "thiserror 2.0.17", ] +[[package]] +name = "reth-fs-util" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "serde", + "serde_json", + "thiserror 2.0.17", +] + [[package]] name = "reth-invalid-block-hooks" version = "1.9.3" @@ -8077,15 +8474,15 @@ dependencies = [ "futures", "jsonrpsee", "pretty_assertions", - "reth-engine-primitives", - "reth-evm", - "reth-primitives-traits", + "reth-engine-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-provider", - "reth-revm", + "reth-revm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-rpc-api", "reth-tracing", - "reth-trie", - "revm", + "reth-trie 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "revm 31.0.2", "revm-bytecode", "revm-database", "serde", @@ -8149,6 +8546,15 @@ dependencies = [ "tokio-util", ] +[[package]] +name = "reth-metrics" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "metrics", + "metrics-derive", +] + [[package]] name = "reth-net-banlist" version = "1.9.3" @@ -8192,28 +8598,28 @@ dependencies = [ "pin-project", "rand 0.8.5", "rand 0.9.2", - "reth-chainspec", - "reth-consensus", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-consensus 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "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-eth-wire-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-ethereum-forks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-ethereum-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-fs-util 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-metrics 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-net-banlist", "reth-network-api", "reth-network-p2p", - "reth-network-peers", + "reth-network-peers 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-network-types", - "reth-primitives-traits", - "reth-storage-api", - "reth-tasks", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-tasks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-tokio-util", - "reth-transaction-pool", + "reth-transaction-pool 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "rustc-hash 2.1.1", "schnellru", "secp256k1 0.30.0", @@ -8239,10 +8645,10 @@ dependencies = [ "derive_more", "enr", "futures", - "reth-eth-wire-types", - "reth-ethereum-forks", + "reth-eth-wire-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-ethereum-forks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-network-p2p", - "reth-network-peers", + "reth-network-peers 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-network-types", "reth-tokio-util", "serde", @@ -8263,13 +8669,13 @@ dependencies = [ "derive_more", "futures", "parking_lot", - "reth-consensus", - "reth-eth-wire-types", - "reth-ethereum-primitives", - "reth-network-peers", + "reth-consensus 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-eth-wire-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-ethereum-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-network-peers 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-network-types", - "reth-primitives-traits", - "reth-storage-errors", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-storage-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "tokio", "tracing", ] @@ -8289,6 +8695,19 @@ dependencies = [ "url", ] +[[package]] +name = "reth-network-peers" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "secp256k1 0.30.0", + "serde_with", + "thiserror 2.0.17", + "url", +] + [[package]] name = "reth-network-types" version = "1.9.3" @@ -8297,7 +8716,7 @@ dependencies = [ "alloy-eip2124", "humantime-serde", "reth-net-banlist", - "reth-network-peers", + "reth-network-peers 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "serde", "serde_json", "tracing", @@ -8313,7 +8732,7 @@ dependencies = [ "derive_more", "lz4_flex", "memmap2", - "reth-fs-util", + "reth-fs-util 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "serde", "thiserror 2.0.17", "tracing", @@ -8327,21 +8746,21 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea8 dependencies = [ "alloy-rpc-types-engine", "eyre", - "reth-basic-payload-builder", - "reth-consensus", + "reth-basic-payload-builder 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-consensus 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-db-api", - "reth-engine-primitives", - "reth-evm", + "reth-engine-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-network-api", "reth-node-core", "reth-node-types", - "reth-payload-builder", - "reth-payload-builder-primitives", - "reth-payload-primitives", + "reth-payload-builder 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-payload-builder-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-payload-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-provider", - "reth-tasks", + "reth-tasks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-tokio-util", - "reth-transaction-pool", + "reth-transaction-pool 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", ] [[package]] @@ -8361,25 +8780,25 @@ dependencies = [ "futures", "jsonrpsee", "rayon", - "reth-basic-payload-builder", - "reth-chain-state", - "reth-chainspec", + "reth-basic-payload-builder 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-chain-state 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-cli-util", "reth-config", - "reth-consensus", + "reth-consensus 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-consensus-debug-client", "reth-db", "reth-db-api", "reth-db-common", "reth-downloaders", "reth-engine-local", - "reth-engine-primitives", + "reth-engine-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-engine-service", "reth-engine-tree", "reth-engine-util", - "reth-evm", + "reth-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-exex", - "reth-fs-util", + "reth-fs-util 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-invalid-block-hooks", "reth-network", "reth-network-api", @@ -8389,8 +8808,8 @@ dependencies = [ "reth-node-ethstats", "reth-node-events", "reth-node-metrics", - "reth-payload-builder", - "reth-primitives-traits", + "reth-payload-builder 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-provider", "reth-prune", "reth-rpc", @@ -8398,13 +8817,13 @@ dependencies = [ "reth-rpc-builder", "reth-rpc-engine-api", "reth-rpc-eth-types", - "reth-rpc-layer 1.9.3", + "reth-rpc-layer 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-stages", "reth-static-file", - "reth-tasks", + "reth-tasks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-tokio-util", "reth-tracing", - "reth-transaction-pool", + "reth-transaction-pool 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "secp256k1 0.30.0", "serde_json", "tokio", @@ -8428,31 +8847,31 @@ dependencies = [ "futures", "humantime", "rand 0.9.2", - "reth-chainspec", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-cli-util", "reth-config", - "reth-consensus", + "reth-consensus 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-db", "reth-discv4", "reth-discv5", "reth-engine-local", - "reth-engine-primitives", - "reth-ethereum-forks", + "reth-engine-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-ethereum-forks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-net-nat", "reth-network", "reth-network-p2p", - "reth-network-peers", - "reth-primitives-traits", - "reth-prune-types", + "reth-network-peers 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-prune-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-rpc-convert", "reth-rpc-eth-types", "reth-rpc-server-types", - "reth-stages-types", - "reth-storage-api", - "reth-storage-errors", + "reth-stages-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-storage-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-tracing", "reth-tracing-otlp", - "reth-transaction-pool", + "reth-transaction-pool 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "secp256k1 0.30.0", "serde", "shellexpand", @@ -8475,22 +8894,22 @@ dependencies = [ "alloy-rpc-types-engine", "alloy-rpc-types-eth", "eyre", - "reth-chainspec", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-engine-local", - "reth-engine-primitives", + "reth-engine-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-ethereum-consensus", - "reth-ethereum-engine-primitives", + "reth-ethereum-engine-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-ethereum-payload-builder", - "reth-ethereum-primitives", - "reth-evm", + "reth-ethereum-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-evm-ethereum", "reth-network", "reth-node-api", "reth-node-builder", - "reth-payload-primitives", - "reth-primitives-traits", + "reth-payload-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-provider", - "reth-revm", + "reth-revm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-rpc", "reth-rpc-api", "reth-rpc-builder", @@ -8498,8 +8917,8 @@ dependencies = [ "reth-rpc-eth-types", "reth-rpc-server-types", "reth-tracing", - "reth-transaction-pool", - "revm", + "reth-transaction-pool 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "revm 31.0.2", "tokio", ] @@ -8512,11 +8931,11 @@ dependencies = [ "alloy-primitives", "chrono", "futures-util", - "reth-chain-state", + "reth-chain-state 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-network-api", - "reth-primitives-traits", - "reth-storage-api", - "reth-transaction-pool", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-transaction-pool 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "serde", "serde_json", "thiserror 2.0.17", @@ -8540,13 +8959,13 @@ dependencies = [ "futures", "humantime", "pin-project", - "reth-engine-primitives", + "reth-engine-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-network-api", - "reth-primitives-traits", - "reth-prune-types", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-prune-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-stages", - "reth-static-file-types", - "reth-storage-api", + "reth-static-file-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "tokio", "tracing", ] @@ -8565,8 +8984,8 @@ dependencies = [ "metrics-util 0.19.1", "procfs 0.17.0", "reqwest", - "reth-metrics", - "reth-tasks", + "reth-metrics 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-tasks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "tokio", "tower 0.5.2", "tracing", @@ -8577,11 +8996,11 @@ name = "reth-node-types" version = "1.9.3" source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" dependencies = [ - "reth-chainspec", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-db-api", - "reth-engine-primitives", - "reth-payload-primitives", - "reth-primitives-traits", + "reth-engine-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-payload-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", ] [[package]] @@ -8598,20 +9017,43 @@ dependencies = [ "derive_more", "miniz_oxide", "op-alloy-consensus 0.22.4", - "op-alloy-rpc-types", + "op-alloy-rpc-types 0.22.4", "paste", - "reth-chainspec", - "reth-ethereum-forks", - "reth-network-peers", - "reth-optimism-forks", - "reth-optimism-primitives", - "reth-primitives-traits", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-ethereum-forks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-network-peers 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-optimism-forks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-optimism-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "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?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "alloy-chains", + "alloy-consensus", + "alloy-eips", + "alloy-genesis", + "alloy-hardforks", + "alloy-primitives", + "derive_more", + "op-alloy-consensus 0.23.1", + "op-alloy-rpc-types 0.23.1", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-ethereum-forks 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-network-peers 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-optimism-forks 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-optimism-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "serde_json", +] + [[package]] name = "reth-optimism-cli" version = "1.9.3" @@ -8626,33 +9068,33 @@ dependencies = [ "eyre", "futures-util", "op-alloy-consensus 0.22.4", - "reth-chainspec", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-cli", "reth-cli-commands", "reth-cli-runner", - "reth-consensus", + "reth-consensus 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-db", "reth-db-api", "reth-db-common", "reth-downloaders", - "reth-execution-types", - "reth-fs-util", + "reth-execution-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-fs-util 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-node-builder", "reth-node-core", "reth-node-events", "reth-node-metrics", - "reth-optimism-chainspec", - "reth-optimism-consensus", - "reth-optimism-evm", + "reth-optimism-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-optimism-consensus 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-optimism-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-optimism-node", - "reth-optimism-primitives", - "reth-primitives-traits", + "reth-optimism-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-provider", "reth-prune", "reth-rpc-server-types", "reth-stages", "reth-static-file", - "reth-static-file-types", + "reth-static-file-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-tracing", "reth-tracing-otlp", "serde", @@ -8671,18 +9113,43 @@ 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", - "revm", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-consensus 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-consensus-common 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-execution-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-optimism-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-optimism-forks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-optimism-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-storage-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-trie-common 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "revm 31.0.2", + "thiserror 2.0.17", + "tracing", +] + +[[package]] +name = "reth-optimism-consensus" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-trie", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-consensus 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-consensus-common 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-execution-types 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-optimism-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-optimism-forks 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-optimism-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-storage-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-trie-common 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "revm 33.1.0", "thiserror 2.0.17", "tracing", ] @@ -8694,24 +9161,51 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea8 dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm", - "alloy-op-evm", + "alloy-evm 0.23.3", + "alloy-op-evm 0.23.3", "alloy-primitives", "op-alloy-consensus 0.22.4", "op-alloy-rpc-types-engine 0.22.4", - "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", + "op-revm 12.0.2", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-execution-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-execution-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-optimism-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-optimism-consensus 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-optimism-forks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-optimism-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-rpc-eth-api", - "reth-storage-errors", - "revm", + "reth-storage-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "revm 31.0.2", + "thiserror 2.0.17", +] + +[[package]] +name = "reth-optimism-evm" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-evm 0.25.2", + "alloy-op-evm 0.25.2", + "alloy-primitives", + "op-alloy-consensus 0.23.1", + "op-alloy-rpc-types-engine 0.23.1", + "op-revm 14.1.0", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-execution-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-execution-types 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-optimism-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-optimism-consensus 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-optimism-forks 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-optimism-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-storage-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "revm 33.1.0", "thiserror 2.0.17", ] @@ -8730,21 +9224,21 @@ 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-chain-state 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-engine-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-execution-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-metrics 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-optimism-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-optimism-payload-builder 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-optimism-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-payload-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-revm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-rpc-eth-types", - "reth-storage-api", - "reth-tasks", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-tasks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "ringbuffer", "serde", "serde_json", @@ -8762,7 +9256,18 @@ dependencies = [ "alloy-op-hardforks", "alloy-primitives", "once_cell", - "reth-ethereum-forks", + "reth-ethereum-forks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", +] + +[[package]] +name = "reth-optimism-forks" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "alloy-op-hardforks", + "alloy-primitives", + "once_cell", + "reth-ethereum-forks 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", ] [[package]] @@ -8778,34 +9283,34 @@ dependencies = [ "eyre", "op-alloy-consensus 0.22.4", "op-alloy-rpc-types-engine 0.22.4", - "op-revm", - "reth-chainspec", - "reth-consensus", + "op-revm 12.0.2", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-consensus 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-engine-local", - "reth-evm", + "reth-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "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-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-optimism-consensus 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-optimism-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-optimism-forks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-optimism-payload-builder 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-optimism-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-optimism-rpc", "reth-optimism-storage", - "reth-optimism-txpool", - "reth-payload-builder", - "reth-primitives-traits", + "reth-optimism-txpool 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-payload-builder 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-provider", "reth-rpc-api", "reth-rpc-engine-api", "reth-rpc-server-types", "reth-tracing", - "reth-transaction-pool", - "reth-trie-common", - "revm", + "reth-transaction-pool 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-trie-common 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "revm 31.0.2", "serde", "tokio", "url", @@ -8818,7 +9323,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea8 dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm", + "alloy-evm 0.23.3", "alloy-primitives", "alloy-rlp", "alloy-rpc-types-debug", @@ -8826,25 +9331,65 @@ dependencies = [ "derive_more", "op-alloy-consensus 0.22.4", "op-alloy-rpc-types-engine 0.22.4", - "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", - "revm", + "reth-basic-payload-builder 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-chain-state 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-execution-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-optimism-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-optimism-forks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-optimism-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-optimism-txpool 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-payload-builder 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-payload-builder-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-payload-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-payload-util 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-payload-validator 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-revm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-transaction-pool 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "revm 31.0.2", + "serde", + "sha2", + "thiserror 2.0.17", + "tracing", +] + +[[package]] +name = "reth-optimism-payload-builder" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-evm 0.25.2", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-debug", + "alloy-rpc-types-engine", + "derive_more", + "either", + "op-alloy-consensus 0.23.1", + "op-alloy-rpc-types-engine 0.23.1", + "reth-basic-payload-builder 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-execution-types 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-optimism-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-optimism-forks 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-optimism-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-optimism-txpool 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-payload-builder 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-payload-builder-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-payload-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-payload-util 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-payload-validator 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-revm 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-transaction-pool 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "revm 33.1.0", "serde", "sha2", "thiserror 2.0.17", @@ -8864,13 +9409,26 @@ dependencies = [ "bytes", "modular-bitfield", "op-alloy-consensus 0.22.4", - "reth-codecs", - "reth-primitives-traits", - "reth-zstd-compressors", + "reth-codecs 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-zstd-compressors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "serde", "serde_with", ] +[[package]] +name = "reth-optimism-primitives" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "op-alloy-consensus 0.23.1", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", +] + [[package]] name = "reth-optimism-rpc" version = "1.9.3" @@ -8891,39 +9449,39 @@ dependencies = [ "eyre", "futures", "jsonrpsee", - "jsonrpsee-core 0.26.0", - "jsonrpsee-types 0.26.0", + "jsonrpsee-core", + "jsonrpsee-types", "metrics", "op-alloy-consensus 0.22.4", - "op-alloy-network", + "op-alloy-network 0.22.4", "op-alloy-rpc-jsonrpsee", - "op-alloy-rpc-types", + "op-alloy-rpc-types 0.22.4", "op-alloy-rpc-types-engine 0.22.4", - "op-revm", + "op-revm 12.0.2", "reqwest", - "reth-chain-state", - "reth-chainspec", - "reth-evm", - "reth-metrics", + "reth-chain-state 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-metrics 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-node-api", "reth-node-builder", - "reth-optimism-evm", + "reth-optimism-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-optimism-flashblocks", - "reth-optimism-forks", - "reth-optimism-payload-builder", - "reth-optimism-primitives", - "reth-optimism-txpool", - "reth-primitives-traits", + "reth-optimism-forks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-optimism-payload-builder 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-optimism-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-optimism-txpool 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "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", - "revm", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-tasks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-transaction-pool 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "revm 31.0.2", "serde_json", "thiserror 2.0.17", "tokio", @@ -8938,8 +9496,8 @@ version = "1.9.3" source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" dependencies = [ "alloy-consensus", - "reth-optimism-primitives", - "reth-storage-api", + "reth-optimism-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", ] [[package]] @@ -8960,18 +9518,54 @@ dependencies = [ "metrics", "op-alloy-consensus 0.22.4", "op-alloy-flz", - "op-alloy-rpc-types", - "op-revm", + "op-alloy-rpc-types 0.22.4", + "op-revm 12.0.2", + "parking_lot", + "reth-chain-state 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-metrics 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-optimism-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-optimism-forks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-optimism-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-transaction-pool 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "serde", + "thiserror 2.0.17", + "tokio", + "tracing", +] + +[[package]] +name = "reth-optimism-txpool" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +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 0.23.1", + "op-alloy-flz", + "op-alloy-rpc-types 0.23.1", + "op-revm 14.1.0", "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.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-metrics 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-optimism-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-optimism-forks 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-optimism-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-transaction-pool 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", "serde", "thiserror 2.0.17", "tokio", @@ -8988,12 +9582,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.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-ethereum-engine-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-metrics 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-payload-builder-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-payload-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "tokio", + "tokio-stream", + "tracing", +] + +[[package]] +name = "reth-payload-builder" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "alloy-consensus", + "alloy-primitives", + "alloy-rpc-types", + "futures-util", + "metrics", + "reth-chain-state 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-ethereum-engine-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-metrics 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-payload-builder-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-payload-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", "tokio", "tokio-stream", "tracing", @@ -9005,7 +9620,19 @@ version = "1.9.3" source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" dependencies = [ "pin-project", - "reth-payload-primitives", + "reth-payload-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "tokio", + "tokio-stream", + "tracing", +] + +[[package]] +name = "reth-payload-builder-primitives" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "pin-project", + "reth-payload-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", "tokio", "tokio-stream", "tracing", @@ -9022,10 +9649,33 @@ dependencies = [ "auto_impl", "either", "op-alloy-rpc-types-engine 0.22.4", - "reth-chain-state", - "reth-chainspec", - "reth-errors", - "reth-primitives-traits", + "reth-chain-state 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "serde", + "thiserror 2.0.17", + "tokio", +] + +[[package]] +name = "reth-payload-primitives" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rpc-types-engine", + "auto_impl", + "either", + "op-alloy-rpc-types-engine 0.23.1", + "reth-chain-state 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-execution-types 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-trie-common 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", "serde", "thiserror 2.0.17", "tokio", @@ -9038,7 +9688,17 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea8 dependencies = [ "alloy-consensus", "alloy-primitives", - "reth-transaction-pool", + "reth-transaction-pool 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", +] + +[[package]] +name = "reth-payload-util" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "alloy-consensus", + "alloy-primitives", + "reth-transaction-pool 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", ] [[package]] @@ -9048,7 +9708,17 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea8 dependencies = [ "alloy-consensus", "alloy-rpc-types-engine", - "reth-primitives-traits", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", +] + +[[package]] +name = "reth-payload-validator" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "alloy-consensus", + "alloy-rpc-types-engine", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", ] [[package]] @@ -9059,10 +9729,10 @@ 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.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-ethereum-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-static-file-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", ] [[package]] @@ -9088,7 +9758,34 @@ dependencies = [ "proptest", "proptest-arbitrary-interop", "rayon", - "reth-codecs", + "reth-codecs 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "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?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-genesis", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-eth", + "alloy-trie", + "auto_impl", + "bytes", + "derive_more", + "once_cell", + "op-alloy-consensus 0.23.1", + "reth-codecs 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", "revm-bytecode", "revm-primitives", "revm-state", @@ -9114,26 +9811,26 @@ dependencies = [ "notify", "parking_lot", "rayon", - "reth-chain-state", - "reth-chainspec", - "reth-codecs", + "reth-chain-state 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-codecs 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-db", "reth-db-api", - "reth-errors", - "reth-ethereum-engine-primitives", - "reth-ethereum-primitives", - "reth-execution-types", - "reth-fs-util", - "reth-metrics", + "reth-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-ethereum-engine-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-ethereum-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-execution-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-fs-util 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-metrics 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "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-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-prune-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-stages-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-static-file-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-storage-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-trie 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-trie-db", "revm-database", "revm-state", @@ -9155,13 +9852,13 @@ dependencies = [ "rayon", "reth-config", "reth-db-api", - "reth-errors", + "reth-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-exex-types", - "reth-metrics", - "reth-primitives-traits", + "reth-metrics 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-provider", - "reth-prune-types", - "reth-static-file-types", + "reth-prune-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-static-file-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-tokio-util", "rustc-hash 2.1.1", "thiserror 2.0.17", @@ -9170,31 +9867,55 @@ dependencies = [ ] [[package]] -name = "reth-prune-types" +name = "reth-prune-types" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +dependencies = [ + "alloy-primitives", + "arbitrary", + "derive_more", + "modular-bitfield", + "reth-codecs 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "serde", + "strum 0.27.2", + "thiserror 2.0.17", +] + +[[package]] +name = "reth-prune-types" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "alloy-primitives", + "derive_more", + "strum 0.27.2", + "thiserror 2.0.17", +] + +[[package]] +name = "reth-revm" version = "1.9.3" source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" dependencies = [ "alloy-primitives", - "arbitrary", - "derive_more", - "modular-bitfield", - "reth-codecs", - "serde", - "strum 0.27.2", - "thiserror 2.0.17", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-storage-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-trie 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "revm 31.0.2", ] [[package]] name = "reth-revm" version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" dependencies = [ "alloy-primitives", - "reth-primitives-traits", - "reth-storage-api", - "reth-storage-errors", - "reth-trie", - "revm", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-storage-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-trie 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "revm 33.1.0", ] [[package]] @@ -9205,7 +9926,7 @@ dependencies = [ "alloy-consensus", "alloy-dyn-abi", "alloy-eips", - "alloy-evm", + "alloy-evm 0.23.3", "alloy-genesis", "alloy-network", "alloy-primitives", @@ -9232,37 +9953,37 @@ dependencies = [ "hyper", "itertools 0.14.0", "jsonrpsee", - "jsonrpsee-types 0.26.0", + "jsonrpsee-types", "jsonwebtoken", "parking_lot", "pin-project", - "reth-chain-state", - "reth-chainspec", - "reth-consensus", - "reth-consensus-common", - "reth-engine-primitives", - "reth-errors", - "reth-evm", + "reth-chain-state 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-consensus 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-consensus-common 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-engine-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-evm-ethereum", - "reth-execution-types", - "reth-metrics", + "reth-execution-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-metrics 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-network-api", - "reth-network-peers", + "reth-network-peers 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-network-types", "reth-node-api", - "reth-primitives-traits", - "reth-revm", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-revm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "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", - "revm", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-tasks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-transaction-pool 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-trie-common 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "revm 31.0.2", "revm-inspectors", "revm-primitives", "serde", @@ -9297,11 +10018,11 @@ dependencies = [ "alloy-rpc-types-txpool", "alloy-serde", "jsonrpsee", - "reth-chain-state", - "reth-engine-primitives", - "reth-network-peers", + "reth-chain-state 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-engine-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-network-peers 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-rpc-eth-api", - "reth-trie-common", + "reth-trie-common 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", ] [[package]] @@ -9316,24 +10037,24 @@ dependencies = [ "jsonrpsee", "metrics", "pin-project", - "reth-chain-state", - "reth-chainspec", - "reth-consensus", - "reth-evm", + "reth-chain-state 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-consensus 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-ipc", - "reth-metrics", + "reth-metrics 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-network-api", "reth-node-core", - "reth-primitives-traits", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-rpc", "reth-rpc-api", "reth-rpc-eth-api", "reth-rpc-eth-types", - "reth-rpc-layer 1.9.3", + "reth-rpc-layer 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-rpc-server-types", - "reth-storage-api", - "reth-tasks", - "reth-transaction-pool", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-tasks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-transaction-pool 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "serde", "thiserror 2.0.17", "tokio", @@ -9356,17 +10077,17 @@ dependencies = [ "alloy-signer", "auto_impl", "dyn-clone", - "jsonrpsee-types 0.26.0", + "jsonrpsee-types", "op-alloy-consensus 0.22.4", - "op-alloy-network", - "op-alloy-rpc-types", - "op-revm", - "reth-ethereum-primitives", - "reth-evm", - "reth-optimism-primitives", - "reth-primitives-traits", - "reth-storage-api", - "revm-context", + "op-alloy-network 0.22.4", + "op-alloy-rpc-types 0.22.4", + "op-revm 12.0.2", + "reth-ethereum-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-optimism-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "revm-context 11.0.2", "thiserror 2.0.17", ] @@ -9379,21 +10100,21 @@ dependencies = [ "alloy-primitives", "alloy-rpc-types-engine", "async-trait", - "jsonrpsee-core 0.26.0", - "jsonrpsee-types 0.26.0", + "jsonrpsee-core", + "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-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-engine-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-metrics 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-payload-builder 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-payload-builder-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-payload-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-rpc-api", - "reth-storage-api", - "reth-tasks", - "reth-transaction-pool", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-tasks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-transaction-pool 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "serde", "thiserror 2.0.17", "tokio", @@ -9408,7 +10129,7 @@ dependencies = [ "alloy-consensus", "alloy-dyn-abi", "alloy-eips", - "alloy-evm", + "alloy-evm 0.23.3", "alloy-json-rpc", "alloy-network", "alloy-primitives", @@ -9421,24 +10142,24 @@ dependencies = [ "dyn-clone", "futures", "jsonrpsee", - "jsonrpsee-types 0.26.0", + "jsonrpsee-types", "parking_lot", - "reth-chain-state", - "reth-chainspec", - "reth-errors", - "reth-evm", + "reth-chain-state 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-network-api", "reth-node-api", - "reth-primitives-traits", - "reth-revm", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-revm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-rpc-convert", "reth-rpc-eth-types", "reth-rpc-server-types", - "reth-storage-api", - "reth-tasks", - "reth-transaction-pool", - "reth-trie-common", - "revm", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-tasks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-transaction-pool 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-trie-common 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "revm 31.0.2", "revm-inspectors", "tokio", "tracing", @@ -9451,7 +10172,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea8 dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm", + "alloy-evm 0.23.3", "alloy-network", "alloy-primitives", "alloy-rpc-client", @@ -9461,27 +10182,27 @@ dependencies = [ "derive_more", "futures", "itertools 0.14.0", - "jsonrpsee-core 0.26.0", - "jsonrpsee-types 0.26.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-chain-state 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-ethereum-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-execution-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-metrics 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-revm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-rpc-convert", "reth-rpc-server-types", - "reth-storage-api", - "reth-tasks", - "reth-transaction-pool", - "reth-trie", - "revm", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-tasks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-transaction-pool 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-trie 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "revm 31.0.2", "revm-inspectors", "schnellru", "serde", @@ -9493,12 +10214,12 @@ dependencies = [ [[package]] name = "reth-rpc-layer" -version = "1.4.7" -source = "git+https://github.com/paradigmxyz/reth.git?tag=v1.4.7#dc7cb6e6670b0da294a0e5010e02855f5aaf6b49" +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 0.25.1", + "jsonrpsee-http-client", "pin-project", "tower 0.5.2", "tower-http", @@ -9508,11 +10229,11 @@ dependencies = [ [[package]] name = "reth-rpc-layer" version = "1.9.3" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea84c5751776ecabdd069646" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" dependencies = [ "alloy-rpc-types-engine", "http", - "jsonrpsee-http-client 0.26.0", + "jsonrpsee-http-client", "pin-project", "tower 0.5.2", "tower-http", @@ -9527,9 +10248,9 @@ dependencies = [ "alloy-eips", "alloy-primitives", "alloy-rpc-types-engine", - "jsonrpsee-core 0.26.0", - "jsonrpsee-types 0.26.0", - "reth-errors", + "jsonrpsee-core", + "jsonrpsee-types", + "reth-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-network-api", "serde", "strum 0.27.2", @@ -9550,32 +10271,32 @@ dependencies = [ "num-traits", "rayon", "reqwest", - "reth-chainspec", - "reth-codecs", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-codecs 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-config", - "reth-consensus", + "reth-consensus 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-db", "reth-db-api", "reth-era", "reth-era-downloader", "reth-era-utils", - "reth-ethereum-primitives", + "reth-ethereum-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-etl", - "reth-evm", - "reth-execution-types", + "reth-evm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-execution-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-exex", - "reth-fs-util", + "reth-fs-util 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-network-p2p", - "reth-primitives-traits", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-provider", "reth-prune", - "reth-prune-types", - "reth-revm", + "reth-prune-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-revm 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-stages-api", - "reth-static-file-types", - "reth-storage-errors", + "reth-static-file-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-storage-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-testing-utils", - "reth-trie", + "reth-trie 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-trie-db", "tempfile", "thiserror 2.0.17", @@ -9594,16 +10315,16 @@ dependencies = [ "auto_impl", "futures-util", "metrics", - "reth-consensus", - "reth-errors", - "reth-metrics", + "reth-consensus 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-metrics 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-network-p2p", - "reth-primitives-traits", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-provider", "reth-prune", - "reth-stages-types", + "reth-stages-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-static-file", - "reth-static-file-types", + "reth-static-file-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-tokio-util", "thiserror 2.0.17", "tokio", @@ -9619,11 +10340,20 @@ dependencies = [ "arbitrary", "bytes", "modular-bitfield", - "reth-codecs", - "reth-trie-common", + "reth-codecs 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-trie-common 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "serde", ] +[[package]] +name = "reth-stages-types" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "alloy-primitives", + "reth-trie-common 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", +] + [[package]] name = "reth-static-file" version = "1.9.3" @@ -9632,14 +10362,14 @@ dependencies = [ "alloy-primitives", "parking_lot", "rayon", - "reth-codecs", + "reth-codecs 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-db-api", - "reth-primitives-traits", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-provider", - "reth-prune-types", - "reth-stages-types", - "reth-static-file-types", - "reth-storage-errors", + "reth-prune-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-stages-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-static-file-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-storage-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-tokio-util", "tracing", ] @@ -9656,6 +10386,17 @@ dependencies = [ "strum 0.27.2", ] +[[package]] +name = "reth-static-file-types" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "alloy-primitives", + "derive_more", + "serde", + "strum 0.27.2", +] + [[package]] name = "reth-storage-api" version = "1.9.3" @@ -9666,16 +10407,38 @@ dependencies = [ "alloy-primitives", "alloy-rpc-types-engine", "auto_impl", - "reth-chainspec", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "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-db-models 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-ethereum-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-execution-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-prune-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-stages-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-storage-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-trie-common 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "revm-database", +] + +[[package]] +name = "reth-storage-api" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rpc-types-engine", + "auto_impl", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-db-models 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-ethereum-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-execution-types 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-prune-types 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-stages-types 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-storage-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-trie-common 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", "revm-database", ] @@ -9688,9 +10451,25 @@ dependencies = [ "alloy-primitives", "alloy-rlp", "derive_more", - "reth-primitives-traits", - "reth-prune-types", - "reth-static-file-types", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-prune-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-static-file-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "revm-database-interface", + "thiserror 2.0.17", +] + +[[package]] +name = "reth-storage-errors" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "derive_more", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-prune-types 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-static-file-types 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", "revm-database-interface", "thiserror 2.0.17", ] @@ -9706,7 +10485,23 @@ dependencies = [ "metrics", "pin-project", "rayon", - "reth-metrics", + "reth-metrics 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "thiserror 2.0.17", + "tokio", + "tracing", + "tracing-futures", +] + +[[package]] +name = "reth-tasks" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "auto_impl", + "dyn-clone", + "futures-util", + "metrics", + "reth-metrics 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", "thiserror 2.0.17", "tokio", "tracing", @@ -9724,8 +10519,8 @@ dependencies = [ "alloy-primitives", "rand 0.8.5", "rand 0.9.2", - "reth-ethereum-primitives", - "reth-primitives-traits", + "reth-ethereum-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "secp256k1 0.30.0", ] @@ -9791,17 +10586,56 @@ dependencies = [ "paste", "pin-project", "rand 0.9.2", - "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", - "revm-interpreter", + "reth-chain-state 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-eth-wire-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-ethereum-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-execution-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-fs-util 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-metrics 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-tasks 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "revm-interpreter 29.0.1", + "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?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "aquamarine", + "auto_impl", + "bitflags 2.10.0", + "futures-util", + "metrics", + "parking_lot", + "pin-project", + "reth-chain-state 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-chainspec 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-eth-wire-types 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-ethereum-primitives 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-execution-types 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-fs-util 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-metrics 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-storage-api 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-tasks 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "revm-interpreter 31.1.0", "revm-primitives", "rustc-hash 2.1.1", "schnellru", @@ -9827,18 +10661,40 @@ 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.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-metrics 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-stages-types 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-storage-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-trie-common 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-trie-sparse 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "revm-database", "tracing", "triehash", ] +[[package]] +name = "reth-trie" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-trie", + "auto_impl", + "itertools 0.14.0", + "reth-execution-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-stages-types 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-storage-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-trie-common 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-trie-sparse 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "revm-database", + "tracing", +] + [[package]] name = "reth-trie-common" version = "1.9.3" @@ -9859,8 +10715,31 @@ dependencies = [ "nybbles", "plain_hasher", "rayon", - "reth-codecs", - "reth-primitives-traits", + "reth-codecs 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "revm-database", + "serde", + "serde_with", +] + +[[package]] +name = "reth-trie-common" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +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-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", "revm-database", "serde", "serde_with", @@ -9873,9 +10752,9 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea8 dependencies = [ "alloy-primitives", "reth-db-api", - "reth-execution-errors", - "reth-primitives-traits", - "reth-trie", + "reth-execution-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-trie 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "tracing", ] @@ -9892,13 +10771,13 @@ dependencies = [ "itertools 0.14.0", "metrics", "rayon", - "reth-execution-errors", - "reth-metrics", + "reth-execution-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-metrics 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "reth-provider", - "reth-storage-errors", - "reth-trie", - "reth-trie-common", - "reth-trie-sparse", + "reth-storage-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-trie 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-trie-common 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-trie-sparse 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "thiserror 2.0.17", "tokio", "tracing", @@ -9915,10 +10794,26 @@ dependencies = [ "auto_impl", "metrics", "rayon", - "reth-execution-errors", - "reth-metrics", - "reth-primitives-traits", - "reth-trie-common", + "reth-execution-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-metrics 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-trie-common 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "smallvec", + "tracing", +] + +[[package]] +name = "reth-trie-sparse" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "alloy-trie", + "auto_impl", + "reth-execution-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-primitives-traits 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-trie-common 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", "smallvec", "tracing", ] @@ -9933,10 +10828,10 @@ dependencies = [ "alloy-trie", "metrics", "rayon", - "reth-execution-errors", - "reth-metrics", - "reth-trie-common", - "reth-trie-sparse", + "reth-execution-errors 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-metrics 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-trie-common 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", + "reth-trie-sparse 1.9.3 (git+https://github.com/paradigmxyz/reth?tag=v1.9.3)", "smallvec", "tracing", ] @@ -9949,6 +10844,14 @@ dependencies = [ "zstd", ] +[[package]] +name = "reth-zstd-compressors" +version = "1.9.3" +source = "git+https://github.com/paradigmxyz/reth?rev=4231f4b#4231f4b68879d673ebab41b8a7e434537e6c6f0c" +dependencies = [ + "zstd", +] + [[package]] name = "revm" version = "31.0.2" @@ -9956,14 +10859,33 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb67a5223602113cae59a305acde2d9936bc18f2478dda879a6124b267cebfb6" dependencies = [ "revm-bytecode", - "revm-context", - "revm-context-interface", + "revm-context 11.0.2", + "revm-context-interface 12.0.1", + "revm-database", + "revm-database-interface", + "revm-handler 12.0.2", + "revm-inspector 12.0.2", + "revm-interpreter 29.0.1", + "revm-precompile 29.0.1", + "revm-primitives", + "revm-state", +] + +[[package]] +name = "revm" +version = "33.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c85ed0028f043f87b3c88d4a4cb6f0a76440085523b6a8afe5ff003cf418054" +dependencies = [ + "revm-bytecode", + "revm-context 12.1.0", + "revm-context-interface 13.1.0", "revm-database", "revm-database-interface", - "revm-handler", - "revm-inspector", - "revm-interpreter", - "revm-precompile", + "revm-handler 14.1.0", + "revm-inspector 14.1.0", + "revm-interpreter 31.1.0", + "revm-precompile 31.0.0", "revm-primitives", "revm-state", ] @@ -9990,7 +10912,24 @@ dependencies = [ "cfg-if", "derive-where", "revm-bytecode", - "revm-context-interface", + "revm-context-interface 12.0.1", + "revm-database-interface", + "revm-primitives", + "revm-state", + "serde", +] + +[[package]] +name = "revm-context" +version = "12.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f038f0c9c723393ac897a5df9140b21cfa98f5753a2cb7d0f28fa430c4118abf" +dependencies = [ + "bitvec", + "cfg-if", + "derive-where", + "revm-bytecode", + "revm-context-interface 13.1.0", "revm-database-interface", "revm-primitives", "revm-state", @@ -10013,6 +10952,22 @@ dependencies = [ "serde", ] +[[package]] +name = "revm-context-interface" +version = "13.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "431c9a14e4ef1be41ae503708fd02d974f80ef1f2b6b23b5e402e8d854d1b225" +dependencies = [ + "alloy-eip2930", + "alloy-eip7702", + "auto_impl", + "either", + "revm-database-interface", + "revm-primitives", + "revm-state", + "serde", +] + [[package]] name = "revm-database" version = "9.0.6" @@ -10049,11 +11004,30 @@ dependencies = [ "auto_impl", "derive-where", "revm-bytecode", - "revm-context", - "revm-context-interface", + "revm-context 11.0.2", + "revm-context-interface 12.0.1", + "revm-database-interface", + "revm-interpreter 29.0.1", + "revm-precompile 29.0.1", + "revm-primitives", + "revm-state", + "serde", +] + +[[package]] +name = "revm-handler" +version = "14.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d44f8f6dbeec3fecf9fe55f78ef0a758bdd92ea46cd4f1ca6e2a946b32c367f3" +dependencies = [ + "auto_impl", + "derive-where", + "revm-bytecode", + "revm-context 12.1.0", + "revm-context-interface 13.1.0", "revm-database-interface", - "revm-interpreter", - "revm-precompile", + "revm-interpreter 31.1.0", + "revm-precompile 31.0.0", "revm-primitives", "revm-state", "serde", @@ -10067,10 +11041,28 @@ checksum = "c99801eac7da06cc112df2244bd5a64024f4ef21240e923b26e73c4b4a0e5da6" dependencies = [ "auto_impl", "either", - "revm-context", + "revm-context 11.0.2", + "revm-database-interface", + "revm-handler 12.0.2", + "revm-interpreter 29.0.1", + "revm-primitives", + "revm-state", + "serde", + "serde_json", +] + +[[package]] +name = "revm-inspector" +version = "14.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5617e49216ce1ca6c8826bcead0386bc84f49359ef67cde6d189961735659f93" +dependencies = [ + "auto_impl", + "either", + "revm-context 12.1.0", "revm-database-interface", - "revm-handler", - "revm-interpreter", + "revm-handler 14.1.0", + "revm-interpreter 31.1.0", "revm-primitives", "revm-state", "serde", @@ -10089,7 +11081,7 @@ dependencies = [ "alloy-sol-types", "anstyle", "colorchoice", - "revm", + "revm 31.0.2", "serde", "serde_json", "thiserror 2.0.17", @@ -10102,7 +11094,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22789ce92c5808c70185e3bc49732f987dc6fd907f77828c8d3470b2299c9c65" dependencies = [ "revm-bytecode", - "revm-context-interface", + "revm-context-interface 12.0.1", + "revm-primitives", + "revm-state", + "serde", +] + +[[package]] +name = "revm-interpreter" +version = "31.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26ec36405f7477b9dccdc6caa3be19adf5662a7a0dffa6270cdb13a090c077e5" +dependencies = [ + "revm-bytecode", + "revm-context-interface 13.1.0", "revm-primitives", "revm-state", "serde", @@ -10133,6 +11138,30 @@ dependencies = [ "sha2", ] +[[package]] +name = "revm-precompile" +version = "31.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a62958af953cc4043e93b5be9b8497df84cc3bd612b865c49a7a7dfa26a84e2" +dependencies = [ + "ark-bls12-381", + "ark-bn254", + "ark-ec", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "arrayref", + "aurora-engine-modexp", + "c-kzg", + "cfg-if", + "k256", + "p256", + "revm-primitives", + "ripemd", + "rug", + "secp256k1 0.31.1", + "sha2", +] + [[package]] name = "revm-primitives" version = "21.0.2" @@ -10263,19 +11292,23 @@ dependencies = [ "alloy-consensus", "alloy-eips", "alloy-primitives", + "alloy-rlp", "alloy-rpc-types-engine", "alloy-rpc-types-eth", "alloy-serde", "anyhow", "assert_cmd", "backoff", + "blake3", "bytes", "clap", "ctor", "dashmap 6.1.0", "dotenvy", + "ed25519-dalek", "eyre", "futures", + "hex", "http", "http-body-util", "hyper", @@ -10288,8 +11321,8 @@ dependencies = [ "metrics-exporter-prometheus 0.16.2", "metrics-util 0.19.1", "moka", - "op-alloy-consensus 0.23.0", - "op-alloy-rpc-types-engine 0.23.0", + "op-alloy-consensus 0.23.1", + "op-alloy-rpc-types-engine 0.23.1", "opentelemetry 0.28.0", "opentelemetry-otlp 0.28.0", "opentelemetry_sdk 0.28.0", @@ -10298,13 +11331,15 @@ dependencies = [ "predicates", "rand 0.9.2", "reqwest", - "reth-rpc-layer 1.4.7", + "reth-optimism-payload-builder 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", + "reth-rpc-layer 1.9.3 (git+https://github.com/paradigmxyz/reth?rev=4231f4b)", "rollup-boost-types", "rustls", "serde", "serde_json", "serial_test", "sha2", + "tempfile", "testcontainers", "thiserror 2.0.17", "time", @@ -10327,14 +11362,18 @@ name = "rollup-boost-types" version = "0.1.0" dependencies = [ "alloy-primitives", + "alloy-rlp", "alloy-rpc-types-engine", "alloy-rpc-types-eth", "alloy-serde", + "blake3", + "ed25519-dalek", "futures", "moka", - "op-alloy-rpc-types-engine 0.23.0", + "op-alloy-rpc-types-engine 0.23.1", "serde", "serde_json", + "thiserror 2.0.17", "tracing", ] @@ -11039,9 +12078,9 @@ dependencies = [ [[package]] name = "simd-adler32" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" +checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" [[package]] name = "simple_asn1" @@ -11264,9 +12303,9 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff790eb176cc81bb8936aed0f7b9f14fc4670069a2d371b3e3b0ecce908b2cb3" +checksum = "60ceeb7c95a4536de0c0e1649bd98d1a72a4bb9590b1f3e45a8a0bfdb7c188c0" dependencies = [ "paste", "proc-macro2", @@ -11711,9 +12750,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.23.7" +version = "0.23.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" +checksum = "5d7cbc3b4b49633d57a0509303158ca50de80ae32c265093b24c414705807832" dependencies = [ "indexmap 2.12.1", "toml_datetime 0.7.3", @@ -11845,9 +12884,9 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf146f99d442e8e68e585f5d798ccd3cad9a7835b917e09728880a862706456" +checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" dependencies = [ "async-compression", "base64 0.22.1", diff --git a/Cargo.toml b/Cargo.toml index 124939a6..750572bc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,12 +4,13 @@ resolver = "3" members = [ "crates/rollup-boost", "crates/websocket-proxy", - "crates/flashblocks-rpc", + "crates/flashblocks-rpc", "crates/rollup-boost-types", ] [workspace.dependencies] rollup-boost = { path = "crates/rollup-boost" } +flashblocks-rpc = { path = "crates/flashblocks-rpc" } rollup-boost-types = { path = "crates/rollup-boost-types" } backoff = "0.4.0" @@ -27,6 +28,13 @@ tokio = { version = "1", features = ["full"] } tracing = "0.1.4" tracing-subscriber = { version = "0.3.20", features = ["env-filter", "json"] } url = "2.2.0" +ed25519-dalek = { version = "2", features = ["serde"] } +blake3 = "1" +hex = "0.4" + +# Reth deps, use 4231f4b to get latest op-alloy +reth-optimism-payload-builder = { git = "https://github.com/paradigmxyz/reth", rev = "4231f4b" } +reth-rpc-layer = { git = "https://github.com/paradigmxyz/reth", rev = "4231f4b" } # Alloy libraries alloy-rpc-types-engine = "1.0.41" @@ -39,11 +47,12 @@ alloy-consensus = "1.0.41" alloy-rpc-types = "1.0.41" alloy-genesis = "1.0.41" alloy-rpc-client = "1.0.41" +alloy-rlp = "0.3.12" alloy-provider = "1.0.41" op-alloy-network = "0.23.0" -op-alloy-rpc-types-engine = "0.23.0" -op-alloy-consensus = "0.23.0" -op-alloy-rpc-types = "0.23.0" +op-alloy-rpc-types-engine = "0.23.1" +op-alloy-consensus = "0.23.1" +op-alloy-rpc-types = "0.23.1" tokio-tungstenite = { version = "0.26.2", features = ["native-tls"] } testcontainers = "0.23" jsonrpsee = "0.26.0" diff --git a/Dockerfile b/Dockerfile index dab2f9c7..382cca02 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,7 +15,7 @@ RUN cargo install sccache --version ^0.9 RUN cargo install cargo-chef --version ^0.1 RUN apt-get update \ - && apt-get install -y clang libclang-dev + && apt-get install -y clang libclang-dev gcc ENV CARGO_HOME=/usr/local/cargo ENV RUSTC_WRAPPER=sccache diff --git a/crates/rollup-boost-types/Cargo.toml b/crates/rollup-boost-types/Cargo.toml index 483d4b0a..05906b14 100644 --- a/crates/rollup-boost-types/Cargo.toml +++ b/crates/rollup-boost-types/Cargo.toml @@ -6,6 +6,7 @@ license = "MIT" [dependencies] alloy-primitives = { workspace = true } +alloy-rlp = { workspace = true } alloy-rpc-types-engine = { workspace = true } alloy-rpc-types-eth = { workspace = true } alloy-serde = { workspace = true } @@ -15,3 +16,6 @@ op-alloy-rpc-types-engine = { workspace = true } serde = { workspace = true } serde_json = { workspace = true } tracing = { workspace = true } +thiserror = { workspace = true } +ed25519-dalek = { workspace = true } +blake3 = { workspace = true } diff --git a/crates/rollup-boost-types/src/authorization.rs b/crates/rollup-boost-types/src/authorization.rs new file mode 100644 index 00000000..e69fc7bf --- /dev/null +++ b/crates/rollup-boost-types/src/authorization.rs @@ -0,0 +1,222 @@ +use alloy_primitives::{B64, Bytes}; +use alloy_rlp::{Decodable, Encodable, Header}; +use alloy_rpc_types_engine::PayloadId; +use ed25519_dalek::{Signature, Signer, SigningKey, Verifier, VerifyingKey}; +use serde::{Deserialize, Serialize}; +use thiserror::Error; + +/// An authorization token that grants a builder permission to publish flashblocks for a specific payload. +/// +/// The `authorizer_sig` is made over the `payload_id`, `timestamp`, and `builder_vk`. This is +/// useful because it allows the authorizer to control which builders can publish flashblocks in +/// real time, without relying on consumers to verify the builder's public key against a +/// pre-defined list. +#[derive(Copy, Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] +pub struct Authorization { + /// The unique identifier of the payload this authorization applies to + pub payload_id: PayloadId, + /// Unix timestamp when this authorization was created + pub timestamp: u64, + /// The public key of the builder who is authorized to sign messages + pub builder_vk: VerifyingKey, + /// The authorizer's signature over the payload_id, timestamp, and builder_vk + pub authorizer_sig: Signature, +} + +#[derive(Debug, Error, PartialEq)] +pub enum AuthorizationError { + #[error("invalid authorizer signature")] + InvalidAuthorizerSig, +} + +impl Authorization { + /// Creates a new authorization token for a builder to publish messages for a specific payload. + /// + /// This function creates a cryptographic authorization by signing a message containing the + /// payload ID, timestamp, and builder's public key using the authorizer's signing key. + /// + /// # Arguments + /// + /// * `payload_id` - The unique identifier of the payload this authorization applies to + /// * `timestamp` - Unix timestamp associated with this `payload_id` + /// * `authorizer_sk` - The authorizer's signing key used to create the signature + /// * `actor_vk` - The verifying key of the actor being authorized + /// + /// # Returns + /// + /// A new `Authorization` instance with the generated signature + pub fn new( + payload_id: PayloadId, + timestamp: u64, + authorizer_sk: &SigningKey, + actor_vk: VerifyingKey, + ) -> Self { + let mut msg = payload_id.0.to_vec(); + msg.extend_from_slice(×tamp.to_le_bytes()); + msg.extend_from_slice(actor_vk.as_bytes()); + let hash = blake3::hash(&msg); + let sig = authorizer_sk.sign(hash.as_bytes()); + + Self { + payload_id, + timestamp, + builder_vk: actor_vk, + authorizer_sig: sig, + } + } + + /// Verifies the authorization signature against the provided authorizer's verifying key. + /// + /// This function reconstructs the signed message from the authorization data and verifies + /// that the signature was created by the holder of the authorizer's private key. + /// + /// # Arguments + /// + /// * `authorizer_sk` - The verifying key of the authorizer to verify against + /// + /// # Returns + /// + /// * `Ok(())` if the signature is valid + /// * `Err(FlashblocksP2PError::InvalidAuthorizerSig)` if the signature is invalid + pub fn verify(&self, authorizer_sk: VerifyingKey) -> Result<(), AuthorizationError> { + let mut msg = self.payload_id.0.to_vec(); + msg.extend_from_slice(&self.timestamp.to_le_bytes()); + msg.extend_from_slice(self.builder_vk.as_bytes()); + let hash = blake3::hash(&msg); + authorizer_sk + .verify(hash.as_bytes(), &self.authorizer_sig) + .map_err(|_| AuthorizationError::InvalidAuthorizerSig) + } +} + +impl Encodable for Authorization { + fn encode(&self, out: &mut dyn alloy_rlp::BufMut) { + // pre-serialize the key & sig once so we can reuse the bytes & lengths + let pub_bytes = Bytes::copy_from_slice(self.builder_vk.as_bytes()); // 33 bytes + let sig_bytes = Bytes::copy_from_slice(&self.authorizer_sig.to_bytes()); // 64 bytes + + let payload_len = self.payload_id.0.length() + + self.timestamp.length() + + pub_bytes.length() + + sig_bytes.length(); + + Header { + list: true, + payload_length: payload_len, + } + .encode(out); + + // 1. payload_id (inner B64 already Encodable) + self.payload_id.0.encode(out); + // 2. timestamp + self.timestamp.encode(out); + // 3. builder_pub + pub_bytes.encode(out); + // 4. authorizer_sig + sig_bytes.encode(out); + } + + fn length(&self) -> usize { + let pub_bytes = Bytes::copy_from_slice(self.builder_vk.as_bytes()); + let sig_bytes = Bytes::copy_from_slice(&self.authorizer_sig.to_bytes()); + + let payload_len = self.payload_id.0.length() + + self.timestamp.length() + + pub_bytes.length() + + sig_bytes.length(); + + Header { + list: true, + payload_length: payload_len, + } + .length() + + payload_len + } +} + +impl Decodable for Authorization { + fn decode(buf: &mut &[u8]) -> Result { + let header = Header::decode(buf)?; + if !header.list { + return Err(alloy_rlp::Error::UnexpectedString); + } + let mut body = &buf[..header.payload_length]; + + // 1. payload_id + let payload_id = alloy_rpc_types_engine::PayloadId(B64::decode(&mut body)?); + + // 2. timestamp + let timestamp = u64::decode(&mut body)?; + + // 3. builder_pub + let pub_bytes = Bytes::decode(&mut body)?; + let builder_pub = VerifyingKey::try_from(pub_bytes.as_ref()) + .map_err(|_| alloy_rlp::Error::Custom("bad builder_pub"))?; + + // 4. authorizer_sig + let sig_bytes = Bytes::decode(&mut body)?; + let authorizer_sig = Signature::try_from(sig_bytes.as_ref()) + .map_err(|_| alloy_rlp::Error::Custom("bad signature"))?; + + // advance caller’s slice cursor + *buf = &buf[header.payload_length..]; + + Ok(Self { + payload_id, + timestamp, + builder_vk: builder_pub, + authorizer_sig, + }) + } +} + +#[cfg(test)] +mod tests { + use super::*; + use alloy_rlp::{Decodable, Encodable, encode}; + + fn key_pair(seed: u8) -> (SigningKey, VerifyingKey) { + let bytes = [seed; 32]; + let sk = SigningKey::from_bytes(&bytes); + let vk = sk.verifying_key(); + (sk, vk) + } + + #[test] + fn authorization_rlp_roundtrip_and_verify() { + let (authorizer_sk, authorizer_vk) = key_pair(1); + let (_, builder_vk) = key_pair(2); + + let auth = Authorization::new( + PayloadId::default(), + 1_700_000_123, + &authorizer_sk, + builder_vk, + ); + + let encoded = encode(auth); + assert_eq!(encoded.len(), auth.length(), "length impl correct"); + + let mut slice = encoded.as_ref(); + let decoded = Authorization::decode(&mut slice).expect("decoding succeeds"); + assert!(slice.is_empty(), "decoder consumed all bytes"); + assert_eq!(decoded, auth, "round-trip preserves value"); + + // Signature is valid + decoded.verify(authorizer_vk).expect("signature verifies"); + } + + #[test] + fn authorization_signature_tamper_is_detected() { + let (authorizer_sk, authorizer_vk) = key_pair(1); + let (_, builder_vk) = key_pair(2); + + let mut auth = Authorization::new(PayloadId::default(), 42, &authorizer_sk, builder_vk); + + let mut sig_bytes = auth.authorizer_sig.to_bytes(); + sig_bytes[0] ^= 1; + auth.authorizer_sig = Signature::try_from(sig_bytes.as_ref()).unwrap(); + + assert!(auth.verify(authorizer_vk).is_err()); + } +} diff --git a/crates/rollup-boost-types/src/flashblocks.rs b/crates/rollup-boost-types/src/flashblocks.rs index cec0533c..7f642314 100644 --- a/crates/rollup-boost-types/src/flashblocks.rs +++ b/crates/rollup-boost-types/src/flashblocks.rs @@ -1,4 +1,5 @@ -use alloy_primitives::{Address, B256, Bloom, Bytes, U256}; +use alloy_primitives::{Address, B64, B256, Bloom, Bytes, U256}; +use alloy_rlp::{Decodable, Encodable, Header, RlpDecodable, RlpEncodable}; use alloy_rpc_types_engine::PayloadId; use alloy_rpc_types_eth::Withdrawal; use serde::{Deserialize, Serialize}; @@ -9,7 +10,10 @@ use serde_json::Value; /// such as state root, receipts, logs, and new transactions. Other immutable block fields /// like parent hash and block number are excluded since they remain constant throughout /// the block's construction. -#[derive(Clone, Debug, PartialEq, Default, Deserialize, Serialize)] +#[derive( + Clone, Debug, PartialEq, Default, Deserialize, Serialize, Eq, RlpEncodable, RlpDecodable, +)] +#[rlp(trailing)] pub struct ExecutionPayloadFlashblockDeltaV1 { /// The state root of the block. pub state_root: B256, @@ -41,7 +45,9 @@ pub struct ExecutionPayloadFlashblockDeltaV1 { /// throughout block construction. This includes fundamental block properties like /// parent hash, block number, and other header fields that are determined at /// block creation and cannot be modified. -#[derive(Clone, Debug, PartialEq, Default, Deserialize, Serialize)] +#[derive( + Clone, Debug, PartialEq, Default, Deserialize, Serialize, Eq, RlpEncodable, RlpDecodable, +)] pub struct ExecutionPayloadBaseV1 { /// Ecotone parent beacon block root pub parent_beacon_block_root: B256, @@ -66,17 +72,229 @@ pub struct ExecutionPayloadBaseV1 { pub base_fee_per_gas: U256, } -#[derive(Clone, Debug, PartialEq, Default, Deserialize, Serialize)] +#[derive(Clone, Debug, PartialEq, Default, Deserialize, Serialize, Eq)] pub struct FlashblocksPayloadV1 { /// The payload id of the flashblock pub payload_id: PayloadId, /// The index of the flashblock in the block pub index: u64, - /// The base execution payload configuration - #[serde(skip_serializing_if = "Option::is_none")] - pub base: Option, /// The delta/diff containing modified portions of the execution payload pub diff: ExecutionPayloadFlashblockDeltaV1, /// Additional metadata associated with the flashblock pub metadata: Value, + /// The base execution payload configuration + #[serde(skip_serializing_if = "Option::is_none")] + pub base: Option, +} + +/// Manual RLP implementation because `PayloadId` and `serde_json::Value` are +/// outside of alloy-rlp’s blanket impls. +impl Encodable for FlashblocksPayloadV1 { + fn encode(&self, out: &mut dyn alloy_rlp::BufMut) { + // ---- compute payload length ------------------------------------------------- + let json_bytes = Bytes::from( + serde_json::to_vec(&self.metadata).expect("serialising `metadata` to JSON never fails"), + ); + + // encoded-len helper — empty string is one byte (`0x80`) + let empty_len = 1usize; + + let base_len = self.base.as_ref().map(|b| b.length()).unwrap_or(empty_len); + + let payload_len = self.payload_id.0.length() + + self.index.length() + + self.diff.length() + + json_bytes.length() + + base_len; + + Header { + list: true, + payload_length: payload_len, + } + .encode(out); + + // 1. `payload_id` – the inner `B64` already impls `Encodable` + self.payload_id.0.encode(out); + + // 2. `index` + self.index.encode(out); + + // 3. `diff` + self.diff.encode(out); + + // 4. `metadata` (as raw JSON bytes) + json_bytes.encode(out); + + // 5. `base` (`Option` as “value | empty string”) + if let Some(base) = &self.base { + base.encode(out); + } else { + // RLP encoding for empty value + out.put_u8(0x80); + } + } + + fn length(&self) -> usize { + let json_bytes = Bytes::from( + serde_json::to_vec(&self.metadata).expect("serialising `metadata` to JSON never fails"), + ); + + let empty_len = 1usize; + + let base_len = self.base.as_ref().map(|b| b.length()).unwrap_or(empty_len); + + // list header length + payload length + let payload_length = self.payload_id.0.length() + + self.index.length() + + self.diff.length() + + json_bytes.length() + + base_len; + + Header { + list: true, + payload_length, + } + .length() + + payload_length + } +} + +impl Decodable for FlashblocksPayloadV1 { + fn decode(buf: &mut &[u8]) -> Result { + let header = Header::decode(buf)?; + if !header.list { + return Err(alloy_rlp::Error::UnexpectedString); + } + + // Limit the decoding window to the list payload only. + let mut body = &buf[..header.payload_length]; + + let payload_id = B64::decode(&mut body)?.into(); + let index = u64::decode(&mut body)?; + let diff = ExecutionPayloadFlashblockDeltaV1::decode(&mut body)?; + + // metadata – stored as raw JSON bytes + let meta_bytes = Bytes::decode(&mut body)?; + let metadata: Value = serde_json::from_slice(&meta_bytes) + .map_err(|_| alloy_rlp::Error::Custom("bad JSON"))?; + + // base (`Option`) + let base = if body.first() == Some(&0x80) { + None + } else { + Some(ExecutionPayloadBaseV1::decode(&mut body)?) + }; + + // advance the original buffer cursor + *buf = &buf[header.payload_length..]; + + Ok(Self { + payload_id, + index, + diff, + metadata, + base, + }) + } +} + +#[cfg(test)] +mod tests { + use super::*; + use alloy_rlp::{Decodable, encode}; + + fn sample_diff() -> ExecutionPayloadFlashblockDeltaV1 { + ExecutionPayloadFlashblockDeltaV1 { + state_root: B256::from([1u8; 32]), + receipts_root: B256::from([2u8; 32]), + logs_bloom: Bloom::default(), + gas_used: 21_000, + block_hash: B256::from([3u8; 32]), + transactions: vec![Bytes::from(vec![0xde, 0xad, 0xbe, 0xef])], + withdrawals: vec![Withdrawal::default()], + withdrawals_root: B256::from([4u8; 32]), + blob_gas_used: None, + } + } + + fn sample_base() -> ExecutionPayloadBaseV1 { + ExecutionPayloadBaseV1 { + parent_beacon_block_root: B256::from([5u8; 32]), + parent_hash: B256::from([6u8; 32]), + fee_recipient: Address::from([0u8; 20]), + prev_randao: B256::from([7u8; 32]), + block_number: 123, + gas_limit: 30_000_000, + timestamp: 1_700_000_000, + extra_data: Bytes::from(b"hello".to_vec()), + base_fee_per_gas: U256::from(1_000_000_000u64), + } + } + + #[test] + fn roundtrip_without_base() { + let original = FlashblocksPayloadV1 { + payload_id: PayloadId::default(), + index: 0, + diff: sample_diff(), + metadata: serde_json::json!({ "key": "value" }), + base: None, + }; + + let encoded = encode(&original); + assert_eq!( + encoded.len(), + original.length(), + "length() must match actually-encoded size" + ); + + let mut slice = encoded.as_ref(); + let decoded = FlashblocksPayloadV1::decode(&mut slice).expect("decode succeeds"); + assert_eq!(original, decoded, "round-trip must be loss-less"); + assert!( + slice.is_empty(), + "decoder should consume the entire input buffer" + ); + } + + #[test] + fn roundtrip_with_base() { + let original = FlashblocksPayloadV1 { + payload_id: PayloadId::default(), + index: 42, + diff: sample_diff(), + metadata: serde_json::json!({ "foo": 1, "bar": [1, 2, 3] }), + base: Some(sample_base()), + }; + + let encoded = encode(&original); + assert_eq!(encoded.len(), original.length()); + + let mut slice = encoded.as_ref(); + let decoded = FlashblocksPayloadV1::decode(&mut slice).expect("decode succeeds"); + assert_eq!(original, decoded); + assert!(slice.is_empty()); + } + + #[test] + fn invalid_rlp_is_rejected() { + let valid = FlashblocksPayloadV1 { + payload_id: PayloadId::default(), + index: 1, + diff: sample_diff(), + metadata: serde_json::json!({}), + base: None, + }; + + // Encode, then truncate the last byte to corrupt the payload. + let mut corrupted = encode(&valid); + corrupted.pop(); + + let mut slice = corrupted.as_ref(); + let result = FlashblocksPayloadV1::decode(&mut slice); + assert!( + result.is_err(), + "decoder must flag malformed / truncated input" + ); + } } diff --git a/crates/rollup-boost-types/src/lib.rs b/crates/rollup-boost-types/src/lib.rs index 3e2fe256..d6fb6daf 100644 --- a/crates/rollup-boost-types/src/lib.rs +++ b/crates/rollup-boost-types/src/lib.rs @@ -1,2 +1,7 @@ +pub mod authorization; pub mod flashblocks; pub mod payload; + +pub mod ed25519_dalek { + pub use ed25519_dalek::*; +} diff --git a/crates/rollup-boost/Cargo.toml b/crates/rollup-boost/Cargo.toml index 05f91d44..be2dfd5c 100644 --- a/crates/rollup-boost/Cargo.toml +++ b/crates/rollup-boost/Cargo.toml @@ -19,12 +19,20 @@ eyre.workspace = true url.workspace = true sha2.workspace = true moka = { workspace = true, features = ["future"] } +ed25519-dalek.workspace = true +blake3.workspace = true +hex.workspace = true + +# Reth deps +reth-optimism-payload-builder.workspace = true +reth-rpc-layer.workspace = true op-alloy-rpc-types-engine.workspace = true alloy-rpc-types-engine.workspace = true alloy-rpc-types-eth.workspace = true alloy-primitives.workspace = true alloy-serde.workspace = true +alloy-rlp.workspace = true tokio-tungstenite.workspace = true metrics-derive.workspace = true @@ -64,6 +72,7 @@ bytes = "1.10.1" lru = "0.16" [dev-dependencies] +tempfile = "3.23.0" serial_test = "3" rand = "0.9.0" time = { version = "0.3.36", features = ["macros", "formatting", "parsing"] } @@ -74,8 +83,6 @@ anyhow = "1.0" assert_cmd = "2.0.10" predicates = "3.1.2" tokio-util = { version = "0.7.13" } -bytes = "1.2" -reth-rpc-layer = { git = "https://github.com/paradigmxyz/reth.git", tag = "v1.4.7" } ctor = "0.4.1" reqwest = "0.12.15" testcontainers.workspace = true diff --git a/crates/rollup-boost/src/cli.rs b/crates/rollup-boost/src/cli.rs index f0f50ccf..82a0d857 100644 --- a/crates/rollup-boost/src/cli.rs +++ b/crates/rollup-boost/src/cli.rs @@ -5,13 +5,13 @@ use tokio::signal::unix::{SignalKind, signal as unix_signal}; use tracing::{Level, info}; use crate::{ - BlockSelectionPolicy, ClientArgs, DebugServer, FlashblocksArgs, ProxyLayer, RollupBoostServer, + BlockSelectionPolicy, ClientArgs, DebugServer, FlashblocksP2PArgs, FlashblocksWsArgs, + ProxyLayer, RollupBoostServer, client::rpc::{BuilderArgs, L2ClientArgs}, debug_api::ExecutionMode, get_version, init_metrics, probe::ProbeLayer, }; -use crate::{FlashblocksService, RpcClient}; use rollup_boost_types::payload::PayloadSource; #[derive(Clone, Debug, clap::Args)] @@ -39,7 +39,10 @@ pub struct RollupBoostLibArgs { pub ignore_unhealthy_builders: bool, #[clap(flatten)] - pub flashblocks: FlashblocksArgs, + pub flashblocks_ws: Option, + + #[clap(flatten)] + pub flashblocks_p2p: Option, /// Duration in seconds between async health checks on the builder #[arg(long, env, default_value = "60")] @@ -119,27 +122,12 @@ impl RollupBoostServiceArgs { let (probe_layer, probes) = ProbeLayer::new(); - let (health_handle, rpc_module) = if self.lib.flashblocks.flashblocks { - let rollup_boost = RollupBoostServer::::new_from_args( - self.lib.clone(), - probes.clone(), - )?; - let health_handle = rollup_boost - .spawn_health_check(self.lib.health_check_interval, self.lib.max_unsafe_interval); - let debug_server = DebugServer::new(rollup_boost.execution_mode.clone()); - debug_server.run(&debug_addr).await?; - let rpc_module: RpcModule<()> = rollup_boost.try_into()?; - (health_handle, rpc_module) - } else { - let rollup_boost = - RollupBoostServer::::new_from_args(self.lib.clone(), probes.clone())?; - let health_handle = rollup_boost - .spawn_health_check(self.lib.health_check_interval, self.lib.max_unsafe_interval); - let debug_server = DebugServer::new(rollup_boost.execution_mode.clone()); - debug_server.run(&debug_addr).await?; - let rpc_module: RpcModule<()> = rollup_boost.try_into()?; - (health_handle, rpc_module) - }; + let rollup_boost = RollupBoostServer::new_from_args(self.lib.clone(), probes.clone())?; + let health_handle = rollup_boost + .spawn_health_check(self.lib.health_check_interval, self.lib.max_unsafe_interval); + let debug_server = DebugServer::new(rollup_boost.execution_mode.clone()); + debug_server.run(&debug_addr).await?; + let rpc_module: RpcModule<()> = rollup_boost.try_into()?; // Build and start the server info!("Starting server on :{}", self.rpc_port); @@ -209,3 +197,268 @@ impl std::str::FromStr for LogFormat { } } } + +#[cfg(test)] +pub mod tests { + use std::result::Result; + + use super::*; + + const SECRET: &str = "f79ae8046bc11c9927afe911db7143c51a806c4a537cc08e0d37140b0192f430"; + const FLASHBLOCKS_SK: &str = "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"; + const FLASHBLOCKS_VK: &str = "fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210"; + + #[test] + fn test_parse_args_minimal() -> Result<(), Box> { + let args = RollupBoostServiceArgs::try_parse_from(["rollup-boost"])?; + + assert!(!args.tracing); + assert!(!args.metrics); + assert_eq!(args.rpc_host, "127.0.0.1"); + assert_eq!(args.rpc_port, 8081); + assert!(args.lib.flashblocks_ws.is_none()); + assert!(args.lib.flashblocks_p2p.is_none()); + + Ok(()) + } + + #[test] + fn test_parse_args_missing_flashblocks_flag() -> Result<(), Box> { + let args = RollupBoostServiceArgs::try_parse_from([ + "rollup-boost", + "--builder-jwt-token", + SECRET, + "--l2-jwt-token", + SECRET, + "--flashblocks-authorizer-sk", + FLASHBLOCKS_SK, + "--flashblocks-builder-vk", + FLASHBLOCKS_VK, + ]); + + assert!( + args.is_err(), + "flashblocks args should be invalid without --flashblocks-p2p flag" + ); + + Ok(()) + } + + #[test] + fn test_parse_args_with_flashblocks_flag() -> Result<(), Box> { + let args = RollupBoostServiceArgs::try_parse_from([ + "rollup-boost", + "--builder-jwt-token", + SECRET, + "--l2-jwt-token", + SECRET, + "--flashblocks-p2p", + "--flashblocks-authorizer-sk", + FLASHBLOCKS_SK, + "--flashblocks-builder-vk", + FLASHBLOCKS_VK, + ])?; + + let flashblocks = args + .lib + .flashblocks_p2p + .expect("flashblocks should be Some when flag is passed"); + assert!(flashblocks.flashblocks_p2p); + + Ok(()) + } + + #[test] + fn test_parse_args_with_flashblocks_custom_values() -> Result<(), Box> { + let args = RollupBoostServiceArgs::try_parse_from([ + "rollup-boost", + "--builder-jwt-token", + SECRET, + "--l2-jwt-token", + SECRET, + "--flashblocks-p2p", + "--flashblocks-authorizer-sk", + FLASHBLOCKS_SK, + "--flashblocks-builder-vk", + FLASHBLOCKS_VK, + ])?; + + let flashblocks = args + .lib + .flashblocks_p2p + .expect("flashblocks should be Some when flag is passed"); + assert!(flashblocks.flashblocks_p2p); + + Ok(()) + } + + #[test] + fn test_parse_args_with_all_options() -> Result<(), Box> { + let args = RollupBoostServiceArgs::try_parse_from([ + "rollup-boost", + "--builder-jwt-token", + SECRET, + "--l2-jwt-token", + SECRET, + "--health-check-interval", + "120", + "--max-unsafe-interval", + "20", + "--rpc-host", + "0.0.0.0", + "--rpc-port", + "9090", + "--tracing", + "--metrics", + "--metrics-host", + "192.168.1.1", + "--metrics-port", + "8080", + "--log-level", + "debug", + "--log-format", + "json", + "--debug-host", + "localhost", + "--debug-server-port", + "6666", + "--execution-mode", + "disabled", + "--flashblocks-p2p", + "--flashblocks-authorizer-sk", + FLASHBLOCKS_SK, + "--flashblocks-builder-vk", + FLASHBLOCKS_VK, + ])?; + + assert_eq!(args.lib.health_check_interval, 120); + assert_eq!(args.lib.max_unsafe_interval, 20); + assert_eq!(args.rpc_host, "0.0.0.0"); + assert_eq!(args.rpc_port, 9090); + assert!(args.tracing); + assert!(args.metrics); + assert_eq!(args.metrics_host, "192.168.1.1"); + assert_eq!(args.metrics_port, 8080); + assert_eq!(args.log_level, Level::DEBUG); + assert_eq!(args.debug_host, "localhost"); + assert_eq!(args.debug_server_port, 6666); + + let flashblocks = args + .lib + .flashblocks_p2p + .expect("flashblocks should be Some when flag is passed"); + assert!(flashblocks.flashblocks_p2p); + + Ok(()) + } + + #[test] + fn test_parse_args_missing_jwt_succeeds_at_parse_time() { + // JWT validation happens at runtime, not parse time, so this should succeed + let result = + RollupBoostServiceArgs::try_parse_from(["rollup-boost", "--builder-jwt-token", SECRET]); + + assert!(result.is_ok()); + let args = result.unwrap(); + assert!(args.lib.builder.builder_jwt_token.is_some()); + assert!(args.lib.l2_client.l2_jwt_token.is_none()); + } + + #[test] + fn test_parse_args_invalid_flashblocks_sk() { + let result = RollupBoostServiceArgs::try_parse_from([ + "rollup-boost", + "--builder-jwt-token", + SECRET, + "--l2-jwt-token", + SECRET, + "--flashblocks-p2p", + "--flashblocks-authorizer-sk", + "invalid_hex", + "--flashblocks-builder-vk", + FLASHBLOCKS_VK, + ]); + + assert!(result.is_err()); + } + + #[test] + fn test_parse_args_invalid_flashblocks_vk() { + let result = RollupBoostServiceArgs::try_parse_from([ + "rollup-boost", + "--builder-jwt-token", + SECRET, + "--l2-jwt-token", + SECRET, + "--flashblocks-p2p", + "--flashblocks-authorizer-sk", + FLASHBLOCKS_SK, + "--flashblocks-builder-vk", + "invalid_hex", + ]); + + assert!(result.is_err()); + } + + #[test] + fn test_log_format_parsing() -> Result<(), Box> { + let json_args = RollupBoostServiceArgs::try_parse_from([ + "rollup-boost", + "--builder-jwt-token", + SECRET, + "--l2-jwt-token", + SECRET, + "--log-format", + "json", + ])?; + + match json_args.log_format { + LogFormat::Json => {} + LogFormat::Text => panic!("Expected Json format"), + } + + let text_args = RollupBoostServiceArgs::try_parse_from([ + "rollup-boost", + "--builder-jwt-token", + SECRET, + "--l2-jwt-token", + SECRET, + "--log-format", + "text", + ])?; + + match text_args.log_format { + LogFormat::Text => {} + LogFormat::Json => panic!("Expected Text format"), + } + + Ok(()) + } + + #[test] + fn test_parse_args_with_jwt_paths() -> Result<(), Box> { + use std::io::Write; + use tempfile::NamedTempFile; + + let mut builder_jwt_file = NamedTempFile::new()?; + writeln!(builder_jwt_file, "{}", SECRET)?; + let builder_jwt_path = builder_jwt_file.path(); + + let mut l2_jwt_file = NamedTempFile::new()?; + writeln!(l2_jwt_file, "{}", SECRET)?; + let l2_jwt_path = l2_jwt_file.path(); + + let args = RollupBoostServiceArgs::try_parse_from([ + "rollup-boost", + "--builder-jwt-path", + builder_jwt_path.to_str().unwrap(), + "--l2-jwt-path", + l2_jwt_path.to_str().unwrap(), + ])?; + + assert!(args.lib.builder.builder_jwt_path.is_some()); + assert!(args.lib.l2_client.l2_jwt_path.is_some()); + + Ok(()) + } +} diff --git a/crates/rollup-boost/src/client/rpc.rs b/crates/rollup-boost/src/client/rpc.rs index a5121ae0..d35fe3bc 100644 --- a/crates/rollup-boost/src/client/rpc.rs +++ b/crates/rollup-boost/src/client/rpc.rs @@ -1,8 +1,8 @@ -use crate::EngineApiExt; use crate::client::auth::AuthLayer; use crate::client::http::HttpClient as RollupBoostHttpClient; use crate::server::EngineApiClient; use crate::version::{CARGO_PKG_VERSION, VERGEN_GIT_SHA}; +use crate::{EngineApiExt, ExecutionMode, FlashblocksEngineApiClient as _}; use alloy_primitives::{B256, Bytes}; use alloy_rpc_types_engine::{ ExecutionPayloadV3, ForkchoiceState, ForkchoiceUpdated, JwtError, JwtSecret, PayloadId, @@ -10,6 +10,7 @@ use alloy_rpc_types_engine::{ }; use alloy_rpc_types_eth::{Block, BlockNumberOrTag}; use clap::Parser; +use ed25519_dalek::{SigningKey, VerifyingKey}; use eyre::bail; use http::{HeaderMap, Uri}; use jsonrpsee::core::async_trait; @@ -22,11 +23,15 @@ use op_alloy_rpc_types_engine::{ OpPayloadAttributes, }; use opentelemetry::trace::SpanKind; +use parking_lot::Mutex; use paste::paste; +use reth_optimism_payload_builder::payload_id_optimism; +use rollup_boost_types::authorization::Authorization; use rollup_boost_types::payload::{ NewPayload, OpExecutionPayloadEnvelope, PayloadSource, PayloadVersion, }; use std::path::PathBuf; +use std::sync::Arc; use std::time::Duration; use thiserror::Error; use tracing::{info, instrument}; @@ -101,6 +106,14 @@ impl From for ErrorObjectOwned { } } +#[derive(Clone, Debug)] +pub struct FlashblocksP2PKeys { + /// Flashblocks Authorization Secret + pub authorization_sk: SigningKey, + /// Flashblocks builder vk + pub builder_vk: VerifyingKey, +} + /// Client interface for interacting with execution layer node's Engine API. /// /// - **Engine API** calls are faciliated via the `auth_client` (requires JWT authentication). @@ -115,6 +128,23 @@ pub struct RpcClient { payload_source: PayloadSource, } +/// Client interface for interacting with execution layer node's Engine API. +/// +/// fork_choice_updated_v3 with attributes is converted into +/// a flashblocks_fork_choice_updated_v3 and an Authorization token is generated +/// +/// - **Engine API** calls are faciliated via the `auth_client` (requires JWT authentication). +/// +#[derive(Clone, Debug)] +pub struct FlasblocksP2PRpcClient { + /// Inner RPC client + pub inner: RpcClient, + /// Flashblocks keys + pub flashblocks_p2p_keys: FlashblocksP2PKeys, + /// Execution mode of rollup boost + pub execution_mode: Arc>, +} + impl RpcClient { /// Initializes a new [ExecutionClient] with JWT auth for the Engine API and without auth for general execution layer APIs. pub fn new( @@ -149,6 +179,7 @@ impl RpcClient { target = self.payload_source.to_string(), head_block_hash = %fork_choice_state.head_block_hash, url = %self.auth_rpc, + payload_attributes = payload_attributes.is_some(), code, payload_id ) @@ -159,6 +190,7 @@ impl RpcClient { payload_attributes: Option, ) -> ClientResult { info!("Sending fork_choice_updated_v3 to {}", self.payload_source); + let res = self .auth_client .fork_choice_updated_v3(fork_choice_state, payload_attributes.clone()) @@ -380,6 +412,113 @@ impl EngineApiExt for RpcClient { } } +impl FlasblocksP2PRpcClient { + #[instrument( + skip_all, + err, + fields( + otel.kind = ?SpanKind::Client, + target = self.inner.payload_source.to_string(), + head_block_hash = %fork_choice_state.head_block_hash, + url = %self.inner.auth_rpc, + code, + payload_id + ) + )] + pub async fn flashblocks_fork_choice_updated_v3( + &self, + fork_choice_state: ForkchoiceState, + payload_attributes: OpPayloadAttributes, + ) -> ClientResult { + info!( + "Sending flashblocks_fork_choice_updated_v3 to {}", + self.inner.payload_source + ); + + let payload_id = + payload_id_optimism(&fork_choice_state.head_block_hash, &payload_attributes, 3); + let authorization = Authorization::new( + payload_id, + payload_attributes.payload_attributes.timestamp, + &self.flashblocks_p2p_keys.authorization_sk, + self.flashblocks_p2p_keys.builder_vk.clone(), + ); + + let res = self + .inner + .auth_client + .flashblocks_fork_choice_updated_v3( + fork_choice_state, + Some(payload_attributes), + Some(authorization), + ) + .await + .set_code()?; + + if let Some(payload_id) = res.payload_id { + tracing::Span::current().record("payload_id", payload_id.to_string()); + } + + if res.is_invalid() { + return Err(RpcClientError::InvalidPayload( + res.payload_status.status.to_string(), + )) + .set_code(); + } + info!( + "Successfully sent flashblocks_fork_choice_updated_v3 to {}", + self.inner.payload_source + ); + + Ok(res) + } +} + +#[async_trait] +impl EngineApiExt for FlasblocksP2PRpcClient { + async fn fork_choice_updated_v3( + &self, + fork_choice_state: ForkchoiceState, + payload_attributes: Option, + ) -> ClientResult { + let execution_mode = *self.execution_mode.lock(); + match (payload_attributes, execution_mode) { + // If we have payload attributes and execution mode is enabled, generate authorization + // We don't want to the builder to publish flashblocks if rollup boost is not going to + // honour the block. + (Some(attrs), ExecutionMode::Enabled) => Ok(self + .flashblocks_fork_choice_updated_v3(fork_choice_state, attrs) + .await + .set_code()?), + (attrs, _) => Ok(self + .inner + .fork_choice_updated_v3(fork_choice_state, attrs) + .await + .set_code()?), + } + } + + async fn new_payload(&self, new_payload: NewPayload) -> ClientResult { + self.inner.new_payload(new_payload).await + } + + async fn get_payload( + &self, + payload_id: PayloadId, + version: PayloadVersion, + ) -> ClientResult { + self.inner.get_payload(payload_id, version).await + } + + async fn get_block_by_number( + &self, + number: BlockNumberOrTag, + full: bool, + ) -> ClientResult { + self.inner.get_block_by_number(number, full).await + } +} + #[derive(Debug, Clone)] pub struct ClientArgs { /// Auth server address @@ -473,7 +612,6 @@ define_client_args!((BuilderArgs, builder), (L2ClientArgs, l2)); #[cfg(test)] pub mod tests { - use assert_cmd::Command; use http::Uri; use jsonrpsee::core::client::ClientT; use parking_lot::Mutex; @@ -482,7 +620,6 @@ pub mod tests { use jsonrpsee::core::client::Error as ClientError; use jsonrpsee::server::{ServerBuilder, ServerHandle}; use jsonrpsee::{RpcModule, rpc_params}; - use predicates::prelude::*; use rollup_boost_types::payload::PayloadSource; use std::collections::HashSet; use std::net::SocketAddr; @@ -507,16 +644,6 @@ pub mod tests { } } - #[test] - fn test_invalid_args() { - let mut cmd = Command::cargo_bin("rollup-boost").unwrap(); - cmd.arg("--invalid-arg"); - - cmd.assert().failure().stderr(predicate::str::contains( - "error: unexpected argument '--invalid-arg' found", - )); - } - #[tokio::test] async fn valid_jwt() { let port = get_available_port(); diff --git a/crates/rollup-boost/src/engine_api.rs b/crates/rollup-boost/src/engine_api.rs index 4b05552e..5023cea7 100644 --- a/crates/rollup-boost/src/engine_api.rs +++ b/crates/rollup-boost/src/engine_api.rs @@ -7,7 +7,7 @@ use crate::ClientResult; use rollup_boost_types::payload::{NewPayload, OpExecutionPayloadEnvelope, PayloadVersion}; #[async_trait] -pub trait EngineApiExt: Send + Sync + 'static { +pub trait EngineApiExt: std::fmt::Debug + Send + Sync + 'static { async fn fork_choice_updated_v3( &self, fork_choice_state: ForkchoiceState, diff --git a/crates/rollup-boost/src/flashblocks/args.rs b/crates/rollup-boost/src/flashblocks/args.rs index a9773261..8b535599 100644 --- a/crates/rollup-boost/src/flashblocks/args.rs +++ b/crates/rollup-boost/src/flashblocks/args.rs @@ -1,13 +1,24 @@ use backoff::{ExponentialBackoff, ExponentialBackoffBuilder}; -use clap::Parser; +use clap::{Args, Parser}; +use ed25519_dalek::{SigningKey, VerifyingKey}; use std::time::Duration; use url::Url; -#[derive(Parser, Clone, Debug)] -pub struct FlashblocksArgs { - /// Enable Flashblocks client - #[arg(long, env, default_value = "false")] - pub flashblocks: bool, +use hex::FromHex; + +#[derive(Args, Clone, Debug)] +#[group(requires = "flashblocks_ws")] +pub struct FlashblocksWsArgs { + /// Enable Flashblocks Websocket client + #[arg( + // Keep the flag as "flashblocks" for backward compatibility + long = "flashblocks", + id = "flashblocks_ws", + conflicts_with = "flashblocks_p2p", + env, + default_value = "false" + )] + pub flashblocks_ws: bool, /// Flashblocks Builder WebSocket URL #[arg(long, env, default_value = "ws://127.0.0.1:1111")] @@ -81,3 +92,43 @@ impl FlashblocksWebsocketConfig { Duration::from_millis(self.flashblock_builder_ws_pong_timeout_ms) } } + +#[derive(Args, Clone, Debug)] +#[group(requires = "flashblocks_p2p")] +pub struct FlashblocksP2PArgs { + /// Enable Flashblocks P2P Authorization + #[arg( + long, + id = "flashblocks_p2p", + conflicts_with = "flashblocks_ws", + env, + required = false + )] + pub flashblocks_p2p: bool, + + #[arg( + long = "flashblocks-authorizer-sk", + env = "FLASHBLOCKS_AUTHORIZER_SK", + value_parser = parse_sk, + required = false, + )] + pub authorizer_sk: SigningKey, + + #[arg( + long = "flashblocks-builder-vk", + env = "FLASHBLOCKS_BUILDER_VK", + value_parser = parse_vk, + required = false, + )] + pub builder_vk: VerifyingKey, +} + +pub fn parse_sk(s: &str) -> eyre::Result { + let bytes = <[u8; 32]>::from_hex(s.trim())?; + Ok(SigningKey::from_bytes(&bytes)) +} + +pub fn parse_vk(s: &str) -> eyre::Result { + let bytes = <[u8; 32]>::from_hex(s.trim())?; + Ok(VerifyingKey::from_bytes(&bytes)?) +} diff --git a/crates/rollup-boost/src/flashblocks/service.rs b/crates/rollup-boost/src/flashblocks/service.rs index 1756b503..b4505b0d 100644 --- a/crates/rollup-boost/src/flashblocks/service.rs +++ b/crates/rollup-boost/src/flashblocks/service.rs @@ -37,6 +37,8 @@ pub enum FlashblocksError { InvalidIndex, #[error("Missing payload")] MissingPayload, + #[error("invalid authorizer signature")] + InvalidAuthorizerSig, } // Simplify actor messages to just handle shutdown diff --git a/crates/rollup-boost/src/server.rs b/crates/rollup-boost/src/server.rs index 8bd583ee..a75fbb0e 100644 --- a/crates/rollup-boost/src/server.rs +++ b/crates/rollup-boost/src/server.rs @@ -1,7 +1,7 @@ use crate::debug_api::ExecutionMode; use crate::{ - BlockSelectionPolicy, ClientArgs, EngineApiExt, Flashblocks, FlashblocksService, - RollupBoostLibArgs, update_execution_mode_gauge, + BlockSelectionPolicy, ClientArgs, EngineApiExt, FlasblocksP2PRpcClient, Flashblocks, + FlashblocksP2PKeys, RollupBoostLibArgs, update_execution_mode_gauge, }; use crate::{ client::rpc::RpcClient, @@ -32,6 +32,7 @@ use op_alloy_rpc_types_engine::{ }; use opentelemetry::trace::SpanKind; use parking_lot::Mutex; +use rollup_boost_types::authorization::Authorization; use rollup_boost_types::payload::{ NewPayload, NewPayloadV3, NewPayloadV4, OpExecutionPayloadEnvelope, PayloadSource, PayloadTraceContext, PayloadVersion, @@ -57,9 +58,9 @@ pub struct BuilderPayloadResult { pub type BuilderResult = Result>; #[derive(Clone, Debug)] -pub struct RollupBoostServer { +pub struct RollupBoostServer { pub l2_client: Arc, - pub builder_client: Arc, + pub builder_client: Arc, pub payload_trace_context: Arc, pub execution_mode: Arc>, block_selection_policy: Option, @@ -69,40 +70,49 @@ pub struct RollupBoostServer { payload_to_fcu_request: DashMap)>, } -impl RollupBoostServer { +impl RollupBoostServer { pub fn new_from_args( rollup_boost_args: RollupBoostLibArgs, probes: Arc, ) -> eyre::Result { - if !rollup_boost_args.flashblocks.flashblocks { - eyre::bail!( - "FlashblocksService requires flashblocks to be enabled, first check rollup_boost_args.flashblocks.flashblocks == true before calling this constructor" - ); - } let l2_client_args: ClientArgs = rollup_boost_args.l2_client.into(); let builder_client_args: ClientArgs = rollup_boost_args.builder.into(); let l2_client = l2_client_args.new_rpc_client(PayloadSource::L2)?; let builder_client = builder_client_args.new_rpc_client(PayloadSource::Builder)?; + let execution_mode = Arc::new(Mutex::new(rollup_boost_args.execution_mode.clone())); + + let builder_client: Arc = + if let Some(flashblocks_ws) = rollup_boost_args.flashblocks_ws { + let inbound_url = flashblocks_ws.flashblocks_builder_url; + let outbound_addr = SocketAddr::new( + IpAddr::from_str(&flashblocks_ws.flashblocks_host)?, + flashblocks_ws.flashblocks_port, + ); - let flashblocks_args = rollup_boost_args.flashblocks; - let inbound_url = flashblocks_args.flashblocks_builder_url; - let outbound_addr = SocketAddr::new( - IpAddr::from_str(&flashblocks_args.flashblocks_host)?, - flashblocks_args.flashblocks_port, - ); - - let builder_client = Arc::new(Flashblocks::run( - builder_client.clone(), - inbound_url, - outbound_addr, - flashblocks_args.flashblocks_ws_config, - )?); + Arc::new(Flashblocks::run( + builder_client.clone(), + inbound_url, + outbound_addr, + flashblocks_ws.flashblocks_ws_config, + )?) + } else if let Some(flashblocks_p2p) = rollup_boost_args.flashblocks_p2p.clone() { + Arc::new(FlasblocksP2PRpcClient { + inner: builder_client, + flashblocks_p2p_keys: FlashblocksP2PKeys { + authorization_sk: flashblocks_p2p.authorizer_sk.clone(), + builder_vk: flashblocks_p2p.builder_vk.clone(), + }, + execution_mode: execution_mode.clone(), + }) + } else { + Arc::new(builder_client) + }; Ok(RollupBoostServer::new( l2_client, builder_client, - rollup_boost_args.execution_mode, + execution_mode, rollup_boost_args.block_selection_policy, probes.clone(), rollup_boost_args.external_state_root, @@ -111,51 +121,23 @@ impl RollupBoostServer { } } -impl RollupBoostServer { - pub fn new_from_args( - rollup_boost_args: RollupBoostLibArgs, - probes: Arc, - ) -> eyre::Result { - if rollup_boost_args.flashblocks.flashblocks { - eyre::bail!( - "RpcClient requires flashblocks to be disabled, first check rollup_boost_args.flashblocks.flashblocks == false before calling this constructor" - ); - } - let l2_client_args: ClientArgs = rollup_boost_args.l2_client.into(); - let builder_client_args: ClientArgs = rollup_boost_args.builder.into(); - - let l2_client = l2_client_args.new_rpc_client(PayloadSource::L2)?; - let builder_client = builder_client_args.new_rpc_client(PayloadSource::Builder)?; - - Ok(RollupBoostServer::new( - l2_client, - Arc::new(builder_client), - rollup_boost_args.execution_mode, - rollup_boost_args.block_selection_policy, - probes.clone(), - rollup_boost_args.external_state_root, - rollup_boost_args.ignore_unhealthy_builders, - )) - } -} - -impl RollupBoostServer { +impl RollupBoostServer { pub fn new( l2_client: RpcClient, - builder_client: Arc, - initial_execution_mode: ExecutionMode, + builder_client: Arc, + execution_mode: Arc>, block_selection_policy: Option, probes: Arc, external_state_root: bool, ignore_unhealthy_builders: bool, ) -> Self { - update_execution_mode_gauge(initial_execution_mode); + update_execution_mode_gauge(*execution_mode.lock()); Self { l2_client: Arc::new(l2_client), builder_client, block_selection_policy, payload_trace_context: Arc::new(PayloadTraceContext::new()), - execution_mode: Arc::new(Mutex::new(initial_execution_mode)), + execution_mode, probes, external_state_root, ignore_unhealthy_builders, @@ -452,10 +434,7 @@ impl RollupBoostServer { } } -impl TryInto> for RollupBoostServer -where - T: EngineApiExt, -{ +impl TryInto> for RollupBoostServer { type Error = RegisterMethodError; fn try_into(self) -> Result, Self::Error> { @@ -470,6 +449,19 @@ where } } +#[rpc(client)] +pub trait FlashblocksEngineApi { + /// When flashblocks p2p is enabled + /// we add an additional parameter `authorization` to the FCU + #[method(name = "flashblocks_forkchoiceUpdatedV3")] + async fn flashblocks_fork_choice_updated_v3( + &self, + fork_choice_state: ForkchoiceState, + payload_attributes: Option, + authorization: Option, + ) -> RpcResult; +} + #[rpc(server, client)] pub trait EngineApi { #[method(name = "engine_forkchoiceUpdatedV3")] @@ -513,7 +505,7 @@ pub trait EngineApi { } #[async_trait] -impl EngineApiServer for RollupBoostServer { +impl EngineApiServer for RollupBoostServer { #[instrument( skip_all, err, @@ -898,7 +890,7 @@ pub mod tests { let rollup_boost = RollupBoostServer::new( l2_rpc_client, builder_rpc_client, - ExecutionMode::Enabled, + Arc::new(Mutex::new(ExecutionMode::Enabled)), None, probes.clone(), external_state_root, @@ -1242,7 +1234,7 @@ pub mod tests { .rpc_client .fork_choice_updated_v3(fcu, Some(payload_attributes.clone())) .await; - assert!(fcu_response.is_ok()); + fcu_response.unwrap(); // no tx pool is false so should return the builder payload let get_payload_response = test_harness.rpc_client.get_payload_v3(payload_id).await; diff --git a/specs/flashblocks_p2p.md b/specs/flashblocks_p2p.md new file mode 100644 index 00000000..83ea64fe --- /dev/null +++ b/specs/flashblocks_p2p.md @@ -0,0 +1,193 @@ +# Flashblocks P2P Extension + +*This document is an extension to the original Flashblocks specification, modifying the flashblock propagation mechanism to use a peer-to-peer (P2P) network instead of WebSockets. It highlights the new P2P protocol and the changes in Rollup-Boost and builder interactions, aimed at simplifying distribution and improving fault tolerance in High Availability (HA) sequencer setups.* + +**Table of Contents** + +* [Abstract](#abstract) +* [Motivation](#motivation) +* [Specification](#specification) + + * [Terminology](#terminology) + * [Data Structures](#data-structures) + + * [**`Authorization`**](#authorization) + * [**`Authorized Message`**](#authorized-message) + * [**`StartPublish`**](#startpublish) + * [**`StopPublish`**](#stoppublish) + * [Flashblocks P2P Protocol](#flashblocks-p2p-protocol) + + * [Protocol Overview](#protocol-overview) + * [Message Types](#message-types) + * [Authorization and Security](#authorization-and-security) + * [Multi-Builder Coordination](#multi-builder-coordination) + * [Rollup-Boost and Builder Communication](#rollup-boost-and-builder-communication) + +# Abstract + +This document introduces an enhancement to Flashblocks where the propagation of partial blocks (“flashblocks”) is done over an Ethereum P2P subprotocol instead of a WebSocket broadcast. By integrating flashblock distribution into the peer-to-peer network, we eliminate the need for a dedicated WebSocket proxy and enable more robust, decentralized propagation of flashblock data. Crucially, this P2P approach uses cryptographic authorization to ensure that only an **authorized** block builder (and its designated successors in an HA setup) can publish flashblocks, improving fault tolerance during sequencer failovers. The end result is a simpler and more resilient system for delivering rapid preconfirmation data to users, without altering the core OP Stack protocol. + +# Motivation + +The original Flashblocks design relied on a centralized broadcast (via Rollup-Boost and a WebSocket proxy) to propagate flashblocks to RPC providers. While effective, that design introduced operational complexity and potential single points of failure: + +* **Operational Complexity:** Sequencer operators had to manage a WebSocket broadcasting service (e.g. Rollup-Boost’s WebSocket proxy) to fan-out flashblocks to providers. In multi-sequencer (HA) configurations, handing off this connection or migrating subscribers was cumbersome. +* **Failover Challenges:** In a High Availability sequencer setup, if the active sequencer failed the act of switching to a new sequencer/rollup-boost/builder combo would mean that already published flashblocks would not make it in the new block produced by the new builder. This breaks the promise that flashblocks makes to its consumers. +* **Scalability and Decentralization:** Relying on a single hub (the sequencer’s Rollup-Boost) to redistribute flashblocks could become a bottleneck. A P2P approach can naturally scale out to many peers and align with Ethereum’s existing propagation model for blocks and transactions. + +**P2P Propagation** addresses these issues by leveraging a gossip network for flashblocks. In this model, any number of RPC provider nodes (or other interested parties) can connect to the flashblock P2P network to receive preconfirmation updates. Failover is handled gracefully through the RLPx protocol: if a new sequencer takes over, its builder is already aware of previously published flashblocks, and so it can build on top of what has already been promised to the network. + +# Specification + +## Terminology + +We inherit all terminology from the original Flashblocks spec (Sequencer, Block Builder, Rollup-Boost, etc.), with a few new terms introduced: + +* **Authorizer** – The entity that vouches for a block builder’s legitimacy to produce flashblocks. In practice, this is rollup-boost who signs an authorization for a given builder each block cycle. +* **Builder Public Key** – A cryptographic public key identifying a builder on the flashblocks P2P network. This is distinct from an Ethereum address; it’s used for signing/validating flashblock messages. +* **Flashblocks P2P Network** – The peer-to-peer overlay network (using Ethereum’s devp2p protocols) through which flashblock messages are gossiped. Participants include all builders and one or more subscribing nodes (e.g. RPC providers, possibly other sequencer nodes in standby). +* **Publisher** – The current active builder that is publishing flashblocks for the ongoing L2 block. In an HA setup, the role of publisher can transfer to a new builder if the sequencer fails over. + +## Data Structures + +The fundamental flashblock data structures (`FlashblocksPayloadV1`, `ExecutionPayloadFlashblockResultV1`, `ExecutionPayloadStaticV1`, and the various Metadata containers) remain unchanged. Flashblocks are still represented as a sequence of incremental payloads culminating in a full block. + +To support P2P propagation and authorization, we introduce several new structures: + +### **`Authorization`** + +Represents a sequencer’s cryptographic authorization for a specific builder to produce a block with a given payload context. This is essentially a signed token from the sequencer (authorizer) that the builder includes with its flashblocks. + +```rust +pub struct Authorization { + pub payload_id: PayloadId, + pub timestamp: u64, + pub builder_vk: VerifyingKey, + pub authorizer_sig: Signature, +} +``` + +* `payload_id`: The unique ID for this block’s payload (as provided by `engine_forkchoiceUpdated` in the OP Stack Engine API). All flashblocks for the block share this ID. +* `timestamp`: The timestamp associated with this payload +* `builder_vk`: The verifying key identifying the builder authorized to publish this block’s flashblocks. Peers will use this to verify the builder’s signatures on messages. +* `authorizer_sig`: A signature produced by the sequencer (authorizer) over the concatenation of `payload_id`, `timestamp`, and `builder_vk`. This proves that the sequencer has approved the given builder (and key) to act for this block. Only one authorizer key (controlled by the rollup-boost operator) is recognized by the network, and all peers are configured with its public key for verification. + +### **`Authorized Message`** + +Container for any flashblocks P2P message that requires authorization. It bundles a payload (one of the message types defined below) with the authorization and a builder’s signature. + +```rust +pub struct Authorized { + pub msg: AuthorizedMsg, + pub authorization: Authorization, + pub actor_sig: Signature, +} +``` + +```rust +pub enum AuthorizedMsg { + FlashblocksPayloadV1(FlashblocksPayloadV1) = 0x00, + StartPublish(StartPublish) = 0x01, + StopPublish(StopPublish) = 0x02, +} +``` + +* `authorization`: The Authorization object, as described above. +* `msg`: The message content. This is a tagged union that can be one of: + + * A **Flashblock Payload** – Contains a `FlashblocksPayloadV1` (partial block delta), see below. + * A **StartPublish** signal – Indicates the builder is starting to publish a new block (detailed in [StartPublish](#startpublish)). + * A **StopPublish** signal – Indicates the builder is stopping publication (detailed in [StopPublish](#stoppublish)). + +* `actor_sig`: The builder’s signature over the combination of the `msg` and the `authorization`. This attests that the message indeed comes from the holder of the `builder_sk` in the Authorization, and that it hasn’t been tampered with in transit. + +Every P2P message in the Flashblocks protocol is sent as an `AuthorizedMessage`. This double-signature scheme (authorizer + builder) provides two layers of security: + +1. Only a builder with a valid Authorization (signed by the sequencer) can get its messages accepted by peers. +2. Only the genuine builder (holding the private key corresponding to `builder_sk`) can produce a valid `builder_signature` on the message content. + +### **`StartPublish`** + +A small message indicating the intention to begin publishing flashblocks for a new L2 block. + +```rust +pub struct StartPublish; +``` + +The `StartPublish` message is always sent wrapped in an `AuthorizedMessage` (with the appropriate authorization and signatures). It serves as an announcement to the network that *“Builder X is about to start publishing”* + +### **`StopPublish`** + +An authorized message indicating that the builder will no longer publish any flashblocks + +```rust +pub struct StopPublish; +``` + +**Note:** A builder will typically send a `StopPublish` when it receives a `ForkChoiceUpdated` without an accompanying `Authorization` from rollup-boost or upon handing off flashblock production to a new builder. + +## Flashblocks P2P Protocol + +### Protocol Overview + +Flashblocks P2P communication is implemented as a custom Ethereum subprotocol. Specifically, it defines a new devp2p capability: + +* **Protocol Name:** `flblk` (flashblocks) +* **Version:** `1` + +Nodes that support flashblocks will advertise this capability when establishing devp2p connections. Once connected, they can exchange flashblock messages as defined in this spec. + +All flashblock messages are encoded in a compact binary format (analogous to Ethereum block gossip). Each message begins with a one-byte type discriminator, followed by the serialized content. The primary message type is an `AuthorizedMessage` (discriminator `0x00`), which, as described, contains a nested payload type. + +**Key design features of the P2P protocol:** + +* **Multipeer Gossip:** A builder’s flashblock is forwarded to all connected peers, who in turn may forward it to their peers, etc., ensuring the payload reaches all participants without needing a single central broadcaster. The protocol includes basic duplicate suppression so that flashblocks aren’t endlessly propagated in loops. +* **Real-time Coordination:** Using `StartPublish` and `StopPublish` signals, multiple potential publishers (builders) can coordinate access to the network. This prevents conflicts where two builders might try to publish simultaneously, and allows a smooth handoff in failover scenarios (detailed below). + +### Message Types + +Within the `AuthorizedMsg` union, we define the following variants and their semantics: + +* **Flashblock Payload Message:** Carries a `FlashblocksPayloadV1` (as defined in the original spec) for a specific partial block. This includes the incremental transactions, updated state root, receipts root, logs bloom, etc., up through that flashblock. Peers receiving this message will apply the included state updates to their preconfirmation cache. Each Flashblock message has an `index` (the flashblock sequence number) and may include the `base` section if it’s the first flashblock (index 0) for that block. +* **StartPublish Message:** Announces the start of a new publishers flashblock sequence. Peers use this to note which builder is now active for a given L2 block number, possibly resetting any previous state or halting their own publishing. +* **StopPublish Message:** Indicates the end of the flashblock sequence for the current publisher. After this message, no further flashblocks from that publisher should arrive. Inactive or waiting publishers use this as a cue that they may now take over for subsequent flashblocks. + +All these are encapsulated in `AuthorizedMsg` with the requisite signatures. + +### Authorization and Security + +The P2P protocol introduces a trust model wherein peers accept flashblocks only from an **authorized builder**. The security measures include: + +* **Authorizer Signature Verification:** Upon receiving any `AuthorizedMessage`, a peer will first verify the `authorizer_sig` in the `Authorization` against the known authorizer public key. This confirms that rollup-boost has indeed permitted the stated builder to produce the block with the given `payload_id` and timestamp. If this signature is missing or invalid, the message is discarded as untrusted. +* **Builder Signature Verification:** Next, the peer verifies the `builder_signature` on the message content using the `builder_vk` provided in the Authorization. This ensures the message was genuinely produced by the authorized builder and not altered. If this check fails, the message is rejected. +* **Payload Consistency Checks:** Peers also check that the fields in the message are self-consistent and match expectations: + + * The `payload_id` in the Authorization must match the `FlashblocksPayloadV1.payload_id` (for flashblock messages). Each builder’s flashblock messages carry the same payload\_id that was authorized, ensuring they all belong to the same block-building session. + * **Freshness:** The `timestamp` in Authorization helps guard against replay of old messages. If a flashblock or StartPublish arrives with a significantly older timestamp (or for an already completed block), peers will ignore it and decrement the sender's reputation. + +These measures ensure that **only** the rollup-boost sanctioned builder’s data is propagated and that it’s cryptographically sound. Unauthorized parties cannot inject false flashblocks or tamper with content without detection. This design also allows dynamic builder changes: as long as the sequencer signs a new Authorization, the peers will accept the new builder’s messages even if they have never seen that builder before, because trust is transitive from the authorizers’s key. + +### Multi-Builder Coordination + +A major benefit of the P2P approach is the ability to coordinate multiple builders in an HA (High Availability) setting. The `StartPublish` and `StopPublish` messages, in conjunction with a small amount of logic in Rollup-Boost and the network, handle the arbitration: + +* **Single Publisher Rule:** The network expects at most one builder to be actively publishing flashblocks for a given L2 block number at any time. If two different builders both attempt to publish for the same block, the conflict must be resolved to maintain a consistent preconfirmation state. +* **Announcing Intent – `StartPublish`:** When Rollup-Boost (sequencer) initiates a new block with an external builder, it immediately broadcasts a `StartPublish` message (as an AuthorizedMessage) from that builder. This tells all peers: “Builder X is about to start publishing” If any other builder was thinking of building block N (perhaps there was a recent failover), it will see this and **stand down**. +* **Graceful Yield – reacting to `StartPublish`:** If a builder is currently publishing and receives a `StartPublish` from a *different* builder for the same or next block, it means a failover or override is happening. The expected behavior is that the current publisher will cease publishing (and issue a `StopPublish`). The protocol is designed such that the honest builder who is not supposed to publish will yield to the authorized one. The reference implementation will automatically send a `StopPublish` if it is publishing and learns that another builder has taken over authority for the block. The new builder will wait until it receives the `StopPublish` before continuing. +* **Completion – `StopPublish`:** When a builder receives the next FCU _without_ an accompanying `Authorization`, it will send out a `StopPublish`. This removes the builder from the “active publisher” role in the eyes of the network. If there was another builder in waiting (perhaps one that had attempted to start earlier but was told to wait), that waiting builder will now see that the coast is clear. +* **Timeouts and Fallback:** There is an implicit timeout in the coordination. If a builder is in a waiting state after announcing `StartPublish` but for some reason the previous publisher fails to produce a `StopPublish` (for example, if it crashed mid-block), other participants will not wait indefinitely. In our design, if a new block number is reached and the previous publisher hasn’t stopped we assume the previous builder is incapacitated and proceed with the new publisher. + +This coordination ensures that in an HA setup with multiple sequencer instances and multiple builders, **preconfirmation data remains consistent**: only one set of flashblocks is ever in flight for a given block. If a sequencer failover occurs, the worst-case scenario (which occurs only during a very rare race condition) is a single block publication gap or discontinuity at a block boundary. In the far more likely case, there will be exactly no flashblock disruption. The next publisher will simply start where the last publisher left off, even if that is mid block. + +## Rollup-Boost and Builder Communication + +In the P2P-enhanced design, Rollup-Boost’s interaction with the external block builder is slightly adjusted: + +* **Authorization Delivery:** When the sequencer (op-node) triggers a new block proposal via `engine_forkchoiceUpdated` (with payload attributes), Rollup-Boost creates an `Authorization` for the chosen builder. This requires that Rollup-Boost knows the builder’s public key in advance. In practice, the builder can be configured or registered with Rollup-Boost, providing its long-term public key. Rollup-Boost uses its **authorizer private key** (associated with the L2 chain or sequencer) to sign the authorization (covering payload\_id, timestamp, builder’s key). +* **Forkchoice Updated Forwarding:** Rollup-Boost forwards the fork choice update to the builder as usual (so the builder can start building the block). In this modified protocol, the fork choice update (or a parallel communication) includes the newly created `Authorization`. For example, a custom field or side-channel could convey the authorizer’s signature to the builder. **(Implementation-wise, this might be an extension of the Engine API or an internal call – the key point is the builder receives the Authorization token before it begins sending flashblocks.)** +* **StartPublish Broadcast:** If the builder was not previously publishing, then immediately after receiving the authorization it will emit a `StartPublish` message over the P2P network. This tells all listening nodes that the authorized builder will begin flashblock publication. +* **Streaming Flashblocks:** The builder executes transactions and produces flashblocks incrementally just as described in the original spec’s Flashblock Construction Process. However, instead of returning these payloads to Rollup-Boost, the builder now signs each flashblock with its key and directly broadcasts an Authorized Flashblock message to the P2P network. +* **No Inline Validation by Sequencer:** In the original design, Rollup-Boost would validate each flashblock against the local execution engine before propagating it. In the P2P model, this is not done synchronously for each flashblock (it would negate some latency benefits). Instead, trust is managed via the Authorization. The sequencer trusts its chosen builder to only send valid blocks (and will ultimately verify the final block when `engine_getPayload` is called). Peers trust the flashblocks because they trust the Rollup-Boost’s signature. + +In summary, Rollup-Boost’s role shifts from being a **middleman for data** to being a **controller and coordinator**. It authorizes the builder and informs the network about which builder is active, but it doesn’t need to ferry every flashblock through itself. This streamlines the path from builder to RPC providers. +