mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
feat: integrate engine2 for optimism (#10222)
This commit is contained in:
@ -2,7 +2,11 @@
|
|||||||
|
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
use reth::cli::Cli;
|
use reth::cli::Cli;
|
||||||
use reth_node_optimism::{args::RollupArgs, rpc::SequencerClient, OptimismNode};
|
use reth_node_builder::EngineNodeLauncher;
|
||||||
|
use reth_node_optimism::{
|
||||||
|
args::RollupArgs, node::OptimismAddOns, rpc::SequencerClient, OptimismNode,
|
||||||
|
};
|
||||||
|
use reth_provider::providers::BlockchainProvider2;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
// We use jemalloc for performance reasons
|
// We use jemalloc for performance reasons
|
||||||
@ -23,14 +27,44 @@ fn main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if let Err(err) = Cli::<RollupArgs>::parse().run(|builder, rollup_args| async move {
|
if let Err(err) = Cli::<RollupArgs>::parse().run(|builder, rollup_args| async move {
|
||||||
|
let enable_engine2 = rollup_args.experimental;
|
||||||
|
let sequencer_http_arg = rollup_args.sequencer_http.clone();
|
||||||
|
match enable_engine2 {
|
||||||
|
true => {
|
||||||
|
let handle = builder
|
||||||
|
.with_types_and_provider::<OptimismNode, BlockchainProvider2<_>>()
|
||||||
|
.with_components(OptimismNode::components(rollup_args))
|
||||||
|
.with_add_ons::<OptimismAddOns>()
|
||||||
|
.extend_rpc_modules(move |ctx| {
|
||||||
|
// register sequencer tx forwarder
|
||||||
|
if let Some(sequencer_http) = sequencer_http_arg {
|
||||||
|
ctx.registry.set_eth_raw_transaction_forwarder(Arc::new(
|
||||||
|
SequencerClient::new(sequencer_http),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
})
|
||||||
|
.launch_with_fn(|builder| {
|
||||||
|
let launcher = EngineNodeLauncher::new(
|
||||||
|
builder.task_executor().clone(),
|
||||||
|
builder.config().datadir(),
|
||||||
|
);
|
||||||
|
builder.launch_with(launcher)
|
||||||
|
})
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
handle.node_exit_future.await
|
||||||
|
}
|
||||||
|
false => {
|
||||||
let handle = builder
|
let handle = builder
|
||||||
.node(OptimismNode::new(rollup_args.clone()))
|
.node(OptimismNode::new(rollup_args.clone()))
|
||||||
.extend_rpc_modules(move |ctx| {
|
.extend_rpc_modules(move |ctx| {
|
||||||
// register sequencer tx forwarder
|
// register sequencer tx forwarder
|
||||||
if let Some(sequencer_http) = rollup_args.sequencer_http {
|
if let Some(sequencer_http) = sequencer_http_arg {
|
||||||
ctx.registry.set_eth_raw_transaction_forwarder(Arc::new(SequencerClient::new(
|
ctx.registry.set_eth_raw_transaction_forwarder(Arc::new(
|
||||||
sequencer_http,
|
SequencerClient::new(sequencer_http),
|
||||||
)));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
@ -39,6 +73,8 @@ fn main() {
|
|||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
handle.node_exit_future.await
|
handle.node_exit_future.await
|
||||||
|
}
|
||||||
|
}
|
||||||
}) {
|
}) {
|
||||||
eprintln!("Error: {err:?}");
|
eprintln!("Error: {err:?}");
|
||||||
std::process::exit(1);
|
std::process::exit(1);
|
||||||
|
|||||||
@ -33,6 +33,10 @@ pub struct RollupArgs {
|
|||||||
/// enables discovery v4 if provided
|
/// enables discovery v4 if provided
|
||||||
#[arg(long = "rollup.discovery.v4", default_value = "false")]
|
#[arg(long = "rollup.discovery.v4", default_value = "false")]
|
||||||
pub discovery_v4: bool,
|
pub discovery_v4: bool,
|
||||||
|
|
||||||
|
/// Enable the engine2 experimental features on op-reth binary
|
||||||
|
#[arg(long = "engine.experimental", default_value = "false")]
|
||||||
|
pub experimental: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
|||||||
Reference in New Issue
Block a user