Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 11 additions & 2 deletions crates/optimism/flashblocks/src/sequence.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use crate::{ExecutionPayloadBaseV1, FlashBlock, FlashBlockCompleteSequenceRx};
use alloy_eips::eip2718::WithEncoded;
use alloy_primitives::B256;
use alloy_rpc_types_engine::PayloadId;
use core::mem;
use eyre::{bail, OptionExt};
use reth_primitives_traits::{Recovered, SignedTransaction};
Expand Down Expand Up @@ -82,8 +83,12 @@ where
return Ok(())
}

// only insert if we previously received the same block, assume we received index 0
if self.block_number() == Some(flashblock.metadata.block_number) {
// only insert if we previously received the same block and payload, assume we received
// index 0
let same_block = self.block_number() == Some(flashblock.metadata.block_number);
let same_payload = self.payload_id() == Some(flashblock.payload_id);

if same_block && same_payload {
trace!(number=%flashblock.block_number(), index = %flashblock.index, block_count = self.inner.len() ,"Received followup flashblock");
self.inner.insert(flashblock.index, PreparedFlashBlock::new(flashblock)?);
} else {
Expand Down Expand Up @@ -139,6 +144,10 @@ where
pub fn index(&self) -> Option<u64> {
Some(self.inner.values().last()?.block().index)
}
/// Returns the payload id of the first tracked flashblock in the current sequence.
pub fn payload_id(&self) -> Option<PayloadId> {
Some(self.inner.values().next()?.block().payload_id)
}
}

impl<T> Default for FlashBlockPendingSequence<T>
Expand Down
Loading