cfri is a bring-up workspace for ultra-efficient FRI-based ZK provers and verifiers.
Owned research-code imports:
- Blaze / BaseFold CFRI fork, trimmed to owned protocol files at
crates/cfri/src/backend/{blaze,basefold}.rsplus shared support folders. - PIP_FRI family implementations:
crates/cfri/src
The implementations are now copied into the core crate so we can claim ownership and simplify them directly. The active Blaze/BaseFold code now builds on stable Rust:
.\scripts\build.ps1
.\scripts\test.ps1scripts/test.ps1 defaults to compile-only tests (cargo test --no-run) so bring-up stays fast and deterministic. Use .\scripts\test.ps1 -Run for full test execution.
Benchmarks are intentionally not part of the unified scripts.
The owned implementations are being moved behind a small concrete PCS facade before deeper cleanup. The documented target is in docs/api.md. The important rule is that each scheme should expose the same simple setup -> trim -> commit -> open -> verify shape without adding a heavyweight generic composition layer.
scripts/build.ps1passes on Windows against the owned core crates.scripts/test.ps1passes as a compile-only test gate.scripts/test.ps1 -Runnow executes the default fast tests in both owned crates. Large proof-size sweeps and proof-system matrix tests are marked#[ignore]with reasons, so they remain available explicitly without slowing the default gate.pcs::pip_frinow binds verification to the supplied commitment and opening point in the transitional facade. Small tests cover wrong evaluation, wrong commitment, wrong sub-point, and wrong tensor-side point.- Initial slow-test findings:
- PiPFRI's
fri_pcs_testusedvariable_num = 20and exceeded 60 seconds. - PiPFRI proof-size tests swept large parameters such as 17 through 23 variables.
- PiPFRI's interwoven Merkle test used a randomized retry loop against a proof-size threshold and took several seconds.
- The initial third-party reference was the wrong Blaze source; it contained Brakedown, not the Blaze RAA/PRAA implementation. The corrected Blaze/BaseFold implementation is now owned in
crates/cfri/src/backend/{blaze,basefold}.rs.
- PiPFRI's
- PiPFRI currently emits a warning in
de_networkfor aconst Cell<bool>that does not provide shared mutable state. That is worth fixing during the testing hardening pass.