Commit Graph

268 Commits

Author SHA1 Message Date
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 7b3477c6e9
Merge pull request #15 from asn-d6/compute_challenges_spec
Bring compute_challenges() and compute_powers() closer to the spec
2022-12-02 10:48:41 +00:00
George Kadianakis bdfa79ca47 compute_challenges(): Use a single hash_input array 2022-12-02 12:36:11 +02:00
George Kadianakis bcf14e7662 compute_powers(): Be consistent about argument types 2022-12-02 12:35:24 +02:00
Ramana Kumar f747834382
Add example setup for FIELD_ELEMENTS_PER_BLOB=4 2022-12-01 20:32:27 +00:00
Ramana Kumar 5b0aab2d58
Remove assumption about FIELD_ELEMENTS_PER_BLOB 2022-12-01 20:31:21 +00:00
Ramana Kumar c9274d8f43
Make FIELD_ELEMENTS_PER_BLOB compile-time configurable 2022-11-29 20:48:12 +00:00
George Kadianakis 80fe1cb3e0 Bring compute_powers() closer to the spec 2022-11-29 19:03:19 +02:00
George Kadianakis 94aa388055 Bring compute_challenges() closer to the spec 2022-11-29 18:46:21 +02:00
Stefan Bratanov b9777a6f67 Parameterize clang executable and the blst build script 2022-11-28 18:38:24 +00:00
Ramana Kumar b69104859f
Make bytes big enough in case n == 0 2022-11-26 22:14:21 +00:00
Ramana Kumar 73d5d2fb0b
Statically allocate hash_output 2022-11-25 22:07:34 +00:00
Ramana Kumar ad31161515
Update Fiat-Shamir protocol to match specs 2022-11-24 22:58:27 +00:00
Stefan Bratanov 74de86964c change in makefiles 2022-11-24 20:36:18 +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 3136083139 using jni instead of swig (still needs work) 2022-11-24 09:14:12 +00:00
dancoffman 6cc5cb07e0
Try -fPIC 2022-11-22 12:56:05 -08:00
Ramana Kumar bcc138560a
Update interface for verify_kzg_proof 2022-11-19 09:35:55 +00:00
Ramana Kumar 9611bfde9a
Add const 2022-11-19 09:31:36 +00:00
Ramana Kumar 8820b7a659 Remove n == 1 special case 2022-11-18 22:32:41 +00:00
Ramana Kumar 27f772402e
Make compute_powers easier to read 2022-11-18 22:20:18 +00:00
kevaundray deb29eb59f
Fixes
- Switch ordering of domain separator
- When copying the polynomial into the bytes array, use the `j` value to position the pointer
2022-11-18 00:16:10 +00:00
Ramana Kumar 084fd2209e
Add n=0 special case for compute_aggregate_kzg_proof 2022-11-08 23:11:19 +00:00
Ramana Kumar fec7acb87e
Handle n < 2 cases better in compute_aggregated_poly_and_commitment 2022-11-08 20:15:48 +00:00
Ramana Kumar 27f0d7fb25
Remove unused Polynomial typedef from interface 2022-11-04 23:29:33 +00:00
dancoffman d007bf79d0
Do not change the default behavior of src `make` 2022-11-04 13:44:04 -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
Ramana Kumar 99a990ff32
Add some of the bytes conversions back to the interface
These might still be needed for the G1 elements even though they're not
needed for blobs now.

Also make FIAT_SHAMIR_PROTOCOL_DOMAIN static to avoid redefinitions.
2022-11-04 09:05:39 +00:00
dancoffman f819fe1f20
Patch blst submodule sha 2022-11-04 00:13:02 -07:00
dancoffman be0f51bd7e
make blst now works 2022-11-03 23:38:17 -07:00
dancoffman a29b1580bd
Make task for blst 2022-11-03 23:23:27 -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 a5ca06450f
Some cleanup 2022-11-03 13:31:02 -07:00
dancoffman fcd7fbd9e7
Checkpoint 2022-11-03 12:57:59 -07:00
Ramana Kumar 2b0f6a5c09
Update src for merged-3038 specs
bindings/tests not updated
2022-11-03 17:16:57 +00:00
dancoffman 726fd38a5e
Revert unnecessary platform-specific makefile change 2022-11-02 13:32:15 -07:00
dancoffman d478234491
Revert changes that were only to make SWIG work 2022-11-02 13:30:19 -07:00
dancoffman b169d4ab6e
Remove SWIG 2022-11-02 13:27:00 -07:00
Ramana Kumar 3b0d68036b
Fix bug in compute_powers 2022-11-02 15:51:06 +00:00
dancoffman 002fc3fa54
Tweaks 2022-11-01 21:58:21 -07:00
dancoffman 203033613f
I learned about extern C 2022-11-01 21:39:04 -07:00
dancoffman 6ec86af547
Generate bindings using SWIG and node-gyp 2022-11-01 15:00:00 -07:00
Ramana Kumar 270ba19030
Add back trusted_setup.txt
was lost in the move
2022-11-01 14:36:23 +00:00
Ramana Kumar 434c9ae9b9
Remove unused code, remove min- prefix 2022-11-01 14:24:02 +00:00
Ramana Kumar 30864e643f
Remove stride from eval_poly_l
To match b611c51874
2022-10-03 20:49:45 +01:00
Ramana Kumar aab3df643b
Use pointers for scalars too 2022-10-02 12:09:01 +01:00
Ramana Kumar 2281cce711
Use array of pointers for vector_lincomb
This seems more likely to avoid copying field elements when interfacing
from high-level languages (we still have to store the pointers though).

If this is the right move, the same could be done for
blob_to_kzg_commitment, and maybe others that read sequences.
2022-10-02 11:29:23 +01:00
Ramana Kumar b284636afd
Remove 4844 version from src (use min-src) 2022-10-02 11:12:38 +01:00
Ramana Kumar 7dcd70b95e
Use non-contiguous array for vector_lincomb 2022-10-01 16:23:41 +01:00
Ramana Kumar 96e3fc9bd8
Add blob_to_kzg_commitment to the 4844 interface 2022-09-27 13:51:08 +01:00
Ramana Kumar 48903d567f
Use bit-reversal permutation 2022-09-27 13:37:46 +01:00
Ramana Kumar efef81bdf1
Fix segfault 2022-09-21 08:08:02 +01:00
Ramana Kumar 7e1dc4ddef
Add test of load_trusted_setup_test
not working yet: segfaults after the test runs
2022-09-20 23:43:38 +01:00
Dankrad Feist 2958210f67
Trusted setup for testing 2022-09-20 23:04:18 +01:00
Ramana Kumar e18c68c64c
Add possible implementation of load_trusted_setup (untested) 2022-09-20 21:58:36 +01:00
Ramana Kumar a7eea8b533
Start on a 4844 minimal interface
The object files to implement this are not correct in the Makefile.
The files probably need to be split more carefully to separate 4844
things from the rest.
2022-09-19 23:18:42 +01:00
Ramana Kumar 63fc842d6d
Make y const in check_proof_single 2022-09-19 23:17:28 +01:00
Ramana Kumar cc049a05ca
Fix some whitespace issues 2022-09-19 19:49:11 +01:00
Ramana Kumar c0aa4eb2cc
Add fr_vector_lincomb function 2022-09-19 19:47:16 +01:00
Ramana Kumar 8e5209c491
Work example up to evaluating a poly_l 2022-09-19 15:40:17 +01:00
Dankrad Feist 67c6a61a18
Fix compiler warnings in zero_poly.c 2022-09-18 12:20:39 +01:00
Dankrad Feist 928e9360c0
Add docs for compute_proof_single_l 2022-09-18 12:16:35 +01:00
Dankrad Feist 56f40fdfcf
Fix documentation for compute_proof_multi 2022-09-18 12:14:54 +01:00
Ramana Kumar 25be720f62
Add some documentation 2022-09-18 09:51:55 +01:00
Ramana Kumar 8cdc4e62e3
Remove some trailing whitespace 2022-09-18 08:59:32 +01:00
Dankrad Feist 80b256ad5f
Use batch inversion for Lagrange commitment 2022-09-17 23:25:21 +01:00
Dankrad Feist a2a4e57622
Lagrange proof bench 2022-09-17 18:34:59 +01:00
Ramana Kumar f7053514b3
Free temporary arrays 2022-09-17 18:21:56 +01:00
Dankrad Feist dcf68949b3
Optimized eval_poly_l with batch inversion 2022-09-17 18:00:54 +01:00
Ramana Kumar 4c8787d87b
Fix fr_batch_inv 2022-09-17 17:06:54 +01:00
Dankrad Feist 9c36ca4f3d
WIP: Montgomery batch inversion 2022-09-17 16:24:14 +01:00
Ramana Kumar 3aff3eb727
Implement proof for Lagrange at a root of unity 2022-09-17 13:05:12 +01:00
Ramana Kumar c4537ccdae
Make y a parameter of compute_proof_single_l 2022-09-17 11:00:13 +01:00
Ramana Kumar 3d286c6050
Add proof_single_l to tests 2022-09-17 10:59:39 +01:00
Ramana Kumar 94c7bb56cf
Add another test at a different poly_l and root 2022-09-17 10:53:25 +01:00
Ramana Kumar 10bff7d5c8
Fix eval_poly_l for evaluation at a root
Move the TODO for the special formula to compute_proof_single_l
2022-09-17 10:49:04 +01:00
Ramana Kumar f2454c284c
Add barycentric benchmark to Makefile 2022-09-17 09:27:41 +01:00
Dankrad Feist 30f5911e14
Benchmark for barycentric formula 2022-09-17 09:20:08 +01:00
Dankrad Feist 279eb5b514
Add TODO for barycentric formula special case 2022-09-17 07:23:00 +01:00
Ramana Kumar 12c3cb7645
Remove tmp2
This is possible assuming the fr_ ops don't need to read their inputs
after writing to their output.
2022-09-16 15:16:12 +01:00
Ramana Kumar 8eda02ab72
Remove tmp3 and unnecessary op 2022-09-16 15:16:12 +01:00
Ramana Kumar 509e75b1d5
Add new_poly_l to interface 2022-09-16 15:16:11 +01:00
Ramana Kumar f7aa56679b
Remove unused variable 2022-09-16 15:16:11 +01:00
Ramana Kumar c8b18c3a22
Free allocated coeffs, avoid leak 2022-09-16 15:16:11 +01:00
Dankrad Feist 0861520a7e
Test for proofs computed in Lagrange form 2022-09-16 15:16:11 +01:00
Ramana Kumar 7f1a25bbc5
First pass at compute_proof_single_l 2022-09-16 15:16:11 +01:00
Ramana Kumar 15f2b9eef9
Add evaluation of Lagrange poly 2022-09-16 15:16:11 +01:00
Ramana Kumar 56e0769ce4
Add Lagrange form, with a test 2022-09-16 15:16:11 +01:00
Dankrad Feist 6b5140af66
Fixed test for check_proof_multi 2022-09-16 15:15:58 +01:00
Ramana Kumar 9bd8c3fdf8
Change coset_scale in test proof_multi 2022-09-15 13:35:02 +01:00
Ramana Kumar f2f20141db
Stop adding one to secrets_len 2022-09-15 13:33:17 +01:00
Ramana Kumar fa80d94168
Add newlines at ends of some files 2022-09-15 13:32:08 +01:00
Anton Nashatyrev 63612c1119
Fix toeplitz_coeffs_stride() for minimal sized poly (#18)
Fix an edge case in FKMulti when the chunk length was the same as the polynomial size, resulting in writing outside the return array in `toeplitz_coeffs_stride()`.

Co-authored-by: Ben Edgington <ben@benjaminion.xyz>
2021-08-20 16:07:16 +01:00
Anton Nashatyrev 350a961b90
Fix condition check (#17) 2021-08-11 11:13:08 +01:00