Commit Graph

50 Commits

Author SHA1 Message Date
Dan Cline 0bbededd08
chore: make standalone portable feature, enabled by default (#391) 2024-02-07 06:07:20 -06:00
DaniPopes fd669bfa36
Make Rust `bindgen` build dependency optional (#382) 2024-02-06 11:39:07 -06:00
Dan Cline 8ac5c35876 change portable to default 2024-02-03 13:02:45 -05:00
Dan Cline 684a896a4c feat: add portable feature to enable blst portable 2024-02-02 17:45:48 -05:00
Dan Cline 9cb4db23dd chore: bump bindgen
also adds .ccls-cache/ to .gitignore
2024-01-22 11:16:35 -05:00
kaliubuntu0206 e266280d88
Fixed x86_64-pc-windows-gcc build for rust bindings (#384) 2023-12-14 14:29:06 -06:00
Matthias Seitz 712ccb629d
Add const instantiation functions for byte types (#380) 2023-11-14 00:06:25 +03:00
Justin Traglia d637761a2e
Use official trusted setup (#377) 2023-10-18 13:31:55 -05:00
ethDreamer fbef59a3f9
Add AsRef<[u8]> method for Blob (#361) 2023-09-15 09:51:22 -05:00
Matthias Seitz 2f4af2fd8f
chore: make num g2 points pub (#360) 2023-09-15 14:21:25 +03:00
rakita f5f6f863d4
chore: bump bindgen version (#355) 2023-09-05 17:24:53 -05:00
DaniPopes 551e2f90d8
Support Rust `no_std` environments (#347) 2023-09-05 17:06:03 -05:00
Pawan Dhananjay 5b55a54d5e
Change the rust interface to take references (#356) 2023-09-05 16:43:46 -05:00
Justin Traglia d35b0f3854
Set /std:c11 ccflag for Windows in Rust bindings (#354) 2023-08-31 12:12:02 -07:00
Dan Cline 666a9de002
feat: add serde impls to Blob and Bytes48 (#342)
* feat: add serde impls to Blob and Bytes48

* remove duplicate serde file

* cargo fmt

* serialize and deserialize with prefix

* cargo fmt

* use different trusted setup based on minimal spec

* add Bytes32 serde impls
2023-08-24 21:39:46 -06:00
Michael Sproul 4c0d477c0f
Use blst crate for Rust blst dep (#351) 2023-08-24 14:13:39 -06:00
Justin Traglia d874c06b42
Force use of portable blst in Rust bindings (#338) 2023-08-11 16:19:02 +01:00
Justin Traglia 9d85ed8b19
Upgrade blst to v0.3.11 (#330)
* Upgrade blst to v0.3.11

* Update blst headers in Go bindings
2023-08-10 12:53:42 +01:00
Justin Traglia de151d8fd7
Update rust dependencies (#333) 2023-08-10 12:51:56 +01:00
Dan Cline 6353f689e5
Add Apache-2.0 to rust license in Cargo.toml (#328) 2023-08-09 15:49:22 -05:00
Michael Sproul 13cec820c0
Use LIB_PREFIX in Rust bindings (#317) 2023-06-28 13:55:28 -05:00
Justin Traglia 16e83cec65
Add band-aid fix for Windows benchmark issue (#322) 2023-06-28 13:37:58 -05:00
Justin Traglia 6c50a43a19
Make from_hex() safer in rust bindings (#307)
* Make from_hex() safer in rust bindings

* Add hex_to_bytes function
2023-05-28 18:47:59 +03:00
Justin Traglia 3adec442de
Switch to big-endian (#305) 2023-05-24 08:44:05 -05:00
Justin Traglia 6d21a0ea98
Speed up loading trusted setup (#299)
* Replace g1 points with g1 lagrange points

* Swap out validate_kzg_g1 with blst funcs

* Update minimal preset too

* Fix java & nodejs bindings

* Put variables in smaller scope

* Update some comments

* Remove FFTSettings (#2)

* Fix issue when expanding roots of unity

* Fix formatting

* Revert back to using intermediate array

* Add missing c_kzg_free

* Fix some nits

* Replace free_kzg_settings with free_trusted_setup

* Add parens to NUM_ELEMENTS

Co-authored-by: George Kadianakis <desnacked@riseup.net>

* Move memcpy to the end

* Revert "Move memcpy to the end"

This reverts commit 5331c7feadc92e4b5dd5d4e7512e4be563d7f386.

* Add comment about free_trusted_setup

* Move check before alloc

* Add remark

* Delete unnecessary blank line

* Fix asn's nits

* Update comment for roots_of_unity in header

Co-authored-by: Gottfried Herold <GottfriedHerold@users.noreply.github.com>

* Fix formatting

* Update comment about max_scale

Co-authored-by: Gottfried Herold <GottfriedHerold@users.noreply.github.com>

---------

Co-authored-by: Suphanat Chunhapanya <haxx.pop@gmail.com>
Co-authored-by: George Kadianakis <desnacked@riseup.net>
Co-authored-by: Gottfried Herold <GottfriedHerold@users.noreply.github.com>
2023-05-12 16:44:37 +03:00
Divma fd24cf8e1e
[Rust] Remove blst to avoid double link issues, expose blst features (#287) 2023-04-10 15:45:34 -05:00
Justin Traglia fe857cb3b9
Update blst and remove hacks (#281) 2023-04-07 07:58:17 -05:00
Justin Traglia 5d4f6efbe7
Remove rust snapshots (#279) 2023-04-05 13:46:21 -05:00
Divma b30983fc9a
Windows bindings for rust (#259) 2023-04-05 13:33:37 -05:00
Divma 34f4fa1609
Delegate blst build to crate in preparation for windows bindings (#274) 2023-03-31 10:56:56 -05:00
Justin Traglia 2913b5ab31
Fix rust benchmarks (#258)
* Fix rust benchmarks

* Use iter_batched_ref for true benchmarks

* Remove unused import

* Update BatchSize & add throughput measurements

* Remove "cargo clean" from CI checks

* Run release tests after minimal tests
2023-03-29 15:59:52 +09:00
Divma f384175810
Reproducible rust bindings (#243)
* modify directory structure to isolate the generated bindings

* add a lib.rs file

* move deref impls to the extension file

* remove unused types from generated bindings

* cleanup new lines to reduce diff noise

* reorder definitions to reduce diff noise

* move sync and send impls to the extension file

* generate bindings

* blacklist used bindings; create snapshots dir to ensure freshness in the future

* fix typo. Ty @pawanjay176

* run cargo build after merge

* custom impl for KZGCommitment and KZGProof

* final touches
2023-03-27 23:47:24 +09:00
Justin Traglia b3291f9bf1
Speed up rust build just a little (#220) 2023-03-17 11:52:07 +02:00
Justin Traglia 5580f355ae
Add ref test count checks for all bindings (#211) 2023-03-15 16:39:19 +02:00
Pawan Dhananjay 549739fcb3
Add an into_inner method for Bytes48 (#206) 2023-03-13 13:38:02 +02:00
Justin Traglia da83e45e9c
Cleanup some rust tests (#195) 2023-03-10 11:42:17 +02:00
George Kadianakis ef82131be6
Fix rust benches to work with the new compute API (#194) 2023-03-09 10:30:46 -06: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
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 3e5f562f05
Update rust bindings to support YAML ref tests (#164) 2023-03-03 16:01:56 -07: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
Justin Traglia 1493f2bf2f
Fix rust bindings benchmarks (#132) 2023-02-13 07:14:09 +00:00
Justin Traglia 60ead4ee49
Add compute_kzg_proof to rust bindings (#91) 2023-01-27 15:14:13 +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 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 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 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
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