Commit Graph
74 Commits
Author SHA1 Message Date
Daniel Lubarov 47ea00d6c7 A few ASM fixes 2022-07-20 15:05:09 -07:00
Daniel Lubarov 997453237f Store memory values as U256s
Ultimately they're encoded as `[F; 8]`s in the table, but I don't anticipate that we'll have any use cases where we want to store more than 256 bits. Might as well store `U256` until we actually build the table since they're more compact.
2022-07-17 07:58:28 -07:00
Daniel Lubarov ab5abc391d Organize segments in an enum
It's a bit more type-safe (can't mix up segment with context or virtual addr), and this way uniqueness of ordinals is enforced, partially addressing a concern raised in #591.

To avoid making `Segment` public (which I don't think would be appropriate), I had to make some other visibility changes, and had to move `generate_random_memory_ops` into the test module.
2022-07-16 10:16:12 -07:00
Daniel Lubarov bfd924870f Generate most of the memory table while it's in row-wise form
This should improve cache locality - since we generally access several values at a time in a given row, we want themt to be close together in memory.

There are a few steps that make more sense column-wise, though, such as generating the `COUNTER` column. I put those after the transpose.
2022-07-13 13:08:41 -07:00
Daniel Lubarov 678d04e69a fix 2022-07-12 17:52:53 -07:00
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 25d429af7a fix 2022-07-12 14:54:36 -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 c389abc140 other segments 2022-07-02 23:17:33 -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 9f22cc72c3 allow 'unused' functions 2022-06-23 14:01:22 -07:00