Pramanik
Privacy-preserving KYC oracle for DeFi — on-chain identity proof without exposing any personal data
What it is
Pramanik (Sanskrit: प्रामाणिक — "authentic, verified, certified") is a decentralized KYC oracle built on Chainlink CRE that lets DeFi protocols verify user identity on-chain without ever exposing personal data.
The Problem: Public blockchains are transparent by design. Financial regulations (GDPR, MiFID II, FATF) require identity data to remain confidential. These two requirements directly contradict each other — locking institutional capital out of DeFi.
The Solution: Route all KYC verification through Chainlink TEEs (Trusted Execution Environments). Raw identity data is fetched from real KYC providers inside a hardware-isolated enclave. The enclave extracts only { tier, expiresAt } and destroys everything else. Only that minimal result reaches the blockchain. Zero PII ever touches the chain.
How it works:
- User calls KYCGate.sol with their desired jurisdiction
- An EVM log trigger fires a CRE workflow inside a TEE
- The workflow calls a KYC provider API (Jumio/Onfido/mock) via ConfidentialHTTPClient
- extractEligibility() strips all PII — only tier number and expiry exit the enclave
- EligibilityRegistry.sol receives the attestation on-chain
- PermissionedVault.sol (ERC-4626) gates deposits by KYC tier — RETAIL, ACCREDITED, or INSTITUTIONAL
A second cron-triggered CRE workflow runs sanctions screening nightly, revoking attestations for flagged addresses.
How it Works
- Smart Contracts: Solidity ^0.8.24, OpenZeppelin 5.x, Hardhat — four contracts: KYCGate.sol, EligibilityRegistry.sol, PermissionedVault.sol (ERC-4626), AttestationSBT.sol (Soulbound Token)
- CRE Workflows: TypeScript + @chainlink/cre-sdk + Bun — two workflows: an EVM log trigger workflow for KYC verification and a cron trigger workflow for nightly sanctions screening
- Encoding: viem 2.x (WASM-compatible, required for CRE environment)
- Validation: Zod 3.x for input sanitization throughout
- Mock KYC API: Express.js 4.x + TypeScript, deployed on Digital Ocean App Platform, simulates Jumio/Onfido/Chainalysis with tiered responses and bearer token auth
- Frontend: Vanilla HTML/JS + ethers.js v6, single-file demo UI with MetaMask integration
- Testnet: Tenderly Virtual TestNet (Mainnet fork, Chain ID 9991)
Links
Created by
- Vansh Chitransh