skillfed

ckzg

Python bindings for C-KZG-4844

ckzg v2.1.8 6.4M downloads/30d#1,923 on PyPI174
Permissive license Apache-2.0 Active released

What it is and what it does

ckzg is a Python binding to C-KZG-4844, a minimal C implementation of the Polynomial Commitments API specified in Ethereum's EIP-4844 (Deneb) and EIP-7594 (Fulu) consensus specifications. It exposes cryptographic functions for KZG commitments, proofs, and verification operations used by Ethereum clients to validate blob data without re-implementing critical cryptographic primitives.

The library is designed for use within Ethereum infrastructure and provides functions like blob-to-commitment conversion, proof computation, and batch verification. It relies on blst for BLS12-381 signature operations and has been audited by Sigma Prime (2023) for EIP-4844 and zkSecurity (2025) for EIP-7594. Single-threaded by design for simplicity; batch verification functions offer efficiency gains when processing multiple blobs.

Use it for:

  • Ethereum client implementations validating EIP-4844 blob commitments and proofs during consensus.
  • Ethereum node software implementing EIP-7594 data availability sampling with cell KZG proof verification.
  • Research and testing of Ethereum consensus specifications against reference test vectors.
  • Building Ethereum infrastructure tools that need to verify blob data authenticity without reimplementing KZG.
  • Batch processing of multiple blob proofs where performance is critical (53% faster per blob in batch mode).

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

Provides Python bindings to C-KZG-4844, a cryptographic library implementing polynomial commitments for Ethereum's EIP-4844 and EIP-7594 specifications.

Yes, if you are building Ethereum client software or infrastructure that must validate EIP-4844 or EIP-7594 commitments. The package is actively maintained, audited, has no known vulnerabilities, and avoids the need to reimplement cryptographic functions. Install friction is moderate due to compiled wheels; ensure the trusted setup file is available at runtime.

Install

ckzg on PyPI

pip

pip install ckzg

uv

uv add ckzg

poetry

poetry add ckzg

Installing ckzg

Before you install

Medium install friction due to compiled wheel distribution across multiple platforms (cp310–cp312, manylinux, musllinux, macOS arm64, Windows). Active maintenance with recent release 36 days ago and ongoing repository activity.

License in practice

Licensed under Apache-2.0 (permissive), allowing commercial and private use with minimal restrictions; suitable for most production and research contexts.

Quickstart

pip install ckzg

import ckzg

# Load trusted setup once during initialization
ckzg.load_trusted_setup_file('trusted_setup.txt', precompute=0)

# Verify a blob KZG proof
ckzg.verify_blob_kzg_proof(blob, commitment, proof)

Requires the trusted setup file (trusted_setup.txt) to be available at runtime; precompute parameter affects memory usage and performance trade-offs.

Verify before relying

  • Whether the package includes or downloads the trusted setup file automatically, or if users must provide it separately.
  • Exact Python version support range (requires_python is unspecified in metadata).
  • Performance characteristics on systems other than Apple M1 referenced in benchmarks.

Package facts

License Apache-2.0 (permissive)
Python support not specified
Install friction medium — platform-specific wheel
Runtime dependencies none
Maintenance actively maintained — 36 days since the last release
Last repo commit
First released
Downloads 6,353,243/month — #1,923 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: ckzg-2.1.8-cp310-cp310-macosx_11_0_arm64.whl; ckzg-2.1.8-cp310-cp310-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl; ckzg-2.1.8-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; ckzg-2.1.8-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; ckzg-2.1.8-cp310-cp310-musllinux_1_2_aarch64.whl; ckzg-2.1.8-cp310-cp310-musllinux_1_2_i686.whl; ckzg-2.1.8-cp310-cp310-musllinux_1_2_x86_64.whl; ckzg-2.1.8-cp310-cp310-win_amd64.whl; ckzg-2.1.8-cp311-cp311-macosx_11_0_arm64.whl; ckzg-2.1.8-cp311-cp311-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl; ckzg-2.1.8-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; ckzg-2.1.8-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; ckzg-2.1.8-cp311-cp311-musllinux_1_2_aarch64.whl; ckzg-2.1.8-cp311-cp311-musllinux_1_2_i686.whl; ckzg-2.1.8-cp311-cp311-musllinux_1_2_x86_64.whl; ckzg-2.1.8-cp311-cp311-win_amd64.whl; ckzg-2.1.8-cp312-cp312-macosx_11_0_arm64.whl; ckzg-2.1.8-cp312-cp312-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl; ckzg-2.1.8-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; ckzg-2.1.8-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Tags

kzg polynomial commitmentseip-4844 blob verificationethereum cryptography bindingskzg proof verificationpolynomial commitment libraryeip-7594 cell proofsblst bindings pythonethereum consensus specs
ethereumconsensus-specskzg-commitments

More Cryptography packages