Architecture

zkSIM is designed as a modular system with three independent layers, each responsible for a specific function. This structure allows developers to use components in

Layer 1 - ZK Identity Layer

Purpose: Authenticate eSIM devices without revealing sensitive information like IMSI or phone number.

Key Features:

  • Pseudonymous identity creation

  • Generation of zero-knowledge proofs (ZKPs)

  • Verification of subscription validity by the server

Tech Stack:

  • Circuit Language: Noir

  • Prover: TypeScript

  • Verifier: Node.js

Example of Layer Interaction (TypeScript / Server):

// Generate ZK proof on client
const proof = await generateProof(userIdentity, tariffPlan);

// Send proof to server for verification
const isValid = await fetch('/verify-proof', {
  method: 'POST',
  body: JSON.stringify({ proof }),
}).then(res => res.json());

if(isValid) {
  console.log("Identity verified successfully!");
}

Layer 2 - Privacy Marketplace

Purpose: Enable users to buy and activate eSIM plans anonymously.

Key Features:

  • ZK proofs confirm payment and plan validity

  • No wallet, personal data, or phone number is exposed

  • Supports offline proof generation

Example Flow (Pseudo-Code / JSON):

Marketplace Logic:

  • User generates ZK proof for plan

  • Server verifies proof

  • Server issues activation token


Layer 3 - Web3 Layer

Purpose: Integrate eSIM authentication with blockchain and decentralized systems.

Key Features:

  • NFT or token acts as access pass

  • On-chain proofs can unlock services or subscriptions

  • Optional integration with DePIN networks or Web3 dApps

Example Flow (TypeScript / Web3):

Diagram / Architecture Overview

  • Client (Simulator) → Generates pseudonymous ID, ZK proofs

  • Server (Verifier) → Verifies proofs, issues activation tokens

  • Optional Web3 → Connects subscription to blockchain services

Last updated