Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4,302 changes: 2,198 additions & 2,104 deletions Cargo.lock

Large diffs are not rendered by default.

191 changes: 103 additions & 88 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
[workspace.package]
version = "0.2.6"
edition = "2024"
rust-version = "1.86"
rust-version = "1.88"
license = "MIT OR Apache-2.0"
homepage = "https://github.com/flashbots/op-rbuilder"
repository = "https://github.com/flashbots/op-rbuilder"
exclude = [".github/"]

[workspace]
members = [ "crates/op-rbuilder", "crates/tdx-quote-provider"]
members = ["crates/op-rbuilder", "crates/tdx-quote-provider"]
default-members = ["crates/op-rbuilder"]
resolver = "2"

Expand Down Expand Up @@ -43,115 +43,129 @@ incremental = false
unreachable_pub = "warn"

[workspace.dependencies]
reth = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-chain-state = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-cli = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-cli-commands = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-cli-util = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-db = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-db-common = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-errors = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-payload-builder = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-node-api = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-rpc-engine-api = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-node-ethereum = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-trie = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-trie-parallel = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-basic-payload-builder = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-node-core = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-primitives = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-primitives-traits = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-provider = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2", features = [
reth = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-chain-state = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-cli = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-cli-commands = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-cli-util = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-db = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-db-common = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-errors = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-payload-builder = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-node-api = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-rpc-engine-api = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-node-ethereum = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-trie = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-trie-parallel = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-basic-payload-builder = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-node-core = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-primitives = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-primitives-traits = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-provider = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1", features = [
"test-utils",
] }

reth-chainspec = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-storage-api = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-rpc-api = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-evm = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-evm-ethereum = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-execution-errors = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-exex = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-tasks = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-metrics = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-trie-db = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-payload-primitives = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-transaction-pool = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-execution-types = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-revm = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-payload-builder-primitives = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-payload-util = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-rpc-layer = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-network-peers = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-testing-utils = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-node-builder = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-rpc-eth-types = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-tracing-otlp = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-ipc = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-chainspec = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-storage-api = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-rpc-api = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-evm = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-evm-ethereum = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-execution-errors = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-exex = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-tasks = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-metrics = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-trie-db = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-payload-primitives = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-transaction-pool = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-execution-types = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-revm = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-payload-builder-primitives = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-payload-util = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-rpc-layer = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-network-peers = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-testing-utils = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-node-builder = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-rpc-eth-types = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-tracing-otlp = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-ipc = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }

# reth optimism
reth-optimism-primitives = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-optimism-consensus = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-optimism-cli = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-optimism-forks = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-optimism-evm = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-optimism-node = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-optimism-payload-builder = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-optimism-chainspec = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-optimism-txpool = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
reth-optimism-rpc = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2", features = [
reth-optimism-primitives = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-optimism-consensus = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-optimism-cli = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-optimism-forks = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-optimism-evm = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-optimism-node = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-optimism-payload-builder = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-optimism-chainspec = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-optimism-txpool = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1" }
reth-optimism-rpc = { git = "https://github.com/paradigmxyz/reth", version = "1.9.1", features = [
"client",
] }

revm = { version = "29.0.1", features = [
revm = { version = "31.0.0", features = [
"std",
"secp256k1",
"optional_balance_check",
], default-features = false }
revm-inspectors = { version = "0.30.0", default-features = false }
op-revm = { version = "10.1.0", default-features = false }
revm-inspectors = { version = "0.32.0", default-features = false }
op-revm = { version = "12.0.0", default-features = false }
revm-bytecode = { version = "7.1.0", default-features = false }
revm-database = { version = "9.0.3", default-features = false }
revm-state = { version = "8.1.0", default-features = false }
revm-primitives = { version = "21.0.1", default-features = false }
revm-interpreter = { version = "29.0.0", default-features = false }
revm-inspector = { version = "12.0.0", default-features = false }
revm-context = { version = "11.0.0", default-features = false }
revm-context-interface = { version = "12.0.0", default-features = false }
revm-database-interface = { version = "8.0.4", default-features = false }

ethereum_ssz_derive = "0.9.0"
ethereum_ssz = "0.9.0"

alloy-primitives = { version = "1.3.1", default-features = false }
alloy-primitives = { version = "1.4.1", default-features = false, features = [
"map-foldhash",
] }
alloy-rlp = "0.3.10"
alloy-chains = "0.2.5"
alloy-contract = { version = "1.0.37" }
alloy-evm = { version = "0.21.0", default-features = false }
alloy-provider = { version = "1.0.37", features = [
alloy-contract = { version = "1.0.41" }
alloy-evm = { version = "0.23.0", default-features = false }
alloy-provider = { version = "1.0.41", features = [
"ipc",
"pubsub",
"txpool-api",
"engine-api",
] }
alloy-pubsub = { version = "1.0.37" }
alloy-eips = { version = "1.0.37" }
alloy-rpc-types = { version = "1.0.37" }
alloy-json-rpc = { version = "1.0.37" }
alloy-transport-http = { version = "1.0.37" }
alloy-network = { version = "1.0.37" }
alloy-network-primitives = { version = "1.0.37" }
alloy-transport = { version = "1.0.37" }
alloy-node-bindings = { version = "1.0.37" }
alloy-consensus = { version = "1.0.37", features = ["kzg"] }
alloy-serde = { version = "1.0.37" }
alloy-pubsub = { version = "1.0.41" }
alloy-eips = { version = "1.0.41" }
alloy-rpc-types = { version = "1.0.41" }
alloy-json-rpc = { version = "1.0.41" }
alloy-transport-http = { version = "1.0.41" }
alloy-network = { version = "1.0.41" }
alloy-network-primitives = { version = "1.0.41" }
alloy-transport = { version = "1.0.41" }
alloy-node-bindings = { version = "1.0.41" }
alloy-consensus = { version = "1.0.41", features = ["kzg"] }
alloy-serde = { version = "1.0.41" }
alloy-sol-types = { version = "1.2.1", features = ["json"] }
alloy-rpc-types-beacon = { version = "1.0.37", features = ["ssz"] }
alloy-rpc-types-engine = { version = "1.0.37", features = ["ssz"] }
alloy-rpc-types-eth = { version = "1.0.37" }
alloy-signer-local = { version = "1.0.37" }
alloy-rpc-client = { version = "1.0.37" }
alloy-genesis = { version = "1.0.37" }
alloy-rpc-types-beacon = { version = "1.0.41", features = ["ssz"] }
alloy-rpc-types-engine = { version = "1.0.41", features = ["ssz"] }
alloy-rpc-types-eth = { version = "1.0.41" }
alloy-signer-local = { version = "1.0.41" }
alloy-rpc-client = { version = "1.0.41" }
alloy-genesis = { version = "1.0.41" }
alloy-trie = { version = "0.9.1" }

alloy-hardforks = "0.4.4"

# optimism
alloy-op-evm = { version = "0.21.0", default-features = false }
op-alloy-rpc-types = { version = "0.20.0", default-features = false }
op-alloy-rpc-types-engine = { version = "0.20.0", default-features = false }
op-alloy-rpc-jsonrpsee = { version = "0.20.0", default-features = false }
op-alloy-network = { version = "0.20.0", default-features = false }
op-alloy-consensus = { version = "0.20.0", default-features = false }
alloy-op-evm = { version = "0.23.1", default-features = false }
alloy-op-hardforks = "0.4.4"
op-alloy-rpc-types = { version = "0.22.0", default-features = false }
op-alloy-rpc-types-engine = { version = "0.22.0", default-features = false }
op-alloy-rpc-jsonrpsee = { version = "0.22.0", default-features = false }
op-alloy-network = { version = "0.22.0", default-features = false }
op-alloy-consensus = { version = "0.22.0", default-features = false }
op-alloy-flz = { version = "0.13.1", default-features = false }

async-trait = { version = "0.1.83" }
Expand All @@ -163,16 +177,17 @@ jsonrpsee = { version = "0.26.0" }
jsonrpsee-types = { version = "0.26.0" }
jsonrpsee-core = { version = "0.26.0" }
parking_lot = { version = "0.12.3" }
tokio = { version = "1.40.0" }
tokio = { version = "1.44.2", default-features = false }
auto_impl = { version = "1.2.0" }
reqwest = { version = "0.12.8" }
serde = { version = "1.0.210" }
serde_json = { version = "1.0.128" }
serde_with = { version = "3.8.1" }
secp256k1 = { version = "0.30" }
derive_more = { version = "2" }
tokio-stream = "0.1.16"
tokio-util = "0.7.12"
either = { version = "1.15.0", default-features = false }
tokio-stream = "0.1.11"
tokio-util = { version = "0.7.4", features = ["codec"] }
url = "2.5.2"
warp = "0.3.7"
flate2 = "1.0.37"
Expand All @@ -188,4 +203,4 @@ ahash = "0.8.6"
time = { version = "0.3.36", features = ["macros", "formatting", "parsing"] }
vergen = "9.0.4"
vergen-git2 = "1.0.5"
opentelemetry = { version = "0.29.1", features = ["trace"] }
opentelemetry = { version = "0.31", features = ["trace"] }
3 changes: 2 additions & 1 deletion crates/op-rbuilder/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ async-trait = { workspace = true }
clap_builder = { workspace = true }
clap.workspace = true
derive_more.workspace = true
either.workspace = true
metrics.workspace = true
serde_json.workspace = true
tokio-util.workspace = true
Expand Down Expand Up @@ -128,7 +129,7 @@ hex = "0.4"
reqwest = "0.12.23"
k256 = "0.13.4"

rollup-boost = { git = "http://github.com/flashbots/rollup-boost", rev = "b86af43969557bee18f17ec1d6bcd3e984f910b2" }
rollup-boost = { git = "http://github.com/base/rollup-boost", rev = "34fe1377635baf067b54b810564f18d069f63105" }
Copy link
Contributor

@theochap theochap Nov 6, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
rollup-boost = { git = "http://github.com/base/rollup-boost", rev = "34fe1377635baf067b54b810564f18d069f63105" }
rollup-boost = { git = "http://github.com/flashbots/rollup-boost", rev = "53a4d71" }

With relevant commit hash, once flashbots/rollup-boost#431 lands

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
rollup-boost = { git = "http://github.com/base/rollup-boost", rev = "34fe1377635baf067b54b810564f18d069f63105" }
rollup-boost = { git = "http://github.com/flashbots/rollup-boost", rev = "15860a0" }


nanoid = { version = "0.4", optional = true }
reth-ipc = { workspace = true, optional = true }
Expand Down
8 changes: 4 additions & 4 deletions crates/op-rbuilder/src/args/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,10 @@ impl CliExt for Cli {
/// Returns the type of builder implementation that the node is started with.
/// Currently supports `Standard` and `Flashblocks` modes.
fn builder_mode(&self) -> BuilderMode {
if let Commands::Node(ref node_command) = self.command {
if node_command.ext.flashblocks.enabled {
return BuilderMode::Flashblocks;
}
if let Commands::Node(ref node_command) = self.command
&& node_command.ext.flashblocks.enabled
{
return BuilderMode::Flashblocks;
}
BuilderMode::Standard
}
Expand Down
27 changes: 22 additions & 5 deletions crates/op-rbuilder/src/builders/builder_tx.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use alloy_consensus::TxEip1559;
use alloy_eips::{Encodable2718, eip7623::TOTAL_COST_FLOOR_PER_TOKEN};
use alloy_evm::Database;
use alloy_evm::{Database, EvmError, InvalidTxError};
use alloy_primitives::{
Address, B256, Log, TxKind, U256,
map::foldhash::{HashSet, HashSetExt},
Expand All @@ -18,7 +18,7 @@ use revm::{
DatabaseCommit,
context::result::{EVMError, ResultAndState},
};
use tracing::warn;
use tracing::{trace, warn};

use crate::{
builders::context::OpPayloadBuilderCtx, primitives::reth::ExecutionInfo, tx_signer::Signer,
Expand Down Expand Up @@ -126,9 +126,26 @@ pub trait BuilderTransactions<ExtraCtx: Debug + Default = ()>: Debug {
continue;
}

let ResultAndState { result, state } = evm
.transact(&builder_tx.signed_tx)
.map_err(|err| BuilderTransactionError::EvmExecutionError(Box::new(err)))?;
let ResultAndState { result, state } = match evm.transact(&builder_tx.signed_tx) {
Ok(res) => res,
Err(err) => {
if let Some(err) = err.as_invalid_tx_err() {
if err.is_nonce_too_low() {
// if the nonce is too low, we can skip this transaction
trace!(target: "payload_builder", %err, ?builder_tx.signed_tx, "skipping nonce too low builder transaction");
} else {
// if the transaction is invalid, we can skip it and all of its
// descendants
trace!(target: "payload_builder", %err, ?builder_tx.signed_tx, "skipping invalid builder transaction and its descendants");
invalid.insert(builder_tx.signed_tx.signer());
}

continue;
}
// this is an error that we should treat as fatal for this attempt
return Err(BuilderTransactionError::EvmExecutionError(Box::new(err)));
}
};

if !result.is_success() {
warn!(target: "payload_builder", tx_hash = ?builder_tx.signed_tx.tx_hash(), "builder tx reverted");
Expand Down
Loading