Commit Graph

589 Commits

Author SHA1 Message Date
Justin Traglia dc28b03f9d
Cleanup the Makefile (#119)
* Cleanup the Makefile some

* Fix compiler error

* Fix compiler errors in tests

* Fix problems on Linux

* Add test_c_kzg_4844_cov to gitignore

* Add back closing brace for cpp

* Split clean rule into two lines

* Not echo commands when running them

* Allow other compilers to be used

* Update comment

* Only allow clang, actually
2023-02-08 17:35:33 +00:00
Justin Traglia af333c2706
Change nbits from 256 to 255 for Pippenger's method (#121) 2023-02-08 07:13:22 +00:00
Justin Traglia fd029a7d00
Fix python bindings on macOS (#117)
* Fix python bindings on macOS

* Update workflow

* Remove unnecessary Makefile vars

* Add src dir to include dirs

* Fix phony
2023-02-07 22:13:54 +00:00
Justin Traglia e487800529
Format the main C file (#116) 2023-02-07 10:35:33 +00:00
Daniel Coffman c6fa137cd4
Verify blobs count matches commitments count (#113) 2023-02-01 20:56:03 +00:00
Justin Traglia 97c46a8532
Add test for compute_powers (#110)
* Add test for compute_powers

* Remove extra blank line

* Make it better

* Run make format

* Make compute powers more efficient

* Use explicit memcpy

* Fix bug in my new implementation

* Slightly cleaner implementation

* Revert changes to compute_powers

* Run formatter
2023-02-01 19:33:22 +00:00
George Kadianakis e36c11dfe2
Fix compute_kzg_proof_impl() when `z` is inside the domain (#111)
* Fix compute_kzg_proof_impl() when `z` is inside the domain

* Satisfy linter D:
2023-02-01 19:32:39 +00:00
Justin Traglia e5fa8c7ee1
Simplify log_2_byte & add test (#109) 2023-02-01 17:16:20 +00:00
Justin Traglia 1e7353c435
Run clang-format on test code (#108)
* Run clang-format on test code

* Fix format test

* Don't pack arguments

* Use more descriptive variable names
2023-02-01 14:48:29 +00:00
Justin Traglia 471245001d
Generate coverage report (#106)
* Add check for test coverage

* Add coverage html report

* Install llvm

* Save coverage report before doing check

* Update coverate report path

* Remove coverage check

* Remove coverage report in make clean

* Remove extra CFLAG
2023-02-01 07:58:52 +00:00
Justin Traglia eb17071bf3
Add some tests for reverse_bits (#105) 2023-01-31 15:51:35 +00:00
Justin Traglia d3b061f84b
Add bytes32_from_hex helper function (#103) 2023-01-31 15:48:41 +00:00
Justin Traglia ea73c3f1ca
Add some validate_kzg_g1 tests (#102) 2023-01-31 11:26:25 +00:00
George Kadianakis 9f443bc5aa
test_compute_kzg_proof() now also verifies the KZG proof (#101)
Co-authored-by: Justin Traglia <95511699+jtraglia@users.noreply.github.com>
2023-01-31 08:33:02 +00:00
Justin Traglia afd9bb78f0
Add some blob_to_kzg_commitment tests (#100)
* Add some basic blob_to_kzg_commitment tests

* Rename field_element var

* Rephrase comment

* At point_at_infinity test case

* Update comments

* Use more descriptive test names

* Update comments

* Add sections

* Add "consistent_commitment" test

* Use Bytes* types
2023-01-31 07:36:02 +00:00
Justin Traglia 8d923c3272
Add ckzg C tests workflow (#98) 2023-01-30 16:37:04 +00:00
Justin Traglia 3340843c91
Make get_rand_blob return a full blob (#99)
* Fix a problem in get_rand_blob

* Use bytes field instead of new var
2023-01-30 16:36:18 +00:00
Justin Traglia 05bd73bca5
Clean up the test file a little (#97) 2023-01-30 13:57:26 +00:00
Ramana Kumar 7f1fb88da9
Remove b modifier 2023-01-30 13:40:54 +00:00
George Kadianakis 98aa54a996
Add a basic unittest framework + a compute KZG proof test (#96)
* Add tinytest.h testing framework

from https://github.com/joewalnes/tinytest/

* Add a basic compute_kzg_proof() test
2023-01-30 13:40:12 +00:00
Justin Traglia e4f280f17f
Add compute_kzg_proof to java bindings (#94) 2023-01-27 15:16:41 +00:00
Justin Traglia 9076280cd2
Add compute_kzg_proof to nodejs bindings (#92) 2023-01-27 15:15:17 +00:00
Justin Traglia 60ead4ee49
Add compute_kzg_proof to rust bindings (#91) 2023-01-27 15:14:13 +00:00
Justin Traglia 3ec2e9cdc2
Update go get command in instructions (#90) 2023-01-27 10:30:01 +00:00
George Kadianakis d46544dd2e
General code improvements (#87)
* Better memory management in compute_challenges()

* Forgotten retval check in compute_aggregated_poly_...()

* General niceties around the code
2023-01-26 22:43:17 +00:00
Justin Traglia 877e6a43d3
Move go.mod & go.sum to repo root (#88)
* Move go.mod & go.sum to repo root

* Add note to README
2023-01-26 22:42:56 +00:00
Ramana Kumar 363c7d7593
Improve alignments in docstring comments 2023-01-26 17:13:13 +00:00
Justin Traglia 71dd9574d6
Add go bindings (#77)
* Add go bindings

* Use Bytes32 type

* Update blst package

* Add binding for compute_kzg_proof

* Use bytes-only input (will fail)

* Fix go bindings tests

* Use better blobs for benchmarks

* Move rand* funcs to helpers & add comment

* Add headers check
2023-01-26 17:04:24 +00:00
Justin Traglia 03b90ef63f
Use Bytes48 for commitments/proofs (#86)
* Start to use bytes48 type

* Update java bindings

* Update variable names

* Update csharp bindings

* Update node.js bindings

* Update python bindings

* Fix mistake in python bindings

* Add new functions

* Fix nit in java bindings

* Update variable names in java bindings

* Compare to point at infinity

* Update bytes_to_bls_field doc

* Add todo

* Do key validation

* Remove bytes_to_g1

* Fix bug & add remark

* Fix memcmp mistake

* Fix nit in nodejs bindings

* Fix another nit

* Update nodejs parameter names

* Remove to_proof() and to_commitment()

* Fix bug
2023-01-26 14:53:30 +00:00
Justin Traglia 0a18868475
Upgrade blst & remove sha256 patch (#85) 2023-01-25 20:07:15 +00:00
Justin Traglia 8907fbcfe2
Expose `compute_kzg_proof` (#80)
* Expose computeKzgProof

* Revert changes to bytes_to/from_bls_field

* Update comments

* Revert changes to bytes_from_bls_field

* Revert change to parameter name

* Add compute_kzg_proof to readme

* Refactor in support of asn's PR

* Clean up a little

* Fix param name doc

* Introduce Bytes32 type

* Update bindings

* Replaces bytes with b to match spec
2023-01-24 18:23:42 +00:00
Justin Traglia d849e626ae
Use downward gotos in g1_lincomb (#83)
* Use downward gotos in g1_lincomb

* Do it asn's way
2023-01-24 18:15:16 +00:00
George Kadianakis 7043128428
Add documentation for various internal/external functions (#79)
* Improve naming of outputs of compute_challenges()

Both are outputs

* Adjust arguments of verify_kzg_proof_impl() to match the spec

* Add documentation for all c-kzg functions

* fixup! Adjust arguments of verify_kzg_proof_impl() to match the spec

* fixup! Add documentation for all c-kzg functions

* Address review comments

Co-authored-by: Justin Traglia <95511699+jtraglia@users.noreply.github.com>
2023-01-24 14:02:58 +00:00
Justin Traglia ae81453aaa
Remove simple blst wrapper funcs (#82)
* Remove simple blst wrapper funcs

* Fix minor nit
2023-01-23 23:01:32 +00:00
Simonas Kalpokas 4c115844e2
Add newline in nodejs trusted setup transformation (#78) 2023-01-20 16:37:38 +00:00
Ramana Kumar 1cfc226f7b
Add some more documentation
Work on #67
2023-01-20 14:04:14 +00:00
Justin Traglia 855b366da7
Rename reverse_bit_order to bit_reversal_permutation (#76) 2023-01-20 07:56:22 +00:00
Justin Traglia 70ed24c1ec
Reorganize functions to match spec (#71)
* Reorganize functions to match spec

* Add two forward function definitions

* Remove extern prefix from sha256 funcs

* Delete extra blank line
2023-01-18 22:56:09 +00:00
Justin Traglia 549054a5de
Rename poly_from_blob to match spec (#72) 2023-01-18 21:46:28 +00:00
Justin Traglia ac3c829727
Minor rust bindings cleanup (#75)
* Minor rust bindings cleanup

* Use g2_bytes variable
2023-01-18 21:45:44 +00:00
Justin Traglia 9fbe40a5eb
Add length check to verify_aggregate_kzg_proof in rust bindings (#74)
* Add length check to verify_aggregate_kzg_proof in rust bindings

* Generate incorrect blob later

* Remove leftover parenthesis

* Move result var after check
2023-01-18 21:44:33 +00:00
Justin Traglia 50bf358c6d
Remove mentions of to/from bytes in readme (#70) 2023-01-17 20:58:45 +00:00
Stefan Bratanov 75cd270ef4
[Java binding] Check there are `count` commitments present (#68)
* [Java binding] Check there are `count` commitments present

* remove unnecessary parameter in Java binding test pipeline
2023-01-17 17:47:46 +00:00
Justin Traglia 686dda2f5b
Remove unnecessary null checks (#69) 2023-01-17 17:45:41 +00:00
Justin Traglia 69f6155d75
Bytes-only interface (#62)
* 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>
2023-01-16 20:05:23 +00:00
Justin Traglia 7e3189d48a
Python bindings workflow (#65)
* Add python bindings workflow

* Update test name

* Build blst first

* Build ckzg too
2023-01-13 08:25:27 -08:00
George Kadianakis 158977085c
node bindings: Add some missing memory allocation checks (#64)
* node bindings: Add some memory allocation checks

* fixup! node bindings: Add some memory allocation checks
2023-01-13 08:24:25 -08:00
Justin Traglia c72ea8e1dc
Convert Blob type to struct (#61)
* Convert Blob type to struct

* Rename blob.data to blob.bytes
2023-01-12 10:10:23 -08:00
Pawan Dhananjay 2c151d7f7e
Rust bindings (#4)
* working build

* Move bindings.rs to root directory

* tidy build script

* Add initial rust safe bindings

* import fewer c stuff in bindings

* remove unnecessary blst definitions in bindings

* remove bindgen build dependency

* improve interface

* Remove more stuff from bindings

* Add a simple test

* Update error type

* Update verify_kzg_proof interface

* Return array instead of vec

* link with no-pie

* impl Send and Sync for KzgSettings; change mut pointers to const

* Remove no-pie linking

* Make FIELD_ELEMENTS_PER_BLOB a compile time variable

* Add load_trusted_setup method

* Cleanup

* Add failure case to bytes_to_bls_field

* Fix conditional compilation and ensure canonical blobs in test

* Add test vectors

* Remove blobk_commitment test case

* Change function signature

* Copy and delete instead of rename in build script

* Make consts public

* Add error conditions for invalid trusted setup

* Lowercase renamings

* Make blob public

* Add benchmarks

* Run test vectors only for mainnet spec

* Add README

* clippy

* Add rust CI checks

* actually add CI checks

* Fix CI

* Fix workflow again
2023-01-12 17:50:12 +00:00
Justin Traglia 42a4419641
Convert Polynomial type to struct (#60)
* Convert Polynomial type to wrapped-struct

* Revert undesired change

* Rename poly.elements to poly.evals
2023-01-12 17:35:59 +00:00