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 clientconstproof=awaitgenerateProof(userIdentity,tariffPlan);// Send proof to server for verificationconstisValid=awaitfetch('/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