Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nova forward ports (early december edition, easy) #176

Merged
merged 3 commits into from
Dec 14, 2023
Merged

Conversation

huitseeker
Copy link
Member

xiaolou86 and others added 3 commits December 13, 2023 09:53
* Remove an unnecessary clone in PolyEvalWitness

* Enhance code efficiency by direct vector initialization
@huitseeker huitseeker changed the title Nova forward ports (early december edition) Nova forward ports (early december edition, easy) Dec 13, 2023
## Tests and examples
This repository provides `nova-snark,` a Rust library implementation of Nova on a cycle of elliptic curves. The code currently supports Pallas/Vesta (i.e., Pasta curves) and BN254/Grumpkin elliptic curve cycles. One can use Nova with other elliptic curve cycles (e.g., secp/secq) by providing an implementation of Nova's traits for those curves (e.g., see `src/provider/mod.rs`).
## Details of the library
This repository provides `nova-snark,` a Rust library implementation of Nova over a cycle of elliptic curves. Our code supports three curve cycles: (1) Pallas/Vesta, (2) BN254/Grumpkin, and (3) secp/secq.
Copy link
Member

Choose a reason for hiding this comment

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

Just for clarity: secp256k1 / secq256k1?

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.

## 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.
Copy link
Member

Choose a reason for hiding this comment

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

What about arkworks? I guess we can capture some part of the market, if we add support of circuit compilation with arkworks. They also have circom bindings (https://github.com/arkworks-rs/circom-compat)

Copy link
Member Author

Choose a reason for hiding this comment

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

Nova depends on the ff/zkcrypto suite of traits. We could support Arkworks at the cost of a translation layer.

@huitseeker huitseeker added this pull request to the merge queue Dec 14, 2023
Merged via the queue into dev with commit d21532c Dec 14, 2023
3 checks passed
@huitseeker huitseeker deleted the port_december branch December 14, 2023 18:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants