Tue, May 12, 2026

Propagation anomalies - 2026-05-12

Detection of blocks that propagated slower than expected, attempting to find correlations with blob count.

Show code
display_sql("block_production_timeline", target_date)
View query
WITH
-- Base slots using proposer duty as the source of truth
slots AS (
    SELECT DISTINCT
        slot,
        slot_start_date_time,
        proposer_validator_index
    FROM canonical_beacon_proposer_duty
    WHERE meta_network_name = 'mainnet'
      AND slot_start_date_time >= '2026-05-12' AND slot_start_date_time < '2026-05-12'::date + INTERVAL 1 DAY
),

-- Proposer entity mapping
proposer_entity AS (
    SELECT
        index,
        entity
    FROM ethseer_validator_entity
    WHERE meta_network_name = 'mainnet'
),

-- Blob count per slot
blob_count AS (
    SELECT
        slot,
        uniq(blob_index) AS blob_count
    FROM canonical_beacon_blob_sidecar
    WHERE meta_network_name = 'mainnet'
      AND slot_start_date_time >= '2026-05-12' AND slot_start_date_time < '2026-05-12'::date + INTERVAL 1 DAY
    GROUP BY slot
),

-- Canonical block hash (to verify MEV payload was actually used)
canonical_block AS (
    SELECT DISTINCT
        slot,
        execution_payload_block_hash
    FROM canonical_beacon_block
    WHERE meta_network_name = 'mainnet'
      AND slot_start_date_time >= '2026-05-12' AND slot_start_date_time < '2026-05-12'::date + INTERVAL 1 DAY
),

-- MEV bid timing using timestamp_ms
mev_bids AS (
    SELECT
        slot,
        slot_start_date_time,
        min(timestamp_ms) AS first_bid_timestamp_ms,
        max(timestamp_ms) AS last_bid_timestamp_ms
    FROM mev_relay_bid_trace
    WHERE meta_network_name = 'mainnet'
      AND slot_start_date_time >= '2026-05-12' AND slot_start_date_time < '2026-05-12'::date + INTERVAL 1 DAY
    GROUP BY slot, slot_start_date_time
),

-- MEV payload delivery - join canonical block with delivered payloads
-- Note: Use is_mev flag because ClickHouse LEFT JOIN returns 0 (not NULL) for non-matching rows
-- Get value from proposer_payload_delivered (not bid_trace, which may not have the winning block)
mev_payload AS (
    SELECT
        cb.slot,
        cb.execution_payload_block_hash AS winning_block_hash,
        1 AS is_mev,
        max(pd.value) AS winning_bid_value,
        groupArray(DISTINCT pd.relay_name) AS relay_names,
        any(pd.builder_pubkey) AS winning_builder
    FROM canonical_block cb
    GLOBAL INNER JOIN mev_relay_proposer_payload_delivered pd
        ON cb.slot = pd.slot AND cb.execution_payload_block_hash = pd.block_hash
    WHERE pd.meta_network_name = 'mainnet'
      AND slot_start_date_time >= '2026-05-12' AND slot_start_date_time < '2026-05-12'::date + INTERVAL 1 DAY
    GROUP BY cb.slot, cb.execution_payload_block_hash
),

-- Winning bid timing from bid_trace (may not exist for all MEV blocks)
winning_bid AS (
    SELECT
        bt.slot,
        bt.slot_start_date_time,
        argMin(bt.timestamp_ms, bt.event_date_time) AS winning_bid_timestamp_ms
    FROM mev_relay_bid_trace bt
    GLOBAL INNER JOIN mev_payload mp ON bt.slot = mp.slot AND bt.block_hash = mp.winning_block_hash
    WHERE bt.meta_network_name = 'mainnet'
      AND slot_start_date_time >= '2026-05-12' AND slot_start_date_time < '2026-05-12'::date + INTERVAL 1 DAY
    GROUP BY bt.slot, bt.slot_start_date_time
),

-- Block gossip timing with spread
block_gossip AS (
    SELECT
        slot,
        min(event_date_time) AS block_first_seen,
        max(event_date_time) AS block_last_seen
    FROM libp2p_gossipsub_beacon_block
    WHERE meta_network_name = 'mainnet'
      AND slot_start_date_time >= '2026-05-12' AND slot_start_date_time < '2026-05-12'::date + INTERVAL 1 DAY
    GROUP BY slot
),

-- Column arrival timing: first arrival per column, then min/max of those
column_gossip AS (
    SELECT
        slot,
        min(first_seen) AS first_column_first_seen,
        max(first_seen) AS last_column_first_seen
    FROM (
        SELECT
            slot,
            column_index,
            min(event_date_time) AS first_seen
        FROM libp2p_gossipsub_data_column_sidecar
        WHERE meta_network_name = 'mainnet'
          AND slot_start_date_time >= '2026-05-12' AND slot_start_date_time < '2026-05-12'::date + INTERVAL 1 DAY
          AND event_date_time > '1970-01-01 00:00:01'
        GROUP BY slot, column_index
    )
    GROUP BY slot
)

SELECT
    s.slot AS slot,
    s.slot_start_date_time AS slot_start_date_time,
    pe.entity AS proposer_entity,

    -- Blob count
    coalesce(bc.blob_count, 0) AS blob_count,

    -- MEV bid timing (absolute and relative to slot start)
    fromUnixTimestamp64Milli(mb.first_bid_timestamp_ms) AS first_bid_at,
    mb.first_bid_timestamp_ms - toInt64(toUnixTimestamp(mb.slot_start_date_time)) * 1000 AS first_bid_ms,
    fromUnixTimestamp64Milli(mb.last_bid_timestamp_ms) AS last_bid_at,
    mb.last_bid_timestamp_ms - toInt64(toUnixTimestamp(mb.slot_start_date_time)) * 1000 AS last_bid_ms,

    -- Winning bid timing (from bid_trace, may be NULL if block hash not in bid_trace)
    if(wb.slot != 0, fromUnixTimestamp64Milli(wb.winning_bid_timestamp_ms), NULL) AS winning_bid_at,
    if(wb.slot != 0, wb.winning_bid_timestamp_ms - toInt64(toUnixTimestamp(s.slot_start_date_time)) * 1000, NULL) AS winning_bid_ms,

    -- MEV payload info (from proposer_payload_delivered, always present for MEV blocks)
    if(mp.is_mev = 1, mp.winning_bid_value, NULL) AS winning_bid_value,
    if(mp.is_mev = 1, mp.relay_names, []) AS winning_relays,
    if(mp.is_mev = 1, mp.winning_builder, NULL) AS winning_builder,

    -- Block gossip timing with spread
    bg.block_first_seen,
    dateDiff('millisecond', s.slot_start_date_time, bg.block_first_seen) AS block_first_seen_ms,
    bg.block_last_seen,
    dateDiff('millisecond', s.slot_start_date_time, bg.block_last_seen) AS block_last_seen_ms,
    dateDiff('millisecond', bg.block_first_seen, bg.block_last_seen) AS block_spread_ms,

    -- Column arrival timing (NULL when no blobs)
    if(coalesce(bc.blob_count, 0) = 0, NULL, cg.first_column_first_seen) AS first_column_first_seen,
    if(coalesce(bc.blob_count, 0) = 0, NULL, dateDiff('millisecond', s.slot_start_date_time, cg.first_column_first_seen)) AS first_column_first_seen_ms,
    if(coalesce(bc.blob_count, 0) = 0, NULL, cg.last_column_first_seen) AS last_column_first_seen,
    if(coalesce(bc.blob_count, 0) = 0, NULL, dateDiff('millisecond', s.slot_start_date_time, cg.last_column_first_seen)) AS last_column_first_seen_ms,
    if(coalesce(bc.blob_count, 0) = 0, NULL, dateDiff('millisecond', cg.first_column_first_seen, cg.last_column_first_seen)) AS column_spread_ms

FROM slots s
GLOBAL LEFT JOIN proposer_entity pe ON s.proposer_validator_index = pe.index
GLOBAL LEFT JOIN blob_count bc ON s.slot = bc.slot
GLOBAL LEFT JOIN mev_bids mb ON s.slot = mb.slot
GLOBAL LEFT JOIN mev_payload mp ON s.slot = mp.slot
GLOBAL LEFT JOIN winning_bid wb ON s.slot = wb.slot
GLOBAL LEFT JOIN block_gossip bg ON s.slot = bg.slot
GLOBAL LEFT JOIN column_gossip cg ON s.slot = cg.slot

ORDER BY s.slot DESC
Show code
df = load_parquet("block_production_timeline", target_date)

# Filter to valid blocks (exclude missed slots)
df = df[df["block_first_seen_ms"].notna()]
df = df[(df["block_first_seen_ms"] >= 0) & (df["block_first_seen_ms"] < 60000)]

# Flag MEV vs local blocks
df["has_mev"] = df["winning_bid_value"].notna()
df["block_type"] = df["has_mev"].map({True: "MEV", False: "Local"})

# Get max blob count for charts
max_blobs = df["blob_count"].max()

print(f"Total valid blocks: {len(df):,}")
print(f"MEV blocks: {df['has_mev'].sum():,} ({df['has_mev'].mean()*100:.1f}%)")
print(f"Local blocks: {(~df['has_mev']).sum():,} ({(~df['has_mev']).mean()*100:.1f}%)")
Total valid blocks: 7,187
MEV blocks: 6,703 (93.3%)
Local blocks: 484 (6.7%)

Anomaly detection method

The method:

  1. Fit linear regression: block_first_seen_ms ~ blob_count
  2. Calculate residuals (actual - expected)
  3. Flag blocks with residuals > 2σ as anomalies

Points above the ±2σ band propagated slower than expected given their blob count.

Show code
# Conditional outliers: blocks slow relative to their blob count
df_anomaly = df.copy()

# Fit regression: block_first_seen_ms ~ blob_count
slope, intercept, r_value, p_value, std_err = stats.linregress(
    df_anomaly["blob_count"].astype(float), df_anomaly["block_first_seen_ms"]
)

# Calculate expected value and residual
df_anomaly["expected_ms"] = intercept + slope * df_anomaly["blob_count"].astype(float)
df_anomaly["residual_ms"] = df_anomaly["block_first_seen_ms"] - df_anomaly["expected_ms"]

# Calculate residual standard deviation
residual_std = df_anomaly["residual_ms"].std()

# Flag anomalies: residual > 2σ (unexpectedly slow)
df_anomaly["is_anomaly"] = df_anomaly["residual_ms"] > 2 * residual_std

n_anomalies = df_anomaly["is_anomaly"].sum()
pct_anomalies = n_anomalies / len(df_anomaly) * 100

# Prepare outliers dataframe
df_outliers = df_anomaly[df_anomaly["is_anomaly"]].copy()
df_outliers["relay"] = df_outliers["winning_relays"].apply(lambda x: x[0] if len(x) > 0 else "Local")
df_outliers["proposer"] = df_outliers["proposer_entity"].fillna("Unknown")
df_outliers["builder"] = df_outliers["winning_builder"].apply(
    lambda x: f"{x[:10]}..." if pd.notna(x) and x else "Local"
)

print(f"Regression: block_ms = {intercept:.1f} + {slope:.2f} × blob_count (R² = {r_value**2:.3f})")
print(f"Residual σ = {residual_std:.1f}ms")
print(f"Anomalies (>2σ slow): {n_anomalies:,} ({pct_anomalies:.1f}%)")
Regression: block_ms = 1678.0 + 19.38 × blob_count (R² = 0.011)
Residual σ = 600.4ms
Anomalies (>2σ slow): 592 (8.2%)
Show code
# Create scatter plot with regression band
x_range = np.array([0, int(max_blobs)])
y_pred = intercept + slope * x_range
y_upper = y_pred + 2 * residual_std
y_lower = y_pred - 2 * residual_std

fig = go.Figure()

# Add ±2σ band
fig.add_trace(go.Scatter(
    x=np.concatenate([x_range, x_range[::-1]]),
    y=np.concatenate([y_upper, y_lower[::-1]]),
    fill="toself",
    fillcolor="rgba(100,100,100,0.2)",
    line=dict(width=0),
    name="±2σ band",
    hoverinfo="skip",
))

# Add regression line
fig.add_trace(go.Scatter(
    x=x_range,
    y=y_pred,
    mode="lines",
    line=dict(color="white", width=2, dash="dash"),
    name="Expected",
))

# Normal points (sample to avoid overplotting)
df_normal = df_anomaly[~df_anomaly["is_anomaly"]]
if len(df_normal) > 2000:
    df_normal = df_normal.sample(2000, random_state=42)

fig.add_trace(go.Scatter(
    x=df_normal["blob_count"],
    y=df_normal["block_first_seen_ms"],
    mode="markers",
    marker=dict(size=4, color="rgba(100,150,200,0.4)"),
    name=f"Normal ({len(df_anomaly) - n_anomalies:,})",
    hoverinfo="skip",
))

# Anomaly points
fig.add_trace(go.Scatter(
    x=df_outliers["blob_count"],
    y=df_outliers["block_first_seen_ms"],
    mode="markers",
    marker=dict(
        size=7,
        color="#e74c3c",
        line=dict(width=1, color="white"),
    ),
    name=f"Anomalies ({n_anomalies:,})",
    customdata=np.column_stack([
        df_outliers["slot"],
        df_outliers["residual_ms"].round(0),
        df_outliers["relay"],
    ]),
    hovertemplate="<b>Slot %{customdata[0]}</b><br>Blobs: %{x}<br>Actual: %{y:.0f}ms<br>+%{customdata[1]}ms vs expected<br>Relay: %{customdata[2]}<extra></extra>",
))

fig.update_layout(
    margin=dict(l=60, r=30, t=30, b=60),
    xaxis=dict(title="Blob count", range=[-0.5, int(max_blobs) + 0.5]),
    yaxis=dict(title="Block first seen (ms from slot start)"),
    legend=dict(orientation="h", yanchor="bottom", y=1.02, xanchor="right", x=1),
    height=500,
)
fig.show(config={"responsive": True})

All propagation anomalies

Blocks that propagated much slower than expected given their blob count, sorted by residual (worst first).

Show code
# All anomalies table with selectable text and Lab links
if n_anomalies > 0:
    df_table = df_outliers.sort_values("residual_ms", ascending=False)[
        ["slot", "blob_count", "block_first_seen_ms", "expected_ms", "residual_ms", "proposer", "builder", "relay"]
    ].copy()
    df_table["block_first_seen_ms"] = df_table["block_first_seen_ms"].round(0).astype(int)
    df_table["expected_ms"] = df_table["expected_ms"].round(0).astype(int)
    df_table["residual_ms"] = df_table["residual_ms"].round(0).astype(int)
    
    # Build HTML table
    html = '''
    <style>
    .anomaly-table { border-collapse: collapse; width: 100%; font-family: monospace; font-size: 13px; }
    .anomaly-table th { background: #2c3e50; color: white; padding: 8px 12px; text-align: left; position: sticky; top: 0; }
    .anomaly-table td { padding: 6px 12px; border-bottom: 1px solid #eee; }
    .anomaly-table tr:hover { background: #f5f5f5; }
    .anomaly-table .num { text-align: right; }
    .anomaly-table .delta { background: #ffebee; color: #c62828; font-weight: bold; }
    .anomaly-table a { color: #1976d2; text-decoration: none; }
    .anomaly-table a:hover { text-decoration: underline; }
    .table-container { max-height: 600px; overflow-y: auto; }
    </style>
    <div class="table-container">
    <table class="anomaly-table">
    <thead>
    <tr><th>Slot</th><th class="num">Blobs</th><th class="num">Actual (ms)</th><th class="num">Expected (ms)</th><th class="num">Δ (ms)</th><th>Proposer</th><th>Builder</th><th>Relay</th></tr>
    </thead>
    <tbody>
    '''
    
    for _, row in df_table.iterrows():
        slot_link = f'<a href="https://lab.ethpandaops.io/ethereum/slots/{row["slot"]}" target="_blank">{row["slot"]}</a>'
        html += f'''<tr>
            <td>{slot_link}</td>
            <td class="num">{row["blob_count"]}</td>
            <td class="num">{row["block_first_seen_ms"]}</td>
            <td class="num">{row["expected_ms"]}</td>
            <td class="num delta">+{row["residual_ms"]}</td>
            <td>{row["proposer"]}</td>
            <td>{row["builder"]}</td>
            <td>{row["relay"]}</td>
        </tr>'''
    
    html += '</tbody></table></div>'
    display(HTML(html))
    print(f"\nTotal anomalies: {len(df_table):,}")
else:
    print("No anomalies detected.")
SlotBlobsActual (ms)Expected (ms)Δ (ms)ProposerBuilderRelay
14314496 6 5823 1794 +4029 upbit Local Local
14314046 0 5383 1678 +3705 whale_0x2f38 Local Local
14314720 0 5306 1678 +3628 upbit Local Local
14315360 0 4669 1678 +2991 whale_0x4f7e Local Local
14310464 0 4270 1678 +2592 blockdaemon_lido Local Local
14315520 2 4260 1717 +2543 blockdaemon_lido Local Local
14316181 0 4082 1678 +2404 rocklogicgmbh_lido Local Local
14311296 0 3920 1678 +2242 stakefish Local Local
14313781 0 3908 1678 +2230 solo_stakers Local Local
14312153 0 3865 1678 +2187 solo_stakers 0x8a2d9d9a... BloXroute Max Profit
14313914 6 3721 1794 +1927 blockdaemon 0xb4ce6162... Ultra Sound
14311552 6 3625 1794 +1831 blockdaemon 0xb67eaa5e... BloXroute Regulated
14310415 0 3418 1678 +1740 ether.fi 0xb67eaa5e... Titan Relay
14311424 1 3425 1697 +1728 blockdaemon_lido 0xb67eaa5e... BloXroute Max Profit
14314845 6 3509 1794 +1715 blockdaemon 0xb4ce6162... Ultra Sound
14310861 2 3428 1717 +1711 blockdaemon 0xb67eaa5e... BloXroute Max Profit
14315422 3 3438 1736 +1702 nethermind_lido 0xb26f9666... Aestus
14312177 0 3369 1678 +1691 blockdaemon_lido 0xb67eaa5e... Titan Relay
14313383 1 3380 1697 +1683 ether.fi 0xb67eaa5e... Titan Relay
14313237 6 3475 1794 +1681 blockdaemon_lido 0x88857150... Ultra Sound
14312459 0 3358 1678 +1680 blockdaemon_lido 0xb67eaa5e... Titan Relay
14313528 6 3472 1794 +1678 blockdaemon 0x857b0038... BloXroute Max Profit
14315462 1 3370 1697 +1673 blockdaemon_lido 0x856b0004... Ultra Sound
14316703 0 3339 1678 +1661 whale_0xdc8d 0x8527d16c... Ultra Sound
14315045 1 3356 1697 +1659 blockdaemon 0xb26f9666... Titan Relay
14310245 0 3336 1678 +1658 blockdaemon_lido 0x8527d16c... Ultra Sound
14310977 0 3330 1678 +1652 blockdaemon 0xb4ce6162... Ultra Sound
14315968 7 3463 1814 +1649 0x850b00e0... Ultra Sound
14310183 0 3327 1678 +1649 blockdaemon 0x8db2a99d... BloXroute Max Profit
14316887 0 3327 1678 +1649 ether.fi 0x851b00b1... BloXroute Max Profit
14314600 10 3518 1872 +1646 blockdaemon 0x857b0038... Ultra Sound
14313225 1 3340 1697 +1643 blockdaemon_lido 0xb26f9666... Titan Relay
14313964 0 3319 1678 +1641 blockdaemon 0x8527d16c... Ultra Sound
14314703 0 3315 1678 +1637 blockdaemon 0xb26f9666... Titan Relay
14313064 10 3501 1872 +1629 0x856b0004... BloXroute Max Profit
14310560 0 3307 1678 +1629 p2porg 0x856b0004... Ultra Sound
14311528 0 3303 1678 +1625 blockdaemon_lido 0x8527d16c... Ultra Sound
14313985 0 3301 1678 +1623 stader 0x853b0078... BloXroute Max Profit
14310355 3 3357 1736 +1621 blockdaemon_lido 0x88857150... Ultra Sound
14316441 7 3434 1814 +1620 blockdaemon 0x8a850621... Titan Relay
14316860 0 3298 1678 +1620 blockdaemon_lido 0xb26f9666... Titan Relay
14310578 0 3297 1678 +1619 blockdaemon_lido 0xb67eaa5e... Titan Relay
14315371 6 3407 1794 +1613 blockdaemon 0x8db2a99d... Ultra Sound
14315128 1 3308 1697 +1611 blockdaemon 0x8527d16c... Ultra Sound
14315787 3 3346 1736 +1610 blockdaemon 0x88857150... Ultra Sound
14312538 2 3326 1717 +1609 0xb26f9666... Titan Relay
14311880 0 3287 1678 +1609 blockdaemon_lido 0x8527d16c... Ultra Sound
14313666 0 3284 1678 +1606 whale_0x8ebd 0x8527d16c... Ultra Sound
14315166 0 3284 1678 +1606 blockdaemon_lido 0x88857150... Ultra Sound
14311913 0 3283 1678 +1605 revolut 0xb67eaa5e... BloXroute Regulated
14311445 0 3281 1678 +1603 blockdaemon_lido 0x823e0146... Titan Relay
14315924 5 3377 1775 +1602 luno 0xb67eaa5e... BloXroute Regulated
14315689 7 3413 1814 +1599 blockdaemon 0x8a850621... Titan Relay
14310310 5 3369 1775 +1594 luno 0x88857150... Ultra Sound
14311207 0 3268 1678 +1590 blockdaemon 0x88857150... Ultra Sound
14310452 4 3342 1755 +1587 0xb26f9666... Ultra Sound
14310015 1 3282 1697 +1585 revolut 0xb26f9666... Titan Relay
14313695 0 3262 1678 +1584 luno 0x99cba505... BloXroute Max Profit
14314131 6 3372 1794 +1578 blockdaemon_lido 0x88857150... Ultra Sound
14315808 15 3544 1969 +1575 blockscape_lido 0xb26f9666... Titan Relay
14313692 5 3349 1775 +1574 blockdaemon_lido 0x856b0004... Ultra Sound
14315428 5 3347 1775 +1572 gateway.fmas_lido 0x850b00e0... BloXroute Max Profit
14312508 2 3285 1717 +1568 blockdaemon_lido 0x88857150... Ultra Sound
14310108 5 3341 1775 +1566 blockdaemon 0xb26f9666... Titan Relay
14312735 1 3263 1697 +1566 blockdaemon_lido 0xb67eaa5e... Titan Relay
14310785 2 3278 1717 +1561 luno 0x8527d16c... Ultra Sound
14314089 7 3373 1814 +1559 whale_0xdc8d 0x8527d16c... Ultra Sound
14315366 0 3235 1678 +1557 blockdaemon_lido 0x851b00b1... BloXroute Max Profit
14313323 7 3367 1814 +1553 blockdaemon 0x856b0004... Ultra Sound
14312643 4 3305 1755 +1550 blockdaemon_lido 0x850b00e0... BloXroute Max Profit
14315077 0 3227 1678 +1549 whale_0xfd67 0xb67eaa5e... Titan Relay
14312043 1 3246 1697 +1549 luno 0x823e0146... BloXroute Max Profit
14316234 5 3323 1775 +1548 blockdaemon 0x8527d16c... Ultra Sound
14311987 5 3320 1775 +1545 luno 0x88857150... Ultra Sound
14316559 5 3319 1775 +1544 blockdaemon_lido 0x8527d16c... Ultra Sound
14310101 3 3280 1736 +1544 blockdaemon_lido 0xb67eaa5e... Titan Relay
14313743 0 3220 1678 +1542 whale_0xdc8d 0x8527d16c... Ultra Sound
14317164 5 3316 1775 +1541 blockdaemon_lido 0xb26f9666... Titan Relay
14310075 2 3257 1717 +1540 blockdaemon_lido 0x8db2a99d... Titan Relay
14312492 3 3273 1736 +1537 whale_0xdc8d 0x856b0004... Ultra Sound
14314169 3 3271 1736 +1535 whale_0x8914 0xb67eaa5e... Titan Relay
14312938 9 3387 1852 +1535 blockdaemon_lido 0x88857150... Ultra Sound
14311903 0 3210 1678 +1532 blockdaemon_lido 0x88a53ec4... BloXroute Max Profit
14315212 0 3204 1678 +1526 revolut 0x8db2a99d... BloXroute Max Profit
14311392 0 3201 1678 +1523 p2porg 0xb67eaa5e... BloXroute Regulated
14311850 0 3197 1678 +1519 coinbase 0x8527d16c... Ultra Sound
14315431 5 3292 1775 +1517 p2porg 0x850b00e0... BloXroute Regulated
14317091 8 3350 1833 +1517 bitstamp 0xb67eaa5e... BloXroute Regulated
14315567 0 3193 1678 +1515 whale_0x8914 0x8db2a99d... Ultra Sound
14315076 5 3289 1775 +1514 revolut 0x8527d16c... Ultra Sound
14311256 1 3209 1697 +1512 whale_0x8914 0xb67eaa5e... Titan Relay
14314939 4 3267 1755 +1512 whale_0x8ebd Local Local
14314256 0 3189 1678 +1511 0xa965c911... Ultra Sound
14313071 5 3285 1775 +1510 whale_0x6ddb 0x850b00e0... Ultra Sound
14313355 5 3283 1775 +1508 p2porg_lido 0xb67eaa5e... BloXroute Regulated
14312903 0 3182 1678 +1504 whale_0x4b5e 0x851b00b1... Ultra Sound
14310424 6 3298 1794 +1504 blockdaemon 0x8527d16c... Ultra Sound
14314535 5 3278 1775 +1503 revolut 0xb26f9666... Titan Relay
14315198 1 3200 1697 +1503 whale_0x8ebd 0x850b00e0... BloXroute Max Profit
14316989 2 3219 1717 +1502 p2porg 0x8527d16c... Ultra Sound
14316207 3 3237 1736 +1501 coinbase 0x88a53ec4... BloXroute Max Profit
14314881 6 3294 1794 +1500 blockdaemon 0x8527d16c... Ultra Sound
14312136 9 3349 1852 +1497 whale_0xdc8d 0x8527d16c... Ultra Sound
14311628 5 3268 1775 +1493 blockdaemon_lido 0x88857150... Ultra Sound
14316865 6 3286 1794 +1492 blockdaemon_lido 0x88857150... Ultra Sound
14310450 2 3206 1717 +1489 coinbase Local Local
14315575 0 3165 1678 +1487 gateway.fmas_lido 0xb67eaa5e... BloXroute Max Profit
14312969 0 3164 1678 +1486 revolut 0x853b0078... BloXroute Regulated
14312024 4 3238 1755 +1483 p2porg 0x823e0146... Ultra Sound
14315163 1 3178 1697 +1481 p2porg 0x850b00e0... BloXroute Regulated
14313143 3 3212 1736 +1476 revolut 0xb26f9666... Titan Relay
14311890 1 3169 1697 +1472 p2porg 0xb67eaa5e... BloXroute Regulated
14316794 0 3145 1678 +1467 whale_0x4b5e 0x851b00b1... Ultra Sound
14315050 9 3319 1852 +1467 everstake 0x857b0038... BloXroute Max Profit
14314045 0 3144 1678 +1466 coinbase 0x88857150... Ultra Sound
14312802 0 3144 1678 +1466 0x853b0078... Ultra Sound
14316960 7 3279 1814 +1465 figment 0x856b0004... BloXroute Max Profit
14311847 1 3161 1697 +1464 coinbase 0x8db2a99d... Titan Relay
14315717 5 3237 1775 +1462 revolut 0x8db2a99d... BloXroute Max Profit
14315977 6 3254 1794 +1460 revolut 0x8527d16c... Ultra Sound
14312718 4 3214 1755 +1459 blockdaemon 0x8527d16c... Ultra Sound
14311503 1 3155 1697 +1458 whale_0xfd67 0x85fb0503... Ultra Sound
14313815 8 3290 1833 +1457 whale_0xdc8d 0x8527d16c... Ultra Sound
14311151 3 3192 1736 +1456 p2porg_lido 0x850b00e0... BloXroute Max Profit
14317180 0 3133 1678 +1455 figment 0xb26f9666... Titan Relay
14311951 0 3133 1678 +1455 revolut 0xa03781b9... Ultra Sound
14315584 5 3229 1775 +1454 0x856b0004... BloXroute Max Profit
14312932 3 3188 1736 +1452 p2porg_lido 0x850b00e0... BloXroute Max Profit
14313955 0 3129 1678 +1451 coinbase 0x8db2a99d... Ultra Sound
14311189 0 3127 1678 +1449 whale_0x3878 0xb67eaa5e... Ultra Sound
14312232 3 3183 1736 +1447 p2porg_lido 0x850b00e0... BloXroute Regulated
14310754 1 3143 1697 +1446 whale_0x8ebd 0x8527d16c... Ultra Sound
14311995 2 3161 1717 +1444 p2porg_lido 0xb67eaa5e... BloXroute Regulated
14314654 0 3122 1678 +1444 blockdaemon_lido 0xb26f9666... Titan Relay
14314652 8 3276 1833 +1443 0x853b0078... Ultra Sound
14316118 0 3119 1678 +1441 p2porg 0xb26f9666... Titan Relay
14313443 0 3118 1678 +1440 p2porg 0x851b00b1... BloXroute Max Profit
14310484 0 3117 1678 +1439 p2porg 0x850b00e0... Flashbots
14311956 3 3174 1736 +1438 p2porg_lido 0x850b00e0... BloXroute Regulated
14316839 0 3115 1678 +1437 p2porg 0x88857150... Ultra Sound
14315782 1 3133 1697 +1436 coinbase 0xb26f9666... Titan Relay
14316615 1 3133 1697 +1436 whale_0x4b5e 0xb67eaa5e... Titan Relay
14313363 4 3191 1755 +1436 kiln 0xb67eaa5e... BloXroute Max Profit
14316777 2 3152 1717 +1435 p2porg_lido 0x88a53ec4... BloXroute Regulated
14311005 7 3247 1814 +1433 p2porg Local Local
14313902 5 3208 1775 +1433 p2porg_lido 0x850b00e0... BloXroute Max Profit
14310154 7 3244 1814 +1430 whale_0x4b5e 0xb67eaa5e... Titan Relay
14312992 2 3147 1717 +1430 whale_0x8ebd 0x8527d16c... Ultra Sound
14310730 5 3205 1775 +1430 coinbase 0x88a53ec4... BloXroute Regulated
14315702 1 3126 1697 +1429 p2porg 0x8db2a99d... BloXroute Max Profit
14310596 1 3126 1697 +1429 whale_0x8ebd 0x88a53ec4... BloXroute Max Profit
14314925 0 3106 1678 +1428 revolut 0x8527d16c... Ultra Sound
14312189 0 3106 1678 +1428 p2porg_lido Local Local
14314372 0 3104 1678 +1426 p2porg_lido 0x850b00e0... BloXroute Max Profit
14314903 0 3104 1678 +1426 p2porg_lido 0xb67eaa5e... BloXroute Regulated
14312047 5 3200 1775 +1425 kiln 0xb67eaa5e... BloXroute Max Profit
14312424 0 3103 1678 +1425 p2porg_lido 0xb67eaa5e... BloXroute Max Profit
14312828 0 3103 1678 +1425 p2porg 0x853b0078... BloXroute Regulated
14311180 1 3122 1697 +1425 coinbase 0x88a53ec4... BloXroute Regulated
14317127 2 3141 1717 +1424 p2porg_lido 0x850b00e0... BloXroute Max Profit
14315969 0 3102 1678 +1424 stader 0x856b0004... Ultra Sound
14313816 1 3120 1697 +1423 p2porg_lido 0x88a53ec4... BloXroute Regulated
14311813 6 3215 1794 +1421 p2porg_lido 0xb67eaa5e... BloXroute Max Profit
14311045 1 3118 1697 +1421 coinbase 0xb26f9666... BloXroute Max Profit
14315126 0 3098 1678 +1420 p2porg_lido 0xb67eaa5e... BloXroute Regulated
14312605 8 3253 1833 +1420 revolut 0xb26f9666... Titan Relay
14312926 5 3194 1775 +1419 whale_0x8ebd 0x856b0004... BloXroute Max Profit
14314580 5 3193 1775 +1418 coinbase 0xb26f9666... Titan Relay
14315178 1 3114 1697 +1417 p2porg 0x856b0004... BloXroute Max Profit
14314534 5 3191 1775 +1416 p2porg_lido 0x88a53ec4... BloXroute Regulated
14312578 0 3094 1678 +1416 p2porg_lido 0x850b00e0... BloXroute Max Profit
14311017 1 3111 1697 +1414 p2porg 0x850b00e0... BloXroute Regulated
14310458 0 3090 1678 +1412 blockdaemon 0xb26f9666... Ultra Sound
14310649 1 3109 1697 +1412 p2porg 0xb67eaa5e... Ultra Sound
14312810 5 3184 1775 +1409 coinbase 0x857b0038... BloXroute Max Profit
14311142 0 3087 1678 +1409 p2porg_lido 0x850b00e0... BloXroute Max Profit
14313748 0 3087 1678 +1409 p2porg 0xb26f9666... Titan Relay
14316040 3 3145 1736 +1409 blockdaemon_lido 0x853b0078... BloXroute Max Profit
14311545 3 3145 1736 +1409 whale_0xfd67 0x85fb0503... Ultra Sound
14316820 6 3202 1794 +1408 whale_0x4b5e 0x88a53ec4... BloXroute Max Profit
14311382 0 3085 1678 +1407 0xb67eaa5e... Ultra Sound
14313827 4 3161 1755 +1406 p2porg_lido 0x850b00e0... BloXroute Max Profit
14313925 5 3179 1775 +1404 p2porg_lido 0x88a53ec4... BloXroute Max Profit
14312628 0 3082 1678 +1404 0x8527d16c... Ultra Sound
14313154 0 3081 1678 +1403 p2porg 0x96f44633... Titan Relay
14310641 6 3196 1794 +1402 bitstamp 0x823e0146... Flashbots
14314315 8 3234 1833 +1401 p2porg_lido 0x88a53ec4... BloXroute Regulated
14311233 6 3194 1794 +1400 p2porg_lido 0x850b00e0... BloXroute Max Profit
14312825 9 3252 1852 +1400 kiln 0x850b00e0... BloXroute Max Profit
14315262 9 3252 1852 +1400 p2porg_lido 0x88a53ec4... BloXroute Regulated
14314724 8 3232 1833 +1399 p2porg 0x850b00e0... BloXroute Regulated
14313372 3 3135 1736 +1399 whale_0xf273 0x88a53ec4... Aestus
14316947 0 3076 1678 +1398 p2porg 0xb26f9666... BloXroute Max Profit
14316049 0 3076 1678 +1398 whale_0x8ebd 0xb4ce6162... Ultra Sound
14312152 2 3114 1717 +1397 whale_0xedc6 0x856b0004... BloXroute Max Profit
14310167 5 3172 1775 +1397 whale_0x8ebd 0xb67eaa5e... BloXroute Regulated
14316158 8 3229 1833 +1396 p2porg 0x853b0078... Titan Relay
14315941 6 3190 1794 +1396 p2porg_lido 0xb67eaa5e... BloXroute Max Profit
14310170 0 3073 1678 +1395 whale_0x8ebd 0x85fb0503... Aestus
14314350 0 3073 1678 +1395 whale_0xedc6 0x856b0004... Ultra Sound
14314994 0 3071 1678 +1393 0x850b00e0... BloXroute Max Profit
14311885 0 3071 1678 +1393 coinbase 0x8527d16c... Ultra Sound
14311529 6 3187 1794 +1393 gateway.fmas_lido 0xb67eaa5e... BloXroute Max Profit
14312708 7 3206 1814 +1392 p2porg_lido 0x850b00e0... BloXroute Max Profit
14312561 0 3070 1678 +1392 blockdaemon 0x856b0004... BloXroute Max Profit
14314547 0 3070 1678 +1392 0xb67eaa5e... BloXroute Regulated
14311708 0 3069 1678 +1391 p2porg_lido 0x926b7905... BloXroute Max Profit
14312621 4 3146 1755 +1391 whale_0x8914 0xb67eaa5e... BloXroute Max Profit
14311768 6 3184 1794 +1390 p2porg_lido 0xb67eaa5e... BloXroute Max Profit
14315557 1 3086 1697 +1389 coinbase 0xb26f9666... Titan Relay
14315613 2 3103 1717 +1386 coinbase 0xb26f9666... Titan Relay
14311341 6 3180 1794 +1386 p2porg_lido 0xb67eaa5e... BloXroute Max Profit
14315784 1 3083 1697 +1386 coinbase 0x88a53ec4... BloXroute Max Profit
14315384 1 3081 1697 +1384 whale_0x8ebd 0x8527d16c... Ultra Sound
14314115 1 3081 1697 +1384 kiln 0x88857150... Ultra Sound
14312725 1 3080 1697 +1383 whale_0x8ebd 0x88857150... Ultra Sound
14313105 6 3176 1794 +1382 whale_0x8ebd 0x8527d16c... Ultra Sound
14311013 0 3058 1678 +1380 p2porg 0x850b00e0... BloXroute Regulated
14313722 0 3058 1678 +1380 coinbase 0xb26f9666... BloXroute Max Profit
14312433 1 3077 1697 +1380 coinbase 0x856b0004... Ultra Sound
14316660 0 3057 1678 +1379 p2porg 0x823e0146... Flashbots
14311734 0 3057 1678 +1379 p2porg_lido 0xb67eaa5e... BloXroute Regulated
14316194 3 3115 1736 +1379 whale_0x8ebd 0x88857150... Ultra Sound
14314730 1 3076 1697 +1379 whale_0x8ebd 0x856b0004... Ultra Sound
14310207 0 3056 1678 +1378 figment 0xb4ce6162... Ultra Sound
14313599 6 3172 1794 +1378 p2porg 0x8527d16c... Ultra Sound
14312632 6 3172 1794 +1378 p2porg 0x850b00e0... BloXroute Regulated
14311047 4 3131 1755 +1376 coinbase 0x8527d16c... Ultra Sound
14316766 2 3092 1717 +1375 coinbase 0x88857150... Ultra Sound
14316474 5 3147 1775 +1372 figment 0x856b0004... Ultra Sound
14312223 5 3147 1775 +1372 kiln 0x850b00e0... Flashbots
14314215 2 3088 1717 +1371 coinbase Local Local
14314848 6 3165 1794 +1371 whale_0xfd67 0x88a53ec4... BloXroute Regulated
14315469 1 3068 1697 +1371 p2porg 0xb26f9666... Aestus
14310426 1 3067 1697 +1370 coinbase 0x8527d16c... Ultra Sound
14315179 5 3144 1775 +1369 gateway.fmas_lido 0x853b0078... BloXroute Max Profit
14315326 5 3144 1775 +1369 p2porg_lido 0x850b00e0... BloXroute Regulated
14315627 0 3047 1678 +1369 figment 0x99cba505... BloXroute Max Profit
14313738 0 3047 1678 +1369 coinbase 0x8527d16c... Ultra Sound
14314384 3 3105 1736 +1369 coinbase 0x88a53ec4... BloXroute Regulated
14314926 1 3066 1697 +1369 coinbase 0x856b0004... Ultra Sound
14314996 0 3046 1678 +1368 coinbase 0x850b00e0... BloXroute Max Profit
14316962 0 3046 1678 +1368 kiln 0x88857150... Ultra Sound
14313217 0 3045 1678 +1367 whale_0xfd67 0x88cd924c... Ultra Sound
14316202 6 3161 1794 +1367 0x856b0004... BloXroute Max Profit
14314744 10 3238 1872 +1366 p2porg_lido 0x88a53ec4... BloXroute Regulated
14315048 5 3141 1775 +1366 kiln 0x857b0038... BloXroute Max Profit
14317162 0 3044 1678 +1366 0xb26f9666... Titan Relay
14314616 3 3102 1736 +1366 p2porg 0xb26f9666... Titan Relay
14312028 1 3063 1697 +1366 p2porg 0xb26f9666... BloXroute Max Profit
14317189 0 3043 1678 +1365 gateway.fmas_lido 0x8db2a99d... BloXroute Max Profit
14311634 1 3062 1697 +1365 figment 0x856b0004... BloXroute Max Profit
14311736 4 3120 1755 +1365 coinbase 0x88857150... Ultra Sound
14313924 2 3081 1717 +1364 whale_0x8ebd 0x8527d16c... Ultra Sound
14315500 0 3042 1678 +1364 whale_0x8ebd 0x8db2a99d... BloXroute Max Profit
14316204 0 3042 1678 +1364 p2porg 0xb26f9666... BloXroute Max Profit
14310773 1 3061 1697 +1364 whale_0x8ebd 0x8527d16c... Ultra Sound
14314795 1 3060 1697 +1363 coinbase 0x8db2a99d... Titan Relay
14315055 1 3060 1697 +1363 0x856b0004... Ultra Sound
14316543 1 3059 1697 +1362 coinbase 0x88857150... Ultra Sound
14314790 9 3214 1852 +1362 Local Local
14316021 2 3078 1717 +1361 figment 0x856b0004... BloXroute Max Profit
14314151 5 3136 1775 +1361 p2porg_lido 0x88a53ec4... BloXroute Max Profit
14310142 0 3038 1678 +1360 p2porg 0x85fb0503... Aestus
14316195 3 3096 1736 +1360 p2porg_lido 0x8db2a99d... BloXroute Max Profit
14314497 6 3154 1794 +1360 bitstamp 0x8db2a99d... BloXroute Max Profit
14312688 0 3037 1678 +1359 figment 0x8527d16c... Ultra Sound
14310967 0 3036 1678 +1358 coinbase 0x8527d16c... Ultra Sound
14315738 1 3055 1697 +1358 whale_0x8ebd 0x88857150... Ultra Sound
14315141 2 3074 1717 +1357 abyss_finance 0xb26f9666... BloXroute Max Profit
14312126 5 3132 1775 +1357 coinbase 0x8527d16c... Ultra Sound
14311666 0 3035 1678 +1357 p2porg 0x85fb0503... Aestus
14310805 1 3054 1697 +1357 p2porg_lido 0x8db2a99d... BloXroute Max Profit
14311993 4 3112 1755 +1357 coinbase 0xb26f9666... BloXroute Regulated
14316267 1 3053 1697 +1356 kiln 0xb26f9666... BloXroute Regulated
14315947 0 3033 1678 +1355 coinbase 0x856b0004... BloXroute Max Profit
14314917 8 3188 1833 +1355 kiln 0x88a53ec4... BloXroute Max Profit
14311396 1 3052 1697 +1355 bitstamp 0xb67eaa5e... BloXroute Regulated
14311964 2 3071 1717 +1354 whale_0xedc6 0x856b0004... BloXroute Max Profit
14312984 5 3129 1775 +1354 bitstamp 0xb67eaa5e... BloXroute Regulated
14312194 1 3051 1697 +1354 coinbase 0x8527d16c... Ultra Sound
14313213 1 3051 1697 +1354 coinbase 0x8527d16c... Ultra Sound
14313785 4 3108 1755 +1353 0x8527d16c... Ultra Sound
14314263 2 3069 1717 +1352 coinbase 0x853b0078... BloXroute Max Profit
14310655 0 3030 1678 +1352 whale_0x8ebd 0x8527d16c... Ultra Sound
14312357 8 3185 1833 +1352 p2porg_lido 0x850b00e0... BloXroute Regulated
14315229 6 3146 1794 +1352 coinbase 0xb26f9666... BloXroute Max Profit
14311861 0 3028 1678 +1350 whale_0x8ebd 0x88857150... Ultra Sound
14312119 8 3182 1833 +1349 coinbase 0x88a53ec4... BloXroute Max Profit
14311851 0 3026 1678 +1348 whale_0x8ebd 0x823e0146... Ultra Sound
14311786 0 3026 1678 +1348 kiln 0x85fb0503... Aestus
14312900 3 3084 1736 +1348 p2porg 0x8527d16c... Ultra Sound
14316154 1 3045 1697 +1348 kiln 0x8527d16c... Ultra Sound
14312242 10 3219 1872 +1347 whale_0x8ebd 0x88a53ec4... BloXroute Max Profit
14314805 10 3218 1872 +1346 whale_0x8ebd 0x8527d16c... Ultra Sound
14316507 1 3043 1697 +1346 p2porg_lido 0x8db2a99d... BloXroute Max Profit
14313632 0 3022 1678 +1344 senseinode_lido Local Local
14316933 0 3022 1678 +1344 coinbase 0x8db2a99d... BloXroute Max Profit
14310793 5 3118 1775 +1343 coinbase 0x8db2a99d... Ultra Sound
14313073 0 3021 1678 +1343 whale_0x8ebd 0x88857150... Ultra Sound
14314364 0 3021 1678 +1343 p2porg 0xb26f9666... BloXroute Regulated
14315832 2 3059 1717 +1342 kiln 0xb26f9666... BloXroute Max Profit
14312816 5 3117 1775 +1342 coinbase Local Local
14315494 0 3020 1678 +1342 coinbase 0x8db2a99d... BloXroute Max Profit
14311706 0 3020 1678 +1342 coinbase 0xb26f9666... BloXroute Max Profit
14314792 1 3038 1697 +1341 coinbase 0x8527d16c... Ultra Sound
14310318 0 3018 1678 +1340 coinbase 0x8527d16c... Ultra Sound
14310141 1 3037 1697 +1340 kiln 0x8527d16c... Ultra Sound
14312001 1 3037 1697 +1340 everstake 0x88a53ec4... BloXroute Max Profit
14310855 10 3211 1872 +1339 coinbase Local Local
14313178 5 3114 1775 +1339 whale_0x8ebd 0x8527d16c... Ultra Sound
14313755 0 3017 1678 +1339 coinbase 0x8527d16c... Ultra Sound
14311595 0 3017 1678 +1339 0x88a53ec4... BloXroute Max Profit
14316599 1 3036 1697 +1339 nethermind_lido 0xb26f9666... Aestus
14313923 0 3016 1678 +1338 coinbase 0x805e28e6... BloXroute Max Profit
14312296 11 3228 1891 +1337 whale_0x8914 0x88a53ec4... BloXroute Max Profit
14312438 1 3034 1697 +1337 kiln 0x8527d16c... Ultra Sound
14316029 5 3111 1775 +1336 p2porg 0x856b0004... BloXroute Max Profit
14313564 0 3014 1678 +1336 whale_0x8ebd 0x88a53ec4... BloXroute Max Profit
14311504 0 3014 1678 +1336 coinbase 0x8527d16c... Ultra Sound
14313381 1 3032 1697 +1335 p2porg 0x853b0078... BloXroute Max Profit
14314552 4 3090 1755 +1335 whale_0x8ebd 0x8527d16c... Ultra Sound
14311418 0 3012 1678 +1334 kiln 0xb67eaa5e... Ultra Sound
14312641 0 3011 1678 +1333 0xb26f9666... Titan Relay
14311034 0 3011 1678 +1333 whale_0x8ebd 0x8527d16c... Ultra Sound
14315726 5 3107 1775 +1332 whale_0x8ebd 0x8527d16c... Ultra Sound
14310218 0 3010 1678 +1332 0xa03781b9... Ultra Sound
14315488 0 3010 1678 +1332 coinbase 0x823e0146... Flashbots
14311255 0 3010 1678 +1332 coinbase 0x8db2a99d... Ultra Sound
14310645 6 3125 1794 +1331 whale_0x8ebd 0x8527d16c... Ultra Sound
14311293 1 3028 1697 +1331 kiln 0xb26f9666... Titan Relay
14315697 1 3028 1697 +1331 kiln 0x823e0146... Flashbots
14310629 0 3008 1678 +1330 whale_0x8ebd 0x823e0146... BloXroute Max Profit
14313859 0 3008 1678 +1330 bitstamp 0x851b00b1... BloXroute Max Profit
14316762 0 3008 1678 +1330 coinbase 0x8527d16c... Ultra Sound
14313926 7 3143 1814 +1329 whale_0x8ebd 0xb7c5e609... BloXroute Max Profit
14313948 6 3123 1794 +1329 blockdaemon 0x8527d16c... Ultra Sound
14315369 1 3026 1697 +1329 coinbase 0x856b0004... Ultra Sound
14310468 10 3200 1872 +1328 p2porg 0x853b0078... Ultra Sound
14311803 5 3103 1775 +1328 whale_0x8ebd 0x8527d16c... Ultra Sound
14310402 1 3024 1697 +1327 coinbase 0x8527d16c... Ultra Sound
14314339 7 3140 1814 +1326 kiln Local Local
14310147 0 3003 1678 +1325 bitstamp 0x88a53ec4... BloXroute Regulated
14312571 4 3080 1755 +1325 p2porg_lido 0x850b00e0... BloXroute Max Profit
14310062 0 3002 1678 +1324 whale_0x8ebd 0x8527d16c... Ultra Sound
14316670 6 3118 1794 +1324 whale_0x4b5e 0xb67eaa5e... Titan Relay
14316637 1 3020 1697 +1323 coinbase 0x8527d16c... Ultra Sound
14313176 1 3020 1697 +1323 p2porg 0x853b0078... BloXroute Max Profit
14314593 7 3136 1814 +1322 p2porg 0x853b0078... Aestus
14313759 5 3097 1775 +1322 whale_0x8ebd 0x8527d16c... Ultra Sound
14317190 0 3000 1678 +1322 kiln 0x8527d16c... Ultra Sound
14314612 16 3310 1988 +1322 blockdaemon_lido 0xb67eaa5e... Titan Relay
14313612 1 3019 1697 +1322 solo_stakers 0x853b0078... BloXroute Regulated
14312054 1 3019 1697 +1322 whale_0x8ebd 0xb67eaa5e... BloXroute Regulated
14315414 10 3193 1872 +1321 p2porg 0xb26f9666... Titan Relay
14314761 0 2999 1678 +1321 whale_0x8ebd 0x8527d16c... Ultra Sound
14311343 0 2999 1678 +1321 whale_0x8ebd 0xb26f9666... BloXroute Max Profit
14313694 3 3057 1736 +1321 coinbase 0x853b0078... BloXroute Regulated
14313734 3 3056 1736 +1320 whale_0x8ebd 0x856b0004... BloXroute Max Profit
14316651 6 3114 1794 +1320 coinbase 0xb26f9666... Titan Relay
14316466 6 3114 1794 +1320 whale_0x8ebd 0xb4ce6162... Ultra Sound
14311217 6 3113 1794 +1319 coinbase 0x8527d16c... Ultra Sound
14313777 7 3132 1814 +1318 whale_0xfd67 0x850b00e0... Aestus
14315293 2 3035 1717 +1318 p2porg 0xb26f9666... BloXroute Max Profit
14316517 5 3093 1775 +1318 whale_0x8ebd 0x88857150... Ultra Sound
14313156 5 3091 1775 +1316 whale_0xedc6 0x856b0004... Ultra Sound
14313149 5 3091 1775 +1316 kiln 0x8527d16c... Ultra Sound
14313136 5 3090 1775 +1315 whale_0x8ebd 0x8527d16c... Ultra Sound
14310666 0 2993 1678 +1315 kiln 0x99cba505... Flashbots
14315616 1 3012 1697 +1315 everstake 0x8527d16c... Ultra Sound
14310440 0 2992 1678 +1314 kiln 0xb67eaa5e... BloXroute Max Profit
14312350 3 3050 1736 +1314 coinbase 0x853b0078... BloXroute Max Profit
14316563 0 2991 1678 +1313 whale_0xedc6 0xb26f9666... BloXroute Max Profit
14313200 1 3010 1697 +1313 kiln 0x856b0004... BloXroute Max Profit
14314607 0 2990 1678 +1312 coinbase 0x8527d16c... Ultra Sound
14311794 1 3009 1697 +1312 coinbase 0xb7c5c39a... BloXroute Max Profit
14313151 0 2989 1678 +1311 solo_stakers 0x8527d16c... Ultra Sound
14317194 0 2989 1678 +1311 kiln 0x9129eeb4... Ultra Sound
14316124 3 3047 1736 +1311 kiln 0x88a53ec4... BloXroute Max Profit
14315095 0 2988 1678 +1310 coinbase 0x8527d16c... Ultra Sound
14317169 1 3007 1697 +1310 0xb26f9666... BloXroute Max Profit
14311444 5 3084 1775 +1309 p2porg 0x823e0146... Flashbots
14314559 5 3084 1775 +1309 p2porg 0x8527d16c... Ultra Sound
14312036 0 2986 1678 +1308 coinbase 0x823e0146... Flashbots
14316401 0 2985 1678 +1307 0x8db2a99d... BloXroute Max Profit
14316718 0 2985 1678 +1307 whale_0x8ebd 0xb26f9666... BloXroute Regulated
14310659 0 2984 1678 +1306 bitstamp 0x823e0146... Flashbots
14316271 0 2984 1678 +1306 coinbase 0x8527d16c... Ultra Sound
14312694 0 2981 1678 +1303 coinbase 0x805e28e6... BloXroute Max Profit
14310089 1 3000 1697 +1303 coinbase 0x856b0004... BloXroute Max Profit
14317174 5 3077 1775 +1302 kiln 0xac09aa45... Ultra Sound
14312171 6 3096 1794 +1302 whale_0x8ebd 0x856b0004... BloXroute Max Profit
14315084 4 3057 1755 +1302 kiln 0x8527d16c... Ultra Sound
14316726 0 2979 1678 +1301 coinbase 0x823e0146... Flashbots
14316611 3 3037 1736 +1301 kiln 0x8527d16c... Ultra Sound
14310206 1 2998 1697 +1301 coinbase 0x85fb0503... Aestus
14315247 5 3074 1775 +1299 whale_0x8ebd 0x8db2a99d... Ultra Sound
14311088 5 3074 1775 +1299 p2porg 0x85fb0503... Aestus
14315916 0 2977 1678 +1299 kiln 0x850b00e0... BloXroute Max Profit
14311897 0 2977 1678 +1299 whale_0x8ebd 0x85fb0503... Agnostic Gnosis
14313517 8 3132 1833 +1299 coinbase 0xb26f9666... Ultra Sound
14312948 8 3132 1833 +1299 bitgo 0x857b0038... Titan Relay
14310264 1 2996 1697 +1299 whale_0x8ebd 0x85fb0503... Aestus
14315576 9 3151 1852 +1299 p2porg 0x856b0004... BloXroute Max Profit
14316966 13 3228 1930 +1298 whale_0xedc6 0x856b0004... Ultra Sound
14311228 0 2975 1678 +1297 kiln 0x85fb0503... Aestus
14312509 4 3052 1755 +1297 whale_0x8ebd 0x853b0078... BloXroute Max Profit
14314078 4 3052 1755 +1297 coinbase 0x8527d16c... Ultra Sound
14311355 5 3071 1775 +1296 p2porg 0xb26f9666... BloXroute Max Profit
14314702 5 3070 1775 +1295 bitstamp 0x850b00e0... BloXroute Max Profit
14316064 0 2973 1678 +1295 whale_0x8ebd 0x85fb0503... Aestus
14316198 0 2973 1678 +1295 upbit 0x8a850621... Titan Relay
14316925 11 3186 1891 +1295 blockdaemon_lido 0xb26f9666... Titan Relay
14312779 0 2972 1678 +1294 kiln 0x8527d16c... Ultra Sound
14314606 8 3127 1833 +1294 everstake 0xb67eaa5e... BloXroute Max Profit
14314447 3 3030 1736 +1294 coinbase 0x856b0004... Ultra Sound
14311737 1 2991 1697 +1294 everstake 0x853b0078... BloXroute Max Profit
14316934 1 2991 1697 +1294 0x8527d16c... EthGas
14311692 0 2971 1678 +1293 0x96f44633... Flashbots
14310713 4 3048 1755 +1293 coinbase 0x8527d16c... Ultra Sound
14311949 10 3164 1872 +1292 kiln 0x8527d16c... Ultra Sound
14311805 9 3142 1852 +1290 coinbase 0x88857150... Ultra Sound
14310538 0 2967 1678 +1289 whale_0x8ebd 0xb26f9666... Ultra Sound
14310110 3 3025 1736 +1289 whale_0x8ebd 0x8527d16c... Ultra Sound
14313972 5 3063 1775 +1288 kiln 0x8527d16c... Ultra Sound
14312771 8 3121 1833 +1288 coinbase 0x856b0004... BloXroute Max Profit
14312502 9 3140 1852 +1288 whale_0x8ebd 0x856b0004... BloXroute Max Profit
14315993 2 3004 1717 +1287 coinbase 0x8527d16c... Ultra Sound
14313645 1 2983 1697 +1286 kiln 0x856b0004... Agnostic Gnosis
14315897 1 2982 1697 +1285 bitstamp 0x88a53ec4... BloXroute Max Profit
14311206 9 3137 1852 +1285 kiln 0xb67eaa5e... BloXroute Max Profit
14316701 3 3020 1736 +1284 coinbase 0x8527d16c... Ultra Sound
14311125 2 3000 1717 +1283 kiln 0x85fb0503... Aestus
14311557 1 2979 1697 +1282 coinbase 0x8527d16c... Ultra Sound
14314518 0 2959 1678 +1281 coinbase 0x8db2a99d... BloXroute Max Profit
14310390 3 3016 1736 +1280 kiln 0x85fb0503... Aestus
14313159 1 2977 1697 +1280 kiln Local Local
14317068 0 2957 1678 +1279 nethermind_lido 0x853b0078... BloXroute Max Profit
14316126 6 3073 1794 +1279 p2porg_lido 0x8db2a99d... BloXroute Max Profit
14313673 1 2976 1697 +1279 whale_0x8ebd 0x856b0004... BloXroute Max Profit
14313138 1 2976 1697 +1279 kiln 0xb26f9666... BloXroute Regulated
14314982 6 3072 1794 +1278 0x856b0004... Aestus
14310801 2 2992 1717 +1275 kiln 0x823e0146... Flashbots
14312653 10 3147 1872 +1275 whale_0x8ebd 0x8527d16c... Ultra Sound
14315580 0 2953 1678 +1275 kiln 0x8527d16c... Ultra Sound
14313135 3 3011 1736 +1275 p2porg_lido 0x853b0078... BloXroute Max Profit
14310266 6 3069 1794 +1275 kiln 0xb26f9666... BloXroute Max Profit
14310446 0 2952 1678 +1274 everstake 0x8db2a99d... Titan Relay
14316804 6 3068 1794 +1274 whale_0x8ebd 0x8527d16c... Ultra Sound
14310981 1 2971 1697 +1274 kiln 0x8527d16c... Ultra Sound
14315377 5 3048 1775 +1273 p2porg 0x8db2a99d... BloXroute Max Profit
14315950 5 3048 1775 +1273 figment 0x823e0146... Flashbots
14310875 0 2951 1678 +1273 kiln 0xb67eaa5e... Ultra Sound
14311176 0 2951 1678 +1273 coinbase 0x85fb0503... Aestus
14315720 0 2951 1678 +1273 everstake 0xb26f9666... Titan Relay
14310819 3 3009 1736 +1273 everstake 0x8527d16c... Ultra Sound
14317077 4 3028 1755 +1273 coinbase 0x8527d16c... Ultra Sound
14312098 2 2989 1717 +1272 kiln 0x85fb0503... Aestus
14311203 2 2989 1717 +1272 kiln 0x88857150... Ultra Sound
14311280 0 2950 1678 +1272 kiln 0x85fb0503... Aestus
14316647 0 2950 1678 +1272 kiln 0x8527d16c... Ultra Sound
14312765 12 3181 1910 +1271 kiln 0x850b00e0... BloXroute Max Profit
14310132 2 2987 1717 +1270 0x88a53ec4... BloXroute Max Profit
14312525 0 2948 1678 +1270 coinbase 0x856b0004... BloXroute Max Profit
14314759 6 3064 1794 +1270 whale_0x8ebd 0x8527d16c... Ultra Sound
14314458 5 3044 1775 +1269 coinbase 0x823e0146... Ultra Sound
14310998 0 2947 1678 +1269 whale_0x8ee5 0x85fb0503... Aestus
14311516 2 2985 1717 +1268 0xb26f9666... BloXroute Max Profit
14310003 0 2946 1678 +1268 coinbase 0x8527d16c... Ultra Sound
14313294 4 3023 1755 +1268 p2porg 0x8db2a99d... BloXroute Max Profit
14315109 5 3042 1775 +1267 coinbase 0x856b0004... BloXroute Max Profit
14316004 5 3042 1775 +1267 coinbase 0x8527d16c... Ultra Sound
14316547 3 3003 1736 +1267 everstake 0x8527d16c... Ultra Sound
14316658 1 2963 1697 +1266 whale_0x93db 0x8527d16c... Ultra Sound
14315200 4 3020 1755 +1265 everstake 0x8527d16c... Ultra Sound
14314335 1 2961 1697 +1264 everstake 0x850b00e0... BloXroute Max Profit
14314957 7 3077 1814 +1263 p2porg 0x853b0078... BloXroute Max Profit
14313432 2 2980 1717 +1263 coinbase 0xb26f9666... Ultra Sound
14311596 0 2941 1678 +1263 everstake 0xb26f9666... BloXroute Max Profit
14315892 5 3037 1775 +1262 coinbase 0x85fb0503... Aestus
14310067 5 3037 1775 +1262 whale_0x8ebd 0xb4ce6162... Ultra Sound
14316846 8 3095 1833 +1262 0xa03781b9... Ultra Sound
14311481 9 3114 1852 +1262 everstake 0x88a53ec4... BloXroute Regulated
14311345 2 2978 1717 +1261 kiln 0x85fb0503... Aestus
14316439 5 3036 1775 +1261 whale_0x8ebd 0x8db2a99d... BloXroute Max Profit
14316164 4 3016 1755 +1261 kiln 0x8db2a99d... BloXroute Max Profit
14313571 5 3035 1775 +1260 coinbase 0x856b0004... BloXroute Max Profit
14315343 3 2996 1736 +1260 rocketpool 0x88857150... Ultra Sound
14315861 6 3054 1794 +1260 coinbase 0x8527d16c... Ultra Sound
14310371 5 3034 1775 +1259 whale_0x8ebd 0x856b0004... Ultra Sound
14310885 1 2956 1697 +1259 kiln 0x8db2a99d... BloXroute Max Profit
14316336 5 3033 1775 +1258 p2porg_lido 0x8db2a99d... BloXroute Max Profit
14315672 11 3149 1891 +1258 whale_0x8ebd 0x88857150... Ultra Sound
14316278 6 3052 1794 +1258 kiln 0x85fb0503... Titan Relay
14317147 0 2934 1678 +1256 everstake 0x8527d16c... Ultra Sound
14310176 0 2933 1678 +1255 everstake 0x853b0078... BloXroute Max Profit
14311379 1 2952 1697 +1255 everstake 0xb26f9666... Titan Relay
14315909 0 2931 1678 +1253 kiln 0x88857150... Ultra Sound
14310470 0 2931 1678 +1253 nethermind_lido 0xb26f9666... Aestus
14314378 1 2950 1697 +1253 kiln 0x8527d16c... Ultra Sound
14311015 13 3182 1930 +1252 whale_0x8ebd 0x8527d16c... Ultra Sound
14313254 4 3006 1755 +1251 kiln 0x856b0004... BloXroute Max Profit
14315578 0 2928 1678 +1250 everstake 0xb26f9666... Titan Relay
14312668 0 2927 1678 +1249 kiln 0x88857150... Ultra Sound
14311638 8 3082 1833 +1249 whale_0x8ebd 0x8db2a99d... BloXroute Max Profit
14310033 2 2965 1717 +1248 bitstamp 0x85fb0503... Aestus
14312053 5 3023 1775 +1248 whale_0x8ebd 0x85fb0503... Aestus
14317070 13 3178 1930 +1248 kiln 0x8527d16c... Ultra Sound
14316830 0 2926 1678 +1248 everstake 0x8db2a99d... Titan Relay
14314960 6 3042 1794 +1248 bridgetower_lido 0x850b00e0... BloXroute Max Profit
14316632 1 2945 1697 +1248 0x8db2a99d... Ultra Sound
14316585 2 2964 1717 +1247 everstake 0x853b0078... Agnostic Gnosis
14317054 5 3022 1775 +1247 kiln 0x856b0004... Ultra Sound
14314211 3 2983 1736 +1247 kiln 0xb26f9666... Ultra Sound
14314413 10 3118 1872 +1246 coinbase 0x8527d16c... Ultra Sound
14312519 5 3021 1775 +1246 kiln 0x856b0004... Ultra Sound
14316961 0 2924 1678 +1246 everstake 0x88857150... Ultra Sound
14315516 6 3040 1794 +1246 coinbase 0x8db2a99d... Titan Relay
14311806 1 2943 1697 +1246 everstake 0x88a53ec4... BloXroute Max Profit
14316305 12 3156 1910 +1246 whale_0x8ebd 0x8527d16c... Ultra Sound
14314305 1 2941 1697 +1244 0xb4ce6162... Ultra Sound
14316875 9 3096 1852 +1244 whale_0x8ebd 0x8527d16c... Ultra Sound
14313990 5 3018 1775 +1243 0x88857150... Ultra Sound
14311193 6 3037 1794 +1243 whale_0x8ebd 0x823e0146... Ultra Sound
14312231 0 2920 1678 +1242 kiln 0x99cba505... BloXroute Max Profit
14313404 0 2919 1678 +1241 everstake 0xb26f9666... Titan Relay
14313547 0 2919 1678 +1241 bitstamp 0xb67eaa5e... BloXroute Regulated
14311773 1 2938 1697 +1241 everstake 0xa965c911... Ultra Sound
14316308 8 3073 1833 +1240 coinbase 0x853b0078... BloXroute Max Profit
14311333 6 3034 1794 +1240 kiln 0x856b0004... BloXroute Max Profit
14311114 0 2917 1678 +1239 0xb4ce6162... Ultra Sound
14315602 0 2917 1678 +1239 coinbase 0x8a2d9d9a... BloXroute Max Profit
14316016 8 3072 1833 +1239 whale_0xedc6 0x853b0078... BloXroute Max Profit
14310354 6 3032 1794 +1238 kiln 0x8527d16c... Ultra Sound
14310544 5 3012 1775 +1237 everstake 0xb67eaa5e... BloXroute Regulated
14314307 9 3088 1852 +1236 whale_0x8ebd 0x8527d16c... Ultra Sound
14316270 0 2913 1678 +1235 everstake 0xb26f9666... Titan Relay
14311279 11 3126 1891 +1235 whale_0x8ebd 0x8527d16c... Ultra Sound
14317083 1 2932 1697 +1235 everstake 0xb26f9666... Titan Relay
14312116 0 2912 1678 +1234 kiln 0x8527d16c... Ultra Sound
14312945 1 2931 1697 +1234 nethermind_lido 0x8db2a99d... BloXroute Max Profit
14312523 5 3008 1775 +1233 kiln 0x853b0078... BloXroute Max Profit
14313031 13 3163 1930 +1233 whale_0x8ebd 0x8527d16c... Ultra Sound
14312772 0 2911 1678 +1233 everstake 0xb26f9666... Titan Relay
14311704 0 2910 1678 +1232 everstake 0xb26f9666... Titan Relay
14310009 5 3004 1775 +1229 kiln 0xac09aa45... Ultra Sound
14310575 0 2907 1678 +1229 everstake 0xb26f9666... Titan Relay
14316538 1 2926 1697 +1229 everstake 0x856b0004... Ultra Sound
14313451 5 3002 1775 +1227 kiln 0x856b0004... BloXroute Max Profit
14316788 0 2905 1678 +1227 nethermind_lido 0x853b0078... BloXroute Regulated
14316848 0 2905 1678 +1227 everstake 0xb26f9666... Titan Relay
14310678 0 2904 1678 +1226 solo_stakers 0x853b0078... Agnostic Gnosis
14313819 6 3019 1794 +1225 kiln 0x8527d16c... Ultra Sound
14310951 1 2922 1697 +1225 everstake 0x856b0004... BloXroute Max Profit
14316845 6 3017 1794 +1223 coinbase 0xb26f9666... BloXroute Max Profit
14311591 0 2900 1678 +1222 kiln 0xad251e6b... Flashbots
14312418 5 2996 1775 +1221 kiln 0x850b00e0... BloXroute Max Profit
14317148 5 2994 1775 +1219 coinbase 0xb26f9666... BloXroute Max Profit
14316422 0 2897 1678 +1219 everstake 0x856b0004... Agnostic Gnosis
14311039 1 2916 1697 +1219 kiln 0x8527d16c... Ultra Sound
14310498 5 2993 1775 +1218 everstake 0xb26f9666... Titan Relay
14314200 4 2973 1755 +1218 everstake 0xb26f9666... Titan Relay
14314782 9 3069 1852 +1217 coinbase 0x8527d16c... Ultra Sound
14312517 7 3030 1814 +1216 kiln 0xb26f9666... Ultra Sound
14313954 1 2913 1697 +1216 everstake 0xb26f9666... Titan Relay
14311225 3 2951 1736 +1215 whale_0x93db 0x823e0146... BloXroute Max Profit
14313079 1 2912 1697 +1215 kiln 0xb26f9666... BloXroute Max Profit
14314294 0 2892 1678 +1214 whale_0x8ee5 0xb26f9666... BloXroute Regulated
14310076 5 2988 1775 +1213 solo_stakers 0xb26f9666... Aestus
14310123 1 2909 1697 +1212 kiln 0x85fb0503... Aestus
14311787 0 2889 1678 +1211 everstake 0xb67eaa5e... BloXroute Max Profit
14314681 8 3043 1833 +1210 0xb4ce6162... Ultra Sound
14311214 1 2907 1697 +1210 everstake 0x8527d16c... Ultra Sound
14310744 1 2907 1697 +1210 nethermind_lido 0x856b0004... BloXroute Max Profit
14314567 2 2926 1717 +1209 kiln 0x853b0078... Agnostic Gnosis
14312995 5 2984 1775 +1209 everstake 0xb67eaa5e... BloXroute Max Profit
14311589 5 2984 1775 +1209 coinbase 0xac23f8cc... BloXroute Max Profit
14314867 1 2906 1697 +1209 everstake 0xb26f9666... Titan Relay
14314207 7 3021 1814 +1207 kiln 0x853b0078... BloXroute Max Profit
14313728 2 2924 1717 +1207 everstake 0x8527d16c... Ultra Sound
14312373 0 2885 1678 +1207 everstake 0xb26f9666... Titan Relay
14316532 0 2884 1678 +1206 everstake 0x856b0004... BloXroute Max Profit
14314446 8 3039 1833 +1206 0xb26f9666... Aestus
14314484 5 2980 1775 +1205 everstake 0x8527d16c... Ultra Sound
14312378 0 2882 1678 +1204 kiln 0x853b0078... BloXroute Max Profit
14313672 0 2882 1678 +1204 everstake 0xb26f9666... Titan Relay
14313243 1 2901 1697 +1204 everstake 0xb26f9666... Titan Relay
14314810 12 3114 1910 +1204 coinbase 0x853b0078... BloXroute Max Profit
14315635 0 2881 1678 +1203 everstake 0x8db2a99d... Ultra Sound
14311513 16 3190 1988 +1202 whale_0x8ebd 0xb4ce6162... Ultra Sound
14316831 1 2899 1697 +1202 nethermind_lido 0xa03781b9... Aestus
14310652 5 2976 1775 +1201 whale_0x8ebd 0xb4ce6162... Ultra Sound
Total anomalies: 592

Anomalies by relay

Which relays produce the most propagation anomalies?

Show code
if n_anomalies > 0:
    # Count anomalies by relay
    relay_counts = df_outliers["relay"].value_counts().reset_index()
    relay_counts.columns = ["relay", "anomaly_count"]
    
    # Get total blocks per relay for context
    df_anomaly["relay"] = df_anomaly["winning_relays"].apply(lambda x: x[0] if len(x) > 0 else "Local")
    total_by_relay = df_anomaly.groupby("relay").size().reset_index(name="total_blocks")
    
    relay_counts = relay_counts.merge(total_by_relay, on="relay")
    relay_counts["anomaly_rate"] = relay_counts["anomaly_count"] / relay_counts["total_blocks"] * 100
    relay_counts = relay_counts.sort_values("anomaly_rate", ascending=True)
    
    fig = go.Figure()
    
    fig.add_trace(go.Bar(
        y=relay_counts["relay"],
        x=relay_counts["anomaly_count"],
        orientation="h",
        marker_color="#e74c3c",
        text=relay_counts.apply(lambda r: f"{r['anomaly_count']}/{r['total_blocks']} ({r['anomaly_rate']:.1f}%)", axis=1),
        textposition="outside",
        hovertemplate="<b>%{y}</b><br>Anomalies: %{x}<br>Total blocks: %{customdata[0]:,}<br>Rate: %{customdata[1]:.1f}%<extra></extra>",
        customdata=np.column_stack([relay_counts["total_blocks"], relay_counts["anomaly_rate"]]),
    ))
    
    fig.update_layout(
        margin=dict(l=150, r=80, t=30, b=60),
        xaxis=dict(title="Number of anomalies"),
        yaxis=dict(title=""),
        height=350,
    )
    fig.show(config={"responsive": True})

Anomalies by proposer entity

Which proposer entities produce the most propagation anomalies?

Show code
if n_anomalies > 0:
    # Count anomalies by proposer entity
    proposer_counts = df_outliers["proposer"].value_counts().reset_index()
    proposer_counts.columns = ["proposer", "anomaly_count"]
    
    # Get total blocks per proposer for context
    df_anomaly["proposer"] = df_anomaly["proposer_entity"].fillna("Unknown")
    total_by_proposer = df_anomaly.groupby("proposer").size().reset_index(name="total_blocks")
    
    proposer_counts = proposer_counts.merge(total_by_proposer, on="proposer")
    proposer_counts["anomaly_rate"] = proposer_counts["anomaly_count"] / proposer_counts["total_blocks"] * 100
    
    # Show top 15 by anomaly count
    proposer_counts = proposer_counts.nlargest(15, "anomaly_rate").sort_values("anomaly_rate", ascending=True)
    
    fig = go.Figure()
    
    fig.add_trace(go.Bar(
        y=proposer_counts["proposer"],
        x=proposer_counts["anomaly_count"],
        orientation="h",
        marker_color="#e74c3c",
        text=proposer_counts.apply(lambda r: f"{r['anomaly_count']}/{r['total_blocks']} ({r['anomaly_rate']:.1f}%)", axis=1),
        textposition="outside",
        hovertemplate="<b>%{y}</b><br>Anomalies: %{x}<br>Total blocks: %{customdata[0]:,}<br>Rate: %{customdata[1]:.1f}%<extra></extra>",
        customdata=np.column_stack([proposer_counts["total_blocks"], proposer_counts["anomaly_rate"]]),
    ))
    
    fig.update_layout(
        margin=dict(l=150, r=80, t=30, b=60),
        xaxis=dict(title="Number of anomalies"),
        yaxis=dict(title=""),
        height=450,
    )
    fig.show(config={"responsive": True})

Anomalies by builder

Which builders produce the most propagation anomalies? (Truncated pubkeys shown for MEV blocks)

Show code
if n_anomalies > 0:
    # Count anomalies by builder
    builder_counts = df_outliers["builder"].value_counts().reset_index()
    builder_counts.columns = ["builder", "anomaly_count"]
    
    # Get total blocks per builder for context
    df_anomaly["builder"] = df_anomaly["winning_builder"].apply(
        lambda x: f"{x[:10]}..." if pd.notna(x) and x else "Local"
    )
    total_by_builder = df_anomaly.groupby("builder").size().reset_index(name="total_blocks")
    
    builder_counts = builder_counts.merge(total_by_builder, on="builder")
    builder_counts["anomaly_rate"] = builder_counts["anomaly_count"] / builder_counts["total_blocks"] * 100
    
    # Show top 15 by anomaly count
    builder_counts = builder_counts.nlargest(15, "anomaly_rate").sort_values("anomaly_rate", ascending=True)
    
    fig = go.Figure()
    
    fig.add_trace(go.Bar(
        y=builder_counts["builder"],
        x=builder_counts["anomaly_count"],
        orientation="h",
        marker_color="#e74c3c",
        text=builder_counts.apply(lambda r: f"{r['anomaly_count']}/{r['total_blocks']} ({r['anomaly_rate']:.1f}%)", axis=1),
        textposition="outside",
        hovertemplate="<b>%{y}</b><br>Anomalies: %{x}<br>Total blocks: %{customdata[0]:,}<br>Rate: %{customdata[1]:.1f}%<extra></extra>",
        customdata=np.column_stack([builder_counts["total_blocks"], builder_counts["anomaly_rate"]]),
    ))
    
    fig.update_layout(
        margin=dict(l=150, r=80, t=30, b=60),
        xaxis=dict(title="Number of anomalies"),
        yaxis=dict(title=""),
        height=450,
    )
    fig.show(config={"responsive": True})

Anomalies by blob count

Are anomalies more common at certain blob counts?

Show code
if n_anomalies > 0:
    # Count anomalies by blob count
    blob_anomalies = df_outliers.groupby("blob_count").size().reset_index(name="anomaly_count")
    blob_total = df_anomaly.groupby("blob_count").size().reset_index(name="total_blocks")
    
    blob_stats = blob_total.merge(blob_anomalies, on="blob_count", how="left").fillna(0)
    blob_stats["anomaly_count"] = blob_stats["anomaly_count"].astype(int)
    blob_stats["anomaly_rate"] = blob_stats["anomaly_count"] / blob_stats["total_blocks"] * 100
    
    fig = go.Figure()
    
    fig.add_trace(go.Bar(
        x=blob_stats["blob_count"],
        y=blob_stats["anomaly_count"],
        marker_color="#e74c3c",
        hovertemplate="<b>%{x} blobs</b><br>Anomalies: %{y}<br>Total: %{customdata[0]:,}<br>Rate: %{customdata[1]:.1f}%<extra></extra>",
        customdata=np.column_stack([blob_stats["total_blocks"], blob_stats["anomaly_rate"]]),
    ))
    
    fig.update_layout(
        margin=dict(l=60, r=30, t=30, b=60),
        xaxis=dict(title="Blob count", dtick=1),
        yaxis=dict(title="Number of anomalies"),
        height=350,
    )
    fig.show(config={"responsive": True})