Skip to content

Latest commit

 

History

History
69 lines (37 loc) · 2.75 KB

README.md

File metadata and controls

69 lines (37 loc) · 2.75 KB

Circuits for zkEVM

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:

  1. Sequencer set circuit for decentralized sequencer
  2. EIP4844 circuit
  3. Optimal zk-friendly permutation schemes used in the hash function for zktrie, along with the circuits.
  4. Faster zero-knowledge proof system

Docs

Detailed circuit docs: https://github.com/morph-l2/zkevm-circuits/tree/develop/docs

Getting started

We recommend developers to go to our circuit playground repo for a detailed step-by-step guide on how to run proving.

Project Layout

This repository contains several Rust packages that implement the zkevm. The high-level structure of the repository is as follows:

bus-mapping

  • 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.

circuit-benchmarks

  • (Deprecated) Measures performance of each circuit based on proving and verifying time and execution trace parsing and generation for each subcircuit

eth-types

  • Different types helpful for various components of the EVM

external-tracer

  • Generates traces by connecting to an locally linked Geth EVM tracer

gadgets

geth-utils

  • Provides output from geth tracing APIs as circuit inputs

integration-tests

  • Integration tests for all circuits

keccak256

  • (Deprecated) Modules for Keccak hash circuit

mock

  • Testing module. Mock definitions and methods that are used to test circuits or opcodes

testool

  • Parser and driver of official Ethereum Execution Tests

zkevm-circuits

  • Main package that contains all circuit logic

zktrie

  • Wrapper of scroll binary poseidon trie