Skip to content

Conversation

@meyer9
Copy link
Contributor

@meyer9 meyer9 commented Jan 14, 2026

This will allow customizing parts of the node further. The main goal is to customize the engine validator which handles executing blocks which need to be validated. (#465 builds on this to implement this)

I copied the OpNode implementation and removed all of the components we're not changing. This left me with just the node, addons and addon builder.

We can also probably remove some features we're not using from here, but to keep this PR straightforward, I haven't changed it from the Reth version other than removing code that isn't going to be customized.

@cb-heimdall
Copy link
Collaborator

cb-heimdall commented Jan 14, 2026

✅ Heimdall Review Status

Requirement Status More Info
Reviews 1/1
Denominator calculation
Show calculation
1 if user is bot 0
1 if user is external 0
2 if repo is sensitive 0
From .codeflow.yml 1
Additional review requirements
Show calculation
Max 0
0
From CODEOWNERS 0
Global minimum 0
Max 1
1
1 if commit is unverified 1
Sum 2

@meyer9 meyer9 marked this pull request as ready for review January 14, 2026 19:27
@haardikk21
Copy link
Collaborator

haardikk21 commented Jan 14, 2026

Since the goal is specifically to be able to add some custom addons/components to the node, I wonder if this could be further simplified and we can just install the addon directly either in:

Is it not possible to just add an additional component without needing to rewire the whole OpNode setup? Based on Reth's examples of adding custom components, I haven't seen them needing to rewire OpNode or EthereumNode to be able to add a custom component anywhere

ignore

Comment on lines +471 to +489
let maybe_pre_bedrock_historical_rpc = historical_rpc
.and_then(|historical_rpc| {
ctx.node
.provider()
.chain_spec()
.op_fork_activation(OpHardfork::Bedrock)
.block_number()
.filter(|activation| *activation > 0)
.map(|bedrock_block| (historical_rpc, bedrock_block))
})
.map(|(historical_rpc, bedrock_block)| -> eyre::Result<_> {
info!(target: "reth::cli", %bedrock_block, ?historical_rpc, "Using historical RPC endpoint pre bedrock");
let provider = ctx.node.provider().clone();
let client = HistoricalRpcClient::new(&historical_rpc)?;
let layer = HistoricalRpc::new(provider, client, bedrock_block);
Ok(layer)
})
.transpose()?
;
Copy link
Contributor

Choose a reason for hiding this comment

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

Ah yea this can go

@meyer9
Copy link
Contributor Author

meyer9 commented Jan 14, 2026

Opened an issue here for cleaning up some OP specific stuff we don't need: #467

}
}

/// A regular optimism evm and executor builder.
Copy link
Contributor

Choose a reason for hiding this comment

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

Maybe we could split everything here and below into a new builder.rs module just so this file doesn't bloat

Copy link
Contributor Author

Choose a reason for hiding this comment

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

sounds good, yeah maybe the Addons and AddonsBuilder can be moved. I'll add that to the next PR and take a swing at it today.

Copy link
Contributor

@refcell refcell left a comment

Choose a reason for hiding this comment

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

As discussed offline, other cleanup can be done in followups :)

@meyer9 meyer9 added this pull request to the merge queue Jan 14, 2026
Merged via the queue into main with commit c003e38 Jan 14, 2026
15 checks passed
@meyer9 meyer9 deleted the meyer9/custom-base-node branch January 14, 2026 20:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants