Parallelized multi-backend KZG library for Ethereum Data Sharding (aka Proto-Danksharding, EIP-4844)
The goal is to create a parallelized KZG library for Ethereum Data Sharding (aka Proto-Danksharding, EIP-4844) that supports multiple ECC (Elliptic-curve cryptography) backend libraries.
Support for multiple backend ECC libraries is implemented via Traits. Such an approach allows to easily change backend ECC libraries in a way that is done in benchmarks and tests. List of different backend ECC libraries:
- Arkworks - Rust implementation using akrworks;
- blst-from-scratch - Rust implementation using blst;
- ckzg - bindings for c-kzg that uses blst;
- mcl-kzg - Rust implementation using mcl;
- zkcrypto - Rust implementation using zkcrypto.
Benchmarks run on every Github build. However, it's best to run it on a dedicated machine. Stokalas rendered nice charts for results he got on cloud servers:
Some results are weird and needs to be double-checked.
The project is mainly developed by a group of students at the Blockchain Technologies course led by Saulius Grigaitis. The project is heavily based on the go-kzg, c-kzg, and other libraries.