{"id":26662952,"url":"https://github.com/zkmopro/mopro","last_synced_at":"2026-03-08T08:01:57.990Z","repository":{"id":199298466,"uuid":"684412378","full_name":"zkmopro/mopro","owner":"zkmopro","description":"Making client-side proving on mobile simple.","archived":false,"fork":false,"pushed_at":"2025-05-12T08:08:28.000Z","size":228106,"stargazers_count":162,"open_issues_count":43,"forks_count":62,"subscribers_count":16,"default_branch":"main","last_synced_at":"2025-05-12T09:39:01.528Z","etag":null,"topics":["mobile","zk"],"latest_commit_sha":null,"homepage":"https://zkmopro.org","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/zkmopro.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,"zenodo":null}},"created_at":"2023-08-29T04:37:10.000Z","updated_at":"2025-05-12T08:08:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"0e616d07-b4eb-473a-b605-139931057e9b","html_url":"https://github.com/zkmopro/mopro","commit_stats":null,"previous_names":["oskarth/mopro","zkmopro/mopro"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zkmopro%2Fmopro","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zkmopro%2Fmopro/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zkmopro%2Fmopro/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zkmopro%2Fmopro/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zkmopro","download_url":"https://codeload.github.com/zkmopro/mopro/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253712167,"owners_count":21951691,"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":["mobile","zk"],"created_at":"2025-03-25T14:19:04.066Z","updated_at":"2026-01-21T04:06:36.311Z","avatar_url":"https://github.com/zkmopro.png","language":"Rust","funding_links":[],"categories":["Mobile and Edge Proving"],"sub_categories":["Full Proof Systems"],"readme":"\u003cp align=\"center\"\u003e\n\u003cimg src=\"img/logo_title.svg\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/zkmopro\" target=\"_blank\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/project-Mopro-blue.svg?style=flat-square\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"/LICENSE-APACHE\"\u003e\n        \u003cimg alt=\"Github license\" src=\"https://img.shields.io/github/license/zkmopro/mopro.svg?style=flat-square\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/zkmopro/mopro/actions?query=workflow%3Aproduction\"\u003e\n        \u003cimg alt=\"GitHub Workflow test\" src=\"https://img.shields.io/github/actions/workflow/status/zkmopro/mopro/build-and-test.yml?branch=main\u0026label=test\u0026style=flat-square\u0026logo=github\"\u003e\n    \u003c/a\u003e\n    \u003cimg alt=\"Repository top language\" src=\"https://img.shields.io/github/languages/top/zkmopro/mopro?style=flat-square\"\u003e\n    \u003ca href=\"http://commitizen.github.io/cz-cli/\"\u003e\n        \u003cimg alt=\"Commitizen friendly\" src=\"https://img.shields.io/badge/commitizen-friendly-586D76?style=flat-square\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://twitter.com/zkmopro\"\u003e\n        \u003cimg src=\"https://img.shields.io/twitter/follow/zkmopro?style=flat-square\u0026logo=x\u0026label=zkmopro\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://t.me/zkmopro\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/telegram-@zkmopro-blue.svg?style=flat-square\u0026logo=telegram\"\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n## Mopro: ZK Toolkit for Mobile\n\nMopro (Mobile Prover) is a toolkit for ZK app development on mobile. Mopro makes client-side proving on mobile simple.\n\n📖 To learn more about mopro, please refer to the documentation at [zkmopro](https://zkmopro.org/docs/intro).\n\n## Repository Structure\n\nThis repository contains the following components:\n\n\u003ctable\u003e\n    \u003cth\u003ePackage\u003c/th\u003e\n    \u003cth\u003eVersion\u003c/th\u003e\n    \u003cth\u003eDescription\u003c/th\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e\n                \u003ca href=\"https://github.com/zkmopro/mopro/tree/main/mopro-ffi\"\u003e\n                    mopro-ffi\n                \u003c/a\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\n                \u003ca href=\"https://crates.io/crates/mopro-ffi\"\u003e\n                    \u003cimg src=\"https://img.shields.io/crates/v/mopro-ffi?label=mopro-ffi\u0026style=flat-square\"\u003e\n                \u003c/a\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\n                Uses \u003ca href=\"https://github.com/mozilla/uniffi-rs\"\u003eUniFFI\u003c/a\u003e to generate bindings for ZK provers (currently: Circom, Halo2, and Noir). It includes build scripts that eliminate the need for manual setup when integrating with iOS and Android.\n            \u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e\n                \u003ca href=\"https://github.com/zkmopro/mopro/tree/main/cli\"\u003e\n                    mopro-cli\n                \u003c/a\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e \n                \u003ca href=\"https://crates.io/crates/mopro-cli\"\u003e\n                    \u003cimg src=\"https://img.shields.io/crates/v/mopro-cli?label=mopro-cli\u0026style=flat-square\"\u003e\n                \u003c/a\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\n                A command-line tool that makes it easy to scaffold ZK projects using selected proving systems and target platforms. Currently supports: Swift (Xcode), Kotlin (Android Studio), React Native, Flutter and Web.\n            \u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e\n                \u003ca href=\"https://github.com/zkmopro/mopro/tree/main/circom-prover\"\u003e\n                    circom-prover\n                \u003c/a\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\n                \u003ca href=\"https://crates.io/crates/circom-prover\"\u003e\n                    \u003cimg src=\"https://img.shields.io/crates/v/circom-prover?label=circom-prover\u0026style=flat-square\"\u003e\n                \u003c/a\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\n                A Rust-based Groth16 prover for Circom. It supports multiple witness generators (\u003ca href=\"https://github.com/chancehudson/rust-witness\"\u003erust-witness\u003c/a\u003e, \u003ca href=\"https://github.com/zkmopro/witnesscalc_adapter\"\u003ewitnesscalc\u003c/a\u003e, and \u003ca href=\"https://github.com/iden3/circom-witnesscalc\"\u003ecircom-witnesscalc\u003c/a\u003e) and provers (\u003ca href=\"https://github.com/arkworks-rs/circom-compat\"\u003earkworks\u003c/a\u003e, \u003ca href=\"https://github.com/zkmopro/rust-rapidsnark\"\u003erapidsnark\u003c/a\u003e). It is designed to work across devices including desktop, iOS, and Android.\n            \u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e\n                \u003ca href=\"https://github.com/zkmopro/mopro/tree/main/tests\"\u003e\n                    tests\n                \u003c/a\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\n                End-to-end test examples for verifying integrations for mopro-ffi.\n            \u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e\n                \u003ca href=\"https://github.com/zkmopro/mopro/tree/main/docs\"\u003e\n                    docs\n                \u003c/a\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\n                The source for \u003ca href=\"https://zkmopro.org\"\u003ezkmopro.org\u003c/a\u003e, containing up-to-date documentation.\n            \u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n## 🎯 Mopro Kanban board\n\nAll tasks related to the Mopro implementation are public. You can track their progress, statuses, and additional details in the [Mopro Kanban](https://github.com/orgs/zkmopro/projects/1/views/3).\n\n## 📱 Getting started\n\nTo get started with building a mobile app using Mopro, check out the [Getting Started](https://zkmopro.org/docs/getting-started/) guide and ensure you’ve installed all required [prerequisites](https://zkmopro.org/docs/prerequisites).\n\n## 🛠 Install\n\nClone this repository:\n\n```sh\ngit clone https://github.com/zkmopro/mopro.git\n```\n\n## 📜 Usage\n\n### Code quality and formatting\n\nRun [Rustfmt](https://github.com/rust-lang/rustfmt) to automatically format the code.\n\n```sh\ncargo fmt --all\n```\n\nRun [rust-clippy](https://github.com/rust-lang/rust-clippy) to catch common mistakes and improve your Rust code.\n\n```sh\ncargo clippy --all-targets --all-features\n```\n\n### `circom-prover`\n\nTo test all witness generators and proof generators:\n\n```sh\ncd circom-prover\ncargo test --all-features\n```\n\nTo run with specific witness generator and/or proof generator\n\n```sh\ncd circom-prover\ncargo test --features witnesscalc --features rapidsnark\n```\n\n\u003e [!IMPORTANT]  \n\u003e To learn more about `circom-prover`, please visit [circom-prover](./circom-prover/README.md)\n\n### `mopro-ffi`\n\nTo test the wasm bindings with `wasm-pack test`\n\n```sh\nwasm-pack test --chrome --headless -- --no-default-features --features wasm\n```\n\n\u003e [!IMPORTANT]  \n\u003e To learn more about `mopro-ffi`, please visit [mopro-ffi](./mopro-ffi/README.md)\n\n### `mopro-cli`\n\nTo install the CLI\n\n```sh\ncd cli\ncargo install --path .\n```\n\n\u003e [!IMPORTANT]  \n\u003e To learn more about `mopro-cli`, please visit [cli](./cli/README.md)\n\n### `tests`\n\n#### iOS\n\n-   Update bindings for iOS\n\n    ```sh\n    cargo run --bin ios\n    ```\n\n    or\n\n    ```sh\n    mopro build # with mopro CLI\n    ```\n\n    and choose `iOS`.\n\n#### Android\n\n-   Update bindings for Android\n\n    ```sh\n    cargo run --bin android\n    ```\n\n    or\n\n    ```sh\n    mopro build # with mopro CLI\n    ```\n\n    and choose `Android`.\n\n#### Flutter\n\n-   Update bindings for Flutter\n\n    ```sh\n    cargo run --bin flutter --no-default-features --features flutter\n    ```\n\n    or\n\n    ```sh\n    mopro build # with mopro CLI\n    ```\n\n    and choose `flutter`.\n\n#### React Native\n\n-   Update bindings for React Native\n\n    ```sh\n    cargo run --bin react_native\n    ```\n\n    or\n\n    ```sh\n    mopro build # with mopro CLI\n    ```\n\n    and choose `react-native`.\n\n#### Web\n\n-   Update bindings for wasm\n\n    ```sh\n    cargo run --bin web --no-default-features --features wasm\n    ```\n\n    or\n\n    ```sh\n    mopro build # with mopro CLI\n    ```\n\n    and choose `web`.\n\n### docs\n\n-   Install dependencies\n    ```sh\n    yarn\n    ```\n-   Build for the website\n    ```sh\n    yarn build\n    ```\n-   Start a server\n    ```sh\n    yarn start\n    ```\n\n## Performance\n\nBoth native circom witness generation and proof generation are generally faster than `snarkjs` in the browser, with potential speed improvements of up to 20 times.\nCheck the details for circom, halo2, and noir provers here: [performance](https://zkmopro.org/docs/performance).\n\n## Community\n\n-   X account: \u003ca href=\"https://twitter.com/zkmopro\"\u003e\u003cimg src=\"https://img.shields.io/twitter/follow/zkmopro?style=flat-square\u0026logo=x\u0026label=zkmopro\"\u003e\u003c/a\u003e\n-   Telegram group: \u003ca href=\"https://t.me/zkmopro\"\u003e\u003cimg src=\"https://img.shields.io/badge/telegram-@zkmopro-blue.svg?style=flat-square\u0026logo=telegram\"\u003e\u003c/a\u003e\n\n## Acknowledgements\n\nThis work was initially sponsored by a joint grant from [PSE](https://pse.dev/) and [0xPARC](https://0xparc.org/). It is currently incubated by PSE.\n\n\u003e [!IMPORTANT]\n\u003e We do not accept minor grammatical fixes (e.g., correcting typos, rewording sentences) unless they significantly improve clarity in technical documentation. These contributions, while appreciated, are not a priority for merging. If there is a grammatical error feel free to message the team.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzkmopro%2Fmopro","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzkmopro%2Fmopro","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzkmopro%2Fmopro/lists"}