EIP-7805, formally titled "Fork-choice enforced Inclusion Lists (FOCIL)," is a Core Ethereum Improvement Proposal designed to enhance the censorship resistance of the Ethereum network. [1] [2] The proposal, which was in "Draft" status as of its creation, introduces a mechanism to ensure that valid transactions submitted to the public mempool are included on-chain in a timely manner. It achieves this by creating a committee of validators to propose "inclusion lists" (ILs) of transactions, which are then enforced through modifications to the protocol's core fork-choice rule. This system is intended to counteract the centralizing effects of Proposer-Builder Separation (PBS) and reinforce the network's credible neutrality. [1]
The primary motivation for EIP-7805 stems from the evolution of Ethereum's block production market after the implementation of Proposer-Builder Separation (PBS). PBS was introduced to separate the role of a block's proposer (a validator) from the complex and resource-intensive role of the block's builder. While successful in its aims, this led to the emergence of a small, highly specialized group of "builders" who construct the majority of blocks on the network. This concentration of power created a potential vector for transaction censorship, where a few colluding or coerced builders could systematically delay or exclude specific transactions from the blockchain. [2]
EIP-7805 addresses this risk by re-empowering the broader set of decentralized validators. It gives them a tool to collectively impose constraints on block builders, guaranteeing that any valid transaction can eventually be included on-chain. The core principle is that validators who attest to new blocks will only vote for blocks that comply with the inclusion lists generated by a randomly selected committee of their peers. This makes it economically non-viable for a builder to produce a censoring block, as it would be ignored by honest attesters and ultimately orphaned from the canonical chain. The proposal aims to provide robust inclusion guarantees without re-introducing the complexities that PBS was designed to solve. [1] [2]
The proposal for EIP-7805 was formally created on November 1, 2024, by a team of researchers and developers including Thomas Thiery, Francesco D'Amato, Julian Ma, Barnabé Monnot, Terence Tsao, Jacob Kaufmann, and Jihoon Song. [1] A public discussion thread was initiated on the Fellowship of Ethereum Magicians forum on November 4, 2024, to gather community feedback and debate the design. [2]
From its introduction, the proposal was classified as a "Standards Track: Core" EIP in "Draft" status, indicating it proposes changes to Ethereum's core consensus rules and requires a network-wide hard fork to be implemented. The discussions on the forum quickly began to explore potential challenges and future enhancements. A key topic was the attributability of transactions to specific validators, which led to a proposal for an anonymity-preserving extension called "FOCILIS" later that month. [1] [2]
FOCIL introduces a new set of rules and responsibilities for validators, builders, and clients, which are integrated into Ethereum's slot-based consensus cycle. The entire process for enforcing inclusions for a block in slot N+1 occurs concurrently during slot N. [1]
The mechanism is built upon several key ideas:
These core concepts are implemented through a coordinated workflow involving multiple network participants. [1]
The FOCIL process involves a precise timeline within each 12-second slot, coordinating the actions of the IL committee, general validators, block builders, and the next block's proposer. The process for generating ILs for the block in slot N+1 unfolds during slot N.
| Timeline in Slot N | Role | Responsibility |
|---|---|---|
| t=0s – 8s | IL Committee Members | After observing the block for slot N, each of the 16 committee members independently creates an inclusion list from their local mempool and broadcasts the signed list to the P2P network. |
| t=0s – 9s | All Validators | Listen for, validate, store, and forward all valid ILs they receive from committee members. They also monitor for evidence of equivocation (a single member sending multiple different ILs). |
| t=9s | All Validators | At the "view freeze" deadline, validators stop accepting new ILs for the current slot. This creates a stable, shared set of ILs that will be used to validate the next block in slot N+1. |
| t=0s – 11s | Block Builder | Collects all available ILs from the network. They use these lists to construct a compliant block payload for slot N+1. |
| t=11s | Block Builder | The builder freezes its view of the ILs and finalizes the execution payload, ensuring it contains all includable transactions from the collected lists. |
| t=0s (Slot N+1) | Block Proposer | The proposer for slot N+1 broadcasts the new block, which contains the builder's compliant execution payload. |
| t=0s – 4s (Slot N+1) | Attesters | Upon receiving the slot N+1 block, all attesters for that slot cross-reference it against their frozen view of ILs from slot N. They only cast a vote (attestation) for the block if it correctly includes all required IL transactions. |
This tightly timed workflow ensures that inclusion lists are generated and disseminated in time for builders to construct a compliant block, which is then promptly validated by the wider network of attesters. [1]
Implementation of EIP-7805 requires coordinated changes across the Consensus Layer (CL), Execution Layer (EL), and the Engine API that connects them.
InclusionList, which holds the slot number, committee member index, and the list of transactions, and SignedInclusionList, which is the InclusionList signed by the committee member.SignedInclusionList objects, ensuring they can propagate quickly across the network. A new RPC method is also added to allow nodes to request specific ILs they might have missed. [1]INCLUSION_LIST_UNSATISFIED, to the CL. The CL then knows to reject the block. [1]To facilitate communication between the CL and EL, the Engine API is extended with new methods:
engine_getInclusionListV1: Allows the CL to request an IL from the EL.engine_updatePayloadWithInclusionListV1: Used by the CL to pass the builder's aggregated ILs to the EL during block construction.engine_newPayload method is modified to accept IL transactions as a parameter and to handle the new INCLUSION_LIST_UNSATISFIED status. [1]The proposal defines several constants to govern the mechanism:
| Parameter | Value | Description |
|---|---|---|
IL_COMMITTEE_SIZE | 16 | The number of validators selected for the IL committee in each slot. |
MAX_BYTES_PER_INCLUSION_LIST | 8192 (8 KiB) | The maximum size of an individual IL, limiting network bandwidth and storage requirements. |
DOMAIN_IL_COMMITTEE | 0x0C000000 | A unique signature domain used to prevent IL signatures from being replayed in other contexts. |
These parameters are chosen to balance censorship resistance with network overhead and performance. [1]
The design of FOCIL is guided by several key principles aimed at creating a robust and minimally complex solution.
1-out-of-N honesty assumption (at least one of N committee members will be honest) and the general altruism of validators who want to maintain the health and neutrality of the network. This avoids the significant complexity of designing a new, un-gameable incentive system.This collection of design choices aims to deliver strong censorship resistance while minimizing disruption to the existing block production ecosystem. [1]
The FOCIL proposal introduces new consensus interactions and dependencies, which come with potential security considerations.
nonce and balance changes of accounts involved in ILs as they add transactions to the block, allowing for faster validity checks.In response to the validator attributability challenge, the community began discussing privacy-preserving enhancements.
The most prominent extension proposed was FOCILIS (FOCIL with Indistinguishable Submissions). This concept, raised in the Ethereum Magicians forum in late November 2024, aims to allow a committee member to submit an IL anonymously.
The consensus in the discussion thread leaned towards a pragmatic, two-stage implementation. The simpler, fully attributed FOCIL would be deployed first to provide immediate censorship resistance. Meanwhile, research on FOCILIS and other "anonymous inclusion lists (anon-ILs)" would continue, with the goal of deploying a privacy-preserving version in a future network upgrade. [2]
EIP-7805 is a backward-incompatible proposal that can only be activated through a planned network-wide hard fork. The changes fundamentally alter block validation rules at the consensus layer, requiring all client software (both CL and EL) to be updated. However, the changes are contained within the protocol's backend and do not alter the structure of user transactions or the functionality of existing smart contracts. Therefore, the upgrade is not expected to break user-facing applications or require action from end-users or contract developers. [1]