Skip to content

Commit b233c8c

Browse files
authored
feat: init sequencer L1 message index (#332)
1 parent fa6ff33 commit b233c8c

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

crates/database/db/src/operations.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -484,6 +484,19 @@ pub trait DatabaseReadOperations: ReadConnectionProvider + Sync {
484484
.map(|x| x.map(Into::into))?)
485485
}
486486

487+
/// Gets the latest L1 messages which has an associated L2 block number if any.
488+
async fn get_latest_executed_l1_message(
489+
&self,
490+
) -> Result<Option<L1MessageEnvelope>, DatabaseError> {
491+
Ok(models::l1_message::Entity::find()
492+
.filter(models::l1_message::Column::L2BlockNumber.is_not_null())
493+
.order_by_desc(models::l1_message::Column::L2BlockNumber)
494+
.order_by_desc(models::l1_message::Column::QueueIndex)
495+
.one(self.get_connection())
496+
.await?
497+
.map(Into::into))
498+
}
499+
487500
/// Get an iterator over all [`L1MessageEnvelope`]s in the database starting from the provided
488501
/// `start` point.
489502
async fn get_l1_messages<'a>(

crates/node/src/args.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ use scroll_alloy_hardforks::ScrollHardforks;
3939
use scroll_alloy_network::Scroll;
4040
use scroll_alloy_provider::{ScrollAuthApiEngineClient, ScrollEngineApi};
4141
use scroll_db::{
42-
Database, DatabaseConnectionProvider, DatabaseTransactionProvider, DatabaseWriteOperations,
42+
Database, DatabaseConnectionProvider, DatabaseReadOperations, DatabaseTransactionProvider,
43+
DatabaseWriteOperations,
4344
};
4445
use scroll_engine::{genesis_hash_from_chain_spec, EngineDriver, ForkchoiceState};
4546
use scroll_migration::traits::ScrollMigrator;
@@ -338,6 +339,9 @@ impl ScrollRollupNodeConfig {
338339

339340
// Construct the Sequencer.
340341
let chain_config = chain_spec.chain_config();
342+
let latest_l1_message = db.tx().await?.get_latest_executed_l1_message().await?;
343+
let sequencer_l1_messages_queue_index =
344+
latest_l1_message.map(|msg| msg.transaction.queue_index + 1).unwrap_or_default();
341345
let (sequencer, block_time, auto_start) = if self.sequencer_args.sequencer_enabled {
342346
let args = &self.sequencer_args;
343347
let sequencer = Sequencer::new(
@@ -349,8 +353,7 @@ impl ScrollRollupNodeConfig {
349353
.unwrap_or(chain_config.l1_config.num_l1_messages_per_block),
350354
0,
351355
self.sequencer_args.l1_message_inclusion_mode,
352-
// TODO (issue 169): update with correct start value.
353-
0,
356+
sequencer_l1_messages_queue_index,
354357
);
355358
(Some(sequencer), (args.block_time != 0).then_some(args.block_time), args.auto_start)
356359
} else {

0 commit comments

Comments
 (0)