Commit Graph

330 Commits

Author SHA1 Message Date
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
Stefan Bratanov e59f8296e8 add a dot in README 2022-12-06 15:03:58 +00:00
Stefan Bratanov b086cfe9da Add hprof files to gitignore 2022-12-06 13:14:37 +00:00
Stefan Bratanov 0072efe70a Java binding - load library based on a preset 2022-12-06 12:58:56 +00:00
Ramana Kumar 78bf846f69
Merge pull request #16 from ethereum/configure_blob_size
Make FIELD_ELEMENTS_PER_BLOB compile-time configurable
2022-12-06 12:48:40 +00:00
Ramana Kumar 4a9a72bfbe
Also add new env variable to bindings.dist.gyp 2022-12-03 08:14:33 +00:00
Ramana Kumar 45ea45e48b
Make FIELD_ELEMENTS_PER_BLOB configurable in python 2022-12-01 20:31:59 +00:00
Ramana Kumar 151d6d1571
Merge pull request #18 from flcl42/main
Add automatic build increment
2022-11-30 18:08:13 +00:00
Alexey c0e6d8c3c2 Add automatic build increment 2022-11-30 11:35:32 +03:00
Ramana Kumar de36196184
Do not mess with java bindings CC_FLAGS 2022-11-29 21:19:03 +00:00
Ramana Kumar 070948d68f
Update bindings Makefiles with configurable blob size 2022-11-29 21:07:07 +00:00
Ramana Kumar f1a210dba4
Indent Makefile without spaces
Avoid using the recipe prefix for non-recipe code
2022-11-29 20:15:19 +00:00
Stefan Bratanov 26ac90da96 Add cross compile parameterization for the java binding 2022-11-29 10:56:31 +00:00
Stefan Bratanov b9777a6f67 Parameterize clang executable and the blst build script 2022-11-28 18:38:24 +00:00
Stefan Bratanov 68d7c69ffc rename and javadocs change 2022-11-26 13:07:13 +00:00
Stefan Bratanov fd9f16c9a9 fix readme 2022-11-25 15:53:22 +00:00
Stefan Bratanov b77bd70817 enhancing the performance test 2022-11-25 14:53:47 +00:00
Stefan Bratanov 73bba9ef91 change library output folder and make it configurable 2022-11-25 14:53:47 +00:00
Stefan Bratanov ec7eae4815 Java bindings improvements 2022-11-25 14:53:47 +00:00
Enrico Del Fante c823c9b577
indentation2 2022-11-25 11:21:57 +01:00
Enrico Del Fante 0e82300f8f
indentation 2022-11-25 11:20:47 +01:00
Enrico Del Fante b3224e5a2f
improvement 2022-11-25 11:14:49 +01:00
Enrico Del Fante 0caab36c0b
Java binding compilation improvement for macos
Tries to get `JAVA_HOME` automatically if not already set
2022-11-25 10:31:23 +01:00
Stefan Bratanov b9ff9d3309 small improvements 2022-11-24 21:53:15 +00:00
Stefan Bratanov f386e524c5 add fake proof test 2022-11-24 21:34:52 +00:00
Stefan Bratanov c944251ca6 revert back makefile change 2022-11-24 20:38:38 +00:00
Stefan Bratanov 74de86964c change in makefiles 2022-11-24 20:36:18 +00:00
Stefan Bratanov 3424f7c738 fixing pipeline 2022-11-24 20:03:30 +00:00
Stefan Bratanov 7b0db64a76 clean up + add pipeline 2022-11-24 19:46:47 +00:00
Stefan Bratanov 20bbd3c5fb don't print 2022-11-24 19:33:31 +00:00
Stefan Bratanov 9b09d6c966 adding more tests 2022-11-24 19:18:24 +00:00
Stefan Bratanov 4798c4b1e2 fix C header inconsistency 2022-11-24 18:15:26 +00:00
Stefan Bratanov e765142a57 add more OS handling in the Makefile 2022-11-24 18:05:12 +00:00
Stefan Bratanov 3025c882ea adding gradle, makefile and tests 2022-11-24 17:16:15 +00:00
Stefan Bratanov a7557be070 readme improvements 2022-11-24 12:32:03 +00:00
Stefan Bratanov 679cdd20ce make sure to exit c method when trusted setup is not loaded 2022-11-24 12:10:56 +00:00
Stefan Bratanov 606ad9fed8 implementing all methods 2022-11-24 11:50:37 +00:00
Stefan Bratanov a50671dfe8 handle exceptions 2022-11-24 09:14:12 +00:00
Stefan Bratanov a05211c23c revert to using c 2022-11-24 09:14:12 +00:00
Stefan Bratanov c6fc155060 change readme 2022-11-24 09:14:12 +00:00
Stefan Bratanov c50f52108d don't expose KZGSettings 2022-11-24 09:14:12 +00:00
Stefan Bratanov 3136083139 using jni instead of swig (still needs work) 2022-11-24 09:14:12 +00:00
Stefan Bratanov 2ad9433a2b adding the needed interface 2022-11-24 09:14:12 +00:00
Stefan Bratanov accc70c6cd java bindings initial try 2022-11-24 09:14:12 +00:00
Ramana Kumar 4b658698cc
Merge pull request #2 from flcl42/feature/kzg-test
Sync C# wrapper changes, update tests, minor changes for c-kzg
2022-11-22 20:53:38 +00:00
dancoffman 23ab03ec6a
Fix uint type for newer g++ 2022-11-22 12:27:32 -08:00
dancoffman cb55e4f2ab
NodeJS version 1.0.6 2022-11-22 12:11:05 -08:00
Alexey Osipov c5e42fdc82 Rename x to z in csharp bindings for verify_kzg_proof 2022-11-22 10:51:29 +03:00
Alexey Osipov 2761467490 Merge remote-tracking branch 'origin2/main' into feature/kzg-test 2022-11-22 10:50:05 +03:00
Alexey Osipov b7a4f7ccea Rollback hash usage, clean up code 2022-11-22 10:46:49 +03:00
Ramana Kumar 471319fd81
Rename x to z in csharp bindings for verify_kzg_proof
just for consistency
2022-11-21 17:33:59 +00:00
Alexey cccfc749db
Merge branch 'main' into feature/kzg-test 2022-11-19 23:53:03 +03:00
Alexey Osipov a582145755 Clean up tests 2022-11-19 23:46:38 +03:00
Ramana Kumar bcc138560a
Update interface for verify_kzg_proof 2022-11-19 09:35:55 +00:00
dancoffman 1d3282895d
Add contributing note 2022-11-17 16:47:47 -08:00
dancoffman 3bd84cfae6
Skip the tests which fails 2022-11-17 16:41:09 -08:00
dancoffman 0b019d6a67
Test verifying aggregate proof of nothing 2022-11-17 16:41:09 -08:00
dancoffman fe622a7171
Bump package version. npmignore testing_trusted_setups.json 2022-11-17 16:41:09 -08:00
dancoffman 242ba0adf9
Add ability to parse JSON trusted setup to text format expected by C-KZG 2022-11-17 16:41:09 -08:00
dancoffman c9ac623fe7
Turn CPP exceptions back off to see if that fixes the ELF problem 2022-11-16 16:23:06 -08:00
dancoffman afab8d9ea2
Revert conditions 2022-11-16 15:47:13 -08:00
dancoffman 5bf776f52a
Make C++ exceptions catchable in JS-land 2022-11-16 15:26:05 -08:00
Alexey Osipov e812599c2c Fix captions 2022-11-16 19:43:36 +03:00
Alexey Osipov 9fa293effc Add a program to generate outputs for a basic test 2022-11-16 19:31:41 +03:00
Alexey Osipov 3fdc6d37f5 Fix build again 2022-11-10 20:49:40 +03:00
Alexey Osipov 7db7616f2b Fix packaing and settings loading 2022-11-10 19:23:40 +03:00
dancoffman 75f544cdba
update test name 2022-11-09 12:14:48 -08:00
Alexey Osipov 9c29267d3e Fix build 2022-11-09 22:27:09 +03:00
Alexey Osipov fb0d03ff25 Change API to allow fixed effective ptrs 2022-11-09 22:16:00 +03:00
dancoffman 2232b02329
Update NodeJS unit test to expect zero element when computeAggregateKzgProof is supplied an empty array of blobs 2022-11-09 10:25:48 -08:00
Alexey Osipov 68897b375c Merge branch '4844' 2022-11-09 11:40:52 +03:00
Ramana Kumar c8fab42ac0
Fix node.js build - thanks to dgcoffman 2022-11-08 22:02:38 +00:00
dancoffman ef3f77be06
Ignore a couple more files that do not need to be published 2022-11-08 12:57:15 -08:00
dancoffman 6c50c40247
Update tests to cover blobs arrays of length zero and one 2022-11-08 12:53:36 -08:00
dancoffman 0e474e6ec4
Add test harness for building and running NodeJS tests on Linux 2022-11-08 12:47:19 -08:00
dancoffman 72f696e119
File order matters to the linker. GCC demands this order. 2022-11-08 12:47:19 -08:00
Alexey Osipov 94f4c91e1a Fix `make run-test` for newly cloned repo 2022-11-08 17:26:26 +03:00
Ramana Kumar dc6e43ae55
Merge pull request #4 from dgcoffman/dgc/publish-node-bindings-to-npm
Publish NodeJS bindings to npm
2022-11-07 23:10:46 +00:00
dancoffman e98ffa8c8e
Make publish less able to leave files in bad state 2022-11-07 14:37:46 -08:00
dancoffman 26f5178d06
git ignore xcode autogenerated file 2022-11-07 14:35:10 -08:00
dancoffman 5337f8d226
cc works on Linux 2022-11-07 11:45:36 -08:00
Alexey Osipov 08d7384465 Remove duplicate files, improve build, change test framework 2022-11-07 21:18:23 +03:00
Alexey Osipov f18f95c395 Add build, tests, nuget 2022-11-07 16:28:22 +03:00
dancoffman f3069d1ec9
Messy publish but it works 2022-11-05 00:46:26 -07:00
dancoffman 2262d475ca
Required to publish blst/build 2022-11-05 00:36:38 -07:00
dancoffman d09b1009b6
gyp that maybe works on yarn install 2022-11-05 00:28:36 -07:00
dancoffman c033f782b8
Start working on NPM publish 2022-11-04 18:48:52 -07:00
dancoffman 1d1254e380
gitignore dist 2022-11-04 17:00:26 -07:00
Ramana Kumar 1ff5eed9d0
Remove globalize-symbol - now using patched submodule 2022-11-04 22:34:04 +00:00
dancoffman fa8eebbc0b
free earlier when both subsequent branches will free. Throw appropriately on verify_kzg_proof failure 2022-11-04 14:12:11 -07:00
dancoffman 84bd55b304
Be better at TypeScript 2022-11-04 13:29:52 -07:00
dancoffman 1d20797874
Regen dist 2022-11-04 12:06:06 -07:00
dancoffman 062e4e0f30
Simplify, given updated API 2022-11-04 11:56:41 -07:00
dancoffman ac65930b15
Use BYTES_PER_FIELD_ELEMENT 2022-11-04 11:44:57 -07:00
dancoffman 8ca4fd9e83
Merge branch '4844_3038' into dgcoffman/nodejs-bindings 2022-11-04 11:41:17 -07:00
dancoffman 82c89e1025
Add gypfile to package.json 2022-11-04 11:35:31 -07:00
Ramana Kumar 36a172f7ca
Update python ckzg.c 2022-11-04 09:18:56 +00:00
Ramana Kumar ce8707b5b7
Update csharp ckzg.c 2022-11-04 09:07:05 +00:00
dancoffman f819fe1f20
Patch blst submodule sha 2022-11-04 00:13:02 -07:00
dancoffman 46fb7cc10b
Update README 2022-11-03 23:44:08 -07:00
dancoffman 09d84058a8
nodejs binding make build should do less 2022-11-03 23:27:21 -07:00
dancoffman 92242c725b
Have gyp copy the .node file 2022-11-03 23:14:11 -07:00
dancoffman 3f66b35664
Fix type 2022-11-03 22:57:03 -07:00
dancoffman c3d11f915a
build is a dep of test 2022-11-03 22:52:34 -07:00
dancoffman b6615527e9
Always make, never package.json scripts 2022-11-03 22:49:06 -07:00
dancoffman b031251f59
Do not run prettier on dist 2022-11-03 22:37:56 -07:00
dancoffman 7668c4ffa4
Generate type defs 2022-11-03 22:35:09 -07:00
dancoffman bbc90b7da1
Use rollup to product distributable JS file 2022-11-03 22:30:54 -07:00
dancoffman 83bed363d2
Add return types 2022-11-03 21:54:59 -07:00
dancoffman 0a99015789
Attempt more consistency. Remove test for verifyKzgProof which is not used in 4844 2022-11-03 19:54:45 -07:00
dancoffman 05fd8809ca
Run all the tests 2022-11-03 17:11:25 -07:00
dancoffman ab04cdd85d
Add a test for mismatch 2022-11-03 17:08:36 -07:00
dancoffman 32011119cd
Actually return the result of verify_kzg_proof 2022-11-03 16:54:52 -07:00
dancoffman 4bfce9ad15
Test verifyKzgProof 2022-11-03 16:27:56 -07:00
dancoffman 1514d5b826
computeAggregateKzgProof + verifyAggregateKzgProof test passes 2022-11-03 16:20:33 -07:00
dancoffman b8151db670
Cleanup 2022-11-03 15:13:49 -07:00
dancoffman 672346f017
Closer to working 2022-11-03 14:39:20 -07:00
dancoffman fcd7fbd9e7
Checkpoint 2022-11-03 12:57:59 -07:00
dancoffman dbf2a1d905
Plausibly working BlobToKzgCommitment 2022-11-02 17:17:17 -07:00
dancoffman da8d5dde42
Try to test VerifyKzgProof (does not work) 2022-11-02 15:50:04 -07:00
dancoffman ac1762382a
TypeScript test 2022-11-02 13:45:29 -07:00
dancoffman b169d4ab6e
Remove SWIG 2022-11-02 13:27:00 -07:00
dancoffman 40db00f643
Add napi version 2022-11-02 13:21:41 -07:00
dancoffman fdcab9d035
Install node-gyp with yarn 2022-11-01 22:22:14 -07:00
dancoffman 203033613f
I learned about extern C 2022-11-01 21:39:04 -07:00
dancoffman 2846d0b470
checkpoint 2 2022-11-01 19:40:28 -07:00
dancoffman 354281a9d8
Checkpoint 2022-11-01 17:56:34 -07:00
dancoffman 6ec86af547
Generate bindings using SWIG and node-gyp 2022-11-01 15:00:00 -07:00
dancoffman a581964b11
Working node-gyp 2022-11-01 12:56:38 -07:00
Ramana Kumar 37e9be5705
Fix references to min-src 2022-11-01 14:28:51 +00:00
Ramana Kumar 434c9ae9b9
Remove unused code, remove min- prefix 2022-11-01 14:24:02 +00:00
Dankrad Feist 2e435a7e26
Add py_ecc tests to min-bindings 2022-10-04 00:41:24 +01:00
Dankrad Feist 1e41ed4d36
Test equivalence with py_ecc 2022-09-19 19:56:43 +01:00
Ramana Kumar bd65d49ffd
Check the proof fails on wrong data 2022-09-19 15:40:18 +01:00
Ramana Kumar 80b1c973cf
Make the tests the default make target 2022-09-19 15:40:18 +01:00
Ramana Kumar 701da680ce
Add tests of prove and verify 2022-09-19 15:40:18 +01:00
Ramana Kumar 968b099dab
Treat bool specially, avoid allocation
Because bool as a PyObject won't have a normal destroy operation
2022-09-19 15:40:18 +01:00
Ramana Kumar 306dcf5bac
Assume word size is 64
Avoids incompatible pointer type warnings on my system.
Ideally this would be sensitive to the host.
2022-09-19 15:40:18 +01:00
Ramana Kumar 43d54b8154
Add some comments to Python file, rename to tests 2022-09-19 15:40:18 +01:00
Ramana Kumar 9aa1dc289f
Compare result to Python evaluation 2022-09-19 15:40:17 +01:00
Ramana Kumar 8e5209c491
Work example up to evaluating a poly_l 2022-09-19 15:40:17 +01:00
Ramana Kumar 560127f1f5
Add some rudimentary Python access + example 2022-09-19 15:40:17 +01:00
Ramana Kumar cd404dbb0a
Add array_class for fr_arrays 2022-09-19 15:40:17 +01:00
Ramana Kumar 8eb99bcc96
Initial attempt to swig for python 2022-09-19 15:40:15 +01:00