Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 61 additions & 17 deletions docs/docs/intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,34 +2,78 @@
sidebar_position: 1
---

# Introduction
# 🛠️ Introducing Mopro: The Mobile Prover Toolkit

Mopro makes client-side proving simple. You can think of it as a toolkit for ZK app development. It primarily focuses on running natively mobile.
**Mopro** is a developer toolkit designed to make building **mobile-native ZK apps** easier, faster, and more accessible. Whether you're a ZK protocol author, a mobile app developer, or a Rust engineer exploring zero-knowledge proofs, Mopro provides a streamlined workflow to bring your ideas to mobile devices.

How? Mopro connects different adapters with different platforms. You can think of an adapter as a way to use a library with some proof system and performance profile. Because Mopro takes care of hooking up your circuit to some library, and generating bindings for use on multiple platforms, you can focus on what you do best: ZK app development.
## 🚀 What Is Mopro?

![mopro adapters and platforms](/img/roadmap.png)
Mopro simplifies the development of mobile-native apps by offering:

Note that the above is a work in progress, and the dashed lines indicate things that are still experimental and/or in an early stage.
- A powerful **CLI** to scaffold, build, and update projects
- Prebuilt **templates** for iOS, Android, React Native, and Flutter
- Clear, step-by-step **documentation** to guide developers at every stage

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe replace this point with things related with highlighting the advantage of mobile-native arch?

e.g. "Mobile-native architecture for 10× faster proving and smooth integration with features like biometrics and secure storage for a better UX"

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the speed is not what we provide. Only like CLI, templates and documentation. Or maybe add other cross-platform toolings.

but we can move the advantage to more top https://doc-intro.mopro.pages.dev/docs/intro#-why-mobile-native
e.g.

  • 🚀 What Is Mopro?
  • ⚡ Why Mobile-Native?
    (and we can also include the mobile hardware device that can be accessed (e.g. camera, NFC,...)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

make sense to me! I like the idea of moving "⚡ Why Mobile-Native?" closer to the top

- Cross-platform–friendly **Rust tooling** for building native apps

If you just want to get started using mopro, see [getting started](getting-started).
Our goal is to remove the friction from mobile ZK app development—so you can focus on your product, not the plumbing.

## Overview
## ⚡ Why Mobile-Native?

Mopro consists of a set of libraries and utilities. The following subprojects are included in the [mopro monorepo](https://github.com/zkmopro/mopro).
Mobile-native apps offer several key advantages:

Primary libraries and utilities of interest:
- **Up to 10× performance boost** compared to browser-based ZK applications. See our [**benchmarks**](performance) for detailed comparisons.
- **Seamless user experience** and deep integration with device capabilities — including biometrics 🫆, GPS 📍, NFC 💳, camera 📸, photo gallery 🌅, Bluetooth 🛜, and push notifications 🔔.
- **Offline readiness** and improved reliability in real-world usage.

- `mopro-ffi` - main package, exposes macros for configuring and building projects.
- `mopro-wasm` - enables the compilation of Halo2 circuits into wasm modules.
- `test-e2e` - example implementation of mopro in Android and iOS apps, used for testing.
These benefits help bring your ZK protocol to a broader, more mainstream audience with better performance and usability.

Secondary subprojects:
## 🔧 How It Works

- `docs` - This documentation website.
Mopro takes each proving system and wraps it as an **adapter** written in Rust. These adapters provide a unified interface for ZK proof generation regardless of the backend (e.g., Circom, Noir, Halo2). Mopro then uses [UniFFI](https://github.com/mozilla/uniffi-rs) to generate native bindings for **Swift (iOS)** and **Kotlin (Android)** from Rust code. These bindings can then be reused in cross-platform frameworks like **React Native** and **Flutter**, with ready-to-use templates for each platform.

## Architecture
## 👩‍💻 Who It's For

The following illustration shows how mopro and its components fit together into the wider ZKP ecosystem:
### 📱 ZK Mobile App Developers

![mopro architecture](/img/architecture.png)
Get a full-stack monorepo template that handles Rust bindings, mobile UIs, and proof generation. Just follow the `mopro` CLI to bootstrap your app from zero to working prototype. See [**Getting Started**](getting-started).

### 🔐 ZK Protocol Developers

Don't want to maintain a full app? No problem. Mopro helps you ship production-ready **mobile SDKs** for your protocol, making it easier for others to integrate your tech.

See Mopro Bindings for Multiplatform

- [`mopro-kotlin-package`](https://github.com/zkmopro/mopro-kotlin-package): Kotlin bindings for Android.
- [`mopro-swift-package`](https://github.com/zkmopro/mopro-swift-package): Swift bindings for iOS.
- [`mopro-react-native-package`](https://github.com/zkmopro/mopro-react-native-package): A React Native wrapper.
- [`mopro_flutter_package`](https://github.com/zkmopro/mopro_flutter_package): Flutter bindings for Dart-based apps.

### 📲 Mobile Developers

Easily consume ZK SDKs via familiar package managers like **CocoaPods**, **Gradle**, **npm**, or **pub.dev**. No Rust knowledge required.

### 🦀 Rust Developers

Mopro supports various ZK backends—even those not originally written in Rust—via **wrapper** crates.

Examples include

- [`circom-prover`](https://github.com/zkmopro/mopro/tree/main/circom-prover)
- [`witnesscalc_adapter`](https://github.com/zkmopro/witnesscalc_adapter/tree/main/witnesscalc_adapter)
- [`rust-rapidsnark`](https://github.com/zkmopro/rust-rapidsnark/tree/main)
- [`noir-rs`](https://github.com/zkmopro/noir-rs).

## ⚙️ GPU Acceleration

Mopro also focuses on **mobile-native GPU acceleration**, enabling client-side devices to leverage their GPUs to speed up operations like **MSM (Multi-Scalar Multiplication)** during proof generation. This significantly improves performance for ZK proving on mobile.

See implementation details and updates in [**gpu-acceleration**](https://github.com/zkmopro/gpu-acceleration).

## 📚 Learn More About Mopro

Explore the full ecosystem, documentation, and community resources:

- 📱 Main GitHub Repository: https://github.com/zkmopro/mopro
- 💡 Example Projects: https://zkmopro.org/docs/projects
- 💬 Community & Talks: https://zkmopro.org/docs/community
- 📰 Blog: https://zkmopro.org/blog
Loading