45 Commits

Author SHA1 Message Date
wborgeaud
e418997d6f Cleanup 2021-09-17 13:29:59 +02:00
wborgeaud
3534018fec Remove hardcoded GMiMC 2021-09-16 22:19:54 +02:00
Daniel Lubarov
b3008b9475
Some changes to generator_indices_by_watches (#234)
* Some changes to generator_indices_by_watches

- Index generators by the representatives (in disjoint-set forest terminology) of their watched targets, rather than the watched targets themselves.  Enqueuing generators based on their watch lists then works correctly, so we no longer need the step where we reenqueue all generators.
- In #195, it was pointed out that this slows down witness generation a bit. I moved the indexing code to preprocessing, so the prover is a bit faster (~7ms for me).

* Outdated comment

* Panic instead of infinite loop if we get stuck

* BTree

* fmt
2021-09-13 16:38:55 -07:00
Daniel Lubarov
3bc34c59d8
Refactor GMiMC code (#224)
* Refactor GMiMC code

Adds a sub-trait of `Field` called `GMiMCInterface`, which is similar to `PoseidonInterface`.

This lets us have different fields with different GMiMC constants in a type-safe way.

* Remove `Interface`

* Const generic for width
2021-09-07 18:28:28 -07:00
Nicholas Ward
c07f99ac81 merge 2021-09-06 21:38:52 -07:00
Daniel Lubarov
236a143abf
Move some Field members to a Field64 subtrait (#213)
* Move some Field members to a Field64 subtrait

I.e. move anything specific to 64-bit fields.

Also, relatedly,
- Tweak a bunch of prover code to require `Field64`, since 64-bit stuff is used in a couple places, like the FRI proof-of-work
- Remove `bits()`, which was unused and assumed a 64-bit field
- Rename a couple methods to reflect that they're u64 variants

There are no functional changes.

* Field64 -> PrimeField

* Remove `exp_u32`, `kth_root_u32`

* PrimeField: PrimeField

* Move `to_canonical_biguint` as well

* Add back from_noncanonical_u128
2021-09-05 10:27:11 -07:00
Daniel Lubarov
f89f49249a wip 2021-09-04 16:27:40 -07:00
wborgeaud
cd1bd9e77b
Merge pull request #195 from mir-protocol/partition_witness
Remove `CopyGenerator`s and add new `PartitionWitness`
2021-08-24 08:16:35 +02:00
wborgeaud
2fcfa230a6 Pr feedback 2021-08-22 10:36:44 +02:00
wborgeaud
5fba65a3f5 Check old value in PartitionWitness::set_target 2021-08-20 22:42:09 +02:00
wborgeaud
db0ccdd7f4 Unused import 2021-08-20 13:08:20 +02:00
wborgeaud
a61d7bc0cc Typo 2021-08-20 13:00:40 +02:00
wborgeaud
507577b7ad Comments 2021-08-20 12:55:59 +02:00
wborgeaud
1d368782f2 Fix tests 2021-08-20 12:15:15 +02:00
wborgeaud
a90ea6ec79 PartialWitness back to HashMap 2021-08-20 11:56:57 +02:00
wborgeaud
e81001b9ba Clippy 2021-08-20 11:13:40 +02:00
wborgeaud
c53d050408 More cleaning 2021-08-20 11:03:55 +02:00
wborgeaud
6584734928 Cleaning 2021-08-20 10:44:19 +02:00
wborgeaud
c6cf5cf130 Move PartitionWitness 2021-08-20 09:55:49 +02:00
wborgeaud
a44bf9ffd8 Added witness trait 2021-08-20 09:50:07 +02:00
wborgeaud
98559c3256 Working 2021-08-20 09:20:03 +02:00
Daniel Lubarov
90c7a72ceb
Remove some unused warnings (#192)
- Made some methods public, if they seemed like they'd be useful crates that depend on plonky2, and seemed like good/stable APIs
- Deleted a few things I didn't think seemed very useful
- Left a few for now that I was on the fence about
2021-08-19 08:23:45 -07:00
wborgeaud
af0ea25fc8 more trials 2021-08-19 15:59:05 +02:00
wborgeaud
74c2be5090 First pass 2021-08-19 14:54:11 +02:00
wborgeaud
896988ca30 Put back generator check 2021-08-17 09:12:40 +02:00
wborgeaud
5a9c5b295c Minor 2021-08-16 10:41:12 +02:00
wborgeaud
6ba6201b94 Merge branch 'main' into push_to_8192
# Conflicts:
#	src/fri/recursive_verifier.rs
#	src/plonk/circuit_data.rs
#	src/plonk/recursive_verifier.rs
#	src/util/reducing.rs
2021-08-16 08:49:49 +02:00
Daniel Lubarov
f3bfd66657
Add a BoolTarget (#179)
It's just a wrapper around `Target`, which signifies that the wrapped `Target` has already been range checked. Should make it easier to audit code that expects bools.
2021-08-14 08:53:39 -07:00
wborgeaud
75ad055f40 First try 2021-08-13 14:28:05 +02:00
wborgeaud
ce71b536bf First pass 2021-08-10 13:33:44 +02:00
Daniel Lubarov
45fdc4d11f debug_assert 2021-08-09 19:26:29 -07:00
wborgeaud
c3a0b7cc82 PR feedback 2021-08-09 18:35:41 +02:00
wborgeaud
dd076e5c73 Auto resize partial witness 2021-08-09 09:58:09 +02:00
wborgeaud
213de80a3a Merge branch 'main' into partial_witness_vec
# Conflicts:
#	src/iop/challenger.rs
2021-08-06 18:17:31 +02:00
wborgeaud
e97b7b0737 PR feedback 2021-08-06 18:06:02 +02:00
wborgeaud
db236e4824 Fix tests 2021-08-06 15:14:38 +02:00
wborgeaud
7d11d0f8a1 Change PartialWitness to use Vecs 2021-08-06 14:58:39 +02:00
wborgeaud
a6490de7ad routed_wires -> wires 2021-08-06 11:30:56 +02:00
wborgeaud
99e399f661 Renaming 2021-08-06 11:10:15 +02:00
wborgeaud
8531cf042a Replace HashMap by Vec in generate_partial_witness 2021-08-06 10:52:11 +02:00
Daniel Lubarov
8b8e4d223d
Optimize witness generation a bit (#153)
Mainly storing pending generators in a Vec rather than a HashMap.  Requires an extra check to make sure we don't run one twice after adding it to the Vec twice.
2021-08-04 09:55:11 -07:00
Daniel Lubarov
79af87535a get_extension_targets 2021-08-04 09:54:34 -07:00
Daniel Lubarov
d6211b8ab8
Reuse a buffer of generated values (#142)
* Reuse a buffer of generated values

To avoid allocating `GeneratedValues` all the time. Saves ~60ms or so.

* PR feedback
2021-08-02 10:55:10 -07:00
wborgeaud
2bbcf17699 Test eval_unfiltered_* functions 2021-08-02 14:17:42 +02:00
Daniel Lubarov
018fb005f8
Move stuff around (#135)
No functional changes here. The biggest change was moving certain files into new directories like `plonk` and `iop` (for things like `Challenger` that could be used in STARKs or other IOPs). I also split a few files, renames, etc, but again nothing functional, so I don't think a careful review is necessary (just a sanity check).
2021-07-29 22:00:29 -07:00