diff --git a/Cargo.toml b/Cargo.toml index d23e8e0a..e3dfd93c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nova-snark" -version = "0.33.0" +version = "0.34.0" authors = ["Srinath Setty "] edition = "2021" description = "High-speed recursive arguments from folding schemes" diff --git a/README.md b/README.md index 2447e30f..423e9ee7 100644 --- a/README.md +++ b/README.md @@ -14,9 +14,9 @@ This repository provides `nova-snark,` a Rust library implementation of Nova ove At its core, Nova relies on a commitment scheme for vectors. Compressing IVC proofs using Spartan relies on interpreting commitments to vectors as commitments to multilinear polynomials and prove evaluations of committed polynomials. Our code implements two commitment schemes and evaluation arguments: 1. Pedersen commitments with IPA-based evaluation argument (supported on all three curve cycles), and -2. Multilinear KZG commitments and evaluation argument (supported on curves with pairings e.g., BN254). +2. HyperKZG commitments and evaluation argument (supported on curves with pairings e.g., BN254). -For more details on using multilinear KZG, please see the test `test_ivc_nontrivial_with_compression`. The multilinear KZG instantiation requires a universal trusted setup (the so-called "powers of tau"). In the `setup` method in `src/provider/mlkzg.rs`, one can load group elements produced in an existing KZG trusted setup (that was created for other proof systems based on univariate polynomials such as Plonk or variants), but the library does not currently do so (please see [this](https://github.com/microsoft/Nova/issues/270) issue). +For more details on using HyperKZG, please see the test `test_ivc_nontrivial_with_compression`. The HyperKZG instantiation requires a universal trusted setup (the so-called "powers of tau"). In the `setup` method in `src/provider/hyperkzg.rs`, one can load group elements produced in an existing KZG trusted setup (that was created for other proof systems based on univariate polynomials such as Plonk or variants), but the library does not currently do so (please see [this](https://github.com/microsoft/Nova/issues/270) issue). We also implement a SNARK, based on [Spartan](https://eprint.iacr.org/2019/550.pdf), to compress IVC proofs produced by Nova. There are two variants, one that does *not* use any preprocessing and another that uses preprocessing of circuits to ensure that the verifier's run time does not depend on the size of the step circuit. diff --git a/examples/and.rs b/examples/and.rs index 07cc12ab..5e8b9b2e 100644 --- a/examples/and.rs +++ b/examples/and.rs @@ -295,7 +295,7 @@ fn main() { assert!(res.is_ok()); // produce a compressed SNARK - println!("Generating a CompressedSNARK using Spartan with multilinear KZG..."); + println!("Generating a CompressedSNARK using Spartan with HyperKZG..."); let (pk, vk) = CompressedSNARK::<_, _, _, _, S1, S2>::setup(&pp).unwrap(); let start = Instant::now(); diff --git a/examples/minroot.rs b/examples/minroot.rs index 97f11265..abca2164 100644 --- a/examples/minroot.rs +++ b/examples/minroot.rs @@ -255,7 +255,7 @@ fn main() { assert!(res.is_ok()); // produce a compressed SNARK - println!("Generating a CompressedSNARK using Spartan with multilinear KZG..."); + println!("Generating a CompressedSNARK using Spartan with HyperKZG..."); let (pk, vk) = CompressedSNARK::<_, _, _, _, S1, S2>::setup(&pp).unwrap(); let start = Instant::now(); diff --git a/src/provider/hyperkzg.rs b/src/provider/hyperkzg.rs index 0e6380f7..49e71196 100644 --- a/src/provider/hyperkzg.rs +++ b/src/provider/hyperkzg.rs @@ -667,7 +667,7 @@ where } } -/// An implementation of Nova traits with multilinear KZG over the BN256 curve +/// An implementation of Nova traits with HyperKZG over the BN256 curve #[derive(Clone, Copy, Debug, Eq, PartialEq)] pub struct Bn256EngineKZG;