💡 The Problem
Session data is fragmented across devices and vulnerable to centralized breaches. Users re-authenticate constantly while losing control over their identity footprint.
✨ The Solution
VaultID is a portable identity layer where session data is encrypted client-side using AES-GCM and stored on IPFS. The blockchain contract acts as a public, tamper-proof anchor for session metadata — no sensitive data on-chain, ever.
📦 Monorepo Structure
VaultID/
├── blockchain/ # Solidity contracts & deployment
│ ├── contracts/ # VaultID.sol
│ ├── test/ # Comprehensive test suite
│ └── ignition/ # Deployment modules
└── extension/ # Browser extension (React + Vite)
└── src/ # Extension source
🔑 Smart Contract Features
| Feature | Description | | -------------------------------- | ----------------------------------- | | One Vault Per Address | Each wallet owns exactly one vault | | EIP-712 Meta-Transactions | Gasless rotations via relayer | | EIP-1271 Support | Contract wallet compatibility | | Strict Sequence Monotonicity | Replay attack prevention | | Permanent Revocation | Kill switch with no re-registration | | Zero On-Chain Secrets | Only hashes and commitments stored |
🚀 Quick Start
Prerequisites
- pnpm ≥ 8.0.0
- Node.js ≥ 18.0.0
Installation
pnpm install
Run Tests
cd blockchain
pnpm hardhat test
Deploy to Sepolia
cd blockchain
pnpm hardhat keystore set SEPOLIA_PRIVATE_KEY
pnpm hardhat ignition deploy --network sepolia ignition/modules/VaultID.ts
Run Extension (Dev)
pnpm dev
🛠️ Tech Stack
Blockchain
- Viem
- Solidity 0.8.19
- Hardhat 3 (Beta)
- OpenZeppelin Contracts
Extension
- Vite
- React 18
- shadcn/ui
- TypeScript
- Wagmi + Viem
- AES-GCM Encryption
👥 Team [object Object]
Built with ☕ and 🔥 at ETHIndiaVilla 2025 hosted by Devfolio



