1501 Commits

Author SHA1 Message Date
Daniel Lubarov
23f0e49c87
Separate some circuit logic from FRI code (#414)
My goal is to make the FRI code independent of circuit objects like `CommonCircuitData`, so that it can be reused by STARK code which won't involve those objects.

A few changes here:

- Move `rate_bits` and `cap_height` into `FriConfig`.
- Move `degree_bits` into `FriParameters` (since it's instance size specific).
- Make `FriParams` contain `FriConfig`, so FRI methods can take just the former and access fields in both.
- Replace `CommonCircuitConfig` with `FriParams` in FRI prover methods.

The FRI verifier methods still involve circuit objects, as they have PLONK logic in `fri_combine_initial`. Will think about how to deal with that after this.
2022-01-02 11:26:26 -08:00
wborgeaud
a452da523b
Merge pull request #407 from mir-protocol/challenger_outer_hash
Use the outer hash in the challenger
2022-01-02 10:24:29 +01:00
wborgeaud
7b03ebe1b8 PR feedback 2022-01-02 10:16:35 +01:00
Daniel Lubarov
0a5a224900 import 2022-01-01 11:05:46 -08:00
Daniel Lubarov
cf6713e737 Remove accidental redundant struct 2022-01-01 09:48:20 -08:00
Jakub Nabaglo
8d093a8440
Decrease CI scratch disk space (#412)
* Decrease CI scratch disk space

* Daniel PR review
2021-12-30 18:22:35 -08:00
Jakub Nabaglo
ea43053532
Square trait (#409)
* `Squarable` trait

* Minor style

* Further minor style (Squarable -> Square to match Rust convention)
2021-12-30 12:11:02 -08:00
Jakub Nabaglo
5a379f15e7
Rename PackedField constants ZERO -> ZEROS, ONE -> ONES (#408) 2021-12-29 16:56:38 -08:00
wborgeaud
77a2fc6100 Comment for KeccakPermutation 2021-12-29 16:58:31 +01:00
wborgeaud
df2b6e76b7 Move permutations to their specific files 2021-12-29 16:54:27 +01:00
wborgeaud
a0a42e4bef Move hashes to their specific files 2021-12-29 16:51:46 +01:00
wborgeaud
314a5845b7 Use outer hash in Challenger 2021-12-29 16:41:43 +01:00
Daniel Lubarov
c126641c5d
Split into crates (#406)
* Split into crates

I kept other changes to a minimum, so 95% of this is just moving things. One complication that came up is that since `PrimeField` is now outside the plonky2 crate, these two impls now conflict:
```
impl<F: PrimeField> From<HashOut<F>> for Vec<u8> { ... }
impl<F: PrimeField> From<HashOut<F>> for Vec<F> { ... }
```
with this note:
```
note: upstream crates may add a new impl of trait `plonky2_field::field_types::PrimeField` for type `u8` in future versions
```
I worked around this by adding a `GenericHashOut` trait with methods like `to_bytes()` instead of overloading `From`/`Into`. Personally I prefer the explicitness anyway.

* Move out permutation network stuff also

* Fix imports

* Fix import

* Also move out insertion

* Comment

* fmt

* PR feedback
2021-12-28 11:51:13 -08:00
Jakub Nabaglo
107ba3ab05
Fix build on 32-bit Intel (#405) 2021-12-21 12:00:33 -08:00
Daniel Lubarov
04dce92a3a
Print timing for a regular Poseidon recursive proof (#403)
* Print timing for a regular Poseidon recursive proof

Rather than the Keccak-256 proof. I kept it but hid the timing since it's less important to us. Alternatively we could test Keccak-256 only in the size-optimized test, since that's basically testing a bridge proof. Let me know if you have a preference.

* Remove Keccak proof per PR discussion
2021-12-20 18:52:55 -08:00
Jakub Nabaglo
d4a0a8661e
Packed evaluation for most gates (#395)
* Most gates support packed evaluation

* ComparisonGate

* Minor: outdated todo marker

* Revert superfluous change

* Post-merge fixes

* Daniel comments

* Minor: Markdown in comments
2021-12-20 15:08:07 -08:00
Jakub Nabaglo
bbbb57caa6
Simplify AVX2 Goldilocks (#399)
* Simplify AVX2 Goldilocks

* Fixes

* Lints

* Docs

* Minor doc

* Minor: typo
2021-12-20 13:41:42 -08:00
wborgeaud
2fc1a6156a
Merge pull request #404 from mir-protocol/gmimc_config
GMiMC config
2021-12-20 19:23:58 +01:00
wborgeaud
514cca7ebb PR feedback 2021-12-20 19:13:12 +01:00
wborgeaud
fd03a187ce Minor 2021-12-20 16:46:31 +01:00
wborgeaud
2e4bea59ee Multi-hash test 2021-12-20 16:16:05 +01:00
wborgeaud
156fd45b83 Add GMiMC config 2021-12-20 16:07:14 +01:00
wborgeaud
30cf4cd0a8
Merge pull request #398 from mir-protocol/injective_hash_conversion
Use 7 bytes to represent a field element to avoid collisions in hash conversion
2021-12-20 09:22:53 +01:00
wborgeaud
0538511c9d Comment for why 7 bytes 2021-12-20 09:22:23 +01:00
Jakub Nabaglo
e9fafa5131 Faster Goldilocks mul by forcing a branch 2021-12-18 15:28:47 -08:00
Jakub Nabaglo
c4549c4cc5
Silence Clippy on main (#402)
* Silence Clippy on main

* Fix a `unnecessary_to_owned`
2021-12-18 14:30:35 -08:00
wborgeaud
d594b8fc2d Convert chunks of 7 bytes instead of 8 2021-12-17 08:46:07 +01:00
wborgeaud
7d574c8620
Merge pull request #341 from mir-protocol/generic_configuration
Generic configuration trait
2021-12-17 08:34:10 +01:00
Jakub Nabaglo
433f358455
Fix build on AVX2 (#397) 2021-12-16 15:51:38 -08:00
Jakub Nabaglo
81c6f6c7bf Merge remote-tracking branch 'origin/main' into generic_configuration 2021-12-16 13:28:49 -08:00
Jakub Nabaglo
eb7615f7cc Change gate evaluation memory layout (#390) 2021-12-16 12:37:33 -08:00
wborgeaud
23a902e1e0 Fix nits 2021-12-16 15:58:38 +01:00
wborgeaud
7a2afb5119 Clippy 2021-12-16 15:30:40 +01:00
wborgeaud
288a0b7cf8 Fix merge conflicts 2021-12-16 15:20:45 +01:00
wborgeaud
bdbc8b6931 Merge branch 'main' into generic_configuration
# Conflicts:
#	src/field/extension_field/mod.rs
#	src/fri/recursive_verifier.rs
#	src/gadgets/arithmetic.rs
#	src/gadgets/arithmetic_extension.rs
#	src/gadgets/hash.rs
#	src/gadgets/interpolation.rs
#	src/gadgets/random_access.rs
#	src/gadgets/sorting.rs
#	src/gates/arithmetic_u32.rs
#	src/gates/gate_tree.rs
#	src/gates/interpolation.rs
#	src/gates/poseidon.rs
#	src/gates/poseidon_mds.rs
#	src/gates/random_access.rs
#	src/hash/hashing.rs
#	src/hash/merkle_proofs.rs
#	src/hash/poseidon.rs
#	src/iop/challenger.rs
#	src/iop/generator.rs
#	src/iop/witness.rs
#	src/plonk/circuit_data.rs
#	src/plonk/proof.rs
#	src/plonk/prover.rs
#	src/plonk/recursive_verifier.rs
#	src/util/partial_products.rs
#	src/util/reducing.rs
2021-12-16 14:54:38 +01:00
Jakub Nabaglo
357eea8df5
Fix build on main (#396) 2021-12-15 21:59:16 -08:00
wborgeaud
68e3befc08
Merge pull request #391 from mir-protocol/prime_field
Remove `PrimeField` type from the `Field` trait
2021-12-14 18:32:38 +01:00
wborgeaud
9211bcfed5 Move characteristic to its own fn 2021-12-14 17:12:14 +01:00
wborgeaud
6cb4f56af5
Merge pull request #392 from mir-protocol/remove_polynomial_file
Remove `polynomial.rs`
2021-12-13 20:15:07 +01:00
wborgeaud
a446aa056e
Merge pull request #393 from mir-protocol/remove_bits_fn
Replace `bits()` function with `BITS` const
2021-12-13 20:14:50 +01:00
wborgeaud
6863eea74e New clippy lints 2021-12-13 16:51:36 +01:00
wborgeaud
920d5995c7 Replace bits() fn with BITS const 2021-12-13 16:46:49 +01:00
wborgeaud
073fe7a6d9 New clippy lints 2021-12-13 16:40:00 +01:00
wborgeaud
c1698bb99d Remove polynomial.rs (+clippy lints) 2021-12-13 16:39:07 +01:00
wborgeaud
1d215d5d59 Remove dbg 2021-12-13 16:23:39 +01:00
wborgeaud
fb168b5d93 Replace characteristic with option 2021-12-13 16:20:39 +01:00
wborgeaud
e6c3f35431 working 2021-12-13 14:35:05 +01:00
wborgeaud
aed4de0293
Merge pull request #389 from mir-protocol/deoptimize_tests
Compiler optimizes away some tests
2021-12-07 09:20:59 +01:00
wborgeaud
6a50c0fc4e Clippy 2021-12-07 08:56:27 +01:00
wborgeaud
5061b2d110 Use rand_arr instead of rand_vec 2021-12-07 08:13:39 +01:00