Breaking Schema ChangesEthereum’s Glamsterdam upgrade (estimated May–June 2026) 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.Timeline: Changes will be available on beacon_hoodi testnet in early April 2026, approximately 4+ weeks before mainnet activation.
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:
{
"body": {
"execution_payload": {
"block_hash": "0xabc...",
"block_number": "21000000",
"timestamp": "1700000000",
"fee_recipient": "0xdef...",
"transactions": [...],
"withdrawals": [...]
},
"blob_kzg_commitments": [...],
"execution_requests": {...}
}
}
After Glamsterdam, the proposer commits only a bid from the builder — the execution payload is revealed separately:
{
"body": {
"signed_execution_payload_bid": {
"message": {
"slot": "...",
"block_hash": "0xabc...",
"parent_hash": "0x...",
"builder_index": "12345",
"fee_recipient": "0xdef...",
"gas_limit": "30000000",
"value": "1500000000"
},
"signature": "0x..."
},
"payload_attestations": [
{
"aggregation_bits": "0x...",
"data": {
"beacon_block_root": "0x...",
"slot": "...",
"payload_present": true
},
"signature": "0x..."
}
]
}
}
The execution_payload, blob_kzg_commitments, and execution_requests fields are absent from the block body for all slots after the fork.
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:
| Column | Current Behavior | Post-Glamsterdam Behavior |
|---|
execution_payload | Always present (object) | NULL or missing |
eth1_block_hash | Execution block hash | NULL |
eth1_block_number | Execution block number | NULL |
eth1_block_timestamp | Execution block timestamp | NULL |
transaction_count | Integer ≥ 0 | 0 (no payload in block body) |
withdrawal_count | Integer ≥ 0 | 0 (no payload in block body) |
withdrawals | Array of withdrawal objects | NULL |
blob_kzg_commitments | Array (if blobs present) | NULL |
execution_requests | Object (post-Pectra) | NULL |
signed_execution_payload_bid | Does not exist | NEW — builder’s signed bid |
payload_attestations | Does not exist | NEW — PTC attestation array |
Migration Path: Use the new beacon.raw.execution_payload_bids table (see below) to look up execution block hashes and builder information for post-fork slots.
beacon.raw.block_rewards — Additive Changes
New columns will be added to provide explicit builder payment tracking:
| Column | Current Behavior | Post-Glamsterdam Behavior |
|---|
total | Consensus proposer reward | Unchanged |
attestations | Component breakdown | Unchanged |
sync_aggregate | Component breakdown | Unchanged |
proposer_slashings | Component breakdown | Unchanged |
attester_slashings | Component breakdown | Unchanged |
builder_index | Does not exist | NEW — validator index of winning builder |
builder_payment | Does not exist | NEW — explicit Gwei paid by builder to proposer |
No Breaking Changes: All existing columns remain available. The new builder_payment field 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
| Column | Type | Description |
|---|
slot_number | bigint | Beacon slot number |
slot_timestamp | timestamp | Slot timestamp |
proposer_index | bigint | Validator index of the proposer |
builder_index | bigint | Validator index of the winning builder |
value | numeric | Bid value in Gwei (builder payment to proposer) |
parent_hash | varchar | Parent execution block hash |
block_hash | varchar | Committed execution block hash |
gas_limit | bigint | Proposed gas limit |
fee_recipient | varchar | Fee recipient address |
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
| Column | Type | Description |
|---|
slot_number | bigint | Beacon slot being attested |
slot_timestamp | timestamp | Slot timestamp |
payload_present | boolean | Whether the PTC attested the payload was revealed on time |
aggregation_bits | varchar | Bitfield of PTC members who signed this attestation |
beacon_block_root | varchar | Root of the beacon block being attested |
Migration Timeline
| Timeline | Estimated Date | Status |
|---|
| Hoodi testnet ePBS activation | Early April 2026 | Awaiting node provider confirmation |
| Allium Hoodi schema update live | ~1 week after testnet activation | Pending |
| Glamsterdam mainnet activation | May–June 2026 (TBD by Ethereum Foundation) | Pending |
| Allium mainnet schema cutover | Pre-emptively supported | Pending |
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
| Action | Priority | Deadline |
|---|
Identify all queries referencing affected fields in beacon.raw.blocks and beacon_hoodi.raw.blocks | High | Before April 16, 2026 |
Update queries to use beacon.raw.execution_payload_bids for block hash lookups | High | Before mainnet activation |
Update execution reward reconciliation to use builder_payment in beacon.raw.block_rewards | High | Before mainnet activation |
| Test updated queries against Hoodi testnet data | High | April 16 – May 7, 2026 |
Optionally consume beacon.raw.payload_attestations to detect builder withholding events | Low | Post-mainnet |
Additional Notes
EIP-7928 (Block-level Access Lists)
EIP-7928 is also included in the Glamsterdam upgrade but has no impact on beacon chain API structure or Allium tables. This EIP affects execution layer transaction processing only.
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 updated: March 27, 2026