Giter Site home page Giter Site logo

huwenqing0606 / zkevm-circuits Goto Github PK

View Code? Open in Web Editor NEW

This project forked from scroll-tech/zkevm-circuits

1.0 0.0 0.0 8.69 MB

License: MIT License

Shell 0.07% Go 0.69% Rust 97.98% Makefile 0.11% Handlebars 0.04% Dockerfile 0.02% Solidity 1.09%

zkevm-circuits's Introduction

Circuits for zkEVM

CI checks

Check out the work in progress specification to learn how it works.

Getting started

To run the same tests as the CI, please use: make test-all.

Running benchmarks

There are currently several benchmarks to run in the workspace in regards to the circuits. All use the DEGREE env var to specify the degree of the K parameter that you want to use for your circuit in the bench process.

  • Keccak Circuit prover benches. -> DEGREE=16 make packed_multi_keccak_bench
  • EVM Circuit prover benches. -> DEGREE=18 make evm_bench.
  • State Circuit prover benches. -> DEGREE=18 make state_bench

You can also run all benchmarks by running: make circuit_benches DEGREE=18.

GH Actions Benchmark Results

Circuit Benchmark Results are accessible here: https://grafana.zkevm-testnet.org/d/vofy8DAVz/circuit-benchmarks?orgId=1

  • circuit_benchmarks panel displays:
    • overall test result
    • timers and system statistics
    • url for downloading prover log and sys stat files
    • clickable sysstats_url element that loads the memory and cpu utilization profiles for the given test

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 the EVM Proof and the State Proof.

circuit-benchmarks

  • 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 zkevm, such as execution trace parsing or circuits

external-tracer

  • Generates traces by connecting to an external tracer

gadgets

geth-utils

  • Provides output from latest geth APIs (debug_trace) as test vectors

integration-tests

  • Integration tests for all circuits

keccak256

  • Modules for Keccak hash circuit

mock

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

testool

  • CLI that provides tools for testing

zkevm-circuits

  • Main package that contains all circuit logic

zktrie

  • Modules for Merkle Patricia Trie circuit

zkevm-circuits's People

Contributors

adria0 avatar aronisat79 avatar ashwhitehat avatar brechtpd avatar chihchengliang avatar cperezz avatar davidnevadoc avatar dreamwugit avatar ed255 avatar han0110 avatar haoyuathz avatar huwenqing0606 avatar kunxian-xia avatar leolara avatar lightsing avatar lispc avatar naure avatar noel2004 avatar ntampakas avatar pinkiebell avatar roynalnaruto avatar rrzhang139 avatar scroll-dev avatar silathdiir avatar smtmfft avatar succinctpaul avatar therealyingtong avatar xiaodino avatar z2trillion avatar zhenfeizhang avatar

Stargazers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.