Settings
2

Forward inclusion list

Resources:

High-level idea:

We want to make it so proposers are able to combat censorship by forcing inclusion of some transactions, but we don’t want to do it in a way which is bandwidth-intensive (i.e. can often result in redundant gossiping and/or block inclusion of transactions), which disadvantages altruistic proposers by requiring them to sacrifice MEV or which gives sophisticated proposers some power that they can exploit to extract more MEV than unsophisticated ones. When builders are not censoring, it would be ideal if the protocol would essentially behave as in the regular PBS proposal, with the proposers just choosing the most profitable block, and minimal overhead

The key to do this is to understand what censorship looks like after 1559, given a view of the mempool: we suspect a builder is censoring if there is blockspace which could be allocated to currently eligible mempool transactions and is instead left empty, i.e. if blocks are not as full as they could be given the current mempool. Obviously there is some degree of subjectivity given by the view of the mempool, but what we can do is let the proposer impose their view (or a slice of it) in advance, so that we can distinguish censorship from simple divergence of views of the mempool.

Rather than allowing proposers to directly force inclusion of their chosen transactions, we instead allow them to force builders to fully utilize the available blockspace: if they cannot do so, they must use the unused space for the proposer-selected transactions

Cost of censorship

For an overview about how the cost of censorship changes with PBS, if we don’t assume the bribing model (where the whole validator set is bribable), see Vitalik’s State of research post

crLists + EIP 1559 change this dramatically:

Design goals from Vitalik’s post

Natural language specification

Here we are assuming two-slot PBS, with even blocks being proposer’s blocks and odd blocks being builder’s block. A quick summary is that the proposer publishes a crList with their beacon block, and the list is relevant to the next builder’s block, the one chosen by the following proposer. That this block is compliant is enforced by the attestors of that block, if crList has been timely published.

Without PBS (e.g. in the post-merge status quo), we have an equivalent scheme without builders:

Analysis

Consensus safety

Since we are adding an extra condition to some attestations (half of them, in fact), which introduces a new opportunity for views to diverge between attestors, we need to make sure that we are not weakening the stability of consensus. The impact here is thankfully minimal. Two attestors’ views diverge because of this extra condition only in one case: a crList must have been published but only seen in time by one of them, and the next builder must have not made a compliant block. We can further identify two cases:

>50% committee sees crList >50% committee does not see crList
Builder sees crList :slightly_smiling_face: :slightly_smiling_face:
Builder does not see crList :disappointed: :slightly_smiling_face:

Properties

More generally, this scheme has the following desirable properties: