|
2 years ago | |
---|---|---|
shockwave_plus | 2 years ago | |
tensor_pcs | 2 years ago | |
.gitignore | 2 years ago | |
Cargo.toml | 2 years ago | |
README.md | 2 years ago |
Shockwave is a variant of Brakedown that uses Reed-Solomon code instead of a linear-time encodable code. Shockwave+ is an extension of Shockwave that works over all finite fields by using ECFFT instead of FFT for low-degree extension of polynomial evaluations.
Brakedown has a linear-time prover and is field-agnostic (i.e. works over all finite fields), but its proofs are concretely larger than Shockwave’s.
Shockwave provides shorter proofs and lower verification time but requires an FFT-friendly field to achieve $O (n\log{n})$ proving time.
Shockwave+ inherits the smaller proofs of Shockwave and is also field-agnostic. It uses the EXTEND operation from ECFFT to run Reed-Solomon encoding in $n\log{n}$ time.
Crates shockwave_plus contains the prover/verifier for a zero-knowledge proof of R1CS satisfiability. It’s based on the PIOP from Spartan, and uses the multilinear polynomial commitment scheme implemented in tensor_pcs.
Zero-Knowledge
We use the zero-knowledge sum-check protocol from Libra to transform the Spartan PIOP into a zero-knowledge PIOP. And use a technique from BCG+17 to make the polynomial commitment scheme zero-knowledge.
The EXTEND operation is implemented in a separate crate ecfft and is used in tensor_pcs.
TBD
cargo test