{"id":25633068,"url":"https://github.com/zkemail/sp1-zkemail","last_synced_at":"2025-04-14T18:16:29.042Z","repository":{"id":267406954,"uuid":"901149830","full_name":"zkemail/sp1-zkEmail","owner":"zkemail","description":"SP1 Implementation of ZKEmail Circuits","archived":false,"fork":false,"pushed_at":"2025-04-04T12:08:09.000Z","size":831,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-14T18:16:23.400Z","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":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zkemail.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-MIT","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":"2024-12-10T06:07:47.000Z","updated_at":"2025-04-14T04:53:40.000Z","dependencies_parsed_at":"2024-12-10T07:23:23.247Z","dependency_job_id":"def6e43d-90a7-4070-bd3c-c55cc7415e98","html_url":"https://github.com/zkemail/sp1-zkEmail","commit_stats":null,"previous_names":["zkemail/sp1-zkemail"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zkemail%2Fsp1-zkEmail","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zkemail%2Fsp1-zkEmail/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zkemail%2Fsp1-zkEmail/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zkemail%2Fsp1-zkEmail/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zkemail","download_url":"https://codeload.github.com/zkemail/sp1-zkEmail/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248933344,"owners_count":21185460,"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":"2025-02-22T21:27:53.301Z","updated_at":"2025-04-14T18:16:29.017Z","avatar_url":"https://github.com/zkemail.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SP1 ZkEmail\n\nZK Email is an application that allows for anonymous verification of email signatures while masking specific data. It enables verification of emails to/from specific domains or subsets of domains, as well as verification based on specific text in the email body.\n\nThis repository contains the SP1 program and the Solidity contract that verifies the SP1 proofs.\n\n## Requirements\n\n-   [Rust](https://rustup.rs/)\n-   [SP1](https://docs.succinct.xyz/getting-started/install.html)\n\n## Running the Project\n\nThere are four main ways to run this project: build a program, execute a program, generate a core proof, and\ngenerate an EVM-compatible proof.\n\n### Build the Program\n\nTo build the program, run the following command:\n\n```sh\ncd program\ncargo prove build\n```\n\n### Execute the Program\n\nTo run the program without generating a proof:\n\n```sh\ncd script\ncargo run --release -- --execute\n```\n\nThis will execute the program and display the output.\n\n### Generate a Core Proof\n\nTo generate a core proof for your program:\n\n```sh\ncd script\ncargo run --release -- --prove\n```\n\n### Generate an EVM-Compatible Proof\n\n\u003e [!WARNING]\n\u003e You will need at least 128GB RAM to generate a Groth16 or PLONK proof.\n\nTo generate a proof that is small enough to be verified on-chain and verifiable by the EVM:\n\n```sh\ncd script\ncargo run --release --bin evm -- --system groth16\n```\n\nthis will generate a Groth16 proof. If you want to generate a PLONK proof, run the following command:\n\n```sh\ncargo run --release --bin evm -- --system plonk\n```\n\nThese commands will also generate fixtures that can be used to test the verification of SP1 zkVM proofs\ninside Solidity.\n\n### Retrieve the Verification Key\n\nTo retrieve your `programVKey` for your on-chain contract, run the following command:\n\n```sh\ncargo prove vkey --program fibonacci-program\n```\n\n## Using the Prover Network\n\nWe highly recommend using the Succinct prover network for any non-trivial programs or benchmarking purposes. For more information, see the [setup guide](https://docs.succinct.xyz/generating-proofs/prover-network.html).\n\nTo get started, copy the example environment file:\n\n```sh\ncp .env.example .env\n```\n\nThen, set the `SP1_PROVER` environment variable to `network` and set the `SP1_PRIVATE_KEY`\nenvironment variable to your whitelisted private key.\n\nFor example, to generate an EVM-compatible proof using the prover network, run the following\ncommand:\n\n```sh\nSP1_PROVER=network SP1_PRIVATE_KEY=... cargo run --release --bin evm\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzkemail%2Fsp1-zkemail","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzkemail%2Fsp1-zkemail","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzkemail%2Fsp1-zkemail/lists"}