Commit Graph

254 Commits

Author SHA1 Message Date
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
Ben Edgington 950d53c325
Nashatyrev feature/add g2 add dbl (#16)
* Add g2_add_or_dbl() function

* Add unit test

Co-authored-by: Anton Nashatyrev <anton.nashatyrev@gmail.com>
2021-08-11 10:06:32 +01:00
Ben Edgington b21d13684b
Consolidate header files (#14)
* Consolidate header files

User should now need only include c_kzg.h and bls12_381.h.

* Update README
2021-07-09 13:35:19 +01:00
Ben Edgington ca1acf61d6 Fix up docs (include static functions) 2021-07-09 09:54:37 +01:00
Ben Edgington 1f2c946ce8
Merge pull request #12 from Nashatyrev/fix/double-include-guard
Add double header include guard for kzg_proofs.h
2021-07-09 06:26:15 +01:00
Ben Edgington e8b140a88b
Comment end of #if 2021-07-09 06:23:35 +01:00
Ben Edgington 13d523a079
Merge pull request #13 from benjaminion/testing_refactor
Refactor unit testing
2021-07-09 06:19:35 +01:00
Anton Nashatyrev 1712cd83bb Add newline at the end of file 2021-07-08 17:59:32 +03:00
Anton Nashatyrev 0c8c174a31 Add double header include guard for kzg_proofs.h 2021-07-08 17:58:15 +03:00
Ben Edgington f6b1d0ff57 Refactor unit testing 2021-07-03 13:55:54 +01:00
Ben Edgington 144d81b2c1 Fix up documentation 2021-07-03 11:45:39 +01:00
Ben Edgington 27bde1aff7 Fix initial stride in das_fft_extension 2021-07-03 10:50:56 +01:00
Ben Edgington 958dc1aee7 Minor tweaks and add a unit test 2021-07-03 09:37:20 +01:00
Anton Nashatyrev fc641a2197 Add fr_to_uint64s() function 2021-07-02 14:48:36 +03:00
Ben Edgington ba81164330
Implements fast division for long divisors (#7) 2021-06-28 12:42:14 +01:00
Ben Edgington 244bfe8740 Add ASSERT macro 2021-06-24 16:22:37 +01:00
Ben Edgington 2cf8782e91 Add length check for polynomial commitment 2021-06-23 11:51:50 +01:00
Ben Edgington 37021b9653 Use Blst's multiscalar multiplication for commitments 2021-06-22 19:52:44 +01:00
Anton Nashatyrev 7f8b81717d
Add KZG_CFLAGS env var to compiler options for passing additional compiler options (#6)
* Add KZG_CFLAGS env var to compiler options for passing additional compiler options
2021-06-14 13:00:17 +01:00
Ben Edgington 32becfefcf
Change the primitive root from 5 to 7 (#5) 2021-06-11 14:22:47 +01:00
Anton Nashatyrev 9e4cfa4325 Move specific include dir to Makefile from .h 2021-06-10 18:52:36 +03:00
Ben Edgington 0924f243b4 Simplify reduction loop 2021-04-28 19:56:22 +01:00
Ben Edgington f25ada5ea9 Micro-optimisation 2021-04-20 12:28:30 +01:00
Ben Edgington e7b4e9f06d Rename shift_poly to scale_poly 2021-03-08 12:06:25 +00:00
Ben Edgington e9537b29a3 Fix benchmark 2021-03-06 13:17:07 +00:00
Ben Edgington 42013d27a0 Fix missing initialisation 2021-03-06 13:16:32 +00:00
Ben Edgington 5edef551f4 Test for division by zero 2021-03-06 13:15:57 +00:00
Ben Edgington 7d3d422005 Improve comments 2021-03-04 15:10:28 +00:00
Ben Edgington 9d1b622f21 Make zero poly work for large numbers of missing indices
Previously, like the Go code, calculating the zero polynomial would fail
for very lare numbers of missing indices. For example, 253 missing with
a domain size of 256 - this is where the number of partials flips from 4
to 5 and more working space is needed.

With this commit, the zero polynomial can be calculated right up to all
but one of the indices missing. The case with all indices missing
doesn't work as the return data is too large, but the solution is known
to be `x^width - 1` in case we need to know.
2021-03-03 21:51:32 +00:00
Ben Edgington f09d1a70b2 Handle many missing (step 3) 2021-03-03 17:43:31 +00:00
Ben Edgington 8fbea3b3ef Handle many missing (step 2) 2021-03-03 11:48:56 +00:00
Ben Edgington 80af76581d Handle many missing (step 1) 2021-03-03 08:44:49 +00:00
Ben Edgington e2cbccdc9d Start improving the docs 2021-03-01 11:39:18 +00:00
Ben Edgington a28860ae39 Benchmarks for recover and zero_poly 2021-02-28 17:01:00 +00:00
Ben Edgington 79a9419791 Reduce memory usage 2021-02-28 17:00:05 +00:00
Ben Edgington 52e620467a Minor tweaks 2021-02-28 13:09:59 +00:00
Ben Edgington 2c22bb9dae Implement recovery from samples 2021-02-27 15:19:46 +00:00
Ben Edgington 345a16bf8a Remove in-place FFTs 2021-02-26 14:44:31 +00:00
Ben Edgington a697775c4f Implement zero polynomial - passes tests, but could be tidier 2021-02-26 14:38:04 +00:00
Ben Edgington 5cc7ea488c Implement in-place FFTs for field elements 2021-02-22 21:36:43 +00:00
Ben Edgington e2c74624d7 Add functions to allocate multi-dimensional arrays 2021-02-22 17:03:16 +00:00
Ben Edgington 3d6fd31610 Improve tests 2021-02-21 12:53:39 +00:00
Ben Edgington 159fc0024d Collect various utility functions into a separate file 2021-02-20 16:03:04 +00:00
Ben Edgington 7fd0899972 Cast `void *` to something before doing arithmetic on it 2021-02-20 15:26:16 +00:00
Ben Edgington 5bd6f1f6bc Implement DAS extension 2021-02-17 12:25:03 +00:00
Ben Edgington 39e190984f Change ASSERT to CHECK and always fail with C_KZG_BADARGS 2021-02-17 12:22:35 +00:00
Ben Edgington f557f32ed1 Improve G1 multiplication time with Blst 2021-02-17 09:06:17 +00:00
Ben Edgington c10e1f40f1 Tidy up include files 2021-02-16 19:42:27 +00:00
Ben Edgington 66c50a49b1 Groundwork for being able to use alternative BLS libraries 2021-02-16 18:13:20 +00:00
Ben Edgington aec19b5eee Implement FK20 multi proofs 2021-02-15 20:48:16 +00:00
Ben Edgington cfe5fa6e49 Revamp error handling and memory management 2021-02-14 14:20:03 +00:00
Ben Edgington d22bbcca62 Introduce new_ prefix for functions that allocate memory 2021-02-14 08:28:37 +00:00
Ben Edgington 06afe430a7 Initialise FK20 multi proofs 2021-02-13 10:27:36 +00:00
Ben Edgington 9dc2611ac9 Improve docs 2021-02-12 19:49:43 +00:00
Ben Edgington 19f58f25fa Documentation and tidy up 2021-02-12 16:55:42 +00:00
Ben Edgington 9111f47f13 Allocate space in new_kzg_settings for the secrets 2021-02-12 12:11:48 +00:00
Ben Edgington ed33a391f5 Documentation and tidy up 2021-02-12 12:01:11 +00:00
Ben Edgington ef4be2309d Move field element division to blst_util 2021-02-11 20:01:57 +00:00
Ben Edgington 167a39cc4c Correct argument names 2021-02-11 19:41:10 +00:00
Ben Edgington 8497b7bc4b Documentation 2021-02-11 19:36:35 +00:00
Ben Edgington 7b023e10c4 The beginnings of documentation, yay 2021-02-11 11:43:08 +00:00
Ben Edgington 1a196dd748 Simplify by removing the unnecessary extended polynomial 2021-02-11 07:43:49 +00:00
Ben Edgington 5dc78d40f2 Move some function arguments around 2021-02-10 13:02:22 +00:00
Ben Edgington f476a0f6ce Add FK20 single proofs 2021-02-10 11:55:38 +00:00
Ben Edgington 8986f1cde3 Fix strided FFT 2021-02-10 11:15:35 +00:00
Ben Edgington ea18b23bf5 Fix bug with strided FFT 2021-02-10 10:39:50 +00:00
Ben Edgington 10a6459851 Formatting 2021-02-08 10:15:12 +00:00
Ben Edgington 62d7641381 Remove TODO 2021-02-08 08:45:59 +00:00
Ben Edgington 4956ffa4ac Improve benchmark test framework 2021-02-08 08:39:24 +00:00
Ben Edgington b9bc4bb496 Add benchmarking for FFTs 2021-02-07 20:58:19 +00:00
Ben Edgington 80c513f653 Apply formatting rules 2021-02-07 14:19:25 +00:00
Ben Edgington 9085893ef7 Add stdlib include 2021-02-07 13:38:42 +00:00
Ben Edgington 7d5f0fcbd0 Handle malloc() errors 2021-02-07 09:23:37 +00:00
Ben Edgington ff014c293f Make polynomial division allocate space for the result 2021-02-07 08:03:10 +00:00
Ben Edgington 951ce118cd Fix up zero polynomial tests 2021-02-06 20:00:39 +00:00
Ben Edgington 61bc2c186a Use -g flag routinely for now 2021-02-06 19:59:43 +00:00
Ben Edgington c9dee6b54c Implement optimisation suggestion from Mamy 2021-02-06 19:18:53 +00:00
Ben Edgington a1659645af Free polynomial memory properly 2021-02-06 19:14:08 +00:00
Ben Edgington f93c33c2db Support zero length polynomials 2021-02-06 13:24:17 +00:00
Ben Edgington b3fd3cbb72 Add -g to debuglib 2021-02-06 13:23:39 +00:00
Ben Edgington a2ae798a66 Add comments 2021-02-06 11:41:36 +00:00
Ben Edgington 5bd2564ff8 Change free_poly to take a pointer to the polynomial 2021-02-05 20:52:26 +00:00
Ben Edgington 6242338bd8 Implement polynomial multi proofs 2021-02-05 20:48:56 +00:00
Ben Edgington 1ab4d08861 Use `sizeof` like the operator it is 2021-02-05 15:29:47 +00:00
Ben Edgington 0449f41038 Don't use malloc 2021-02-05 15:20:44 +00:00
Ben Edgington 4d2c26a428 Add missing return statements 2021-02-05 13:54:04 +00:00
Ben Edgington 0558dbaba8 Use uint64 for some loop counters 2021-02-05 13:46:05 +00:00
Ben Edgington ddecf22708 Shortcut polynomial evaluation for x = 0 2021-02-05 12:04:48 +00:00
Ben Edgington abe417019f Error handling 2021-02-05 10:22:48 +00:00
Ben Edgington 8538d74298 Rename success return code 2021-02-05 09:42:42 +00:00
Ben Edgington 60a6d33f73 Renamings 2021-02-05 09:13:16 +00:00
Ben Edgington 190f95359b Add titles to test output 2021-02-05 08:20:33 +00:00
Ben Edgington b4df409614 Pass polys when calculating quotient size 2021-02-05 08:10:08 +00:00
Ben Edgington 686d1c5ca7 Implement single polynomial commitment 2021-02-04 21:23:34 +00:00
Ben Edgington c68056638a Implement pairing check 2021-02-04 17:33:50 +00:00
Ben Edgington b9f4e7737e Define a `poly` type 2021-02-04 14:46:02 +00:00
Ben Edgington f5650d8e23 Implement polynomial division 2021-02-04 14:15:33 +00:00
Ben Edgington a59ccc7ff7 Add fr_negate() method 2021-02-04 14:14:25 +00:00
Ben Edgington ab0b618cac Include the right header file 2021-02-04 14:12:06 +00:00
Ben Edgington 6078618d0d Add const qualifiers to arguments 2021-02-04 14:10:48 +00:00
Ben Edgington a45735e159 Whitespace fix 2021-02-04 10:49:32 +00:00
Ben Edgington c28618f0ae Implement linear combinations of G1 points 2021-02-04 10:49:14 +00:00
Ben Edgington 5905bbc631 Rename fft_util* => fft_common* 2021-02-04 06:28:27 +00:00
Ben Edgington 10d5def069 Refactor in preparation for next steps 2021-02-03 21:00:14 +00:00
Ben Edgington 9f9c34e0ca Add ability to build a debug library 2021-02-03 16:59:59 +00:00
Ben Edgington cc1ea188bc Add library creation to makefile 2021-02-03 14:33:10 +00:00
Ben Edgington e5e1ef207f Nuke last assert statement 2021-02-03 13:00:19 +00:00
Ben Edgington ece913f636 Add some rudimentary error and debug handling 2021-02-03 12:57:47 +00:00
Ben Edgington 1e885ff898 Initial work on error handling 2021-02-03 12:11:35 +00:00
Ben Edgington 031d492b70 Use existing value of minus one in G1 FFT tests 2021-02-03 10:51:11 +00:00
Ben Edgington 5f789ab86d Fix G1 test data generator 2021-02-03 07:53:18 +00:00
Ben Edgington 80317b655e Remove fft_*_helper functions 2021-02-03 07:34:37 +00:00
Ben Edgington 6b01ba2b22 Delete spurious include 2021-02-03 00:22:05 +00:00
Ben Edgington ff17c72fe8 Formatting 2021-02-03 00:14:51 +00:00
Ben Edgington 3eb1096bfb Add Makefile as a dependency for tests 2021-02-03 00:06:51 +00:00