{"id":21970059,"url":"https://github.com/scroll-tech/scroll-prover","last_synced_at":"2025-04-09T11:04:55.027Z","repository":{"id":37375168,"uuid":"490975903","full_name":"scroll-tech/scroll-prover","owner":"scroll-tech","description":"Scroll zkEVM Playground","archived":false,"fork":false,"pushed_at":"2025-01-23T12:16:57.000Z","size":115936,"stargazers_count":689,"open_issues_count":47,"forks_count":377,"subscribers_count":34,"default_branch":"main","last_synced_at":"2025-04-02T09:43:20.084Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://scroll.io","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/scroll-tech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-05-11T05:57:43.000Z","updated_at":"2025-01-31T00:51:19.000Z","dependencies_parsed_at":"2023-09-26T12:45:08.696Z","dependency_job_id":"24415e37-aed9-41bc-8cc8-495493317958","html_url":"https://github.com/scroll-tech/scroll-prover","commit_stats":null,"previous_names":["scroll-tech/common","scroll-tech/scroll-prover","scroll-tech/scroll-zkevm"],"tags_count":49,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scroll-tech%2Fscroll-prover","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scroll-tech%2Fscroll-prover/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scroll-tech%2Fscroll-prover/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scroll-tech%2Fscroll-prover/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scroll-tech","download_url":"https://codeload.github.com/scroll-tech/scroll-prover/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248027406,"owners_count":21035594,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-29T14:30:29.021Z","updated_at":"2025-04-09T11:04:54.959Z","avatar_url":"https://github.com/scroll-tech.png","language":"Rust","funding_links":[],"categories":["Layer 2"],"sub_categories":["Scroll"],"readme":"# 📜 scroll-prover 📜\n[![Unit Test](https://github.com/scroll-tech/scroll-prover/actions/workflows/unit_test.yml/badge.svg)](https://github.com/scroll-tech/scroll-prover/actions/workflows/unit_test.yml)\n![issues](https://img.shields.io/github/issues/scroll-tech/scroll-prover)\n\n## Usage\n\n### Latest Release\n\nv0.10.3 is used in Scroll Mainnet currently. Branch `main` HEAD is used for development.\n\n### Prerequisite\n\nInstall Solidity compiler `solc` of version `0.8.19` via [svm-rs](https://github.com/alloy-rs/svm-rs):\n```shell\ncargo install svm-rs\nsvm install 0.8.19\n```\n\nDownload all setup params(SRS), degree `20`, `24` and `26` are used in [config](https://github.com/scroll-tech/scroll-prover/tree/main/integration/configs).\nCould only download params of degree `26`, but it may affect performance (when downsizing params).\n```shell\nmake download-setup -e degree=20\nmake download-setup -e degree=24\nmake download-setup -e degree=26\n```\nOr specify other degree and target directory to download.\n```shell\n# As default `degree=26` and `params_dir=./integration/params`.\nmake download-setup -e degree=DEGREE params_dir=PARAMS_DIR\n```\n\nThere params are mirrored from [PSE's converted setup files](https://github.com/han0110/halo2-kzg-srs) which was originally created by `perpetual-powers-of-tau`.\n\n### Testing\n\n`make test-chunk-prove` and `make test-e2e-prove` are the main testing entries for multi-level circuit constraint system of scroll-prover. Developers could understand how the system works by reading the codes of these tests.\n\nAnd there are other tests:\n- `make test-inner-prove` could be used to test the first-level circuit.\n- `make test-batch-prove` could be used to test the final two levels.\n\n### Binaries\n\nCould use the following command to run binaries locally.\n\nRun zkevm prover to generate chunk proof (work directory is `./integration`)\n```shell\n# Params file should be located in `./integration/params`.\ncargo run --release --bin trace_prover -- --params=params --trace=tests/extra_traces/batch_34700/chunk_1236462/block_4176564.json\n```\n\n### Verifier Contract\n\nBoth YUL and bytecode of verifier contract could be generated when running aggregation tests (`make test-e2e-prove`). After running aggregation tests, a new folder is created in `integration` folder of scroll-prover and named like `integration/outputs/e2e_tests_*`. It contains below files:\n\n- Chunk protocol: `chunk_chunk_0.protocol`\n- Chunk VK: `vk_chunk_0.vkey`\n- Batch VK: `vk_batch_agg.vkey`\n- Verifier YUL source code: `evm_verifier.yul`\n- Verifier bytecode: `evm_verifier.bin`\n\nThe YUL source code is generated by params, VK and num instance of proof, could reference [gen_evm_verifier function](https://github.com/scroll-tech/snark-verifier/blob/develop/snark-verifier-sdk/src/evm_api.rs#L121) in snark-verifier.\n\nThe verifier bytecode is compiled from YUL source code, it invokes Solidity compiler (`0.8.19` as mentioned above) command line with specified parameters, could reference [compile_yul function](https://github.com/scroll-tech/snark-verifier/blob/develop/snark-verifier/src/loader/evm/util.rs#L107) in snark-verifier.\n\n## License\n\nLicensed under either of\n\n- Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)\n- MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)\n\nat your option.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscroll-tech%2Fscroll-prover","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscroll-tech%2Fscroll-prover","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscroll-tech%2Fscroll-prover/lists"}