This is a really informal post of my understanding of polynomial commitments. I am in no way a professional in cryptography and is just learning this for fun. Most of the excerpts in these notes are borrowed from the amazing article by Dankrad and Alinush.
My pain
Is selfchosen
At least
So The Prophet says
Now, another song for you to listen along for this ride that you’re embarking on with me. River of Deceit by Mad Season. This was a total random song found while listening to my Daily Mix playlist. Anyways, I like it.
Commitments
Contains two algorithms:
 $commit(m,r)→com$
 $verify(m,com,r)→0/1$
Properties:
 Binding: can’t produce two valid openings for one commitment
 Hiding: com doesn’t reveal about committed data.
Functional Commitments
committing to a function $f$ in family $F=f:X→Y$.
Steps followed:
 $setup()$ → pp
 $commit(f,pp,r)$→$com$
 eval(Prover P, Verifier V): $x∈X$, $y∈Y$ s.t. $f(x)=y$
 $P(f,pp,x,y,r)$ → succinct proof $pi$
 $V(pp,com,x,y,π)$ → 0/1
Three main types of functional commitments possible:
 Polynomial commitments: Univariate polynomial of at most degree d
 Multilinear commitments: Multivariate polynomial
 Linear commitments: Linear functions f_\vec{v}(\vec{u}) = <\vec{u},\vec{v}>=\sum^{i=1}_{n}u_{i}v_{i}
Different types of PCS:
 Basic Elliptic curves: Bulletproofs
 Bilinear groups: KZG
 Groups of unknown order: DARK
 Hash functions: FRI
More info about comparison between these schemes here.
Polynomial Commitment Scheme (PCS)

what properties are desirable for an efficient PCS? :: commitment time is fast and proof is small, verify/eval time is fast

what do you mean by small and fast? :: small means few bytes, for ex: in KZG, it’s just one group element and BN254 is just 32 bytes. By fast, i mean in quasilinear time. for ex: verification in KZG takes $O(logd)$, where d is degree of polynomial.

see, commitment to a polynomial is just evaluation of that polynomial at a point and brute force method takes $O(d)$ time, where d is the degree of the polynomial and if you want to commit to d polynomials, it amounts to $O(d_{2})$ time.
 there’s a better method than that, i.e. NTT Number theory transform which can do this in O(d logd).
 implement this
 even better than this → use lagrange interpolation to find $f(τ)$ which is linear in $d$.
 there’s a better method than that, i.e. NTT Number theory transform which can do this in O(d logd).

then comes evaluation proofs $π_{a}$ → naively each evaluation proof takes $O(d)$ time, and for $d$ polynomials this goes to $O(d_{2})$
 comes FeistKhovartovich algorithm, which takes it in $O(dlogd)$ if $\Upomega$ domain is multiplicative subgroup.
KZG Commitments
A polynomial commitment scheme allows anyone to commit to a polynomial $p(X)$ with the properties that this commitment $C$ (an elliptic curve point) can later be verified by anyone at any position $z$ on that polynomial. The prover proves at a position the value of the polynomial known as proof $π$ versus the claimed value known as evaluation $p(z)$ and this is only possible when prover actually has provided proof for that one polynomial that it committed to.
Notation
 Let $G_{1}$ and $G_{2}$ be two elliptic curves with a pairing $e:G_{1}×G_{2}→G_{T}$.
 Let $p$ be the order of $G_{1}$ and $G_{2}$ and $G$ is generator of $G_{1}$ and $H$ is generator of $G_{2}$.
 $[x]_{1}=xG∈G_{1}$ and $[x]_{2}=xH∈G_{2}$ where $x∈F_{p}$.
Trusted Setup
You might’ve read multiple times in twitter threads that there is a trusted ceremony that is associated with DAS, SNARKs or words like KZG Ceremony. They are usually talking about this trusted setup. Also known as Powers of tau.
In this ceremony, a random secret $τ∈F_{p}$ is created, using which its powers $[τ_{i}]_{1}$ and $[τ_{i}]_{2}$ for $i=0,…,n−1$ are created. In additive notation, it is represented as:
$[τ_{i}]_{1}=(G,τG,τ_{2}G,…,τ_{n−1}G)∈G_{1}$ $[τ_{i}]_{2}=(H,τH,τ_{2}H,…,τ_{n−1}H)∈G_{2}$
These elements which are just elliptic curve points are made public but the secret has to be destroyed otherwise this ceremony has no meaning as anyone will be able to forge invalid proofs later. In practice this is usually implemented via a secure multiparty computation (MPC), which uses multiple participants to derive these elements and require all participants together to know secret $τ$. Thus, this has a nice 1toN security assumption, basically only 1 honest participant is required which is easy to obtain.
Now, you must be thinking what are they used for? We know that a polynomial is represented as:
$Polynomial:p(X)=∑_{i=0}p_{i}X_{i}$
Now, the prover can compute the commitment to the polynomial as:
$Commitment:C=[p(τ)]_{1}$
$=[∑_{i=0}p_{i}τ_{i}]=∑_{i=0}p_{i}[τ_{i}]$
This is a really interesting output, as prover is able to evaluate polynomial at point $τ$, even when he doesn’t know the secret and this becomes the commitment of prover of the polynomial.
Now, you might be wondering if a malicious prover find another polynomial $q(X)=p(X)$ such that $[q(τ)]_{1}=[p(τ)]_{1}$. But the prover doesn’t know $τ$, so the best bet for prover to achieve $p(τ)=q(τ)$ is to make the polynomial pass through as many points $n$ as possible. But it’s computably inefficient to find the exact polynomial that passes through $n$ points where curve order $p≈2_{256}$ as $n<<<p$.
Proof Evaluation
We need a mechanism so that prover could verify its commitment on the polynomial and this is done through evaluations on the polynomial $p(X)$. Evaluation is done at a point $z$ and the claimed value $p(z)$ is verified by the verifier.
Now, a value $z$ is chosen such that $p(z)=y$. This means that $p(X)−y$ should have a factor $X−z$. So, a quotient polynomial $q(X)=X−zp(X)−y $ is computed and the evaluation proof becomes,
$π=[q(τ)]_{1}$
$=∑_{i=0}[τ_{i}]⋅q_{i}$
Prover sends this proof to verifier which verifiers this proof.
Verifying Evaluation
Now, verifier has following things:
 Polynomial: $p(X)=∑_{i=0}p_{i}X_{i}$
 Commitment: $C=∑_{i=0}p_{i}[τ_{i}]$
 Evaluation point: $z$
 Claimed value: $y$
 Proof: $π=[q(τ)]_{1}$
Now verifier wants to verify that claimed value is indeed correct using the proof. That’s where pairings come into play. Pairings allow us to multiply two polynomials in different curves and get the output in a target curve. This unfortunately is not possible in a single curve which is a property called Fully Homomorphic Encryption for elliptic curves. ECs are only homomorphic additively.
Verifier checks the following equation:
$e(π,[τ]_{2}−[z]_{2})=e(C−[y]_{1},H)$
Note: verifier has $[τ]_{2}$ from the trusted setup and $[τ−z]_{2}$ is computed through EC arithmetic.
This convinces verifier that claimed value is indeed the evaluation of the committed polynomial at the point $z$. How? Let’s unroll the equation,
$e(π,[τ]_{2}−[z]_{2})=e(C−[y]_{1},H)$ $e(π,[τ−z]_{2})=e(p[τ]_{1}−[y]_{1},H)$ $[q(τ)⋅(τ−z)]_{T}=[p(τ)−y]_{T}$
We need two properties from this equation:
 Correctness: If prover followed right steps, then proof is correct.
 Soundness: if they produce incorrect proof, verifier won’t be convinced.
Correctness checks out as this equation is similar to what we defined in the quotient polynomial $q(X)(X−z)=p(X)−y$.
For soundness, prover would have to compute incorrect proof,
$π_{′}=(C−[y_{′}]_{1})_{τ−z1}$
But it’s not possible to do this as $τ$ is not known to prover and if they can forge this proof, then they can convince verifier for anything. Or it would have to forge a fake proof with fake evaluation $ω$ which somehow has $τ$ as root of $X−zP−ω $, whose probability is negligible due to Schwartz Zippel Lemma.
Comparison to Merkle Trees
Merkle trees are a form of vector commitments, i.e. Using a merkle tree of depth $d$ will have $2_{d}−1$ elements, anyone can compute a commitment to a vector $(a_{0},a_{1},a_{2},…,a_{2_{d}−1})$. Thus, using Merkle trees anyone can prove that element a_i is a member of a vector at position i using d hashes.
You can even make polynomial commitment out of Merkle trees. A polynomial is represented as $p(X)=∑_{i=0}p_{i}X_{i}$, using $a_{i}=p_{i}$, we can construct a polynomial of degree $n=2_{d}−1$ and computing merkle root of the coefficients. Now, the prover can prove the evaluation by sending all the $p_{i}$ and verifier verifying the evaluation by computation $p(z)=y$.
This is a very simple polynomial commitment that is inefficient to its core but will help to understand the marvel KZG commitment is.
 Prover has to send all the $p_{i}$ to verifier in order to commence verification. So, proof size is linear with the degree of the polynomial. While in Kate Commitments, commitment and proof size is just one group element of an elliptic group. Commonly used pairing curve is BLS12381, that would make proof size to be 48 bytes.
 The verifier need to do linear work to compute $z$. While in KZG, verification is constant as only two multiplications and pairings are required to verify proof.
 commitments using merkle trees makes the polynomial public and doesn’t hide anything. While it’s mostly hidden in Kate commitments.
Now, the best part about Kate proofs are it can create one proof for multiple evaluation, i.e. only one group element for multiple proofs.
Multiproofs
Let’s say we have a list of $k$ points that we want to prove, $(z_{0},y_{0}),(z_{1},y_{1}),…,(z_{k},y_{k})$. We find a polynomial $I(X)$ that goes through these points using Lagrange Interpolation:
$I(X)=∑_{i=0}y_{i}∏_{j=ij=0}z_{i}−z_{j}X−z_{j} $
For the evaluation proof, while in the single proof we compute $q(x)=x−zp(x)−y $, we will replace $y$ as single point with $I(x)$, and $x−z$ will be replaced with $Z(x)=∏_{i=0}x−z_{i}$. Now, we replace our values and $q(x)$ becomes
$q(x)=Z(x)p(x)−I(x) $
This is possible due to $p(x)−I(x)$ being divisible by all linear factors of $Z(x)$ and being divisible by whole $Z(x)$. The multiproof for evaluation $(z_{0},y_{0}),(z_{1},y_{1}),…,(z_{k},y_{k})$: $π=[q(s)]_{1}$. Now, our prover equation becomes
$e(π,[Z(s)]_{2})=e(C−[I(s)]_{1},H)$
$[q(s)⋅Z(s)]_{T}=[p(s)−I(s)]_{T}$
This really blew my mind when I was first studying them. You can have a million proofs batch together in one single 48 bytes proof which anyone can verify by just computing $I(x)$ and $Z(x)$. Cryptography really is cool.
Resources
 KZG Commitments By Dankrad
 Kate Commitments in ETH
 Efficient polynomial commitment schemes for multiple points and polynomials
 PCS Multiproofs
 Fast amortized KZG proofs
 ethresear.ch post about commitments
 Using polynomial commitments to replace state roots]
 Kate Commitments: A Primer
 Understanding KZG10 Polynomial Commitments
 Polynomials in bit reversal permutation
 Formulas for Polynomial Commitments