Skip to content

Latest commit

 

History

History
153 lines (134 loc) · 3.67 KB

README.md

File metadata and controls

153 lines (134 loc) · 3.67 KB

mopro

Crates.io

Mopro is a toolkit for ZK app development on mobile. Mopro makes client-side proving on mobile simple.

To learn more about mopro, please refer to the documentation at zkmopro.

Getting started

Run tests

  • circom
    cd mopro-ffi
    cargo test --features circom
  • halo2
    cd mopro-ffi
    cargo test --features halo2
  • circom-e2e
    cd test-e2e
    curl -L https://repo1.maven.org/maven2/net/java/dev/jna/jna/5.13.0/jna-5.13.0.jar -o jna-5.13.0.jar
    CLASSPATH=jna-5.13.0.jar cargo test --test circom -- --nocapture
  • halo2-e2e
    cd test-e2e
    curl -L https://repo1.maven.org/maven2/net/java/dev/jna/jna/5.13.0/jna-5.13.0.jar -o jna-5.13.0.jar
    CLASSPATH=jna-5.13.0.jar cargo test --test halo2 -- --nocapture

Performance

Circom

Both native witness generation and proof generation are generally faster than snarkjs in the browser, with potential speed improvements of up to 20 times. Check the details here: performance.

Android (Samsung S23U) snarkjs groth16 fullprove mopro (rust-witness + ark-works) witnesscalc + rapidsnark
Keccak256 11.388 s 2.54 s (~4.4x) 0.847 s (~13x)
SHA256 3.672 s 1.68 s (~2.1x) 0.257 s (~14x)
RSA 17.4 s 9.59 s (~1.8x) 1.1 s (~16x)
Semaphore 2.22 s 0.309 s (~7.1x) 0.176 ms (~12x)
Anon Aadhaar 54.753 s 35.955 s (~1.5x) 3.759 s (~14x)
iOS (iPhone 16 Pro) snarkjs groth16 fullprove mopro (rust-witness + ark-works) witnesscalc + rapidsnark
Keccak256 5.329 s 1.097 s (~5x) 0.772 s (~7x)
SHA256 1.578 s 0.592 s (~2.6x) 0.227 s (~6.9x)
RSA 9.584 s 4.563 s (~2.1x) 0.9 s (~10.6x)
Semaphore 1.079 s 0.189 s (~5.7x) 0.165 ms (~6.5x)
Anon Aadhaar 28.679 s 12.171 s (~2.3x) 3.416 s (~8.3x)

Halo2

The performance of the Mopro build is comparable to the native Halo2 build.

Circuits Native (M1 Pro) iPhone 15 Pro
Keccak256 10.3 s 11.0 s
RSA 76.5 s crashes

Community

  • X account:
  • Telegram group:

Acknowledgements

This work was initially sponsored by a joint grant from PSE and 0xPARC. It is currently incubated by PSE.