Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add initial FOCIL spec #609

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open

Add initial FOCIL spec #609

wants to merge 1 commit into from

Conversation

jihoonsong
Copy link

This PR adds initial FOCIL spec. It mainly adds three new methods.

i) engine_newPayloadV5
engine_newPayloadV5 is introduced as engine_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 to Execution 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 call forkchoiceUpdated 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant