# `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