# 7732 - Late Payload Commitment It feels like we've been endlessly discussing various slot restructuring designs. Unfortunately, I have one more design to offer. Apologies in advance. ## Where we Stand After months of exploring different designs, the best available option appears to be [EIP-7732](https://eips.ethereum.org/EIPS/eip-7732) with a small modification for [dual-deadline PTC](https://notes.ethereum.org/@anderselowsson/Dual-deadlinePTCvote). The only unknown at this point, is whether [builder withhold timing games](https://notes.ethereum.org/w_UoFg8pQyGgQurpPaRD8A#3-Toxic-Withholding-Strategies) are a serious threat to protocol stability. This class of attacks, which we may call *reveal timing games* rather than the *commit timing games* we are used to, is possible in **any design where there is a time delta between the moment transactions are committed to, and the moment all components of the block are revealed.** Right now this topic is under-researched, and we are currently exploring it. If payload reveal timing games are found to pose unacceptable stability risks — and if mitigating them introduces prohibitive trade-offs — I propose this alternative which mitigates these attacks while preserving most of the positive properties of EIP-7732. ## Specification - A Small Shift in the Design In standard 7732, the proposer signs a [commitment to the execution payload](https://github.com/ethereum/consensus-specs/blob/v1.6.0-alpha.3/specs/_features/eip7732/beacon-chain.md#executionpayloadheader) which is then [included in the beacon block](https://github.com/ethereum/consensus-specs/blob/v1.6.0-alpha.3/specs/_features/eip7732/beacon-chain.md#beaconblockbody). The full [execution payload](https://github.com/ethereum/consensus-specs/blob/v1.6.0-alpha.3/specs/_features/eip7732/beacon-chain.md#executionpayloadenvelope) and all associated blobs are then revealed later by the builder, no later than the PTC deadline. We can eliminate reveal timing games by simply **moving the commitment to the execution payload from the beacon block to the execution payload itself.** To be specific, the `BeaconBlockBody` in slot `N` would contain [everything it contains in standard 7732](https://github.com/ethereum/consensus-specs/blob/v1.6.0-alpha.3/specs/_features/eip7732/beacon-chain.md#beaconblockbody) *except* the [`block_hash` in the `ExecutionPayloadHeader`](https://github.com/ethereum/consensus-specs/blob/v1.6.0-alpha.3/specs/_features/eip7732/beacon-chain.md#executionpayloadheader). The `BeaconBlock` therefore forces the chain to come to consensus on what happened in the slot `N-1`, but it makes no commitment about the execution payload in slot `N`. By moving the commitment to the execution payload, we allow the auction to take place *later in the slot*. One consequence of this is that builder safety can then only be achieved with trusted relays. So in essence, this design sacrifices the on-chain trustless payment option to protect the protocol against reveal timing games. In this design, slot anatomy becomes the follwoing: ![](https://notes.ethereum.org/_uploads/rkaXuenLlx.png) where the proposer will commit to the payload at **some optimal time $\lambda$** that achieves maximal MEV extraction. The protocol only requires that the execution payload and blobs are revealed by the PTC deadline, **allowing $\lambda$ to change depending on how we scale gas and blob limits**. Unlike other designs, this design **maintains the other advantages of EPBS** including maximal pipelining because attestation aggregation happens in parallel with block/blob broadcast & execution. ## Types of Proposer Commitments There are two kinds of commitments the proposer could make under this scheme: 1. Payload hash (block auction) 2. Builder pubkey (slot auction) ### Block Auction Incentives and Trust Assumptions If the proposer commits to a payload hash, then there is still an incentive to play reveal timing games since there is a gap between the time that the transactions in the payload are committed to, and the time that the final component of the block is revealed. To prevent this we would have to **trust relays to not collude with the builder and perform reveal timing games.** We have this trust assumption today, but the additional time that comes from this proposal may push us into a regime where reveal timing games are more viable (since today relays would only have about 1 second to make the decision). Note that we have roughly the same trust assumption on relays with similar incentives in standard [EIP-7886](https://eips.ethereum.org/EIPS/eip-7886) as well. Also note that the relay can prevent the builder from performing reveal timing games without the relay's collusion by inspecting the kzg hashes of every blob transaction and **requiring the payload to only include blob transactions for which the relay has the full blob in custody**. In other words, the relay must prevent the builder from including private blob transactions in their block. If we accept that we can trust the relays to not play reveal timing games, we can also trust the relays to reveal the payload as soon as they have a signed commitment from the proposer. With block auctions, relays have little incentive to withhold the payload (unless they're providing execution preconf services). If we can trust them to reveal the payload in a timely way, this would decrease the post-state information monopoly, which is one of the goals of [the dual-deadline PTC design](https://notes.ethereum.org/@anderselowsson/Dual-deadlinePTCvote) with EIP-7732. ### Slot Auction Incentives and Trust Assumptions If the proposer instead commits to a slot, then in principle, there is no longer an incentive for the builder to play reveal timing games. But since the payload can now change very late in the slot, there is renewed incentive for the builder/relay to hold on to the payload as long as possible, increasing the post-state information monopoly issue.