Skip to main content
Breaking Schema ChangesEthereum’s Glamsterdam upgrade introduces EIP-7732: Enshrined Proposer-Builder Separation (ePBS), which fundamentally changes how beacon blocks are structured.Action Required: Queries using execution_payload, blob_kzg_commitments, or execution_requests fields in beacon.raw.blocks and beacon_hoodi.raw.blocks will return NULL values for all slots after the Glamsterdam activation.

Devnet Progress Updates

We track the state of the Glamsterdam devnet here on each check-in, most recent first, so you can see what changed between updates rather than just the current status. Source: Forkcast — Glamsterdam.
Pending — no verified update yet. The last confirmed status is the July 10, 2026 entry below; check back or see Forkcast for the latest devnet number and client readiness before relying on this page for current status.
Glamsterdam remains in Devnet. No change to the schema plan below — actively monitoring and will implement schema changes once ePBS is live on Hoodi testnet.

What Is Changing

The Glamsterdam upgrade restructures how beacon blocks are produced by enshrining the proposer-builder separation protocol directly into the consensus layer.

Key Change: Block Body Structure

Before Glamsterdam, a beacon block body contains the full execution payload with transaction data:
After Glamsterdam, the proposer commits only a bid from the builder — the execution payload is revealed separately:
The execution_payload and blob_kzg_commitments fields are absent from the block body for all slots after the fork — blob_kzg_commitments moves into the bid itself rather than the revealed payload. execution_requests is also gone from its old position, though the body retains a parent_execution_requests field (the previous slot’s requests, kept for verification) — it isn’t a clean removal.
builder_index is an index into a new, separate builder registry (beacon.raw.builders), not a validator index. Builders register and exit independently of the validator set via BuilderDepositRequest / BuilderExitRequest, and hold their own balance, deposit_epoch, and withdrawable_epoch. Do not join builder_index against beacon.raw.validators.
Why This MattersePBS separates the roles of block proposers and block builders at the protocol level. Proposers commit to a builder’s bid without seeing the full payload contents, which is then attested by a Payload Timeliness Committee (PTC). This reduces MEV centralization risks and improves censorship resistance.

Impact to Allium Tables

beacon.raw.blocks — Breaking Changes

The following columns will be affected for all slots after Glamsterdam activation:
execution_requests isn’t a clean removal: the block body retains a parent_execution_requests field carrying the previous slot’s requests for verification. The current-slot requests move to the ExecutionPayloadEnvelope, gossiped separately by the builder — see the payload-envelope gap noted under New Tables. The ExecutionRequests schema also grows two new request types in Gloas, builder_deposits and builder_exits, alongside the existing deposits/withdrawals/consolidations.
Migration Path: eth1_block_hash, eth1_block_number, and eth1_block_timestamp stay populated — Allium resolves these internally via a join to execution-layer data rather than reading them off the beacon block body, so no query changes are needed for those three columns. Use the new beacon.raw.execution_payload_bids table (see below) for builder and bid-specific information (builder identity, bid value, gas limit) that has no other source post-fork.

beacon.raw.block_rewards — Additive Changes

New columns will be added to provide explicit builder payment tracking: No Breaking Changes: All existing columns remain available. The new builder_payment field maps to the bid’s value field (consensus-layer payment to the proposer) — it is distinct from execution_payment, the amount the builder pays at the execution layer to fee_recipient (see beacon.raw.execution_payload_bids below). builder_payment provides explicit execution reward attribution, replacing the current fee-recipient inference method for post-fork slots.

beacon.validator.consensus_income — No Changes

This view aggregates consensus-layer rewards only (attestations, sync committee, block proposals). No structural changes are expected.

New Tables

beacon.raw.execution_payload_bids

Provides one row per slot containing the builder’s committed bid from the beacon block body. Use this table to look up execution block hashes and builder information for post-Glamsterdam slots. Unique Key: slot_number
Gap: this table covers the bid only — block hash, builder, and committed values. It does not carry the actual transactions, withdrawals, gas usage, or state/receipts roots, since those are only available once the builder reveals the SignedExecutionPayloadEnvelope after the block. Allium does not yet have a planned table for the revealed payload (tentatively beacon.raw.execution_payload_envelopes); until one ships, post-fork transaction/withdrawal data has no replacement source in Allium tables.

beacon.raw.payload_attestations

Provides one row per Payload Timeliness Committee (PTC) attestation, recording whether the builder revealed the execution payload on time. Unique Key: slot_number

beacon.raw.builders

Provides one row per registered builder, tracking the new builder lifecycle introduced in Gloas. Builders register and exit independently of the validator set via BuilderDepositRequest / BuilderExitRequest, and hold their own balance separate from any validator. Unique Key: builder_index

Migration Timeline

Additive-First StrategyAllium follows an additive-first migration approach: New columns and tables appear before old columns are deprecated. Deprecated fields return NULL for post-fork slots — columns are not dropped. All changes are live on beacon_hoodi testnet ≥4 weeks before mainnet. Historical data (pre-fork slots) remains unchanged.

Action Items

Deadlines are keyed to devnet/testnet/mainnet milestones rather than fixed calendar dates — see Devnet Progress Updates for the current schedule, since Glamsterdam has slipped past its original April/May 2026 estimates.

Additional Notes

EIP-7928 (Block-level Access Lists)

EIP-7928 is included in the Glamsterdam upgrade. The Gloas ExecutionPayload container itself gains a block_access_list field (plus a slot_number field), so this is not purely an execution-layer-internal change — once Allium models the revealed payload (see the execution_payload_envelopes gap above), block_access_list should be included as a column.

Reference Documentation

Support

If you have questions about migrating your queries or need assistance testing against Hoodi testnet data, please contact the Allium support team.
Last checked: September 9, 2026 — see Devnet Progress Updates for change history.