Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/PayneJoe/PNova
Plonkish Nova implementation along with advanced features
https://github.com/PayneJoe/PNova
folding lookup nova plonk
Last synced: 15 days ago
JSON representation
Plonkish Nova implementation along with advanced features
- Host: GitHub
- URL: https://github.com/PayneJoe/PNova
- Owner: PayneJoe
- Created: 2023-10-22T09:34:43.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2023-12-16T09:17:30.000Z (7 months ago)
- Last Synced: 2024-02-29T04:38:40.430Z (4 months ago)
- Topics: folding, lookup, nova, plonk
- Language: Rust
- Homepage:
- Size: 744 KB
- Stars: 15
- Watchers: 3
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Lists
- awesome-folding - PayneJoe/PNova
README
# PNova
As we know [the original Nova implementation](https://github.com/microsoft/Nova) is based on R1CS. Our target is to implement a plonkish versioned NOVA, folding multiple Customer Gate/Lookup instances into one respectively. Thereafter, we can feed the folded instances into the relaxed Plonk SNARK.
## Intuition About Plonkish Nova
![Alt text](image-1.png)
## Few Thoughts
- Jellyfish(TurboPlonk/UltraPlonk) supporting relaxed plonkish circuit SAT
- KZG pcs for primary proof over BN254 curve, and IPA pcs for secondary proof over Grumpkin curve
- Poseidon Circuit based Jellyfish
- Keccak Transcript
- Native verification for final first proof (Bn254 curve)
- Non-native verification for final secondary proof (Grumpkin curve)
## Details About Implementation
Before intensive coding we will give more comprehensive details as much as possible, including some attestation code:
- [Thinking in Folding Scheme: Cross Term in R1CS](https://hackmd.io/@70xfCGp1QViTYYJh3AMrQg/BJZPMjIfT)
- [Thinking in Folding Scheme: Cross Term in Plonk](https://hackmd.io/@70xfCGp1QViTYYJh3AMrQg/SkDf2nIzp)
- [Thinking in Folding Scheme: Cycle Curves](https://hackmd.io/@70xfCGp1QViTYYJh3AMrQg/r1bN8nLMp)
- [Plonk From Scratch](https://hackmd.io/@70xfCGp1QViTYYJh3AMrQg/HJzwPUU7a)
## Roadmap
| Features | Status | Repo | Doc |
| ------------------------------------------------ | :-----: | :----------------------------------------------------------------------------: | :-------------------------------------------------------------------------------: |
| **Stage One** | | | |
| Uncompressed Relaxed UltraPlonk Backend/Frontend | Ongoing | [relaxed-stage-1](https://github.com/ZKMod-Lab/jellyfish/tree/relaxed-stage-1) | [Relaxed Plonk Step by Step](https://hackmd.io/@70xfCGp1QViTYYJh3AMrQg/BkT0ayKmT) |
| Compressed Relaxed UltraPlonk Backend/Frontend | Ongoing | | |
| **Stage Two** | | | |
| Uncompressed NIFS | Ongoing | [ark-nifs](https://github.com/PayneJoe/PNova/tree/ark-nifs) | [Plonkish Nova](https://hackmd.io/@70xfCGp1QViTYYJh3AMrQg/rkJYGYm46) |
| Uncompressed Cycle-Curve Circuits | TODO | | |
| Support PLookup/LogUp Folding | TODO | | |
| **Stage Three** | | | |
| compressed NIFS | TODO | | |
| Compressed Cycle-Curve Circuits | TODO | | |
| **Stage Four** | | | |
| Cycle-fold Delegated Circuit | TODO | | |
| Improving logUp Argument with GKR | TODO | | |
| Memory Check Based Lookup Argument | TODO | | |
| GKR Based Permutation Check | TODO | | |## Progress of Specific Task
| Day | Task | Status |
| -------- | ----------------------------------------- | ------------ |
| 11/08/23 | Relaxed Plonk / Data Structure | $\checkmark$ |
| 11/10/23 | Relaxed Plonk / Frontend Dev | $\checkmark$ |
| 11/12/23 | Relaxed Plonk / Frontend Testing | $\checkmark$ |
| 11/15/23 | Relaxed Plonk / Backend Dev | $\checkmark$ |
| 12/05/23 | Transcript Dev | $\checkmark$ |
| 12/06/23 | Poseidon RO Dev | $\checkmark$ |
| 12/07/23 | PCS Dev | $\checkmark$ |
| 12/08/23 | NIFS Dev | - |
| 12/08/23 | Poseidon Circuit RO Dev | - |
| 12/08/23 | Cycle Circuit Dev | - |
| 12/09/23 | Refactor ark-nifs (arkworks + jellyfish) | $\checkmark$ |
| 12/10/23 | In-depth of secondary(delegation) circuit | - |
## References
[1] NOVA: https://eprint.iacr.org/2021/370.pdf[2] CycleFold: https://eprint.iacr.org/2023/1192.pdf
[3] Protostar: https://eprint.iacr.org/2023/620.pdf
[4] Multivariate lookup: https://eprint.iacr.org/2022/1530.pdf
[5] Cached quotients: https://eprint.iacr.org/2022/1763.pdf
[6] Improving logUp argument with GKR: https://eprint.iacr.org/2023/1284.pdf