v2.0.0
This is a major release which adds support for EIP-7594 (PeerDAS).
Notable changes:
- The codebase implements and exposes all public methods of the EIP-7594 cryptography specification.
- The trusted setup format has been updated to include G1 points in monomial form.
- This version of c-kzg-4844 requires the new trusted setup file.
- The new trusted setup file can be used with previous versions of c-kzg-4844.
- Download the new file from
trusted_setup.txt
in this repository. - This should match
trusted_setup_4096.json
in the specifications.
- A new
precompute
parameter has been added to functions which load the trusted setup.- This configuration option is used to optimize FK20 proof computations.
- Higher values will compute FK20 proofs faster but use more memory.
- Compared to
precompute=0
,precompute=8
is ~75% faster but uses 96 MiB of memory.
- In the Nim bindings, the "zero overhead aliases" have been removed.
- There is only a single set of API functions exposed now.
- In the Rust bindings, the API functions have been moved to the
KzgSettings
structure.- For example, here is the before and after for
blob_to_kzg_commitment
:KZGCommitment::blob_to_kzg_commitment(&blob, &kzg_settings)
kzg_settings.blob_to_kzg_commitment(&blob)
- For example, here is the before and after for
What's Changed
- Add support for EIP-7594 by @jtraglia in #452
- Remove extraneous
memset
by @kevaundray in #463 - Fix
poly_lagrange_to_monomial
by @kevaundray in #462 - Add central Makefile which builds/tests everything by @jtraglia in #458
- Update recovery code to match specs by @kevaundray in #459
- Increase column limit to 100 for C code by @jtraglia in #456
- Move Rust bindings to
KzgSettings
by @jtraglia in #461 - Improve Python bindings build/install flow by @jtraglia in #460
- Add new Rust fuzzer by @jtraglia in #457
- Split core implementation into multiple files by @asn-d6 in #464
- Cleanup roots of unity in
KZGSettings
by @asn-d6 in #467 - Fix Makefile dependencies by @jtraglia in #469
- Move FFT functions to fft.{c,h} files by @jtraglia in #466
- Clarify
roots_stride
in FFT by @asn-d6 in #470 - Clarify scope of audit in README by @b-wagn in #472
- Split C code into more files by @jtraglia in #471
- Do not rely on
calloc
zeroing out allocations by @jtraglia in #474 - Fix profile & analyze by @jtraglia in #473
- Run
cargo update
for fuzzer by @jtraglia in #475 - Remove benchmarks for Rust & Java by @jtraglia in #476
- Remove unused blob variable in recovery by @jtraglia in #481
- Add new reference tests sanity check by @jtraglia in #479
- Enable more compiler warnings by @jtraglia in #480
- Simplify Nim bindings by @jtraglia in #482
- Use
TestCaseSource
in C# reference tests by @jtraglia in #486 - Enable
-Werror
for Windows & cleanup warnings by @jtraglia in #487 - Improve the build system by @jtraglia in #483
- Update deps in Go/Rust/Fuzz by @jtraglia in #488
- Improve docs of
KZGSettings
by @b-wagn in #492 - Convert some internal variables from
uint64_t
tosize_t
by @jtraglia in #490 - Replace
size_t
withuint64_t
by @jtraglia in #478 - Pre-compute root of unity in fr-form by @jtraglia in #491
- Make minor improvements of proof computation and recovery code by @asn-d6 in #493
- Abstract commitment to interpolation poly by @asn-d6 in #494
- Refactor
is_cell_used
array & usage by @jtraglia in #495 - Reformat some function param docs for consistency by @jtraglia in #496
- Update versions in preparation of v2.0.0 release by @jtraglia in #489
- Update links in README by @jtraglia in #497
New Contributors
- @kevaundray made their first contribution in #463
Full Changelog: v1.0.3...v2.0.0