MVP
The first working version of ZK-eSIM demonstrates a fully functional zero-knowledge-based eSIM authentication and activation flow
Core Components
1) ZK Circuit for Validating IMSI
Uses Noir to create a zero-knowledge circuit
Ensures the eSIM is a valid subscriber without exposing IMSI or other personal information
Example (Noir Circuit Pseudo-Code):
fn main(imsi: Field, secret_key: Field) -> Field {
let hash = hash(imsi, secret_key);
assert(hash == public_commitment);
return 1;
}2) Client-Side Prover
Generates ZK proofs locally
Sends proof to the server for validation
Maintains user privacy — no sensitive data leaves the client
Example (TypeScript / Client):
import { generateProof } from "./zk-prover";
const proof = await generateProof(pseudonymId, planId);
const response = await fetch('/auth/proof', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ proof })
});
const result = await response.json();
console.log(result.status); // "verified" or "failed"3) Server-Side Verifier
Receives ZK proof from client
Verifies it using the Noir verifier
Returns success/failure for authentication or activation
Example (Node.js / Server):
import { verifyProof } from "./zk-verifier";
app.post("/auth/proof", async (req, res) => {
const { proof } = req.body;
const isValid = await verifyProof(proof);
res.json({ status: isValid ? "verified" : "failed" });
});API Endpoints
1) /auth/proof – Verify Identity Proof
POST request
Body:
{ proof: "<zk-proof>" }Returns:
{ status: "verified" | "failed" }
2) /buy-esim – Issue Tariff Proof
POST request
Body:
{ proof: "<payment-proof>", planId: "basic-plan" }Returns:
{ status: "ok", message: "eSIM plan purchased" }
3) /activate – Activate eSIM
POST request
Body:
{ proof: "<activation-proof>" }Returns:
{ status: "ok", message: "eSIM activated" }
Example Request (JSON):
{
"proof": "<zk-proof>",
"planId": "data-plan-1"
}Web Simulator Client
A frontend UI for testing all flows
Generates pseudonymous eSIM identities
Sends ZK proofs to server
Simulates activation and plan verification
Example (UI Actions):
Click “Generate eSIM Identity” → new pseudonym + keys
Click “Create Proof” → generates ZK proof
Click “Verify / Activate” → server verifies proof
Optional: Web3 integration for on-chain proof
Next Steps for MVP
Once the MVP is running:
Explore ZK circuits and adjust proofs
Test proof verification edge cases
Extend client simulator with marketplace and Web3 integration
Document flows in GitBook for developers
Last updated
