π οΈ Introducing Mopro: The Mobile Prover Toolkit
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.
π What Is Mopro?β
Mopro simplifies the development of mobile-native apps by offering:
mopro-ffi
simplifies the manual UniFFI setup process and enables a modular approach to proving systems.- 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
- Cross-platformβfriendly Rust tooling for building native apps
Our goal is to remove the friction from mobile ZK app developmentβso you can focus on your product, not the plumbing.
β‘ Why Mobile-Native?β
Mobile-native apps offer several key advantages:
- Up to 10Γ performance boost compared to browser-based ZK applications. See our benchmarks 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.
These benefits help bring your ZK protocol to a broader, more mainstream audience with better performance and usability.
π§ How It Worksβ
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 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.
π©βπ» Who It's Forβ
π± ZK Mobile App Developersβ
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.
π 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
: Kotlin bindings for Android.mopro-swift-package
: Swift bindings for iOS.mopro-react-native-package
: A React Native wrapper.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
βοΈ 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.
π 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