diff --git a/book/src/SUMMARY.md b/book/src/SUMMARY.md index ab65443b32..f234b2e4d2 100644 --- a/book/src/SUMMARY.md +++ b/book/src/SUMMARY.md @@ -43,4 +43,5 @@ - [Polynomials](background/polynomials.md) - [Cryptographic groups](background/groups.md) - [Elliptic curves](background/curves.md) + - [Polynomial commitment using inner product argument](background/pc-ipa.md) - [Recursion](background/recursion.md) diff --git a/book/src/design/proving-system/inner-product.md b/book/src/design/proving-system/inner-product.md index 41c4f440b7..7ccc9b2fbf 100644 --- a/book/src/design/proving-system/inner-product.md +++ b/book/src/design/proving-system/inner-product.md @@ -3,6 +3,8 @@ Halo 2 uses a polynomial commitment scheme for which we can create polynomial commitment opening proofs, based around the Inner Product Argument. +> TODO: Explain Halo 2's variant of the IPA. +> > It is very similar to $\text{PC}_\text{DL}.\text{Open}$ from Appendix A.2 of [BCMS20]. > See [this comparison](comparison.md#bcms20-appendix-a2) for details. > diff --git a/book/src/user/experimental-features.md b/book/src/user/experimental-features.md index 9196501814..b64b9cbc2c 100644 --- a/book/src/user/experimental-features.md +++ b/book/src/user/experimental-features.md @@ -4,7 +4,11 @@ In `privacy-scaling-explorations/halo2` fork we have implemented many experiment ## Commitment scheme abstraction -To support different kinds of polynomial commitment schemes, we've added a trait `CommitmentScheme` to allow create/verify proofs with different commitment scheme implementations, currently there are one available implementations in this fork: +To support different kinds of polynomial commitment schemes, we've added a trait `CommitmentScheme` to allow create/verify proofs with different commitment scheme implementations, currently there are 2 available implementations in this fork: + +- [`IPACommitmentScheme`](https://privacy-scaling-explorations.github.io/halo2/halo2_proofs/poly/ipa/commitment/struct.IPACommitmentScheme.html) + + The original implementation from `zcash/halo2` with the original multi-open strategy `{Prover,Verifier}IPA` - [`KZGCommitmentScheme`](https://privacy-scaling-explorations.github.io/halo2/halo2_proofs/poly/kzg/commitment/struct.KZGCommitmentScheme.html) @@ -16,6 +20,10 @@ To support different kinds of polynomial commitment schemes, we've added a trait When using `create_proof` and `verify_proof`, we need to specify the commitment scheme and multi-open strategy like: ```rust +// Using IPA +create_proof, ProverIPA<_>, _, _, _, _> +verify_proof, ProverIPA<_>, _, _, _> + // Using KZG with GWC19 multi-open strategy create_proof, ProverGWC<_>, _, _, _, _> verify_proof, ProverGWC<_>, _, _, _>