zkFOCIL: Private Inclusion Lists on Ethereum
Project Overview
We created and benchmarked a Proof-of-Concept implementation of Private Inclusion Lists on Ethereum. This system enables multiple validators to privately create blocks together, significantly enhancing privacy and censorship resistance on the network.
Key Innovation
Our solution ensures that no one, except the validator who performed the action, can determine which validator included which transaction. This anonymity protects validators from potential consequences of including non-OFAC compliant transactions, addressing a critical vulnerability in the current system where validators might self-censor to avoid repercussions.
Technical Implementation
The zkFOCIL implementation operates through a two-part process:
-
Private Validator Selection
- A Verifiable Randomness Function (VRF) randomly selects n validators to participate in block creation
- Selected validators can prove their eligibility without revealing their identity
-
Zero-Knowledge Block Creation
- Inside a Zero-Knowledge Virtual Machine (zkVM):
- Validators privately prove they were elected as includers
- They create their inclusion lists and sign their votes
- The zkVM wraps this entire process in a single SNARK proof
- Validators broadcast their votes to the network anonymously
- A designated validator verifies all received zkproofs
- This validator generates another SNARK proof confirming the verification
- The final proof is added to the block, allowing fast verification that the process was conducted properly
Ring Signatures
Our implementation uses Linkable Ring Signatures, which allow:
- Validators to prove their membership in the eligible group
- Network nodes to differentiate between signature originators
- Preservation of validator anonymity (no link between signatures and on-chain identities)
- Prevention of double-signing through linkability
Project Components
The project consists of two main components:
-
Technical Implementation
- Core zkFOCIL protocol implementation
- Comprehensive benchmarks demonstrating performance and scalability
- Integration with Ethereum's existing architecture
-
Educational Frontend
- Interactive interface explaining the protocol
- Visualization of private inclusion list creation
- Demonstrations of privacy and censorship resistance properties
- Tools to help judges understand the technical significance of our innovation
Impact on Ethereum
This implementation substantially improves Ethereum's resistance to transaction censorship by:
- Protecting validator anonymity
- Reducing incentives for self-censorship
- Preserving verification capabilities without compromising privacy
- Maintaining network security while enhancing user privacy
The project is composed of two parts:
The actual implementation and its benchmarks
The educative frontend to help judges understand what we built
The actual implementation is written in Rust and uses the signature implementation from Cypher Lab and 2 differents zkvms (the Pico zkVM from Brevis and Succinct) to generate the snarks.
The educative frontend simulates the entire process in order to help us explain how the system works. It is a simple web app built with TypeScript and Vite