Thu, Apr 16, 2026

Propagation anomalies - 2026-04-16

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-16' AND slot_start_date_time < '2026-04-16'::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-16' AND slot_start_date_time < '2026-04-16'::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-16' AND slot_start_date_time < '2026-04-16'::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-16' AND slot_start_date_time < '2026-04-16'::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-16' AND slot_start_date_time < '2026-04-16'::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-16' AND slot_start_date_time < '2026-04-16'::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-16' AND slot_start_date_time < '2026-04-16'::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-16' AND slot_start_date_time < '2026-04-16'::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,186
MEV blocks: 6,700 (93.2%)
Local blocks: 486 (6.8%)

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 = 1685.5 + 18.09 × blob_count (R² = 0.012)
Residual σ = 605.1ms
Anomalies (>2σ slow): 511 (7.1%)
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
14129760 0 5659 1686 +3973 upbit Local Local
14129248 5 5278 1776 +3502 upbit Local Local
14127001 0 4257 1686 +2571 blockdaemon_lido Local Local
14125154 0 4178 1686 +2492 coinbase Local Local
14124465 0 4053 1686 +2367 solo_stakers Local Local
14126225 3 3958 1740 +2218 solo_stakers Local Local
14124039 2 3909 1722 +2187 blockdaemon 0x8527d16c... Ultra Sound
14124666 6 3910 1794 +2116 blockdaemon_lido 0x857b0038... BloXroute Max Profit
14124109 5 3840 1776 +2064 whale_0x967a 0xb4ce6162... Ultra Sound
14128058 5 3840 1776 +2064 kiln 0x857b0038... BloXroute Max Profit
14128753 0 3644 1686 +1958 solo_stakers 0x851b00b1... Aestus
14128480 3 3693 1740 +1953 0x82c466b9... Titan Relay
14128704 0 3638 1686 +1952 luno 0x88a53ec4... BloXroute Regulated
14123584 6 3702 1794 +1908 whale_0xdc8d 0xb67eaa5e... BloXroute Regulated
14124608 1 3593 1704 +1889 ether.fi 0x8527d16c... Ultra Sound
14127608 0 3558 1686 +1872 revolut 0x857b0038... BloXroute Regulated
14127281 3 3598 1740 +1858 ether.fi 0x857b0038... BloXroute Max Profit
14125153 0 3526 1686 +1840 dsrv_lido 0xb26f9666... Titan Relay
14125937 0 3525 1686 +1839 solo_stakers Local Local
14126274 1 3539 1704 +1835 blockdaemon_lido 0x8527d16c... Ultra Sound
14127392 6 3591 1794 +1797 blockdaemon_lido 0x850b00e0... BloXroute Regulated
14124144 10 3663 1866 +1797 blockdaemon_lido 0x8527d16c... Ultra Sound
14126144 4 3554 1758 +1796 blockdaemon 0x850b00e0... BloXroute Max Profit
14127560 0 3481 1686 +1795 blockdaemon_lido 0xb67eaa5e... Titan Relay
14124007 0 3471 1686 +1785 blockdaemon_lido 0x8527d16c... Ultra Sound
14128286 1 3485 1704 +1781 nethermind_lido 0xb26f9666... Aestus
14126357 0 3458 1686 +1772 blockdaemon_lido 0xb67eaa5e... Titan Relay
14124273 1 3473 1704 +1769 0x8527d16c... Ultra Sound
14125098 1 3462 1704 +1758 blockdaemon 0x88a53ec4... BloXroute Regulated
14124612 1 3456 1704 +1752 blockdaemon_lido 0x8527d16c... Ultra Sound
14129645 4 3510 1758 +1752 blockdaemon 0x823e0146... Ultra Sound
14126539 4 3508 1758 +1750 blockdaemon 0x88857150... Ultra Sound
14123944 1 3449 1704 +1745 blockdaemon 0xb4ce6162... Ultra Sound
14123714 1 3442 1704 +1738 blockdaemon_lido 0x850b00e0... BloXroute Regulated
14129249 0 3411 1686 +1725 stakely_lido Local Local
14129582 5 3500 1776 +1724 blockdaemon 0x8a850621... Titan Relay
14124542 0 3405 1686 +1719 whale_0x8914 0xb67eaa5e... Aestus
14128640 5 3489 1776 +1713 blockdaemon 0x88a53ec4... BloXroute Max Profit
14126269 1 3409 1704 +1705 whale_0x8ebd 0x857b0038... BloXroute Regulated
14128191 4 3463 1758 +1705 whale_0x8ebd 0x8a850621... Titan Relay
14127128 5 3481 1776 +1705 solo_stakers 0x823e0146... Agnostic Gnosis
14122998 0 3390 1686 +1704 nethermind_lido 0x856b0004... Aestus
14124681 1 3396 1704 +1692 whale_0xfd67 0x88a53ec4... Aestus
14124876 2 3413 1722 +1691 blockdaemon 0xb26f9666... Titan Relay
14127106 2 3402 1722 +1680 luno 0x853b0078... BloXroute Max Profit
14127190 1 3383 1704 +1679 blockdaemon_lido 0xb26f9666... Titan Relay
14127345 0 3364 1686 +1678 whale_0x8914 0xb67eaa5e... Aestus
14122945 5 3454 1776 +1678 blockdaemon 0xb4ce6162... Ultra Sound
14127922 0 3357 1686 +1671 gateway.fmas_lido 0x8db2a99d... Aestus
14124770 5 3446 1776 +1670 whale_0x8914 0x88857150... Ultra Sound
14124715 6 3464 1794 +1670 blockdaemon 0x8527d16c... Ultra Sound
14125085 2 3391 1722 +1669 blockdaemon_lido 0x850b00e0... BloXroute Regulated
14124913 5 3433 1776 +1657 blockdaemon 0x853b0078... BloXroute Regulated
14124133 5 3433 1776 +1657 0x857b0038... BloXroute Regulated
14129705 0 3342 1686 +1656 blockdaemon_lido 0x850b00e0... BloXroute Max Profit
14123024 2 3376 1722 +1654 blockdaemon 0xb26f9666... Titan Relay
14128313 2 3370 1722 +1648 ether.fi 0x8db2a99d... Flashbots
14126181 1 3351 1704 +1647 blockdaemon 0x88a53ec4... BloXroute Max Profit
14128816 5 3422 1776 +1646 blockdaemon 0x88a53ec4... BloXroute Regulated
14123519 3 3384 1740 +1644 nethermind_lido 0xb26f9666... Aestus
14127278 0 3328 1686 +1642 blockdaemon 0xb26f9666... Titan Relay
14127690 0 3316 1686 +1630 luno 0xb26f9666... Titan Relay
14129671 0 3313 1686 +1627 blockdaemon 0xac23f8cc... Ultra Sound
14126574 6 3420 1794 +1626 blockdaemon 0x8527d16c... Ultra Sound
14124034 6 3419 1794 +1625 blockdaemon_lido 0xb67eaa5e... BloXroute Max Profit
14125602 1 3328 1704 +1624 0xb26f9666... Titan Relay
14125190 10 3483 1866 +1617 gateway.fmas_lido 0xb26f9666... Aestus
14129460 0 3297 1686 +1611 blockdaemon_lido 0x8527d16c... Ultra Sound
14123818 0 3294 1686 +1608 blockdaemon 0xb26f9666... Titan Relay
14125980 0 3291 1686 +1605 blockdaemon 0xb26f9666... Titan Relay
14122914 0 3291 1686 +1605 coinbase 0x857b0038... BloXroute Max Profit
14125198 2 3327 1722 +1605 blockdaemon_lido 0x850b00e0... BloXroute Max Profit
14124062 6 3398 1794 +1604 coinbase 0xac23f8cc... Aestus
14127147 1 3307 1704 +1603 coinbase 0x88a53ec4... Aestus
14125386 5 3376 1776 +1600 blockdaemon_lido 0xb67eaa5e... BloXroute Regulated
14126641 4 3357 1758 +1599 blockdaemon_lido 0x9129eeb4... Titan Relay
14126923 1 3300 1704 +1596 whale_0x8ebd 0x857b0038... BloXroute Max Profit
14129751 1 3296 1704 +1592 ether.fi 0xa965c911... Ultra Sound
14123893 5 3362 1776 +1586 blockdaemon 0xb26f9666... Titan Relay
14125589 0 3271 1686 +1585 blockdaemon_lido 0x88857150... Ultra Sound
14125220 5 3361 1776 +1585 blockdaemon_lido 0xb26f9666... Titan Relay
14129902 3 3324 1740 +1584 blockdaemon 0x857b0038... BloXroute Regulated
14123276 0 3268 1686 +1582 blockdaemon_lido 0x856b0004... Ultra Sound
14125890 6 3376 1794 +1582 whale_0x8914 0xb67eaa5e... Aestus
14124403 0 3262 1686 +1576 gateway.fmas_lido 0x857b0038... BloXroute Regulated
14128106 8 3406 1830 +1576 ether.fi 0xb26f9666... BloXroute Max Profit
14123699 6 3369 1794 +1575 solo_stakers 0x82c466b9... Titan Relay
14126614 9 3423 1848 +1575 blockdaemon_lido 0xa965c911... Ultra Sound
14127593 11 3459 1884 +1575 blockdaemon 0x88a53ec4... BloXroute Regulated
14125265 2 3296 1722 +1574 blockdaemon 0x8527d16c... Ultra Sound
14129771 0 3256 1686 +1570 0x8527d16c... Ultra Sound
14122854 1 3274 1704 +1570 whale_0xdc8d 0xb67eaa5e... BloXroute Regulated
14127501 1 3273 1704 +1569 whale_0x8914 0x857b0038... BloXroute Max Profit
14125936 0 3253 1686 +1567 whale_0xfd67 0x857b0038... BloXroute Regulated
14128909 6 3361 1794 +1567 ether.fi 0xb26f9666... Titan Relay
14128922 0 3252 1686 +1566 whale_0x3878 0x88a53ec4... Aestus
14125615 5 3342 1776 +1566 blockdaemon_lido 0x88a53ec4... BloXroute Regulated
14123196 0 3249 1686 +1563 blockdaemon_lido 0xb67eaa5e... Titan Relay
14129530 0 3249 1686 +1563 0x88a53ec4... BloXroute Regulated
14125128 10 3429 1866 +1563 p2porg 0x88a53ec4... BloXroute Max Profit
14128096 12 3462 1903 +1559 whale_0x8ebd 0xb67eaa5e... BloXroute Max Profit
14126946 5 3333 1776 +1557 whale_0xdc8d 0x853b0078... Ultra Sound
14125118 0 3241 1686 +1555 p2porg 0xac23f8cc... Aestus
14125619 5 3331 1776 +1555 revolut 0x88a53ec4... BloXroute Regulated
14126624 0 3238 1686 +1552 rocketpool 0x8db2a99d... Flashbots
14129267 5 3327 1776 +1551 blockdaemon_lido 0x850b00e0... BloXroute Max Profit
14126715 4 3308 1758 +1550 blockdaemon_lido 0xb26f9666... Titan Relay
14124365 0 3234 1686 +1548 blockdaemon_lido 0xb4ce6162... Ultra Sound
14123795 5 3320 1776 +1544 ether.fi 0xb26f9666... Ultra Sound
14128456 6 3337 1794 +1543 whale_0x8ebd 0x8a850621... Titan Relay
14123629 0 3227 1686 +1541 stader 0x83cae7e5... BloXroute Max Profit
14128921 8 3371 1830 +1541 ether.fi Local Local
14127580 5 3314 1776 +1538 whale_0xdc8d 0xb26f9666... Titan Relay
14127517 5 3309 1776 +1533 luno 0xb26f9666... Titan Relay
14122860 1 3236 1704 +1532 revolut 0x88a53ec4... BloXroute Regulated
14129588 0 3216 1686 +1530 blockdaemon 0x8527d16c... Ultra Sound
14123465 6 3323 1794 +1529 whale_0xdc8d 0x88a53ec4... BloXroute Regulated
14124466 6 3322 1794 +1528 luno Local Local
14129350 0 3212 1686 +1526 0x82c466b9... Ultra Sound
14123921 0 3210 1686 +1524 whale_0x4b5e 0xb67eaa5e... Aestus
14128776 11 3407 1884 +1523 blockdaemon 0xb67eaa5e... BloXroute Max Profit
14126348 5 3297 1776 +1521 blockdaemon_lido 0xb67eaa5e... Titan Relay
14127660 8 3350 1830 +1520 gateway.fmas_lido 0x88a53ec4... BloXroute Regulated
14124131 0 3199 1686 +1513 0x857b0038... BloXroute Regulated
14127747 13 3434 1921 +1513 blockdaemon 0x88a53ec4... BloXroute Regulated
14127668 9 3361 1848 +1513 blockdaemon_lido 0xb26f9666... Titan Relay
14126268 6 3305 1794 +1511 coinbase 0x88a53ec4... BloXroute Max Profit
14127624 5 3285 1776 +1509 whale_0x8914 0x88a53ec4... Aestus
14126126 10 3374 1866 +1508 blockdaemon 0x8db2a99d... Ultra Sound
14126637 4 3264 1758 +1506 whale_0x8ebd 0xb67eaa5e... BloXroute Regulated
14123633 9 3354 1848 +1506 ether.fi 0x853b0078... BloXroute Regulated
14126908 0 3191 1686 +1505 blockdaemon 0xb67eaa5e... BloXroute Max Profit
14127062 6 3299 1794 +1505 0x9129eeb4... Ultra Sound
14123462 9 3351 1848 +1503 blockdaemon 0x857b0038... BloXroute Max Profit
14124538 0 3188 1686 +1502 whale_0x8ebd 0x88857150... Ultra Sound
14125017 3 3241 1740 +1501 gateway.fmas_lido 0x8527d16c... Ultra Sound
14123962 3 3241 1740 +1501 gateway.fmas_lido 0x88857150... Ultra Sound
14125251 1 3200 1704 +1496 kiln 0xb26f9666... BloXroute Regulated
14129885 3 3235 1740 +1495 solo_stakers 0x850b00e0... BloXroute Max Profit
14123812 0 3179 1686 +1493 blockdaemon_lido 0xb26f9666... Titan Relay
14128204 5 3268 1776 +1492 0xb67eaa5e... BloXroute Max Profit
14124448 0 3177 1686 +1491 whale_0xfd67 0x88a53ec4... Aestus
14127473 1 3195 1704 +1491 whale_0x8ebd 0x856b0004... BloXroute Max Profit
14125326 3 3231 1740 +1491 gateway.fmas_lido 0x850b00e0... BloXroute Max Profit
14125107 4 3245 1758 +1487 gateway.fmas_lido 0x88857150... Ultra Sound
14128004 8 3317 1830 +1487 whale_0xedc6 0x8db2a99d... Aestus
14124407 5 3260 1776 +1484 whale_0x8ebd 0x85fb0503... Aestus
14129040 11 3367 1884 +1483 gateway.fmas_lido 0x850b00e0... BloXroute Max Profit
14129594 0 3168 1686 +1482 bitstamp 0x856b0004... Aestus
14128305 1 3185 1704 +1481 blockdaemon_lido 0x853b0078... BloXroute Max Profit
14128754 0 3166 1686 +1480 whale_0x8914 0x91b123d8... Flashbots
14123067 1 3184 1704 +1480 revolut 0xb26f9666... Titan Relay
14127143 3 3220 1740 +1480 gateway.fmas_lido 0xb67eaa5e... BloXroute Regulated
14125012 5 3255 1776 +1479 blockdaemon 0xb26f9666... Titan Relay
14124754 3 3216 1740 +1476 gateway.fmas_lido 0x856b0004... Aestus
14126481 11 3360 1884 +1476 blockdaemon 0xb26f9666... Titan Relay
14126810 11 3360 1884 +1476 blockdaemon 0x8527d16c... Ultra Sound
14127464 0 3161 1686 +1475 whale_0x8914 0x88a53ec4... Aestus
14125548 0 3161 1686 +1475 gateway.fmas_lido 0x856b0004... BloXroute Max Profit
14127852 0 3159 1686 +1473 gateway.fmas_lido 0xb67eaa5e... BloXroute Max Profit
14129186 0 3159 1686 +1473 blockdaemon_lido 0xb67eaa5e... BloXroute Regulated
14124100 0 3159 1686 +1473 p2porg 0x8527d16c... Ultra Sound
14127338 5 3247 1776 +1471 gateway.fmas_lido 0xb67eaa5e... BloXroute Regulated
14123124 0 3156 1686 +1470 0x853b0078... BloXroute Regulated
14125844 0 3155 1686 +1469 whale_0xfd67 0x8527d16c... Ultra Sound
14128418 0 3155 1686 +1469 gateway.fmas_lido 0x88857150... Ultra Sound
14129336 2 3191 1722 +1469 gateway.fmas_lido 0x88a53ec4... BloXroute Max Profit
14129225 5 3245 1776 +1469 kiln 0x88a53ec4... BloXroute Max Profit
14128423 0 3151 1686 +1465 gateway.fmas_lido 0x8527d16c... Ultra Sound
14127366 0 3150 1686 +1464 whale_0x8914 0x91b123d8... Flashbots
14125669 0 3149 1686 +1463 gateway.fmas_lido 0xb67eaa5e... BloXroute Max Profit
14123245 5 3239 1776 +1463 whale_0xfd67 0xb67eaa5e... Aestus
14124193 10 3329 1866 +1463 p2porg 0x88a53ec4... BloXroute Max Profit
14126398 0 3147 1686 +1461 blockdaemon_lido 0x851b00b1... BloXroute Max Profit
14124146 0 3147 1686 +1461 ether.fi 0xa965c911... Ultra Sound
14129841 7 3273 1812 +1461 whale_0xdc8d 0x823e0146... Ultra Sound
14128264 0 3145 1686 +1459 gateway.fmas_lido 0xb67eaa5e... BloXroute Regulated
14127442 2 3180 1722 +1458 p2porg 0x850b00e0... BloXroute Max Profit
14126538 3 3196 1740 +1456 sigmaprime_lido Local Local
14124655 5 3231 1776 +1455 gateway.fmas_lido 0x88a53ec4... BloXroute Max Profit
14129211 0 3136 1686 +1450 gateway.fmas_lido 0xb67eaa5e... BloXroute Regulated
14129704 5 3226 1776 +1450 blockdaemon 0xb26f9666... Titan Relay
14129331 8 3280 1830 +1450 blockdaemon 0x88a53ec4... BloXroute Max Profit
14124614 1 3150 1704 +1446 everstake 0xb26f9666... Aestus
14129631 1 3150 1704 +1446 whale_0x8ebd 0xb26f9666... Titan Relay
14127731 0 3131 1686 +1445 blockdaemon_lido 0x850b00e0... BloXroute Max Profit
14128644 0 3130 1686 +1444 blockdaemon_lido 0xba003e46... BloXroute Max Profit
14124462 0 3129 1686 +1443 whale_0x8ebd 0x88857150... Ultra Sound
14128434 4 3201 1758 +1443 whale_0x8914 0x88a53ec4... Aestus
14126707 10 3308 1866 +1442 kiln 0x88a53ec4... BloXroute Max Profit
14129938 0 3127 1686 +1441 p2porg 0xb26f9666... Titan Relay
14129489 1 3145 1704 +1441 whale_0x8ebd 0x88a53ec4... BloXroute Regulated
14125701 11 3323 1884 +1439 blockdaemon_lido 0xb7c5e609... BloXroute Max Profit
14126972 0 3124 1686 +1438 p2porg 0x857b0038... BloXroute Regulated
14127653 1 3142 1704 +1438 gateway.fmas_lido 0x823e0146... Ultra Sound
14129346 5 3214 1776 +1438 whale_0x3878 0x88a53ec4... BloXroute Regulated
14126658 0 3123 1686 +1437 whale_0x8914 0x85fb0503... Ultra Sound
14126391 2 3159 1722 +1437 whale_0xfd67 0x8527d16c... Ultra Sound
14128962 0 3122 1686 +1436 kiln 0xb26f9666... BloXroute Max Profit
14126722 0 3121 1686 +1435 p2porg 0x850b00e0... BloXroute Max Profit
14125357 0 3121 1686 +1435 coinbase 0x88857150... Ultra Sound
14129293 0 3121 1686 +1435 coinbase 0x88a53ec4... BloXroute Regulated
14123858 1 3139 1704 +1435 gateway.fmas_lido 0x9129eeb4... Ultra Sound
14127948 3 3173 1740 +1433 blockdaemon 0xb67eaa5e... BloXroute Regulated
14124510 1 3136 1704 +1432 whale_0x8ebd 0xac23f8cc... Ultra Sound
14128699 0 3115 1686 +1429 coinbase 0xb26f9666... Titan Relay
14124079 0 3115 1686 +1429 p2porg 0xb26f9666... Titan Relay
14128392 0 3115 1686 +1429 whale_0x8ebd 0xb26f9666... Titan Relay
14122971 2 3151 1722 +1429 whale_0x8ebd 0x88857150... Ultra Sound
14123284 9 3276 1848 +1428 whale_0x8ebd 0x88a53ec4... BloXroute Regulated
14129970 0 3110 1686 +1424 whale_0xf273 0xb5a65d00... Ultra Sound
14128203 0 3110 1686 +1424 p2porg 0x83cae7e5... Titan Relay
14128078 0 3105 1686 +1419 upbit 0x8527d16c... Ultra Sound
14128136 1 3123 1704 +1419 0x850b00e0... BloXroute Max Profit
14123854 1 3122 1704 +1418 whale_0x8ebd 0x850b00e0... Flashbots
14124395 0 3101 1686 +1415 figment 0xb26f9666... BloXroute Max Profit
14123075 3 3150 1740 +1410 kiln 0xb67eaa5e... BloXroute Max Profit
14129587 5 3185 1776 +1409 kiln 0xb67eaa5e... BloXroute Max Profit
14126748 5 3185 1776 +1409 kiln 0xb67eaa5e... BloXroute Max Profit
14127848 11 3293 1884 +1409 whale_0x8ebd 0xb4ce6162... Ultra Sound
14126052 6 3202 1794 +1408 blockdaemon_lido 0xb4ce6162... Ultra Sound
14125664 0 3092 1686 +1406 whale_0x8ebd 0x856b0004... BloXroute Max Profit
14127694 0 3092 1686 +1406 p2porg 0xb26f9666... Titan Relay
14123634 0 3090 1686 +1404 gateway.fmas_lido 0x88a53ec4... BloXroute Max Profit
14124911 1 3108 1704 +1404 everstake 0xb67eaa5e... Ultra Sound
14124162 5 3179 1776 +1403 whale_0x8ebd 0xb26f9666... Titan Relay
14125859 7 3215 1812 +1403 whale_0x3878 0xb67eaa5e... Aestus
14127830 0 3086 1686 +1400 p2porg 0x82c466b9... Titan Relay
14126585 1 3104 1704 +1400 whale_0x4b5e 0x85fb0503... Ultra Sound
14128504 1 3102 1704 +1398 coinbase 0x856b0004... Aestus
14124073 5 3174 1776 +1398 coinbase 0x850b00e0... BloXroute Max Profit
14124233 0 3083 1686 +1397 whale_0x8ebd 0xb4ce6162... Ultra Sound
14128150 1 3100 1704 +1396 p2porg 0x853b0078... BloXroute Regulated
14126220 5 3169 1776 +1393 whale_0xedc6 0x850b00e0... BloXroute Max Profit
14123268 5 3169 1776 +1393 p2porg 0x850b00e0... Flashbots
14123419 5 3168 1776 +1392 p2porg 0x850b00e0... BloXroute Max Profit
14128701 2 3113 1722 +1391 whale_0x8ebd 0xb26f9666... Titan Relay
14124163 2 3113 1722 +1391 whale_0x8ebd 0xb26f9666... Titan Relay
14123942 5 3167 1776 +1391 0x823e0146... BloXroute Max Profit
14127262 0 3076 1686 +1390 kiln 0xb26f9666... BloXroute Max Profit
14126416 8 3220 1830 +1390 p2porg 0x88a53ec4... BloXroute Max Profit
14127677 3 3129 1740 +1389 p2porg 0x850b00e0... BloXroute Regulated
14127809 15 3346 1957 +1389 gateway.fmas_lido 0xb67eaa5e... BloXroute Regulated
14124388 5 3165 1776 +1389 everstake 0x85fb0503... Aestus
14125771 1 3091 1704 +1387 kiln 0xb67eaa5e... BloXroute Regulated
14129591 4 3145 1758 +1387 p2porg 0x850b00e0... BloXroute Regulated
14129370 0 3070 1686 +1384 p2porg 0xb26f9666... Titan Relay
14128218 0 3069 1686 +1383 p2porg 0x850b00e0... BloXroute Regulated
14128721 3 3122 1740 +1382 whale_0x8ebd 0xb26f9666... Titan Relay
14129105 0 3067 1686 +1381 coinbase 0x8527d16c... Ultra Sound
14126403 1 3084 1704 +1380 p2porg 0x88a53ec4... BloXroute Regulated
14125800 5 3156 1776 +1380 gateway.fmas_lido 0x8527d16c... Ultra Sound
14126730 1 3083 1704 +1379 whale_0x8ebd 0xb26f9666... Titan Relay
14126286 11 3263 1884 +1379 revolut 0xb26f9666... Titan Relay
14124998 0 3064 1686 +1378 0x850b00e0... BloXroute Max Profit
14126882 1 3082 1704 +1378 whale_0x8ebd 0x857b0038... BloXroute Max Profit
14127913 7 3190 1812 +1378 blockdaemon 0x8527d16c... Ultra Sound
14129922 0 3062 1686 +1376 kiln 0x8db2a99d... Flashbots
14123208 5 3151 1776 +1375 launchnodes_lido 0x857b0038... BloXroute Regulated
14127243 8 3204 1830 +1374 coinbase 0x850b00e0... BloXroute Max Profit
14124946 1 3077 1704 +1373 solo_stakers 0x856b0004... Agnostic Gnosis
14128372 4 3130 1758 +1372 p2porg 0x8db2a99d... BloXroute Regulated
14126951 2 3093 1722 +1371 whale_0x8ebd 0xb26f9666... Titan Relay
14129405 5 3147 1776 +1371 kiln 0x88a53ec4... BloXroute Max Profit
14124398 5 3147 1776 +1371 0xb26f9666... BloXroute Regulated
14124349 1 3074 1704 +1370 nethermind_lido 0xb26f9666... Aestus
14129738 1 3074 1704 +1370 kiln 0x8db2a99d... Flashbots
14128892 1 3072 1704 +1368 p2porg 0x850b00e0... BloXroute Regulated
14125344 0 3052 1686 +1366 whale_0x8ebd 0xb67eaa5e... BloXroute Max Profit
14124481 0 3052 1686 +1366 kiln 0xb26f9666... Titan Relay
14123552 8 3196 1830 +1366 nethermind_lido 0xb26f9666... Aestus
14123823 6 3159 1794 +1365 coinbase 0x88a53ec4... BloXroute Regulated
14126550 0 3050 1686 +1364 whale_0xedc6 0x850b00e0... BloXroute Max Profit
14127219 1 3068 1704 +1364 kiln 0xb26f9666... Titan Relay
14125703 1 3068 1704 +1364 p2porg 0x853b0078... Agnostic Gnosis
14128878 0 3048 1686 +1362 p2porg 0x850b00e0... BloXroute Regulated
14124159 1 3066 1704 +1362 whale_0xfd67 0x850b00e0... BloXroute Regulated
14129224 1 3065 1704 +1361 p2porg 0x85fb0503... BloXroute Max Profit
14126976 0 3046 1686 +1360 whale_0x8ebd 0x99cba505... BloXroute Max Profit
14126679 6 3153 1794 +1359 coinbase 0x88a53ec4... BloXroute Regulated
14129467 6 3153 1794 +1359 p2porg 0xb67eaa5e... BloXroute Regulated
14129095 0 3044 1686 +1358 0xac23f8cc... Ultra Sound
14128097 0 3044 1686 +1358 upbit 0xb4ce6162... Ultra Sound
14124474 9 3206 1848 +1358 p2porg 0xb26f9666... Titan Relay
14127817 0 3043 1686 +1357 whale_0x4b5e 0xb67eaa5e... BloXroute Max Profit
14127391 0 3043 1686 +1357 coinbase 0xb26f9666... Aestus
14129672 3 3097 1740 +1357 whale_0xedc6 0x856b0004... Ultra Sound
14125290 8 3187 1830 +1357 p2porg 0xb26f9666... Titan Relay
14127855 6 3150 1794 +1356 0xb26f9666... BloXroute Max Profit
14125923 6 3150 1794 +1356 kiln 0xb67eaa5e... BloXroute Regulated
14128132 10 3222 1866 +1356 whale_0xfd67 0x88a53ec4... BloXroute Regulated
14129923 0 3041 1686 +1355 coinbase 0x8527d16c... Ultra Sound
14127466 1 3059 1704 +1355 whale_0x8ebd 0xb26f9666... Titan Relay
14128507 0 3040 1686 +1354 whale_0x8ebd 0x850b00e0... Flashbots
14127838 1 3058 1704 +1354 figment 0x9129eeb4... Ultra Sound
14123627 4 3112 1758 +1354 coinbase 0x850b00e0... BloXroute Max Profit
14129141 0 3039 1686 +1353 whale_0x8ebd 0xb26f9666... Titan Relay
14123554 11 3237 1884 +1353 gateway.fmas_lido 0x88a53ec4... BloXroute Max Profit
14128703 1 3056 1704 +1352 whale_0xedc6 0x9129eeb4... Ultra Sound
14129265 2 3074 1722 +1352 p2porg 0x853b0078... BloXroute Max Profit
14127169 6 3146 1794 +1352 whale_0x8914 0xb67eaa5e... BloXroute Regulated
14126543 0 3037 1686 +1351 whale_0x8ebd 0x88a53ec4... BloXroute Regulated
14124783 1 3054 1704 +1350 whale_0x8ebd 0xb26f9666... BloXroute Max Profit
14125253 5 3125 1776 +1349 solo_stakers 0x88a53ec4... BloXroute Max Profit
14127155 0 3034 1686 +1348 p2porg 0x8db2a99d... Ultra Sound
14124060 0 3034 1686 +1348 blockdaemon 0x88857150... Ultra Sound
14127438 1 3052 1704 +1348 p2porg 0x853b0078... Agnostic Gnosis
14124535 3 3088 1740 +1348 whale_0x8ebd 0xb67eaa5e... BloXroute Max Profit
14125088 0 3033 1686 +1347 everstake_lido 0x823e0146... Ultra Sound
14123324 0 3033 1686 +1347 whale_0x0000 0x850b00e0... BloXroute Regulated
14125076 1 3050 1704 +1346 nethermind_lido 0xb26f9666... Aestus
14125131 3 3085 1740 +1345 coinbase 0x88a53ec4... BloXroute Regulated
14126420 8 3174 1830 +1344 kiln 0x850b00e0... BloXroute Max Profit
14123856 0 3029 1686 +1343 whale_0x8ebd 0xb4ce6162... Ultra Sound
14127545 4 3100 1758 +1342 whale_0x8ebd 0xb67eaa5e... BloXroute Max Profit
14124493 1 3044 1704 +1340 whale_0x8ebd 0xb26f9666... Titan Relay
14122829 5 3116 1776 +1340 coinbase 0xa965c911... Ultra Sound
14125625 1 3043 1704 +1339 0x823e0146... Aestus
14123805 6 3133 1794 +1339 p2porg 0x850b00e0... Flashbots
14128934 0 3023 1686 +1337 0xb26f9666... BloXroute Max Profit
14127555 1 3040 1704 +1336 whale_0x8ebd 0x85fb0503... Aestus
14126673 8 3166 1830 +1336 whale_0xc611 0x88857150... Ultra Sound
14129480 9 3184 1848 +1336 whale_0x8ebd 0x8527d16c... Ultra Sound
14124189 12 3238 1903 +1335 coinbase 0xb67eaa5e... BloXroute Regulated
14124834 0 3019 1686 +1333 everstake 0xb26f9666... Ultra Sound
14128294 5 3108 1776 +1332 whale_0x8ebd 0x8527d16c... Ultra Sound
14128194 1 3035 1704 +1331 coinbase 0xb26f9666... BloXroute Regulated
14128414 3 3071 1740 +1331 p2porg 0x85fb0503... Aestus
14124622 0 3016 1686 +1330 kiln 0x9129eeb4... Agnostic Gnosis
14123150 6 3124 1794 +1330 0x856b0004... BloXroute Max Profit
14125764 1 3033 1704 +1329 p2porg 0x88857150... Ultra Sound
14124710 5 3104 1776 +1328 kiln 0xb26f9666... Aestus
14125526 0 3013 1686 +1327 whale_0xfd67 0x853b0078... BloXroute Max Profit
14125081 0 3013 1686 +1327 coinbase 0x805e28e6... Flashbots
14129302 0 3012 1686 +1326 kiln 0xb26f9666... BloXroute Regulated
14128410 0 3012 1686 +1326 kiln 0x851b00b1... Flashbots
14128911 6 3120 1794 +1326 everstake 0x850b00e0... BloXroute Max Profit
14124820 0 3010 1686 +1324 0xb67eaa5e... BloXroute Max Profit
14128634 5 3097 1776 +1321 p2porg 0x8527d16c... Ultra Sound
14125645 0 3006 1686 +1320 coinbase 0xb26f9666... BloXroute Regulated
14129142 0 3006 1686 +1320 p2porg 0x85fb0503... Aestus
14125146 1 3020 1704 +1316 whale_0x8ebd 0xb26f9666... BloXroute Regulated
14123791 1 3020 1704 +1316 p2porg 0x853b0078... BloXroute Max Profit
14127779 5 3092 1776 +1316 kiln 0xb67eaa5e... BloXroute Regulated
14128485 1 3019 1704 +1315 kiln 0xb67eaa5e... BloXroute Regulated
14126044 0 2999 1686 +1313 coinbase 0xb67eaa5e... BloXroute Max Profit
14124883 1 3015 1704 +1311 kiln 0x88a53ec4... BloXroute Regulated
14123640 1 3015 1704 +1311 whale_0x8ebd 0xb26f9666... BloXroute Regulated
14123587 3 3051 1740 +1311 solo_stakers 0x8527d16c... Ultra Sound
14126108 1 3013 1704 +1309 0xb26f9666... BloXroute Max Profit
14123903 7 3121 1812 +1309 coinbase 0x8527d16c... Ultra Sound
14126822 0 2994 1686 +1308 whale_0x8ebd 0x88a53ec4... BloXroute Regulated
14124773 3 3048 1740 +1308 coinbase 0x8527d16c... Ultra Sound
14125225 11 3192 1884 +1308 whale_0x8ebd 0x8527d16c... Ultra Sound
14122830 1 3011 1704 +1307 0x856b0004... Agnostic Gnosis
14125159 5 3083 1776 +1307 whale_0x8ebd 0xb26f9666... Titan Relay
14125570 5 3081 1776 +1305 kiln 0xb7c5e609... BloXroute Max Profit
14123723 10 3171 1866 +1305 coinbase 0x88a53ec4... BloXroute Regulated
14129533 0 2988 1686 +1302 coinbase 0xb5a65d00... Ultra Sound
14123581 0 2988 1686 +1302 whale_0x8ebd Local Local
14127629 1 3006 1704 +1302 kiln 0xb67eaa5e... BloXroute Max Profit
14123610 0 2987 1686 +1301 kiln 0xb26f9666... Titan Relay
14124174 0 2987 1686 +1301 whale_0x8ebd 0xb26f9666... BloXroute Regulated
14122857 1 3005 1704 +1301 kiln 0x88857150... Ultra Sound
14124658 1 3005 1704 +1301 everstake 0xb26f9666... Titan Relay
14125402 0 2986 1686 +1300 whale_0x8ebd 0x8527d16c... Ultra Sound
14125904 2 3022 1722 +1300 p2porg 0x85fb0503... Aestus
14128958 0 2985 1686 +1299 whale_0xedc6 0x853b0078... BloXroute Max Profit
14127961 2 3021 1722 +1299 coinbase 0xb26f9666... Titan Relay
14126953 6 3093 1794 +1299 p2porg 0x856b0004... Ultra Sound
14123694 7 3111 1812 +1299 p2porg 0xa965c911... Ultra Sound
14128637 0 2984 1686 +1298 kiln 0x805e28e6... BloXroute Max Profit
14126345 0 2984 1686 +1298 whale_0x8ebd Local Local
14123129 0 2984 1686 +1298 whale_0x8ebd 0x88a53ec4... BloXroute Max Profit
14124740 4 3055 1758 +1297 everstake 0xb26f9666... Aestus
14127691 5 3073 1776 +1297 blockdaemon_lido 0xb26f9666... Titan Relay
14126239 4 3054 1758 +1296 p2porg 0x8db2a99d... Ultra Sound
14125158 6 3090 1794 +1296 whale_0x8ebd 0x857b0038... BloXroute Max Profit
14122828 10 3162 1866 +1296 coinbase 0x8527d16c... Ultra Sound
14126907 0 2981 1686 +1295 kiln 0xb67eaa5e... BloXroute Max Profit
14127378 4 3049 1758 +1291 kiln 0xb67eaa5e... BloXroute Regulated
14126314 0 2976 1686 +1290 whale_0xedc6 0xb26f9666... BloXroute Max Profit
14128457 2 3010 1722 +1288 everstake 0xb67eaa5e... BloXroute Regulated
14126984 19 3315 2029 +1286 blockdaemon_lido 0xb67eaa5e... Titan Relay
14127993 7 3097 1812 +1285 everstake 0x88a53ec4... BloXroute Max Profit
14125375 2 3006 1722 +1284 everstake 0xb67eaa5e... BloXroute Max Profit
14126150 5 3060 1776 +1284 coinbase 0xb26f9666... Titan Relay
14128188 5 3060 1776 +1284 coinbase 0xb26f9666... Titan Relay
14126200 5 3057 1776 +1281 p2porg 0x850b00e0... BloXroute Max Profit
14124379 6 3074 1794 +1280 stader 0x85fb0503... Aestus
14124963 11 3164 1884 +1280 p2porg 0xb26f9666... Titan Relay
14125127 0 2965 1686 +1279 everstake 0x853b0078... Agnostic Gnosis
14125393 0 2965 1686 +1279 p2porg 0xb26f9666... BloXroute Max Profit
14127686 5 3055 1776 +1279 coinbase 0x88a53ec4... BloXroute Max Profit
14127416 1 2982 1704 +1278 kiln 0x8527d16c... Ultra Sound
14129012 0 2963 1686 +1277 kiln 0xb26f9666... Aestus
14123179 1 2981 1704 +1277 whale_0x2f38 Local Local
14127871 12 3179 1903 +1276 kraken 0x8527d16c... EthGas
14125916 3 3016 1740 +1276 coinbase 0x853b0078... Agnostic Gnosis
14123114 0 2957 1686 +1271 kiln 0x8527d16c... Ultra Sound
14127105 5 3047 1776 +1271 simplystaking_lido Local Local
14123395 12 3173 1903 +1270 whale_0x8914 0x850b00e0... BloXroute Regulated
14127355 5 3045 1776 +1269 coinbase Local Local
14129952 5 3044 1776 +1268 whale_0x8ebd 0x91b123d8... Ultra Sound
14129448 0 2951 1686 +1265 kiln 0x8527d16c... Ultra Sound
14125240 0 2951 1686 +1265 everstake 0xb26f9666... Titan Relay
14125568 0 2951 1686 +1265 everstake 0xb26f9666... Titan Relay
14125911 7 3077 1812 +1265 p2porg 0x85fb0503... Aestus
14125522 0 2950 1686 +1264 kiln 0x856b0004... BloXroute Max Profit
14127704 1 2968 1704 +1264 ether.fi 0xb67eaa5e... BloXroute Max Profit
14127549 7 3076 1812 +1264 whale_0x8ebd 0xb26f9666... BloXroute Max Profit
14123475 8 3094 1830 +1264 kiln 0x88a53ec4... BloXroute Regulated
14129477 0 2949 1686 +1263 kiln 0xb67eaa5e... BloXroute Regulated
14124283 1 2966 1704 +1262 kiln 0x88a53ec4... BloXroute Max Profit
14127903 0 2947 1686 +1261 everstake 0x88a53ec4... BloXroute Regulated
14125124 0 2947 1686 +1261 kiln 0xb26f9666... Titan Relay
14128016 0 2946 1686 +1260 whale_0x8ebd 0x856b0004... BloXroute Max Profit
14124811 0 2945 1686 +1259 everstake 0xb26f9666... Titan Relay
14127379 0 2945 1686 +1259 coinbase 0xb67eaa5e... BloXroute Regulated
14126221 1 2963 1704 +1259 kiln 0x8527d16c... Ultra Sound
14127531 4 3017 1758 +1259 coinbase 0x856b0004... Aestus
14127551 10 3124 1866 +1258 p2porg 0x88a53ec4... Aestus
14127931 2 2979 1722 +1257 kiln 0x853b0078... BloXroute Max Profit
14128234 5 3033 1776 +1257 whale_0x8ebd 0x8db2a99d... Titan Relay
14125006 9 3104 1848 +1256 0xb26f9666... BloXroute Max Profit
14129354 1 2959 1704 +1255 everstake 0xb26f9666... Titan Relay
14126989 5 3031 1776 +1255 kiln 0x856b0004... BloXroute Max Profit
14124531 0 2938 1686 +1252 everstake 0x85fb0503... Agnostic Gnosis
14125830 0 2938 1686 +1252 kiln Local Local
14129697 13 3173 1921 +1252 whale_0x8914 0x8527d16c... Ultra Sound
14127595 5 3028 1776 +1252 kiln 0x88a53ec4... BloXroute Max Profit
14124543 18 3263 2011 +1252 whale_0x3878 0x88a53ec4... BloXroute Regulated
14127304 10 3118 1866 +1252 everstake 0x850b00e0... BloXroute Max Profit
14127433 10 3117 1866 +1251 p2porg 0x853b0078... Agnostic Gnosis
14125914 0 2935 1686 +1249 nethermind_lido 0x8527d16c... Ultra Sound
14127556 5 3023 1776 +1247 everstake 0xb26f9666... Titan Relay
14123766 0 2932 1686 +1246 coinbase 0x856b0004... BloXroute Max Profit
14128780 7 3058 1812 +1246 whale_0x8ebd 0xb26f9666... Titan Relay
14128375 0 2931 1686 +1245 kiln 0x8527d16c... Ultra Sound
14127195 1 2949 1704 +1245 whale_0x8ebd Local Local
14126640 6 3039 1794 +1245 coinbase 0x853b0078... Agnostic Gnosis
14123845 0 2930 1686 +1244 solo_stakers 0xac23f8cc... BloXroute Max Profit
14125421 0 2930 1686 +1244 solo_stakers 0xb67eaa5e... BloXroute Max Profit
14125332 6 3038 1794 +1244 kiln 0x850b00e0... BloXroute Max Profit
14122880 0 2928 1686 +1242 everstake 0xb67eaa5e... BloXroute Max Profit
14126849 0 2927 1686 +1241 everstake 0xb26f9666... Titan Relay
14129693 0 2927 1686 +1241 coinbase 0xb26f9666... BloXroute Regulated
14126074 1 2945 1704 +1241 kiln 0x8527d16c... Ultra Sound
14129090 0 2924 1686 +1238 whale_0x8ebd 0x853b0078... BloXroute Max Profit
14124619 0 2924 1686 +1238 solo_stakers 0x856b0004... BloXroute Max Profit
14124914 1 2942 1704 +1238 coinbase 0x853b0078... Agnostic Gnosis
14125366 2 2960 1722 +1238 stader 0xb67eaa5e... BloXroute Max Profit
14128563 4 2996 1758 +1238 kiln 0x8527d16c... Ultra Sound
14123217 7 3050 1812 +1238 kiln 0x850b00e0... BloXroute Max Profit
14125538 1 2941 1704 +1237 everstake 0xb26f9666... Titan Relay
14128411 1 2941 1704 +1237 coinbase 0xb26f9666... BloXroute Regulated
14123097 3 2977 1740 +1237 kiln 0x823e0146... Flashbots
14124068 5 3013 1776 +1237 everstake 0x88857150... Ultra Sound
14126282 8 3064 1830 +1234 0x85fb0503... Aestus
14126564 0 2919 1686 +1233 kiln 0xb67eaa5e... BloXroute Regulated
14123691 4 2990 1758 +1232 kiln 0x857b0038... BloXroute Max Profit
14124731 0 2917 1686 +1231 kiln 0xb26f9666... BloXroute Max Profit
14129261 1 2935 1704 +1231 everstake 0x8db2a99d... Titan Relay
14126668 6 3025 1794 +1231 whale_0x8ebd 0xb26f9666... BloXroute Regulated
14124287 5 3006 1776 +1230 everstake 0xb26f9666... Titan Relay
14127530 8 3059 1830 +1229 whale_0x8ebd 0xb26f9666... BloXroute Regulated
14128629 4 2986 1758 +1228 kiln Local Local
14125133 8 3058 1830 +1228 whale_0x8ebd 0x856b0004... BloXroute Max Profit
14123262 0 2913 1686 +1227 whale_0x8ebd 0x856b0004... Agnostic Gnosis
14128565 0 2913 1686 +1227 everstake 0xb26f9666... Aestus
14126455 11 3111 1884 +1227 kiln 0x88a53ec4... BloXroute Regulated
14129889 2 2948 1722 +1226 kraken 0xb26f9666... EthGas
14127633 6 3020 1794 +1226 kiln 0x85fb0503... Aestus
14127146 2 2947 1722 +1225 coinbase 0x856b0004... Agnostic Gnosis
14129573 0 2910 1686 +1224 everstake 0xb26f9666... Titan Relay
14128580 0 2910 1686 +1224 kiln 0x9129eeb4... Agnostic Gnosis
14126690 0 2910 1686 +1224 coinbase 0x856b0004... Aestus
14127851 6 3018 1794 +1224 kiln 0xb26f9666... BloXroute Regulated
14129677 0 2909 1686 +1223 kiln 0x99cba505... Flashbots
14127185 0 2909 1686 +1223 0x851b00b1... Flashbots
14123106 0 2909 1686 +1223 coinbase 0xb26f9666... BloXroute Max Profit
14123816 0 2909 1686 +1223 coinbase 0xb26f9666... BloXroute Max Profit
14124294 0 2909 1686 +1223 whale_0x8ebd 0x8527d16c... Ultra Sound
14125317 1 2926 1704 +1222 everstake 0x8527d16c... Ultra Sound
14123770 1 2926 1704 +1222 coinbase 0xb26f9666... BloXroute Regulated
14129260 0 2907 1686 +1221 kiln 0x853b0078... BloXroute Max Profit
14127673 2 2943 1722 +1221 nethermind_lido 0xb26f9666... Aestus
14128949 1 2924 1704 +1220 everstake 0x850b00e0... Flashbots
14126917 5 2996 1776 +1220 kiln 0x8527d16c... Ultra Sound
14126089 10 3086 1866 +1220 p2porg 0x853b0078... Agnostic Gnosis
14124994 1 2923 1704 +1219 coinbase 0xb4ce6162... Ultra Sound
14128244 0 2903 1686 +1217 everstake 0xb26f9666... Titan Relay
14128047 0 2903 1686 +1217 ether.fi 0xba003e46... BloXroute Max Profit
14126755 2 2939 1722 +1217 ether.fi 0xb67eaa5e... BloXroute Regulated
14126370 0 2902 1686 +1216 coinbase 0xb26f9666... BloXroute Max Profit
14129846 0 2902 1686 +1216 kiln 0x851b00b1... BloXroute Max Profit
14124951 0 2902 1686 +1216 kiln 0xb26f9666... BloXroute Max Profit
14127337 1 2920 1704 +1216 kiln 0xb26f9666... BloXroute Max Profit
14125893 1 2920 1704 +1216 everstake 0xb26f9666... Aestus
14129484 2 2937 1722 +1215 whale_0x8ebd 0xb26f9666... BloXroute Regulated
14122913 8 3044 1830 +1214 kraken 0x8527d16c... EthGas
14123638 0 2899 1686 +1213 solo_stakers 0xb26f9666... BloXroute Regulated
14129666 0 2899 1686 +1213 whale_0x8ebd 0xb26f9666... BloXroute Max Profit
14129005 0 2899 1686 +1213 everstake 0xb26f9666... Aestus
14126363 2 2935 1722 +1213 everstake 0x88a53ec4... BloXroute Regulated
14126439 3 2953 1740 +1213 everstake 0xb26f9666... Titan Relay
14125907 5 2989 1776 +1213 coinbase 0xb26f9666... BloXroute Max Profit
14123591 5 2989 1776 +1213 kraken 0x857b0038... BloXroute Max Profit
14124214 0 2898 1686 +1212 kiln 0x853b0078... Agnostic Gnosis
14122825 2 2933 1722 +1211 kiln 0x856b0004... BloXroute Max Profit
14122859 5 2987 1776 +1211 kiln 0xb26f9666... Aestus
Total anomalies: 511

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