Skip to main content

🧩 Zikuani Architecture:

1. Overview​

This document outlines the architecture of Zikuani, a privacy-preserving identity verification system that extracts and validates information from the mobile driver's identity (mDL) using zero-knowledge (ZK) proofs, and verifies these proofs through Soroban smart contracts on the Stellar blockchain.

The objective is to enable secure and compliant identity verification where users can prove authenticity without disclosing personal information.


2. Components​

LayerComponentDescription
Credential SourcemDL App (ISO/IEC 18013-5)Provides verified identity data and certificates signed by government authorities.
Extraction Module (Zikuani Bridge)Extracts mDL data via NFC or QR; validates government-issued signatures and certificates.
ZK Prover Device / AppGenerates zero-knowledge proofs from hashed mDL data using Circom
Zikuani WalletStores hashed credentials and ZK proofs; interacts with Soroban for verification.
Soroban Smart ContractVerifies ZK proofs on Stellar’s WASM-based contract platform; marks verified users on-chain.
Verifier ApplicationsdApps that query verification status on Stellar.

3. Data and Process Flow​

Step 1 – mDL Data Extraction​

  1. The user opens Zikuani Wallet.
  2. The app connects to the mDL via Deep link, QR or NFC (ISO/IEC 18013-5 interface).
  3. The mDL provides:
    • Signed identity data (e.g., name, date of birth, identity number).
    • X.509 certificate chain confirming government authority.

Step 2 – Proof Generation (on Device)​

  1. Commitment and verification conditions (e.g., β€œover 18”, β€œidentity valid”)

Step 4 – On-Chain Verification (Soroban)​

  1. The wallet calls the Soroban contract:
    verify_identity(proof, public_inputs, verifier_pubkey)
  2. The contract runs an embedded ZK verifier (Groth16).
  3. If the proof is valid, the contract stores verification:
    VerifiedIdentities.put(address, true)

Step 5 – Verification by Third Parties​

Other Stellar-based applications or DAOs can query:

is_verified(user_address)

to confirm identity validity without accessing private details.​

4. Trust and Security Model​

LayerTrust AnchorDescription
mDL IssuerDigital certificate authorityEnsures authenticity of issued credentials.
Zikuani BridgeValidates signatures locallyPrevents tampering or fake credentials.
ZK ProverLocal deviceWitness data never leaves the user’s control.
Soroban ContractOn-chain, open-source verifierDeterministic, auditable verification.

6. Architecture Diagram​

 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ mDL System β”‚
β”‚ ─────────────────────────── β”‚
β”‚ Govt CA + Issuer certs + mDL β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚ (NFC/QR 18013-5)
β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Zikuani Mobile Wallet β”‚
β”‚ Validate mDL β†’ Hash Attributes β†’ Store β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚ Secure Transfer (BLE/API)
β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ ZK Prover Device / Service β”‚
│ Circom→ Generate Proof │
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚ proof, public_inputs
β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Soroban Smart Contract (Stellar) β”‚
β”‚ VerifyProof() β†’ mark user as verified β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚
β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ dApps / DAOs / Exchanges (Verifiers) β”‚
β”‚ Query is_verified(address) β†’ boolean β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

C1 β€” Issuer Β· Holder Β· Verifier​

Zikuani C1

C2 β€” Technical Architecture​

Zikuani C2

C3 β€” Soroban Verifier Contract​

Zikuani C4L3​

7. Technology Stack​

LayerTechnologyNotes
ZK proof systemGroth16 (zk-SNARK)Constant-size proofs, fast on-chain verification
Elliptic curveBN254 (alt-bn128)Native Soroban Protocol 25 host functions
Hash functionPoseidonZK-friendly; Protocol 25 native
Circuit languageCircom 2.xCompiles to R1CS for Groth16
Smart contractRust / Soroban SDKwasm32v1-none target β€” contracts/zk_verifier/
BlockchainStellar / SorobanProtocol 25 (X-Ray) β€” BN254 + Poseidon as host functions
Mobile applicationAndroid SDK, JavaScriptIdentity Wallet
Proof serializationTypeScriptGroth16 JSON proof β†’ Soroban byte arrays
Identity standardISO/IEC 18013-5 (mDL)International mobile Driver's License β€” 30+ countries

8. Key Benefits​

  • Privacy-preserving: Only zero-knowledge proofs reach the blockchain.
  • Compliant: Tied to government-issued mDL certificates.
  • Efficient: Soroban’s WASM environment supports ZK verification with low gas cost.
  • Interoperable: dApps and DAOs on Stellar can natively check verification status.