Skip to content

Commit 94fc530

Browse files
committed
Merge branch 'main' into feat/bump-reth
2 parents ec4ee60 + 34cc769 commit 94fc530

File tree

5 files changed

+48
-18
lines changed

5 files changed

+48
-18
lines changed

crates/node/src/add_ons/mod.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,15 @@ use reth_scroll_node::{
2424
use reth_scroll_primitives::ScrollPrimitives;
2525
use reth_scroll_rpc::{eth::ScrollEthApiBuilder, ScrollEthApi, ScrollEthApiError};
2626
use scroll_alloy_evm::ScrollTransactionIntoTxEnv;
27+
use scroll_wire::ScrollWireEvent;
2728

2829
mod handle;
2930
pub use handle::ScrollAddOnsHandle;
3031

3132
mod rollup;
3233
pub use rollup::IsDevChain;
3334
use rollup::RollupManagerAddOn;
35+
use tokio::sync::mpsc::UnboundedReceiver;
3436

3537
/// Add-ons for the Scroll follower node.
3638
#[derive(Debug)]
@@ -57,9 +59,12 @@ where
5759
ScrollEthApiBuilder: EthApiBuilder<N>,
5860
{
5961
/// Create a new instance of [`ScrollRollupNodeAddOns`].
60-
pub fn new(config: ScrollRollupNodeConfig) -> Self {
62+
pub fn new(
63+
config: ScrollRollupNodeConfig,
64+
scroll_wire_event: UnboundedReceiver<ScrollWireEvent>,
65+
) -> Self {
6166
let rpc_add_ons = RpcAddOns::default();
62-
let rollup_manager_addon = RollupManagerAddOn::new(config);
67+
let rollup_manager_addon = RollupManagerAddOn::new(config, scroll_wire_event);
6368
Self { rpc_add_ons, rollup_manager_addon }
6469
}
6570
}

crates/node/src/add_ons/rollup.rs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,9 @@ use reth_scroll_node::ScrollNetworkPrimitives;
1111
use rollup_node_manager::RollupManagerHandle;
1212
use rollup_node_watcher::L1Notification;
1313
use scroll_alloy_hardforks::ScrollHardforks;
14+
use scroll_wire::ScrollWireEvent;
1415
use std::sync::Arc;
15-
use tokio::sync::mpsc::Sender;
16+
use tokio::sync::mpsc::{Sender, UnboundedReceiver};
1617

1718
/// Implementing the trait allows the type to return whether it is configured for dev chain.
1819
#[auto_impl::auto_impl(Arc)]
@@ -32,12 +33,16 @@ impl IsDevChain for ScrollChainSpec {
3233
#[derive(Debug)]
3334
pub struct RollupManagerAddOn {
3435
config: ScrollRollupNodeConfig,
36+
scroll_wire_event: UnboundedReceiver<ScrollWireEvent>,
3537
}
3638

3739
impl RollupManagerAddOn {
3840
/// Create a new rollup node manager addon.
39-
pub const fn new(config: ScrollRollupNodeConfig) -> Self {
40-
Self { config }
41+
pub const fn new(
42+
config: ScrollRollupNodeConfig,
43+
scroll_wire_event: UnboundedReceiver<ScrollWireEvent>,
44+
) -> Self {
45+
Self { config, scroll_wire_event }
4146
}
4247

4348
/// Launch the rollup node manager addon.
@@ -54,6 +59,7 @@ impl RollupManagerAddOn {
5459
.config
5560
.build(
5661
ctx.node.network().clone(),
62+
self.scroll_wire_event,
5763
rpc.rpc_server_handles,
5864
ctx.config.chain.clone(),
5965
ctx.config.datadir().db(),

crates/node/src/args.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use alloy_signer_local::PrivateKeySigner;
1111
use alloy_transport::layers::RetryBackoffLayer;
1212
use aws_sdk_kms::config::BehaviorVersion;
1313
use reth_chainspec::EthChainSpec;
14-
use reth_network::{protocol::IntoRlpxSubProtocol, NetworkProtocols};
14+
use reth_network::NetworkProtocols;
1515
use reth_network_api::FullNetwork;
1616
use reth_node_builder::rpc::RethRpcServerHandles;
1717
use reth_node_core::primitives::BlockHeader;
@@ -34,9 +34,9 @@ use scroll_db::{Database, DatabaseConnectionProvider, DatabaseOperations};
3434
use scroll_engine::{genesis_hash_from_chain_spec, EngineDriver, ForkchoiceState};
3535
use scroll_migration::traits::ScrollMigrator;
3636
use scroll_network::ScrollNetworkManager;
37-
use scroll_wire::{ScrollWireConfig, ScrollWireProtocolHandler};
37+
use scroll_wire::ScrollWireEvent;
3838
use std::{fs, path::PathBuf, sync::Arc, time::Duration};
39-
use tokio::sync::mpsc::Sender;
39+
use tokio::sync::mpsc::{Sender, UnboundedReceiver};
4040

4141
/// A struct that represents the arguments for the rollup node.
4242
#[derive(Debug, Clone, clap::Args)]
@@ -96,6 +96,7 @@ impl ScrollRollupNodeConfig {
9696
>(
9797
self,
9898
network: N,
99+
events: UnboundedReceiver<ScrollWireEvent>,
99100
rpc_server_handles: RethRpcServerHandles,
100101
chain_spec: CS,
101102
db_path: PathBuf,
@@ -112,9 +113,6 @@ impl ScrollRollupNodeConfig {
112113
Option<Sender<Arc<L1Notification>>>,
113114
)> {
114115
// Instantiate the network manager
115-
let (scroll_wire_handler, events) =
116-
ScrollWireProtocolHandler::new(ScrollWireConfig::new(true));
117-
network.add_rlpx_sub_protocol(scroll_wire_handler.into_rlpx_sub_protocol());
118116
let scroll_network_manager = ScrollNetworkManager::from_parts(network.clone(), events);
119117

120118
// Get the rollup node config.

crates/node/src/node.rs

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ use crate::args::ScrollRollupNodeConfig;
44
use std::time::Duration;
55

66
use super::add_ons::ScrollRollupNodeAddOns;
7+
use reth_network::protocol::IntoRlpxSubProtocol;
78
use reth_node_api::NodeTypes;
89
use reth_node_builder::{
910
components::{BasicPayloadServiceBuilder, ComponentsBuilder},
@@ -13,11 +14,15 @@ use reth_scroll_node::{
1314
ScrollConsensusBuilder, ScrollExecutorBuilder, ScrollNetworkBuilder, ScrollNode,
1415
ScrollPayloadBuilderBuilder, ScrollPoolBuilder,
1516
};
17+
use scroll_wire::{ScrollWireConfig, ScrollWireEvent, ScrollWireProtocolHandler};
18+
use std::sync::Arc;
19+
use tokio::sync::{mpsc::UnboundedReceiver, Mutex};
1620

1721
/// The Scroll node implementation.
1822
#[derive(Clone, Debug)]
1923
pub struct ScrollRollupNode {
2024
config: ScrollRollupNodeConfig,
25+
scroll_wire_events: Arc<Mutex<Option<UnboundedReceiver<ScrollWireEvent>>>>,
2126
}
2227

2328
impl ScrollRollupNode {
@@ -27,7 +32,8 @@ impl ScrollRollupNode {
2732
.validate()
2833
.map_err(|e| eyre::eyre!("Configuration validation failed: {}", e))
2934
.expect("Configuration validation failed");
30-
Self { config }
35+
36+
Self { config, scroll_wire_events: Arc::new(Mutex::new(None)) }
3137
}
3238
}
3339

@@ -49,18 +55,29 @@ where
4955
>;
5056

5157
fn components_builder(&self) -> Self::ComponentsBuilder {
52-
ScrollNode::components().payload(BasicPayloadServiceBuilder::new(
53-
ScrollPayloadBuilderBuilder {
58+
let (scroll_wire_handler, events) =
59+
ScrollWireProtocolHandler::new(ScrollWireConfig::new(true));
60+
61+
*self.scroll_wire_events.try_lock().unwrap() = Some(events);
62+
63+
ScrollNode::components()
64+
.payload(BasicPayloadServiceBuilder::new(ScrollPayloadBuilderBuilder {
5465
payload_building_time_limit: Duration::from_millis(
5566
self.config.sequencer_args.payload_building_duration,
5667
),
5768
best_transactions: (),
58-
},
59-
))
69+
}))
70+
.network(
71+
ScrollNetworkBuilder::new()
72+
.with_sub_protocol(scroll_wire_handler.into_rlpx_sub_protocol()),
73+
)
6074
}
6175

6276
fn add_ons(&self) -> Self::AddOns {
63-
ScrollRollupNodeAddOns::new(self.config.clone())
77+
ScrollRollupNodeAddOns::new(
78+
self.config.clone(),
79+
self.scroll_wire_events.try_lock().unwrap().take().unwrap(),
80+
)
6481
}
6582
}
6683

crates/node/tests/e2e.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use rollup_node_sequencer::L1MessageInclusionMode;
1818
use rollup_node_watcher::L1Notification;
1919
use scroll_alloy_consensus::TxL1Message;
2020
use scroll_network::{NewBlockWithPeer, SCROLL_MAINNET};
21-
use scroll_wire::ScrollWireConfig;
21+
use scroll_wire::{ScrollWireConfig, ScrollWireProtocolHandler};
2222
use std::{
2323
path::PathBuf,
2424
sync::Arc,
@@ -277,10 +277,12 @@ async fn graceful_shutdown_consolidates_most_recent_batch_on_startup() -> eyre::
277277
.expect("valid url that will not be used as test batches use calldata"),
278278
);
279279

280+
let (_, events) = ScrollWireProtocolHandler::new(ScrollWireConfig::new(true));
280281
let (mut rnm, handle, l1_notification_tx) = config
281282
.clone()
282283
.build(
283284
node.inner.network.clone(),
285+
events,
284286
node.inner.add_ons_handle.rpc_handle.rpc_server_handles.clone(),
285287
chain_spec.clone(),
286288
path.clone(),
@@ -384,10 +386,12 @@ async fn graceful_shutdown_consolidates_most_recent_batch_on_startup() -> eyre::
384386
drop(rnm_events);
385387

386388
// Start the RNM again.
389+
let (_, events) = ScrollWireProtocolHandler::new(ScrollWireConfig::new(true));
387390
let (mut rnm, handle, l1_notification_tx) = config
388391
.clone()
389392
.build(
390393
node.inner.network.clone(),
394+
events,
391395
node.inner.add_ons_handle.rpc_handle.rpc_server_handles.clone(),
392396
chain_spec,
393397
path.clone(),

0 commit comments

Comments
 (0)