https://github.com/alxiong/vrs
Verifiable Reed-Solomon (VRS) for VID, DAS, VSS, and more
https://github.com/alxiong/vrs
data-availability data-availability-sampling reed-solomon
Last synced: about 1 month ago
JSON representation
Verifiable Reed-Solomon (VRS) for VID, DAS, VSS, and more
- Host: GitHub
- URL: https://github.com/alxiong/vrs
- Owner: alxiong
- Created: 2024-12-16T05:00:29.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2026-01-27T06:35:52.000Z (2 months ago)
- Last Synced: 2026-01-27T19:48:21.008Z (2 months ago)
- Topics: data-availability, data-availability-sampling, reed-solomon
- Language: Rust
- Homepage:
- Size: 250 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Verifiable Reed-Solomon Encoding (VRS)
This repository contains implementations and benchmarks of various verifiable RS encoding schemes, which are commonly used in [Verifiable Information Dispersal (VID)](https://decentralizedthoughts.github.io/2024-08-08-vid/), [Data Availability Sampling](https://www.paradigm.xyz/2022/08/das) (DAS), and sometimes [Verifiable Secret Sharing](https://en.wikipedia.org/wiki/Verifiable_secret_sharing) (VSS).
## Get Started
Install [Rust](https://www.rust-lang.org/) and [`just` runner](https://just.systems/).
``` sh
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
```
## Toolkit
_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, implementd `jf_pcs::PolynomialCommitmentScheme` with benchmarks. Additionally, proof and verification of `PartialEval` (at X or Y) are available.
- `multi_evals`: fast algorithm for computing n evaluation/opening proofs, both for the univariate (a.k.a. [FK23](https://eprint.iacr.org/2023/033)) 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](https://eprint.iacr.org/2024/1362.pdf) for Ethereum, also relying on univariate multi-evals.
- `nnt`: VRS scheme in [NNT'22](https://arxiv.org/pdf/2111.12323) for VID, instantiated with KZG and Pedersen.
- `fri`: FRI protocol (with grinding)
- parameter selection suggested by [BT'24](https://eprint.iacr.org/2024/1161), flexible 80/100-bit security based on provable or conjectured soundness
- `frida`: VRS scheme in [FRIDA](https://eprint.iacr.org/2024/248) for DAS
- `zoda`: based on [ZODA](https://eprint.iacr.org/2025/034) for DAS
## Benchmarks
View all the benchmark codes in [`./benches`](./benches) and some early results in [`./BENCH.md`](./BENCH.md) and in [this hackmd post](https://hackmd.io/@alxiong/vrs-bench).