# What is a polynomial commitment scheme?

A polynomial commitment scheme is a cryptographic protocol that allows a party to commit to a polynomial while keeping it hidden and later reveal and prove evaluations of the polynomial at specific points without revealing the polynomial itself. This is particularly useful in various cryptographic applications, including zero-knowledge proofs, verifiable computation, and blockchain systems.

### Key Properties of Polynomial Commitment Schemes

**Commitment**: A party can commit to a polynomial P(x)P(x)P(x) such that it generates a commitment CCC.**Evaluation**: The committing party can later provide an evaluation P(x)=yP(x) = yP(x)=y at a specific point xxx and prove that this evaluation is consistent with the committed polynomial.**Verification**: Any verifier can check the correctness of the evaluation and proof without learning anything about the polynomial itself.**Hiding**: The committed polynomial remains hidden until the committing party chooses to reveal it.**Binding**: The committing party cannot change the polynomial after committing to it.

### Components of a Polynomial Commitment Scheme

A polynomial commitment scheme typically involves the following components:

**Setup**: A setup algorithm that initializes the scheme and generates any necessary public parameters.**Commit**: A commitment algorithm that takes a polynomial and outputs a commitment.**Open**: An opening algorithm that reveals an evaluation at a specific point along with a proof.**Verify**: A verification algorithm that checks the validity of the revealed evaluation and proof.

### Formal Definition

Let P(x)P(x)P(x) be a polynomial over a field F\mathbb{F}F.

**Setup**: The setup algorithm Setup(λ)→pp\text{Setup}(\lambda) \rightarrow \text{pp}Setup(λ)→pp takes a security parameter λ\lambdaλ and outputs the public parameters pp\text{pp}pp.**Commit**: The commitment algorithm Commit(pp,P(x))→C\text{Commit}(\text{pp}, P(x)) \rightarrow CCommit(pp,P(x))→C takes the public parameters pp\text{pp}pp and the polynomial P(x)P(x)P(x), and outputs a commitment CCC.**Open**: The opening algorithm Open(pp,C,P(x),x0)→(ev,π)\text{Open}(\text{pp}, C, P(x), x_0) \rightarrow (\text{ev}, \pi)Open(pp,C,P(x),x0)→(ev,π) takes the public parameters pp\text{pp}pp, the commitment CCC, the polynomial P(x)P(x)P(x), and a point x0x_0x0, and outputs an evaluation ev=P(x0)\text{ev} = P(x_0)ev=P(x0) and a proof π\piπ.**Verify**: The verification algorithm Verify(pp,C,x0,ev,π)→{0,1}\text{Verify}(\text{pp}, C, x_0, \text{ev}, \pi) \rightarrow \{0, 1\}Verify(pp,C,x0,ev,π)→{0,1} takes the public parameters pp\text{pp}pp, the commitment CCC, the point x0x_0x0, the evaluation ev\text{ev}ev, and the proof π\piπ, and outputs 111 if the proof is valid (i.e., the evaluation is correct) and 000 otherwise.

### Example Schemes

Two prominent polynomial commitment schemes are:

**Kate-Zaverucha-Goldberg (KZG) Commitment**:**Setup**: Uses elliptic curve pairings and trusted setup.**Commit**: Generates a commitment using polynomial evaluations on elliptic curve points.**Open**: Provides a proof using elliptic curve pairings.**Verify**: Uses pairing-based cryptographic checks to verify the proof.

**Bulletproofs**:**Setup**: Requires a trusted setup or can be based on discrete logarithm assumptions.**Commit**: Uses vector commitments and inner-product arguments.**Open**: Provides a succinct proof.**Verify**: Verifies the proof using efficient cryptographic operations.

### Applications

**Zero-Knowledge Proofs**: Polynomial commitments are used in zk-SNARKs and zk-STARKs to efficiently prove statements about polynomials without revealing the polynomials themselves.**Verifiable Computation**: Polynomial commitments enable clients to verify the correctness of computations performed by a server.**Blockchain**: Used in various blockchain protocols to ensure the integrity and correctness of data without revealing sensitive information.

Polynomial commitment schemes are essential cryptographic primitives that provide both privacy and integrity for polynomial evaluations. They enable efficient and secure verification of polynomial computations, making them crucial for advanced cryptographic protocols and applications in modern secure systems.

**Applications in Crypto**

polynomial commitment schemes have found several applications in the crypto market, particularly in enhancing the efficiency and security of blockchain protocols and privacy-preserving technologies. Here are a few prominent examples:

### 1. zk-SNARKs (Zero-Knowledge Succinct Non-Interactive Arguments of Knowledge)

**Applications:**

**Zcash**: Zcash is a cryptocurrency that uses zk-SNARKs to enable private transactions. Polynomial commitments are used in zk-SNARKs to commit to polynomials representing the inputs and constraints of computations, allowing the verification of transactions without revealing their details.

### 2. zk-STARKs (Zero-Knowledge Scalable Transparent Arguments of Knowledge)

**Applications:**

**StarkWare**: StarkWare leverages zk-STARKs for scalable and transparent zero-knowledge proofs. Polynomial commitments in zk-STARKs are used to commit to and verify large computations efficiently. StarkWare's technology is used in applications like scalability solutions for Ethereum (e.g., StarkEx).

### 3. Verifiable Delay Functions (VDFs)

**Applications:**

**Filecoin**: Filecoin uses VDFs for their proof-of-spacetime and proof-of-replication protocols. Polynomial commitments help in efficiently proving that a storage provider is continuously dedicating storage space to a specific piece of data over time.**Ethereum 2.0**: Ethereum 2.0 plans to use VDFs for their randomness beacon in the consensus protocol. Polynomial commitments ensure the randomness is unbiased and verifiable.

### 4. Rollups and Layer 2 Solutions

**Applications:**

**Optimistic Rollups and zk-Rollups**: Layer 2 solutions like optimistic rollups and zk-rollups use polynomial commitments to ensure data availability and correctness of state transitions. For example, zk-rollups use zero-knowledge proofs to commit to a new state after processing a batch of transactions and provide a succinct proof that the state transition is valid.

### 5. Verifiable Computation

**Applications:**

**TrueBit**: TrueBit is a protocol that enables scalable off-chain computation, ensuring correctness through verifiable computation. Polynomial commitments allow validators to commit to the results of computations and prove their correctness efficiently.**Celer Network**: Celer Network uses polynomial commitments to enable off-chain scaling solutions for smart contracts, ensuring that off-chain computations are verifiable on-chain.

### 6. Privacy-Preserving Smart Contracts

**Applications:**

**Aztec Protocol**: Aztec Protocol uses zero-knowledge proofs to enable private transactions on Ethereum. Polynomial commitments are part of the cryptographic constructions that allow the protocol to hide transaction values while ensuring their correctness.**Secret Network**: Secret Network is a blockchain that supports encrypted inputs, outputs, and state for smart contracts. Polynomial commitments can be used to ensure the integrity of computations without revealing the data involved.

### Example: Detailed Look at zk-Rollups

#### How zk-Rollups Use Polynomial Commitments:

**Batching Transactions**: zk-Rollups batch multiple transactions into a single rollup block.**Generating Proofs**: A zero-knowledge proof is generated to prove that the new state root is correct after applying all transactions in the batch. Polynomial commitments are used to commit to the polynomial representing the state transition function.**On-Chain Verification**: The succinct proof is submitted on-chain, where validators can verify the correctness of the state transition using the committed polynomial without processing each transaction individually.

#### Benefits:

**Scalability**: By verifying state transitions with succinct proofs, zk-rollups significantly reduce the computational and storage burden on the main blockchain.**Security**: Polynomial commitments ensure that the proofs are correct, maintaining the security guarantees of the underlying blockchain.**Privacy**: In certain implementations, zk-rollups can also provide transaction privacy by hiding the details of individual transactions while still proving their correctness.

### Conclusion

Polynomial commitment schemes are integral to various cutting-edge applications in the crypto market. They enhance the efficiency, scalability, and privacy of blockchain protocols and cryptographic systems. As the field of cryptography continues to evolve, polynomial commitments are likely to play an increasingly vital role in developing secure and efficient decentralized applications.