-
-
Published
Linked with GitHub
# `FOCIL` prototype
## `reth`
the changes of the fork are available [here](https://github.com/paradigmxyz/reth/compare/main...jacobkaufmann:reth:prague-focil).
summary
* engine API
* add IL to payload attributes
* payload attributes verification
* block execution/validation
* IL validation upon block execution
* block construction
* application of IL transactions to execution payload output of pre-existing payload build process
`TODO`
* testing
* more comprehensive error handling
* more comprehensive tracing/metrics
* add IL to new payload request
* block construction optimizations
* i.e. be more clever about which IL transactions can(not) be (in)validated by other transactions
* enforce max size of IL returned via engine API
* constrain IL transactions returned via engine API by parent hash
`NOTE`
* currently, there is no `engine_updateInclusionListV1` endpoint to update an existing payload with IL(s), and instead we rely on `engine_forkChoiceUpdated`
* currently, the return type of `engine_getInclusionListV1` is an array of byte arrays
* there were changes required in the `alloy` ecosystem of crates, and those changes have not been pushed from my local workspace yet
## `lighthouse`
the changes of the fork are available [here](https://github.com/sigp/lighthouse/compare/stable...jacobkaufmann:lighthouse:electra-focil).
summary
* beacon chain
* `get_inclusion_list_committee`
* engine
* check for `getInclusionListV1` engine capability
* make RPC request for `getInclusionListV1`
* beacon
* endpoint to retrieve IL duties
* validator client
* poll beacon node for IL duties
* keep track of IL duties
* p2p
* most of the gossip verifications
* IL gossip-sub topic
`TODO`
* testing
* more comprehensive error handling
* more comprehensive tracing/metrics
* fork choice
* p2p
* finish gossip verifications
* keep track of equivocations
* handle IL gossip message
* beacon API
* support requests for historical IL duties
* endpoint to retrieve IL corresponding to IL duty
* endpoint to broadcast signed IL
* engine API
* add IL to new payload request
* beacon node
* query IL from EL
* validator client
* query IL from beacon node to sign and broadcast
`NOTE`
* able to reuse pre-existing logic for attestation shuffling
* `POST validator/duties/inclusion_list/{epoch}`
* request data: list of validator indices
* response data: array of items containing validator index, public key, slot