This is the zkEVM circuits used in Morph Mainnet. It was forked from Scroll zkevm-circuits, with many new features added and more planned for the future:
- Sequencer set circuit for decentralized sequencer
- EIP4844 circuit
- Optimal zk-friendly permutation schemes used in the hash function for zktrie, along with the circuits.
- Faster zero-knowledge proof system
Detailed circuit docs: https://github.com/morph-l2/zkevm-circuits/tree/develop/docs
We recommend developers to go to our circuit playground repo for a detailed step-by-step guide on how to run proving.
This repository contains several Rust packages that implement the zkevm. The high-level structure of the repository is as follows:
- a crate designed to parse EVM execution traces and manipulate all of the data they provide in order to obtain structured witness inputs for circuits.
- (Deprecated) Measures performance of each circuit based on proving and verifying time and execution trace parsing and generation for each subcircuit
- Different types helpful for various components of the EVM
- Generates traces by connecting to an locally linked Geth EVM tracer
- Custom circuits that abstracts away low-level circuit detail.
- What are gadgets?
- Provides output from geth tracing APIs as circuit inputs
- Integration tests for all circuits
- (Deprecated) Modules for Keccak hash circuit
- Testing module. Mock definitions and methods that are used to test circuits or opcodes
- Parser and driver of official Ethereum Execution Tests
- Main package that contains all circuit logic
- Wrapper of scroll binary poseidon trie