# PCS
A polynomial commitment scheme allows a *prover* to commit to a polynomial $p(X)$, later on, the prover can compute openings to prove to the *verifier* that the commited polynomial can be evaluated to a claimed value $y$ at a certain point $x$, i.e. $y = p(x)$.
A polynomial commitment scheme should be:
- **binding**: once a polynomial is commited, it cannot be altered
- **hiding**: the verifier learns nothing about the polynomial beyond what is revealed in the proofs
# Comparison of IPA, FRI, and KZG Commitment Schemes
| **PCS** | **IPA** | **FRI** | **KZG** |
| ------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------- |
| **Trusted Setup** | <span style="color:green">Not required. </span> | <span style="color:green">Not required. </span> | Required |
| **Underlying Cryptography** | Rely on ECC. <span style="color:red">Requires a special cycle of elliptic curves (e.g., Pasta curves) for recursion. </span> | Rely on Reed-Solomon codes. <span style="color:green">Not rely on ECC. </span> | Rely on ECC (e.g., Elliptic Curve Pairings). |
| **Proof Size** |- <span style="color:orange">Small when recursion is used. </span> <br> - <span style="color:red">grows with circuit size otherwise. </span> | <span style="color:red">Larger proof sizes compared to IPA and KZG. </span> | <span style="color:green">Small, constant-sized proofs. </span> |
| **Verification Time** | Linear in circuit size if recursion is not used. |<span style="color:red"> Larger verification time compared to IPA (recursed) and KZG. </span> | <span style="color:green">Constant, highly efficient verification. </span> |
| **Quantum Resistance** | No. | <span style="color:green">Yes </span> | No |
| **Applicability to zk-Rollups (on-chain verification is executed on Ethereum)** | Inefficient due to linear verification scaling. (the efficient recursive version relied on Pasta curves are currently not supported on Ethereum.) | Inefficient due to larger proof sizes and slower verification. | <span style="color:green">Best suited due to constant-sized proofs and fast verification. </span> |
In summary:
| **PCS** | **IPA** | **FRI** | **KZG** |
| ------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------- |
| **Advantages** | - No trusted setup required. <br>- Efficient recursive composition when using Pasta curves. | - No trusted setup required. <br>- Not rely on elliptic curve cryptography.<br>- Fast proof generation and quantum resistance. |- Small proof size and fast verification time, even for large circuits.<br>- Suitable for zk-rollups due to scalability.|
| **Drawbacks** | - Requires Pasta curves for recursion, which are not efficiently supported on Ethereum. <br> - Without recursion, proof verification time grows linearly with circuit size, making it infeasible for large circuits like zk-rollups. | Large proof sizes and slow verification. | Requires a trusted setup, which can be a potential security risk if not done securely. |
# References
1. [KZG in Practice: Polynomial Commitment Schemes and Their Usage in Scaling Ethereum](https://scroll.io/blog/kzg)
2. [Proto-Danksharding](https://notes.ethereum.org/@vbuterin/proto_danksharding_faq#Couldn%E2%80%99t-we-use-some-other-commitment-scheme-without-a-trusted-setup)