# Research Proposal: Ethereum Censorship Metrics for FOCIL Implementation
## Overview
This study aims to quantify the impact of delaying **Fork-Choice Enforced Inclusion Lists (FOCIL)** by 1–2 slots. By analyzing the frequency and duration of transaction censorship in the current mempool, we can better inform the integration of FOCIL architecture with the **Enshrined Proposer-Builder Separation (ePBS)** proposal and evaluate the bandwidth savings [suggested](https://discord.com/channels/595666850260713488/1210529202458071050/1443658440609239151) by the Prysm team.
---
## Research Questions
* **Censorship Frequency:** How often are transactions that meet FOCIL inclusion criteria currently being delayed or censored from blocks?
* **Inclusion Latency:** What is the average duration (in slots) that a "FOCIL-valid"* transaction is delayed before eventual inclusion?
* **Bandwidth Optimization:** What is the quantifiable reduction in wasted bandwidth when FOCIL Inclusion List (IL) enforcement is delayed by 1 or 2 slots?
*\* FOCIL-valid implies any transaction that could have been added to an inclusion list based on the current FOCIL spec validation rules: [Execution Specs Pull #1928](https://github.com/ethereum/execution-specs/pull/1928/changes#diff-74fa24b5baaff0111dce07e4c323945a3fb5869a3dd24b72857179eae91fbe97R1079-R1137)*
---
## Methodology & Data Collection
### Xatu
Xatu is an open-source project that provides the comprehensive data required for this study, including detailed mempool and block data for every slot from nodes distributed globally. Accessing the Xatu database allows for independent metric collection without the requirement of a local node following the chain head.
Data processing will be conducted via a Python script that ingests data from the Eth Pandaops Clickhouse Server. This script will search for censored transactions in each slot, generate mock ILs, and calculate bandwidth savings alongside the metrics defined above.
### Data Points
* **Mempool Monitoring:** Tracking the count of pending transactions and recording the subset of the mempool that corresponds to the three generated ILs per slot.
* **Censored Transactions:**
* **Inclusion Criteria:**
1. The Transaction is **FOCIL-valid**.
2. The Priority Fee is greater than or equal to the **bottom 10%** of included transaction Priority Fees in the target block.
* **Confidence Scoring:** Each "censored" transaction is assigned a score based on:
* **Dwell Time:** Time spent in the mempool as a FOCIL-valid candidate.
* **Gas Price Percentile:** Relative position compared to successfully included transactions.
* **Mock Inclusion Lists:** For each slot, Inclusion Lists will be generated for 0, 1, and 2 slot delays (formally $L_0, L_{-1}, L_{-2}$):
* **$L_0$:** The 0-delay IL follows standard client building algorithms, consisting of the most profitable transactions available.
* **$L_{-1}, L_{-2}$:** The 1- and 2-slot delayed ILs consist purely of transactions that have been flagged as censored.
---
## Data Processing
Under the assumption that Inclusion Lists with a 0-slot delay will be propagated at maximum capacity, I will calculate the bandwidth trade-offs for 1-slot vs. 2-slot delays.
This allows us to calculate the bandwidth savings based on the intersection of these sets:
$$\text{Bandwidth Savings}_{-1} = \left( 1 - \frac{\sum_{tx \in (L_0 \cap L_{-1})} \text{size}(tx)}{\sum_{tx \in L_0} \text{size}(tx)} \right) \times 100\%$$
$$\text{Bandwidth Savings}_{-2} = \left( 1 - \frac{\sum_{tx \in (L_0 \cap L_{-2})} \text{size}(tx)}{\sum_{tx \in L_0} \text{size}(tx)} \right) \times 100\%$$
---
## Limitations and Considerations
* **Censorship Occurrences:** Natural censorship occurrences on Mainnet are currently low. In parallel to Mainnet data collection, it may be prudent to perform testing on a devnet with simulated censorship to ensure robust data.
* **Inclusion List Size Limitation:** The FOCIL implementation utilizes 16 committee members, theoretically yielding a total inclusion list capacity of `16 * 8192` bytes (assuming no overlap). Consequently, the mock IL size may need to be increased from the baseline `8192 bytes` to account for this.
---
## Project Resources
* **GitHub Repository:** TBD
* **Xatu:** https://ethpandaops.io/docs/tooling/xatu/