From e1978b883a8451070e0339ae739bdbb3c59ddb9e Mon Sep 17 00:00:00 2001 From: Morty Date: Wed, 2 Jul 2025 02:34:38 +0800 Subject: [PATCH 1/8] feat: support forward tx to sequencer --- .gitignore | 3 +++ crates/manager/src/manager/mod.rs | 1 - crates/node/src/add_ons/mod.rs | 11 ++++++++--- crates/node/src/args.rs | 9 +++++++++ crates/node/src/test_utils.rs | 7 +++++++ crates/sequencer/tests/e2e.rs | 4 ++-- 6 files changed, 29 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index a6cb72de..99b29373 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,6 @@ target/ docker-compose/grafana_data/ docker-compose/l2reth/ docker-compose/prometheus_data/ + +# OS +.DS_Store \ No newline at end of file diff --git a/crates/manager/src/manager/mod.rs b/crates/manager/src/manager/mod.rs index e9051cef..9f8cce82 100644 --- a/crates/manager/src/manager/mod.rs +++ b/crates/manager/src/manager/mod.rs @@ -480,7 +480,6 @@ where SignerEvent::SignedBlock { block: block.clone(), signature }, )); } - this.network.handle().announce_block(block, signature); } } diff --git a/crates/node/src/add_ons/mod.rs b/crates/node/src/add_ons/mod.rs index bdebc926..925286d7 100644 --- a/crates/node/src/add_ons/mod.rs +++ b/crates/node/src/add_ons/mod.rs @@ -58,9 +58,14 @@ where { /// Create a new instance of [`ScrollRollupNodeAddOns`]. pub fn new(config: ScrollRollupNodeConfig) -> Self { - let rpc_add_ons = RpcAddOns::default(); + + let rpc_add_ons= RpcAddOns::new( + ScrollEthApiBuilder::default().with_sequencer(config.network_args.sequencer_url.clone()), + Default::default(), + Default::default(), + ); let rollup_manager_addon = RollupManagerAddOn::new(config); - Self { rpc_add_ons, rollup_manager_addon } + Self { rpc_add_ons, rollup_manager_addon} } } impl NodeAddOns for ScrollRollupNodeAddOns @@ -84,7 +89,7 @@ where self, ctx: reth_node_api::AddOnsContext<'_, N>, ) -> eyre::Result { - let Self { rpc_add_ons, rollup_manager_addon: rollup_node_manager_addon } = self; + let Self { rpc_add_ons, rollup_manager_addon: rollup_node_manager_addon , .. } = self; let rpc_handle: RpcHandle> = rpc_add_ons.launch_add_ons_with(ctx.clone(), |_| Ok(())).await?; let (rollup_manager_handle, l1_watcher_tx) = diff --git a/crates/node/src/args.rs b/crates/node/src/args.rs index dc6d6590..3c5cbd68 100644 --- a/crates/node/src/args.rs +++ b/crates/node/src/args.rs @@ -320,6 +320,15 @@ pub struct NetworkArgs { /// A bool that represents if the scroll wire protocol should be enabled. #[arg(long = "network.scroll-wire", default_value_t = true)] pub enable_scroll_wire: bool, + /// A bool that represents if the transaction broadcast should be disabled. + #[arg(long = "network.disable-tx-broadcast", default_value_t = false)] + pub disable_tx_broadcast: bool, + /// A bool that represents if the transaction receiving should be disabled. + #[arg(long = "network.disable-tx-receive", default_value_t = false)] + pub disable_tx_receive: bool, + /// The URL for the Sequencer RPC. (can be both HTTP and WS) + #[arg(long = "network.sequencer-url", id = "network_sequencer_url", value_name = "NETWORK_SEQUENCER_URL")] + pub sequencer_url: Option, } /// The arguments for the L1 provider. diff --git a/crates/node/src/test_utils.rs b/crates/node/src/test_utils.rs index 6d7d43b2..9024607e 100644 --- a/crates/node/src/test_utils.rs +++ b/crates/node/src/test_utils.rs @@ -133,6 +133,7 @@ pub fn default_test_scroll_rollup_node_config() -> ScrollRollupNodeConfig { network_args: crate::args::NetworkArgs { enable_eth_scroll_wire_bridge: true, enable_scroll_wire: true, + ..Default::default() }, database_args: DatabaseArgs { path: Some(PathBuf::from("sqlite::memory:")) }, l1_provider_args: L1ProviderArgs::default(), @@ -150,6 +151,12 @@ pub fn default_sequencer_test_scroll_rollup_node_config() -> ScrollRollupNodeCon network_args: crate::args::NetworkArgs { enable_eth_scroll_wire_bridge: true, enable_scroll_wire: true, +<<<<<<< HEAD +======= + disable_tx_broadcast: false, + disable_tx_receive: false, + sequencer_url: None, +>>>>>>> 1055c8b (feat: support forward tx to sequencer) }, database_args: DatabaseArgs { path: Some(PathBuf::from("sqlite::memory:")) }, l1_provider_args: L1ProviderArgs::default(), diff --git a/crates/sequencer/tests/e2e.rs b/crates/sequencer/tests/e2e.rs index e79d29db..bda06253 100644 --- a/crates/sequencer/tests/e2e.rs +++ b/crates/sequencer/tests/e2e.rs @@ -430,7 +430,7 @@ async fn can_sequence_blocks_with_private_key_file() -> eyre::Result<()> { let chain_spec = (*SCROLL_DEV).clone(); let rollup_manager_args = ScrollRollupNodeConfig { test: false, // disable test mode to enable real signing - network_args: NetworkArgs { enable_eth_scroll_wire_bridge: true, enable_scroll_wire: true }, + network_args: NetworkArgs { enable_eth_scroll_wire_bridge: true, enable_scroll_wire: true, disable_tx_broadcast: false, disable_tx_receive: false }, database_args: DatabaseArgs { path: Some(PathBuf::from("sqlite::memory:")) }, l1_provider_args: L1ProviderArgs::default(), engine_driver_args: EngineDriverArgs::default(), @@ -514,7 +514,7 @@ async fn can_sequence_blocks_with_hex_key_file_without_prefix() -> eyre::Result< let chain_spec = (*SCROLL_DEV).clone(); let rollup_manager_args = ScrollRollupNodeConfig { test: false, // disable test mode to enable real signing - network_args: NetworkArgs { enable_eth_scroll_wire_bridge: true, enable_scroll_wire: true }, + network_args: NetworkArgs { enable_eth_scroll_wire_bridge: true, enable_scroll_wire: true, disable_tx_broadcast: false, disable_tx_receive: false }, database_args: DatabaseArgs { path: Some(PathBuf::from("sqlite::memory:")) }, l1_provider_args: L1ProviderArgs::default(), engine_driver_args: EngineDriverArgs::default(), From 9b7ff77b86f8bbbcdf0be540051e959bcf77b33b Mon Sep 17 00:00:00 2001 From: Morty Date: Fri, 4 Jul 2025 03:36:31 +0800 Subject: [PATCH 2/8] fix: test --- crates/node/src/test_utils.rs | 3 --- 1 file changed, 3 deletions(-) diff --git a/crates/node/src/test_utils.rs b/crates/node/src/test_utils.rs index 9024607e..2b850f92 100644 --- a/crates/node/src/test_utils.rs +++ b/crates/node/src/test_utils.rs @@ -151,12 +151,9 @@ pub fn default_sequencer_test_scroll_rollup_node_config() -> ScrollRollupNodeCon network_args: crate::args::NetworkArgs { enable_eth_scroll_wire_bridge: true, enable_scroll_wire: true, -<<<<<<< HEAD -======= disable_tx_broadcast: false, disable_tx_receive: false, sequencer_url: None, ->>>>>>> 1055c8b (feat: support forward tx to sequencer) }, database_args: DatabaseArgs { path: Some(PathBuf::from("sqlite::memory:")) }, l1_provider_args: L1ProviderArgs::default(), From 2f8c6a94eafa6e595a46af1b7ff1683bf7e201ed Mon Sep 17 00:00:00 2001 From: Morty Date: Fri, 4 Jul 2025 03:56:17 +0800 Subject: [PATCH 3/8] fix: typo --- crates/node/src/add_ons/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/node/src/add_ons/mod.rs b/crates/node/src/add_ons/mod.rs index 925286d7..d8479e1d 100644 --- a/crates/node/src/add_ons/mod.rs +++ b/crates/node/src/add_ons/mod.rs @@ -65,7 +65,7 @@ where Default::default(), ); let rollup_manager_addon = RollupManagerAddOn::new(config); - Self { rpc_add_ons, rollup_manager_addon} + Self { rpc_add_ons, rollup_manager_addon } } } impl NodeAddOns for ScrollRollupNodeAddOns From b554cd7124dbc14ce63f80d126ad8d76dbaea90f Mon Sep 17 00:00:00 2001 From: Morty Date: Fri, 4 Jul 2025 03:57:39 +0800 Subject: [PATCH 4/8] fix: typo --- crates/node/src/add_ons/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/node/src/add_ons/mod.rs b/crates/node/src/add_ons/mod.rs index d8479e1d..e29c9d69 100644 --- a/crates/node/src/add_ons/mod.rs +++ b/crates/node/src/add_ons/mod.rs @@ -89,7 +89,7 @@ where self, ctx: reth_node_api::AddOnsContext<'_, N>, ) -> eyre::Result { - let Self { rpc_add_ons, rollup_manager_addon: rollup_node_manager_addon , .. } = self; + let Self { rpc_add_ons, rollup_manager_addon: rollup_node_manager_addon} = self; let rpc_handle: RpcHandle> = rpc_add_ons.launch_add_ons_with(ctx.clone(), |_| Ok(())).await?; let (rollup_manager_handle, l1_watcher_tx) = From 458d8f24cb51f7e24bb1d72fdeffe821efe98cd4 Mon Sep 17 00:00:00 2001 From: Morty Date: Fri, 4 Jul 2025 16:30:39 +0800 Subject: [PATCH 5/8] fix: test --- crates/node/src/args.rs | 6 ------ crates/node/src/test_utils.rs | 14 ++------------ crates/node/tests/e2e.rs | 10 ++-------- crates/sequencer/tests/e2e.rs | 4 ++-- 4 files changed, 6 insertions(+), 28 deletions(-) diff --git a/crates/node/src/args.rs b/crates/node/src/args.rs index 3c5cbd68..6b71e7ee 100644 --- a/crates/node/src/args.rs +++ b/crates/node/src/args.rs @@ -320,12 +320,6 @@ pub struct NetworkArgs { /// A bool that represents if the scroll wire protocol should be enabled. #[arg(long = "network.scroll-wire", default_value_t = true)] pub enable_scroll_wire: bool, - /// A bool that represents if the transaction broadcast should be disabled. - #[arg(long = "network.disable-tx-broadcast", default_value_t = false)] - pub disable_tx_broadcast: bool, - /// A bool that represents if the transaction receiving should be disabled. - #[arg(long = "network.disable-tx-receive", default_value_t = false)] - pub disable_tx_receive: bool, /// The URL for the Sequencer RPC. (can be both HTTP and WS) #[arg(long = "network.sequencer-url", id = "network_sequencer_url", value_name = "NETWORK_SEQUENCER_URL")] pub sequencer_url: Option, diff --git a/crates/node/src/test_utils.rs b/crates/node/src/test_utils.rs index 2b850f92..0b7883f8 100644 --- a/crates/node/src/test_utils.rs +++ b/crates/node/src/test_utils.rs @@ -130,11 +130,7 @@ pub async fn generate_tx(wallet: Arc>) -> Bytes { pub fn default_test_scroll_rollup_node_config() -> ScrollRollupNodeConfig { ScrollRollupNodeConfig { test: true, - network_args: crate::args::NetworkArgs { - enable_eth_scroll_wire_bridge: true, - enable_scroll_wire: true, - ..Default::default() - }, + network_args: crate::args::NetworkArgs::default(), database_args: DatabaseArgs { path: Some(PathBuf::from("sqlite::memory:")) }, l1_provider_args: L1ProviderArgs::default(), engine_driver_args: EngineDriverArgs { en_sync_trigger: 100 }, @@ -148,13 +144,7 @@ pub fn default_test_scroll_rollup_node_config() -> ScrollRollupNodeConfig { pub fn default_sequencer_test_scroll_rollup_node_config() -> ScrollRollupNodeConfig { ScrollRollupNodeConfig { test: true, - network_args: crate::args::NetworkArgs { - enable_eth_scroll_wire_bridge: true, - enable_scroll_wire: true, - disable_tx_broadcast: false, - disable_tx_receive: false, - sequencer_url: None, - }, + network_args: crate::args::NetworkArgs::default(), database_args: DatabaseArgs { path: Some(PathBuf::from("sqlite::memory:")) }, l1_provider_args: L1ProviderArgs::default(), engine_driver_args: EngineDriverArgs { en_sync_trigger: 100 }, diff --git a/crates/node/tests/e2e.rs b/crates/node/tests/e2e.rs index 2cc4a963..918a6d43 100644 --- a/crates/node/tests/e2e.rs +++ b/crates/node/tests/e2e.rs @@ -35,10 +35,7 @@ async fn can_bridge_l1_messages() -> eyre::Result<()> { let chain_spec = (*SCROLL_DEV).clone(); let node_args = ScrollRollupNodeConfig { test: true, - network_args: ScrollNetworkArgs { - enable_eth_scroll_wire_bridge: true, - enable_scroll_wire: true, - }, + network_args: ScrollNetworkArgs::default(), database_args: DatabaseArgs { path: Some(PathBuf::from("sqlite::memory:")) }, l1_provider_args: L1ProviderArgs::default(), engine_driver_args: EngineDriverArgs::default(), @@ -99,10 +96,7 @@ async fn can_sequence_and_gossip_blocks() { let chain_spec = (*SCROLL_DEV).clone(); let rollup_manager_args = ScrollRollupNodeConfig { test: true, - network_args: ScrollNetworkArgs { - enable_eth_scroll_wire_bridge: true, - enable_scroll_wire: true, - }, + network_args: ScrollNetworkArgs::default(), database_args: DatabaseArgs { path: Some(PathBuf::from("sqlite::memory:")) }, l1_provider_args: L1ProviderArgs::default(), engine_driver_args: EngineDriverArgs::default(), diff --git a/crates/sequencer/tests/e2e.rs b/crates/sequencer/tests/e2e.rs index bda06253..ff235172 100644 --- a/crates/sequencer/tests/e2e.rs +++ b/crates/sequencer/tests/e2e.rs @@ -430,7 +430,7 @@ async fn can_sequence_blocks_with_private_key_file() -> eyre::Result<()> { let chain_spec = (*SCROLL_DEV).clone(); let rollup_manager_args = ScrollRollupNodeConfig { test: false, // disable test mode to enable real signing - network_args: NetworkArgs { enable_eth_scroll_wire_bridge: true, enable_scroll_wire: true, disable_tx_broadcast: false, disable_tx_receive: false }, + network_args: NetworkArgs::default(), database_args: DatabaseArgs { path: Some(PathBuf::from("sqlite::memory:")) }, l1_provider_args: L1ProviderArgs::default(), engine_driver_args: EngineDriverArgs::default(), @@ -514,7 +514,7 @@ async fn can_sequence_blocks_with_hex_key_file_without_prefix() -> eyre::Result< let chain_spec = (*SCROLL_DEV).clone(); let rollup_manager_args = ScrollRollupNodeConfig { test: false, // disable test mode to enable real signing - network_args: NetworkArgs { enable_eth_scroll_wire_bridge: true, enable_scroll_wire: true, disable_tx_broadcast: false, disable_tx_receive: false }, + network_args: NetworkArgs::default(), database_args: DatabaseArgs { path: Some(PathBuf::from("sqlite::memory:")) }, l1_provider_args: L1ProviderArgs::default(), engine_driver_args: EngineDriverArgs::default(), From 5af11837568731ad451c3d92a888f944644e3330 Mon Sep 17 00:00:00 2001 From: Morty Date: Fri, 4 Jul 2025 16:31:33 +0800 Subject: [PATCH 6/8] fix: indent --- crates/node/src/add_ons/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/node/src/add_ons/mod.rs b/crates/node/src/add_ons/mod.rs index e29c9d69..02b34efa 100644 --- a/crates/node/src/add_ons/mod.rs +++ b/crates/node/src/add_ons/mod.rs @@ -89,7 +89,7 @@ where self, ctx: reth_node_api::AddOnsContext<'_, N>, ) -> eyre::Result { - let Self { rpc_add_ons, rollup_manager_addon: rollup_node_manager_addon} = self; + let Self { rpc_add_ons, rollup_manager_addon: rollup_node_manager_addon } = self; let rpc_handle: RpcHandle> = rpc_add_ons.launch_add_ons_with(ctx.clone(), |_| Ok(())).await?; let (rollup_manager_handle, l1_watcher_tx) = From bb1ce545e7ed5da83d4b3feaccd4d67555d0e15e Mon Sep 17 00:00:00 2001 From: Morty Date: Sat, 5 Jul 2025 01:38:30 +0800 Subject: [PATCH 7/8] indent --- crates/manager/src/manager/mod.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/crates/manager/src/manager/mod.rs b/crates/manager/src/manager/mod.rs index 9f8cce82..99e78a6c 100644 --- a/crates/manager/src/manager/mod.rs +++ b/crates/manager/src/manager/mod.rs @@ -480,6 +480,7 @@ where SignerEvent::SignedBlock { block: block.clone(), signature }, )); } + this.network.handle().announce_block(block, signature); } } From 1ac24814f545200283c4b3117af56e7397062485 Mon Sep 17 00:00:00 2001 From: Morty Date: Sat, 5 Jul 2025 01:38:56 +0800 Subject: [PATCH 8/8] indent --- crates/manager/src/manager/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/manager/src/manager/mod.rs b/crates/manager/src/manager/mod.rs index 99e78a6c..e9051cef 100644 --- a/crates/manager/src/manager/mod.rs +++ b/crates/manager/src/manager/mod.rs @@ -480,7 +480,7 @@ where SignerEvent::SignedBlock { block: block.clone(), signature }, )); } - + this.network.handle().announce_block(block, signature); } }