Skip to content

feat: monitor flashblocks arrival - #8

Open
0x416e746f6e wants to merge 6 commits into
mainfrom
feat/monitor-flashblock-arrival
Open

feat: monitor flashblocks arrival#8
0x416e746f6e wants to merge 6 commits into
mainfrom
feat/monitor-flashblock-arrival

Conversation

@0x416e746f6e

@0x416e746f6e 0x416e746f6e commented Apr 10, 2026

Copy link
Copy Markdown
Member

this PR adds monitoring of flashblocks arrival timings relative to block time.

chain_monitor_flashblock_0_timing_milliseconds{kind="l2",network_id="130",stream="unichain",stream_type="public",type="close"} 49
chain_monitor_flashblock_0_timing_milliseconds{kind="l2",network_id="130",stream="unichain",stream_type="public",type="high"} 144
chain_monitor_flashblock_0_timing_milliseconds{kind="l2",network_id="130",stream="unichain",stream_type="public",type="low"} 35
chain_monitor_flashblock_0_timing_milliseconds{kind="l2",network_id="130",stream="unichain",stream_type="public",type="open"} 81
chain_monitor_flashblock_0_timing_milliseconds{kind="l2",network_id="130",stream="unichain",stream_type="public",type="volume"} 10
chain_monitor_flashblock_1_timing_milliseconds{kind="l2",network_id="130",stream="unichain",stream_type="public",type="close"} 212
chain_monitor_flashblock_1_timing_milliseconds{kind="l2",network_id="130",stream="unichain",stream_type="public",type="high"} 250
chain_monitor_flashblock_1_timing_milliseconds{kind="l2",network_id="130",stream="unichain",stream_type="public",type="low"} 207
chain_monitor_flashblock_1_timing_milliseconds{kind="l2",network_id="130",stream="unichain",stream_type="public",type="open"} 246
chain_monitor_flashblock_1_timing_milliseconds{kind="l2",network_id="130",stream="unichain",stream_type="public",type="volume"} 10
chain_monitor_flashblock_2_timing_milliseconds{kind="l2",network_id="130",stream="unichain",stream_type="public",type="close"} 440
chain_monitor_flashblock_2_timing_milliseconds{kind="l2",network_id="130",stream="unichain",stream_type="public",type="high"} 464
chain_monitor_flashblock_2_timing_milliseconds{kind="l2",network_id="130",stream="unichain",stream_type="public",type="low"} 433
chain_monitor_flashblock_2_timing_milliseconds{kind="l2",network_id="130",stream="unichain",stream_type="public",type="open"} 484
chain_monitor_flashblock_2_timing_milliseconds{kind="l2",network_id="130",stream="unichain",stream_type="public",type="volume"} 10
chain_monitor_flashblock_3_timing_milliseconds{kind="l2",network_id="130",stream="unichain",stream_type="public",type="close"} 634
chain_monitor_flashblock_3_timing_milliseconds{kind="l2",network_id="130",stream="unichain",stream_type="public",type="high"} 637
chain_monitor_flashblock_3_timing_milliseconds{kind="l2",network_id="130",stream="unichain",stream_type="public",type="low"} 631
chain_monitor_flashblock_3_timing_milliseconds{kind="l2",network_id="130",stream="unichain",stream_type="public",type="open"} 675
chain_monitor_flashblock_3_timing_milliseconds{kind="l2",network_id="130",stream="unichain",stream_type="public",type="volume"} 10
chain_monitor_flashblock_4_timing_milliseconds{kind="l2",network_id="130",stream="unichain",stream_type="public",type="close"} 836
chain_monitor_flashblock_4_timing_milliseconds{kind="l2",network_id="130",stream="unichain",stream_type="public",type="high"} 838
chain_monitor_flashblock_4_timing_milliseconds{kind="l2",network_id="130",stream="unichain",stream_type="public",type="low"} 832
chain_monitor_flashblock_4_timing_milliseconds{kind="l2",network_id="130",stream="unichain",stream_type="public",type="open"} 837
chain_monitor_flashblock_4_timing_milliseconds{kind="l2",network_id="130",stream="unichain",stream_type="public",type="volume"} 10

this would allow us to see our flashblocks delivery performance.

UPD

also:

  • correctly detect flashblocks mismatches between the builders

@0x416e746f6e
0x416e746f6e force-pushed the feat/monitor-flashblock-arrival branch from 0b12c0b to aec78db Compare April 10, 2026 14:25
for ctx.Err() == nil {
select {
case fb := <-fm.flashblocksPublic:
now := time.Now().UnixNano()

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

shouldn't we use the fb.timestamp recv timestamp instead of channel dequeue timestamp?

select {
case fb := <-fm.flashblocksPublic:
now := time.Now().UnixNano()
blockTime := 1000000000 * (fm.cfg.genesisTime + fm.cfg.secondsPerBlock*int64(fb.flashblock.Metadata.BlockNumber))

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can use secondsPerBlock constant here

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants