Skip to main content
Dune’s staking tables provide comprehensive data on Ethereum’s Proof-of-Stake beacon chain — validator deposits, withdrawals, and entity identification. These tables map staking activity to known entities like Lido, Coinbase, Rocket Pool, and dozens of others.
Maintained by: Dune · Refresh: ~30 min · Chain: Ethereum only

Get This Data

Access staking data via API, Datashare, or the Dune App.

Available Tables

When to Use These Tables

  • Track ETH staking deposits and withdrawals over time
  • Analyze staking entity market share (Lido vs Coinbase vs solo stakers)
  • Monitor validator activity and withdrawal patterns
  • Identify which entities control staking infrastructure
  • Assess staking concentration risk

Coverage

Chain: Ethereum only (beacon chain staking is Ethereum-specific) Entity identification via: Depositor addresses, smart contract analysis, transaction origin addresses, withdrawal credentials, batch contract patterns, and protocol-specific identification for Coinbase, Binance, Lido, Rocket Pool, and many others.

Query Performance

staking_ethereum.deposits is an incremental table. Filter on block_time ranges for best performance.
-- ✅ Good: time-bounded
SELECT * FROM staking_ethereum.deposits
WHERE block_time >= DATE '2025-01-01'

-- ❌ Slow: full table scan
SELECT * FROM staking_ethereum.deposits
WHERE entity = 'Lido'

Methodology

Staking tables are maintained by Dune (source code). They decode events from Ethereum’s beacon chain deposit contract, enrich them with entity identification from multiple sources (on-chain traces, known address mappings, withdrawal credential analysis), and join with beacon chain validator data for withdrawal tracking. Entity identification uses a layered approach: first matching depositor addresses to known entities, then analyzing smart contract patterns and withdrawal credentials, and finally using batch deposit heuristics for staking pools.

Example Queries

Staking entity market share:
SELECT
  entity,
  entity_category,
  SUM(amount_staked) AS total_eth_staked,
  COUNT(*) AS num_deposits
FROM staking_ethereum.deposits
GROUP BY 1, 2
ORDER BY 3 DESC
LIMIT 20
Monthly staking deposits vs withdrawals:
SELECT
  date_trunc('month', block_time) AS month,
  SUM(amount_staked) AS eth_deposited,
  SUM(amount_full_withdrawn) AS eth_full_withdrawn,
  SUM(amount_partial_withdrawn) AS eth_partial_withdrawn,
  SUM(amount_staked) - SUM(amount_full_withdrawn) - SUM(amount_partial_withdrawn) AS net_staking_flow
FROM staking_ethereum.flows
WHERE block_time >= DATE '2024-01-01'
GROUP BY 1
ORDER BY 1
  • labels.addresses — Additional address labels beyond staking entities
  • cex.addresses — Identifies CEX-controlled addresses, useful for understanding CEX staking