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
Ben Edgington
ae43c79f3f
Implement FFT with G1 elements
2021-02-02 23:46:52 +00:00
Ben Edgington
4ee33f7aba
Do some namespacing for the FFT routines
2021-02-02 12:42:38 +00:00
Ben Edgington
3ee603fbdc
Split out FFT utilities and tests to separate files
2021-02-02 12:29:56 +00:00
Ben Edgington
8de064215a
Create src/ directory and move source files in
2021-02-02 11:44:19 +00:00