{"id":30117350,"url":"https://github.com/scroll-tech/scroll-sc-tools","last_synced_at":"2026-01-20T17:40:28.594Z","repository":{"id":285549301,"uuid":"953991203","full_name":"scroll-tech/scroll-sc-tools","owner":"scroll-tech","description":"Scroll Security Council Tools","archived":false,"fork":false,"pushed_at":"2025-07-25T12:51:42.000Z","size":290,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-08-10T08:49:40.463Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"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":null,"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,"zenodo":null}},"created_at":"2025-03-24T11:56:01.000Z","updated_at":"2025-07-25T12:51:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"b8510fba-15a1-40b2-be2c-5c96b1b90413","html_url":"https://github.com/scroll-tech/scroll-sc-tools","commit_stats":null,"previous_names":["scroll-tech/scroll-sc-tools"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/scroll-tech/scroll-sc-tools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scroll-tech%2Fscroll-sc-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scroll-tech%2Fscroll-sc-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scroll-tech%2Fscroll-sc-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scroll-tech%2Fscroll-sc-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scroll-tech","download_url":"https://codeload.github.com/scroll-tech/scroll-sc-tools/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scroll-tech%2Fscroll-sc-tools/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269712872,"owners_count":24463216,"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","status":"online","status_checked_at":"2025-08-10T02:00:08.965Z","response_time":71,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":"2025-08-10T10:41:46.305Z","updated_at":"2026-01-20T17:40:28.588Z","avatar_url":"https://github.com/scroll-tech.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Scroll Security Council Tools\n\nThe repository offers tools for the Security Council to run and validate certain operations against Scroll's ZkVM [release](https://github.com/scroll-tech/zkvm-prover/releases/tag/v0.7.0)\n\n## Setup\n\n- Clone the `scroll-sc-tools` repository:\n```shell\n$ git clone git@github.com:scroll-tech/scroll-sc-tools.git \u0026\u0026 cd scroll-sc-tools\n```\n- [Install Rust](https://www.rust-lang.org/tools/install)\n- Install Specific Nightly Toolchain (specified in [rust-toolchain.toml](./rust-toolchain.toml))\n```\nrustup toolchain install nightly-2025-08-18\n```\n\n## Generate Verifier\n\nScroll's ZkVM architecture proves Scroll's L2 blocks in layers (chunking -\u003e batching -\u003e bundling) where only the final layer (aka bundle) is an EVM-verifiable SNARK proof.\n\nThis proof is verified as part of the Bundle Finalization on-chain transaction.\n\nThe proof itself is verified by a `Verifier` contract, that's essentially a PLONK-verifier constructed using OpenVM's SDK. The `Verifier` contract is deployed on Sepolia and Mainnet.\n\nThe `generate-verifier` command allows one to trustlessly re-generate the verifier contract and prints out its codehash, that can be validated against on-chain available data.\n\n### Prerequisite\n\n* Install solidity compiler via [solidity version manager](https://github.com/alloy-rs/svm-rs).\n```shell\n$ cargo install svm-rs\n\n$ svm install 0.8.19\n\n$ solc --version\n```\n\nIn order to generate the verifier contract, we can either download the source from [`OpenVM`](https://github.com/openvm-org/openvm-solidity-sdk/blob/v1.4/src/v1.4/Halo2Verifier.sol) or re-compute it.\n\n* Download the verifier contract:\n```shell\n$ cargo run --release -- generate-verifier\n```\n\n* Re-compute the verifier contract (using [`OpenVM SDK`](https://github.com/openvm-org/openvm/blob/v1.4.0/crates/sdk/src/lib.rs#L804)):\n```shell\n# download SRS parameters\n$ bash scripts/download-params.sh\n\n# generate verifier\n$ RUST_MIN_STACK=16777216 cargo run --release -- generate-verifier --recompute\n```\n\nNote: Re-computation requires very large amounts of computation and memory (~200 GB). It took about 4 minutes on AWS c7a.24xlarge.\n\n## Compute Digests\n\nThe final layer (aka bundle) circuit is identified by two digests, namely `digest_1` and `digest_2`.\n\n- `digest_1`: Attestation to the circuit code/logic. Any modification to the circuitry, to any layer including and below the final layer, will trigger a change to this digest value.\n- `digest_2`: Attestation to the circuit config. The `openvm.toml` files configure each circuit (chunk/batch/bundle) and finally this digest value will change if any of those was modified.\n\nAn important requirement for \"proof generation\" to \"on-chain verification\" is that the on-chain verifier must populate these digests (constants) so as to disallow proof submitter to\npotentially post digests for malicious circuitry. These digests are available on-chain in the deployed contracts on Sepolia and Mainnet.\n\nAn independent party can re-compute these digests from the ZkVM released circuitry and validate against on-chain values.\n\n```shell\n$ cargo run --release -- compute-digest\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscroll-tech%2Fscroll-sc-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscroll-tech%2Fscroll-sc-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscroll-tech%2Fscroll-sc-tools/lists"}