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