Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds initial FOCIL spec. It mainly adds three new methods.
i)
engine_newPayloadV5
engine_newPayloadV5
is introduced asengine_newPayloadV4
will be shipped in Prague.engine_newPayloadV5
takes an inclusion list (IL) as a parameter and verifies if the payload satisfies the IL constraints. (For the IL constraints, please refer toExecution Layer
section in EIP-7805.)As IL isn't recorded onchain, it cannot be enforced during syncing. Currently, this spec adopts a naive approach: CL passes IL only when not syncing and EL enforces the IL constraints only if the given IL is not null. We're looking for feedback on whether there is a better approach such as using a sync complete flag.
ii)
engine_getInclusionListV1
EL must provide an IL when
engine_getInclusionListV1
is called. FOCIL as in EIP-7805 does not dictate IL construction algorithm and expects that having diverse approaches would help foster censorship resistance.iii)
engine_updatePayloadWithInclusionListV1
A proposer should listen to all ILs submitted by IL committee members and apply the aggregated IL to its payload before proposing a block. There are two ways to achieve this.
a) use engine_forkchoiceUpdated
We can add the IL field to
payloadAttributes
and callforkchoiceUpdated
initially with a null IL field at the start of a slot, then call it again with the actual IL once it’s ready.This will require modifying FCU to allow updates to an ongoing payload building process. If I’m not mistaken, geth and reth currently early return a valid response without updating the existing payload building process.
b) add a new Engine API
The second option is adding a new Engine API. We welcome feedback on better ways of applying IL.
We’re in the early stages of FOCIL implementation and would appreciate your feedback. Thank you.