arkworks-rs / snark

Interfaces for Relations and SNARKs for these relations
https://www.arkworks.rs
Apache License 2.0
776 stars 209 forks source link

Merge Marlin & Poly_commit #223

Closed jon-chuang closed 4 years ago

jon-chuang commented 4 years ago

Addressed mostly to @Pratyush:

I am wondering if there is any sense in merging Marlin and poly_commit into the repo?

I am trying to write a Plonk implementation based on Zexe's tooling. I was thinking it made logical sense to group all the available tools in the ecosystem together.

If I'm not wrong, the Plonk poly commit scheme is a batched version of KZG10 made over multiple rounds, and quite similar to Marlin.

I'm also not sure if it is possible at all to create an interface in poly_commit that would support things like FRI as is used in Redshift. My guess is no.

burdges commented 4 years ago

https://github.com/o1-labs/marlin/pull/44

ValarDragon commented 4 years ago

I'm also not sure if it is possible at all to create an interface in poly_commit that would support things like FRI as is used in Redshift. My guess is no.

From the prover side, it doesn't seem likely to me that a merged infrastructure for FRI/RS-IOP based SNARKs and PC based SNARKs makes sense. If you didn't care about losing some (notable) factors for efficiency you could do it. The trouble is RS-IOP based SNARKs work with primarily with the evaluations of polynomials (the Lagrange basis), whereas KZG based SNARKs work with polynomials in the monomial basis. This difference causes notable changes in how you actually write your prover, in order to minimize many heavy operations(such as large FFTs).

From the verifier / constraints standpoint, I think a unified library can happen. (and makes sense given an elegant solution to specify where additive homomorphism optimizations are used)

Pratyush commented 4 years ago

We're planning on unifying the ecosystem a bit further, with some refactors, so I'm closing this issue for now.