From 78eaac59f673dc7c79d4100d6b26ab1784f9e878 Mon Sep 17 00:00:00 2001 From: Sergio Chouhy Date: Wed, 18 Feb 2026 15:43:54 -0300 Subject: [PATCH] wip --- sequencer_core/src/block_settlement_client.rs | 9 ++ sequencer_core/src/lib.rs | 12 ++- .../configs/debug/sequencer_config.json | 4 +- sequencer_runner/src/lib.rs | 90 ++++++++++--------- 4 files changed, 72 insertions(+), 43 deletions(-) diff --git a/sequencer_core/src/block_settlement_client.rs b/sequencer_core/src/block_settlement_client.rs index c6822e0c..04a3740c 100644 --- a/sequencer_core/src/block_settlement_client.rs +++ b/sequencer_core/src/block_settlement_client.rs @@ -95,6 +95,15 @@ impl BlockSettlementClientTrait for BlockSettlementClient { } async fn submit_inscribe_tx_to_bedrock(&self, tx: SignedMantleTx) -> Result<()> { + let (parent_id, msg_id) = match tx.mantle_tx.ops.first() { + Some(Op::ChannelInscribe(inscribe)) => (inscribe.parent, inscribe.id()), + _ => panic!("Expected ChannelInscribe op"), + }; + log::info!(">>>>>>>>>>>>>>>>>>>>>>"); + log::info!("Posted block to Bedrock"); + log::info!(">>>>>> parent id: {parent_id:?}"); + log::info!(">>>>>> msg id: {msg_id:?}"); + log::info!(">>>>>>>>>>>>>>>>>>>>>>"); self.bedrock_client .post_transaction(tx) .await diff --git a/sequencer_core/src/lib.rs b/sequencer_core/src/lib.rs index cad7e20e..bfcfd01c 100644 --- a/sequencer_core/src/lib.rs +++ b/sequencer_core/src/lib.rs @@ -177,9 +177,19 @@ impl SequencerCore Result { - let (_tx, _msg_id) = self + let (tx, _msg_id) = self .produce_new_block_with_mempool_transactions() .context("Failed to produce new block with mempool transactions")?; + match self + .block_settlement_client + .submit_inscribe_tx_to_bedrock(tx) + .await + { + Ok(()) => {} + Err(err) => { + error!("Failed to post block data to Bedrock with error: {err:#}"); + } + } Ok(self.chain_height) } diff --git a/sequencer_runner/configs/debug/sequencer_config.json b/sequencer_runner/configs/debug/sequencer_config.json index 8974790c..8e8275b9 100644 --- a/sequencer_runner/configs/debug/sequencer_config.json +++ b/sequencer_runner/configs/debug/sequencer_config.json @@ -5,8 +5,8 @@ "is_genesis_random": true, "max_num_tx_in_block": 20, "mempool_max_size": 1000, - "block_create_timeout_millis": 15000, - "retry_pending_blocks_timeout_millis": 500, + "block_create_timeout_millis": 2000, + "retry_pending_blocks_timeout_millis": 200000, "port": 3040, "bedrock_config": { "backoff": { diff --git a/sequencer_runner/src/lib.rs b/sequencer_runner/src/lib.rs index 4975ec01..f50d6736 100644 --- a/sequencer_runner/src/lib.rs +++ b/sequencer_runner/src/lib.rs @@ -127,6 +127,11 @@ pub async fn startup_sequencer(app_config: SequencerConfig) -> Result>, block_timeout: Duration) } } +#[cfg(not(feature = "standalone"))] +async fn retry_pending_blocks(seq_core: &Arc>) -> Result<()> { + let (mut pending_blocks, block_settlement_client) = { + let sequencer_core = seq_core.lock().await; + let client = sequencer_core.block_settlement_client(); + let pending_blocks = sequencer_core + .get_pending_blocks() + .expect("Sequencer should be able to retrieve pending blocks"); + (pending_blocks, client) + }; + + let k = 25; + if pending_blocks.len() > k { + pending_blocks.select_nth_unstable_by_key(k, |b| b.header.block_id); + } + for block in pending_blocks.iter().take(k) { + info!( + "Resubmitting pending block with id {}", + block.header.block_id + ); + // TODO: We could cache the inscribe tx for each pending block to avoid re-creating it + // on every retry. + let now = Instant::now(); + let (tx, _msg_id) = block_settlement_client + .create_inscribe_tx(block) + .context("Failed to create inscribe tx for pending block")?; + + debug!(">>>> Create inscribe: {:?}", now.elapsed()); + + let now = Instant::now(); + if let Err(e) = block_settlement_client + .submit_inscribe_tx_to_bedrock(tx) + .await + { + warn!( + "Failed to resubmit block with id {} with error {e:#}", + block.header.block_id + ); + } + debug!(">>>> Post: {:?}", now.elapsed()); + } + Ok(()) +} + #[cfg(not(feature = "standalone"))] async fn retry_pending_blocks_loop( seq_core: Arc>, @@ -174,46 +223,7 @@ async fn retry_pending_blocks_loop( ) -> Result { loop { tokio::time::sleep(retry_pending_blocks_timeout).await; - - let (mut pending_blocks, block_settlement_client) = { - let sequencer_core = seq_core.lock().await; - let client = sequencer_core.block_settlement_client(); - let pending_blocks = sequencer_core - .get_pending_blocks() - .expect("Sequencer should be able to retrieve pending blocks"); - (pending_blocks, client) - }; - - let k = 50; - if pending_blocks.len() > k { - pending_blocks.select_nth_unstable_by_key(k, |b| b.header.block_id); - } - for block in pending_blocks.iter().take(k) { - info!( - "Resubmitting pending block with id {}", - block.header.block_id - ); - // TODO: We could cache the inscribe tx for each pending block to avoid re-creating it - // on every retry. - let now = Instant::now(); - let (tx, _msg_id) = block_settlement_client - .create_inscribe_tx(block) - .context("Failed to create inscribe tx for pending block")?; - - debug!(">>>> Create inscribe: {:?}", now.elapsed()); - - let now = Instant::now(); - if let Err(e) = block_settlement_client - .submit_inscribe_tx_to_bedrock(tx) - .await - { - warn!( - "Failed to resubmit block with id {} with error {e:#}", - block.header.block_id - ); - } - debug!(">>>> Post: {:?}", now.elapsed()); - } + retry_pending_blocks(&seq_core).await?; } }