# zkEVM Circuits - Next Milestone Planning Summary: the team is spliting the next milestone into 3: - Improve Ethereum test passing - 90% (passing) / 10% (failing) - Tech debt - Circuit input builder + Constraint builder refactor (reduce code repetition) - link code+specs+doc - Word HI/LO - Create the specs - Refactor the circuits *(also will be reviewing specs and contributions from other teams)* Timeline: **2-3 months** (** finish between end April or end of May by skipping March**) [Increase opcode support](https://github.com/privacy-scaling-explorations/zkevm-circuits/milestone/1) ## Notes ##### Improve Ethereum test passing - Target this milestone in **2-3 months** (**between end April or end of May**). How much percentage could we cover? - Currently, we're in 22% passing. 1% panicing. Most failing tests are due to unimplemented things. - Most important things to test are **CREATE and CREATE 2** - Out of gas, etc have been implemented. - Good target: **90%/10%** - 90% working - 10% failing or not implemented - Note: this is not exactly test coverage becuase all the test are already written by EF people, client teams need to pass them. - Note: Polygon Hermez in their first alpha they were at 96%. - Question: do we fix the milestone or the timeline? - Decision: try to aim for this 90% and see how far we get in the timeline above, but not block the - Question: do we include tasks for the test tool? - Answer: - Non tech debt: we should change the test tool in the way we can call prover.assert_satissfy so we can propagate the error and get annotations. (**Create task**) Basically, get all the traces when a test fails ##### Tech Debt - Carlos compiled all the "todo" notes in the code. Maybe half of them are things already implemented and the other half might require new tasks: https://hackmd.io/KwrlKYWoRF2NAoT977Aduw **Action item:** let's make a follow up call to classify them - Need to look at the list above and prioritize them. ##### Tech Debt from Edu (1-dup) Unify the types `Block`, `Call`, `Step`, `Transaction` between these two: - `zkevm-circuits/src/witness` - `bus-mapping/src/circuit_input_builder` - names and variables instead of indices (2) In the EVM Circuit ExecSteps assignment we're gathering witness data by accessing rw operations by index, which is not very readable. Example: https://github.com/privacy-scaling-explorations/zkevm-circuits/blob/fadb11b9643fd66a730db95a6561a0482991ce9e/zkevm-circuits/src/evm_circuit/execution/callop.rs#L452 - Try to share these witnesses from the bus-mapping to the circuits in a structured way (3-dup) Currently we have a CellManager in Keccak and another implementation in EVM. And maybe a new one coming up in MPT. Can we unify them? - We have ConstraintBuilder/CellManager in 4 places: EVM circuit, State circuit, Keccak circuit, MPT circuit. - (3.1) Need to write extensive documentation for ConstraintBuilder/CellManager. - Create a proposal for a ConstraintBuilder/CellManager that could benefit the community like also ZCash. - Stretch goal: implement the agreed proposal. (4) Build wrappers on top of halo2 to have more succint code to query columns: - Example solution A: https://github.com/privacy-scaling-explorations/zkevm-circuits/pull/972#issuecomment-1404002401 - Example solution B: Leo's proposal - ??? 3&4 are improvements on the constraint builder. Good to figure out biggest improvements we could work on. The code to query a column is very verbose (make it succint)
{"metaMigratedAt":"2023-06-17T19:44:30.340Z","metaMigratedFrom":"Content","title":"zkEVM Circuits - Next Milestone Planning","breaks":true,"contributors":"[{\"id\":\"c8765ae7-422c-473e-a690-767865a7d8aa\",\"add\":5401,\"del\":3062},{\"id\":\"2ab60db2-afc6-40a9-b042-6d5f2047e866\",\"add\":60,\"del\":3},{\"id\":\"43027194-d6c0-4e63-87d9-de70c4997852\",\"add\":1042,\"del\":11},{\"id\":\"c676ac5b-8053-4516-a896-838aaf48a316\",\"add\":97,\"del\":0}]"}
Expand menu