Source linked

Reproposer FOCIL donne aux L2 un chemin de Tx forcé résistant à la censure

Un mécanisme proposé utilise des listes d'inclusion FOCIL directement à partir de L1 pour forcer les séquençateurs L2 à inclure les transactions des utilisateurs, coûtant ~275k gaz par tx et ne nécessitant pas de changements d'état L2.

ethereumfocileip 8025vopsl2 scalingrollups

275k gas per forced transaction is the price of telling a centralized L2 sequencer you're not waiting anymore. A research post from ethresear.ch lays out how FOCIL, Ethereum's upcoming inclusion list mechanism, can be repurposed to give EVM L2s a censorship-resistant forced transaction path without any changes to the L2 state transition function or new transaction types.

Why Existing Forced Transaction Mechanisms Are Clunky

Every major EVM L2 today has its own hack. OP Stack introduces a "deposited transaction" type derived from an L1 event, automatically inserted at the top of the L2 block, with no L2 signature and gas paid on L1. Arbitrum Stack creates several new transaction types without signatures, using an onchain forced transaction queue, but gas is paid on L2. Both require modifications to geth and reserve block space so a valid forced tx is never excluded due to a full block or base fee. These are bespoke, L2-specific workarounds.

FOCIL already does the hard part on L1: it enforces a set of transactions that the block must include or face attestation penalties. The researcher's insight is that the same CL and mempool logic can be replicated in an L1 smart contract, turning the L2 sequencer into just another builder subject to FOCIL constraints.

How L2 FOCIL Replaces the Sequencer's Grip

Users submit signed transactions to an L1 smart contract. The contract orders them by maxFeePerGas descending. On submission, intrinsic (stateless) checks are performed. To prevent state-invalid txs from poisoning the list, users must provide an account proof via eth_getProof against a recent L2 state. This keeps the list clean without needing to store the full L2 state on L1.

Once in the list, a transaction cannot be dropped until proven stale. A permissionless prune function allows anyone to remove a tx by providing an account proof showing the nonce changed or balance became insufficient. To incentivize pruners, submitters post a small bond (~1.1M gas reimbursed). The operator, when settling an L2 block, pulls the current inclusion list from the top of the onchain list up to a gas budget. The verifier (e.g. ZK proof) checks that every transaction in the IL was either included or, if the block had space, was invalid. If there was no space, the EIP-1559 base fee mechanism forces eventual space.

The Gas Cost and What It Enables

Estimates: ~275k gas per transaction in the inclusion list, with 32 txs fitting within 10M gas (multiproofs could lower this). Submission costs ~1.3M gas, prune ~1.1M gas. At 1 gwei per gas, that's roughly 0.001 ETH per action. A concrete implementation is linked in the post.

This mechanism also connects to the Validity-Only Partial Statelessness (VOPS) research. To make account proofs accessible to regular users, the post suggests modifying Block Access Lists (BALs) to include storage root changes, as proposed in EIP-8268. That would allow lightweight nodes to serve proofs without full state.

The obvious next move is for native rollups to adopt this pattern. Existing L2s could also benefit by migrating to a L1-enforced inclusion list, killing the centralized sequencer as a single point of censorship without forking their execution environment.


Source: Repurposing FOCIL as an L2 forced transaction mechanism
Domain: ethresear.ch

Read original source ->

External source stays available while the OJO article and comment thread stay local.

Comments load interactively on the live page.