Skip to content

Commit

Permalink
docs: Update README with exclusive library features and improvements (#…
Browse files Browse the repository at this point in the history
…366)

- Expanded HyperKZG description in README to include Zeromorph and highlight unique support for Supernova.
- Added notification about exclusive availability of Zeromorph implementation in this library, pending integration into official Nova repository.
- Incorporated performance enhancements to the HyperKZG implementation inspired by the BDFG20 (Shplonk) protocol.
  • Loading branch information
huitseeker authored Mar 18, 2024
1 parent 7ba1739 commit 6ed7a4c
Showing 1 changed file with 8 additions and 1 deletion.
9 changes: 8 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,17 @@ At its core, Nova relies on a commitment scheme for vectors. Compressing IVC pro
2. HyperKZG commitments and evaluation argument (supported on curves with pairings e.g., BN254).
3. KZG commitments with a [Zeromorph](https://eprint.iacr.org/2023/917) evaluation argument (supported on curves equipped with a pairing).

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).
For more details on using HyperKZG / Zeromorph, 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.

> [!NOTE]
> This library features an implementation of Zeromorph, exclusively available here until the related changes are integrated with the official Nova repository via pull request [#301](https://github.com/microsoft/Nova/pull/301).
>
> Additionally, we've enhanced Nova to support Supernova, offering a variant that is currently unique to this repository. This advanced capability will remain exclusive here until pull request [#283](https://github.com/microsoft/Nova/pull/283) is merged into the official Nova codebase.
>
> Our implementation of HyperKZG incorporates notable performance enhancements inspired by Shplonk (BDFG20), as detailed in [this paper](https://eprint.iacr.org/2020/081). These improvements are specifically designed to enhance efficiency and speed.
## Supported front-ends
A front-end is a tool to take a high-level program and turn it into an intermediate representation (e.g., a circuit) that can be used to prove executions of the program on concrete inputs. There are three supported ways to write high-level programs in a form that can be proven with Nova.

Expand Down

1 comment on commit 6ed7a4c

@github-actions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmarks

Table of Contents

Overview

This benchmark report shows the Arecibo GPU benchmarks.
NVIDIA L4
Intel(R) Xeon(R) CPU @ 2.20GHz
32 vCPUs
125 GB RAM
Workflow run: https://github.com/lurk-lab/arecibo/actions/runs/8327067367

Benchmark Results

RecursiveSNARK-NIVC-2

ref=7ba1739 ref=6ed7a4c
Prove-NumCons-6540 44.22 ms (✅ 1.00x) 44.30 ms (✅ 1.00x slower)
Verify-NumCons-6540 34.05 ms (✅ 1.00x) 34.33 ms (✅ 1.01x slower)
Prove-NumCons-1028888 318.72 ms (✅ 1.00x) 318.93 ms (✅ 1.00x slower)
Verify-NumCons-1028888 247.92 ms (✅ 1.00x) 249.77 ms (✅ 1.01x slower)

CompressedSNARK-NIVC-Commitments-2

ref=7ba1739 ref=6ed7a4c
Prove-NumCons-6540 10.72 s (✅ 1.00x) 10.57 s (✅ 1.01x faster)
Verify-NumCons-6540 50.77 ms (✅ 1.00x) 50.47 ms (✅ 1.01x faster)
Prove-NumCons-1028888 54.23 s (✅ 1.00x) 51.99 s (✅ 1.04x faster)
Verify-NumCons-1028888 50.32 ms (✅ 1.00x) 50.40 ms (✅ 1.00x slower)

Made with criterion-table

Please sign in to comment.