Accelerated operations for BN254 using libff and libfqfft.
Supported operations:
- Multi-exponentiation in G1
- FFT
- Multiply polynomials
pip install pybn254
Dependencies:
- py_ecc
- Install Homebrew
- Install dependencies -
brew install gmp boost cmake openssl libomp
- Go into
libff
and runmake all
This should create libff.dylib
in the root folder.
- Install dependencies -
sudo apt-get install build-essential git libboost-all-dev cmake libgmp3-dev libssl-dev pkg-config
- Go into
libff
and runmake all
This should create libff.so
in the root folder.
You can use the following script to test things out:
import pybn254
from py_ecc.optimized_bn128 import add, multiply, pairing
from py_ecc.fields import optimized_bn128_FQ as FQ
p = [(FQ(1), FQ(2), FQ(1))]
e = [5]
p1 = [1, 2, 3]
p2 = [4, 5, 6]
print(pybn254.multiexp(p,e))
# run fft, not an inverse, not on a coset
print(pybn254.fft(p1, False, False))
print(pybn254.multiply_polynomials(p1, p2))