From 14211f79acc3a5a1b1bdeaec0dc5eb482bab34f8 Mon Sep 17 00:00:00 2001 From: Julian Meyer Date: Tue, 12 May 2026 11:10:13 -0700 Subject: [PATCH] fix: keep FCU timestamps at or ahead of wall clock The previous 2-second threshold allowed timestamps to drift behind wall clock on slow CI runners, causing the builder to compute zero flashblocks and produce empty blocks. Use max(now, lastTimestamp) so timestamps never fall behind. --- runner/network/consensus/sequencer_consensus.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/runner/network/consensus/sequencer_consensus.go b/runner/network/consensus/sequencer_consensus.go index 661bb5fa..f5ca8ac6 100644 --- a/runner/network/consensus/sequencer_consensus.go +++ b/runner/network/consensus/sequencer_consensus.go @@ -121,11 +121,12 @@ func (f *SequencerConsensusClient) generatePayloadAttributes(sequencerTxs [][]by var b8 eth.Bytes8 copy(b8[:], eip1559.EncodeHolocene1559Params(50, 1)) + // Always keep timestamps at or ahead of wall clock so the builder + // never sees "FCU arrived too late" and produces empty blocks. + now := uint64(time.Now().Unix()) lastTimestamp := f.lastTimestamp - - // if the last timestamp is more than 2 seconds in the past, set it to the current time - if int64(lastTimestamp)-time.Now().Unix() < -2 { - lastTimestamp = uint64(time.Now().Unix()) + if now > lastTimestamp { + lastTimestamp = now } timestamp := lastTimestamp + 1