-
Notifications
You must be signed in to change notification settings - Fork 409
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
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think there once was an experimental folder for your purpose but was later removed because the folder is empty.
You can refer to #340 to see how eip6110.md
is placed.
Moved EIP-7805 spec under the experimental folder. Thank you for your review and providing the reference! @ensi321 |
#### Specification | ||
|
||
1. Client software **MUST** provide a list of transactions for the inclusion list based on local view of the mempool and according to the config specifications. | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
2. Client software **MUST** provide a list of transactions within upperbound `MAX_BYTES_PER_INCLUSION_LIST` |
I guess it's worth adding the max inclusion list size MAX_BYTES_PER_INCLUSION_LIST
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Applied, thanks a lot!
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.