{"id":33066923,"url":"https://github.com/PayneJoe/PNova","last_synced_at":"2025-11-19T02:01:50.082Z","repository":{"id":202885952,"uuid":"708345433","full_name":"PayneJoe/PNova","owner":"PayneJoe","description":"Plonkish Nova implementation along with advanced features","archived":false,"fork":false,"pushed_at":"2023-12-16T09:17:30.000Z","size":762,"stargazers_count":15,"open_issues_count":0,"forks_count":5,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-06-16T07:33:43.980Z","etag":null,"topics":["folding","lookup","nova","plonk"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PayneJoe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-10-22T09:34:43.000Z","updated_at":"2024-03-15T08:06:44.000Z","dependencies_parsed_at":"2023-11-23T06:22:02.802Z","dependency_job_id":"708cfbd1-c647-42d0-ab9e-258f4c31fee2","html_url":"https://github.com/PayneJoe/PNova","commit_stats":null,"previous_names":["paynejoe/pnova"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/PayneJoe/PNova","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PayneJoe%2FPNova","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PayneJoe%2FPNova/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PayneJoe%2FPNova/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PayneJoe%2FPNova/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PayneJoe","download_url":"https://codeload.github.com/PayneJoe/PNova/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PayneJoe%2FPNova/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":285170109,"owners_count":27126456,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-19T02:00:05.673Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["folding","lookup","nova","plonk"],"created_at":"2025-11-14T08:00:31.648Z","updated_at":"2025-11-19T02:01:50.074Z","avatar_url":"https://github.com/PayneJoe.png","language":"Rust","funding_links":[],"categories":["Code (software repositories)"],"sub_categories":["Teaching / experimental implementations"],"readme":"# PNova\n\nAs 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.\n\n\u003cbr /\u003e\n\n##  Intuition About Plonkish Nova\n![Alt text](image-1.png)\n\n\u003cbr /\u003e\n\n## Few Thoughts\n- Jellyfish(TurboPlonk/UltraPlonk) supporting relaxed plonkish circuit SAT\n- KZG pcs for primary proof over BN254 curve, and IPA pcs for secondary proof over Grumpkin curve\n- Poseidon Circuit based Jellyfish\n- Keccak Transcript \n- Native verification for final first proof (Bn254 curve) \n- Non-native verification for final secondary proof (Grumpkin curve)\n\n\u003cbr /\u003e\n\n## Details About Implementation\n\nBefore intensive coding we will give more comprehensive details as much as possible, including some attestation code:\n- [Thinking in Folding Scheme: Cross Term in R1CS](https://hackmd.io/@70xfCGp1QViTYYJh3AMrQg/BJZPMjIfT)\n- [Thinking in Folding Scheme: Cross Term in Plonk](https://hackmd.io/@70xfCGp1QViTYYJh3AMrQg/SkDf2nIzp)\n- [Thinking in Folding Scheme: Cycle Curves](https://hackmd.io/@70xfCGp1QViTYYJh3AMrQg/r1bN8nLMp)\n- [Plonk From Scratch](https://hackmd.io/@70xfCGp1QViTYYJh3AMrQg/HJzwPUU7a)\n\n\u003cbr /\u003e\n\n## Roadmap\n\n| Features                                         | Status  |                                      Repo                                      |                                        Doc                                        |\n| ------------------------------------------------ | :-----: | :----------------------------------------------------------------------------: | :-------------------------------------------------------------------------------: |\n| **Stage One**                                    |         |                                                                                |                                                                                   |\n| 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) |\n| Compressed Relaxed UltraPlonk Backend/Frontend   | Ongoing |                                                                                |                                                                                   |\n| **Stage Two**                                    |         |                                                                                |                                                                                   |\n| Uncompressed NIFS                                | Ongoing |          [ark-nifs](https://github.com/PayneJoe/PNova/tree/ark-nifs)           |       [Plonkish Nova](https://hackmd.io/@70xfCGp1QViTYYJh3AMrQg/rkJYGYm46)        |\n| Uncompressed Cycle-Curve Circuits                |  TODO   |                                                                                |                                                                                   |\n| Support PLookup/LogUp Folding                    |  TODO   |                                                                                |                                                                                   |\n| **Stage Three**                                  |         |                                                                                |                                                                                   |\n| compressed NIFS                                  |  TODO   |                                                                                |                                                                                   |\n| Compressed Cycle-Curve Circuits                  |  TODO   |                                                                                |                                                                                   |\n| **Stage Four**                                   |         |                                                                                |                                                                                   |\n| Cycle-fold Delegated Circuit                     |  TODO   |                                                                                |                                                                                   |\n| Improving logUp Argument with GKR                |  TODO   |                                                                                |                                                                                   |\n| Memory Check Based Lookup Argument               |  TODO   |                                                                                |                                                                                   |\n| GKR Based Permutation Check                      |  TODO   |                                                                                |                                                                                   |\n\u003cbr /\u003e\n\n## Progress of Specific Task\n| Day      | Task                                      | Status       |\n| -------- | ----------------------------------------- | ------------ |\n| 11/08/23 | Relaxed Plonk / Data Structure            | $\\checkmark$ |\n| 11/10/23 | Relaxed Plonk / Frontend Dev              | $\\checkmark$ |\n| 11/12/23 | Relaxed Plonk / Frontend Testing          | $\\checkmark$ |\n| 11/15/23 | Relaxed Plonk / Backend Dev               | $\\checkmark$ |\n| 12/05/23 | Transcript Dev                            | $\\checkmark$ |\n| 12/06/23 | Poseidon RO Dev                           | $\\checkmark$ |\n| 12/07/23 | PCS Dev                                   | $\\checkmark$ |\n| 12/08/23 | NIFS Dev                                  | -            |\n| 12/08/23 | Poseidon Circuit RO Dev                   | -            |\n| 12/08/23 | Cycle Circuit Dev                         | -            |\n| 12/09/23 | Refactor ark-nifs (arkworks + jellyfish)  | $\\checkmark$ |\n| 12/10/23 | In-depth of secondary(delegation) circuit | -            |\n\n\u003cbr /\u003e\n\n## References\n[1] NOVA: https://eprint.iacr.org/2021/370.pdf\n\n[2] CycleFold: https://eprint.iacr.org/2023/1192.pdf\n\n[3] Protostar: https://eprint.iacr.org/2023/620.pdf\n\n[4] Multivariate lookup: https://eprint.iacr.org/2022/1530.pdf\n\n[5] Cached quotients: https://eprint.iacr.org/2022/1763.pdf\n\n[6] Improving logUp argument with GKR: https://eprint.iacr.org/2023/1284.pdf","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPayneJoe%2FPNova","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FPayneJoe%2FPNova","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPayneJoe%2FPNova/lists"}