Timeline update (October 24, 2026): Glamsterdam is delayed. The Hoodi testnet activation originally scheduled for October 26, 2026 has been postponed while Ethereum core developers review how the proposed gas-accounting changes (EIP-8037) interact with existing smart contracts. No replacement date has been announced. The schema changes described on this page will take effect later than previously expected. Nothing changes in your data or queries today. We are monitoring the situation and will update this page as the timeline firms up. See the Ethereum Foundation announcement for details.
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.October 24, 2026
October 24, 2026
Hoodi activation postponed. The October 26, 2026 Hoodi activation was removed from the schedule on October 22, along with the Amsterdam (execution layer) and Gloas (consensus layer) activations on Hoodi. Core developers are assessing the interaction between the new gas-accounting rules and already-deployed contracts before setting a new date. No replacement Hoodi or mainnet date has been announced.What this means for Allium. The
beacon_hoodi and beacon schema changes below are deferred until the fork is rescheduled. Existing columns continue to be populated as they are today, and the Gloas tables remain not yet live. We will confirm the new Allium rollout timing once a Hoodi date is set, and will continue to give at least four weeks of notice on beacon_hoodi before mainnet. Source: Ethereum Foundation blog — Glamsterdam Hoodi delay.October 15, 2026
October 15, 2026
Allium schema: new block fields are columns on
raw.blocks. The three new Gloas block-body fields (signed_execution_payload_bid, payload_attestations, parent_execution_requests) are stored as columns on raw.blocks, alongside the other body fields such as attestations and deposits. There will be no separately ingested tables for data that comes from the beacon block.raw.execution_payload_bidsandraw.payload_attestationskeep their names but are now views over thoseraw.blockscolumns, likeraw.attestationsandraw.deposits.raw.execution_requestsis a view: pre-Gloas rows come fromraw.blocks.execution_requests, Gloas rows fromraw.execution_payload_envelopes.- Only data that does not come from the beacon block is ingested into its own table:
raw.execution_payload_envelopes(a separate Beacon API endpoint, and can be missing) andraw.builders(beacon state, once per epoch). builder_snapshotis renamedraw.builders: one row per builder per epoch, withbalancein ETH andraw_balancein Gwei, as inraw.balances.raw.block_rewardsgets no new columns. Builder payments are inraw.execution_payload_bids(value,execution_payment).raw.blocks.eth1_*,transaction_count,withdrawal_countandwithdrawalsstay populated after the fork, read from the revealed execution payload.raw.blocks.blob_kzg_commitmentsis NULL after the fork: the commitments move into the bid (raw.execution_payload_bids), where they are promised rather than guaranteed published.
October 6, 2026
October 6, 2026
Allium schema. The Gloas tables below (
execution_payload_bids, payload_attestations, execution_requests, builder_snapshot, execution_payload_envelopes) are built and validated. They are not yet live on beacon_hoodi or beacon mainnet; schemas may change until the Hoodi cutover.Devnet timeline (Forkcast). Forkcast lists Glamsterdam as Upcoming for 2026 with no public-testnet (Hoodi/Sepolia) or mainnet activation date set yet. The Gloas fork has so far run only on short-lived devnets:Source: Forkcast — Glamsterdam, checked October 6, 2026.
July 10, 2026
July 10, 2026
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: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 change for all slots after Glamsterdam activation:
When a builder does not reveal its payload, the slot still has a beacon block but no execution payload:
eth1_* and withdrawals are NULL and transaction_count and withdrawal_count are 0 for that slot.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 beacon.raw.execution_payload_envelopes and beacon.raw.execution_requests. The ExecutionRequests schema also grows two new request types in Gloas, builder_deposits and builder_exits, alongside the existing deposits/withdrawals/consolidations.blob_kzg_commitments moves into the builder’s bid, where it is a commitment, not proof that the blobs were published: the builder may never reveal the payload, the PTC may vote the blob data unavailable, or the next block may not build on it. Before Gloas, a block was only valid if its blobs were available, so raw.blocks.blob_kzg_commitments meant “blobs that landed”. To keep that meaning, the column is NULL after the fork rather than filled from the bid. The bid’s commitments are in beacon.raw.execution_payload_bids.blob_kzg_commitments; to count blobs that landed, join to beacon.raw.payload_attestations or beacon.raw.execution_payload_envelopes.eth1_*, transaction_count, withdrawal_count and withdrawals stay populated, so no query changes are needed for those columns. Read blob commitments from beacon.raw.execution_payload_bids instead of raw.blocks. For builder and bid information (builder identity, bid value, gas limit), use beacon.raw.execution_payload_bids, a view over the new signed_execution_payload_bid column.
beacon.raw.block_rewards — No Changes
block_rewards comes from the Beacon API rewards endpoint, which has no Gloas fields, and gets no new columns. total remains the proposer’s consensus-layer reward. The builder’s payment to the proposer is in beacon.raw.execution_payload_bids: value (paid through the beacon chain) and execution_payment (paid at the execution layer). At most one of the two is non-zero; both are 0 when the proposer built the payload itself (builder_index 18446744073709551615). Join on slot_number.
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 and Views
Tables built from fields of the beacon block are views overraw.blocks, like raw.attestations and raw.deposits. Only data from other Beacon API endpoints is ingested into its own table.
beacon.raw.execution_payload_bids
Provides one row per Gloas block with the builder’s committed bid from the beacon block body. A view over raw.blocks.signed_execution_payload_bid.
Use this table for builder information and builder payments for post-Glamsterdam slots.
Unique Key: slot_number
This table covers the bid only — block hash, builder, and committed values. Transactions, withdrawals, gas usage and state/receipts roots are only available once the builder reveals the
SignedExecutionPayloadEnvelope; use beacon.raw.execution_payload_envelopes for those.beacon.raw.payload_attestations
Provides one row per Payload Timeliness Committee (PTC) attestation included in a block, recording whether the builder revealed the execution payload on time. A view over raw.blocks.payload_attestations.
Unique Key: (slot_number, array_index) — a block can carry several payload attestations.
beacon.raw.builders
Provides a per-epoch snapshot of each registered builder, tracking the 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. To get the latest state of a builder, take the row with the highest slot_number for its builder_index.
Unique Key: (slot_number, builder_index)
beacon.raw.execution_payload_envelopes
Provides one row per slot containing the ExecutionPayloadEnvelope the builder reveals after the block. This is the replacement source for post-fork execution payload data (transactions, withdrawals, gas usage, roots, and block_access_list from EIP-7928). A slot whose builder never revealed its payload has no row.
Unique Key: slot_number
beacon.raw.execution_requests
Provides one row per slot with the execution requests as separate columns, including the two new Gloas request types. A view: pre-Gloas (Electra and later) rows come from raw.blocks.execution_requests, Gloas rows from raw.execution_payload_envelopes.
Unique Key: slot_number
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 GloasExecutionPayload container itself gains a block_access_list field (plus a slot_number field), so this is not purely an execution-layer-internal change — it is available inside the payload column of beacon.raw.execution_payload_envelopes.
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: October 15, 2026 — see Devnet Progress Updates for change history.