Documentation Index
Fetch the complete documentation index at: https://voltaire.tevm.sh/llms.txt
Use this file to discover all available pages before exploring further.
Try it Live
Run Blob examples in the interactive playground
import { Kzg, Blob } from 'tevm';
const blob = Blob.fromData(data);
const commitment = Kzg.Commitment(blob);
console.log(commitment.length); // 48
console.log(Blob.Commitment.isValid(commitment)); // true
Note: Requires c-kzg-4844 library integration (coming soon).ToCommitment({ blobToKzgCommitment })(blob): Commitment
Tree-shakeable factory pattern with explicit KZG dependency.Dependencies:
blobToKzgCommitment: (blob: Uint8Array) => Uint8Array - KZG commitment function from c-kzg-4844
Example:import { Kzg } from 'tevm'
import { blobToKzgCommitment } from 'c-kzg'
const Commitment = Kzg.CommitmentFactory({ blobToKzgCommitment })
const commitment = Commitment(blob)
Bundle size: KZG crypto only included if you import it explicitly.Note: Requires c-kzg-4844 library integration (coming soon).
KZG Commitment Scheme
KZG commitments use polynomial commitment scheme over BLS12-381 curve:
- Blob as Polynomial - 4096 field elements become polynomial coefficients
- Commitment - Evaluate polynomial at secret point (from trusted setup)
- Binding - Computationally infeasible to find different blob with same commitment
Security Properties
import { Kzg, Blob } from 'tevm';
// Different data = different commitments
const blob1 = Blob.fromData(data1);
const blob2 = Blob.fromData(data2);
const commitment1 = Kzg.Commitment(blob1);
const commitment2 = Kzg.Commitment(blob2);
// Commitments differ (binding property)
console.log(Blob.equals(commitment1, commitment2)); // false
// Cannot forge commitment for different data
const proof1 = Kzg.Proof(blob1);
console.log(Kzg.verify(blob1, commitment1, proof1)); // true
console.log(Kzg.verify(blob2, commitment1, proof1)); // false (wrong blob)
Commitment Utilities
Blob.Commitment Namespace
import { Kzg, Blob } from 'tevm';
const commitment = Kzg.Commitment(blob);
// Validate commitment size
console.log(Blob.Commitment.isValid(commitment)); // true
// Convert to versioned hash
const versionedHash = Blob.toVersionedHash(commitment);
console.log(versionedHash[0]); // 0x01 (version byte)
See Also