65 Commits

Author SHA1 Message Date
Daniel Lubarov
d1afe8129c More realistic padding rows in memory
This adds padding rows which satisfy the ordering checks. To ensure that they also satisfy the value consistency checks, I just copied the address and value from the last operation.

I think this method of padding feels more natural, though it is a bit more code since we need to calculate the max range check in a different way. But on the plus side, the constraints are a bit smaller and simpler.

Also added a few constraints that I think we need for soundness:
- Each `is_channel` flag is bool.
- Sum of `is_channel` flags is bool.
- Dummy operations must be reads (otherwise the prover could put writes in the memory table which aren't in the CPU table).
2022-07-12 17:46:19 -07:00
Daniel Lubarov
1331f992a6 fix 2022-07-12 14:55:34 -07:00
Daniel Lubarov
934f1aeb7e Simplify memory table
By no longer storing unsorted operations; they are effectively stored in the CPU table already.

I ran into some issues with sorting, since the existing sort method didn't include `is_channel` columns. Rather than update the existing method, I removed it and added a sort on the `MemoryOp`s, which I think seems cleaner.
2022-07-12 14:53:34 -07:00
Daniel Lubarov
ef3addea2c Merge branch 'main' into evm_generation 2022-07-11 17:24:37 -07:00
Nicholas Ward
abc729f1d6 TODO 2022-07-11 10:44:48 -07:00
Nicholas Ward
bdae9bc33b update 2022-07-11 10:44:48 -07:00
Nicholas Ward
b935605f69 fmt 2022-07-11 10:44:48 -07:00
Nicholas Ward
467f532024 addressed comments 2022-07-11 10:44:48 -07:00
Nicholas Ward
49c208ec9b addressed comments 2022-07-11 10:44:48 -07:00
Nicholas Ward
9ad2958f73 fix 2022-07-11 10:44:48 -07:00
Nicholas Ward
6655ee68e4 restored timestamp column to CTL 2022-07-11 10:44:48 -07:00
Nicholas Ward
6b2b745291 removed debug prints 2022-07-11 10:44:48 -07:00
Nicholas Ward
3a6f2ef25e clippy 2022-07-11 10:44:48 -07:00
Nicholas Ward
51498eb748 fmt 2022-07-11 10:44:48 -07:00
Nicholas Ward
58c2e7214a another padding-row constraint fix 2022-07-11 10:44:48 -07:00
Nicholas Ward
77a7ace39c updates to recursive constraints 2022-07-11 10:44:48 -07:00
Nicholas Ward
f3ef6c9bf3 fix: ignore padding rows in constraints 2022-07-11 10:44:48 -07:00
Nicholas Ward
83963c3a8f permutation pairs 2022-07-11 10:44:48 -07:00
Nicholas Ward
b467a13d91 fix 2022-07-11 10:44:48 -07:00
Nicholas Ward
c3e7652763 updates 2022-07-11 10:44:48 -07:00
Nicholas Ward
181a132335 fixes 2022-07-11 10:44:48 -07:00
Nicholas Ward
a98f267ff0 initial change 2022-07-11 10:44:48 -07:00
Daniel Lubarov
5d74a19ad6 Add test (won't work for a while, but to illustrate) 2022-07-04 18:10:03 -07:00
Daniel Lubarov
e7b480deaf Begin work on witness generation and kernel bootstrapping 2022-07-01 10:09:57 -07:00
wborgeaud
f30889b7d7 NUM_REGISTERS -> NUM_COLUMNS 2022-06-29 10:06:46 +02:00
wborgeaud
7812ad242c s/registers/columns 2022-06-29 10:02:03 +02:00
Daniel Lubarov
34e73db42b
Memory naming tweaks (#579)
* Memory naming tweaks

- Define the channel count and value limbs in a single place, so they're easy to adjust.
- Standardize on "channels" which I think is more explicit, since e.g. `num_mem_ops` used to mean either the channel count or total operation count in a trace.

* feedback

* tweaks

* fmt
2022-06-27 16:03:56 -07:00
Daniel Lubarov
e73d01a037
packed_field -> packed (#584)
* `packed_field` -> `packed`

For cleaner imports; "field" is usually clear from context

* fix
2022-06-27 15:07:52 -07:00
Daniel Lubarov
3346d3f902
field_types -> types (#583)
* `field_types` -> `types`

Here too, I think "field" is usually clear from context, e.g. in `use plonky2::field::types::Field;`.

* fixes

* fmt
2022-06-27 12:24:09 -07:00
Daniel Lubarov
410e03349c
extension_field -> extension (#581)
It seems redundant in most contexts, e.g. `use plonky2::field::extension_field::Extendable;`. One could import `extension_field`, but it's not that common in Rust, and `field::extension` is now about as short.
2022-06-27 07:18:21 -07:00
Nicholas Ward
4a7ebf057b updated in line with main changes 2022-06-23 14:36:14 -07:00
Nicholas Ward
4d69998cde fix and cleanup 2022-06-23 14:01:22 -07:00
Nicholas Ward
d911eecd37 fixes 2022-06-23 14:01:22 -07:00
Nicholas Ward
798b01d050 added lookup file 2022-06-23 14:01:22 -07:00
Nicholas Ward
29fa32465c fixes 2022-06-23 14:01:22 -07:00
Nicholas Ward
d6983951a4 attempted fix 2022-06-23 14:01:22 -07:00
Nicholas Ward
f04f2bc381 multiple indices per timestamp 2022-06-23 14:01:22 -07:00
Nicholas Ward
9434819829 addressed comments 2022-06-23 14:01:22 -07:00
Nicholas Ward
de52e630e8 addressed comments 2022-06-23 14:01:22 -07:00
Nicholas Ward
2d7f2b47c2 fmt 2022-06-23 14:01:22 -07:00
Nicholas Ward
a2c14077d2 fixes 2022-06-23 14:01:22 -07:00
Nicholas Ward
a860eb7727 fixes 2022-06-23 14:01:22 -07:00
Nicholas Ward
d2eb3b141b addressed comments 2022-06-23 14:01:22 -07:00
Nicholas Ward
dace10a291 removed structs 2022-06-23 14:00:59 -07:00
Nicholas Ward
6884b1aedb addressed comment 2022-06-23 14:00:59 -07:00
Nicholas Ward
3898ccd041 okay you win, clippy 2022-06-23 14:00:59 -07:00
Nicholas Ward
0514cd9646 addressed comments 2022-06-23 14:00:59 -07:00
Nicholas Ward
5707732b75 fix 2022-06-23 14:00:48 -07:00
Nicholas Ward
398e75de4e fix 2022-06-23 14:00:48 -07:00
Nicholas Ward
bf58c20329 updates to registers, new cross-table lookups 2022-06-23 14:00:48 -07:00