Giter Site home page Giter Site logo

trabant77 / zkevm-circuits Goto Github PK

View Code? Open in Web Editor NEW

This project forked from scroll-tech/zkevm-circuits

0.0 0.0 0.0 25.16 MB

License: MIT License

Shell 0.10% Go 0.40% Rust 98.55% Makefile 0.09% Handlebars 0.03% Dockerfile 0.02% Solidity 0.82%

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

lispc avatar cperezz avatar silathdiir avatar dreamwugit avatar roynalnaruto avatar chihchengliang avatar ed255 avatar kunxian-xia avatar pinkiebell avatar lightsing avatar han0110 avatar z2trillion avatar scroll-dev avatar noel2004 avatar naure avatar adria0 avatar leolara avatar zhenfeizhang avatar brechtpd avatar davidnevadoc avatar therealyingtong avatar smtmfft avatar succinctpaul avatar ntampakas avatar aronisat79 avatar haoyuathz avatar rrzhang139 avatar xiaodino avatar ashwhitehat avatar darth-cy 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.