The beacon.validator.consolidation_queue_latest model provides the current snapshot of validators pending consolidation (EIP-7251, Pectra upgrade), along with an estimated processing timestamp for each entry.
Consolidation lets a validator with execution withdrawal credentials (source) merge its balance into a validator with compounding credentials (target), effectively raising the target’s effective balance above 32 ETH. This model is derived from the beacon state’s authoritative pending_consolidations list (beacon.raw.pending_consolidations), enriched with validator state from beacon.validator.balances_latest and request provenance from beacon.raw.consolidations, and is updated approximately every 30 minutes.
This is batch data snapshot with approximate consolidation processing times, not a live queue.
The queue can be up to ~15-30 minutes stale relative to chain head, and every
est_*/hours_until_* timing field is a best-effort estimate, not a
guarantee. Do not treat this table as real-time or exact — see Caveats below
before building alerts or SLAs on it.
Schema
Queue status semantics
Processing mirrors the protocol’s process_pending_consolidations() loop, which walks the queue in order and stops at the first entry that isn’t yet withdrawable:
Caveats
- Snapshot, not a live feed — expect ~30 minute latency. This is the queue as of the most recent beacon state slot with a complete set of pending-consolidation rows ingested (validated by comparing ingested row count against the beacon node’s reported
pending_consolidation_count for that slot), and the model itself is refreshed on an ~30 minute cadence. If ingestion lags further, the snapshot can be even further behind chain head — always check slot_timestamp before relying on absolute counts or timings, and don’t use this table for anything requiring sub-epoch or real-time accuracy.
request_slot/request_timestamp can be NULL. These come from a best-effort join to beacon.raw.consolidations (the execution-layer request event), matched on source/target pubkey with the earliest matching request preferred. If the originating request predates the indexed history window, or a match can’t be uniquely resolved, these fields are null — this does not affect queue position or processing estimates, which come from the queue itself.
- Post-Pectra only. Consolidation didn’t exist before the Pectra upgrade — there is no historical backfill prior to it, and the queue is only ever non-empty from that point forward.
- Once processed, an entry disappears from this table. This model only shows what is currently pending — it is not a historical log of consolidations.
- All timing fields are approximate, not guarantees.
est_exit_timestamp, est_processing_timestamp, and hours_until_processing assume no further slashing, no new consolidations displacing queue dynamics, and a constant ~12s slot time. Actual processing can shift if upstream entries get slashed (removed), if new epochs process faster/slower than assumed, or if the underlying snapshot itself is stale — treat these as directional estimates, not precise predictions, and re-query close to the time you need an answer rather than caching results.
Example Query
This query shows the estimated processing timestamp and queue status for a given source validator.