diff --git a/README.md b/README.md index ade3ec15b..061ef995a 100644 --- a/README.md +++ b/README.md @@ -6,18 +6,21 @@ Embassy lets users scan the NFC chip in their government-issued passport. If the signature is valid, the user can generate a proof that can be verified onchain. We are using that proof to mint them a Soulbound Token (SBT) they can use to show that they indeed hold an official passport. +Users can also selectively disclose personal info like their nationality or their date of birth. + +### Subdirectories + +- `app`: Mobile app for Embassy +- `circuits`: Circom circuits for Embassy +- `contracts`: Solidity contracts for Embassy ### Roadmap -- ✅ Make sure we can actually verify that a passport signature is signed by the issuing country -- ✅ Modify the Next.js frontend of `zkrsa` in order to accept an endpoint that stores signature data from someone scanning their passports -- ✅ Get zkrsa working with the signature format we are able to retrieve from the Android app -- ✅ Contract to mint the SBT when proof is valid -- ✅ WalletConnect integration to get the address -- ✅ Let user send their proof onchain to mint the SBT -- ✅ Commit to minter address in circuit to avoid front-running -- 🚧 On-chain registry of CSCA pubkeys based on the official ICAO masterlist -- 🚧 Decompose the hashed eContent of the passport into the private user data and reconstitute them in the circuit -- ✅ Modify the Android app to let people send their signature data to the Next.js backend (and store it temporarily) -- 🚧 Safe Module to claim a Safe if holding the right SBT -- +- ✅ Basic passport verifier circuit +- 🚧 Optimization +- 🚧 Selective disclosure +- ✅ Basic react native frontend +- 🚧 Passport verification pipeline, android +- 🚧 Passport verification pipeline, iOS +- 🚧 Contracts +- 🚧 On-chain registry of CSCA pubkeys based on the official ICAO masterlist \ No newline at end of file diff --git a/app/README.md b/app/README.md index 9f874290e..a2b659450 100644 --- a/app/README.md +++ b/app/README.md @@ -14,21 +14,20 @@ yarn #### Add circuit build -Go to this [repo](https://github.com/0xturboblitz/circom-embassy) and build the circuit. -Then, place `passport.r1cs` and `passport.wasm` in ark-circom-passport/passport/ +Go to the `circuit` folder of the monorepo and build the circuit. +Then, place `passport.r1cs` and `passport.wasm` in `ark-circom-passport/passport/` #### Build native lib -In /script, run: +In `/script`, run: ``` ./build_rust.sh ``` -This will build the libhalo2_circom_passport.so lib and copy it to the desired place to be used by the app. -The config used is in android/react-native-passport-reader/android/build.gradle. +This will build the `libhalo2_circom_passport.so` lib and copy it to the desired place to be used by the app. +The config used is in `android/react-native-passport-reader/android/build.gradle`. You can go there to change the profile (`debug` or `release`) - You'll potentially need to set the rust-toolchain rust version as global default. Example: ``` rustup default 1.67.0 @@ -43,91 +42,3 @@ To run the server: yarn start ``` Then press `a` for android or `i` for iOS - - - - - - - - - -This is a new [**React Native**](https://reactnative.dev) project, bootstrapped using [`@react-native-community/cli`](https://github.com/react-native-community/cli). - -# Getting Started - ->**Note**: Make sure you have completed the [React Native - Environment Setup](https://reactnative.dev/docs/environment-setup) instructions till "Creating a new application" step, before proceeding. - -## Step 1: Start the Metro Server - -First, you will need to start **Metro**, the JavaScript _bundler_ that ships _with_ React Native. - -To start Metro, run the following command from the _root_ of your React Native project: - -```bash -# using npm -npm start - -# OR using Yarn -yarn start -``` - -## Step 2: Start your Application - -Let Metro Bundler run in its _own_ terminal. Open a _new_ terminal from the _root_ of your React Native project. Run the following command to start your _Android_ or _iOS_ app: - -### For Android - -```bash -# using npm -npm run android - -# OR using Yarn -yarn android -``` - -### For iOS - -```bash -# using npm -npm run ios - -# OR using Yarn -yarn ios -``` - -If everything is set up _correctly_, you should see your new app running in your _Android Emulator_ or _iOS Simulator_ shortly provided you have set up your emulator/simulator correctly. - -This is one way to run your app — you can also run it directly from within Android Studio and Xcode respectively. - -## Step 3: Modifying your App - -Now that you have successfully run the app, let's modify it. - -1. Open `App.tsx` in your text editor of choice and edit some lines. -2. For **Android**: Press the R key twice or select **"Reload"** from the **Developer Menu** (Ctrl + M (on Window and Linux) or Cmd ⌘ + M (on macOS)) to see your changes! - - For **iOS**: Hit Cmd ⌘ + R in your iOS Simulator to reload the app and see your changes! - -## Congratulations! :tada: - -You've successfully run and modified your React Native App. :partying_face: - -### Now what? - -- If you want to add this new React Native code to an existing application, check out the [Integration guide](https://reactnative.dev/docs/integration-with-existing-apps). -- If you're curious to learn more about React Native, check out the [Introduction to React Native](https://reactnative.dev/docs/getting-started). - -# Troubleshooting - -If you can't get this to work, see the [Troubleshooting](https://reactnative.dev/docs/troubleshooting) page. - -# Learn More - -To learn more about React Native, take a look at the following resources: - -- [React Native Website](https://reactnative.dev) - learn more about React Native. -- [Getting Started](https://reactnative.dev/docs/environment-setup) - an **overview** of React Native and how setup your environment. -- [Learn the Basics](https://reactnative.dev/docs/getting-started) - a **guided tour** of the React Native **basics**. -- [Blog](https://reactnative.dev/blog) - read the latest official React Native **Blog** posts. -- [`@facebook/react-native`](https://github.com/facebook/react-native) - the Open Source; GitHub **repository** for React Native. diff --git a/contracts/README.md b/contracts/README.md index 905f6adf6..3e126352b 100644 --- a/contracts/README.md +++ b/contracts/README.md @@ -1,6 +1,8 @@ # Sample Hardhat Project -Contracts for ProofOfPassport. +Contracts for embassy. + +🚧 under heavy development 🚧 Try running some of the following tasks: