2902 Commits

Author SHA1 Message Date
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
39fc7a2a9e
Merge pull request #766 from mir-protocol/more_inc_dec_macros
Some more uses of %increment, %decrement
2022-10-07 12:17:13 -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
d2dcfb5816
Merge pull request #763 from mir-protocol/mpt_hash_ext
Hash MPT extension nodes
2022-10-06 21:08:53 -07: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
40b2fec4ee
Merge pull request #762 from mir-protocol/mpt_fixes
MPT fixes
2022-10-06 17:14:43 -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
wborgeaud
39fc219324 PR feedback 2022-10-06 16:40:03 +02:00
wborgeaud
0bc3f20479 PR feedback 2022-10-06 16:32:35 +02:00
wborgeaud
d4f2656241
Merge pull request #758 from mir-protocol/conditional_recursive_verifier
Conditional recursive verifier
2022-10-06 09:58:53 +02:00
wborgeaud
2bb63a6f11 PR feedback 2022-10-06 09:43:42 +02:00
Daniel Lubarov
4fe4a006a3
Merge pull request #761 from mir-protocol/mpt_hash_branch
MPT logic to hash branch nodes
2022-10-05 21:04:18 -07:00
Daniel Lubarov
f2cb42bbe8 MPT logic to hash branch nodes 2022-10-05 20:46:49 -07:00
Daniel Lubarov
47a37c5f8a
Merge pull request #760 from mir-protocol/rework_mpt_hashing
Rework MPT hashing to support inlining <32 byte children
2022-10-05 15:42:09 -07:00
Daniel Lubarov
0c9847abf3 Rework MPT hashing to support inlining <32 byte children 2022-10-05 15:23:06 -07:00
Dima V
7ccc673368
Merge pull request #759 from mir-protocol/ripeFIX
Fix RipeMD padlength issue
2022-10-05 12:21:39 -07:00
Dmitry Vagner
7c7084a8d3 clean up and format 2022-10-05 12:11:10 -07:00
Dmitry Vagner
0afb9b0cf4 fmt 2022-10-05 10:10:45 -07:00
Dmitry Vagner
9ebbc033bc fix padlength issue 2022-10-05 09:45:38 -07:00
wborgeaud
ce0a4f4480 Use ArithmeticGate for select 2022-10-05 16:42:55 +02:00
wborgeaud
66c21931ce Minor 2022-10-05 16:34:24 +02:00
wborgeaud
52c82f0c21 Minor 2022-10-05 16:32:38 +02:00
wborgeaud
2982f45afa Add test 2022-10-05 15:38:06 +02:00
wborgeaud
3260031fb2 Select logic 2022-10-05 14:21:12 +02:00
BGluth
1275bcca5b
Merge pull request #757 from mir-protocol/eth_trie_utils_crates_dot_io
Now uses `eth_trie_utils` on `crates.io`
2022-10-04 22:25:30 -06:00
BGluth
bf57fe9835 Now uses eth_trie_utils on crates.io 2022-10-04 22:07:43 -06:00
Daniel Lubarov
d8bf30150f
Merge pull request #756 from mir-protocol/rlp_fixes
RLP related fixes
2022-10-04 15:34:38 -07:00
Daniel Lubarov
0ccb340e40 RLP related fixes 2022-10-04 15:18:31 -07:00
wborgeaud
e515f1e1cc Split circuit and witness generation 2022-10-04 09:56:12 +02:00
Dima V
dd6c5a0d1a
Merge pull request #640 from mir-protocol/ripeMD
RipeMD
2022-10-03 15:49:04 -07:00
Dmitry Vagner
95128cbbf5 done 2022-10-03 15:32:47 -07:00
Dmitry Vagner
53014b732f almost done 2022-10-03 15:30:17 -07:00
Nicholas Ward
d48f63142f
Merge pull request #754 from mir-protocol/sha2_inline_consts
Inline some SHA2 constants
2022-10-03 15:20:34 -07:00
Daniel Lubarov
474ac4787a
Merge pull request #753 from mir-protocol/unroll_num_bytes
Unroll num_bytes
2022-10-03 15:02:12 -07:00
Dmitry Vagner
1475cddb3d rearrange 2022-10-03 15:01:59 -07:00
Daniel Lubarov
c03773bab1 Inline some SHA2 constants
I think `%mload_kernel_code_u32` is good when we need to do random access, but since the indices are constant here, let's just hardcode them like this.

This reduces the assembled size of `compression.asm` from 1827 to 1454 bytes. I think there's still a lot more we could do to shrink it, though it's not that important.
2022-10-03 14:59:33 -07:00
Dmitry Vagner
54885fefa0 fix merge problem 2022-10-03 14:57:04 -07:00
Daniel Lubarov
66c28e953d Unroll num_bytes
Since it's in some code paths where speed is critical.
2022-10-03 14:42:11 -07:00
Dmitry Vagner
6e5fe43c7e delete duplicates 2022-10-03 14:31:56 -07:00
Daniel Lubarov
295bd60ee7
Merge pull request #752 from mir-protocol/hash_kernel
Fill in `hash_kernel`
2022-10-03 14:28:46 -07:00
Dmitry Vagner
d42250d677 merge 2022-10-03 14:25:33 -07:00
Nicholas Ward
d0caf8bed3
Merge pull request #671 from mir-protocol/sha2_precompile
Sha2 precompile
2022-10-03 14:17:09 -07:00
Daniel Lubarov
5e32241543 Fill in hash_kernel 2022-10-03 14:12:05 -07:00
Nicholas Ward
43df58ea18 alphabetical 2022-10-03 14:10:10 -07:00