821 Commits

Author SHA1 Message Date
wborgeaud
3026533a8a Fix keccak256_word 2022-10-26 16:44:05 +02:00
wborgeaud
b97ec3bda1 New clippy lint 2022-10-25 10:50:40 +02:00
wborgeaud
0e58efdcc1 Remove Config from CommonCircuitData 2022-10-25 10:08:21 +02:00
wborgeaud
7b2f515c00
Merge pull request #791 from mir-protocol/kernel_msize
Implement MSIZE in the kernel
2022-10-21 17:30:44 +02:00
Hamish Ivey-Law
4af2ede6e6
Implement DIV instruction (#790)
* Implement DIV instruction.

* cargo fmt, clippy, minor doc update.

* Add implementation of circuit version.
2022-10-21 16:25:38 +11:00
wborgeaud
77d5c625cd Minor 2022-10-20 19:36:28 +02:00
wborgeaud
0a800f8261 Minor 2022-10-20 19:29:35 +02:00
wborgeaud
fab3fe77c0 Minor 2022-10-20 19:28:24 +02:00
wborgeaud
9982d79999 Add msize 2022-10-20 19:23:01 +02:00
wborgeaud
71ed3c43ac Fix fix interpreter 2022-10-20 14:32:28 +02:00
wborgeaud
61b6b16106 Fix interpreter 2022-10-20 14:06:48 +02:00
Hamish Ivey-Law
f55e07659c
Implement SUBMOD instruction (#789)
* Implement SUBMOD instruction.

* Implement recursive circuit version of SUBMOD.
2022-10-20 04:46:01 +11:00
Daniel Lubarov
a2edff4670 Small storage fixes 2022-10-17 23:35:34 -07:00
Daniel Lubarov
9639ff22dc MPT storage logic 2022-10-17 22:46:48 -07:00
Daniel Lubarov
8f9c5a7869
Merge pull request #786 from mir-protocol/mpt_dirs
More directories for MPT logic
2022-10-17 11:31:13 -07:00
wborgeaud
1ae922dd4d Merge branch 'main' into generate_dummy_proof 2022-10-17 10:01:32 +02:00
Daniel Lubarov
f125786d9b More directories for MPT logic 2022-10-16 22:55:09 -07:00
Daniel Lubarov
7f366cdace Treat storage tries as sub-tries of the state trie
I.e. have leaves in the state trie point to the root of a storage trie
2022-10-16 20:26:37 -07:00
Daniel Lubarov
34865026df
Merge pull request #784 from mir-protocol/avoid_current_memory
Switch a few uses of current-context memory to kernel memory
2022-10-15 10:07:02 -07:00
Daniel Lubarov
a8e30b0ca0 Switch a few uses of current-context memory to kernel memory
E.g. make sure the RLP segment is only used with the kernel context. Using current-context memory would also work, we just need to be consistent.

For transaction parsing etc, the context should be 0 anyway, but explicitly referring to kernel memory feels more idiomatic to me.
2022-10-15 08:45:01 -07:00
wborgeaud
3296f27800
Merge pull request #781 from mir-protocol/redundant_degree_bits
Redundant `degree_bits`
2022-10-15 12:49:59 +02:00
Daniel Lubarov
ecce5be9e3 MPT format tweaks
Don't need value lengths in memory. Branches with null values recognized as value_ptr = null.
2022-10-14 18:09:43 -07:00
Jacqueline Nabaglo
ec3391f9c4
Add Fp254 ops to the CPU table (#779)
* Add Fp254 ops to the CPU table

* Add forgotten file
2022-10-13 14:02:19 -07:00
wborgeaud
69bdbf6bf6 Redundant degree_bits 2022-10-13 18:19:05 +02:00
BGluth
06475c2b61 Bumped patch version 2022-10-11 22:07:32 -06:00
BGluth
cb2e69a2c9 Updated eth_trie_utils to 0.2.0 2022-10-11 20:57:46 -06:00
Daniel Lubarov
581fcce0b0
Merge pull request #777 from mir-protocol/mpt_insert_7
Fix branch hashing bug
2022-10-11 16:10:44 -07:00
Daniel Lubarov
299aabf860 Fix branch hashing bug 2022-10-11 15:56:23 -07:00
Daniel Lubarov
0b2661f845
Merge pull request #774 from mir-protocol/debug_offsets
Interpreter feature to configure debug offsets
2022-10-11 08:55:39 -07:00
Daniel Lubarov
f4c0337af7 Interpreter feature to configure debug offsets 2022-10-11 08:47:06 -07:00
Hamish Ivey-Law
68a5428500
Represent input columns as ranges rather than arrays (#776)
* Use std::ops::Range of columns rather than arrays of column indices.

* Refactor reading from the local values table.

* The inevitable post-push fmt/clippy commit.
2022-10-12 02:39:13 +11:00
wborgeaud
816e7db345 Working 2022-10-11 11:02:03 +02:00
Hamish Ivey-Law
0d0067554e
Refactor and tidy up mul.rs (#764)
* Refactor and tidy up `mul.rs`.

* Jacqui PR comments.
2022-10-11 18:59:02 +11:00
Daniel Lubarov
caf928b11e MPT logic for inserts into extension nodes 2022-10-10 18:33:45 -07:00
Daniel Lubarov
50002df8e4 MPT insert into leaf, overlapping keys case 2022-10-10 10:42:02 -07:00
Daniel Lubarov
cad0473e1d More MPT insert logic 2022-10-10 09:40:28 -07:00
Daniel Lubarov
33dba3a23d Insertion optimization for leaf case 2022-10-09 20:18:16 -07:00
Daniel Lubarov
4a055b3a76 MPT insert logic, part 2 2022-10-09 11:32:01 -07:00
Daniel Lubarov
6bb1ad94e8 MPT insert logic, part 1 2022-10-08 22:27:57 -07:00
Daniel Lubarov
443a070003 Clippy fix 2022-10-08 14:09:18 -07:00
Daniel Lubarov
8ee7265863 Tweak MPT value storage 2022-10-08 13:51:52 -07:00
Daniel Lubarov
817156cd47 Begin MPT insert 2022-10-08 13:23:00 -07:00
Daniel Lubarov
e6b5e3656f Some more uses of %increment, %decrement 2022-10-07 12:03:37 -07:00
wborgeaud
992692b04d
Merge pull request #708 from mir-protocol/per_table_recursion
Per table recursion
2022-10-07 10:03:07 +02:00
wborgeaud
4ff6bbb3de Hardcode verifier data in the circuit 2022-10-07 09:47:03 +02:00
Hamish Ivey-Law
d7bb47318c
Modular operations for the EVM arithmetic unit (#755)
* First draft of 256-bit addition.

* Update comment.

* cargo fmt

* Rename addition evaluation file.

* Port ALU logic from SZ.

* Give a name to some magic numbers.

* `addition.rs` -> `add.rs`; fix carry propagation in add; impl sub.

* Clippy.

* Combine hi and lo parts of the output.

* Implement MUL.

* Suppress Clippy's attempt to make my code even harder to read.

* Next draft of MUL.

* Make all limbs (i.e. input and output) 16-bits.

* Tidying.

* Use iterators instead of building arrays.

* Documentation.

* Clippy is wrong; also cargo fmt.

* Un-refactor equality checking, since it was wrong for sub.

* Daniel comments.

* Daniel comments.

* Rename folder 'alu' -> 'arithmetic'.

* Rename file.

* Finish changing name ALU -> Arithmetic Unit.

* Finish removing dependency on array_zip feature.

* Remove operations that will be handled elsewhere.

* Rename var; tidy up.

* Clean up columns; mark places where range-checks need to be done.

* Import all names in 'columns' to reduce verbiage.

* cargo fmt

* Fix aux_in calculation in mul.

* Remove redundant 'allow's; more precise range-check size.

* Document functions.

* Document MUL instruction verification technique.

* Initial tests for ADD.

* Minor test fixes; add test for SUB.

* Fix bugs in generate functions.

* Fix SUB verification; refactor equality verification.

* cargo fmt

* Add test for MUL and fix some bugs.

* Update doc.

* Quiet incorrect clippy error.

* Initial implementation of ADDMOD and MOD.

* Fixes to addmod.

* Update doc.

* Do 1000 random tests instead of just 1.

* Documentation fix.

* Working version of ADDMOD.

* Working version of MOD.

* Name magic number; do multiple MUL tests.

* Add code and test for special case; add some docs.

* Fix spelling mistake.

* Simplify asserts.

* Tidy comment.

* Remove unused module.

* cargo fmt

* Check that output is reduced.

* Add conversion of canonical `i64` to a `Field64`.

* Handle zero modulus within degree constraint.

* cargo fmt

* Fix some comments.

* Check that the top half of the product is zero!

* Start of refactor.

* Refactoring.

* Remove zero and reduction handling from addmod.

* Refactoring; renaming; bug fixes.

* Reuse intermediate calculations across all modular operations; don't negate quot poly unnecessarily.

* Fix bug where last elt of q*m wasn't checked.

* Refactoring.

* Move circuit poly functions to utils.rs.

* Rename ADDMOD stuff to MODULAR.

* Rename module addmod -> modular.

* Handle zero modulus.

* Verify that output is reduced.

* Implement recursive version of modular circuits.

* clippy

* Tidy up i64 -> Field conversion following Jacqui's comments.

* cargo fmt

* Improved documentation.

* Address Jacqui's comments.

* Save some gates by using builder.arithmetic_extension().
2022-10-07 17:15:50 +11:00
Daniel Lubarov
f8c104033c Hash MPT extension nodes 2022-10-06 20:50:32 -07:00
Daniel Lubarov
b832c6abaf Update spec 2022-10-06 17:29:58 -07:00
Daniel Lubarov
ed2aac3af3 MPT fixes 2022-10-06 16:28:52 -07:00
Daniel Lubarov
0424fe680d mload_packing 2022-10-06 14:27:36 -07:00