## Agenda - CCS - Multifolding PoC - E2E Integration & Upstream effort - Next steps --- ## Customizable Constraint System (CCS) - R1CS generalization; translate R1CS statement into CCS statement (NP-complete equivalance) - only matrix-vector products and Hadamard (entry-wise) vector products - Capture R1CS, Plonkish and AIR w/o overhead - Not tightly coupled to proof system Note: Oskar --- ### CCS continue - Promise: Unify R1CS/Plonkish/Air, separate constraint system and back-end - Nova not limited to R1CS, use Plonkish for different proof systems, etc ![](https://hackmd.io/_uploads/H1kXPPRj2.png) (From [Thaler's 17 misconceptions about SNARKs](https://a16zcrypto.com/posts/article/17-misconceptions-about-snarks/#section--6)) --- ![](https://hackmd.io/_uploads/S1XNdPAj2.png) --- ### CCS - definition and R1CS->CCS - [CCS notes (click me)](https://hackmd.io/nQtquuk9QCGiB9EhUPgXvg) - Definition - R1CS->CCS - [CCS paper](https://eprint.iacr.org/2023/552.pdf) --- ### CCS -> Plonkish See: https://hackmd.io/nQtquuk9QCGiB9EhUPgXvg#CCS-and-Plonkish-intro Note: Emphasithe on witness deduplication. --- ### CCS - Lookup ![](https://hackmd.io/_uploads/B1-XMdAj3.png) --- ### CCS - Future? - We lack a working Plonkish translation. - Fast enough? - Big changes for lookups? Dynamic lookups possible? - Traction/motivation for tooling to switch? - We need a standard plonk format to transpile from. PLAF? - Follow up from new papers as ProtoStar for CCS. (Already not in ProtoGalaxy). --- ## Multifolding PoC - Code: https://github.com/privacy-scaling-explorations/multifolding-poc ![](https://hackmd.io/_uploads/Byy333Aoh.png) --- ## Multifolding PoC (part 1) - Slides https://docs.google.com/presentation/d/13aRS8LA5fuNUOFX_c8Im6LOcsMSWeMezP8NurtsfCMA/edit?usp=sharing Note: George --- ## Multifolding PoC (part 2) - Slides: https://github.com/arnaucube/math/blob/master/slides_hypernova-part2-multifolding-unfolded.pdf Note: Arnau --- ## Integration & Upstream effort - Goal: Integrate & upstream end-to-end with [microsoft/Nova](https://github.com/microsoft/Nova) - E.g. ParaNova PoC not upstreamed, harder to get feedback loops with community - Rationale 1: Nova->HyperNova small diff, less work for E2E PoC with realistic benchmarks - Rationale 2: Schelling point for Nova work (Nova Scotia, Lurk Labs, ParaNova PoC etc) --- ### Integration cont - Above was in theory, in practice many challenges - Work done in [pse/Nova](https://github.com/privacy-scaling-explorations/nova) main branch, ~4k LOC - A lot of problems in terms of libraries, polynomial APIs/representations, etc ![](https://hackmd.io/_uploads/B1rO_Ok3h.png =200x200) Note: Oskar --- ### Current status - E2E Integration mostly done but missing some WIP things: sumcheck verifier circuit; final folding steps; MinRoot benchmarks - Upstream PRs - WIP PR in [microsoft/Nova](https://github.com/microsoft/Nova/pull/175) - Addressing major issues/feedback then updating this - Splitting up into smaller chunks, some merged --- ### Some problems we faced - Extremely abstracted trait system in Nova (premature opt). - Group trait re-impl. - Some inline impls for poly ops (also fixed to R1CS case only). - VirtualPoly/MLE EqPoly, endianness & others. - Providers needed. --- ### Some problems we faced - Sumcheck embedded into Nova. Hard to extract and generalize. - Lots of legacy code that would need refactor. - Bellpearson makes write circuits almost imposible. --- ## Next steps - [pse/Nova](github.com/privacy-scaling-explorations/nova): [issues](https://github.com/privacy-scaling-explorations/Nova/issues), [sumcheck verifier](https://github.com/privacy-scaling-explorations/Nova/pull/28), [complete folding](https://github.com/privacy-scaling-explorations/Nova/issues/50) - [Upstream PRs](https://github.com/microsoft/Nova/pulls) - Benchmarks: E2E working -> MinRoot - For more complex benchmark need time+Plonk conversion (not worth it now?) - Basic write-up --- ### Decisions to take for future 1. Current path: Finish integration + benchmarks 2. Move to arkworks (now or later) 3. Change focus to shiny new thing --- ## Current path (cont) - Lookup integration? - Put severe work on refactoring Nova to get rid of Providers & others. - Start exploring a `Nova as a Blackbox` impl too. - Focus on a parallel client for HyperNova (ParaHyperNova). - Own some middle libs like `zkcrypto/poly` or `zkcrypto/sumcheck`. --- ## Misc links - [HyperNova study notes](https://hackmd.io/y8xoiHZ2SEGVTnDqWMJ-dQ?view) - [Sumcheck notes](https://hackmd.io/JOKCtRxGQM-HysukpW_yqQ)
{"title":"HyperNova Workshop","description":"Multifolding PoC","contributors":"[{\"id\":\"87bf749a-9a51-43dd-8c18-1ff87c4baaab\",\"add\":5364,\"del\":2106},{\"id\":\"13631d6c-63ba-42ae-99f7-7d45ca96a9fb\",\"add\":2015,\"del\":850},{\"id\":\"b74fc434-4be5-4873-9d70-b6c14fdeebbd\",\"add\":371,\"del\":82},{\"id\":\"52201d83-ba2b-4513-a169-bd0f7797e887\",\"add\":115,\"del\":153}]"}
    685 views