Inspiration

Digital identity today is controlled by corporations. Users depend on centralized platforms like Google, Facebook, and Aadhaar-style silos to prove who they are. This creates a world where: identity is owned by companies data access is invisible users have no revocation power privacy is almost impossible Identity Locker was inspired by the idea that identity must belong to people — not platforms. We wanted to build: privacy-preserving identity with full user ownership portable credentials you can use across apps Polkadot-powered trust without central authorities a simple, developer-friendly VC system anyone can adopt Identity should be locked by the user, not locked away from the user.

What it does

Identity Locker is a decentralized identity system that lets anyone:

✔ Create a Decentralized Identifier (DID) A unique Web3 identity generated locally with Ed25519 keys. ✔ Receive Verifiable Credentials (VCs)

Example credentials: verified email age claim (18+ or exact age) phone verification any custom attributes (demo mode supports free-form JSON) ✔ Present VCs for verification Apps can request proofs, and users only share required information. ✔ Revoke credentials Issuers can revoke credentials anytime; verifiers detect it instantly. ✔ Anchor credential integrity on Polkadot Credential hashes can optionally be anchored on-chain via: system.remark (future) DID pallet methods The project includes: A clean React UI (with manual inputs, raw JSON mode, state panel) A FastAPI backend (with CORS enabled & REST endpoints) cURL scripts for judges Full dockerized setup 5-minute Quickstart

How we built it

🏗 Tech Stack Backend FastAPI (Python) Uvicorn CORS middleware Local secure key generation (Ed25519)

Frontend React Build deployed with Python http.server or Nginx

Anchoring Polkadot.js extrinsic (system.remark) OR stub anchoring for offline/demo mode

Storage Local JSON store (VCs, revocation registry) Fully IPFS-compatible structure

Infrastructure Docker & docker-compose Standalone .service files for backend + frontend

Development Steps

Designed DID creation flow Built /did/create, /issue, /verify, /revoke API routes Implemented VC issuance + CID generation Added revocation registry + lookup route /revocation/{cid} Created Polkadot anchoring module (stub + real extrinsic example) Built React UI with: ✔ API URL selector ✔ configurable DID creation ✔ VC issuance form ✔ verification ✔ revocation ✔ raw JSON mode ✔ activity log ✔ live state panel

Added complete judge testing kit (cURL + screenshots) Minimal but fully functional — ideal for hackathons while scalable for production.

Challenges we ran into

🔹 Getting simple flows for complex identity logic Verifiable Credentials are powerful but can get complicated. We had to design a model that judges could test in minutes. 🔹 Ensuring backend/frontend consistency React fetch calls + FastAPI needed strict CORS rules and matching routes. 🔹 Polkadot anchoring abstraction

We needed: real anchoring for demo a stub fallback for judges without blockchain access 🔹 Multi-environment deployment Frontend → Backend → Polkadot needed consistent networking in Docker and systemd. 🔹 Time pressure Identity flows: keys → DIDs → signatures → VC model → verification → revocation.

Accomplishments that we're proud of

A fully complete identity system built from scratch Beautiful, intuitive UI demonstrating all flows Real DID creation + VC issuance + revocation logic Polkadot anchoring implemented properly A five-minute Quickstart for Devpost judges Clean backend API with simple cURL examples A Web3 identity architecture that can grow into a real product

What we learned

Polkadot identity architecture & interoperability W3C Verifiable Credentials design patterns JSON-LD, DID docs, and simplified credential models Using system.remark for on-chain anchoring Building developer-friendly APIs Simplifying advanced concepts for beginners Importance of clean CORS, REST patterns, and UI state management

What's next for Identity Locker

🚀 Full Cryptographic Signatures Add ED25519 / BBS+ signatures for W3C-compliant VCs. 🚀 DID Pallet Integration Use on-chain DID pallet for real identity resolution. 🚀 IPFS Storage Store encrypted credential content in IPFS with chain anchoring. 🚀 User Consent Layer Every credential sharing action must require explicit consent. 🚀 Mobile DID Wallet A mobile-first identity wallet for Polkadot. 🚀 Zero-Knowledge Proofs Attribute-range proofs (18+, 21+, nationality) without revealing full data. 🚀 Marketplace for Issuers Trusted issuers like schools, companies, and governments. Identity Locker is the foundation of a user-first identity system for the Polkadot ecosystem.

How to run (short)

git clone cd identity-locker cp .env.example .env docker-compose up --build

Frontend: http://localhost:4087 Backend: http://localhost:4086/docs

System Diagram

User → React UI → FastAPI Backend → Credential Store → Revocation Registry → Polkadot Anchor (stub / real)

Verifier → Backend → Checks: • Credential integrity • Nonce freshness • Revocation status • Anchoring status

Credential Flow

(1) User creates DID ↓ (2) Issuer issues VC for user ↓ (3) VC stored + CID generated + hash anchored ↓ (4) User presents VC to verifier ↓ (5) Verifier checks: • CID exists • Not revoked • Hash anchored (optional) • Nonce is valid ↓ (6) Returns Verified TRUE/FALSE

Built With

Share this project:

Updates