Portable Identity Layer for the Decentralized Web
Wallet-encrypted OAuth sessions. One identity across all devices.
Session data is fragmented across devices and vulnerable to centralized breaches. Users re-authenticate constantly while losing control over their identity footprint.
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.
VaultID/
├── blockchain/ # Solidity contracts & deployment
│ ├── contracts/ # VaultID.sol
│ ├── test/ # Comprehensive test suite
│ └── ignition/ # Deployment modules
└── extension/ # Browser extension (React + Vite)
└── src/ # Extension source
| 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 |
- pnpm ≥ 8.0.0
- Node.js ≥ 18.0.0
pnpm installcd blockchain
pnpm hardhat testcd blockchain
pnpm hardhat keystore set SEPOLIA_PRIVATE_KEY
pnpm hardhat ignition deploy --network sepolia ignition/modules/VaultID.tspnpm devBlockchain
- Viem
- Solidity 0.8.19
- Hardhat 3 (Beta)
- OpenZeppelin Contracts
Extension
- Vite
- React 18
- shadcn/ui
- TypeScript
- Wagmi + Viem
- AES-GCM Encryption
Built with ☕ and 🔥 at ETHIndiaVilla 2025 hosted by Devfolio