MoirPro

Minimal Flutter template for Sepolia on-chain verification via Mopro & Noir.

MoirPro

Created At

ETHGlobal Cannes

Project Description

This is a lean ZKP mobile application that demonstrates the integration of several tech stacks on cryptographic (ZK, Noir), blockchain (on-chain interaction), and mobile (Flutter) infra.

šŸŽÆ Project Overview This project is a Flutter mobile app that showcases:

  • Zero-Knowledge Proof generation using Noir circuits
  • Reown Appkit (WalletConnect) integration for blockchain wallet connectivity
  • On-chain proof verification on Ethereum Sepolia testnet
  • Cross-platform mobile ZKP capabilities (iOS & Android)

The app allows users to generate cryptographic proofs on their mobile devices and verify them both locally and on-chain, all while maintaining privacy through zero-knowledge cryptography.

How it's Made

āœ… Core Architecture

  • Rust core with ZK proving via Circom circuits using Groth16 proofs
  • UniFFI bindings auto-generate native mobile interfaces (iOS/Android)
  • Flutter cross-platform frontend with WalletConnect integration

āœ… Key Technologies

ZK Proof Stack:

  • Circom/Groth16 for zero-knowledge circuits (multiplier2 example)
  • Arkworks backend for proof generation/verification
  • rust-witness macro transpiles WASM circuits to Rust at build time

Mobile Bridge:

  • UniFFI generates type-safe bindings from Rust → Swift/Kotlin
  • JNA (Java Native Access) for Android FFI
  • C headers for iOS with XCFramework packaging

Mobile Integration:

  • ReownAppKit (WalletConnect v2) for wallet connections
  • Deep links handle wallet callback responses
  • Multi-chain support (Ethereum, Polygon, Sepolia)

āœ… Notable Implementation Details

Hacky/Clever Parts:

  1. Build-time circuit compilation - build.rs transpiles WASM circuits to native Rust witnesses
  2. UniFFI macro magic - mopro_ffi::app!() auto-generates 6+ proof functions (Circom/Halo2/Noir)
  3. Flutter plugin structure - Self-contained plugin with bundled native binaries
  4. Network security bypass - Android config allows cleartext for WalletConnect relays

Architecture Flow:

  1. Flutter UI captures inputs →
  2. Calls Rust via UniFFI →
  3. Generates ZK proof with circuit witness →
  4. Returns proof to Flutter →
  5. WalletConnect integration for blockchain interaction
background image mobile

Join the mailing list

Get the latest news and updates