ZK/SEC Research notes from zkSecurity
All posts
announcement · tools · security

FRIDA: Data-Availability Sampling from FRI

Introduction

Recently Ethereum deployed EIP-4844 (Proto-Danksharding) to lower the cost of "data-availability" on Ethereum. The high-level goal of data-availability is, well, to ensure that a piece of data is available to everyone who wants it.

Data-availability is primarily a concern in relation to roll-ups, where the problem it solves is the following: even if a roll-up proves honest execution using a SNARK, what happens if the roll-up operator stops telling people which transactions they are executing? In this case L1 (Ethereum) would only have a commitment (state root) to the roll-up state and problems arise if the operator, for instance, simply stops executing transactions. In this scenario, users would be unable to exit the roll-up because they cannot issue state proofs (e.g. Merkle paths) against the state root; because they don't know the state of the roll-up. The result? Their funds are stuck until the operator provides the entire state of the roll-up.

Data-availability solves this by forcing the roll-up operator to post the underlying data (transactions) publicly. This in turns enables anyone to recompute the full state of the roll-up and thus exit the roll-up if e.g. the operator goes offline.

Up until EIP-4844, the cost of data-availability was high, because data-availability was achieved by posting the data on-chain as Ethereum calldata. Posting every transaction you execute on your fancy L2 directly on Ethereum. Ouch.

The problem with calldata is that it needs to be kept around by everyone forever and so it needs to be expensive: it is required to recompute the state of Ethereum from genesis. To improve solutions to the data-availability problem, we need to avoid everyone having to keep the data around forever. EIP-4844 was the first step in this direction, by allocating space in blocks to so-called blobs which can only be accessed indirectly from within the EVM via a cryptographic commitment.

You can't the access contents of blobs from the EVM, the only operation allowed is to check polynomial evaluations proofs against the blob via the point_evaluation_precompile precompile: the caller provides a (blob) commitment, a (KZG) opening proof, an evaluation point $z$ and the evaluation $y$. The precompile then verifies the KZG opening proof.

The beauty of this is that we do not need the blob contents to compute the state of Ethereum anymore: we only need the blob commitment and the KZG opening proofs. This enables Ethereum to throw away the blob itself after a certain time, roughly 2 weeks, without losing the ability to recompute the state of Ethereum from genesis. If you were interested in the blob contents, you should make sure to download them before the full nodes throw them away.

This solves the forever part of the data-availability problem. But it doesn't solve the everyone part: even with EIP-4844, every full node still needs to download every blob in a block to ensure that it's available before signing off on the block.

The next step is to shard the data in such a way that each node in the network only needs to download a small fraction of the blob. This idea has been dupped "data availability sampling" within the Ethereum community and it relates, but does not coincide, with several existing notions in the literature, discussed at length in the Foundation of Data Availability paper by Hall-Andersen (zkSecurity), Simkin (Ethereum), and Wagner (Ethereum).

The most immediate way to go from Proto-Danksharding to Danksharding (Data Availability Sampling) is to extend the existing KZG-based scheme to allow nodes sampling from an erasure-coded version of the blob. This scheme along with several others are also covered in the Foundation of Data Availability paper.

But what about using FRI for data-availability sampling?

FRIDA: Data-Availability Sampling from FRI

In an upcoming Crypto 2024 paper by Hall-Andersen (zkSecurity), Simkin (Ethereum), and Wagner (Ethereum) we propose a new scheme for data-availability sampling from FRI. The central observation is essentially that the FRI proximity test actually satisfies additional properties: if a prover can make a commitment pass the FRI proximity test, then every additional position passing the query phase of FRI must lie on the closest codeword. This means that after running the FRI proximity test, you can view the FRI commitment as a vector commitment to a Reed-Solomon codeword and any position can be opened with a cost of $O(\log^2(n))$.

This is much cheaper that executing the FRI proximity test for every position, e.g. opening using the "quotienting trick", which has $O(n)$ computation and $O(\lambda \log^2(n))$ communication.

We propose that this observation could be applied to data-availability sampling. Essentially every node downloads the FRI commitment and verifies the FRI proximity test, this ensures that the commitment is "well-formed": the committed vector is close to the Reed-Solomon code. Then, every node samples random position in the vector and downloads the corresponding opening proof from the vector commitment (without any additional FRI proximity test).

If you are interested in additional details, the paper is also available (no pun intended) on eprint.

Keep reading
Latest

Optimizing Cryptography with AI

Many of us are using AI to generate code. Vibe coding cryptography is especially sensitive - you have to uphold strict mathematical correctness. This can lead to wrong security guarantees and soundness bugs. We will discuss what are some patterns to do it well.

Kobi Gurkan · August 11, 2026

Introducing zkvmBlast: Differential Fuzzing for Ethereum's zkVMs

zkVMs are moving to the center of Ethereum's roadmap, which means a bug in a zkVM is turning into a bug in Ethereum itself. We built zkvmBlast, a zkVM-agnostic differential fuzzer that runs the same program across SP1, RISC0, OpenVM, Pico, Zisk, and Airbender against a reference simulator and flags any disagreement. It hunts for both soundness and completeness bugs, with a deliberate focus on completeness, an under-explored class that can turn a single valid block into a liveness failure. We share the first batch of findings.

Stefanos Chaliasos, Martín Ochoa, Varun Thakore · August 10, 2026

Circom-Auditor: Open-Source Skills for Finding Vulnerabilities in Circom Code

We are releasing zk-skills, a set of open-source security skills for AI coding agents, starting with circom-auditor: a first line of defense against vulnerabilities in Circom circuits, compatible with both Claude Code and Codex. On the zkbugs benchmark it detects up to 66 of 70 known bugs when pointed at the vulnerable circuits, and up to 40 of 56 when let loose on the full original codebases, far ahead of existing Circom security tools.

Stefanos Chaliasos, Hao Pham, False Witness Team · August 05, 2026
Recommended

Proofs On A Leash: Post-Quantum Lattice SNARK With Greyhound

In this engaging blog post, we dive into the future of cryptography by exploring how lattice-based proof systems could fend off the quantum threat. We break down Greyhound, a promising lattice-based solution, explaining its transparent nature, efficient construction, and adaptability with today's systems. Along the way, you'll get a glimpse of key concepts like lattices, Ajtai commitments, and how Greyhound cleverly ensures security and efficiency. Whether you’re curious about the cutting-edge of cryptographic research or just want to understand the basics of quantum-resistant solutions, this post offers both depth and clarity.

David Wong · June 03, 2025

Become a Halo2 Hero: Master Zero-Knowledge Proofs with Our New Course

We're teaming up with the Zircuit team to bring you a new course on Halo2 development that's perfect for Rust developers eager to dive into creating Halo2 circuits from scratch. No need to be a cryptographer or have prior knowledge of Halo2, PlonK, or zkSNARKs. Our course starts with the basics and guides you through building increasingly complex circuits. By the end, you'll be a Halo Hero! Plus, you'll have access to complete, runnable code examples on GitHub. Ready to start your Halo2 journey? Check it out!

Mathias Hall-Andersen · November 14, 2024

Halo2's Elegant Transcript As Proof

In this blog post, we explore a clever design in Zcash's halo2 implementation for securing the Fiat-Shamir transformation. By using a mutable transcript, the process ensures that values are automatically absorbed, reducing potential bugs. You'll find explanations of the distinct roles of `write` and `read` functions for points and scalars, highlighting how this abstraction makes the prover-verifier interaction seamless and secure. If you're curious about the inner workings of cryptographic protocols, this is a fascinating read.

David Wong · September 30, 2025
More to explore

Listen to us on the latest episode of zeroknowledge.fm

Join our cofounder David Wong on the latest zk podcast as he dives into his compelling journey through cryptography, from his early days as a security consultant to his pivotal roles in major projects like Facebook's crypto initiatives and Mina. Get an insider's view on how we approach auditing in a Zero Knowledge context, the common pitfalls in ZK code, and how these insights shape our work. It's an engaging and informative chat for anyone fascinated by the world of cryptography and ZK technology!

ZK/SEC · August 30, 2023

Groth16, Intuitively

Groth16 is still the gold standard for succinct SNARKs: 128-byte proofs, constant-size verification, and a decade of real-world deployment. But despite its ubiquity, almost nobody explains *why* it works the way it does. In this post, we build Groth16 from the ground up, starting from R1CS and QAPs, then layer in pairings, trusted setup parameters, and the separator tricks (α, β, γ, δ) that make the scheme sound. By the end, you should have an intuitive grasp of every term in the final verifier equation.

David Wong · May 01, 2026

Playing with LaBRADOR: Building Compact Lattice-based Proofs with Recursion

In this post, we explore LaBRADOR, a transparent, lattice-based proof system that achieves sublinear proof sizes through recursion. Built on the Module-SIS assumption, LaBRADOR lets a prover efficiently demonstrate knowledge of short vectors satisfying dot product constraints, general enough to express R1CS. The protocol’s key ideas include amortized openings, outer commitments, and a strategy to shrink the witness after each round of recursion. Together, these techniques make LaBRADOR a powerful, scalable framework for post-quantum zero-knowledge proofs.

Georgios Raikos · November 13, 2025