Commit Graph
3421 Commits
Author SHA1 Message Date
Dmitry Vagner 9cd1f8a1b2 Merge branch 'main' of github.com:mir-protocol/plonky2 into non-inv 2023-01-18 00:41:18 +07:00
Dmitry Vagner be19cb81e3 struct impl style arithmetic 2023-01-17 23:58:36 +07:00
Dmitry Vagner 31c5db91a5 rename module 2023-01-17 16:11:15 +07:00
Dmitry Vagner ccd4a38ab4 remove make_stack 2023-01-17 15:57:46 +07:00
Daniel Lubarov b753836a37 Merge pull request #864 from mir-protocol/block_circuit
Block circuit
2023-01-15 22:51:24 -08:00
Daniel Lubarov b6f6c21018 Block circuit 2023-01-15 00:06:08 -08:00
Daniel Lubarov 3a6d693f3f Merge pull request #863 from mir-protocol/smart_contract_test
Basic smart contract test
2023-01-14 21:42:20 -08:00
Daniel Lubarov a2f4a58d9a log 2023-01-14 21:21:47 -08:00
Daniel Lubarov df2ba7a384 Basic smart contract test 2023-01-14 21:18:58 -08:00
Nicholas Ward 07e02f2df1 Merge pull request #862 from mir-protocol/prover_inputs_error_handling
Use error instead of panicking in `FromStr`
2023-01-13 16:39:31 -08:00
wborgeaud a158effe4d Use error instead of panicking in FromStr 2023-01-13 15:26:53 +01:00
Dmitry Vagner 3fbc8bff3e move comment 2023-01-13 09:09:27 +04:00
Dmitry Vagner ea8cfc95b0 name 2023-01-13 09:06:51 +04:00
Dmitry Vagner 2a2880b7ea name 2023-01-13 09:06:23 +04:00
Dmitry Vagner 800ceb6000 zero name 2023-01-13 09:02:39 +04:00
Dmitry Vagner e6bcad6c65 Merge branch 'non-inv' of github.com:mir-protocol/plonky2 into non-inv 2023-01-13 08:58:31 +04:00
Dmitry Vagner 446a0d3f56 name 2023-01-13 08:58:17 +04:00
Dima VandJacqueline Nabaglo 81861095d3 Update evm/src/cpu/kernel/asm/curve/bn254/field_arithmetic/inverse.asm
Co-authored-by: Jacqueline Nabaglo <jakub@mirprotocol.org>
2023-01-12 20:57:54 -08:00
Dmitry Vagner 4f38c3a731 name 2023-01-13 08:48:51 +04:00
Dmitry Vagner 70d7fb1352 cleaner inv 2023-01-13 08:47:15 +04:00
Dima VandJacqueline Nabaglo 32f24819dd Update evm/src/cpu/kernel/asm/curve/bn254/curve_arithmetic/curve_add.asm
Co-authored-by: Jacqueline Nabaglo <jakub@mirprotocol.org>
2023-01-12 20:36:47 -08:00
Dmitry Vagner 49db35d35e Merge branch 'non-inv' of github.com:mir-protocol/plonky2 into non-inv 2023-01-11 18:20:55 +04:00
Dima VandJacqueline Nabaglo 42f98a09ae Update evm/src/bn254.rs
Co-authored-by: Jacqueline Nabaglo <jakub@mirprotocol.org>
2023-01-11 05:58:26 -08:00
Dmitry Vagner 82ce8153cc \n 2023-01-11 17:54:43 +04:00
Dmitry Vagner 93a363c100 Merge branch 'main' of github.com:mir-protocol/plonky2 into non-inv 2023-01-11 17:54:22 +04:00
Dima VandJacqueline Nabaglo 068f74854a Update evm/src/witness/util.rs
Co-authored-by: Jacqueline Nabaglo <jakub@mirprotocol.org>
2023-01-11 05:45:08 -08:00
Dima VandJacqueline Nabaglo 698ab6e749 Update evm/src/bn254.rs
Co-authored-by: Jacqueline Nabaglo <jakub@mirprotocol.org>
2023-01-11 05:43:56 -08:00
Daniel Lubarov be7a489c6e Fix stack overflow 2023-01-10 21:03:46 -08:00
Daniel Lubarov 8ba8bb62f2 Merge pull request #860 from mir-protocol/agg_circuit_2
Add aggregation circuit
2023-01-04 14:57:56 -08:00
Daniel Lubarov 87be6097a1 Feedback 2023-01-04 14:50:15 -08:00
Daniel Lubarov ae212cfbbd Merge pull request #859 from mir-protocol/remove_older_evm_recursion_logic
Remove some older EVM recursion logic
2023-01-04 00:07:15 -08:00
Daniel Lubarov 14e6e7e968 Merge pull request #858 from mir-protocol/remove_ctl_defaults
Remove CTL defaults
2023-01-03 23:32:41 -08:00
Daniel Lubarov e4a5c2c968 Merge pull request #857 from mir-protocol/non_tight_degree_bound
Allow non-tight degree bound
2023-01-03 22:29:45 -08:00
Daniel Lubarov f4ac2d4f9c Fix vk 2023-01-03 17:45:47 -08:00
Daniel Lubarov 5df784416a Add aggregation circuit
Which can be used to compress two proofs into one. Each inner proof can be either
- an "EVM root" proof (which typically proves one transaction, though it could be 0 or more)
- another aggregation proof
2023-01-03 15:46:59 -08:00
Daniel Lubarov 76b3eb304c more 2023-01-03 12:43:05 -08:00
Daniel Lubarov fbb72e16bb warning 2023-01-03 12:29:14 -08:00
Daniel Lubarov e12c6ad5b9 Remove some older EVM recursion logic
Some logic was replaced by the constant-degree logic in `fixed_recursive_verifier`.
2023-01-03 11:53:21 -08:00
Daniel Lubarov 6655e776a8 Remove CTL defaults
We ended up not needing the feature.
2023-01-03 11:36:42 -08:00
Daniel Lubarov 0ca308400a Merge pull request #855 from mir-protocol/fixed_stark_recursion
Shrink STARK proofs to a constant degree
2023-01-03 11:31:14 -08:00
Daniel Lubarov 5719c0b70b feedback 2023-01-03 11:23:28 -08:00
Daniel Lubarov 1ecdb96a6b Power of two length 2023-01-03 11:03:20 -08:00
Daniel Lubarov 2e59ceccc4 import 2023-01-03 10:40:05 -08:00
Daniel Lubarov 40aecc8e95 Allow non-tight degree bound
Reverts the degree adjustment part of #436. As @jimpo pointed out, the adjustment complicates security by allowing rational functions of the form `poly(x) / x`.

A tight degree bound shouldn't be necessary. Ultimately we want to check that some witness function `f(x)` exists satisfying (simplified) `c(f(x)) = Z_H(x) q(x)`.  We only need `f(x)` to be low-degree because that allows us to use polynomial identity testing. With PIT we don't care about exact degree bounds; a negligible degree change will have a negligible effect on PIT soundness.
2023-01-03 10:19:55 -08:00
Daniel Lubarov 18ce7ea547 Disable slow test on CI 2023-01-01 23:42:05 -08:00
Daniel Lubarov 595e751ac1 Shrink STARK proofs to a constant degree
The goal here is to end up with a single "root" circuit representing any EVM proof. I.e. it must verify each STARK, but be general enough to work with any combination of STARK sizes (within some range of sizes that we chose to support). This root circuit can then be plugged into our aggregation circuit.

In particular, for each STARK, and for each initial `degree_bits` (within a range that we choose to support), this adds a "shrinking chain" of circuits. Such a chain shrinks a STARK proof from that initial `degree_bits` down to a constant, `THRESHOLD_DEGREE_BITS`.

The root circuit then combines these shrunk-to-constant proofs for each table. It's similar to `RecursiveAllProof::verify_circuit`; I adapted the code from there and I think we can remove it after. The main difference is that now instead of having one verification key per STARK, we have several possible VKs, one per initial `degree_bits`. We bake the list of possible VKs into the root circuit, and have the prover indicate the index of the VK they're actually using.

This also partially removes the default feature of CTLs. So far we've used filters instead of defaults. Until now it was easy to keep supporting defaults just in case, but here maintaining support would require some more work. E.g. we couldn't use `exp_u64` any more, since the size delta is now dynamic, it can't be hardcoded. If there are no concerns, I'll fully remove the feature after.
2023-01-01 23:11:39 -08:00
Dmitry Vagner 5cd86b6652 names and format 2022-12-30 20:58:04 -08:00
Dmitry Vagner 2b91a1a664 simplify miller loop 2022-12-30 20:08:22 -08:00
Dmitry Vagner de494dcf3b remove prints 2022-12-29 14:12:36 -08:00
Dmitry Vagner 77798f889e remove loop endpoint 2022-12-29 14:12:03 -08:00