Overview
The identiPay wallet app is an Android application that enables users to:- Register their identity using passport NFC scanning
- Create a privacy-preserving wallet with stealth addresses
- Make anonymous payments using zero-knowledge proofs
- Receive payments via stealth addresses
- Manage balance and transaction history
Features
Identity Registration
The wallet uses passport-based identity registration with zero-knowledge proofs:- NFC Passport Scanning: Extracts identity data from e-passports
- Deterministic Key Derivation: Generates wallet keys from passport data + PIN
- Identity Commitment: Creates a privacy-preserving commitment to identity attributes
- ZK Proof Generation: Proves identity ownership without revealing passport data
- Name Registration: Registers a human-readable name on-chain
Privacy Features
- Stealth Addresses: Each payment creates a unique one-time address
- Zero-Knowledge Proofs: Prove payment validity without revealing identity
- Encrypted Announcements: Payment notifications with view tag optimization
- Shielded Pool: Privacy-preserving asset pool
Payment Capabilities
- Scan QR codes or NFC tags to initiate payments
- Age verification using ZK proofs (for age-restricted purchases)
- Real-time transaction status via WebSocket
- Receipt generation and storage
Setup Instructions
Configure Backend URL
Update the backend URL in For local development:
app/src/main/java/com/identipay/wallet/di/NetworkModule.kt:The URL
10.0.2.2 is the special alias for localhost from the Android emulator.Configure Sui Network
Update Sui network configuration in
app/src/main/java/com/identipay/wallet/network/SuiClientProvider.kt:Identity Registration Flow
Background Tasks
The wallet app uses WorkManager for periodic background tasks:Announcement Scanning
Balance Refresh
Local Database Schema
The wallet uses Room for local storage:Notes Table
Stores received payment notes:Stealth Addresses Table
Transactions Table
Key Components
Cryptographic Operations
Payment Flow
Security Features
Biometric Authentication
The wallet supports fingerprint/face unlock:Secure Key Storage
Keys are encrypted and stored using Android Keystore:- Spend keypair (Ed25519)
- View keypair (X25519)
- Wallet seed (BIP39-derived)
BouncyCastle Provider
Testing
Requirements
- Android SDK: 24+ (Android 7.0 Nougat)
- Target SDK: 36
- NFC Support: Required for passport scanning
- Camera: Required for QR code scanning
- Internet: Required for blockchain interaction
Next Steps
POS App
Set up the merchant point-of-sale application
Backend Setup
Configure the identiPay backend server
