c-kzg-4844/README.md

40 lines
1.2 KiB
Markdown

# c-kzg - work in progress
The very beginnings of a simple implementation of [KZG commitments](https://dankradfeist.de/ethereum/2020/06/16/kate-polynomial-commitments.html) in C, using the [Blst library](https://github.com/supranational/blst) from Supranational for field and curve operations.
Initially, at least, this largely follows the [go-kzg](https://github.com/protolambda/go-kzg) implementation.
Done so far:
- Rough and ready FFT and inverse FFT over the finite field.
## Installation
Build the [Blst library](https://github.com/supranational/blst) following the instructions there. Then,
1. Copy the resulting `libblst.a` file into the `lib/` directory here.
2. From Blst's `bindings/` directory copy `blst.h` and `blst_aux.h` to `inc/`
That is,
```
cp ../blst/libblast.a lib/
cp ../blst/bindings/*.h inc/
```
There's no library to make here yet, but you can run the tests.
## Run tests
```
cd src
make test
```
Thanks to [Acutest](https://github.com/mity/acutest) for the unit test harness, which is used here under the MIT licence.
## Prerequisites
- Blst library (see above)
- `clang` compiler. I'm using Clang 10.0.0. I'll likely add `gcc` options in future.
- I'm developing on Ubuntu 20.04. Will check portability later.