Payload-timeliness committee (PTC) – an ePBS design
by mike & francesco – based on discussions with potuz & terence – july 6, 2023
\cdot
h/t Potuz for coming up with the idea of not giving the builder block explicit fork-choice weight, but rather using a committee to decide on the timeliness of the payload. This document is the result of a number of iterations on this concept.
\cdot
tl;dr; We present a new design for ePBS called Payload-Timeliness Committee (abbr. PTC). We include: a high-level overview, the new honest attesting behavior, and an initial analysis of the properties and potential new attack vectors. This document omits the formal specification, which will follow as we gain confidence in the soundness of this design.
\cdot
Many thanks to Danny, Barnabé, Caspar, Toni, Vitalik, Justin, Jon, stokes, Jacob, Aditya, and Chris for relevant discussions.
New concepts
- payload-timeliness committee (PTC) – a subset of the attestation committee from each slot that votes on the builder’s payload release.
-
full,empty, andmissingblocks – afullblock has a validExecutionPayloadthat becomes canonical (results in an update to the EL state). Anemptyblock is a CL block does not have a canonicalExecutionPayload(does not update the EL state). Amissingblock is an empty slot that becomes canonical. With block-slot voting,missingblocks can have fork-choice weight. -
payload-timeliness (PT) votes – the set of votes cast by the PTC.
- The PT votes for slot
Nare only used by the proposer and attesting committee in slotN+1. - The PT votes for slot
Ndetermine the proportion of the fork-choice weight given to thefullvs.emptyversions of the slotNblock.
- The PT votes for slot
Note – Throughout this document, we describe block-slot voting as a prerequisite for PTC. However, we can make use of the existing voting mechanics and treat ancestral block votes in slot N as votes for the missing version of the slot N block. For clarity in the examples, we describe missing as part of the competing fork, but adding pure block-slot voting may not be necessary in practice.
Design overview
We first present a minimal description of the new design. Note that this does not include the full specification of behavior and is intended to present the high-level details only.
Old slot anatomy
Presently, the 12 second slot is partitioned into the following three phases. Figure from Time, slots, and the ordering of events in Ethereum Proof-of-Stake.
Flow
- At
t=0block proposed by the elected PoS validator. - At
t=4, the attestation deadline, the attesting committee for slotNuses the fork-choice rule to determine the head of the chain in their view and makes an attestation. - At
t=8the aggregate attestations are sent. - At
t=12the next proposer builds on whatever head they see according to their fork-choice view.
New slot anatomy
The new slot contains an additional phase for the PT votes to propagate.
Flow
- The slot
Nblock that is published att=t0is the CL block proposed by the elected PoS validator. This block contains a builder bid, but noExecutionPayload. - The attestation deadline at
t=t1is unchanged. The entire attesting committee for slotNuses the fork-choice rule to determine the head of the chain in their view and makes an attestation. - The broadcast of aggregate attestations for the slot still begins at
t=t2. Additionally, the builder publishes their execution payload if they have not seen an equivocation from the proposer (the builder does not need to have a full view of the attestations). - At
t=t3the PTC casts their vote for whether the payload was released on time. - At
t=t4the slotN+1proposer publishes their block, building on either thefulloremptyblock based on the PT votes and attestations that they have seen.
Note – Timestamps are not specified because we can adjust the duration of each phase based on performance testing. The key details are what happens in the four phases and at the boundaries.
Note 2 – Depending on the size of the PTC, we may need a fifth slot phase to aggregate the votes of said committee. Larger committees may need aggregation, but are more secure, which is the design tradeoff.
Block production
The full block is assembled in two phases. First, the CL (beacon) block is produced with a commitment to a builder bid. Any double-signing of this block represents a proposer’s equivocation. Once the builder has observed the CL block, they produce their ExecutionPayload to construct the full version of the block. The PTC casts votes on the timeliness of this object in their view.
The slot N committee votes on the CL block, while the slot N PTC observes the payload release, which informs the fork-choice rule in the subsequent slot. We propose that the PTC is a strict subset of the slot N attesting committee (e.g., the first 1000 members).
Honest attesting behavior
Consider the honest attesting committee at t=t1 of slot N+1. Assume that there was a block in slot N and the slot N+1 proposer built a child block (it extends w.l.o.g. to missing blocks in either slot). The slot N+1 block could either build on the empty or full block from slot N. Similarly, the PTC cast their votes on full or empty based on the payload-timeliness at t=t3 of the previous slot. The attesting committee in slot N+1 assigns weight to the full vs empty block respectively by using the proportion of PT votes from slot N.
Examples
Assume the slot N block is canonical and received 100% of the slot N attestations. Let W denote the total weight of each attesting committee. PT indicates the payload-timeliness vote and boost is the 40% proposer boost given to each proposer block.
Case 1
The slot N PTC is split, with 51% voting for the full block and 49% voting for the empty block. The slot N+1 proposer builds on the empty block and is given proposer boost, which is equivalent to 40% of the weight of the attesting committee. The attesting committee at N+1 now sees a split and has to choose between attesting to N+1 or N+1,missing. The PT votes divide the attestation weight of the slot N attestations, so we have,
while,
Thus, the attesters vote for N+1 (the top fork).
Case 2
Here we have 100% of the PT votes agreeing that the block should be full. Now the attesting committee for slot N+1 votes against the proposer, and for N+1,missing because
In this case, the PTC from slot N overrules the slot N+1 proposer, who clearly built on the wrong head. The bottom fork wins.
Case 3
In the worst case, the slot N+1 attesters see this split view. Here
and they have to tie-break to determine which fork to vote for. The key here is that this split is difficult to achieve because you need 70% of the PTC to vote for full, while the proposer builds on empty. More on this in “Splitting considerations” (below).
Analysis
The properties specified below were initially presented in Why enshrine Proposer-Builder Separation? A viable path to ePBS. We modify honest-builder payload safety to the weaker condition of honest-builder same-slot payload safety.
Properties
- honest-builder payment safety – if an honest builder is selected and their payment is processed, their payload becomes canonical.
- honest-proposer safety – if an honest proposer commits to a single block on time, they will unconditionally receive the payment from the builder for the bid they committed to.
- honest-builder same-slot payload safety – if an honest builder publishes a payload, they can be assured that no competing payload for that same slot will become canonical. This protects builders from same-slot unbundling. Note: This property relies on a 2/3 honest majority assumption of the validator set.
Non-properties
-
honest-builder payload safety – the builder cannot be sure that if they publish the payload, it will become canonical. The builder is not protected from next-slot unbundling (the builder is not protected from that in
mev-boosteither, as length-1 reorgs happen regularly). More on this in “Splitting considerations” (below).
Note – In terms of CL engineering, making the transition function able to process empty blocks is important. Because empty blocks will not update the EL state, they must exclude withdrawals.
Builder payment processing
Builder payments are processed during the epoch finalization process (open for discussion, could just be on a one-epoch lag). The payment takes place if both of these conditions are satisfied:
- The builder
ExecutionPayloadHeaderis part of the canonical chain (i.e., the CL block for that slot is notmissing). This includes two cases:- The corresponding
ExecutionPayloadis also part of the canonical chain (the happy-path) (i.e., the CL block for that slot isfull). - The builder
ExecutionPayloadHeaderis part of the canonical chain even if the correspondingExecutionPayloadis not (consensus that the builder was not on time) (i.e., the CL block for that slot isempty).
- The corresponding
- There is no evidence of proposer equivocation.
- A builder who sees an equivocation can get the validator slashed. Any slashed validator will not receive the unconditional builder payment.
Differences from other designs
- The payload timeliness determines how to allocate the fork-choice vote, but it cannot create a separate fork.
- The payload view determines how the subsequent attesting committee votes.
- The builder is never given a proposer boost or explicit LMD-GHOST weight.
- The unconditional payments are handled asynchronously, after enough time has passed for equivocations to be detected and the corresponding validators to be slashed.
- The PT votes only inform the attesting behavior of the subsequent slot. Similar to proposer boost, the effect is bound to a single slot.
Splitting considerations
“Splitting” is an action undertaken by a malicious participant to divide the honest view of the network. In today’s PoS, proposers can split the network by timing the release of their block near the attestation deadline. Some portion of the network will see the block on time, while other will vote for the parent block because it was late. Proposer boost is the mechanism in-place to give the next proposer power to resolve these forks if the weight of competing branches is evenly split. The PTC introduces more potential splitting vectors, which we present below.
Proposer-initiated splitting
First, consider the case where the proposer splits the chain in an attempt to grief the builder.
The sequence of events is as follows:
- The slot
Nproposer releases their block near the attestation deadline, causing a split of the honest attesting set. 50% of the honest attesters saw it on time and voted for the block, while the other 50% did not see it on time and thus voted for amissingblock. - The builder of the header included in the block must make a decision about releasing the payload that corresponds to this block. The block is either
fulloremptybased on that decision. - The slot
N+1proposer resolves the split by building on themissing,full, oremptyhead (any of the blue blocks). Because the proposer will have a boost, the fork is resolved.
Now consider the builder’s options.
-
Publish the payload – If the
missingblock becomes canonical, they published the payload, but it never made it on-chain (bad outcome). Otherwise, thefullpayload became canonical (good outcome). -
Withhold the payload – If the
emptyblock becomes canonical, the unconditional payment goes through, but they aren’t rewarded by the payload being included (bad outcome). If themissingblock becomes canonical, then they didn’t needlessly reveal their payload (good outcome).
In summary, either publishing or withholding the payload can result in a good or bad outcome, depending on the behavior of the slot N+1 proposer (which is uncertain even if they are honest).
Key point 1 – By not giving fork-choice weight to the builder, we cannot protect them from the proposer splitting in an attempt to grief. However, the builder can be certain that their block will not be reorged by a block in the same slot, so they can protect their transactions by bounding them to slot N.
Key point 2 – Today, such splitting is possible as well; it just looks slightly different. If the proposer intentionally delays their publication such that the next proposer might try to reorg their block using the honest-reorg strategy, the mev-boost builders have no certainty that their block won’t be one-block reorged. Indeed, we see many one-block reorgs presently. See Time, Slots for more context.
Builder-initiated splitting
As hinted at above, builders can try to grief the slot N+1 proposer into building on a fork with a weak PT vote by selectively revealing the payload to a subset of the PTC.
In this case, the N+1 proposer is going to get orphaned by the N+1,missing block because there was such a disparity in the PT votes. Specifically, if the builder can get the proposer to build on the full or empty block which is the opposite of what the PTC votes for, then they orphan the block. Let N,empty be the block that the proposer of N+1 builds on (w.l.o.g.), and let \beta denote the proportion of the PTC voting for N,full. If \beta > 0.7, then the N+1 validator will be orphaned. In other words, the proposer needs to agree with at least 30% of the PTC to avoid being orphaned.
Spitting conclusion
Neither of these splitting conditions seem too critical. The proposer-initiated splitting is already possible today with mev-boost and builder-initiated splitting will be difficult to execute if the PTC is sufficiently large. Any ePBS design involves some additional degrees of freedom for network participants (by enshrining the builder role), and this design is no exception. Further analysis on the probability and feasibility of splitting will be an important part of the full evaluation of the PTC design.









