Skip to main content

Try it Live

Run Blob examples in the interactive playground
KZG (Kate-Zaverucha-Goldberg) commitments provide cryptographic binding between blob data and commitments. This page explains the mathematics and implementation.

Overview

KZG commitments enable:
  • Binding - Cannot create two different blobs with same commitment
  • Hiding - Commitment doesn’t reveal blob contents
  • Succinct - 48-byte commitment for 131,072-byte blob
  • Verifiable - Prove blob matches commitment without revealing data

Mathematical Foundation

Polynomial Commitment Scheme

  1. Blob as Polynomial
    • Blob contains 4,096 field elements
    • Treat as polynomial coefficients: f(x) = a₀ + a₁x + a₂x² + ... + a₄₀₉₅x⁴⁰⁹⁵
  2. Trusted Setup
    • Generate powers of secret: [G₁, sG₁, s²G₁, ..., s⁴⁰⁹⁵G₁] where G₁ is BLS12-381 generator
    • Secret s destroyed after ceremony
  3. Commitment
    • Evaluate polynomial at secret: C = f(s)G₁ = Σ(aᵢ · sⁱG₁)
    • Result is 48-byte G₁ point (commitment)
  4. Proof
    • Prove evaluation at challenge point z: f(z) = y
    • Generate proof π that verifies: e(C - yG₁, G₂) = e(π, (s - z)G₂)

BLS12-381 Curve

KZG uses BLS12-381 pairing-friendly curve:

Implementation

Computing Commitments

Internal Process

Generating Proofs

Trusted Setup

KZG Ceremony

EIP-4844 uses trusted setup from ceremony.ethereum.org:

Powers of Tau

Loading Setup

Verification

Proof Verification

Pairing Equation

Verification uses BLS12-381 pairing:

Batch Verification

More efficient for multiple blobs:

Security Properties

Computational Binding

Cannot find two different blobs with same commitment:

Hiding (Partial)

Commitment doesn’t directly reveal blob contents, but:
  • Not fully hiding (deterministic)
  • Same data = same commitment
  • Use versioned hash (SHA256) for additional hiding

Soundness

Valid proofs always verify:

Field Element Validation

Modulus Check

Each 32-byte element must be < BLS12-381 modulus:

Automatic Validation

Tevm’s fromData() ensures valid field elements:

Implementation Notes

c-kzg-4844 Library

Tevm uses c-kzg-4844:

WASM Support

WASM builds stub KZG operations (not yet supported):

Performance

Operation Costs

Approximate timing (single-threaded):

Optimization

Resources

See Also