57 Commits

Author SHA1 Message Date
wborgeaud
6c864ca522 Merge branch 'main' into fix_target_partition
# Conflicts:
#	src/witness.rs
2021-06-23 14:17:02 +02:00
wborgeaud
bc90909fa3 Add check of copy constraints after witness generation 2021-06-23 14:16:05 +02:00
wborgeaud
3bc27c65ef Rollback to previous semantics 2021-06-23 13:46:19 +02:00
wborgeaud
bfd5f06384 Hardcode Plonk polynomials indices and blinding flags. 2021-06-17 11:54:31 +02:00
wborgeaud
5bebc746f6 PR feedback 2021-06-17 11:31:14 +02:00
wborgeaud
ea6a724560 Enforce copy constraints in partial witness generation. 2021-06-14 17:02:52 +02:00
Daniel Lubarov
72c2e19bc5
Bit of verifier work (#54)
* Bit of verifier work

* Minor

* next_plonk_zs now available after William's changes
2021-06-08 21:23:52 -07:00
wborgeaud
482b40065d Merge with main 2021-06-01 11:26:23 +02:00
wborgeaud
e09a6179fb Remove useless field 2021-05-31 18:21:42 +02:00
wborgeaud
abc0ca3bf1 Rewrite LPC code to be more PLONK-specific 2021-05-31 17:49:04 +02:00
Daniel Lubarov
cb7f8c8b8c
Draw challenge points from the extension field (#51)
* Draw challenge points from the extension field

* Now building

* Misc

* Default eval_unfiltered_base

* fmt

* A few field settings

* Add to Sage

* Display tweak

* eval_filtered_base

* Quartic in bench

* Missing methods

* Fix tests

* PR feedback
2021-05-30 13:25:53 -07:00
wborgeaud
845382b472 Working base field check for (non-batch) opening 2021-05-27 17:20:26 +02:00
Daniel Lubarov
26845c5910 Compute the three quotient polys in parallel
Reduces that step from ~0.19s to ~0.09s on my laptop.
2021-05-23 22:21:27 -07:00
wborgeaud
9cd00532ce Generic tests 2021-05-18 16:06:47 +02:00
wborgeaud
adf5c2d4ec Const generics everywhere 2021-05-18 15:44:50 +02:00
wborgeaud
a2cf2c03b6 Working FRI with field extensions 2021-05-18 15:22:06 +02:00
Daniel Lubarov
de0b382fb6 Merge pull request #39 from mir-protocol/three_zeta
Use num_checks zetas
2021-05-14 08:07:34 -07:00
Daniel Lubarov
7ff5496308 num_checks -> num_challenges 2021-05-14 08:07:00 -07:00
Daniel Lubarov
13fc0c2261 Merge pull request #40 from mir-protocol/move_timed
Move timed! and call from ListPolynomialCommitment
2021-05-14 08:04:22 -07:00
Daniel Lubarov
b14328c2df Move timed! and call from ListPolynomialCommitment 2021-05-14 07:35:09 -07:00
Daniel Lubarov
a04bed282d Use num_checks zetas
The soundness error is (degree of combined constraints)/|F|, so three zetas should be appropriate for all practical circuit sizes.
2021-05-13 21:32:08 -07:00
Daniel Lubarov
6d03dd06f5 Finish merging in old_polynomial 2021-05-13 15:35:26 -07:00
wborgeaud
cdbac76149 Fixes based on PR comments 2021-05-11 10:01:35 +02:00
wborgeaud
ce0507ba12 Blinding parameter can be set differently for each Merkle tree in a FRI proof. 2021-05-11 09:56:21 +02:00
wborgeaud
ed805453c3 Minor 2021-05-10 13:10:40 +02:00
wborgeaud
d529afcdef Minor 2021-05-07 16:49:27 +02:00
wborgeaud
6ca1b28f7c Fix bug 2021-05-07 16:22:13 +02:00
wborgeaud
6f13263d56 Minor 2021-05-07 11:32:15 +02:00
wborgeaud
1bae3a02f6 Batch open for PLONK 2021-05-07 11:30:03 +02:00
wborgeaud
ea7926bd95 Update PLONK prover. 2021-05-06 23:14:37 +02:00
Daniel Lubarov
a50ba9f590 More unnecessary clones 2021-04-24 11:20:28 -07:00
Daniel Lubarov
6d164adc6a Have the prover use the new MerkleTree API
Before it was storing leaf data and Merkle roots, but nothing in between, since it wasn't yet interacting with intermediate layers (but it will once we hook up the FRI code).
2021-04-24 11:15:11 -07:00
Daniel Lubarov
518470a2d7 Merge pull request #20 from mir-protocol/beta_gamma
Properly use the three betas and gammas
2021-04-24 10:54:32 -07:00
Daniel Lubarov
4f9aa8879b Properly use the three betas and gammas
... for the three different `Z`s we use. Before I was just using the first value as a temporary thing.
2021-04-23 14:25:24 -07:00
Daniel Lubarov
b18f152c43 Remove access to "next" wire & constant values
As discussed, it seems like the batch opening argument will be a significant cost, and we can reduce that cost by not including shifted openings (except for `Z`s which need them).
2021-04-23 13:54:35 -07:00
Daniel Lubarov
b7bc1bf313 Seed Challenger with a hash of the instance
I think this is the recommended way to apply Fiat-Shamir, to avoid any possible attacks like taking someone else's proof and using it to prove a slightly different statement.
2021-04-22 16:38:49 -07:00
wborgeaud
6b407e45ef Progress on FRI 2021-04-21 22:31:45 +02:00
Daniel Lubarov
e8eb658f8e Candidate API for Merkle proof data
Does this make sense? I think other libraries tend to include the leaf's index (either as an integer, or a series of bits indicating left/right turns) as part of a "proof". In FRI, the leaf indices are chosen by the verifier, so I thought that approach might be sort of redundant. Let me know what you think though.
2021-04-06 19:17:38 -07:00
Daniel Lubarov
9b158103d2 Rename 2021-04-02 20:34:27 -07:00
Daniel Lubarov
80e87becb8 Minor refactor 2021-04-02 19:15:39 -07:00
Daniel Lubarov
8565e5015d Minor 2021-04-01 20:39:21 -07:00
Daniel Lubarov
524a974de3 Parallelize vanishing poly computation 2021-04-01 13:46:24 -07:00
Daniel Lubarov
8302c10f21 Multiple vanishing polys, and multiple associated quotient polys
With different random alphas
2021-04-01 13:22:54 -07:00
Daniel Lubarov
234fdc7c99 Bit of refactoring, comments, etc. 2021-04-01 12:49:31 -07:00
Daniel Lubarov
cca79a992c Sponges etc 2021-03-31 21:15:24 -07:00
Daniel Lubarov
16817d1268 Minor 2021-03-30 23:47:29 -07:00
Daniel Lubarov
347206d161 Add Z terms in vanishing poly 2021-03-30 23:12:47 -07:00
Daniel Lubarov
3c262a8c49 Fix some warnings 2021-03-30 20:16:20 -07:00
Daniel Lubarov
6c8dfb97ac Refactor polynomial code 2021-03-30 13:30:31 -07:00
Daniel Lubarov
07718397ea Fix coset [i]fft 2021-03-30 11:46:58 -07:00