viem-goviem-go

blobsToCommitments

Computes KZG commitments for a list of blobs

blobsToCommitments

Computes KZG commitments for a list of blobs using a KZG implementation.

Import

import "github.com/ChefBingbong/viem-go/utils/blob"
import "github.com/ChefBingbong/viem-go/utils/kzg"

Usage

import "github.com/ChefBingbong/viem-go/utils/blob"
import "github.com/ChefBingbong/viem-go/utils/kzg"
blobs, _ := blob.ToBlobs([]byte("hello world"))
// Compute commitments
commitments, err := blob.BlobsToCommitments(blobs, kzgImpl)
if err != nil {
log.Fatal(err)
}
// Get commitments as hex strings
hexCommitments, err := blob.BlobsToCommitmentsHex(blobs, kzgImpl)
if err != nil {
log.Fatal(err)
}
// Compute from hex blobs
hexBlobs := []string{"0x...", "0x..."}
commitments, err = blob.BlobsHexToCommitments(hexBlobs, kzgImpl)
if err != nil {
log.Fatal(err)
}

Returns

  • Type: ([][]byte, error) for BlobsToCommitments, ([]string, error) for BlobsToCommitmentsHex

An array of KZG commitments, one for each blob. Each commitment is 48 bytes.

Parameters

blobs (required)

  • Type: [][]byte for BlobsToCommitments, []string for BlobsHexToCommitments

The blobs to compute commitments for.

blobs, _ := blob.ToBlobs([]byte("hello world"))
commitments, _ := blob.BlobsToCommitments(blobs, kzgImpl)

kzgImpl (required)

  • Type: kzg.Kzg

The KZG implementation to use for computing commitments.

commitments, _ := blob.BlobsToCommitments(blobs, kzgImpl)

Functions

BlobsToCommitments

Computes commitments from blobs:

commitments, _ := blob.BlobsToCommitments(blobs, kzgImpl)

BlobsToCommitmentsHex

Computes commitments and returns them as hex strings:

hexCommitments, _ := blob.BlobsToCommitmentsHex(blobs, kzgImpl)

BlobsHexToCommitments

Computes commitments from hex-encoded blobs:

commitments, _ := blob.BlobsHexToCommitments(hexBlobs, kzgImpl)

BlobsHexToCommitmentsHex

Computes hex commitments from hex blobs:

hexCommitments, _ := blob.BlobsHexToCommitmentsHex(hexBlobs, kzgImpl)

Notes

  • Each commitment is 48 bytes (384 bits)
  • Commitments are used to verify blob integrity
  • The number of commitments equals the number of blobs