defineKzg
Creates a Kzg implementation from individual functions
Loading...
Creates a Kzg implementation from individual functions
Creates a Kzg implementation from individual functions. This is useful when working with external KZG libraries that expose separate functions rather than a unified interface.
import "github.com/ChefBingbong/viem-go/utils/kzg"import "github.com/ChefBingbong/viem-go/utils/kzg"import "github.com/ethereum/c-kzg-4844/bindings/go"
kzgImpl := kzg.DefineKzg(kzg.DefineKzgParams{ BlobToKzgCommitment: func(blob []byte) ([]byte, error) { var b ckzg.Blob copy(b[:], blob) commitment, err := ckzg.BlobToKZGCommitment(&b) if err != nil { return nil, err } return commitment[:], nil }, ComputeBlobKzgProof: func(blob, commitment []byte) ([]byte, error) { var b ckzg.Blob var c ckzg.Bytes48 copy(b[:], blob) copy(c[:], commitment) proof, err := ckzg.ComputeBlobKZGProof(&b, c) if err != nil { return nil, err } return proof[:], nil },})kzg.KzgA KZG implementation that can be used for blob operations.
kzg.DefineKzgParamsParameters for defining a KZG interface.
params := kzg.DefineKzgParams{ BlobToKzgCommitment: func(blob []byte) ([]byte, error) { // Implementation }, ComputeBlobKzgProof: func(blob, commitment []byte) ([]byte, error) { // Implementation },}
kzgImpl := kzg.DefineKzg(params)func(blob []byte) ([]byte, error)Function that converts a blob to a KZG commitment.
BlobToKzgCommitment: func(blob []byte) ([]byte, error) { var b ckzg.Blob copy(b[:], blob) commitment, err := ckzg.BlobToKZGCommitment(&b) if err != nil { return nil, err } return commitment[:], nil}func(blob []byte, commitment []byte) ([]byte, error)Function that computes the KZG proof for a blob.
ComputeBlobKzgProof: func(blob, commitment []byte) ([]byte, error) { var b ckzg.Blob var c ckzg.Bytes48 copy(b[:], blob) copy(c[:], commitment) proof, err := ckzg.ComputeBlobKZGProof(&b, c) if err != nil { return nil, err } return proof[:], nil}Creates a KZG implementation from individual functions:
kzgImpl := kzg.DefineKzg(params)
Wraps an existing Kzg implementation:
kzgImpl := kzg.DefineKzgFromInterface(existingKzg)
SetupKzg for that)