Commit Graph

293 Commits

Author SHA1 Message Date
Justin Traglia da83e45e9c
Cleanup some rust tests (#195) 2023-03-10 11:42:17 +02:00
Justin Traglia 1883b79233
Update the java bindings header (#201) 2023-03-10 11:40:23 +02:00
andri lim edb1274b70
Reduce boilerplate in nim tests (#197) 2023-03-09 14:15:05 -06:00
George Kadianakis ef82131be6
Fix rust benches to work with the new compute API (#194) 2023-03-09 10:30:46 -06:00
Matthew Keil 2642595e39
Reorganize/Clean-Up Node Bindings (#189)
* refactor(node-bindings): create src/lib/test folders

* feat(node-bindings): update bundle/publish commands

* refactor(node-bindings): remove unused files and dependencies

* refactor(node-bindings): move fixtures to __fixtures__

* fix(node-bindings): revert format of fixture json file

* fix(node-bindings): prettierignore and gitignore

* feat(node-bindings): add bindings package

* fix(node-bindings): fix test setup path

* fix(node-bindings): remove post-build copy action in bindings.gyp

* fix(node-bindings): package.json keys

* Update contributors

---------

Co-authored-by: George Kadianakis <desnacked@riseup.net>
2023-03-09 18:21:28 +02:00
Matthew Keil 5ebf750a1e
Update Compute*KZGProof in node bindings (#188)
* feat(node-bindings): update Compute*KZGProof

* ComputationProof -> ProofResult

---------

Co-authored-by: Justin Traglia <95511699+jtraglia@users.noreply.github.com>
Co-authored-by: George Kadianakis <desnacked@riseup.net>
2023-03-09 16:40:57 +02:00
Matthew Keil 87a3e4148d
Move setup handle to C in node bindings (#177)
* feat(node-bindings): move KzgSettings to c

* fix(node-bindings): typo in comment

* fix(node-bindings): remove unnecessary SetInstanceData

* feat(node-bindings): use C for setting instance data

* docs(node-bindings): fix comment on struct

* refactor(node-bindings): revert export order to minimize diff
2023-03-09 16:00:15 +02:00
George Kadianakis 599ae2fe21
Update Compute*KZGProof in rust bindings (#183)
* Update Compute*KZGProof in rust bindings

* Remove the boxing from the blobs

and implement get_blobs() a bit less promiscuously

* Improve pattern matching style

* Run `cargo fmt`

* Remove a println

* No need to clone commitments
2023-03-09 13:00:17 +02:00
andri lim ad6e258694
Improve nim bindings conciseness (#191) 2023-03-08 22:05:25 -06:00
andri lim fc11addf50
Allow invalid length inputs in nim tests (#190) 2023-03-08 22:04:23 -06:00
Justin Traglia ff4e99579d
Update Compute*KZGProof in c# bindings (#187) 2023-03-08 16:13:48 -06:00
Justin Traglia 6f3751d97b
Update Compute*KZGProof in java bindings (#182) 2023-03-08 15:31:20 -06:00
Justin Traglia db2fa8dcdb
Run each reference test individually in Go (#180)
* Run each reference test individually in Go

* Fix other merge conflict issues
2023-03-08 16:14:39 +02:00
Justin Traglia 9e72862198
Allow invalid length inputs in go tests (#175)
* Allow invalid length inputs in go tests

* Revert output type to original
2023-03-08 15:30:09 +02:00
andri lim e8ed621dc8
Add Nim bindings (#176) 2023-03-08 07:04:30 -06:00
Justin Traglia b71746df74
Update Compute*KZGProof in go bindings (#181) 2023-03-08 13:45:54 +02:00
Suphanat Chunhapanya ccf1a4fdf0
Change on compute_[blob_]kzg_proof function signatures (#174) 2023-03-07 13:51:43 -06:00
Matthew Keil ecc668bbe7
Node binding argument and return type updates (#170) 2023-03-06 19:28:30 -06:00
Alexey 7c0bd867d5
Add C# wrapper & YAML tests (#46) 2023-03-06 15:46:00 -06:00
Justin Traglia 410eed4db6
Update java bindings to support YAML ref tests (#166)
* Update java bindings to support YAML ref tests

* Clean things up a little

* Fix some more nits

* Swap comparision to be expected/actual

* Add missing input length checks

* Move test formats to new directory
2023-03-06 15:58:49 +02:00
Justin Traglia 54ab82c93b
Update nodejs bindings to support YAML ref tests (#167)
* Update nodejs bindings to support YAML ref tests

* Remove c-kzg from deps

* Fix test checks

* Add return statements in error checks

* Fix uint8array comparisons

* Revert test_dir to original value
2023-03-06 12:08:59 +02:00
Justin Traglia aaaacf7432
Update go bindings to support YAML ref tests (#163)
* Update go bindings to support YAML reference tests

* Remove refs to inputValue/claimedValue

* Do not panic if given different length lists
2023-03-06 12:04:29 +02:00
Justin Traglia 572507ce77
Allow invalid length inputs in rust tests (#171)
* Allow bad input values in rust tests

* Clean up a little

* Re-enable feature checks & consolidate

* Use more pattern matching

* Consolidate imports

* Split some long lines into shorter ones

* Clean up test loops

* Simplify get_output() for some funcs
2023-03-06 11:52:36 +02:00
Justin Traglia 8ade71a137
Update python bindings to support YAML ref tests (#161) 2023-03-04 11:24:03 -07:00
Justin Traglia 3e5f562f05
Update rust bindings to support YAML ref tests (#164) 2023-03-03 16:01:56 -07:00
g11tech 021674111a
Update the node bindings version to the latest published (#162) 2023-03-01 12:39:37 +02:00
Justin Traglia 6b2ee20102
Add bindings to readme (#154)
* Add bindings section to readme

* Reorganize a little bit

* Remove extra blank lines
2023-02-23 17:53:08 +02:00
Justin Traglia 1d3558cec2
Update rust bindings (#143)
* Update rust bindings

* Remove old test vectors

* Add #[must_use] in C_KZG_RET to avoid future missing retval checks

* Replace expect with unwrap

* Fix generate_random_commitment()

* Turn some camels to snakes

* Capitalize some consts

* Improve a bench loop

* Kill a useless extern

---------

Co-authored-by: George Kadianakis <desnacked@riseup.net>
2023-02-22 18:33:15 +02:00
George Kadianakis d41a3b0060
Merge pull request #147 from jtraglia/update-nodejs-bindings
Update nodejs bindings
2023-02-22 18:12:47 +02:00
Justin Traglia b34cc3ce1e Add missing exception pending checks 2023-02-22 09:39:16 -06:00
Justin Traglia 0e78319a44 Free allocations in success case 2023-02-22 09:36:32 -06:00
Justin Traglia 4a77aeff26 Add explicit type check 2023-02-22 09:10:09 -06:00
Stefan Bratanov 2e55967455
[Java binding] Validation of loadTrustedSetup parameters (#152) 2023-02-22 08:56:49 -06:00
Justin Traglia d5bd326877 Update test names 2023-02-21 14:22:44 -06:00
Justin Traglia 0e6e23de65
Update csharp bindings (#146) 2023-02-21 09:57:25 -06:00
Justin Traglia 03b439ef2f
Update java bindings (#144) 2023-02-20 14:57:27 -06:00
Justin Traglia 9be420c0f1
Merge branch 'ethereum:main' into update-nodejs-bindings 2023-02-20 10:22:50 -06:00
Justin Traglia a231d5354b
Update go bindings (#142)
* Update go bindings

* Fix some nits
2023-02-20 16:01:31 +00:00
Justin Traglia daa5f79fe3
Update python bindings (#145) 2023-02-20 16:00:13 +00:00
Dmitrii Shmatko f87eee57d3
Fix getting SEGFAULT in Java with incorrect parameters (#148)
* Java bindings: Fix SEGFAULT on incorrect parameters/wrong file

* Prettify allocate KZGSettings
2023-02-20 12:02:34 +00:00
Justin Traglia 21b3139dc8 Update nodejs bindings 2023-02-18 15:49:52 -06:00
Stefan Bratanov 9a764de619
Add spotless to the java bindings (#136)
* Add spotless to the java bindings

* Use check task which includes test + all verification
2023-02-16 11:26:26 +00:00
Fabio Di Fabio 8c3dc2df41
Add method to load trusted setup from a resource (#135)
* Add method to load trusted setup from a resource
* Do not try to reuse the same temp dir
* Fix test, loading the correct trusted setup for the preset
2023-02-15 12:18:43 -06:00
Justin Traglia 8aa78231f2
Check UInt8Array lengths (#126) 2023-02-14 15:11:10 -06:00
Justin Traglia 1493f2bf2f
Fix rust bindings benchmarks (#132) 2023-02-13 07:14:09 +00:00
Justin Traglia 5c1128e380
Add profiling (#124)
* Start to add profiling

* Add include flags for macos

* Add profiling funcs for the other funcs

* Add profiling readme

* Move sentence

* Add warning section

* Make run_profiler phony

* Delete extra empty lines

* Add line about box size

* No more dropped nodes/edges

* Remove function focus

* Add sha256 benchmark

* Benchmark sha256 with different sizes

* Clean things up a little
2023-02-10 20:33:32 +00:00
Justin Traglia 5a3e294beb
Update go get instructions (#125) 2023-02-10 08:01:30 +00:00
Stefan Bratanov 5cfbc34135
Add java benchmarking for `compute_kzg_proof` (#122) 2023-02-08 17:36:40 +00:00
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 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
Daniel Coffman c6fa137cd4
Verify blobs count matches commitments count (#113) 2023-02-01 20:56:03 +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
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
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
Simonas Kalpokas 4c115844e2
Add newline in nodejs trusted setup transformation (#78) 2023-01-20 16:37:38 +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
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 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
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
Ramana Kumar ee2fb80d7c
Merge pull request #58 from jtraglia/csharp-check-ret-value
Check ret of blob_to_kzg_commitment in c# bindings
2023-01-10 20:47:12 -08:00
Ramana Kumar 45c4d3d3f2
Merge pull request #59 from jtraglia/nodejs-blob-to-comm-ret
Check ret of blob_to_kzg_commitment in nodejs bindings
2023-01-10 20:45:14 -08:00
Justin Traglia 57a9666f93 Check ret of blob_to_kzg_commitment in nodejs bindings 2023-01-10 15:52:24 -06:00
Justin Traglia b404758368 Update expectedProofComputed values 2023-01-09 16:26:00 -06:00
Justin Traglia b60e116ec5 Fix some more minor typos 2023-01-09 16:15:01 -06:00
Justin Traglia 658b43ec16 Check ret of blob_to_kzg_commitment in c# bindings 2023-01-09 15:22:13 -06:00
Justin Traglia 071bd6a704 Check blob_to_kzg_commitment ret in python binding 2023-01-09 11:51:05 -06:00
Stefan Bratanov 00ff3f0a78 [Java binding] return NULL instead of 0 for jbyteArray methods 2022-12-20 18:34:29 +02:00
Stefan Bratanov 5399336f6a [Java binding] Throw exception for an invalid blob size 2022-12-20 16:49:24 +02:00
Ramana Kumar b8d90a5080
Merge pull request #43 from jtraglia/unix-arm-builds
Add ARM support for Java bindings
2022-12-20 11:05:02 +00:00
Justin Traglia 142f9c5175 Call return after throw_exception 2022-12-19 12:22:45 -06:00
Justin Traglia 26c57c4444 Check that malloc'd settings isn't null 2022-12-19 10:53:04 -06:00
Justin Traglia 3a62ca018e Convert Linux x86_64 to amd64 2022-12-19 09:52:54 -06:00
Justin Traglia 4c5f88d828 Add support for Unix ARM builds 2022-12-19 09:41:02 -06:00
Stefan Bratanov b6c0beaf8b defensive if 2022-12-18 11:13:26 +02:00
Stefan Bratanov d06df97716 [Java binding] Release JNI arrays 2022-12-18 10:58:57 +02:00
Stefan Bratanov 46d64e231a [Java binding] Load trusted setup from params + custom exception 2022-12-16 13:42:53 +02:00
Stefan Bratanov 17fe743fa3 [Java binding] Add test vectors for `verifyKzgProof` 2022-12-15 09:38:41 +02:00
dancoffman 704cba8ea4
Bump version 2022-12-13 15:24:24 -08:00
Daniel Coffman ab12cef2fb
Merge branch 'ethereum:main' into dgc/fix-setting-field-element-var 2022-12-13 15:23:40 -08:00
dancoffman cc7f62fcf0
Correctly set FIELD_ELEMENTS_PER_BLOB for distributable build 2022-12-13 15:21:40 -08:00
dancoffman 21b74bd89c
Bump package version 2022-12-13 11:25:39 -08:00
dancoffman 42f3bcef14
Actually test 2022-12-13 11:24:55 -08:00
dancoffman 4ccc48cbff
Expose verifyKzgProof 2022-12-13 11:21:43 -08:00
Ramana Kumar e9b225f8e1
Merge pull request #28 from dgcoffman/dgc/fix-nodejs-test-blob-data
Do not allow blob fields to overflow
2022-12-13 07:28:06 +00:00
dancoffman e5338b771f
Do not allow blob fields to overflow 2022-12-12 14:48:05 -08:00
Alexey Osipov 86f9f5d2ec Align tests with the modulus check 2022-12-12 00:01:21 +03:00
Ramana Kumar 4101648253
Update python test for encoding checks
We ensure we are below the modulus by just using a zero final byte for
each field element encoding.

In the test, I do not understand why changing the final (zero) byte
causes verification to succeed instead of failing. But this is why the
change is now to the first byte.
2022-12-11 20:23:50 +00:00
Ramana Kumar 0f54189400
Merge pull request #24 from ethereum/no_file
Load trusted setup from arguments
2022-12-11 18:23:38 +00:00
Stefan Bratanov 4a0fed73b2 update gradle wrapper 2022-12-10 21:06:11 +02:00
Stefan Bratanov 971484f85c Use canonical random blobs in tests 2022-12-10 21:05:16 +02:00
Ramana Kumar 68f1d2dd7e
Rename load_trusted_setup to load_trusted_setup_file 2022-12-10 16:07:40 +00:00