viem-goviem-go

toBlobSidecars

Creates blob sidecars from data or pre-computed components

toBlobSidecars

Creates blob sidecars from data or pre-computed components (blobs, commitments, proofs). A sidecar contains a blob, its KZG commitment, and its proof.

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"
// Create sidecars from raw data
sidecars, err := blob.ToBlobSidecars(blob.ToBlobSidecarsParams{
Data: []byte("hello world"),
Kzg: kzgImpl,
})
if err != nil {
log.Fatal(err)
}
// Create sidecars from pre-computed components
sidecars, err = blob.ToBlobSidecars(blob.ToBlobSidecarsParams{
Blobs: blobs,
Commitments: commitments,
Proofs: proofs,
})
// Get sidecars as hex strings
hexSidecars, err := blob.ToBlobSidecarsHex(blob.ToBlobSidecarsParams{
Data: []byte("hello world"),
Kzg: kzgImpl,
})

Returns

  • Type: ([]blob.BlobSidecar, error) for ToBlobSidecars, ([]blob.BlobSidecarHex, error) for ToBlobSidecarsHex

An array of blob sidecars, each containing a blob, commitment, and proof.

Parameters

params (required)

  • Type: blob.ToBlobSidecarsParams

Parameters for creating blob sidecars.

params := blob.ToBlobSidecarsParams{
Data: []byte("hello world"),
Kzg: kzgImpl,
}
sidecars, _ := blob.ToBlobSidecars(params)

params.Data (optional)

  • Type: []byte

Raw data to transform into blobs. Mutually exclusive with Blobs. Requires Kzg to compute commitments and proofs.

params := blob.ToBlobSidecarsParams{
Data: []byte("hello world"),
Kzg: kzgImpl,
}

params.Blobs (optional)

  • Type: [][]byte

Pre-computed blobs. Mutually exclusive with Data. Requires either Commitments and Proofs to be provided, or Kzg to compute them.

params := blob.ToBlobSidecarsParams{
Blobs: blobs,
Commitments: commitments,
Proofs: proofs,
}

params.Commitments (optional)

  • Type: [][]byte

Pre-computed KZG commitments. Required if Blobs is set without Kzg.

params := blob.ToBlobSidecarsParams{
Blobs: blobs,
Commitments: commitments,
Proofs: proofs,
}

params.Proofs (optional)

  • Type: [][]byte

Pre-computed KZG proofs. Required if Blobs is set without Kzg.

params := blob.ToBlobSidecarsParams{
Blobs: blobs,
Commitments: commitments,
Proofs: proofs,
}

params.Kzg (optional)

  • Type: kzg.Kzg

KZG implementation for computing commitments and proofs. Required if Data is set, or if Blobs is set without Commitments and Proofs.

params := blob.ToBlobSidecarsParams{
Data: []byte("hello world"),
Kzg: kzgImpl,
}

Functions

ToBlobSidecars

Creates blob sidecars:

sidecars, _ := blob.ToBlobSidecars(params)

ToBlobSidecarsHex

Creates hex-encoded blob sidecars:

hexSidecars, _ := blob.ToBlobSidecarsHex(params)

Sidecar Structure

Each sidecar contains:

  • Blob: The blob data (131,072 bytes)
  • Commitment: The KZG commitment (48 bytes)
  • Proof: The KZG proof (48 bytes)