This repository contains implementations and benchmarks of various verifiable RS encoding schemes, which are commonly used in Verifiable Information Dispersal (VID), Data Availability Sampling (DAS), and sometimes Verifiable Secret Sharing (VSS).
Install Rust and just
runner.
cargo test --release
# run benchmark across VRS schemes
just bench
# only bench VID regimes
just bench vid
# only bench DAS regimes
just bench das
# More granular benchmarks for low-level building blocks
cargo bench
note: we only support arkworks
backends for now, zkcrypto
and plonky3
support are left as future work.
bivariate::DensePolynomial
: the missing dense polynomial implementation from arkworks, with basic arithmetic operations, including partial evaluation (at X or Y), mixed-sub and mixed-div by a univariate poly.bkzg
: a KZG variant for bivariate polynomials, implementdjf_pcs::PolynomialCommitmentScheme
with benchmarks. Additionally, proof and verification ofPartialEval
(at X or Y) are available.multi_evals
: fast algorithm for computing n evaluation/opening proofs, both for the univariate (a.k.a. FK23) and the bivariate case, with benchmarks.gxz
: Efficient VRS in GXZ'25- transparent: leveraging evaluation consolidation techniques and any multilinear PCS
- trusted: leveraging bKZG and fast
MultiPartialEval
advz
: VRS scheme for VID using only univariate multi-evals.peer_das
: PeerDAS for Ethereum, also relying on univariate multi-evals.nnt
: VRS scheme in NNT'22 for VID, instantiated with KZG and Pedersen.fri
: FRI protocol (with grinding)- parameter selection suggested by BT'24, flexible 80/100-bit security based on provable or conjectured soundness
frida
: VRS scheme in FRIDA for DAS
View all the benchmark codes in ./benches
and some early results in ./BENCH.md