From 9e9666f447012e6ea9b1ac81354e653992aca74b Mon Sep 17 00:00:00 2001 From: Andreas Bigger Date: Mon, 15 Dec 2025 11:00:20 -0500 Subject: [PATCH 1/5] feat(flashtypes): minimal flashblocks type crate to remove rollup-boost dep --- Cargo.lock | 927 +++--------------- Cargo.toml | 1 + crates/flashblocks/Cargo.toml | 11 +- crates/flashblocks/src/lib.rs | 3 - crates/flashblocks/src/pending_blocks.rs | 3 +- crates/flashblocks/src/processor.rs | 3 +- crates/flashblocks/src/state.rs | 3 +- crates/flashblocks/src/subscription.rs | 3 +- crates/flashblocks/src/traits.rs | 3 +- crates/flashblocks/tests/state.rs | 6 +- crates/flashtypes/Cargo.toml | 32 + crates/flashtypes/README.md | 3 + .../src/blocks.rs => flashtypes/src/block.rs} | 43 +- crates/flashtypes/src/error.rs | 43 + crates/flashtypes/src/lib.rs | 18 + crates/flashtypes/src/metadata.rs | 16 + crates/flashtypes/src/payload.rs | 81 ++ crates/rpc/Cargo.toml | 4 +- crates/rpc/tests/eth_call_erc20.rs | 5 +- crates/rpc/tests/flashblocks_rpc.rs | 5 +- crates/test-utils/Cargo.toml | 1 + crates/test-utils/src/flashblocks_harness.rs | 2 +- crates/test-utils/src/node.rs | 3 +- 23 files changed, 389 insertions(+), 830 deletions(-) create mode 100644 crates/flashtypes/Cargo.toml create mode 100644 crates/flashtypes/README.md rename crates/{flashblocks/src/blocks.rs => flashtypes/src/block.rs} (77%) create mode 100644 crates/flashtypes/src/error.rs create mode 100644 crates/flashtypes/src/lib.rs create mode 100644 crates/flashtypes/src/metadata.rs create mode 100644 crates/flashtypes/src/payload.rs diff --git a/Cargo.lock b/Cargo.lock index 2213b717..492d411f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -97,9 +97,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy-chains" -version = "0.2.23" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35d744058a9daa51a8cf22a3009607498fcf82d3cf4c5444dd8056cdf651f471" +checksum = "1b9ebac8ff9c2f07667e1803dc777304337e160ce5153335beb45e8ec0751808" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -434,7 +434,7 @@ dependencies = [ "proptest-derive 0.6.0", "rand 0.9.2", "ruint", - "rustc-hash 2.1.1", + "rustc-hash", "serde", "sha3", "tiny-keccak", @@ -499,7 +499,7 @@ dependencies = [ "serde_json", "tokio", "tokio-stream", - "tower 0.5.2", + "tower", "tracing", "wasmtimer", ] @@ -546,7 +546,7 @@ dependencies = [ "serde_json", "tokio", "tokio-stream", - "tower 0.5.2", + "tower", "tracing", "url", "wasmtimer", @@ -567,9 +567,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-admin" -version = "1.1.3" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65a583d2029b171301f5dcf122aa2ef443a65a373778ec76540d999691ae867d" +checksum = "2bcf50ccb65d29b8599f8f5e23dcac685f1d79459654c830cba381345760e901" dependencies = [ "alloy-genesis", "alloy-primitives", @@ -579,9 +579,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" -version = "1.1.3" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ce4c24e416bd0f17fceeb2f26cd8668df08fe19e1dc02f9d41c3b8ed1e93e0" +checksum = "5e176c26fdd87893b6afeb5d92099d8f7e7a1fe11d6f4fe0883d6e33ac5f31ba" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -602,9 +602,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-beacon" -version = "1.1.3" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16633087e23d8d75161c3a59aa183203637b817a5a8d2f662f612ccb6d129af0" +checksum = "1786681640d4c60f22b6b8376b0f3fa200360bf1c3c2cb913e6c97f51928eb1b" dependencies = [ "alloy-eips", "alloy-primitives", @@ -622,9 +622,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-debug" -version = "1.1.3" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4936f579d9d10eae01772b2ab3497f9d568684f05f26f8175e12f9a1a2babc33" +checksum = "1b2ca3a434a6d49910a7e8e51797eb25db42ef8a5578c52d877fcb26d0afe7bc" dependencies = [ "alloy-primitives", "derive_more", @@ -676,9 +676,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-mev" -version = "1.1.3" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81c0dd81c24944cfbf45b5df7cd149d9cd3e354db81ccf08aa47e0e05be8ab97" +checksum = "49a97bfc6d9b411c85bb08e1174ddd3e5d61b10d3bd13f529d6609f733cb2f6f" dependencies = [ "alloy-consensus", "alloy-eips", @@ -691,9 +691,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-trace" -version = "1.1.3" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef206a4b8d436fbb7cf2e6a61c692d11df78f9382becc3c9a283bd58e64f0583" +checksum = "c55324323aa634b01bdecb2d47462a8dce05f5505b14a6e5db361eef16eda476" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -705,9 +705,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-txpool" -version = "1.1.3" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecb5a795264a02222f9534435b8f40dcbd88de8e9d586647884aae24f389ebf2" +checksum = "96b1aa28effb6854be356ce92ed64cea3b323acd04c3f8bfb5126e2839698043" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -744,9 +744,9 @@ dependencies = [ [[package]] name = "alloy-signer-local" -version = "1.1.3" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72cfe0be3ec5a8c1a46b2e5a7047ed41121d360d97f4405bb7c1c784880c86cb" +checksum = "930e17cb1e46446a193a593a3bfff8d0ecee4e510b802575ebe300ae2e43ef75" dependencies = [ "alloy-consensus", "alloy-network", @@ -851,7 +851,7 @@ dependencies = [ "serde_json", "thiserror 2.0.17", "tokio", - "tower 0.5.2", + "tower", "tracing", "url", "wasmtimer", @@ -867,7 +867,7 @@ dependencies = [ "alloy-transport", "reqwest", "serde_json", - "tower 0.5.2", + "tower", "tracing", "url", ] @@ -1365,9 +1365,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.35" +version = "0.4.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07a926debf178f2d355197f9caddb08e54a9329d44748034bba349c5848cb519" +checksum = "0e86f6d3dc9dc4352edeea6b8e499e13e3f5dc3b964d7ca5fd411415a3498473" dependencies = [ "compression-codecs", "compression-core", @@ -1474,93 +1474,12 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" -[[package]] -name = "aws-lc-rs" -version = "1.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c953fe1ba023e6b7730c0d4b031d06f267f23a46167dcbd40316644b10a17ba" -dependencies = [ - "aws-lc-sys", - "zeroize", -] - -[[package]] -name = "aws-lc-sys" -version = "0.30.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbfd150b5dbdb988bcc8fb1fe787eb6b7ee6180ca24da683b61ea5405f3d43ff" -dependencies = [ - "bindgen 0.69.5", - "cc", - "cmake", - "dunce", - "fs_extra", -] - -[[package]] -name = "axum" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" -dependencies = [ - "async-trait", - "axum-core", - "bytes", - "futures-util", - "http", - "http-body", - "http-body-util", - "itoa", - "matchit", - "memchr", - "mime", - "percent-encoding", - "pin-project-lite", - "rustversion", - "serde", - "sync_wrapper", - "tower 0.5.2", - "tower-layer", - "tower-service", -] - -[[package]] -name = "axum-core" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" -dependencies = [ - "async-trait", - "bytes", - "futures-util", - "http", - "http-body", - "http-body-util", - "mime", - "pin-project-lite", - "rustversion", - "sync_wrapper", - "tower-layer", - "tower-service", -] - [[package]] name = "az" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b7e4c2464d97fe331d41de9d5db0def0a96f4d823b8b32a2efd503578988973" -[[package]] -name = "backoff" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" -dependencies = [ - "getrandom 0.2.16", - "instant", - "rand 0.8.5", -] - [[package]] name = "backon" version = "1.6.0" @@ -1571,6 +1490,23 @@ dependencies = [ "tokio", ] +[[package]] +name = "base-flashtypes" +version = "0.2.1" +dependencies = [ + "alloy-primitives", + "alloy-rpc-types-engine", + "alloy-rpc-types-eth", + "alloy-serde", + "brotli", + "bytes", + "derive_more", + "reth-optimism-primitives", + "rstest", + "serde", + "serde_json", +] + [[package]] name = "base-reth-cli" version = "0.2.1" @@ -1595,11 +1531,9 @@ dependencies = [ "alloy-rpc-types-engine", "alloy-rpc-types-eth", "arc-swap", + "base-flashtypes", "base-reth-test-utils", - "brotli", - "bytes", "criterion", - "derive_more", "eyre", "futures-util", "metrics", @@ -1624,10 +1558,7 @@ dependencies = [ "reth-rpc-convert", "reth-rpc-eth-api", "reth-testing-utils", - "rollup-boost", "rstest", - "serde", - "serde_json", "tokio", "tokio-tungstenite 0.28.0", "tracing", @@ -1664,13 +1595,14 @@ dependencies = [ "alloy-rpc-types-eth", "alloy-sol-macro", "alloy-sol-types", + "base-flashtypes", "base-reth-flashblocks", "base-reth-test-utils", "eyre", "futures-util", "httpmock", - "jsonrpsee 0.26.0", - "jsonrpsee-types 0.26.0", + "jsonrpsee", + "jsonrpsee-types", "metrics", "metrics-derive", "op-alloy-consensus", @@ -1693,7 +1625,6 @@ dependencies = [ "reth-testing-utils", "reth-tracing", "reth-transaction-pool", - "rollup-boost", "serde", "serde_json", "tips-core", @@ -1740,13 +1671,14 @@ dependencies = [ "alloy-signer-local", "alloy-sol-macro", "alloy-sol-types", + "base-flashtypes", "base-reth-flashblocks", "base-reth-rpc", "chrono", "derive_more", "eyre", "futures-util", - "jsonrpsee 0.26.0", + "jsonrpsee", "once_cell", "op-alloy-network", "op-alloy-rpc-types", @@ -1768,7 +1700,7 @@ dependencies = [ "serde_json", "tokio", "tokio-stream", - "tower 0.5.2", + "tower", "tracing-subscriber 0.3.22", "url", ] @@ -1826,9 +1758,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" -version = "1.8.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e050f626429857a27ddccb31e0aca21356bfa709c04041aefddac081a8f068a" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" [[package]] name = "bech32" @@ -1851,29 +1783,6 @@ dependencies = [ "serde", ] -[[package]] -name = "bindgen" -version = "0.69.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" -dependencies = [ - "bitflags 2.10.0", - "cexpr", - "clang-sys", - "itertools 0.12.1", - "lazy_static", - "lazycell", - "log", - "prettyplease", - "proc-macro2", - "quote", - "regex", - "rustc-hash 1.1.0", - "shlex", - "syn 2.0.111", - "which", -] - [[package]] name = "bindgen" version = "0.71.1" @@ -1887,7 +1796,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "rustc-hash 2.1.1", + "rustc-hash", "shlex", "syn 2.0.111", ] @@ -1905,7 +1814,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "rustc-hash 2.1.1", + "rustc-hash", "shlex", "syn 2.0.111", ] @@ -2011,7 +1920,7 @@ dependencies = [ "boa_string", "indexmap 2.12.1", "num-bigint", - "rustc-hash 2.1.1", + "rustc-hash", ] [[package]] @@ -2052,7 +1961,7 @@ dependencies = [ "portable-atomic", "rand 0.9.2", "regress", - "rustc-hash 2.1.1", + "rustc-hash", "ryu-js", "serde", "serde_json", @@ -2090,7 +1999,7 @@ dependencies = [ "indexmap 2.12.1", "once_cell", "phf", - "rustc-hash 2.1.1", + "rustc-hash", "static_assertions", ] @@ -2123,7 +2032,7 @@ dependencies = [ "num-bigint", "num-traits", "regress", - "rustc-hash 2.1.1", + "rustc-hash", ] [[package]] @@ -2135,7 +2044,7 @@ dependencies = [ "fast-float2", "itoa", "paste", - "rustc-hash 2.1.1", + "rustc-hash", "ryu-js", "static_assertions", ] @@ -2478,15 +2387,6 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" -[[package]] -name = "cmake" -version = "0.1.54" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" -dependencies = [ - "cc", -] - [[package]] name = "coins-bip32" version = "0.12.0" @@ -2581,9 +2481,9 @@ dependencies = [ [[package]] name = "compression-codecs" -version = "0.4.34" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34a3cbbb8b6eca96f3a5c4bf6938d5b27ced3675d69f95bb51948722870bc323" +checksum = "302266479cb963552d11bd042013a58ef1adc56768016c8b82b4199488f2d4ad" dependencies = [ "brotli", "compression-core", @@ -3318,12 +3218,6 @@ dependencies = [ "litrs", ] -[[package]] -name = "dotenvy" -version = "0.15.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" - [[package]] name = "dunce" version = "1.0.5" @@ -3437,12 +3331,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "endian-type" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" - [[package]] name = "enr" version = "0.13.0" @@ -3774,12 +3662,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "fs_extra" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" - [[package]] name = "fsevent-sys" version = "4.1.0" @@ -4005,9 +3887,9 @@ dependencies = [ [[package]] name = "git2" -version = "0.20.3" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e2b37e2f62729cdada11f0e6b3b6fe383c69c29fc619e391223e12856af308c" +checksum = "2deb07a133b1520dc1a5690e9bd08950108873d7ed5de38dcc74d3b5ebffa110" dependencies = [ "bitflags 2.10.0", "libc", @@ -4306,15 +4188,6 @@ dependencies = [ "digest 0.10.7", ] -[[package]] -name = "home" -version = "0.5.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" -dependencies = [ - "windows-sys 0.61.2", -] - [[package]] name = "http" version = "1.4.0" @@ -4512,12 +4385,9 @@ dependencies = [ "percent-encoding", "pin-project-lite", "socket2 0.6.1", - "system-configuration", "tokio", - "tower-layer", "tower-service", "tracing", - "windows-registry", ] [[package]] @@ -4791,15 +4661,6 @@ dependencies = [ "syn 2.0.111", ] -[[package]] -name = "instant" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" -dependencies = [ - "cfg-if", -] - [[package]] name = "interprocess" version = "2.2.3" @@ -4878,15 +4739,6 @@ dependencies = [ "either", ] -[[package]] -name = "itertools" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.13.0" @@ -4953,20 +4805,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "jsonrpsee" -version = "0.25.1" -source = "git+https://github.com/paritytech/jsonrpsee?rev=f04afa740e55db60dce20d9839758792f035ffff#f04afa740e55db60dce20d9839758792f035ffff" -dependencies = [ - "jsonrpsee-core 0.25.1", - "jsonrpsee-http-client 0.25.1", - "jsonrpsee-proc-macros 0.25.1", - "jsonrpsee-server 0.25.1", - "jsonrpsee-types 0.25.1", - "tokio", - "tracing", -] - [[package]] name = "jsonrpsee" version = "0.26.0" @@ -4974,11 +4812,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-proc-macros 0.26.0", - "jsonrpsee-server 0.26.0", - "jsonrpsee-types 0.26.0", + "jsonrpsee-core", + "jsonrpsee-http-client", + "jsonrpsee-proc-macros", + "jsonrpsee-server", + "jsonrpsee-types", "jsonrpsee-wasm-client", "jsonrpsee-ws-client", "tokio", @@ -4996,7 +4834,7 @@ dependencies = [ "futures-util", "gloo-net", "http", - "jsonrpsee-core 0.26.0", + "jsonrpsee-core", "pin-project", "rustls", "rustls-pki-types", @@ -5010,30 +4848,6 @@ dependencies = [ "url", ] -[[package]] -name = "jsonrpsee-core" -version = "0.25.1" -source = "git+https://github.com/paritytech/jsonrpsee?rev=f04afa740e55db60dce20d9839758792f035ffff#f04afa740e55db60dce20d9839758792f035ffff" -dependencies = [ - "async-trait", - "bytes", - "futures-util", - "http", - "http-body", - "http-body-util", - "jsonrpsee-types 0.25.1", - "parking_lot", - "pin-project", - "rand 0.9.2", - "rustc-hash 2.1.1", - "serde", - "serde_json", - "thiserror 2.0.17", - "tokio", - "tower 0.5.2", - "tracing", -] - [[package]] name = "jsonrpsee-core" version = "0.26.0" @@ -5047,43 +4861,21 @@ dependencies = [ "http", "http-body", "http-body-util", - "jsonrpsee-types 0.26.0", + "jsonrpsee-types", "parking_lot", "pin-project", "rand 0.9.2", - "rustc-hash 2.1.1", + "rustc-hash", "serde", "serde_json", "thiserror 2.0.17", "tokio", "tokio-stream", - "tower 0.5.2", + "tower", "tracing", "wasm-bindgen-futures", ] -[[package]] -name = "jsonrpsee-http-client" -version = "0.25.1" -source = "git+https://github.com/paritytech/jsonrpsee?rev=f04afa740e55db60dce20d9839758792f035ffff#f04afa740e55db60dce20d9839758792f035ffff" -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" @@ -5095,30 +4887,18 @@ 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", "serde_json", "thiserror 2.0.17", "tokio", - "tower 0.5.2", + "tower", "url", ] -[[package]] -name = "jsonrpsee-proc-macros" -version = "0.25.1" -source = "git+https://github.com/paritytech/jsonrpsee?rev=f04afa740e55db60dce20d9839758792f035ffff#f04afa740e55db60dce20d9839758792f035ffff" -dependencies = [ - "heck", - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.111", -] - [[package]] name = "jsonrpsee-proc-macros" version = "0.26.0" @@ -5132,32 +4912,6 @@ dependencies = [ "syn 2.0.111", ] -[[package]] -name = "jsonrpsee-server" -version = "0.25.1" -source = "git+https://github.com/paritytech/jsonrpsee?rev=f04afa740e55db60dce20d9839758792f035ffff#f04afa740e55db60dce20d9839758792f035ffff" -dependencies = [ - "futures-util", - "http", - "http-body", - "http-body-util", - "hyper", - "hyper-util", - "jsonrpsee-core 0.25.1", - "jsonrpsee-types 0.25.1", - "pin-project", - "route-recognizer", - "serde", - "serde_json", - "soketto", - "thiserror 2.0.17", - "tokio", - "tokio-stream", - "tokio-util", - "tower 0.5.2", - "tracing", -] - [[package]] name = "jsonrpsee-server" version = "0.26.0" @@ -5170,8 +4924,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", @@ -5181,21 +4935,10 @@ dependencies = [ "tokio", "tokio-stream", "tokio-util", - "tower 0.5.2", + "tower", "tracing", ] -[[package]] -name = "jsonrpsee-types" -version = "0.25.1" -source = "git+https://github.com/paritytech/jsonrpsee?rev=f04afa740e55db60dce20d9839758792f035ffff#f04afa740e55db60dce20d9839758792f035ffff" -dependencies = [ - "http", - "serde", - "serde_json", - "thiserror 2.0.17", -] - [[package]] name = "jsonrpsee-types" version = "0.26.0" @@ -5215,9 +4958,9 @@ 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", - "tower 0.5.2", + "jsonrpsee-core", + "jsonrpsee-types", + "tower", ] [[package]] @@ -5228,9 +4971,9 @@ checksum = "9b6fceceeb05301cc4c065ab3bd2fa990d41ff4eb44e4ca1b30fa99c057c3e79" dependencies = [ "http", "jsonrpsee-client-transport", - "jsonrpsee-core 0.26.0", - "jsonrpsee-types 0.26.0", - "tower 0.5.2", + "jsonrpsee-core", + "jsonrpsee-types", + "tower", "url", ] @@ -5309,12 +5052,6 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -[[package]] -name = "lazycell" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" - [[package]] name = "libc" version = "0.2.178" @@ -5323,9 +5060,9 @@ checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091" [[package]] name = "libgit2-sys" -version = "0.18.3+1.9.2" +version = "0.18.2+1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9b3acc4b91781bb0b3386669d325163746af5f6e4f73e6d2d630e09a35f3487" +checksum = "1c42fe03df2bd3c53a3a9c7317ad91d80c81cd1fb0caec8d7cc4cd2bfa10c222" dependencies = [ "cc", "libc", @@ -5351,9 +5088,9 @@ checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libp2p-identity" -version = "0.2.13" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0c7892c221730ba55f7196e98b0b8ba5e04b4155651736036628e9f73ed6fc3" +checksum = "3104e13b51e4711ff5738caa1fb54467c8604c2e94d607e27745bcf709068774" dependencies = [ "asn1_der", "bs58", @@ -5569,12 +5306,6 @@ dependencies = [ "regex-automata", ] -[[package]] -name = "matchit" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" - [[package]] name = "memchr" version = "2.7.6" @@ -5628,18 +5359,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd7399781913e5393588a8d8c6a2867bf85fb38eaf2502fdce465aad2dc6f034" dependencies = [ "base64 0.22.1", - "http-body-util", - "hyper", - "hyper-rustls", - "hyper-util", "indexmap 2.12.1", - "ipnet", "metrics", "metrics-util", "quanta", "thiserror 1.0.69", - "tokio", - "tracing", ] [[package]] @@ -5664,15 +5388,11 @@ version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8496cc523d1f94c1385dd8f0f0c2c480b2b8aeccb5b7e4485ad6365523ae376" dependencies = [ - "aho-corasick", "crossbeam-epoch", "crossbeam-utils", "hashbrown 0.15.5", - "indexmap 2.12.1", "metrics", - "ordered-float", "quanta", - "radix_trie", "rand 0.9.2", "rand_xoshiro", "sketches-ddsketch", @@ -5764,13 +5484,10 @@ version = "0.12.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8261cd88c312e0004c1d51baad2980c66528dfdb2bee62003e643a4d8f86b077" dependencies = [ - "async-lock", "crossbeam-channel", "crossbeam-epoch", "crossbeam-utils", "equivalent", - "event-listener", - "futures-util", "parking_lot", "portable-atomic", "rustc_version 0.4.1", @@ -5837,19 +5554,10 @@ dependencies = [ "openssl", "openssl-probe", "openssl-sys", - "schannel", - "security-framework 2.11.1", - "security-framework-sys", - "tempfile", -] - -[[package]] -name = "nibble_vec" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43" -dependencies = [ - "smallvec", + "schannel", + "security-framework 2.11.1", + "security-framework-sys", + "tempfile", ] [[package]] @@ -6112,7 +5820,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ef9114426b16172254555aad34a8ea96c01895e40da92f5d12ea680a1baeaa7" dependencies = [ "alloy-primitives", - "jsonrpsee 0.26.0", + "jsonrpsee", ] [[package]] @@ -6216,20 +5924,6 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "opentelemetry" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "236e667b670a5cdf90c258f5a55794ec5ac5027e960c224bff8367a59e1e6426" -dependencies = [ - "futures-core", - "futures-sink", - "js-sys", - "pin-project-lite", - "thiserror 2.0.17", - "tracing", -] - [[package]] name = "opentelemetry" version = "0.31.0" @@ -6244,20 +5938,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "opentelemetry-http" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8863faf2910030d139fb48715ad5ff2f35029fc5f244f6d5f689ddcf4d26253" -dependencies = [ - "async-trait", - "bytes", - "http", - "opentelemetry 0.28.0", - "reqwest", - "tracing", -] - [[package]] name = "opentelemetry-http" version = "0.31.0" @@ -6267,30 +5947,8 @@ dependencies = [ "async-trait", "bytes", "http", - "opentelemetry 0.31.0", - "reqwest", -] - -[[package]] -name = "opentelemetry-otlp" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bef114c6d41bea83d6dc60eb41720eedd0261a67af57b66dd2b84ac46c01d91" -dependencies = [ - "async-trait", - "futures-core", - "http", - "opentelemetry 0.28.0", - "opentelemetry-http 0.28.0", - "opentelemetry-proto 0.28.0", - "opentelemetry_sdk 0.28.0", - "prost 0.13.5", + "opentelemetry", "reqwest", - "serde_json", - "thiserror 2.0.17", - "tokio", - "tonic 0.12.3", - "tracing", ] [[package]] @@ -6300,43 +5958,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a2366db2dca4d2ad033cad11e6ee42844fd727007af5ad04a1730f4cb8163bf" dependencies = [ "http", - "opentelemetry 0.31.0", - "opentelemetry-http 0.31.0", - "opentelemetry-proto 0.31.0", - "opentelemetry_sdk 0.31.0", - "prost 0.14.1", + "opentelemetry", + "opentelemetry-http", + "opentelemetry-proto", + "opentelemetry_sdk", + "prost", "reqwest", "thiserror 2.0.17", "tokio", - "tonic 0.14.2", + "tonic", "tracing", ] -[[package]] -name = "opentelemetry-proto" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f8870d3024727e99212eb3bb1762ec16e255e3e6f58eeb3dc8db1aa226746d" -dependencies = [ - "base64 0.22.1", - "hex", - "opentelemetry 0.28.0", - "opentelemetry_sdk 0.28.0", - "prost 0.13.5", - "serde", - "tonic 0.12.3", -] - [[package]] name = "opentelemetry-proto" version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7175df06de5eaee9909d4805a3d07e28bb752c34cab57fa9cff549da596b30f" dependencies = [ - "opentelemetry 0.31.0", - "opentelemetry_sdk 0.31.0", - "prost 0.14.1", - "tonic 0.14.2", + "opentelemetry", + "opentelemetry_sdk", + "prost", + "tonic", "tonic-prost", ] @@ -6346,27 +5989,6 @@ version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e62e29dfe041afb8ed2a6c9737ab57db4907285d999ef8ad3a59092a36bdc846" -[[package]] -name = "opentelemetry_sdk" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84dfad6042089c7fc1f6118b7040dc2eb4ab520abbf410b79dc481032af39570" -dependencies = [ - "async-trait", - "futures-channel", - "futures-executor", - "futures-util", - "glob", - "opentelemetry 0.28.0", - "percent-encoding", - "rand 0.8.5", - "serde_json", - "thiserror 2.0.17", - "tokio", - "tokio-stream", - "tracing", -] - [[package]] name = "opentelemetry_sdk" version = "0.31.0" @@ -6376,7 +5998,7 @@ dependencies = [ "futures-channel", "futures-executor", "futures-util", - "opentelemetry 0.31.0", + "opentelemetry", "percent-encoding", "rand 0.9.2", "thiserror 2.0.17", @@ -6388,15 +6010,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" -[[package]] -name = "ordered-float" -version = "4.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" -dependencies = [ - "num-traits", -] - [[package]] name = "p256" version = "0.13.2" @@ -6719,16 +6332,6 @@ dependencies = [ "yansi", ] -[[package]] -name = "prettyplease" -version = "0.2.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" -dependencies = [ - "proc-macro2", - "syn 2.0.111", -] - [[package]] name = "primeorder" version = "0.13.6" @@ -6755,7 +6358,7 @@ version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit 0.23.9", + "toml_edit 0.23.7", ] [[package]] @@ -6886,16 +6489,6 @@ dependencies = [ "syn 2.0.111", ] -[[package]] -name = "prost" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" -dependencies = [ - "bytes", - "prost-derive 0.13.5", -] - [[package]] name = "prost" version = "0.14.1" @@ -6903,20 +6496,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7231bd9b3d3d33c86b58adbac74b5ec0ad9f496b19d22801d773636feaa95f3d" dependencies = [ "bytes", - "prost-derive 0.14.1", -] - -[[package]] -name = "prost-derive" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" -dependencies = [ - "anyhow", - "itertools 0.14.0", - "proc-macro2", - "quote", - "syn 2.0.111", + "prost-derive", ] [[package]] @@ -6984,7 +6564,7 @@ dependencies = [ "pin-project-lite", "quinn-proto", "quinn-udp", - "rustc-hash 2.1.1", + "rustc-hash", "rustls", "socket2 0.6.1", "thiserror 2.0.17", @@ -7004,7 +6584,7 @@ dependencies = [ "lru-slab", "rand 0.9.2", "ring", - "rustc-hash 2.1.1", + "rustc-hash", "rustls", "rustls-pki-types", "slab", @@ -7049,16 +6629,6 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" -[[package]] -name = "radix_trie" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd" -dependencies = [ - "endian-type", - "nibble_vec", -] - [[package]] name = "rand" version = "0.8.5" @@ -7293,9 +6863,9 @@ checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" [[package]] name = "reqwest" -version = "0.12.25" +version = "0.12.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6eff9328d40131d43bd911d42d79eb6a47312002a4daefc9e37f17e74a7701a" +checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f" dependencies = [ "base64 0.22.1", "bytes", @@ -7326,7 +6896,7 @@ dependencies = [ "tokio-native-tls", "tokio-rustls", "tokio-util", - "tower 0.5.2", + "tower", "tower-http", "tower-service", "url", @@ -7696,7 +7266,7 @@ dependencies = [ "reth-static-file-types", "reth-storage-errors", "reth-tracing", - "rustc-hash 2.1.1", + "rustc-hash", "strum 0.27.2", "sysinfo", "tempfile", @@ -7902,7 +7472,7 @@ dependencies = [ "derive_more", "eyre", "futures-util", - "jsonrpsee 0.26.0", + "jsonrpsee", "reth-chainspec", "reth-cli-commands", "reth-config", @@ -8308,7 +7878,7 @@ dependencies = [ "alloy-primitives", "auto_impl", "once_cell", - "rustc-hash 2.1.1", + "rustc-hash", ] [[package]] @@ -8517,7 +8087,7 @@ dependencies = [ "alloy-rpc-types-debug", "eyre", "futures", - "jsonrpsee 0.26.0", + "jsonrpsee", "pretty_assertions", "reth-engine-primitives", "reth-evm", @@ -8543,14 +8113,14 @@ dependencies = [ "futures", "futures-util", "interprocess", - "jsonrpsee 0.26.0", + "jsonrpsee", "pin-project", "serde_json", "thiserror 2.0.17", "tokio", "tokio-stream", "tokio-util", - "tower 0.5.2", + "tower", "tracing", ] @@ -8656,7 +8226,7 @@ dependencies = [ "reth-tasks", "reth-tokio-util", "reth-transaction-pool", - "rustc-hash 2.1.1", + "rustc-hash", "schnellru", "secp256k1 0.30.0", "serde", @@ -8801,7 +8371,7 @@ dependencies = [ "eyre", "fdlimit", "futures", - "jsonrpsee 0.26.0", + "jsonrpsee", "rayon", "reth-basic-payload-builder", "reth-chain-state", @@ -9000,7 +8570,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea8 dependencies = [ "eyre", "http", - "jsonrpsee-server 0.26.0", + "jsonrpsee-server", "metrics", "metrics-exporter-prometheus", "metrics-process", @@ -9011,7 +8581,7 @@ dependencies = [ "reth-tasks", "tikv-jemalloc-ctl", "tokio", - "tower 0.5.2", + "tower", "tracing", ] @@ -9333,9 +8903,9 @@ dependencies = [ "derive_more", "eyre", "futures", - "jsonrpsee 0.26.0", - "jsonrpsee-core 0.26.0", - "jsonrpsee-types 0.26.0", + "jsonrpsee", + "jsonrpsee-core", + "jsonrpsee-types", "metrics", "op-alloy-consensus", "op-alloy-network", @@ -9371,7 +8941,7 @@ dependencies = [ "thiserror 2.0.17", "tokio", "tokio-stream", - "tower 0.5.2", + "tower", "tracing", ] @@ -9606,7 +9176,7 @@ dependencies = [ "reth-prune-types", "reth-static-file-types", "reth-tokio-util", - "rustc-hash 2.1.1", + "rustc-hash", "thiserror 2.0.17", "tokio", "tracing", @@ -9720,8 +9290,8 @@ dependencies = [ "http-body", "hyper", "itertools 0.14.0", - "jsonrpsee 0.26.0", - "jsonrpsee-types 0.26.0", + "jsonrpsee", + "jsonrpsee-types", "jsonwebtoken", "parking_lot", "pin-project", @@ -9760,7 +9330,7 @@ dependencies = [ "thiserror 2.0.17", "tokio", "tokio-stream", - "tower 0.5.2", + "tower", "tracing", "tracing-futures", ] @@ -9785,7 +9355,7 @@ dependencies = [ "alloy-rpc-types-trace", "alloy-rpc-types-txpool", "alloy-serde", - "jsonrpsee 0.26.0", + "jsonrpsee", "reth-chain-state", "reth-engine-primitives", "reth-network-peers", @@ -9802,7 +9372,7 @@ dependencies = [ "alloy-provider", "dyn-clone", "http", - "jsonrpsee 0.26.0", + "jsonrpsee", "metrics", "pin-project", "reth-chain-state", @@ -9827,7 +9397,7 @@ dependencies = [ "thiserror 2.0.17", "tokio", "tokio-util", - "tower 0.5.2", + "tower", "tower-http", "tracing", ] @@ -9845,7 +9415,7 @@ dependencies = [ "alloy-signer", "auto_impl", "dyn-clone", - "jsonrpsee-types 0.26.0", + "jsonrpsee-types", "op-alloy-consensus", "op-alloy-network", "op-alloy-rpc-types", @@ -9868,8 +9438,8 @@ 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", @@ -9909,8 +9479,8 @@ dependencies = [ "auto_impl", "dyn-clone", "futures", - "jsonrpsee 0.26.0", - "jsonrpsee-types 0.26.0", + "jsonrpsee", + "jsonrpsee-types", "parking_lot", "reth-chain-state", "reth-chainspec", @@ -9950,8 +9520,8 @@ 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", @@ -9987,9 +9557,9 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea8 dependencies = [ "alloy-rpc-types-engine", "http", - "jsonrpsee-http-client 0.26.0", + "jsonrpsee-http-client", "pin-project", - "tower 0.5.2", + "tower", "tower-http", "tracing", ] @@ -10002,8 +9572,8 @@ dependencies = [ "alloy-eips", "alloy-primitives", "alloy-rpc-types-engine", - "jsonrpsee-core 0.26.0", - "jsonrpsee-types 0.26.0", + "jsonrpsee-core", + "jsonrpsee-types", "reth-errors", "reth-network-api", "serde", @@ -10238,12 +9808,12 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.3#27a8c0f5a6dfb27dea8 dependencies = [ "clap", "eyre", - "opentelemetry 0.31.0", - "opentelemetry-otlp 0.31.0", + "opentelemetry", + "opentelemetry-otlp", "opentelemetry-semantic-conventions", - "opentelemetry_sdk 0.31.0", + "opentelemetry_sdk", "tracing", - "tracing-opentelemetry 0.32.0", + "tracing-opentelemetry", "tracing-subscriber 0.3.22", "url", ] @@ -10278,7 +9848,7 @@ dependencies = [ "reth-tasks", "revm-interpreter", "revm-primitives", - "rustc-hash 2.1.1", + "rustc-hash", "schnellru", "serde", "serde_json", @@ -10733,60 +10303,6 @@ dependencies = [ "chrono", ] -[[package]] -name = "rollup-boost" -version = "0.1.0" -source = "git+http://github.com/flashbots/rollup-boost?rev=v0.7.11#196237bab2a02298de994b439e0455abb1ac512f" -dependencies = [ - "alloy-primitives", - "alloy-rpc-types-engine", - "alloy-rpc-types-eth", - "alloy-serde", - "backoff", - "bytes", - "clap", - "dashmap 6.1.0", - "dotenvy", - "eyre", - "futures", - "http", - "http-body-util", - "hyper", - "hyper-rustls", - "hyper-util", - "jsonrpsee 0.25.1", - "lru 0.16.2", - "metrics", - "metrics-derive", - "metrics-exporter-prometheus", - "metrics-util", - "moka", - "op-alloy-rpc-types-engine", - "opentelemetry 0.28.0", - "opentelemetry-otlp 0.28.0", - "opentelemetry_sdk 0.28.0", - "parking_lot", - "paste", - "reth-optimism-payload-builder", - "rustls", - "serde", - "serde_json", - "sha2", - "thiserror 2.0.17", - "tokio", - "tokio-tungstenite 0.26.2", - "tokio-util", - "tower 0.5.2", - "tower-http", - "tracing", - "tracing-opentelemetry 0.29.0", - "tracing-subscriber 0.3.22", - "url", - "uuid", - "vergen", - "vergen-git2", -] - [[package]] name = "route-recognizer" version = "0.3.1" @@ -10869,12 +10385,6 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" -[[package]] -name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - [[package]] name = "rustc-hash" version = "2.1.1" @@ -10949,7 +10459,6 @@ version = "0.23.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc" dependencies = [ - "aws-lc-rs", "log", "once_cell", "ring", @@ -11014,7 +10523,6 @@ version = "0.103.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" dependencies = [ - "aws-lc-rs", "ring", "rustls-pki-types", "untrusted", @@ -11486,9 +10994,9 @@ dependencies = [ [[package]] name = "simd-adler32" -version = "0.3.8" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" [[package]] name = "similar" @@ -11758,27 +11266,6 @@ dependencies = [ "windows 0.57.0", ] -[[package]] -name = "system-configuration" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" -dependencies = [ - "bitflags 2.10.0", - "core-foundation 0.9.4", - "system-configuration-sys", -] - -[[package]] -name = "system-configuration-sys" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" -dependencies = [ - "core-foundation-sys", - "libc", -] - [[package]] name = "tabwriter" version = "1.4.1" @@ -12101,12 +11588,10 @@ checksum = "7a9daff607c6d2bf6c16fd681ccb7eecc83e4e2cdc1ca067ffaadfca5de7f084" dependencies = [ "futures-util", "log", - "native-tls", "rustls", "rustls-native-certs", "rustls-pki-types", "tokio", - "tokio-native-tls", "tokio-rustls", "tungstenite 0.26.2", "webpki-roots 0.26.11", @@ -12185,9 +11670,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.23.9" +version = "0.23.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d7cbc3b4b49633d57a0509303158ca50de80ae32c265093b24c414705807832" +checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" dependencies = [ "indexmap 2.12.1", "toml_datetime 0.7.3", @@ -12210,36 +11695,6 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" -[[package]] -name = "tonic" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" -dependencies = [ - "async-stream", - "async-trait", - "axum", - "base64 0.22.1", - "bytes", - "h2", - "http", - "http-body", - "http-body-util", - "hyper", - "hyper-timeout", - "hyper-util", - "percent-encoding", - "pin-project", - "prost 0.13.5", - "socket2 0.5.10", - "tokio", - "tokio-stream", - "tower 0.4.13", - "tower-layer", - "tower-service", - "tracing", -] - [[package]] name = "tonic" version = "0.14.2" @@ -12260,7 +11715,7 @@ dependencies = [ "sync_wrapper", "tokio", "tokio-stream", - "tower 0.5.2", + "tower", "tower-layer", "tower-service", "tracing", @@ -12273,28 +11728,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "66bd50ad6ce1252d87ef024b3d64fe4c3cf54a86fb9ef4c631fdd0ded7aeaa67" dependencies = [ "bytes", - "prost 0.14.1", - "tonic 0.14.2", -] - -[[package]] -name = "tower" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" -dependencies = [ - "futures-core", - "futures-util", - "indexmap 1.9.3", - "pin-project", - "pin-project-lite", - "rand 0.8.5", - "slab", - "tokio", - "tokio-util", - "tower-layer", - "tower-service", - "tracing", + "prost", + "tonic", ] [[package]] @@ -12319,9 +11754,9 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.8" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" +checksum = "9cf146f99d442e8e68e585f5d798ccd3cad9a7835b917e09728880a862706456" dependencies = [ "async-compression", "base64 0.22.1", @@ -12341,7 +11776,7 @@ dependencies = [ "pin-project-lite", "tokio", "tokio-util", - "tower 0.5.2", + "tower", "tower-layer", "tower-service", "tracing", @@ -12449,24 +11884,6 @@ dependencies = [ "tracing-subscriber 0.3.22", ] -[[package]] -name = "tracing-opentelemetry" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721f2d2569dce9f3dfbbddee5906941e953bfcdf736a62da3377f5751650cc36" -dependencies = [ - "js-sys", - "once_cell", - "opentelemetry 0.28.0", - "opentelemetry_sdk 0.28.0", - "smallvec", - "tracing", - "tracing-core", - "tracing-log", - "tracing-subscriber 0.3.22", - "web-time", -] - [[package]] name = "tracing-opentelemetry" version = "0.32.0" @@ -12474,8 +11891,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e6e5658463dd88089aba75c7791e1d3120633b1bfde22478b28f625a9bb1b8e" dependencies = [ "js-sys", - "opentelemetry 0.31.0", - "opentelemetry_sdk 0.31.0", + "opentelemetry", + "opentelemetry_sdk", "rustversion", "smallvec", "thiserror 2.0.17", @@ -12584,7 +12001,6 @@ dependencies = [ "http", "httparse", "log", - "native-tls", "rand 0.9.2", "rustls", "rustls-pki-types", @@ -13023,18 +12439,6 @@ dependencies = [ "rustls-pki-types", ] -[[package]] -name = "which" -version = "4.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" -dependencies = [ - "either", - "home", - "once_cell", - "rustix 0.38.44", -] - [[package]] name = "widestring" version = "1.2.1" @@ -13261,17 +12665,6 @@ dependencies = [ "windows-link 0.2.1", ] -[[package]] -name = "windows-registry" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" -dependencies = [ - "windows-link 0.2.1", - "windows-result 0.4.1", - "windows-strings 0.5.1", -] - [[package]] name = "windows-result" version = "0.1.2" diff --git a/Cargo.toml b/Cargo.toml index ccc28f0b..524e7aab 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -56,6 +56,7 @@ base-reth-cli = { path = "crates/cli" } base-reth-rpc = { path = "crates/rpc" } base-tracex = { path = "crates/tracex" } base-reth-runner = { path = "crates/runner" } +base-flashtypes = { path = "crates/flashtypes" } base-reth-test-utils = { path = "crates/test-utils" } base-reth-flashblocks = { path = "crates/flashblocks" } diff --git a/crates/flashblocks/Cargo.toml b/crates/flashblocks/Cargo.toml index 3661feb5..aa8c8c5c 100644 --- a/crates/flashblocks/Cargo.toml +++ b/crates/flashblocks/Cargo.toml @@ -12,6 +12,9 @@ repository.workspace = true workspace = true [dependencies] +# workspace +base-flashtypes.workspace = true + # reth reth.workspace = true reth-evm.workspace = true @@ -37,9 +40,6 @@ op-alloy-network.workspace = true op-alloy-rpc-types.workspace = true op-alloy-consensus.workspace = true -# rollup-boost -rollup-boost.workspace = true - # tokio tokio.workspace = true tokio-tungstenite.workspace = true @@ -50,15 +50,10 @@ futures-util.workspace = true # misc url.workspace = true eyre.workspace = true -bytes.workspace = true -serde.workspace = true -brotli.workspace = true tracing.workspace = true metrics.workspace = true arc-swap.workspace = true -serde_json.workspace = true metrics-derive.workspace = true -derive_more = { workspace = true, features = ["display", "error"] } [dev-dependencies] rand.workspace = true diff --git a/crates/flashblocks/src/lib.rs b/crates/flashblocks/src/lib.rs index cfecc4fd..12a36fe2 100644 --- a/crates/flashblocks/src/lib.rs +++ b/crates/flashblocks/src/lib.rs @@ -20,6 +20,3 @@ pub use subscription::FlashblocksSubscriber; mod traits; pub use traits::{FlashblocksAPI, FlashblocksReceiver, PendingBlocksAPI}; - -mod blocks; -pub use blocks::{Flashblock, FlashblockDecodeError, Metadata}; diff --git a/crates/flashblocks/src/pending_blocks.rs b/crates/flashblocks/src/pending_blocks.rs index 8782dd5c..eaf31ed5 100644 --- a/crates/flashblocks/src/pending_blocks.rs +++ b/crates/flashblocks/src/pending_blocks.rs @@ -10,6 +10,7 @@ use alloy_provider::network::TransactionResponse; use alloy_rpc_types::{BlockTransactions, state::StateOverride}; use alloy_rpc_types_eth::{Filter, Header as RPCHeader, Log}; use arc_swap::Guard; +use base_flashtypes::Flashblock; use eyre::eyre; use op_alloy_network::Optimism; use op_alloy_rpc_types::{OpTransactionReceipt, Transaction}; @@ -17,7 +18,7 @@ use reth::revm::{db::Cache, state::EvmState}; use reth_rpc_convert::RpcTransaction; use reth_rpc_eth_api::{RpcBlock, RpcReceipt}; -use crate::{Flashblock, PendingBlocksAPI}; +use crate::PendingBlocksAPI; /// Builder for [`PendingBlocks`]. #[derive(Debug)] diff --git a/crates/flashblocks/src/processor.rs b/crates/flashblocks/src/processor.rs index 2a62bf5a..2db3bf0b 100644 --- a/crates/flashblocks/src/processor.rs +++ b/crates/flashblocks/src/processor.rs @@ -16,6 +16,7 @@ use alloy_rpc_types::{TransactionTrait, Withdrawal}; use alloy_rpc_types_engine::{ExecutionPayloadV1, ExecutionPayloadV2, ExecutionPayloadV3}; use alloy_rpc_types_eth::state::StateOverride; use arc_swap::ArcSwapOption; +use base_flashtypes::Flashblock; use eyre::eyre; use op_alloy_consensus::OpTxEnvelope; use op_alloy_network::TransactionResponse; @@ -38,7 +39,7 @@ use reth_rpc_convert::transaction::ConvertReceiptInput; use tokio::sync::{Mutex, broadcast::Sender, mpsc::UnboundedReceiver}; use tracing::{debug, error, info, warn}; -use crate::{Flashblock, Metrics, PendingBlocks, PendingBlocksBuilder}; +use crate::{Metrics, PendingBlocks, PendingBlocksBuilder}; /// Messages consumed by the state processor. #[derive(Debug, Clone)] diff --git a/crates/flashblocks/src/state.rs b/crates/flashblocks/src/state.rs index 27516c36..5b01f827 100644 --- a/crates/flashblocks/src/state.rs +++ b/crates/flashblocks/src/state.rs @@ -4,6 +4,7 @@ use std::sync::Arc; use alloy_consensus::Header; use arc_swap::{ArcSwapOption, Guard}; +use base_flashtypes::Flashblock; use reth::{ chainspec::{ChainSpecProvider, EthChainSpec}, providers::{BlockReaderIdExt, StateProviderFactory}, @@ -19,7 +20,7 @@ use tokio::sync::{ use tracing::{error, info}; use crate::{ - Flashblock, FlashblocksAPI, FlashblocksReceiver, PendingBlocks, + FlashblocksAPI, FlashblocksReceiver, PendingBlocks, processor::{StateProcessor, StateUpdate}, }; diff --git a/crates/flashblocks/src/subscription.rs b/crates/flashblocks/src/subscription.rs index 19a6ad01..34e208c7 100644 --- a/crates/flashblocks/src/subscription.rs +++ b/crates/flashblocks/src/subscription.rs @@ -2,13 +2,14 @@ use std::{sync::Arc, time::Duration}; +use base_flashtypes::Flashblock; use futures_util::{SinkExt as _, StreamExt}; use tokio::{sync::mpsc, time::interval}; use tokio_tungstenite::{connect_async, tungstenite::protocol::Message}; use tracing::{error, info, trace, warn}; use url::Url; -use crate::{Flashblock, FlashblocksReceiver, Metrics}; +use crate::{FlashblocksReceiver, Metrics}; // Simplify actor messages to just handle shutdown #[derive(Debug)] diff --git a/crates/flashblocks/src/traits.rs b/crates/flashblocks/src/traits.rs index 427f7a45..f69efb0a 100644 --- a/crates/flashblocks/src/traits.rs +++ b/crates/flashblocks/src/traits.rs @@ -6,12 +6,13 @@ use alloy_eips::BlockNumberOrTag; use alloy_primitives::{Address, TxHash, U256}; use alloy_rpc_types_eth::{Filter, Log, state::StateOverride}; use arc_swap::Guard; +use base_flashtypes::Flashblock; use op_alloy_network::Optimism; use reth_rpc_convert::RpcTransaction; use reth_rpc_eth_api::{RpcBlock, RpcReceipt}; use tokio::sync::broadcast; -use crate::{Flashblock, PendingBlocks}; +use crate::PendingBlocks; /// Trait for receiving flashblock updates. pub trait FlashblocksReceiver { diff --git a/crates/flashblocks/tests/state.rs b/crates/flashblocks/tests/state.rs index 26fbbf64..75ef5d82 100644 --- a/crates/flashblocks/tests/state.rs +++ b/crates/flashblocks/tests/state.rs @@ -8,9 +8,10 @@ use alloy_primitives::{ Address, B256, BlockNumber, Bytes, U256, hex::FromHex, map::foldhash::HashMap, }; use alloy_rpc_types_engine::PayloadId; -use base_reth_flashblocks::{ - Flashblock, FlashblocksAPI, FlashblocksState, Metadata, PendingBlocksAPI, +use base_flashtypes::{ + ExecutionPayloadBaseV1, ExecutionPayloadFlashblockDeltaV1, Flashblock, Metadata, }; +use base_reth_flashblocks::{FlashblocksAPI, FlashblocksState, PendingBlocksAPI}; use base_reth_test_utils::{ FlashblocksHarness, L1_BLOCK_INFO_DEPOSIT_TX, L1_BLOCK_INFO_DEPOSIT_TX_HASH, LocalNodeProvider, TestAccounts, @@ -25,7 +26,6 @@ use reth::{ use reth_optimism_primitives::{OpBlock, OpReceipt, OpTransactionSigned}; use reth_primitives_traits::{Account, Block as BlockT, RecoveredBlock}; use reth_provider::{ChainSpecProvider, StateProviderFactory}; -use rollup_boost::{ExecutionPayloadBaseV1, ExecutionPayloadFlashblockDeltaV1}; use tokio::time::sleep; // The amount of time to wait (in milliseconds) after sending a new flashblock or canonical block // so it can be processed by the state processor diff --git a/crates/flashtypes/Cargo.toml b/crates/flashtypes/Cargo.toml new file mode 100644 index 00000000..77ab3a64 --- /dev/null +++ b/crates/flashtypes/Cargo.toml @@ -0,0 +1,32 @@ +[package] +name = "base-flashtypes" +description = "Flashblocks Primitive Types" +version.workspace = true +edition.workspace = true +rust-version.workspace = true +license.workspace = true +homepage.workspace = true +repository.workspace = true + +[lints] +workspace = true + +[dependencies] +# alloy +alloy-serde.workspace = true +alloy-primitives.workspace = true +alloy-rpc-types-eth.workspace = true +alloy-rpc-types-engine.workspace = true + +# reth +reth-optimism-primitives.workspace = true + +# misc +bytes.workspace = true +serde.workspace = true +brotli.workspace = true +serde_json.workspace = true +derive_more.workspace = true + +[dev-dependencies] +rstest.workspace = true diff --git a/crates/flashtypes/README.md b/crates/flashtypes/README.md new file mode 100644 index 00000000..cf5f1c35 --- /dev/null +++ b/crates/flashtypes/README.md @@ -0,0 +1,3 @@ +# `base-flashtypes` + +Low-level primitive types for `flashblocks`. diff --git a/crates/flashblocks/src/blocks.rs b/crates/flashtypes/src/block.rs similarity index 77% rename from crates/flashblocks/src/blocks.rs rename to crates/flashtypes/src/block.rs index a4261191..df1ddaf0 100644 --- a/crates/flashblocks/src/blocks.rs +++ b/crates/flashtypes/src/block.rs @@ -1,30 +1,18 @@ -//! Contains the [`Flashblock`] and [`Metadata`] types used in Flashblocks. +//! Contains the [`Flashblock`] type used in Flashblocks. use std::io::Read; -use alloy_primitives::{Address, B256, U256, map::foldhash::HashMap}; use alloy_rpc_types_engine::PayloadId; use bytes::Bytes; -use derive_more::{Display, Error}; -use reth_optimism_primitives::OpReceipt; -use rollup_boost::{ - ExecutionPayloadBaseV1, ExecutionPayloadFlashblockDeltaV1, FlashblocksPayloadV1, -}; use serde::{Deserialize, Serialize}; -/// Metadata associated with a flashblock. -#[derive(Debug, Deserialize, Serialize, Clone, Default)] -pub struct Metadata { - /// Transaction receipts indexed by hash. - pub receipts: HashMap, - /// Updated account balances. - pub new_account_balances: HashMap, - /// Block number this flashblock belongs to. - pub block_number: u64, -} +use crate::{ + ExecutionPayloadBaseV1, ExecutionPayloadFlashblockDeltaV1, FlashblockDecodeError, + FlashblocksPayloadV1, Metadata, +}; /// A flashblock containing partial block data. -#[derive(Debug, Clone)] +#[derive(Debug, Serialize, Deserialize, PartialEq, Clone)] pub struct Flashblock { /// Unique payload identifier. pub payload_id: PayloadId, @@ -74,28 +62,11 @@ impl Flashblock { } } -/// Errors that can occur while decoding a flashblock payload. -#[derive(Debug, Display, Error)] -pub enum FlashblockDecodeError { - /// Failed to deserialize the flashblock payload JSON into the expected struct. - #[display("failed to parse flashblock payload JSON: {_0}")] - PayloadParse(serde_json::Error), - /// Failed to deserialize the flashblock metadata into the expected struct. - #[display("failed to parse flashblock metadata: {_0}")] - MetadataParse(serde_json::Error), - /// Brotli decompression failed. - #[display("failed to decompress brotli payload: {_0}")] - Decompress(std::io::Error), - /// The decompressed payload was not valid UTF-8 JSON. - #[display("decompressed payload is not valid UTF-8 JSON: {_0}")] - Utf8(std::string::FromUtf8Error), -} - #[cfg(test)] mod tests { use std::io::Write; - use alloy_primitives::{Address, Bloom, Bytes as PrimitiveBytes, U256}; + use alloy_primitives::{Address, B256, Bloom, Bytes as PrimitiveBytes, U256}; use rstest::rstest; use serde_json::json; diff --git a/crates/flashtypes/src/error.rs b/crates/flashtypes/src/error.rs new file mode 100644 index 00000000..272f93a6 --- /dev/null +++ b/crates/flashtypes/src/error.rs @@ -0,0 +1,43 @@ +//! Contains error types relating to primitive flashblock type functionality. + +use derive_more::{Display, Error}; + +/// Errors that can occur while decoding a flashblock payload. +#[derive(Debug, Display, Error)] +pub enum FlashblockDecodeError { + /// Failed to deserialize the flashblock payload JSON into the expected struct. + #[display("failed to parse flashblock payload JSON: {_0}")] + PayloadParse(serde_json::Error), + /// Failed to deserialize the flashblock metadata into the expected struct. + #[display("failed to parse flashblock metadata: {_0}")] + MetadataParse(serde_json::Error), + /// Brotli decompression failed. + #[display("failed to decompress brotli payload: {_0}")] + Decompress(std::io::Error), + /// The decompressed payload was not valid UTF-8 JSON. + #[display("decompressed payload is not valid UTF-8 JSON: {_0}")] + Utf8(std::string::FromUtf8Error), +} + +#[cfg(test)] +mod tests { + use rstest::rstest; + use serde::de::Error as _; + + use super::*; + + #[rstest] + #[case::payload_parse(FlashblockDecodeError::PayloadParse(serde_json::Error::custom("test")))] + #[case::metadata_parse(FlashblockDecodeError::MetadataParse(serde_json::Error::custom( + "test" + )))] + #[case::decompress(FlashblockDecodeError::Decompress(std::io::Error::new( + std::io::ErrorKind::Other, + "test" + )))] + #[case::utf8(FlashblockDecodeError::Utf8(String::from_utf8(vec![0xff, 0xfe]).unwrap_err()))] + fn test_flashblock_decode_error_display(#[case] error: FlashblockDecodeError) { + let display = format!("{}", error); + assert!(!display.is_empty()); + } +} diff --git a/crates/flashtypes/src/lib.rs b/crates/flashtypes/src/lib.rs new file mode 100644 index 00000000..16405685 --- /dev/null +++ b/crates/flashtypes/src/lib.rs @@ -0,0 +1,18 @@ +#![doc = include_str!("../README.md")] +#![doc(issue_tracker_base_url = "https://github.com/base/node-reth/issues/")] +#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(not(test), warn(unused_crate_dependencies))] + +mod block; +pub use block::Flashblock; + +mod metadata; +pub use metadata::Metadata; + +mod error; +pub use error::FlashblockDecodeError; + +mod payload; +pub use payload::{ + ExecutionPayloadBaseV1, ExecutionPayloadFlashblockDeltaV1, FlashblocksPayloadV1, +}; diff --git a/crates/flashtypes/src/metadata.rs b/crates/flashtypes/src/metadata.rs new file mode 100644 index 00000000..daa4190c --- /dev/null +++ b/crates/flashtypes/src/metadata.rs @@ -0,0 +1,16 @@ +//! Contains the [`Metadata`] type used in Flashblocks. + +use alloy_primitives::{Address, B256, U256, map::foldhash::HashMap}; +use reth_optimism_primitives::OpReceipt; +use serde::{Deserialize, Serialize}; + +/// Metadata associated with a flashblock. +#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Default)] +pub struct Metadata { + /// Transaction receipts indexed by hash. + pub receipts: HashMap, + /// Updated account balances. + pub new_account_balances: HashMap, + /// Block number this flashblock belongs to. + pub block_number: u64, +} diff --git a/crates/flashtypes/src/payload.rs b/crates/flashtypes/src/payload.rs new file mode 100644 index 00000000..71773082 --- /dev/null +++ b/crates/flashtypes/src/payload.rs @@ -0,0 +1,81 @@ +//! Contains payload types. + +use alloy_primitives::{Address, B256, Bloom, Bytes, U256}; +use alloy_rpc_types_engine::PayloadId; +use alloy_rpc_types_eth::Withdrawal; +use serde::{Deserialize, Serialize}; +use serde_json::Value; + +/// Represents the modified portions of an execution payload within a flashblock. +/// This structure contains only the fields that can be updated during block construction, +/// 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)] +pub struct ExecutionPayloadFlashblockDeltaV1 { + /// The state root of the block. + pub state_root: B256, + /// The receipts root of the block. + pub receipts_root: B256, + /// The logs bloom of the block. + pub logs_bloom: Bloom, + /// The gas used of the block. + #[serde(with = "alloy_serde::quantity")] + pub gas_used: u64, + /// The block hash of the block. + pub block_hash: B256, + /// The transactions of the block. + pub transactions: Vec, + /// Array of [`Withdrawal`] enabled with V2 + pub withdrawals: Vec, + /// The withdrawals root of the block. + pub withdrawals_root: B256, + /// The blob gas used + #[serde(default, skip_serializing_if = "Option::is_none", with = "alloy_serde::quantity::opt")] + pub blob_gas_used: Option, +} + +/// Represents the base configuration of an execution payload that remains constant +/// 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)] +pub struct ExecutionPayloadBaseV1 { + /// Ecotone parent beacon block root + pub parent_beacon_block_root: B256, + /// The parent hash of the block. + pub parent_hash: B256, + /// The fee recipient of the block. + pub fee_recipient: Address, + /// The previous randao of the block. + pub prev_randao: B256, + /// The block number. + #[serde(with = "alloy_serde::quantity")] + pub block_number: u64, + /// The gas limit of the block. + #[serde(with = "alloy_serde::quantity")] + pub gas_limit: u64, + /// The timestamp of the block. + #[serde(with = "alloy_serde::quantity")] + pub timestamp: u64, + /// The extra data of the block. + pub extra_data: Bytes, + /// The base fee per gas of the block. + pub base_fee_per_gas: U256, +} + +/// Represents a flashblock payload containing the base execution payload configuration, +#[derive(Clone, Debug, PartialEq, Default, Deserialize, Serialize)] +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, +} diff --git a/crates/rpc/Cargo.toml b/crates/rpc/Cargo.toml index 0b18eb9a..390fdf1a 100644 --- a/crates/rpc/Cargo.toml +++ b/crates/rpc/Cargo.toml @@ -11,7 +11,7 @@ repository.workspace = true workspace = true [dependencies] -# Project +# workspace base-reth-flashblocks.workspace = true # base/tips @@ -55,6 +55,7 @@ metrics.workspace = true metrics-derive.workspace = true [dev-dependencies] +base-flashtypes.workspace = true reth-optimism-primitives.workspace = true op-alloy-consensus.workspace = true alloy-genesis.workspace = true @@ -72,7 +73,6 @@ tokio.workspace = true tokio-tungstenite.workspace = true base-reth-test-utils.workspace = true httpmock.workspace = true -rollup-boost.workspace = true futures-util.workspace = true alloy-rpc-types-eth.workspace = true alloy-rpc-types-engine.workspace = true diff --git a/crates/rpc/tests/eth_call_erc20.rs b/crates/rpc/tests/eth_call_erc20.rs index ede369b7..86ba31bb 100644 --- a/crates/rpc/tests/eth_call_erc20.rs +++ b/crates/rpc/tests/eth_call_erc20.rs @@ -17,7 +17,9 @@ use alloy_primitives::{Address, B256, Bytes, LogData, TxHash, U256, map::HashMap use alloy_provider::Provider; use alloy_rpc_types_engine::PayloadId; use alloy_sol_types::{SolConstructor, SolValue}; -use base_reth_flashblocks::{Flashblock, Metadata}; +use base_flashtypes::{ + ExecutionPayloadBaseV1, ExecutionPayloadFlashblockDeltaV1, Flashblock, Metadata, +}; use base_reth_test_utils::{ FlashblocksHarness, L1_BLOCK_INFO_DEPOSIT_TX, L1_BLOCK_INFO_DEPOSIT_TX_HASH, MockERC20, TransparentUpgradeableProxy, @@ -25,7 +27,6 @@ use base_reth_test_utils::{ use eyre::Result; use op_alloy_consensus::OpDepositReceipt; use reth_optimism_primitives::OpReceipt; -use rollup_boost::{ExecutionPayloadBaseV1, ExecutionPayloadFlashblockDeltaV1}; /// ERC-20 Transfer event topic (keccak256("Transfer(address,address,uint256)")) const TRANSFER_EVENT_TOPIC: B256 = diff --git a/crates/rpc/tests/flashblocks_rpc.rs b/crates/rpc/tests/flashblocks_rpc.rs index 9532f6ff..fe9f103c 100644 --- a/crates/rpc/tests/flashblocks_rpc.rs +++ b/crates/rpc/tests/flashblocks_rpc.rs @@ -13,7 +13,9 @@ use alloy_rpc_client::RpcClient; use alloy_rpc_types::simulate::{SimBlock, SimulatePayload}; use alloy_rpc_types_engine::PayloadId; use alloy_rpc_types_eth::{TransactionInput, error::EthRpcErrorCode}; -use base_reth_flashblocks::{Flashblock, Metadata}; +use base_flashtypes::{ + ExecutionPayloadBaseV1, ExecutionPayloadFlashblockDeltaV1, Flashblock, Metadata, +}; use base_reth_test_utils::{ DoubleCounter, FlashblocksHarness, L1_BLOCK_INFO_DEPOSIT_TX, L1_BLOCK_INFO_DEPOSIT_TX_HASH, }; @@ -25,7 +27,6 @@ use op_alloy_rpc_types::OpTransactionRequest; use reth::revm::context::TransactionType; use reth_optimism_primitives::OpReceipt; use reth_rpc_eth_api::RpcReceipt; -use rollup_boost::{ExecutionPayloadBaseV1, ExecutionPayloadFlashblockDeltaV1}; use serde_json::json; use tokio_tungstenite::{connect_async, tungstenite::Message}; diff --git a/crates/test-utils/Cargo.toml b/crates/test-utils/Cargo.toml index 87f62efc..1b7bde33 100644 --- a/crates/test-utils/Cargo.toml +++ b/crates/test-utils/Cargo.toml @@ -13,6 +13,7 @@ workspace = true [dependencies] # Project +base-flashtypes.workspace = true base-reth-flashblocks.workspace = true base-reth-rpc.workspace = true diff --git a/crates/test-utils/src/flashblocks_harness.rs b/crates/test-utils/src/flashblocks_harness.rs index 402582c2..a1acaa2c 100644 --- a/crates/test-utils/src/flashblocks_harness.rs +++ b/crates/test-utils/src/flashblocks_harness.rs @@ -2,7 +2,7 @@ use std::sync::Arc; -use base_reth_flashblocks::Flashblock; +use base_flashtypes::Flashblock; use derive_more::Deref; use eyre::Result; use futures_util::Future; diff --git a/crates/test-utils/src/node.rs b/crates/test-utils/src/node.rs index 8f29a3de..700d9732 100644 --- a/crates/test-utils/src/node.rs +++ b/crates/test-utils/src/node.rs @@ -10,7 +10,8 @@ use std::{ use alloy_genesis::Genesis; use alloy_provider::RootProvider; use alloy_rpc_client::RpcClient; -use base_reth_flashblocks::{Flashblock, FlashblocksReceiver, FlashblocksState}; +use base_flashtypes::Flashblock; +use base_reth_flashblocks::{FlashblocksReceiver, FlashblocksState}; use base_reth_rpc::{EthApiExt, EthApiOverrideServer, EthPubSub, EthPubSubApiServer}; use eyre::Result; use futures_util::Future; From e6f1488a0328f1a0649d0c403b5931ff97316783 Mon Sep 17 00:00:00 2001 From: Andreas Bigger Date: Mon, 15 Dec 2025 11:00:24 -0500 Subject: [PATCH 2/5] feat(flashtypes): minimal flashblocks type crate to remove rollup-boost dep --- Cargo.toml | 3 --- 1 file changed, 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 524e7aab..6a860dca 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -63,9 +63,6 @@ base-reth-flashblocks = { path = "crates/flashblocks" } # base/tips tips-core = { git = "https://github.com/base/tips", rev = "b1dfde6a5c8f603f19f9309ca6dc015bad260b44" } -# rollup-boost -rollup-boost = { git = "http://github.com/flashbots/rollup-boost", rev = "v0.7.11" } - # reth reth = { git = "https://github.com/paradigmxyz/reth", tag = "v1.9.3" } reth-ipc = { git = "https://github.com/paradigmxyz/reth", tag = "v1.9.3" } From 3024da7858245e835586da14a578afbe02d048eb Mon Sep 17 00:00:00 2001 From: Andreas Bigger Date: Mon, 15 Dec 2025 11:17:07 -0500 Subject: [PATCH 3/5] fixes --- Cargo.lock | 1 + crates/test-utils/Cargo.toml | 1 + 2 files changed, 2 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index 492d411f..10b04d89 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1680,6 +1680,7 @@ dependencies = [ "futures-util", "jsonrpsee", "once_cell", + "op-alloy-consensus", "op-alloy-network", "op-alloy-rpc-types", "op-alloy-rpc-types-engine", diff --git a/crates/test-utils/Cargo.toml b/crates/test-utils/Cargo.toml index 1b7bde33..d39f555a 100644 --- a/crates/test-utils/Cargo.toml +++ b/crates/test-utils/Cargo.toml @@ -52,6 +52,7 @@ alloy-signer-local = "1.1.0" op-alloy-rpc-types.workspace = true op-alloy-rpc-types-engine.workspace = true op-alloy-network.workspace = true +op-alloy-consensus.workspace = true # tokio tokio.workspace = true From 7935464820115e5368b2e470d20a08e2f60dcca8 Mon Sep 17 00:00:00 2001 From: Andreas Bigger Date: Mon, 15 Dec 2025 11:55:37 -0500 Subject: [PATCH 4/5] fix(ci): missing udeps check in just ci --- Cargo.lock | 1 - Justfile | 4 ++-- crates/flashblocks/Cargo.toml | 1 - 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 10b04d89..d8f5e6b5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1558,7 +1558,6 @@ dependencies = [ "reth-rpc-convert", "reth-rpc-eth-api", "reth-testing-utils", - "rstest", "tokio", "tokio-tungstenite 0.28.0", "tracing", diff --git a/Justfile b/Justfile index e2a756f2..b9df1e93 100644 --- a/Justfile +++ b/Justfile @@ -21,8 +21,8 @@ lychee: @command -v lychee >/dev/null 2>&1 || cargo install lychee lychee --config ./lychee.toml . -# Checks formatting, clippy, and tests -check: check-format check-clippy test +# Checks formatting, udeps, clippy, and tests +check: check-format check-udeps check-clippy test # Fixes formatting and clippy issues fix: format-fix clippy-fix zepter-fix diff --git a/crates/flashblocks/Cargo.toml b/crates/flashblocks/Cargo.toml index aa8c8c5c..b649312b 100644 --- a/crates/flashblocks/Cargo.toml +++ b/crates/flashblocks/Cargo.toml @@ -57,7 +57,6 @@ metrics-derive.workspace = true [dev-dependencies] rand.workspace = true -rstest.workspace = true reth-db.workspace = true once_cell.workspace = true reth-provider.workspace = true From f97edbe90a3d442df8d776052a710b083c36ade2 Mon Sep 17 00:00:00 2001 From: Andreas Bigger Date: Mon, 22 Dec 2025 11:53:09 -0500 Subject: [PATCH 5/5] fix(ci): lints :bug: --- Cargo.lock | 1 - crates/flashblocks/benches/pending_state.rs | 6 +++--- crates/test-utils/Cargo.toml | 1 - 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d8f5e6b5..aebb5828 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1679,7 +1679,6 @@ dependencies = [ "futures-util", "jsonrpsee", "once_cell", - "op-alloy-consensus", "op-alloy-network", "op-alloy-rpc-types", "op-alloy-rpc-types-engine", diff --git a/crates/flashblocks/benches/pending_state.rs b/crates/flashblocks/benches/pending_state.rs index 0671a2d8..4b4eb484 100644 --- a/crates/flashblocks/benches/pending_state.rs +++ b/crates/flashblocks/benches/pending_state.rs @@ -9,9 +9,10 @@ use alloy_consensus::Receipt; use alloy_eips::{BlockHashOrNumber, Encodable2718}; use alloy_primitives::{Address, B256, BlockNumber, Bytes, U256, b256, bytes, hex::FromHex}; use alloy_rpc_types_engine::PayloadId; -use base_reth_flashblocks::{ - Flashblock, FlashblocksAPI, FlashblocksReceiver, FlashblocksState, Metadata, +use base_flashtypes::{ + ExecutionPayloadBaseV1, ExecutionPayloadFlashblockDeltaV1, Flashblock, Metadata, }; +use base_reth_flashblocks::{FlashblocksAPI, FlashblocksReceiver, FlashblocksState}; use base_reth_test_utils::{LocalNodeProvider, TestAccounts, TestHarness}; use criterion::{BatchSize, Criterion, Throughput, criterion_group, criterion_main}; use op_alloy_consensus::OpDepositReceipt; @@ -22,7 +23,6 @@ use reth::{ }; use reth_optimism_primitives::{OpBlock, OpReceipt, OpTransactionSigned}; use reth_primitives_traits::{Block as BlockT, RecoveredBlock}; -use rollup_boost::{ExecutionPayloadBaseV1, ExecutionPayloadFlashblockDeltaV1}; use tokio::{runtime::Runtime, time::sleep}; use tracing_subscriber::{EnvFilter, filter::LevelFilter}; diff --git a/crates/test-utils/Cargo.toml b/crates/test-utils/Cargo.toml index d39f555a..1b7bde33 100644 --- a/crates/test-utils/Cargo.toml +++ b/crates/test-utils/Cargo.toml @@ -52,7 +52,6 @@ alloy-signer-local = "1.1.0" op-alloy-rpc-types.workspace = true op-alloy-rpc-types-engine.workspace = true op-alloy-network.workspace = true -op-alloy-consensus.workspace = true # tokio tokio.workspace = true