-
Notifications
You must be signed in to change notification settings - Fork 853
Introduce the Root Circuit to the integration tests #1471
Conversation
The CopyTable contains a BinaryNumberChip that uses a selector, but the load method doesn't enable the selector. The result of this is that when testing standalone circuits like the EVM circuit, the CopyTable will be included with a fixed column that is all zeroes. This causes problems when testing the EVM circuit with the Root aggregation circuit, because it doesn't support zeroed fixed columns. This commit should fix the problem.
Need 2 reviwers. The priority of this task is lower than word lo-hi |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM! Nice work!
(for SuperCircuit
it seems we'd need 226
size RootCircuit
to aggregate from the experience of zkevm-chain
)
Thanks for the hint! I've updated the tests in 93dddd2 to use degree=26 for Root Circuit with SuperCircuit and degree=24 for the other cases. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
Just 2 small suggestions. Feel free to ignore!
Thanks for the suggestions! I've addressed them in 957f6bd |
Description
Introduce two new sets of tests in the Integration tests with the root circuit: one where the root circuit is verified with the MockProver and the other where a real proof is generated. The input proof to the root circuit is the output of each subcircuit test we had before.
Issue Link
Resolve #1334
Resolve #1460
Type of change
Contents
Issue #1335 has been resolved by assigning the fixed columns in the ExpTable and CopyTable in their
load
methods. Previously they were either not assigned, or assigned dynamically. This was not affecting the SuperCircuit or the Exp/Copy Circuit because in those cases, the assignment is done with a different method. Only for SubCircuit tests where the SubCircuit requires the external table theload
method is used.Rationale
Testing a Root Circuit (no mater if it's with the MockProver or with a real proof) requires a real proof of the underlying circuit. This means that now for each SubCircuit we have 3 tests that require the SubCircuit proof:
I implemented a cache to keep the SubCircuit proofs for each SubCircuit and block so that we have the possibility of running all the tests in a single run while reusing the SubCircuit proofs.
How Has This Been Tested?
I have only tested the SubCircuits (minus SuperCircuit) + Root Circuit via MockProver.
But now we can run these tests under the github CI, so we can defer full testing after the PR is merged.