mirror of
https://github.com/status-im/c-kzg-4844.git
synced 2025-01-12 03:04:11 +00:00
69f6155d75
* Convert argument types to bytes * Update java bindings * Update python bindings * Update node.js bindings * Update c# bindings * Fix java binding compile issues * Fix incorrect memcpy in nodejs bindings * Fix bug (called the wrong func) * Fix issues with java bindings * Fix issues with node.js bindings * Remove unnecessary wrapped funcs for c# * Rename struct member to bytes * Use goto out for callocs * Fix nit * Make un-exported funcs static * Fix python bindings * Check commitment length in python bindings * Update python error message * Steal good ideas from #37 * Fix tests.py which didn't get copied over * Convert remaining a[] to *a * Add missing Py_DECREF * Bytes only rust (#1) * Make interface bytes only * Fix benches * Avoid newtypes for kzg types * Fix benches again * Make fields private * tidy * Address review comments * Fix one small thing in rust bindings * Use ckzg types where possible * Remove null terminator from domain bytes in rust * Update rust binding docs * Use BYTES_PER_* where applicable * Add extra check for calloc Co-authored-by: Pawan Dhananjay <pawandhananjay@gmail.com>
37 lines
943 B
Python
37 lines
943 B
Python
import ckzg
|
|
import random
|
|
|
|
# Commit to a few random blobs
|
|
|
|
BLOB_SIZE = 4096
|
|
MAX_BLOBS_PER_BLOCK = 16
|
|
|
|
blobs = [
|
|
# use zero final bytes to easily ensure the encodings are valid
|
|
b''.join([b''.join([random.randbytes(31), bytes(1)]) for _ in range(BLOB_SIZE)])
|
|
for _ in range(3)
|
|
]
|
|
|
|
ts = ckzg.load_trusted_setup("../../src/trusted_setup.txt")
|
|
|
|
kzg_commitments = b''.join([ckzg.blob_to_kzg_commitment(blob, ts) for blob in blobs])
|
|
|
|
# Compute proof for these blobs
|
|
|
|
blobs_bytes = b''.join(blobs)
|
|
|
|
proof = ckzg.compute_aggregate_kzg_proof(blobs_bytes, ts)
|
|
|
|
# Verify proof
|
|
|
|
assert ckzg.verify_aggregate_kzg_proof(blobs_bytes, kzg_commitments, proof, ts), 'verify failed'
|
|
|
|
# Verification fails at wrong value
|
|
|
|
other = b'x' if not blobs_bytes.startswith(b'x') else b'y'
|
|
other_bytes = other + blobs_bytes[1:]
|
|
|
|
assert not ckzg.verify_aggregate_kzg_proof(other_bytes, kzg_commitments, proof, ts), 'verify succeeded incorrectly'
|
|
|
|
print('tests passed')
|