mirror of
https://github.com/status-im/c-kzg-4844.git
synced 2025-01-27 10:25:29 +00:00
Play around with some testing of the min interface
This commit is contained in:
parent
cfa9675512
commit
be3f0c22cf
6
.gitignore
vendored
6
.gitignore
vendored
@ -15,7 +15,7 @@ inc/blst_aux.h*
|
|||||||
.vscode/
|
.vscode/
|
||||||
*.json
|
*.json
|
||||||
.clang-format
|
.clang-format
|
||||||
bindings/*/_*.so
|
*bindings/*/_*.so
|
||||||
bindings/python/ckzg.py
|
*bindings/python/ckzg.py
|
||||||
bindings/python/c_kzg_wrap.c
|
*bindings/python/*_wrap.c
|
||||||
__pycache__
|
__pycache__
|
||||||
|
11
min-bindings/python/Makefile
Normal file
11
min-bindings/python/Makefile
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
INCLUDE_DIRS = .. ../../min-src ../../inc
|
||||||
|
INCLUDE_PY = $(shell python -c 'import sysconfig; print(sysconfig.get_config_var("INCLUDEPY"))')
|
||||||
|
|
||||||
|
test: tests.py _ckzg.so
|
||||||
|
python $<
|
||||||
|
|
||||||
|
_ckzg.so: c_kzg_4844_wrap.c ../../min-src/c_kzg_4844.o ../../lib/libblst.a
|
||||||
|
clang -O -Wall -shared -fPIC -Wl,-Bsymbolic -I${INCLUDE_PY} ${addprefix -I,${INCLUDE_DIRS}} -o $@ $^
|
||||||
|
|
||||||
|
c_kzg_4844_wrap.c ckzg.py: ../c_kzg_4844.swg
|
||||||
|
swig -DSWIGWORDSIZE64 -O -Wall -python -outcurrentdir $<
|
67
min-bindings/python/tests.py
Normal file
67
min-bindings/python/tests.py
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
import atexit
|
||||||
|
import ckzg
|
||||||
|
import random
|
||||||
|
|
||||||
|
# Helper functions
|
||||||
|
|
||||||
|
def fr_from_int(x):
|
||||||
|
r = []
|
||||||
|
while x > 0:
|
||||||
|
r.append(x % 2**64)
|
||||||
|
x //= 2**64
|
||||||
|
assert len(r) <= 4
|
||||||
|
while len(r) < 4:
|
||||||
|
r.append(0)
|
||||||
|
return ckzg.BLSFieldElement_from_uint64s(tuple(r))
|
||||||
|
|
||||||
|
def int_from_fr(fr):
|
||||||
|
digits = ckzg.uint64s_from_BLSFieldElement(fr)
|
||||||
|
res, mult = 0, 1
|
||||||
|
for x in digits:
|
||||||
|
res += mult * x
|
||||||
|
mult *= 2**64
|
||||||
|
return res
|
||||||
|
|
||||||
|
def poly_from_values(values):
|
||||||
|
ret, pptr = ckzg.alloc_polynomial(len(values))
|
||||||
|
assert ret == 0
|
||||||
|
p = ckzg.PolynomialEvalFormPtr_frompointer(pptr).value()
|
||||||
|
pvalues = ckzg.BLSFieldElements_frompointer(p.values)
|
||||||
|
for i, c in enumerate(values):
|
||||||
|
pvalues[i] = fr_from_int(c)
|
||||||
|
return p
|
||||||
|
|
||||||
|
# Simple test of compute_powers
|
||||||
|
|
||||||
|
x = 32930439
|
||||||
|
n = 11
|
||||||
|
p = 1
|
||||||
|
|
||||||
|
powers = ckzg.BLSFieldElements(n)
|
||||||
|
ckzg.compute_powers(powers.cast(), fr_from_int(x), n)
|
||||||
|
|
||||||
|
for i in range(n):
|
||||||
|
assert p == int_from_fr(powers[i])
|
||||||
|
p *= x
|
||||||
|
p %= 2**256
|
||||||
|
|
||||||
|
# Load a trusted setup
|
||||||
|
|
||||||
|
ret, ts = ckzg.load_trusted_setup("../../src/trusted_setup.txt")
|
||||||
|
assert ret == 0
|
||||||
|
|
||||||
|
BLOB_SIZE = 4096
|
||||||
|
|
||||||
|
# Commit to a blob
|
||||||
|
|
||||||
|
blob = ckzg.BLSFieldElements(BLOB_SIZE)
|
||||||
|
for i in range(BLOB_SIZE):
|
||||||
|
blob[i] = fr_from_int(random.randrange(0, 2**256))
|
||||||
|
commitment = ckzg.blob_to_kzg_commitment(blob.cast(), ts)
|
||||||
|
|
||||||
|
print('Tests passed')
|
||||||
|
|
||||||
|
def cleanup():
|
||||||
|
ckzg.free_trusted_setup(ts)
|
||||||
|
|
||||||
|
atexit.register(cleanup)
|
Loading…
x
Reference in New Issue
Block a user