Skip to content

ethereum/soundcalc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

soundcalc

🚧 WIP right now. Please give us some time. 🚧

🔎 Latest report lives in results.md

A universal soundness calculator across FRI-based zkEVM proof systems and security regimes.

It aims to answer questions like:

  • "What if RISC0 moves from Babybear⁴ to Goldilocks³?"
  • "What if OpenVM moves from the Toy Problem heuristic to the provable Johnson Bound Regime?"
  • "What if ZisK moves from the Toy Problem heuristic to the provable Unique Decoding Regime?"

You can run the calculator by doing python3 -m soundcalc. As a result, the calculator generates / updates results.md.

Supported systems

We currently support the following zkEVMs:

  • RISC0
  • Miden
  • ZisK

We support the following security regimes (see below for explanation of regimes):

  • Unique Decoding Regime (UDR)
  • Johnson Bound Regime (JBR)

In addition, we give a number based on the ethstark toy problem conjecture for reference.

Background on Security Regimes

Consider a fixed set of parameters describing the prover and verifier of a FRI-based zkEVM. To evaluate the concrete soundness level of such a system, we introduce a parameter θ in the range (0, 1).

The soundness level is then determined as a function of θ and the zkEVM parameters (e.g., field size, code rate). Depending on the value of θ, the analysis falls into different regimes:

  • UDR (Unique Decoding Regime): $\theta \leq (1 - \rho)/2$, where $\rho$ is the code rate.
  • JBR (Johnson Bound Regime): $(1 - \rho)/2 < \theta < 1 - \sqrt{\rho}$.

Crucially, θ is not an input to the prover or verifier code—it is only used in the soundness analysis. All three regimes therefore apply to the same zkEVM instance without any change.

We also output the security level estimated by considering the currently best known attack. Here, we currently follow the Toy Problem Regime (TPR) / ethSTARK conjecture.

Incorporation of recent work

A flurry of new results on proximity gaps were published in November 2025 (see Nico's summary).

In soundcalc we have incorporated:

Project Layout

  • soundcalc/main.py: Entry point
  • soundcalc/zkevms/: One file per supported zkEVM
  • soundcalc/regimes/: One file per regime (unique decoding, johnson bound, ...)
  • soundcalc/common/: Common utilities used by the entire codebase
  • soundcalc/report.py: Markdown report generator

Related work

The codebase is heavily based on RISC0's Python soundness calculator.

More inspiration:

Based on papers (links point to specific versions where possible):

About

A universal soundness calculator across FRI-based zkEVMs and security regimes

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages