Sun, Apr 5, 2026

Propagation anomalies - 2026-04-05

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-04-05' AND slot_start_date_time < '2026-04-05'::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-04-05' AND slot_start_date_time < '2026-04-05'::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-04-05' AND slot_start_date_time < '2026-04-05'::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-04-05' AND slot_start_date_time < '2026-04-05'::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-04-05' AND slot_start_date_time < '2026-04-05'::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-04-05' AND slot_start_date_time < '2026-04-05'::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-04-05' AND slot_start_date_time < '2026-04-05'::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-04-05' AND slot_start_date_time < '2026-04-05'::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,182
MEV blocks: 6,578 (91.6%)
Local blocks: 604 (8.4%)

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 = 1689.9 + 13.71 × blob_count (R² = 0.006)
Residual σ = 591.7ms
Anomalies (>2σ slow): 479 (6.7%)
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
14046610 0 4298 1690 +2608 rocketpool Local Local
14048370 0 4023 1690 +2333 whale_0xb83e Local Local
14046304 0 3776 1690 +2086 blockdaemon_lido Local Local
14049024 0 3644 1690 +1954 blockdaemon_lido 0x8527d16c... Ultra Sound
14043616 0 3644 1690 +1954 liquid_collective 0x850b00e0... BloXroute Regulated
14044306 5 3707 1758 +1949 whale_0x8ebd 0x8527d16c... Ultra Sound
14047458 6 3712 1772 +1940 whale_0x8ebd 0x856b0004... Aestus
14046208 5 3677 1758 +1919 blockdaemon_lido 0xb4ce6162... Ultra Sound
14045700 0 3563 1690 +1873 blockdaemon_lido 0xb67eaa5e... Titan Relay
14044459 5 3615 1758 +1857 lido 0x88857150... Ultra Sound
14044806 1 3523 1704 +1819 ether.fi 0xb26f9666... Titan Relay
14048352 0 3485 1690 +1795 bitstamp 0xb67eaa5e... BloXroute Regulated
14049756 0 3472 1690 +1782 stader 0x8527d16c... Ultra Sound
14044416 1 3466 1704 +1762 solo_stakers 0x8527d16c... Ultra Sound
14048914 0 3437 1690 +1747 nethermind_lido 0x8db2a99d... Ultra Sound
14046511 1 3446 1704 +1742 coinbase 0x823e0146... Aestus
14046218 1 3446 1704 +1742 coinbase 0xac23f8cc... Aestus
14047456 0 3424 1690 +1734 bitstamp 0x823e0146... BloXroute Max Profit
14047339 5 3491 1758 +1733 nethermind_lido 0x8527d16c... Ultra Sound
14043901 1 3429 1704 +1725 nethermind_lido 0x85fb0503... Aestus
14045904 1 3419 1704 +1715 nethermind_lido 0x88857150... Ultra Sound
14048006 1 3416 1704 +1712 whale_0x8ebd 0x856b0004... Aestus
14043931 1 3402 1704 +1698 nethermind_lido 0x88857150... Ultra Sound
14044542 1 3392 1704 +1688 nethermind_lido 0xac23f8cc... Aestus
14047149 1 3385 1704 +1681 blockdaemon 0x8527d16c... Ultra Sound
14050415 0 3370 1690 +1680 ether.fi 0xb67eaa5e... Titan Relay
14043923 1 3373 1704 +1669 blockdaemon_lido 0xb67eaa5e... Titan Relay
14044510 2 3382 1717 +1665 whale_0xdc8d 0x8db2a99d... Ultra Sound
14049256 5 3414 1758 +1656 ether.fi 0x853b0078... Agnostic Gnosis
14045532 0 3339 1690 +1649 blockdaemon 0x850b00e0... BloXroute Max Profit
14046661 4 3381 1745 +1636 blockdaemon 0x8a850621... Titan Relay
14045288 6 3405 1772 +1633 nethermind_lido 0x853b0078... Agnostic Gnosis
14048405 1 3336 1704 +1632 whale_0xdc8d 0xb26f9666... Titan Relay
14047596 0 3321 1690 +1631 blockdaemon 0xb4ce6162... Ultra Sound
14050144 5 3382 1758 +1624 gateway.fmas_lido 0x9129eeb4... Aestus
14048955 1 3324 1704 +1620 blockdaemon 0xb26f9666... Titan Relay
14046441 1 3323 1704 +1619 blockdaemon_lido 0xb26f9666... Titan Relay
14048057 0 3307 1690 +1617 blockdaemon 0x91b123d8... Ultra Sound
14048332 5 3375 1758 +1617 0x857b0038... Ultra Sound
14043694 1 3318 1704 +1614 blockdaemon 0xb67eaa5e... BloXroute Regulated
14044033 1 3311 1704 +1607 whale_0xc541 0x85fb0503... Ultra Sound
14045411 5 3364 1758 +1606 blockdaemon 0x850b00e0... BloXroute Max Profit
14048771 0 3294 1690 +1604 whale_0xdc8d 0xb26f9666... Titan Relay
14049472 0 3294 1690 +1604 solo_stakers Local Local
14046394 1 3307 1704 +1603 blockdaemon 0x8a850621... Titan Relay
14044362 0 3292 1690 +1602 blockdaemon_lido 0x8527d16c... Ultra Sound
14048171 6 3374 1772 +1602 figment 0x8527d16c... Ultra Sound
14046505 0 3287 1690 +1597 figment 0x8527d16c... Ultra Sound
14048799 6 3369 1772 +1597 blockdaemon_lido 0xb26f9666... Titan Relay
14046211 6 3364 1772 +1592 ether.fi 0x853b0078... Ultra Sound
14047723 0 3280 1690 +1590 blockdaemon_lido 0x8527d16c... Ultra Sound
14050593 1 3293 1704 +1589 stader 0x853b0078... Agnostic Gnosis
14045538 1 3291 1704 +1587 whale_0xdc8d 0x8db2a99d... Ultra Sound
14049432 3 3317 1731 +1586 coinbase 0x8db2a99d... Aestus
14048128 0 3275 1690 +1585 p2porg 0x8527d16c... Ultra Sound
14046778 2 3302 1717 +1585 blockdaemon 0xb67eaa5e... BloXroute Regulated
14049009 1 3287 1704 +1583 blockdaemon 0x853b0078... Ultra Sound
14045014 0 3271 1690 +1581 blockdaemon 0x850b00e0... BloXroute Max Profit
14046693 6 3352 1772 +1580 blockdaemon 0x850b00e0... BloXroute Regulated
14046759 1 3281 1704 +1577 whale_0xdc8d 0x850b00e0... BloXroute Regulated
14046889 6 3348 1772 +1576 whale_0xdc8d 0xb26f9666... Titan Relay
14049337 7 3361 1786 +1575 whale_0x8ebd 0x8db2a99d... Aestus
14048544 0 3258 1690 +1568 p2porg 0xb26f9666... BloXroute Regulated
14047526 1 3270 1704 +1566 whale_0xdc8d 0x8db2a99d... Ultra Sound
14043938 5 3323 1758 +1565 blockdaemon 0xb67eaa5e... BloXroute Max Profit
14047804 1 3268 1704 +1564 whale_0xdc8d 0xb67eaa5e... BloXroute Regulated
14046135 1 3267 1704 +1563 p2porg 0x8527d16c... Ultra Sound
14046327 1 3264 1704 +1560 0x8527d16c... Ultra Sound
14048854 0 3249 1690 +1559 whale_0xdc8d 0x823e0146... Ultra Sound
14046391 6 3331 1772 +1559 blockdaemon_lido 0xb26f9666... Titan Relay
14044428 4 3303 1745 +1558 p2porg 0x850b00e0... Ultra Sound
14046410 1 3261 1704 +1557 whale_0x8ebd 0x8db2a99d... Ultra Sound
14044766 7 3341 1786 +1555 whale_0xdc8d 0xb67eaa5e... BloXroute Regulated
14049397 10 3377 1827 +1550 blockdaemon 0xb67eaa5e... BloXroute Max Profit
14047002 0 3237 1690 +1547 p2porg 0x8527d16c... Ultra Sound
14044146 5 3304 1758 +1546 blockdaemon 0x8a850621... Titan Relay
14044367 4 3290 1745 +1545 blockdaemon 0x8527d16c... Ultra Sound
14049687 5 3301 1758 +1543 0x8527d16c... Ultra Sound
14050345 0 3227 1690 +1537 whale_0xdc8d 0x8527d16c... Ultra Sound
14048049 1 3240 1704 +1536 whale_0xdc8d 0x8527d16c... Ultra Sound
14046558 5 3292 1758 +1534 p2porg 0x8527d16c... Ultra Sound
14050557 2 3250 1717 +1533 blockdaemon_lido 0xb67eaa5e... Titan Relay
14048737 5 3285 1758 +1527 revolut 0xb67eaa5e... BloXroute Regulated
14050622 5 3283 1758 +1525 gateway.fmas_lido 0xb67eaa5e... BloXroute Max Profit
14049878 0 3214 1690 +1524 blockdaemon_lido 0x9129eeb4... Titan Relay
14049317 2 3237 1717 +1520 blockdaemon_lido 0xb26f9666... Titan Relay
14045129 2 3236 1717 +1519 blockdaemon_lido 0x850b00e0... BloXroute Max Profit
14046968 5 3275 1758 +1517 coinbase 0x8db2a99d... Aestus
14045785 6 3280 1772 +1508 blockdaemon 0xb67eaa5e... BloXroute Max Profit
14045298 5 3265 1758 +1507 revolut 0x853b0078... Ultra Sound
14049926 5 3265 1758 +1507 blockdaemon_lido 0x8527d16c... Ultra Sound
14047105 5 3264 1758 +1506 blockdaemon 0xb67eaa5e... Titan Relay
14048409 6 3277 1772 +1505 blockdaemon_lido 0xb26f9666... Titan Relay
14048078 1 3207 1704 +1503 whale_0x8ebd 0x857b0038... Ultra Sound
14047468 1 3202 1704 +1498 gateway.fmas_lido 0x91b123d8... Flashbots
14050168 9 3311 1813 +1498 gateway.fmas_lido 0x855b00e6... BloXroute Max Profit
14049235 0 3177 1690 +1487 whale_0x8ebd 0x8527d16c... Ultra Sound
14047534 7 3271 1786 +1485 whale_0xdc8d 0xb26f9666... Titan Relay
14046627 12 3336 1854 +1482 p2porg 0x850b00e0... BloXroute Regulated
14047643 0 3170 1690 +1480 coinbase 0xac23f8cc... Aestus
14045709 2 3191 1717 +1474 coinbase 0xb26f9666... Titan Relay
14048741 7 3254 1786 +1468 whale_0x8ebd 0x856b0004... Aestus
14046700 3 3196 1731 +1465 gateway.fmas_lido 0xac23f8cc... Flashbots
14043704 0 3154 1690 +1464 gateway.fmas_lido 0x85fb0503... BloXroute Max Profit
14046509 0 3154 1690 +1464 gateway.fmas_lido 0x88857150... Ultra Sound
14045742 8 3263 1800 +1463 whale_0x8ebd 0x8527d16c... Ultra Sound
14048700 9 3276 1813 +1463 figment 0x823e0146... Ultra Sound
14049123 2 3180 1717 +1463 whale_0x8ebd 0x82c466b9... Ultra Sound
14049465 5 3221 1758 +1463 blockdaemon 0x8527d16c... Ultra Sound
14044545 5 3221 1758 +1463 whale_0x8ebd 0xac23f8cc... Ultra Sound
14047228 1 3163 1704 +1459 whale_0x8ebd 0xac23f8cc... Aestus
14046772 12 3312 1854 +1458 whale_0x8ebd 0x8527d16c... Ultra Sound
14049446 0 3147 1690 +1457 p2porg 0x850b00e0... BloXroute Regulated
14043706 0 3146 1690 +1456 gateway.fmas_lido 0x85fb0503... BloXroute Max Profit
14046684 1 3153 1704 +1449 coinbase 0xac23f8cc... Aestus
14050361 6 3220 1772 +1448 coinbase 0x8db2a99d... BloXroute Max Profit
14046903 6 3218 1772 +1446 p2porg 0x823e0146... BloXroute Max Profit
14048708 5 3201 1758 +1443 blockdaemon_lido 0x850b00e0... BloXroute Max Profit
14046147 1 3146 1704 +1442 gateway.fmas_lido 0x823e0146... Flashbots
14050227 1 3144 1704 +1440 revolut 0x850b00e0... BloXroute Regulated
14046973 1 3142 1704 +1438 whale_0x8ebd 0x8a850621... Titan Relay
14045695 6 3209 1772 +1437 coinbase 0x8db2a99d... Ultra Sound
14047651 3 3165 1731 +1434 figment 0xb26f9666... Titan Relay
14046009 3 3164 1731 +1433 kiln 0xb26f9666... Aestus
14050033 1 3136 1704 +1432 gateway.fmas_lido 0x8527d16c... Ultra Sound
14044156 0 3121 1690 +1431 gateway.fmas_lido 0x85fb0503... Agnostic Gnosis
14048907 2 3147 1717 +1430 gateway.fmas_lido 0xb26f9666... Titan Relay
14046412 8 3228 1800 +1428 p2porg 0x850b00e0... BloXroute Regulated
14048753 5 3183 1758 +1425 whale_0x8ebd 0xb67eaa5e... BloXroute Max Profit
14045595 11 3265 1841 +1424 blockdaemon_lido 0xb26f9666... Titan Relay
14046166 0 3113 1690 +1423 kiln 0xb67eaa5e... BloXroute Max Profit
14047648 11 3263 1841 +1422 coinbase 0xb67eaa5e... BloXroute Max Profit
14047486 1 3125 1704 +1421 whale_0x8ebd 0x8527d16c... Ultra Sound
14044814 0 3110 1690 +1420 gateway.fmas_lido 0x851b00b1... BloXroute Max Profit
14043735 5 3177 1758 +1419 gateway.fmas_lido 0x85fb0503... Aestus
14050577 17 3340 1923 +1417 blockdaemon_lido 0xb67eaa5e... BloXroute Regulated
14045888 0 3106 1690 +1416 whale_0x8ebd 0x8527d16c... Ultra Sound
14048429 0 3106 1690 +1416 gateway.fmas_lido 0x8527d16c... Ultra Sound
14047656 6 3187 1772 +1415 0x850b00e0... Ultra Sound
14047964 6 3185 1772 +1413 whale_0x8ebd 0xb5a65d00... Ultra Sound
14045359 5 3170 1758 +1412 whale_0x8ebd 0xb67eaa5e... BloXroute Regulated
14048034 1 3115 1704 +1411 gateway.fmas_lido 0x855b00e6... BloXroute Max Profit
14050661 0 3099 1690 +1409 0x99dbe3e8... Agnostic Gnosis
14044565 2 3123 1717 +1406 kiln 0xb7c5e609... BloXroute Max Profit
14045454 1 3106 1704 +1402 coinbase 0x8db2a99d... Ultra Sound
14046549 2 3119 1717 +1402 whale_0x8ebd 0xb67eaa5e... BloXroute Regulated
14050657 5 3160 1758 +1402 0xb67eaa5e... BloXroute Max Profit
14045556 5 3159 1758 +1401 p2porg 0x850b00e0... Flashbots
14049300 0 3090 1690 +1400 gateway.fmas_lido 0x8527d16c... Ultra Sound
14047561 3 3131 1731 +1400 coinbase 0xb67eaa5e... BloXroute Max Profit
14048216 6 3172 1772 +1400 whale_0x8ebd 0x8527d16c... Ultra Sound
14046348 1 3102 1704 +1398 whale_0x8ebd 0x8527d16c... Ultra Sound
14049326 1 3100 1704 +1396 whale_0x8ebd 0xb26f9666... Titan Relay
14047755 9 3208 1813 +1395 kiln 0x853b0078... Aestus
14045136 5 3153 1758 +1395 whale_0x8ebd 0x856b0004... Aestus
14047259 1 3098 1704 +1394 p2porg 0x850b00e0... BloXroute Regulated
14049050 3 3125 1731 +1394 whale_0x8ebd 0x853b0078... Agnostic Gnosis
14044917 6 3166 1772 +1394 whale_0x8ebd 0x823e0146... Ultra Sound
14050380 0 3083 1690 +1393 whale_0x8ebd 0xb26f9666... Titan Relay
14046728 1 3095 1704 +1391 0x856b0004... Ultra Sound
14049665 0 3081 1690 +1391 coinbase 0xb26f9666... Titan Relay
14048103 1 3094 1704 +1390 p2porg 0x8db2a99d... Ultra Sound
14046353 3 3121 1731 +1390 figment 0x850b00e0... BloXroute Max Profit
14044450 5 3146 1758 +1388 bitstamp 0x8527d16c... Ultra Sound
14043937 0 3077 1690 +1387 p2porg 0x850b00e0... BloXroute Regulated
14048950 10 3213 1827 +1386 p2porg 0xb67eaa5e... BloXroute Max Profit
14045381 1 3089 1704 +1385 gateway.fmas_lido 0x8527d16c... Ultra Sound
14046379 1 3089 1704 +1385 p2porg 0x853b0078... Aestus
14046669 1 3088 1704 +1384 p2porg 0x850b00e0... BloXroute Max Profit
14050135 5 3142 1758 +1384 kiln 0xb67eaa5e... BloXroute Regulated
14050212 6 3154 1772 +1382 gateway.fmas_lido 0xb67eaa5e... BloXroute Max Profit
14045089 1 3085 1704 +1381 gateway.fmas_lido 0xb67eaa5e... BloXroute Regulated
14046767 1 3084 1704 +1380 whale_0x8ebd 0x8527d16c... Ultra Sound
14046766 1 3082 1704 +1378 figment 0xb26f9666... Titan Relay
14044204 1 3081 1704 +1377 p2porg 0xb26f9666... Titan Relay
14046456 6 3149 1772 +1377 whale_0x8ebd 0x8527d16c... Ultra Sound
14044126 0 3066 1690 +1376 whale_0x8ebd 0xb26f9666... Titan Relay
14045497 0 3065 1690 +1375 0x856b0004... Aestus
14050592 3 3104 1731 +1373 nethermind_lido 0x850b00e0... BloXroute Max Profit
14046710 6 3145 1772 +1373 p2porg 0x856b0004... Ultra Sound
14045938 1 3076 1704 +1372 blockdaemon_lido 0x8527d16c... Ultra Sound
14049993 2 3089 1717 +1372 whale_0x8ebd 0x8527d16c... Ultra Sound
14050112 1 3074 1704 +1370 coinbase 0xb26f9666... Titan Relay
14046409 1 3073 1704 +1369 0x856b0004... Ultra Sound
14049843 6 3140 1772 +1368 whale_0x8ebd 0xb7c5c39a... BloXroute Max Profit
14049340 4 3112 1745 +1367 coinbase 0x8db2a99d... Ultra Sound
14049064 0 3057 1690 +1367 p2porg 0xb26f9666... Titan Relay
14046080 1 3070 1704 +1366 whale_0x8ebd 0xb26f9666... Titan Relay
14048818 14 3247 1882 +1365 coinbase 0x853b0078... Aestus
14045982 10 3191 1827 +1364 whale_0x8ebd 0x8a850621... BloXroute Regulated
14050392 2 3081 1717 +1364 whale_0x8ebd 0x856b0004... Aestus
14045147 1 3067 1704 +1363 p2porg 0x853b0078... Aestus
14043890 1 3066 1704 +1362 figment 0xb67eaa5e... BloXroute Regulated
14043672 0 3051 1690 +1361 whale_0x8ebd 0x8527d16c... Ultra Sound
14046206 0 3050 1690 +1360 solo_stakers 0xb26f9666... BloXroute Max Profit
14049538 0 3050 1690 +1360 whale_0x8ebd 0xb26f9666... Titan Relay
14047266 0 3049 1690 +1359 0xb26f9666... BloXroute Max Profit
14050350 0 3049 1690 +1359 p2porg 0x856b0004... Ultra Sound
14049025 0 3048 1690 +1358 p2porg 0x856b0004... Aestus
14050579 20 3322 1964 +1358 blockdaemon_lido 0x853b0078... Ultra Sound
14050052 0 3047 1690 +1357 whale_0x8ebd 0x855b00e6... BloXroute Max Profit
14049053 0 3045 1690 +1355 coinbase 0xb4ce6162... Ultra Sound
14048122 2 3072 1717 +1355 whale_0x8ebd 0xb67eaa5e... BloXroute Regulated
14049425 0 3043 1690 +1353 0x9129eeb4... Agnostic Gnosis
14050729 1 3056 1704 +1352 kiln 0x856b0004... Agnostic Gnosis
14049608 0 3038 1690 +1348 coinbase 0x850b00e0... Flashbots
14050528 1 3050 1704 +1346 coinbase 0xb67eaa5e... BloXroute Max Profit
14048817 0 3036 1690 +1346 stakefish_lido 0xba003e46... BloXroute Regulated
14047927 3 3077 1731 +1346 p2porg 0xb26f9666... Titan Relay
14045361 4 3090 1745 +1345 kiln 0xb67eaa5e... BloXroute Regulated
14044230 5 3103 1758 +1345 0x8527d16c... Ultra Sound
14045274 8 3144 1800 +1344 kiln 0x8527d16c... Ultra Sound
14046853 0 3034 1690 +1344 whale_0x8ebd 0x8527d16c... Ultra Sound
14045819 0 3034 1690 +1344 p2porg 0x8527d16c... Ultra Sound
14044434 5 3102 1758 +1344 coinbase 0x8527d16c... Ultra Sound
14048978 1 3047 1704 +1343 whale_0x8ebd 0x853b0078... Aestus
14045920 0 3032 1690 +1342 coinbase 0xb67eaa5e... BloXroute Max Profit
14049479 5 3100 1758 +1342 p2porg 0x823e0146... Ultra Sound
14047097 1 3044 1704 +1340 whale_0x8ebd 0x8527d16c... Ultra Sound
14047489 1 3042 1704 +1338 coinbase 0xb26f9666... Titan Relay
14048981 1 3041 1704 +1337 stader 0x8db2a99d... Ultra Sound
14049507 0 3027 1690 +1337 0x8db2a99d... Ultra Sound
14044343 1 3039 1704 +1335 whale_0x23be 0x8527d16c... Ultra Sound
14043810 1 3039 1704 +1335 p2porg 0x85fb0503... Agnostic Gnosis
14046142 5 3093 1758 +1335 p2porg 0x823e0146... Flashbots
14044259 0 3024 1690 +1334 whale_0x8ebd 0x8527d16c... Ultra Sound
14045159 9 3147 1813 +1334 gateway.fmas_lido 0xb67eaa5e... BloXroute Regulated
14044228 0 3023 1690 +1333 coinbase 0xac23f8cc... Aestus
14045141 0 3023 1690 +1333 p2porg 0xa10f2964... Flashbots
14047031 1 3036 1704 +1332 kiln 0xb26f9666... Aestus
14046754 0 3021 1690 +1331 kiln 0x8db2a99d... Flashbots
14047581 2 3048 1717 +1331 coinbase 0x8527d16c... Ultra Sound
14049328 0 3020 1690 +1330 p2porg 0xb26f9666... Titan Relay
14049952 1 3033 1704 +1329 coinbase 0xac23f8cc... Ultra Sound
14047121 0 3018 1690 +1328 kiln 0x823e0146... Flashbots
14044149 6 3100 1772 +1328 whale_0x8ebd 0xac23f8cc... Ultra Sound
14047357 1 3031 1704 +1327 kiln 0xb67eaa5e... BloXroute Regulated
14046454 4 3070 1745 +1325 0x856b0004... Aestus
14046201 3 3055 1731 +1324 whale_0x8ebd 0xb26f9666... Titan Relay
14049438 5 3082 1758 +1324 whale_0x8ebd 0x88857150... Ultra Sound
14043729 1 3027 1704 +1323 p2porg 0x85fb0503... Aestus
14044294 5 3081 1758 +1323 kiln 0xb67eaa5e... BloXroute Regulated
14049059 5 3080 1758 +1322 p2porg 0x856b0004... Aestus
14049395 0 3011 1690 +1321 whale_0x8ebd 0xb67eaa5e... BloXroute Regulated
14045324 2 3038 1717 +1321 whale_0x8ebd 0x8527d16c... Ultra Sound
14049261 1 3024 1704 +1320 gateway.fmas_lido 0x856b0004... Aestus
14047665 1 3024 1704 +1320 whale_0x8ebd 0xb26f9666... Titan Relay
14047884 10 3147 1827 +1320 whale_0x8ebd 0x88510a78... Flashbots
14050277 5 3078 1758 +1320 abyss_finance 0x853b0078... Agnostic Gnosis
14044143 7 3105 1786 +1319 p2porg 0x8527d16c... Ultra Sound
14050349 0 3009 1690 +1319 kiln 0xb67eaa5e... BloXroute Max Profit
14047423 0 3006 1690 +1316 coinbase 0xb26f9666... Titan Relay
14043965 2 3033 1717 +1316 whale_0x8ebd 0x823e0146... Flashbots
14050082 0 3005 1690 +1315 coinbase 0xb26f9666... Titan Relay
14049864 3 3045 1731 +1314 coinbase 0x8db2a99d... Ultra Sound
14045515 9 3127 1813 +1314 whale_0x8ebd 0x856b0004... Agnostic Gnosis
14048135 2 3031 1717 +1314 coinbase 0x853b0078... Agnostic Gnosis
14048020 8 3112 1800 +1312 0x856b0004... Agnostic Gnosis
14048518 0 3001 1690 +1311 coinbase 0xb26f9666... BloXroute Regulated
14049774 5 3069 1758 +1311 coinbase 0x8527d16c... Ultra Sound
14045343 1 3014 1704 +1310 coinbase 0xb67eaa5e... BloXroute Regulated
14044377 3 3041 1731 +1310 coinbase 0x856b0004... Agnostic Gnosis
14050489 9 3123 1813 +1310 whale_0x8ebd 0x853b0078... Aestus
14045113 0 2998 1690 +1308 p2porg 0x8527d16c... Ultra Sound
14049291 1 3011 1704 +1307 kiln 0x8db2a99d... Aestus
14046266 1 3011 1704 +1307 coinbase 0x856b0004... Aestus
14049629 1 3011 1704 +1307 whale_0x8ebd 0x856b0004... Agnostic Gnosis
14045238 0 2997 1690 +1307 coinbase 0x851b00b1... BloXroute Max Profit
14044925 0 2996 1690 +1306 coinbase 0x8527d16c... Ultra Sound
14049941 0 2994 1690 +1304 p2porg 0x8527d16c... Ultra Sound
14046236 5 3062 1758 +1304 p2porg 0x856b0004... Agnostic Gnosis
14044402 8 3103 1800 +1303 kiln 0x855b00e6... BloXroute Max Profit
14046264 1 3007 1704 +1303 kiln 0x8db2a99d... Ultra Sound
14049101 0 2993 1690 +1303 whale_0x8ebd 0xb26f9666... BloXroute Regulated
14048957 0 2993 1690 +1303 p2porg 0xb26f9666... BloXroute Max Profit
14048885 8 3102 1800 +1302 everstake 0xb67eaa5e... BloXroute Regulated
14049862 6 3074 1772 +1302 whale_0x8ebd 0xb4ce6162... Ultra Sound
14050446 0 2991 1690 +1301 kiln 0xb67eaa5e... BloXroute Max Profit
14050775 1 3004 1704 +1300 coinbase 0x856b0004... Agnostic Gnosis
14044620 11 3141 1841 +1300 coinbase 0xb26f9666... Titan Relay
14044223 0 2990 1690 +1300 whale_0x8ebd 0xb67eaa5e... BloXroute Regulated
14049802 0 2988 1690 +1298 whale_0x8ebd 0x850b00e0... BloXroute Max Profit
14043657 1 3000 1704 +1296 kiln 0xb26f9666... Aestus
14048366 0 2986 1690 +1296 whale_0xedc6 0xb26f9666... BloXroute Max Profit
14049997 5 3054 1758 +1296 whale_0x8ebd 0xb26f9666... BloXroute Regulated
14049923 1 2999 1704 +1295 whale_0xedc6 0xb26f9666... BloXroute Max Profit
14044409 1 2999 1704 +1295 kiln 0x8db2a99d... Aestus
14049284 5 3053 1758 +1295 coinbase 0xb26f9666... Titan Relay
14045188 1 2997 1704 +1293 kiln 0x8527d16c... Ultra Sound
14047811 5 3050 1758 +1292 coinbase 0xb26f9666... Titan Relay
14049431 0 2981 1690 +1291 coinbase 0x851b00b1... BloXroute Max Profit
14046076 0 2981 1690 +1291 coinbase 0x853b0078... Aestus
14048139 6 3063 1772 +1291 kraken 0xb4ce6162... Ultra Sound
14044413 6 3062 1772 +1290 kiln 0x856b0004... Aestus
14046565 0 2979 1690 +1289 coinbase 0xb67eaa5e... BloXroute Regulated
14049063 6 3060 1772 +1288 p2porg 0xb26f9666... Aestus
14048997 2 3005 1717 +1288 kiln 0xb26f9666... Titan Relay
14048831 8 3087 1800 +1287 0xb26f9666... Aestus
14045675 1 2991 1704 +1287 kiln 0xb26f9666... Aestus
14044576 1 2991 1704 +1287 blockdaemon 0xb67eaa5e... BloXroute Regulated
14048559 0 2976 1690 +1286 whale_0x8ebd 0xb26f9666... BloXroute Regulated
14044949 1 2989 1704 +1285 kiln 0x8527d16c... Ultra Sound
14049106 1 2987 1704 +1283 kiln 0xb26f9666... BloXroute Max Profit
14045418 0 2973 1690 +1283 whale_0x8ebd 0x856b0004... Agnostic Gnosis
14044317 1 2984 1704 +1280 kiln 0x8db2a99d... Ultra Sound
14046523 11 3121 1841 +1280 p2porg 0xb26f9666... BloXroute Max Profit
14044357 0 2970 1690 +1280 coinbase 0x8db2a99d... Flashbots
14048361 3 3011 1731 +1280 everstake 0x850b00e0... BloXroute Max Profit
14050214 3 3011 1731 +1280 stakingfacilities_lido 0x853b0078... BloXroute Max Profit
14047107 6 3052 1772 +1280 0x88857150... Ultra Sound
14050174 1 2983 1704 +1279 whale_0x8ebd 0x856b0004... Agnostic Gnosis
14049958 0 2968 1690 +1278 kiln 0x8db2a99d... Flashbots
14048695 0 2968 1690 +1278 kiln 0x856b0004... Aestus
14048768 6 3050 1772 +1278 coinbase 0xb26f9666... Titan Relay
14044671 2 2995 1717 +1278 everstake 0x853b0078... Flashbots
14046586 6 3049 1772 +1277 coinbase 0x856b0004... Aestus
14049245 6 3049 1772 +1277 whale_0x8ebd 0x856b0004... Aestus
14048660 3 3006 1731 +1275 everstake 0x853b0078... BloXroute Max Profit
14049223 13 3143 1868 +1275 kiln 0x823e0146... Ultra Sound
14044760 1 2978 1704 +1274 coinbase 0xb26f9666... BloXroute Regulated
14049883 0 2962 1690 +1272 coinbase 0xb26f9666... Titan Relay
14048760 5 3030 1758 +1272 kiln 0x8527d16c... Ultra Sound
14050746 0 2961 1690 +1271 solo_stakers 0x853b0078... Agnostic Gnosis
14044514 2 2988 1717 +1271 everstake 0xa965c911... Ultra Sound
14046043 7 3055 1786 +1269 p2porg 0xb26f9666... BloXroute Max Profit
14050322 0 2957 1690 +1267 coinbase 0xb67eaa5e... BloXroute Max Profit
14049718 0 2954 1690 +1264 kiln 0xb26f9666... BloXroute Regulated
14050133 5 3022 1758 +1264 whale_0x8ebd 0xb26f9666... Titan Relay
14047799 8 3063 1800 +1263 everstake 0x8527d16c... Ultra Sound
14050074 5 3021 1758 +1263 kiln 0x853b0078... Aestus
14045594 1 2965 1704 +1261 coinbase 0x856b0004... Agnostic Gnosis
14049219 6 3033 1772 +1261 whale_0x8ebd 0x8527d16c... Ultra Sound
14050606 5 3019 1758 +1261 coinbase 0x8527d16c... Ultra Sound
14046852 4 3005 1745 +1260 kiln 0x8527d16c... Ultra Sound
14048828 3 2991 1731 +1260 coinbase 0x856b0004... Aestus
14050122 5 3018 1758 +1260 kiln 0xb67eaa5e... BloXroute Max Profit
14046406 8 3059 1800 +1259 kiln 0x8527d16c... Ultra Sound
14043843 1 2961 1704 +1257 everstake 0xb67eaa5e... BloXroute Max Profit
14049884 1 2960 1704 +1256 kiln 0x856b0004... Agnostic Gnosis
14046913 6 3028 1772 +1256 stader 0x823e0146... Aestus
14048212 0 2945 1690 +1255 kiln 0x8527d16c... Ultra Sound
14044765 0 2944 1690 +1254 coinbase 0x88857150... Ultra Sound
14049324 0 2943 1690 +1253 whale_0x8ebd 0xb26f9666... BloXroute Regulated
14043773 0 2943 1690 +1253 kiln 0x85fb0503... BloXroute Max Profit
14050777 6 3025 1772 +1253 kiln 0xb26f9666... Aestus
14047851 4 2997 1745 +1252 0x856b0004... Aestus
14048404 5 3010 1758 +1252 everstake 0xb67eaa5e... BloXroute Max Profit
14046654 0 2940 1690 +1250 kiln 0x8527d16c... Ultra Sound
14046401 0 2940 1690 +1250 solo_stakers 0xb26f9666... BloXroute Max Profit
14050521 13 3118 1868 +1250 whale_0x8ebd 0x856b0004... Ultra Sound
14048499 2 2966 1717 +1249 everstake 0xb67eaa5e... Ultra Sound
14049068 5 3007 1758 +1249 kiln 0xb67eaa5e... BloXroute Regulated
14050088 1 2952 1704 +1248 whale_0x8ebd 0x856b0004... Agnostic Gnosis
14045167 5 3005 1758 +1247 whale_0x8ebd 0x853b0078... Aestus
14046681 10 3073 1827 +1246 everstake 0x855b00e6... BloXroute Max Profit
14046543 6 3018 1772 +1246 0x855b00e6... Ultra Sound
14045760 5 3004 1758 +1246 stakingfacilities_lido 0x88857150... Ultra Sound
14045959 0 2935 1690 +1245 kiln 0xb26f9666... BloXroute Regulated
14048343 1 2948 1704 +1244 everstake 0xb26f9666... Titan Relay
14050030 3 2974 1731 +1243 everstake 0x8527d16c... Ultra Sound
14045168 1 2946 1704 +1242 kiln 0x853b0078... Agnostic Gnosis
14046482 0 2932 1690 +1242 everstake 0x8db2a99d... Aestus
14049208 1 2944 1704 +1240 kiln 0x8527d16c... Ultra Sound
14049126 1 2944 1704 +1240 everstake 0xb67eaa5e... BloXroute Max Profit
14049919 2 2957 1717 +1240 gateway.fmas_lido 0x88510a78... Ultra Sound
14043761 0 2928 1690 +1238 whale_0x8ebd 0x8527d16c... Ultra Sound
14044003 3 2967 1731 +1236 kiln 0x85fb0503... Aestus
14050329 2 2953 1717 +1236 solo_stakers 0x8527d16c... Ultra Sound
14048226 0 2924 1690 +1234 everstake 0xb67eaa5e... BloXroute Regulated
14049905 5 2992 1758 +1234 coinbase 0x88857150... Ultra Sound
14044330 0 2923 1690 +1233 everstake 0xb26f9666... Titan Relay
14045460 5 2991 1758 +1233 kiln 0x853b0078... Agnostic Gnosis
14049436 1 2936 1704 +1232 coinbase 0x853b0078... Agnostic Gnosis
14046756 0 2922 1690 +1232 kiln 0x8527d16c... Ultra Sound
14046478 5 2990 1758 +1232 kiln 0x853b0078... Agnostic Gnosis
14047683 2 2948 1717 +1231 kiln 0x9129eeb4... Agnostic Gnosis
14044867 4 2975 1745 +1230 whale_0x8ebd 0xb26f9666... BloXroute Regulated
14044364 0 2920 1690 +1230 kiln 0x8527d16c... Ultra Sound
14046167 3 2961 1731 +1230 everstake 0x88857150... Ultra Sound
14045593 0 2918 1690 +1228 kiln 0x856b0004... Agnostic Gnosis
14044675 0 2918 1690 +1228 coinbase 0xb26f9666... BloXroute Max Profit
14046864 5 2986 1758 +1228 kiln 0x8db2a99d... Ultra Sound
14048826 5 2986 1758 +1228 whale_0x8ebd 0xb26f9666... BloXroute Regulated
14048319 14 3108 1882 +1226 p2porg 0xb26f9666... Aestus
14050193 1 2929 1704 +1225 kiln Local Local
14045260 0 2915 1690 +1225 whale_0x8ebd 0xb26f9666... BloXroute Regulated
14050578 1 2928 1704 +1224 coinbase Local Local
14050437 0 2914 1690 +1224 0x8527d16c... Ultra Sound
14043762 5 2982 1758 +1224 whale_0x8ebd 0x85fb0503... BloXroute Max Profit
14045571 2 2939 1717 +1222 everstake 0xb26f9666... Aestus
14044815 2 2939 1717 +1222 kiln 0x856b0004... Agnostic Gnosis
14046092 5 2980 1758 +1222 kiln 0x853b0078... Aestus
14047001 1 2925 1704 +1221 0x8527d16c... Ultra Sound
14048853 1 2925 1704 +1221 everstake 0x853b0078... Aestus
14046066 0 2911 1690 +1221 everstake 0xac23f8cc... BloXroute Max Profit
14045884 0 2911 1690 +1221 everstake 0xb67eaa5e... BloXroute Regulated
14048189 0 2910 1690 +1220 whale_0x8ebd 0xb26f9666... BloXroute Max Profit
14046464 2 2936 1717 +1219 everstake 0x8db2a99d... Flashbots
14049938 0 2908 1690 +1218 kiln 0x853b0078... Aestus
14048210 0 2908 1690 +1218 stader 0x850b00e0... BloXroute Max Profit
14050146 1 2921 1704 +1217 everstake 0xb26f9666... Titan Relay
14050591 1 2920 1704 +1216 kiln 0xb26f9666... BloXroute Max Profit
14048294 0 2906 1690 +1216 coinbase 0xac23f8cc... Aestus
14047055 0 2906 1690 +1216 everstake 0x88857150... Ultra Sound
14043926 0 2906 1690 +1216 everstake 0x851b00b1... Flashbots
14047354 8 3015 1800 +1215 whale_0x8ebd 0x853b0078... Aestus
14048225 8 3015 1800 +1215 coinbase 0x856b0004... Aestus
14047654 1 2919 1704 +1215 everstake 0xb26f9666... Aestus
14047577 3 2946 1731 +1215 everstake 0xb5a65d00... Ultra Sound
14050066 0 2904 1690 +1214 kiln 0x851b00b1... BloXroute Max Profit
14047337 0 2904 1690 +1214 everstake 0x8527d16c... Ultra Sound
14045910 5 2972 1758 +1214 everstake 0xb26f9666... Titan Relay
14044950 1 2917 1704 +1213 solo_stakers 0xb26f9666... BloXroute Max Profit
14044311 1 2917 1704 +1213 everstake 0x856b0004... BloXroute Max Profit
14047519 0 2903 1690 +1213 everstake 0xb26f9666... Titan Relay
14048888 1 2915 1704 +1211 0x855b00e6... BloXroute Max Profit
14049371 0 2901 1690 +1211 whale_0x8ebd 0xb26f9666... BloXroute Max Profit
14046829 0 2901 1690 +1211 coinbase 0xb26f9666... BloXroute Regulated
14046180 0 2901 1690 +1211 everstake 0x823e0146... Aestus
14047942 6 2983 1772 +1211 coinbase 0x853b0078... Aestus
14045107 5 2969 1758 +1211 kiln 0xb26f9666... BloXroute Max Profit
14043984 1 2914 1704 +1210 stader 0x85fb0503... Aestus
14047773 2 2927 1717 +1210 whale_0x8ebd 0xb67eaa5e... BloXroute Regulated
14045319 6 2981 1772 +1209 coinbase 0x856b0004... Agnostic Gnosis
14043619 4 2953 1745 +1208 kiln 0x823e0146... BloXroute Max Profit
14049492 6 2980 1772 +1208 coinbase 0xb26f9666... Aestus
14046597 0 2896 1690 +1206 everstake 0xb26f9666... Titan Relay
14044898 0 2896 1690 +1206 0xba003e46... Flashbots
14047795 5 2964 1758 +1206 kiln 0xb5a65d00... Aestus
14046822 5 2964 1758 +1206 everstake 0x9129eeb4... Agnostic Gnosis
14045735 0 2895 1690 +1205 kiln 0x850b00e0... Agnostic Gnosis
14043916 5 2963 1758 +1205 kiln 0x8527d16c... Ultra Sound
14047634 2 2921 1717 +1204 everstake 0xac23f8cc... Aestus
14045563 0 2893 1690 +1203 whale_0x8ebd 0x8db2a99d... Flashbots
14049115 12 3057 1854 +1203 whale_0x8ebd 0xb26f9666... Titan Relay
14049772 0 2892 1690 +1202 kiln 0xb26f9666... BloXroute Max Profit
14050318 5 2960 1758 +1202 kiln 0xb26f9666... Aestus
14046895 2 2917 1717 +1200 0xb5a65d00... Ultra Sound
14046281 5 2958 1758 +1200 everstake 0x8527d16c... Ultra Sound
14045480 2 2916 1717 +1199 everstake 0xb67eaa5e... BloXroute Max Profit
14048502 0 2888 1690 +1198 everstake 0x8527d16c... Ultra Sound
14050646 5 2956 1758 +1198 coinbase 0xb26f9666... BloXroute Regulated
14046312 0 2887 1690 +1197 coinbase 0xb67eaa5e... Aestus
14045573 0 2887 1690 +1197 everstake 0x8527d16c... Ultra Sound
14050293 0 2887 1690 +1197 coinbase 0xb26f9666... BloXroute Regulated
14046789 2 2914 1717 +1197 everstake 0xb67eaa5e... BloXroute Regulated
14048433 12 3051 1854 +1197 kiln 0xb26f9666... BloXroute Max Profit
14045862 8 2996 1800 +1196 coinbase 0x853b0078... Agnostic Gnosis
14050624 0 2886 1690 +1196 everstake 0xb67eaa5e... BloXroute Regulated
14047571 2 2913 1717 +1196 coinbase 0xb26f9666... BloXroute Regulated
14050167 1 2899 1704 +1195 everstake 0x8527d16c... Ultra Sound
14045057 1 2899 1704 +1195 everstake 0x853b0078... Agnostic Gnosis
14047057 7 2981 1786 +1195 coinbase 0xb26f9666... BloXroute Regulated
14044017 9 3008 1813 +1195 kiln 0x823e0146... Agnostic Gnosis
14050744 5 2953 1758 +1195 everstake 0x8527d16c... Ultra Sound
14050497 1 2898 1704 +1194 everstake 0xb26f9666... Titan Relay
14046965 3 2925 1731 +1194 everstake 0xb26f9666... Titan Relay
14046328 2 2911 1717 +1194 everstake 0xb26f9666... Titan Relay
14049370 5 2952 1758 +1194 kiln 0x856b0004... Aestus
14047053 5 2952 1758 +1194 everstake 0x856b0004... Aestus
14044550 5 2952 1758 +1194 kiln 0x850b00e0... Flashbots
14044155 1 2897 1704 +1193 everstake 0x85fb0503... BloXroute Max Profit
14049793 0 2883 1690 +1193 everstake 0x82c466b9... Flashbots
14050760 5 2951 1758 +1193 kiln 0x853b0078... Aestus
14045557 1 2896 1704 +1192 kiln 0x856b0004... Agnostic Gnosis
14044905 7 2978 1786 +1192 everstake 0x850b00e0... BloXroute Max Profit
14049163 2 2909 1717 +1192 coinbase Local Local
14045265 1 2895 1704 +1191 everstake 0xb67eaa5e... BloXroute Max Profit
14050566 0 2881 1690 +1191 everstake 0x8527d16c... Ultra Sound
14047250 0 2881 1690 +1191 kiln 0x8527d16c... Ultra Sound
14044087 0 2880 1690 +1190 everstake 0x8db2a99d... Aestus
14043927 2 2907 1717 +1190 solo_stakers 0x85fb0503... BloXroute Max Profit
14047003 5 2948 1758 +1190 whale_0x2e07 0x88857150... Ultra Sound
14046517 5 2948 1758 +1190 kiln 0x8527d16c... Ultra Sound
14047620 0 2878 1690 +1188 kiln 0xb26f9666... BloXroute Regulated
14045160 0 2877 1690 +1187 everstake 0x855b00e6... Flashbots
14044275 6 2958 1772 +1186 everstake 0xb26f9666... Titan Relay
14047896 7 2971 1786 +1185 kiln 0x856b0004... Agnostic Gnosis
14050290 3 2916 1731 +1185 everstake 0x8db2a99d... Ultra Sound
Total anomalies: 479

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})