Files
self/app
..
2024-01-10 10:52:10 +01:00
2024-01-10 10:52:10 +01:00
2024-02-14 17:12:47 +01:00
2024-02-23 16:34:13 -07:00
2024-02-23 16:34:13 -07:00
2024-01-10 10:52:10 +01:00
2024-01-10 10:52:10 +01:00
2024-01-10 10:52:10 +01:00
2024-01-10 10:52:10 +01:00
2024-01-10 10:52:10 +01:00
2024-01-10 10:52:10 +01:00
2024-02-19 09:08:05 -07:00
2024-01-10 10:52:10 +01:00
2024-02-04 02:21:43 +01:00
2024-01-10 10:52:10 +01:00
2024-01-10 10:52:10 +01:00
2024-02-23 16:25:27 -07:00
2024-01-10 10:52:10 +01:00
2024-02-12 17:59:49 +01:00
2024-02-19 09:08:05 -07:00
2024-02-20 20:07:18 -07:00
2024-02-14 17:47:46 +01:00
2024-01-10 10:52:10 +01:00
2024-02-19 09:08:05 -07:00

Proof of Passport App

Requirements

Install nodejs v18, circom and snarkjs

For android, install java, android studio and the android sdk

For ios, install Xcode and cocoapods

Installation

yarn

In /common, also run:

yarn

Build the app

Go to the circuit folder of the monorepo and build the circuit.

Build the android native module

Run:

./scripts/build_android_module.sh

You might need to set the rust-toolchain rust version as global default. Example:

rustup default 1.67.0

Then, to generate the arkzkey, install arkzkey-util globally from the mopro repo, then run:

cd ark-circom-passport/passport
arkzkey-util proof_of_passport_final.zkey

For macOS users you might also need to set-up the path to sdk: in /app/android create local.properties

Add the following line: sdk.dir=/Users//Library/Android/sdk or any relevant path to your sdk

This you modify the circuits, you might have to modify ark-circom-passport/src/passport.rs too.

Build the iOS native module

Run:

./scripts/build_ios_module.sh

Now:

cd ios
pod install
./post_install.sh
cd ..

Run the server

To run the server, first connect your phone to your computer, allow access, then:

yarn start

Then press a for android or i for iOS

If you want to see the logs and have a better ios developer experience, open /ios in Xcode and launch the app from there instead.

⚠️ Due to the current limitations of mopro, see #51, the proving on iOS only works when the app is run on Xcode. It will not work with the react native server or in a .ipa build. We are working on fixing that.

To see the android logs you'll have to use the Android Studio Logcat.

To export an apk:

cd android
./gradlew assembleRelease

The built apk it located at android/app/build/outputs/apk/release/app-release.apk

Download zkey

If you want to mint a proof of passport SBT, instead of building the circuit yourself, run:

./scripts/download_current_zkey.sh

This will download the zkey currently deployed onchain in the proof of passport contract and place it in `circuits/build`` Then, build the android or iOS native module and run the app.

Releases

Play Store

As explained here, first setup android/app/my-upload-key.keystore and the private vars in ~/.gradle/gradle.properties, then run:

npx react-native build-android --mode=release

This builds android/app/build/outputs/bundle/release/app-release.aab. Then to test the release on an android phone, delete the previous version of the app and run:

yarn android --mode release