defineKzg
Creates a Kzg implementation from individual functions
defineKzg
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
import "github.com/ChefBingbong/viem-go/utils/kzg"Usage
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 },})Returns
- Type:
kzg.Kzg
A KZG implementation that can be used for blob operations.
Parameters
params (required)
- Type:
kzg.DefineKzgParams
Parameters 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)params.BlobToKzgCommitment (required)
- Type:
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}params.ComputeBlobKzgProof (required)
- Type:
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}Functions
DefineKzg
Creates a KZG implementation from individual functions:
kzgImpl := kzg.DefineKzg(params)
DefineKzgFromInterface
Wraps an existing Kzg implementation:
kzgImpl := kzg.DefineKzgFromInterface(existingKzg)
Notes
- This function does not load the trusted setup (use
SetupKzgfor that) - Useful for wrapping external KZG libraries
- The returned KZG implementation can be used for blob operations