A homomorphic commitment hides a value while allowing a verifier to perform selected operations on the hidden value. In zk-SNARKs, it helps check polynomial relationships without revealing the polynomial itself. section 15.3.1 section 15.3.2
Typical commitment checks include:
- Equality: ga = gb implies a = b. section 15.3.2
- Addition: ga = gbgc implies a = b + c. section 15.3.2
- Scaling: ga = (gb)c implies a = bc when c is public. section 15.3.2
- Multiplication requires an additional mechanism, such as a bilinear pairing; the result is not fully homomorphic. section 15.3.2 section 15.3.3
Polynomial divisibility check
A prover commits to f(x) and h(x), while the verifier computes a commitment to the agreed constraint t(x). The verifier checks com(f(x)) = com(t(x))com(h(x)), corresponding to f(x) = t(x)h(x), without receiving the polynomials openly. section 15.3.2
