Skip to content

Related work comparison #4

@InaOana

Description

@InaOana

Reading LegoSNARK:
Additional properties to add to the LC paper intro/related work for a more in-depth description regarding CP-SNARKs (commit-and-prove SNARKs) and cc-SNARKs (commit-carrying SNARKS). A summary of these properties can be added to the intro/related work of RVRF paper/ZK continuation.

  • CP-SNARKs have the commitment key chosen prior and independently of its crs. In contrast, for cc-SNARKs the commitment key is dependent on the relation that is given as input to KeyGen and both the commitment key as well as the crs are an output of KeyGen.

  • The commitment computed using the independent commitment key related to a CP-SNARKs is part of the public input of that CP-SNARK and can be shared by multiple SNARKs/CP-SNARKs. In contrast, the commitment computed using the commitment key of a cc-SNARK is part of the proof for that SNARK and, is thus, tied to it; for example, for the cc-SNARK with double binding of Groth16, this commitment needs to be re-computed every time there is some new public input used.

  • Regarding extraction from commitments in cc-SNARKs and in CP-SNARKS: since commitments in cc-SNARKs are part of the proof, the extractor corresponding to the cc-SNARK (for a given adversary), also extracts the witness/message committed in the respective commitment. This is not the case for CP-SNARKs as the commitment scheme in that case has its output used as public input.

======================================

Comparison with our the custom SNARKs in our LC paper:

  • The commitment key for KZG commitments used with our custom SNARKs are relation-independent in the sense that it does not require a specific relation to be generated. However, since our custom SNARKs have an updatable and universal CRS, they are identical, or better said: In our case, the commitment key is part of the updatable and universal CRS for our SNARKs.

  • The commitment created with the commitment key is public input for our custom SNARK and is not part of the proof.

  • Regarding extraction: For our compiler for hybrid model SNARKs with mixed inputs, in the second compilation step, a crucial part of the security proof (Lemma 11) is the fact that the commitment scheme is not only binding but also has knowledge-soundness. This is thus an extra property that is not part of the definition of CP-SNARK as presented LegoSNARK.

  • Maybe I can add more differences here related to how we define KS and why and related to the compilation step and the types of relations that are covered.

  • In the LC paper we are not interested in interoperability with other SNARKs or proving composite and complex NP relations, but we are focused on designing custom SNARKs that are as efficient as possible for our use case. Maybe any other compilation step introduces additional costs compared with what we need.

======================================

Further notes:

  • The compiler described in LegoSNARK can take a cc-SNARK, cc-SNARK with weak binding or a cc-SNARK with double binding and transform it into a CP-SNARK (under certain conditions, please see Theorem B.1, page 51).

  • On page 18, there is a list of existing (as of early 2019) CP-SNARKs, cc-SNARKs, cc-SNARKs with weak binding (also called weak cc-SNARKs) --> Groth16 is such a SNARK. It is also mentioned that Groth16 can be compiled into a cc-SNARK with double binding. That is more efficient than compiling directly to CP-SNARK using the compiler in Theorem B.1.

======================================

Further questions:

  • What kind of SNARKs are PLONK, Marlin etc w.r.t. CP-SNARK as in LegoSNARK framework?
    The answer is in the ECLIPSE paper (https://eprint.iacr.org/2021/934): their compiler creates CP-SNARKS for PLONK, Marlin and Sonic.

  • How does item 1) on page 7 of LegoSNARK help us claim that our custom SNARKs in the LC paper are more efficient than alternatives? (@AlistairStewart)

  • I need some clarification as to what and how/why/how general is the efficiency claim made in item 1) on page 7 of LegoSNARK. Same question and clarification needed to understand what is being compared in section 7.1 of LegoSNARK. How does that help our claims about efficiency claims for our LC related SNARKs? (@AlistairStewart)

Metadata

Metadata

Assignees

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions