2406 Commits

Author SHA1 Message Date
Daniel Lubarov
8a8b3f36aa
Merge pull request #678 from proxima-one/fix-starky-avx
Fix starky avx
2022-08-21 12:06:39 -07:00
Daniel Lubarov
3a6bbd825c
Merge pull request #677 from mir-protocol/u160_comments
Tweak comments
2022-08-19 18:28:49 -07:00
Daniel Lubarov
a0de1869c2
Merge pull request #676 from mir-protocol/from_biguint_change
Change `from_biguint`'s behavior with extension fields
2022-08-19 18:28:37 -07:00
Sladuca
ca35502660 fmt 2022-08-19 17:54:48 -04:00
Sladuca
3eadc27be5 add fix to evm 2022-08-19 17:53:12 -04:00
Sladuca
ff961a34a3 fix lost evals when P::WIDTH > 0 2022-08-19 17:39:55 -04:00
Daniel Lubarov
831a671872 Tweak comments 2022-08-19 10:35:02 -07:00
Daniel Lubarov
2fd5fbbe01 Change from_biguint's behavior with extension fields
These appear to be unused for extension fields, so we're free to change the mapping without breaking anything.

As the TODO says, the mapping that's currently implemented doesn't seem natural or useful. It seems more natural to treat the `BigUint` as a base field element, potentially in a non-canonical form.
2022-08-19 09:21:10 -07:00
Daniel Lubarov
cbfc13c33f Minor paper update 2022-08-18 08:50:49 -07:00
Jacqueline Nabaglo
5922c58730
Change logic limb size to 32 bits (#674)
* Change logic limb size to 32 bits

* Remove unnecessary columns (thx Daniel!)
2022-08-17 21:19:27 -07:00
Daniel Lubarov
e3d131b99d Update paper 2022-08-17 16:29:30 -07:00
Daniel Lubarov
24cc29ff71
Merge pull request #673 from mir-protocol/start_at_route_txn
Start with PC=route_txn instead of 0
2022-08-17 12:57:38 -07:00
Daniel Lubarov
bfe86d70f5 Start with PC=route_txn instead of 0 2022-08-17 12:21:29 -07:00
Jacqueline Nabaglo
b98dd47820
Permission levels, jumps, traps (#653)
* Permission levels, jumps, traps

* Tests passing

* PR comments + documentation

* Docs + minor bugfixes

* Tests

* Use already-defined `stop` and `exception` (but renamed to `sys_stop`, `fault_exception`)

* Daniel comments
2022-08-16 09:46:10 -07:00
Daniel Lubarov
a7618ef7df Merge branch 'licenses' 2022-08-16 09:01:16 -07:00
Daniel Lubarov
2bb2be37e0
Merge pull request #668 from mir-protocol/inverse_2exp_comment
Expand inverse_2exp comment
2022-08-15 17:17:48 -07:00
Daniel Lubarov
bf4e7ff3b7 Feedback 2022-08-15 17:17:05 -07:00
Daniel Lubarov
c56b7c8118 Expand inverse_2exp comment 2022-08-15 16:17:32 -07:00
Daniel Lubarov
232303b9ec
Merge pull request #666 from mir-protocol/rlp_encode
RLP encoding functions
2022-08-15 12:19:04 -07:00
Daniel Lubarov
97b271bf69
Merge pull request #663 from mir-protocol/use_mstore_txn_field
Make use of `mstore_txn_field` in type 0 parsing
2022-08-15 11:41:18 -07:00
Daniel Lubarov
e9f38ee535
Merge pull request #667 from mir-protocol/keccak_improvement
Improved Keccak implementation
2022-08-15 11:39:56 -07:00
Daniel Lubarov
faa75178a2 MIT + Apache2 licenses 2022-08-15 07:43:00 -07:00
Daniel Lubarov
61819af07d Improved Keccak implementation
Based on the approach @SyxtonPrime described.

In terms of columns, the changes are:
- Store inputs (`A`) as `u32` limbs, rather than individual bits.
- Remove `C_partial`. It was used to store an intermediate product in a 5-way xor, but we've since realized that we can do a 5-way xor directly.
- Add `C_prime`, an intermediate result used to help verify the relation between `A` and `A'`.
2022-08-14 21:33:35 -07:00
Daniel Lubarov
539152d767 RLP encoding functions 2022-08-14 11:41:53 -07:00
Daniel Lubarov
f52e005307 Add static 2022-08-13 12:17:19 -07:00
Daniel Lubarov
137076c964 Revert "Add static"
This reverts commit 90c4e1b9d1cad9309c0cbcaeff52c172167b2c1c.
2022-08-13 12:16:19 -07:00
Daniel Lubarov
90c4e1b9d1 Add static 2022-08-13 12:15:42 -07:00
Daniel Lubarov
6ea801d960 TODOs 2022-08-13 10:23:29 -07:00
Daniel Lubarov
4c0c93ff56
Merge pull request #652 from mir-protocol/transaction_processing
Core transaction processing logic
2022-08-12 17:37:08 -07:00
Daniel Lubarov
74b1fd25e6 TODOs 2022-08-12 17:37:00 -07:00
Daniel Lubarov
cc61c7211c Core transaction processing logic
With lots of TODOs to fill in afterward; this is just a start.
2022-08-12 17:20:18 -07:00
Daniel Lubarov
1763b6bc37
Merge pull request #662 from mir-protocol/stack_pruning_opt_perms
For permutations, find the optimal sequence of swaps
2022-08-12 17:19:47 -07:00
Daniel Lubarov
cf0de26ddf
Merge pull request #664 from mir-protocol/fix_shift_propagation
Fix shift order in constant propagation
2022-08-11 12:57:22 -04:00
Daniel Lubarov
288ff63945 Fix shift ordering 2022-08-10 21:47:37 -07:00
Daniel Lubarov
707e564934 Make use of mstore_txn_field in type 0 parsing
Some of the `%stack` operations are now trivial, but I kind of like keeping `%stack` since it serves as documentation as well, making comments about the stack unnecessary.
2022-08-09 18:44:41 -04:00
Daniel Lubarov
763d63de08 For permutations, find the optimal sequence of swaps
Using a method Angus described. This is mainly his idea and code, I just ported it to Rust.
2022-08-09 16:33:02 -04:00
Daniel Lubarov
68de3ee0c6
Merge pull request #660 from mir-protocol/packing
Packing memory operations
2022-08-08 14:23:49 -04:00
Daniel Lubarov
65a20bcd8a Merge remote-tracking branch 'proxima/log-portability' 2022-08-06 23:00:32 -04:00
Sebastien La Duca
86c1493d3d
Merge pull request #1 from mir-protocol/log-portability-stubs
Log portability stubs
2022-08-06 22:34:53 -04:00
Daniel Lubarov
385a990c50 Unsuppress warnings 2022-08-06 22:27:17 -04:00
Daniel Lubarov
1e5383c63d Stub push/pop 2022-08-06 22:18:53 -04:00
Daniel Lubarov
0263116e6c
Merge pull request #661 from proxima-one/no-rand-2
feature-gate rand
2022-08-06 22:07:14 -04:00
Sladuca
e7216f2683 feature-gate rand 2022-08-06 11:35:41 -04:00
Sladuca
3d5a9174fd remove explicit feature include 2022-08-06 11:17:36 -04:00
Daniel Lubarov
94def938aa
Merge pull request #654 from proxima-one/make-gates-public
Make the rest of gates public
2022-08-05 22:30:31 -05:00
Nicholas Ward
ed3ac7b29d
Merge pull request #658 from mir-protocol/memory_stark_fix
Memory Stark fix
2022-08-05 15:33:00 -07:00
Daniel Lubarov
5f14bef57e
Merge pull request #655 from mir-protocol/more_metadata
More metadata fields
2022-08-05 14:08:51 -05:00
Daniel Lubarov
ccc4202de3 Packing memory operations 2022-08-05 13:44:08 -04:00
Daniel Lubarov
b741458d02
Merge pull request #659 from mir-protocol/macro_labels
Support macro-local labels
2022-08-05 09:13:24 -05:00
Daniel Lubarov
616eb618f2 Support macro-local labels
Again borrowing syntax from NASM. Example from the test:

    %macro spin
    %%start:
        PUSH %%start
        JUMP
    %endmacro

One thing this lets us do is create "wrapper" macros which call a function, then return to the code immediately following the macro call, such as

    %macro decode_rlp_scalar
        %stack (pos) -> (pos, %%after)
        %jump(decode_rlp_scalar)
    %%after:
    %endmacro

I used this to clean up `type_0.asm`.

However, since such macros need to insert `%%after` beneath any arguments in the stack, using them will be suboptimal in some cases. I wouldn't worry about it generally, but we might want to avoid them in performance-critical code, or functions with many arguments like `memcpy`.
2022-08-04 12:32:20 -07:00