mirror of
https://github.com/OffchainLabs/prysm.git
synced 2026-05-02 03:02:54 -04:00
**1 — proto + API structs** New fields: `execution_requests_root` on the bid, `parent_execution_requests` on the body. `state_root` gone from the envelope. Nothing uses them yet. **2 — consensus-types accessors + state interfaces** Wires up the Go side of (1). Also adds `QueueBuilderPaymentForSlot` and factors `queueBuilderPaymentAtIndex` out of `QueueBuilderPayment`. **3 — ProcessParentExecutionPayload + spec tests** New spec fn, not wired in yet. Read it side-by-side with the pyspec. **4 — swap the mutation site** Old `ProcessExecutionPayload` drops all its state mutations and becomes verify only. `ProcessParentExecutionPayload` gets wired into `ProcessBlockForStateRoot` before `process_block_header` per spec order. Also: renames `IsParentBlockFull` → `LatestBlockHashMatchesBidBlockHash` (old name was misleading, it's just an equality check). `ProcessSlotsForBlock` and `head.full` are deleted. Envelope no longer computes a `state_root`. **5 — proposer** Sets `parent_execution_requests` on the body, builds the bid with the new fields, computes withdrawals via `computePayloadWithdrawals`. That fn has three branches (empty parent / pre-Gloas parent / full Gloas parent). **6 — gossip validation** Adds `validateParentExecutionRequests`: body's `parent_execution_requests` has to hash to what the parent bid said. **7 — rip out dual-key state access** State's always keyed by beacon block root now, so all the "sometimes execution block hash" code across forkchoice, stategen, and the blockchain service can go. Almost pure deletions. One actual behavior change: FCU notifications use `forkchoice.BlockHash()` instead of `st.LatestBlockHash()` **8 — rename ProcessExecutionPayload → VerifyExecutionPayloadEnvelope** Rename only, nothing else. Just approve. **9 — test utilities + assertions + changelog** Mechanical. Test builders pick up the new fields, a few stray `envelope.StateRoot` references get swept up, changelog added.