Mon, Jun 1, 2026

Propagation anomalies - 2026-06-01

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-06-01' AND slot_start_date_time < '2026-06-01'::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-06-01' AND slot_start_date_time < '2026-06-01'::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-06-01' AND slot_start_date_time < '2026-06-01'::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-06-01' AND slot_start_date_time < '2026-06-01'::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-06-01' AND slot_start_date_time < '2026-06-01'::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-06-01' AND slot_start_date_time < '2026-06-01'::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-06-01' AND slot_start_date_time < '2026-06-01'::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-06-01' AND slot_start_date_time < '2026-06-01'::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,183
MEV blocks: 6,735 (93.8%)
Local blocks: 448 (6.2%)

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 = 1679.5 + 15.71 × blob_count (R² = 0.011)
Residual σ = 629.4ms
Anomalies (>2σ slow): 468 (6.5%)
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
14456225 0 9533 1679 +7854 solo_stakers Local Local
14455968 0 7603 1679 +5924 upbit Local Local
14456800 0 7175 1679 +5496 whale_0x3ffa Local Local
14456224 6 6898 1774 +5124 upbit Local Local
14459136 0 6765 1679 +5086 upbit Local Local
14456576 0 6239 1679 +4560 upbit Local Local
14460032 0 4215 1679 +2536 upbit Local Local
14456608 0 4128 1679 +2449 launchnodes_lido Local Local
14456382 0 4112 1679 +2433 whale_0x8ebd Local Local
14454835 0 3974 1679 +2295 whale_0xba8f Local Local
14454891 0 3882 1679 +2203 bloxstaking Local Local
14459480 5 3910 1758 +2152 nethermind_lido Local Local
14456493 4 3705 1742 +1963 nethermind_lido 0x853b0078... BloXroute Max Profit
14455399 0 3641 1679 +1962 whale_0xdc8d 0x857b0038... BloXroute Max Profit
14458528 5 3605 1758 +1847 whale_0xdc8d 0x823e0146... BloXroute Max Profit
14460166 2 3489 1711 +1778 blockdaemon 0x857b0038... BloXroute Max Profit
14457511 3 3471 1727 +1744 blockdaemon 0x8a850621... Titan Relay
14454188 1 3434 1695 +1739 0x8a850621... Ultra Sound
14458006 5 3488 1758 +1730 blockdaemon 0x8a850621... Ultra Sound
14455374 1 3424 1695 +1729 blockdaemon 0x857b0038... BloXroute Max Profit
14456247 1 3414 1695 +1719 coinbase 0x8a850621... BloXroute Regulated
14456071 0 3397 1679 +1718 blockdaemon 0x8a850621... Titan Relay
14455655 1 3398 1695 +1703 luno 0x88a53ec4... BloXroute Max Profit
14455204 7 3479 1789 +1690 blockdaemon 0x88857150... Ultra Sound
14459367 4 3427 1742 +1685 blockdaemon 0x8a850621... Titan Relay
14455038 9 3505 1821 +1684 blockdaemon 0xb67eaa5e... Ultra Sound
14458772 16 3613 1931 +1682 solo_stakers 0x88a53ec4... BloXroute Regulated
14460100 6 3447 1774 +1673 blockdaemon 0x8527d16c... Ultra Sound
14458482 5 3431 1758 +1673 blockdaemon 0x8a850621... Titan Relay
14460103 5 3430 1758 +1672 blockdaemon 0x8527d16c... Ultra Sound
14459658 5 3425 1758 +1667 blockdaemon 0x8a850621... Titan Relay
14455439 5 3425 1758 +1667 blockdaemon_lido 0x88857150... Ultra Sound
14458434 6 3440 1774 +1666 blockdaemon 0x8a850621... Titan Relay
14454693 2 3377 1711 +1666 solo_stakers 0x885c17ef... BloXroute Max Profit
14456186 2 3375 1711 +1664 whale_0xdc8d 0xb26f9666... Ultra Sound
14456352 0 3339 1679 +1660 rocketpool Local Local
14458206 0 3338 1679 +1659 blockdaemon 0x8a850621... Ultra Sound
14459357 2 3363 1711 +1652 blockdaemon_lido 0xb67eaa5e... Titan Relay
14459351 1 3347 1695 +1652 blockdaemon 0x8a850621... Titan Relay
14456701 0 3331 1679 +1652 blockdaemon 0xb4ce6162... Ultra Sound
14460768 9 3466 1821 +1645 revolut 0x9129eeb4... Ultra Sound
14455804 7 3432 1789 +1643 blockdaemon_lido 0x88857150... Ultra Sound
14460470 0 3321 1679 +1642 0xb26f9666... Ultra Sound
14459407 6 3412 1774 +1638 ether.fi 0x88a53ec4... BloXroute Max Profit
14456023 6 3410 1774 +1636 blockdaemon 0xb67eaa5e... Titan Relay
14459622 1 3330 1695 +1635 whale_0xdc8d 0x8527d16c... Ultra Sound
14460763 3 3354 1727 +1627 blockdaemon 0x850b00e0... BloXroute Max Profit
14461097 9 3448 1821 +1627 blockdaemon 0xb4ce6162... Ultra Sound
14460392 13 3506 1884 +1622 blockdaemon_lido 0x88857150... Ultra Sound
14460689 5 3379 1758 +1621 blockdaemon 0x8527d16c... Ultra Sound
14456296 0 3300 1679 +1621 blockdaemon 0x8a850621... Titan Relay
14457424 0 3300 1679 +1621 blockdaemon 0x8a850621... Titan Relay
14459118 5 3374 1758 +1616 0x8a850621... Titan Relay
14455378 2 3326 1711 +1615 0x8527d16c... Ultra Sound
14457239 6 3383 1774 +1609 luno 0xb26f9666... Titan Relay
14460893 5 3363 1758 +1605 blockdaemon 0xb26f9666... Ultra Sound
14456100 10 3439 1837 +1602 whale_0xdc8d 0x8527d16c... Ultra Sound
14456502 5 3360 1758 +1602 blockdaemon 0x856b0004... BloXroute Max Profit
14460420 4 3344 1742 +1602 whale_0xdc8d 0xb26f9666... Ultra Sound
14456120 8 3402 1805 +1597 blockdaemon_lido 0x853b0078... BloXroute Max Profit
14457740 1 3290 1695 +1595 blockdaemon_lido 0x8527d16c... Ultra Sound
14456479 0 3268 1679 +1589 blockdaemon_lido 0x88857150... Ultra Sound
14454760 10 3420 1837 +1583 whale_0xdc8d 0x8527d16c... Ultra Sound
14460258 5 3341 1758 +1583 0xb26f9666... Titan Relay
14455662 0 3262 1679 +1583 0x8a850621... BloXroute Regulated
14460550 5 3337 1758 +1579 luno 0x8527d16c... Ultra Sound
14457154 5 3336 1758 +1578 nethermind_lido 0x88a53ec4... BloXroute Regulated
14458864 6 3349 1774 +1575 luno 0x8527d16c... Ultra Sound
14454622 10 3411 1837 +1574 solo_stakers 0x850b00e0... BloXroute Max Profit
14458011 1 3264 1695 +1569 blockdaemon_lido 0xb26f9666... Ultra Sound
14455066 2 3278 1711 +1567 blockdaemon_lido 0x88857150... Ultra Sound
14456249 0 3246 1679 +1567 blockdaemon_lido 0x851b00b1... Ultra Sound
14455056 5 3321 1758 +1563 luno 0x8527d16c... Ultra Sound
14454019 6 3335 1774 +1561 blockdaemon 0x853b0078... BloXroute Max Profit
14454394 7 3347 1789 +1558 blockdaemon_lido 0x853b0078... BloXroute Max Profit
14454165 8 3362 1805 +1557 blockdaemon_lido 0xb67eaa5e... Titan Relay
14456467 4 3299 1742 +1557 blockdaemon 0x8527d16c... Ultra Sound
14456457 6 3328 1774 +1554 blockdaemon 0x8527d16c... Ultra Sound
14455969 1 3245 1695 +1550 whale_0xfd67 0xb72cae2f... Ultra Sound
14458261 13 3433 1884 +1549 blockdaemon_lido 0xb26f9666... Titan Relay
14454679 8 3354 1805 +1549 blockdaemon 0x857b0038... BloXroute Max Profit
14460024 0 3227 1679 +1548 gateway.fmas_lido 0x851b00b1... BloXroute Max Profit
14456875 0 3226 1679 +1547 blockdaemon 0xb26f9666... Titan Relay
14455725 1 3240 1695 +1545 blockdaemon 0x8527d16c... Ultra Sound
14459463 0 3211 1679 +1532 whale_0xfd67 0x851b00b1... Ultra Sound
14460693 4 3271 1742 +1529 0x8527d16c... Ultra Sound
14456695 10 3365 1837 +1528 luno 0x9129eeb4... Ultra Sound
14459755 5 3285 1758 +1527 blockdaemon_lido 0xb67eaa5e... Titan Relay
14456921 0 3206 1679 +1527 blockdaemon_lido 0xb26f9666... Titan Relay
14456021 8 3330 1805 +1525 blockdaemon_lido 0x8527d16c... Ultra Sound
14457407 6 3297 1774 +1523 p2porg 0x853b0078... BloXroute Regulated
14458357 8 3326 1805 +1521 blockdaemon 0x8527d16c... Ultra Sound
14458866 11 3372 1852 +1520 blockdaemon 0xb26f9666... Titan Relay
14455798 0 3199 1679 +1520 blockdaemon_lido 0x88a53ec4... BloXroute Max Profit
14457333 6 3292 1774 +1518 blockdaemon_lido 0x88857150... Ultra Sound
14459565 4 3260 1742 +1518 luno 0x8527d16c... Ultra Sound
14459698 7 3305 1789 +1516 blockdaemon_lido 0xb26f9666... Titan Relay
14457668 0 3194 1679 +1515 blockdaemon_lido 0x851b00b1... BloXroute Max Profit
14459072 10 3348 1837 +1511 p2porg 0xb67eaa5e... BloXroute Regulated
14454535 6 3282 1774 +1508 whale_0x8ebd 0xb67eaa5e... BloXroute Max Profit
14455196 6 3282 1774 +1508 revolut 0x8db2a99d... BloXroute Max Profit
14460900 11 3360 1852 +1508 blockdaemon 0x8527d16c... Ultra Sound
14457559 1 3201 1695 +1506 revolut 0x8527d16c... Ultra Sound
14454134 0 3184 1679 +1505 revolut 0x856b0004... Ultra Sound
14456935 0 3183 1679 +1504 whale_0x8914 0x88857150... Ultra Sound
14457267 7 3292 1789 +1503 Local Local
14458316 0 3179 1679 +1500 whale_0x8914 0x851b00b1... Ultra Sound
14455676 0 3177 1679 +1498 revolut 0x8527d16c... Ultra Sound
14454389 6 3270 1774 +1496 whale_0x8ebd 0x885c17ef... BloXroute Max Profit
14455457 9 3317 1821 +1496 blockdaemon_lido 0x853b0078... BloXroute Regulated
14457946 0 3174 1679 +1495 whale_0xfd67 0x851b00b1... Ultra Sound
14460206 6 3266 1774 +1492 p2porg 0xb26f9666... Titan Relay
14455750 6 3265 1774 +1491 whale_0x4b5e 0x88857150... Ultra Sound
14458248 4 3232 1742 +1490 Local Local
14455972 3 3214 1727 +1487 p2porg 0x850b00e0... Flashbots
14457938 0 3162 1679 +1483 whale_0xfd67 0x851b00b1... Ultra Sound
14458769 13 3364 1884 +1480 blockdaemon 0xb26f9666... Ultra Sound
14455156 1 3175 1695 +1480 whale_0xc611 0x88857150... Ultra Sound
14458501 5 3237 1758 +1479 p2porg 0x850b00e0... BloXroute Regulated
14455281 14 3378 1899 +1479 Local Local
14458904 6 3252 1774 +1478 revolut 0xb26f9666... Titan Relay
14460855 2 3189 1711 +1478 revolut 0xb26f9666... Ultra Sound
14457701 10 3314 1837 +1477 0xb26f9666... Ultra Sound
14458783 0 3155 1679 +1476 whale_0xba40 0x851b00b1... Aestus
14456007 6 3248 1774 +1474 p2porg 0xb67eaa5e... Titan Relay
14458496 5 3226 1758 +1468 0x850b00e0... Flashbots
14457219 7 3256 1789 +1467 blockdaemon_lido 0x88857150... Ultra Sound
14460557 0 3142 1679 +1463 whale_0xfd67 0x851b00b1... Ultra Sound
14455349 1 3157 1695 +1462 kiln 0x853b0078... BloXroute Max Profit
14458208 21 3471 2009 +1462 revolut 0xb26f9666... Ultra Sound
14460378 1 3156 1695 +1461 p2porg_lido 0xb26f9666... Titan Relay
14454916 4 3202 1742 +1460 kiln 0xb67eaa5e... BloXroute Regulated
14455704 0 3139 1679 +1460 whale_0xfd67 0x851b00b1... Ultra Sound
14458816 0 3138 1679 +1459 p2porg 0x851b00b1... BloXroute Max Profit
14459296 0 3134 1679 +1455 p2porg_lido 0xb26f9666... Titan Relay
14455265 6 3226 1774 +1452 whale_0x9212 0x853b0078... BloXroute Max Profit
14458637 13 3335 1884 +1451 kraken 0xb26f9666... EthGas
14454240 0 3129 1679 +1450 abyss_finance 0x850b00e0... BloXroute Max Profit
14460068 4 3191 1742 +1449 kiln 0xb26f9666... Aestus
14458526 7 3238 1789 +1449 gateway.fmas_lido 0x88a53ec4... BloXroute Max Profit
14454793 11 3300 1852 +1448 blockdaemon 0x8527d16c... Ultra Sound
14456161 0 3127 1679 +1448 stakingfacilities_lido 0xb26f9666... BloXroute Max Profit
14456277 5 3205 1758 +1447 nethermind_lido 0xb67eaa5e... BloXroute Max Profit
14454747 9 3267 1821 +1446 0x88a53ec4... BloXroute Regulated
14458606 5 3203 1758 +1445 whale_0x8914 0x88857150... Ultra Sound
14455652 5 3199 1758 +1441 p2porg 0x850b00e0... BloXroute Regulated
14460924 0 3118 1679 +1439 p2porg 0x853b0078... BloXroute Regulated
14461193 0 3117 1679 +1438 whale_0x8914 0x851b00b1... Ultra Sound
14454868 14 3335 1899 +1436 p2porg 0xb67eaa5e... Titan Relay
14457476 5 3192 1758 +1434 whale_0x3878 0x88857150... Ultra Sound
14460676 4 3176 1742 +1434 whale_0xfd67 0x885c17ef... Titan Relay
14455732 0 3112 1679 +1433 whale_0x8ebd 0x88857150... Ultra Sound
14454342 0 3112 1679 +1433 whale_0xfd67 0x851b00b1... Aestus
14461106 1 3127 1695 +1432 whale_0xf273 0x88857150... Ultra Sound
14454251 0 3111 1679 +1432 coinbase 0xb67eaa5e... BloXroute Regulated
14457672 0 3111 1679 +1432 p2porg 0x851b00b1... BloXroute Max Profit
14455984 6 3205 1774 +1431 0x885c17ef... BloXroute Max Profit
14456556 8 3236 1805 +1431 p2porg 0x88a53ec4... BloXroute Max Profit
14460903 12 3298 1868 +1430 0x850b00e0... BloXroute Max Profit
14454642 1 3124 1695 +1429 p2porg 0x850b00e0... BloXroute Regulated
14454837 0 3108 1679 +1429 whale_0xfd67 0x851b00b1... Ultra Sound
14457852 5 3186 1758 +1428 whale_0x8914 0x88857150... Ultra Sound
14460416 11 3280 1852 +1428 figment 0xb26f9666... Titan Relay
14458148 6 3201 1774 +1427 whale_0x8ebd 0xb26f9666... BloXroute Max Profit
14458083 11 3279 1852 +1427 p2porg 0x88a53ec4... BloXroute Regulated
14456882 0 3105 1679 +1426 whale_0x23be 0x851b00b1... BloXroute Max Profit
14459872 9 3245 1821 +1424 whale_0x8914 0x885c17ef... Titan Relay
14457665 3 3149 1727 +1422 kraken 0x8527d16c... EthGas
14455114 0 3101 1679 +1422 whale_0x8ebd 0x88857150... Ultra Sound
14455745 3 3148 1727 +1421 kraken 0xb26f9666... EthGas
14457069 5 3179 1758 +1421 nethermind_lido 0x88a53ec4... BloXroute Regulated
14456442 0 3099 1679 +1420 0x88a53ec4... BloXroute Max Profit
14455160 0 3098 1679 +1419 blockdaemon_lido 0x8527d16c... Ultra Sound
14460524 0 3098 1679 +1419 p2porg 0x851b00b1... BloXroute Max Profit
14459972 2 3128 1711 +1417 figment 0xb26f9666... Titan Relay
14456443 5 3173 1758 +1415 p2porg 0xb67eaa5e... Titan Relay
14458183 0 3094 1679 +1415 whale_0xedc6 0x851b00b1... BloXroute Max Profit
14454709 3 3140 1727 +1413 bitstamp 0x850b00e0... Flashbots
14455139 0 3090 1679 +1411 p2porg_lido 0x823e0146... BloXroute Max Profit
14457891 1 3105 1695 +1410 p2porg 0x853b0078... BloXroute Regulated
14456932 0 3088 1679 +1409 whale_0x8ebd 0xb67eaa5e... BloXroute Regulated
14454940 0 3087 1679 +1408 stakingfacilities_lido 0x851b00b1... BloXroute Max Profit
14458620 8 3212 1805 +1407 figment 0x85fb0503... BloXroute Max Profit
14461045 0 3086 1679 +1407 blockdaemon_lido 0xb26f9666... Ultra Sound
14459002 6 3180 1774 +1406 whale_0x8ebd 0x88a53ec4... BloXroute Max Profit
14460684 5 3164 1758 +1406 0x850b00e0... BloXroute Regulated
14460200 1 3101 1695 +1406 p2porg_lido 0xb26f9666... Titan Relay
14459321 9 3226 1821 +1405 whale_0xfd67 0x850b00e0... Ultra Sound
14457695 0 3084 1679 +1405 nethermind_lido 0x851b00b1... BloXroute Max Profit
14460956 0 3084 1679 +1405 p2porg 0x851b00b1... BloXroute Max Profit
14456182 9 3224 1821 +1403 p2porg 0x850b00e0... BloXroute Max Profit
14460771 2 3113 1711 +1402 0x85fb0503... BloXroute Max Profit
14456463 1 3097 1695 +1402 blockdaemon 0x8527d16c... Ultra Sound
14457057 6 3175 1774 +1401 whale_0x8ebd 0xb26f9666... BloXroute Regulated
14456196 2 3112 1711 +1401 p2porg 0x850b00e0... Flashbots
14454511 9 3221 1821 +1400 coinbase 0xb67eaa5e... BloXroute Max Profit
14455957 2 3111 1711 +1400 p2porg 0x850b00e0... BloXroute Regulated
14457813 0 3078 1679 +1399 p2porg 0x851b00b1... BloXroute Max Profit
14460876 1 3093 1695 +1398 p2porg_lido 0xb26f9666... Titan Relay
14460791 0 3077 1679 +1398 p2porg 0x853b0078... BloXroute Max Profit
14459277 0 3076 1679 +1397 whale_0xedc6 0x851b00b1... BloXroute Max Profit
14457934 6 3170 1774 +1396 p2porg 0xb26f9666... Titan Relay
14454998 0 3075 1679 +1396 p2porg 0x850b00e0... BloXroute Max Profit
14454288 11 3247 1852 +1395 whale_0xfd67 0x88a53ec4... BloXroute Max Profit
14455471 4 3137 1742 +1395 whale_0x8ebd 0xb26f9666... BloXroute Max Profit
14460829 0 3072 1679 +1393 whale_0x8ebd 0x856b0004... BloXroute Max Profit
14455771 0 3071 1679 +1392 stakingfacilities_lido 0x823e0146... Ultra Sound
14456102 1 3086 1695 +1391 p2porg_lido 0x8527d16c... Ultra Sound
14455625 4 3133 1742 +1391 p2porg 0x850b00e0... Flashbots
14457190 6 3164 1774 +1390 blockdaemon_lido 0xb26f9666... Titan Relay
14459849 0 3069 1679 +1390 kiln 0xb26f9666... Titan Relay
14458622 20 3383 1994 +1389 luno 0xb26f9666... Titan Relay
14460602 8 3194 1805 +1389 coinbase 0x8527d16c... Ultra Sound
14454486 1 3084 1695 +1389 whale_0x8ebd 0x8527d16c... Ultra Sound
14454086 6 3162 1774 +1388 whale_0x8ebd 0xb67eaa5e... BloXroute Regulated
14454982 2 3099 1711 +1388 coinbase 0x88a53ec4... BloXroute Regulated
14455534 3 3114 1727 +1387 0x85fb0503... BloXroute Max Profit
14457759 6 3161 1774 +1387 figment 0x853b0078... BloXroute Max Profit
14455664 2 3098 1711 +1387 p2porg_lido 0x853b0078... Ultra Sound
14454387 8 3192 1805 +1387 coinbase 0x88a53ec4... BloXroute Regulated
14458742 0 3066 1679 +1387 whale_0x8ebd 0x8527d16c... Ultra Sound
14456105 1 3080 1695 +1385 coinbase 0xb67eaa5e... BloXroute Regulated
14456822 4 3126 1742 +1384 whale_0x8ebd 0xb4ce6162... Ultra Sound
14456036 1 3078 1695 +1383 whale_0x8ebd 0x856b0004... BloXroute Max Profit
14458170 0 3062 1679 +1383 p2porg 0x99cba505... BloXroute Regulated
14456612 6 3153 1774 +1379 kiln 0x8527d16c... Ultra Sound
14460196 0 3057 1679 +1378 p2porg 0xb26f9666... BloXroute Regulated
14459838 0 3057 1679 +1378 p2porg_lido 0x823e0146... Titan Relay
14459257 1 3072 1695 +1377 whale_0x8ebd 0x8527d16c... Ultra Sound
14458450 0 3056 1679 +1377 p2porg 0x857b0038... BloXroute Regulated
14457002 0 3055 1679 +1376 0x851b00b1... BloXroute Max Profit
14454887 5 3133 1758 +1375 whale_0x8ebd 0xb4ce6162... Ultra Sound
14461060 4 3116 1742 +1374 0x856b0004... BloXroute Max Profit
14458973 6 3146 1774 +1372 kiln 0x88a53ec4... BloXroute Regulated
14459268 1 3067 1695 +1372 whale_0x8ebd 0x8527d16c... Ultra Sound
14459491 3 3098 1727 +1371 p2porg_lido 0x8527d16c... Ultra Sound
14458283 1 3066 1695 +1371 p2porg_lido 0x88857150... Ultra Sound
14460161 6 3144 1774 +1370 p2porg 0x8527d16c... Ultra Sound
14455646 6 3143 1774 +1369 coinbase 0xb67eaa5e... BloXroute Max Profit
14455345 1 3064 1695 +1369 coinbase 0x8527d16c... Ultra Sound
14459324 0 3048 1679 +1369 0x857b0038... BloXroute Max Profit
14457299 1 3063 1695 +1368 coinbase 0x856b0004... BloXroute Max Profit
14454429 4 3110 1742 +1368 whale_0x8ebd 0x88857150... Ultra Sound
14454264 0 3047 1679 +1368 whale_0xedc6 0x8db2a99d... BloXroute Max Profit
14458069 6 3141 1774 +1367 p2porg 0xb26f9666... Titan Relay
14454501 8 3172 1805 +1367 bitstamp 0x88a53ec4... BloXroute Regulated
14457312 5 3123 1758 +1365 coinbase 0xb26f9666... Titan Relay
14456466 0 3044 1679 +1365 0x851b00b1... BloXroute Max Profit
14458507 3 3091 1727 +1364 0x8527d16c... Ultra Sound
14459076 7 3153 1789 +1364 0xb67eaa5e... BloXroute Max Profit
14455341 5 3121 1758 +1363 whale_0x8ebd 0x853b0078... BloXroute Max Profit
14456475 2 3073 1711 +1362 whale_0x8ebd 0x8527d16c... Ultra Sound
14460840 1 3057 1695 +1362 p2porg_lido 0x8527d16c... Ultra Sound
14456522 1 3056 1695 +1361 coinbase 0x8527d16c... Ultra Sound
14460460 9 3181 1821 +1360 whale_0x8ebd 0x88857150... Ultra Sound
14456485 1 3055 1695 +1360 p2porg_lido 0x8527d16c... Ultra Sound
14454056 3 3086 1727 +1359 stakingfacilities_lido 0x8db2a99d... BloXroute Max Profit
14455893 1 3054 1695 +1359 coinbase 0x8527d16c... Ultra Sound
14459484 0 3038 1679 +1359 whale_0x8ebd 0x8527d16c... Ultra Sound
14456446 0 3038 1679 +1359 p2porg_lido 0x8527d16c... Ultra Sound
14457370 1 3053 1695 +1358 coinbase 0x8527d16c... Ultra Sound
14460310 10 3194 1837 +1357 p2porg 0x853b0078... BloXroute Regulated
14457786 5 3115 1758 +1357 Local Local
14455522 5 3114 1758 +1356 p2porg_lido 0x8527d16c... Ultra Sound
14460329 8 3161 1805 +1356 whale_0x8ebd 0x8527d16c... Ultra Sound
14457943 0 3035 1679 +1356 0xb26f9666... Titan Relay
14457600 18 3317 1962 +1355 whale_0x8914 0xb67eaa5e... Titan Relay
14455459 0 3034 1679 +1355 p2porg 0x856b0004... BloXroute Max Profit
14456507 4 3096 1742 +1354 coinbase 0x853b0078... BloXroute Max Profit
14460734 1 3048 1695 +1353 whale_0x8ebd 0xb26f9666... BloXroute Max Profit
14459269 1 3048 1695 +1353 p2porg_lido 0x8527d16c... Ultra Sound
14454025 1 3048 1695 +1353 coinbase 0x88a53ec4... BloXroute Regulated
14459606 0 3032 1679 +1353 0xb26f9666... BloXroute Max Profit
14456480 10 3189 1837 +1352 whale_0x8ebd 0x88a53ec4... BloXroute Max Profit
14457121 6 3126 1774 +1352 whale_0x8ebd 0xb67eaa5e... BloXroute Max Profit
14459699 0 3031 1679 +1352 whale_0x8ebd 0xb7c5e609... Flashbots
14459421 6 3125 1774 +1351 blockdaemon 0x8527d16c... Ultra Sound
14457347 0 3030 1679 +1351 p2porg_lido 0x8527d16c... Ultra Sound
14455222 8 3155 1805 +1350 figment 0xb67eaa5e... Titan Relay
14457603 1 3045 1695 +1350 0x8527d16c... Ultra Sound
14460513 4 3092 1742 +1350 p2porg 0x853b0078... Ultra Sound
14460891 6 3122 1774 +1348 coinbase 0x88a53ec4... BloXroute Regulated
14460901 0 3027 1679 +1348 whale_0x8ebd 0x8527d16c... Ultra Sound
14459684 0 3027 1679 +1348 p2porg_lido 0x853b0078... Ultra Sound
14459561 5 3105 1758 +1347 whale_0x8ebd 0x8527d16c... Ultra Sound
14455515 1 3042 1695 +1347 p2porg_lido 0x8527d16c... Ultra Sound
14458527 1 3042 1695 +1347 p2porg_lido 0x8527d16c... Ultra Sound
14457314 6 3120 1774 +1346 coinbase 0x8527d16c... Ultra Sound
14454073 0 3024 1679 +1345 p2porg_lido 0x8527d16c... Ultra Sound
14459982 3 3071 1727 +1344 coinbase 0x8527d16c... Ultra Sound
14459617 1 3039 1695 +1344 coinbase 0x8527d16c... Ultra Sound
14458119 14 3243 1899 +1344 coinbase 0xb67eaa5e... BloXroute Max Profit
14457506 3 3070 1727 +1343 p2porg_lido 0x8527d16c... Ultra Sound
14460066 1 3037 1695 +1342 coinbase 0x8db2a99d... BloXroute Max Profit
14458719 7 3130 1789 +1341 whale_0x8914 0x88a53ec4... Aestus
14456674 2 3051 1711 +1340 p2porg_lido 0x8db2a99d... BloXroute Max Profit
14455007 9 3160 1821 +1339 whale_0x8914 0x88857150... Ultra Sound
14459983 5 3097 1758 +1339 whale_0x8ebd 0x88857150... Ultra Sound
14454396 0 3017 1679 +1338 whale_0x8ebd 0xb26f9666... BloXroute Regulated
14455761 0 3017 1679 +1338 whale_0x8ebd 0xb72cae2f... Ultra Sound
14458516 2 3048 1711 +1337 whale_0x8ebd 0x8527d16c... Ultra Sound
14459761 1 3031 1695 +1336 p2porg 0x853b0078... BloXroute Max Profit
14454990 1 3031 1695 +1336 kiln 0x853b0078... BloXroute Max Profit
14460012 2 3045 1711 +1334 coinbase 0x856b0004... BloXroute Max Profit
14457739 4 3076 1742 +1334 coinbase 0x8527d16c... Ultra Sound
14454182 5 3091 1758 +1333 whale_0x8ebd 0xb67eaa5e... BloXroute Regulated
14454873 7 3122 1789 +1333 kiln 0xb26f9666... BloXroute Max Profit
14454390 0 3012 1679 +1333 p2porg 0xac23f8cc... Flashbots
14454613 3 3059 1727 +1332 p2porg_lido 0x8527d16c... Ultra Sound
14457812 5 3090 1758 +1332 0x8527d16c... Ultra Sound
14456841 7 3120 1789 +1331 upbit 0x88a53ec4... BloXroute Max Profit
14455484 0 3010 1679 +1331 kiln 0x823e0146... BloXroute Max Profit
14458021 1 3025 1695 +1330 kiln 0x8527d16c... Ultra Sound
14457673 20 3323 1994 +1329 whale_0xdc8d 0x8527d16c... Ultra Sound
14459786 0 3008 1679 +1329 whale_0x8ebd 0x8db2a99d... BloXroute Max Profit
14456532 3 3055 1727 +1328 p2porg_lido 0x8527d16c... Ultra Sound
14456423 5 3086 1758 +1328 0x8527d16c... Ultra Sound
14459001 4 3070 1742 +1328 whale_0x8ebd 0xb26f9666... Titan Relay
14455109 3 3054 1727 +1327 coinbase 0x856b0004... BloXroute Max Profit
14456682 1 3022 1695 +1327 coinbase 0x8527d16c... Ultra Sound
14457931 0 3006 1679 +1327 whale_0x8ebd 0xb26f9666... BloXroute Max Profit
14458342 5 3084 1758 +1326 kraken 0x8a850621... EthGas
14460517 0 3005 1679 +1326 kiln 0x8527d16c... Ultra Sound
14454872 5 3083 1758 +1325 p2porg_lido 0x8527d16c... Ultra Sound
14455834 8 3130 1805 +1325 p2porg_lido 0x853b0078... BloXroute Max Profit
14456121 1 3019 1695 +1324 0xb26f9666... BloXroute Regulated
14459271 13 3207 1884 +1323 whale_0x4b5e 0x88857150... Ultra Sound
14458587 6 3097 1774 +1323 p2porg 0x8db2a99d... Titan Relay
14459191 0 3002 1679 +1323 0xba003e46... BloXroute Max Profit
14459004 3 3049 1727 +1322 p2porg_lido 0x8527d16c... Ultra Sound
14460479 6 3096 1774 +1322 p2porg_lido 0xa03781b9... Ultra Sound
14455199 1 3017 1695 +1322 nethermind_lido 0x823e0146... Flashbots
14459619 4 3064 1742 +1322 coinbase 0x8527d16c... Ultra Sound
14460678 0 3001 1679 +1322 p2porg 0x8db2a99d... Ultra Sound
14456826 13 3205 1884 +1321 whale_0x8ebd 0x8527d16c... Ultra Sound
14459541 1 3016 1695 +1321 whale_0x8ebd 0x8527d16c... Ultra Sound
14457026 0 3000 1679 +1321 p2porg_lido 0x8527d16c... Ultra Sound
14459197 0 3000 1679 +1321 coinbase 0xb26f9666... BloXroute Regulated
14457041 11 3172 1852 +1320 coinbase 0xb4ce6162... Ultra Sound
14455216 3 3046 1727 +1319 p2porg_lido 0x88857150... Ultra Sound
14457696 2 3030 1711 +1319 coinbase 0x8527d16c... Ultra Sound
14459596 0 2998 1679 +1319 p2porg_lido 0x8db2a99d... Ultra Sound
14460207 1 3013 1695 +1318 whale_0x8ebd 0x853b0078... BloXroute Max Profit
14457426 0 2997 1679 +1318 whale_0x8ebd 0x8db2a99d... Ultra Sound
14454931 6 3089 1774 +1315 0x8527d16c... Ultra Sound
14459283 1 3010 1695 +1315 0x8527d16c... Ultra Sound
14459246 7 3104 1789 +1315 whale_0x8ebd 0xb4ce6162... Ultra Sound
14455828 9 3135 1821 +1314 whale_0x8ebd 0xb26f9666... BloXroute Regulated
14455024 4 3056 1742 +1314 p2porg_lido 0x856b0004... Ultra Sound
14461182 0 2993 1679 +1314 coinbase 0x856b0004... BloXroute Max Profit
14457428 5 3071 1758 +1313 kiln 0x88857150... Ultra Sound
14457930 5 3071 1758 +1313 coinbase 0x8527d16c... Ultra Sound
14454044 1 3008 1695 +1313 kiln 0x856b0004... BloXroute Max Profit
14457960 10 3149 1837 +1312 whale_0x8914 0xb67eaa5e... Aestus
14457108 1 3007 1695 +1312 whale_0x8ebd 0xb4ce6162... Ultra Sound
14457480 0 2991 1679 +1312 coinbase 0x851b00b1... BloXroute Max Profit
14459030 6 3085 1774 +1311 coinbase 0x8527d16c... Ultra Sound
14456939 2 3022 1711 +1311 coinbase 0x8527d16c... Ultra Sound
14459155 0 2990 1679 +1311 coinbase 0x8db2a99d... Titan Relay
14457842 1 3004 1695 +1309 p2porg 0x8527d16c... Ultra Sound
14459904 3 3035 1727 +1308 gateway.fmas_lido 0x8db2a99d... Titan Relay
14455613 9 3129 1821 +1308 coinbase 0x8527d16c... Ultra Sound
14454356 5 3066 1758 +1308 whale_0x8ebd 0x8527d16c... Ultra Sound
14455518 5 3066 1758 +1308 p2porg 0x856b0004... BloXroute Max Profit
14454397 0 2987 1679 +1308 nethermind_lido 0xb26f9666... Aestus
14459024 0 2987 1679 +1308 whale_0x8ebd 0x8527d16c... Ultra Sound
14460208 0 2985 1679 +1306 whale_0x8ebd 0x856b0004... Agnostic Gnosis
14460662 9 3126 1821 +1305 coinbase 0x85fb0503... BloXroute Max Profit
14456728 1 3000 1695 +1305 coinbase 0xb26f9666... BloXroute Regulated
14458520 0 2984 1679 +1305 coinbase 0x823e0146... BloXroute Max Profit
14459071 3 3031 1727 +1304 p2porg_lido 0x823e0146... Ultra Sound
14461130 5 3062 1758 +1304 p2porg_lido 0x8527d16c... Ultra Sound
14458242 5 3062 1758 +1304 p2porg_lido 0x8527d16c... Ultra Sound
14454908 5 3062 1758 +1304 coinbase 0x8527d16c... Ultra Sound
14459798 1 2999 1695 +1304 coinbase 0x8527d16c... Ultra Sound
14460820 0 2983 1679 +1304 everstake 0xb26f9666... Titan Relay
14456776 5 3061 1758 +1303 whale_0x8ebd 0x8527d16c... Ultra Sound
14456916 6 3076 1774 +1302 whale_0x8ebd 0xb26f9666... BloXroute Max Profit
14457398 4 3044 1742 +1302 p2porg 0x856b0004... BloXroute Max Profit
14455284 0 2981 1679 +1302 whale_0x8ebd 0x856b0004... BloXroute Max Profit
14458370 2 3011 1711 +1300 p2porg 0x823e0146... Flashbots
14459974 5 3058 1758 +1300 whale_0x8ebd 0xb4ce6162... Ultra Sound
14458165 10 3136 1837 +1299 whale_0x8ebd 0xb4ce6162... Ultra Sound
14457773 9 3120 1821 +1299 p2porg 0x853b0078... BloXroute Regulated
14460225 1 2994 1695 +1299 kraken 0xb26f9666... EthGas
14457442 1 2994 1695 +1299 kiln 0x8527d16c... Ultra Sound
14454711 0 2978 1679 +1299 stakingfacilities_lido 0x8db2a99d... Ultra Sound
14459951 3 3025 1727 +1298 kiln 0x88a53ec4... BloXroute Regulated
14458809 7 3087 1789 +1298 whale_0x8ebd 0x856b0004... BloXroute Max Profit
14456594 0 2977 1679 +1298 coinbase 0x8527d16c... Ultra Sound
14454352 3 3024 1727 +1297 bitstamp 0x850b00e0... BloXroute Max Profit
14461188 5 3054 1758 +1296 whale_0x8ebd 0x853b0078... BloXroute Max Profit
14455108 1 2991 1695 +1296 coinbase 0x8527d16c... Ultra Sound
14457022 1 2990 1695 +1295 kiln 0x853b0078... BloXroute Max Profit
14455906 0 2974 1679 +1295 whale_0x8ebd 0x8527d16c... Ultra Sound
14459045 8 3099 1805 +1294 coinbase 0xb26f9666... BloXroute Regulated
14460220 0 2973 1679 +1294 coinbase 0xb26f9666... BloXroute Max Profit
14460240 3 3020 1727 +1293 coinbase 0x8527d16c... Ultra Sound
14454704 6 3067 1774 +1293 nethermind_lido 0x853b0078... BloXroute Max Profit
14456874 5 3050 1758 +1292 coinbase Local Local
14461133 0 2971 1679 +1292 kiln 0x856b0004... BloXroute Max Profit
14459398 11 3143 1852 +1291 whale_0x8ebd 0xb26f9666... Titan Relay
14458007 2 3001 1711 +1290 kiln 0xb7c5c39a... BloXroute Max Profit
14455264 7 3079 1789 +1290 everstake 0x88857150... Ultra Sound
14454155 5 3047 1758 +1289 everstake 0xb7c5e609... BloXroute Max Profit
14454921 18 3251 1962 +1289 coinbase 0x88a53ec4... BloXroute Max Profit
14455965 4 3031 1742 +1289 0xb72cae2f... Ultra Sound
14455887 2 2999 1711 +1288 whale_0x8ebd 0xb26f9666... BloXroute Max Profit
14455801 7 3077 1789 +1288 whale_0x8ebd 0x8527d16c... Ultra Sound
14460815 0 2966 1679 +1287 0x856b0004... BloXroute Max Profit
14458720 5 3044 1758 +1286 coinbase 0x8527d16c... Ultra Sound
14456424 0 2965 1679 +1286 whale_0x8ebd 0x856b0004... Ultra Sound
14458920 10 3122 1837 +1285 coinbase 0x8527d16c... Ultra Sound
14459394 10 3121 1837 +1284 kiln 0x88857150... Ultra Sound
14461148 9 3105 1821 +1284 coinbase 0x8527d16c... Ultra Sound
14458581 5 3042 1758 +1284 p2porg_lido 0x8527d16c... Ultra Sound
14457732 3 3010 1727 +1283 whale_0x8ebd 0x8527d16c... Ultra Sound
14458548 5 3041 1758 +1283 whale_0x8ebd 0xb26f9666... Titan Relay
14454809 6 3056 1774 +1282 stakingfacilities_lido 0x853b0078... BloXroute Max Profit
14461029 12 3150 1868 +1282 coinbase 0x8527d16c... Ultra Sound
14455683 6 3055 1774 +1281 kiln 0x8527d16c... Ultra Sound
14454615 0 2958 1679 +1279 bitstamp 0x88a53ec4... BloXroute Max Profit
14456416 6 3052 1774 +1278 everstake 0x8527d16c... Ultra Sound
14456982 6 3051 1774 +1277 coinbase 0x8527d16c... Ultra Sound
14454157 1 2972 1695 +1277 coinbase 0x856b0004... Ultra Sound
14455336 0 2956 1679 +1277 kiln 0x851b00b1... Flashbots
14454505 2 2987 1711 +1276 kiln 0x8527d16c... Ultra Sound
14456003 1 2971 1695 +1276 everstake 0x8527d16c... Ultra Sound
14455849 0 2955 1679 +1276 everstake 0x851b00b1... BloXroute Max Profit
14458216 0 2955 1679 +1276 p2porg 0x99cba505... BloXroute Max Profit
14460216 7 3064 1789 +1275 whale_0x8ebd 0xb26f9666... BloXroute Regulated
14457738 7 3064 1789 +1275 coinbase 0x8527d16c... Ultra Sound
14459970 6 3048 1774 +1274 coinbase 0x856b0004... BloXroute Max Profit
14460364 19 3252 1978 +1274 p2porg_lido 0x8527d16c... Ultra Sound
14455133 1 2969 1695 +1274 kiln 0x8527d16c... Ultra Sound
14460575 4 3016 1742 +1274 kiln 0xb26f9666... BloXroute Max Profit
14454466 3 3000 1727 +1273 coinbase 0xb26f9666... BloXroute Regulated
14457326 11 3125 1852 +1273 p2porg 0x853b0078... BloXroute Regulated
14454858 10 3109 1837 +1272 kiln 0xb26f9666... BloXroute Max Profit
14459521 3 2999 1727 +1272 coinbase 0x8527d16c... Ultra Sound
14458026 5 3030 1758 +1272 kiln 0x8527d16c... Ultra Sound
14454135 5 3030 1758 +1272 kiln 0x853b0078... BloXroute Max Profit
14458662 0 2951 1679 +1272 coinbase 0xb26f9666... BloXroute Regulated
14458873 8 3076 1805 +1271 coinbase 0x8527d16c... Ultra Sound
14455826 10 3107 1837 +1270 p2porg_lido 0x8527d16c... Ultra Sound
14459144 5 3028 1758 +1270 kiln 0x8527d16c... Ultra Sound
14459853 1 2965 1695 +1270 everstake 0xb26f9666... Titan Relay
14460514 0 2949 1679 +1270 everstake 0xb26f9666... Titan Relay
14457599 13 3153 1884 +1269 coinbase 0x856b0004... BloXroute Max Profit
14459580 6 3043 1774 +1269 coinbase 0x8527d16c... Ultra Sound
14456609 12 3137 1868 +1269 coinbase 0xb72cae2f... Ultra Sound
14456749 8 3074 1805 +1269 p2porg 0x8527d16c... Ultra Sound
14459575 4 3010 1742 +1268 kiln 0x8527d16c... Ultra Sound
14456398 0 2947 1679 +1268 coinbase 0x8527d16c... Ultra Sound
14459895 6 3041 1774 +1267 p2porg 0x856b0004... Ultra Sound
14460403 6 3041 1774 +1267 whale_0x8ebd 0xb4ce6162... Ultra Sound
14457129 7 3056 1789 +1267 p2porg 0x85fb0503... BloXroute Max Profit
14454045 6 3037 1774 +1263 everstake 0xb67eaa5e... BloXroute Regulated
14454307 5 3021 1758 +1263 solo_stakers 0x856b0004... BloXroute Max Profit
14454566 6 3036 1774 +1262 kiln 0xb67eaa5e... BloXroute Max Profit
14455609 1 2957 1695 +1262 everstake 0x88857150... Ultra Sound
14458321 8 3066 1805 +1261 p2porg 0x823e0146... Titan Relay
14457275 8 3066 1805 +1261 p2porg 0x853b0078... BloXroute Max Profit
14460881 1 2956 1695 +1261 kiln 0xb67eaa5e... BloXroute Max Profit
14458941 0 2940 1679 +1261 kiln 0x853b0078... BloXroute Max Profit
14457171 1 2955 1695 +1260 kiln 0x8527d16c... Ultra Sound
14459253 10 3096 1837 +1259 p2porg_lido 0x8527d16c... Ultra Sound
14457874 9 3080 1821 +1259 coinbase 0x8527d16c... Ultra Sound
Total anomalies: 468

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