Skip to content

Commit e2f7f95

Browse files
authored
feat(sequencer): add flag to enable auto start of sequencer on startup (#306)
1 parent 51beb48 commit e2f7f95

File tree

7 files changed

+23
-4
lines changed

7 files changed

+23
-4
lines changed

crates/manager/src/manager/mod.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@ where
175175
sequencer: Option<Sequencer<L1MP>>,
176176
signer: Option<SignerHandle>,
177177
block_time: Option<u64>,
178+
auto_start: bool,
178179
chain_orchestrator: ChainOrchestrator<CS, <N as BlockDownloaderProvider>::Client, P>,
179180
l1_v2_message_queue_start_index: u64,
180181
) -> (Self, RollupManagerHandle<N>) {
@@ -193,7 +194,11 @@ where
193194
event_sender: None,
194195
sequencer,
195196
signer,
196-
block_building_trigger: block_time.map(delayed_interval),
197+
block_building_trigger: if auto_start {
198+
block_time.map(delayed_interval)
199+
} else {
200+
None
201+
},
197202
block_time_config: block_time,
198203
};
199204
(rnm, RollupManagerHandle::new(handle_tx))

crates/node/src/args.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ impl ScrollRollupNodeConfig {
307307

308308
// Construct the Sequencer.
309309
let chain_config = chain_spec.chain_config();
310-
let (sequencer, block_time) = if self.sequencer_args.sequencer_enabled {
310+
let (sequencer, block_time, auto_start) = if self.sequencer_args.sequencer_enabled {
311311
let args = &self.sequencer_args;
312312
let sequencer = Sequencer::new(
313313
Arc::new(l1_messages_provider),
@@ -317,9 +317,9 @@ impl ScrollRollupNodeConfig {
317317
0,
318318
self.sequencer_args.l1_message_inclusion_mode,
319319
);
320-
(Some(sequencer), (args.block_time != 0).then_some(args.block_time))
320+
(Some(sequencer), (args.block_time != 0).then_some(args.block_time), args.auto_start)
321321
} else {
322-
(None, None)
322+
(None, None, false)
323323
};
324324

325325
// Instantiate the signer
@@ -366,6 +366,7 @@ impl ScrollRollupNodeConfig {
366366
sequencer,
367367
signer,
368368
block_time,
369+
auto_start,
369370
chain_orchestrator,
370371
l1_v2_message_queue_start_index,
371372
)
@@ -549,6 +550,9 @@ pub struct SequencerArgs {
549550
/// Enable the scroll block sequencer.
550551
#[arg(long = "sequencer.enabled", default_value_t = false)]
551552
pub sequencer_enabled: bool,
553+
/// Whether the sequencer should start sequencing automatically on startup.
554+
#[arg(long = "sequencer.auto-start", default_value_t = false)]
555+
pub auto_start: bool,
552556
/// The block time for the sequencer.
553557
#[arg(long = "sequencer.block-time", id = "sequencer_block_time", value_name = "SEQUENCER_BLOCK_TIME", default_value_t = constants::DEFAULT_BLOCK_TIME)]
554558
pub block_time: u64,

crates/node/src/test_utils.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ pub fn default_sequencer_test_scroll_rollup_node_config() -> ScrollRollupNodeCon
185185
},
186186
sequencer_args: SequencerArgs {
187187
sequencer_enabled: true,
188+
auto_start: true,
188189
block_time: 0,
189190
payload_building_duration: 40,
190191
fee_recipient: Default::default(),

crates/node/tests/e2e.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ async fn can_bridge_l1_messages() -> eyre::Result<()> {
6262
chain_orchestrator_args: ChainOrchestratorArgs::default(),
6363
sequencer_args: SequencerArgs {
6464
sequencer_enabled: true,
65+
auto_start: true,
6566
block_time: 0,
6667
l1_message_inclusion_mode: L1MessageInclusionMode::BlockDepth(0),
6768
allow_empty_blocks: true,
@@ -157,6 +158,7 @@ async fn can_sequence_and_gossip_blocks() {
157158
chain_orchestrator_args: ChainOrchestratorArgs::default(),
158159
sequencer_args: SequencerArgs {
159160
sequencer_enabled: true,
161+
auto_start: true,
160162
block_time: 0,
161163
l1_message_inclusion_mode: L1MessageInclusionMode::BlockDepth(0),
162164
payload_building_duration: 1000,
@@ -255,6 +257,7 @@ async fn can_penalize_peer_for_invalid_block() {
255257
engine_driver_args: EngineDriverArgs::default(),
256258
sequencer_args: SequencerArgs {
257259
sequencer_enabled: true,
260+
auto_start: true,
258261
block_time: 0,
259262
l1_message_inclusion_mode: L1MessageInclusionMode::BlockDepth(0),
260263
payload_building_duration: 1000,

crates/node/tests/sync.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@ async fn test_should_consolidate_after_optimistic_sync() -> eyre::Result<()> {
197197
chain_orchestrator_args: ChainOrchestratorArgs::default(),
198198
sequencer_args: SequencerArgs {
199199
sequencer_enabled: true,
200+
auto_start: true,
200201
block_time: 0,
201202
l1_message_inclusion_mode: L1MessageInclusionMode::BlockDepth(0),
202203
allow_empty_blocks: true,
@@ -445,6 +446,7 @@ async fn test_consolidation() -> eyre::Result<()> {
445446
chain_orchestrator_args: ChainOrchestratorArgs::default(),
446447
sequencer_args: SequencerArgs {
447448
sequencer_enabled: true,
449+
auto_start: true,
448450
block_time: 0,
449451
l1_message_inclusion_mode: L1MessageInclusionMode::BlockDepth(0),
450452
allow_empty_blocks: true,
@@ -618,6 +620,7 @@ async fn test_chain_orchestrator_shallow_reorg_with_gap() -> eyre::Result<()> {
618620
chain_orchestrator_args: ChainOrchestratorArgs::default(),
619621
sequencer_args: SequencerArgs {
620622
sequencer_enabled: true,
623+
auto_start: true,
621624
block_time: 0,
622625
l1_message_inclusion_mode: L1MessageInclusionMode::BlockDepth(0),
623626
allow_empty_blocks: true,

crates/sequencer/tests/e2e.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -502,6 +502,7 @@ async fn can_sequence_blocks_with_private_key_file() -> eyre::Result<()> {
502502
chain_orchestrator_args: ChainOrchestratorArgs::default(),
503503
sequencer_args: SequencerArgs {
504504
sequencer_enabled: true,
505+
auto_start: true,
505506
block_time: 0,
506507
l1_message_inclusion_mode: L1MessageInclusionMode::BlockDepth(0),
507508
payload_building_duration: 1000,
@@ -594,6 +595,7 @@ async fn can_sequence_blocks_with_hex_key_file_without_prefix() -> eyre::Result<
594595
chain_orchestrator_args: ChainOrchestratorArgs::default(),
595596
sequencer_args: SequencerArgs {
596597
sequencer_enabled: true,
598+
auto_start: true,
597599
block_time: 0,
598600
l1_message_inclusion_mode: L1MessageInclusionMode::BlockDepth(0),
599601
payload_building_duration: 1000,

tests/launch_rollup_node_sequencer.bash

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ exec rollup-node node --chain dev --datadir=/l2reth --metrics=0.0.0.0:6060 --net
77
--log.stdout.format log-fmt -vvv \
88
--test \
99
--sequencer.enabled \
10+
--sequencer.auto-start \
1011
--sequencer.block-time 250 \
1112
--sequencer.payload-building-duration 230 \
1213
--sequencer.allow-empty-blocks \

0 commit comments

Comments
 (0)