Universal Web3 Identity: Privacy-preserving, sybil-resistant digital ID for decentralized apps.
The Universal Web3 Identity (UWI) project is designed to empower users with a privacy-preserving, strongly Sybil-resistant digital identity for the decentralized web. Central to its innovation is the integration with the Self Protocol, a leading zero-knowledge identity verification framework that allows users to prove key attributes like age and uniqueness without revealing any personal information.
The platform leverages zk (zero-knowledge) proofs to ensure that users can verify their humanity and compliance transparently and securely, preventing fraudulent or duplicate identities. This cutting-edge cryptographic mechanism ensures that the verification process respects user privacy and data sovereignty.
Once verified, the system issues users a Soulbound Token (SBT) — a non-transferable, blockchain-anchored token — that serves as a permanent digital identity proof bound to their wallet address. This token not only validates the user’s verified status but also facilitates seamless integration with various dApps, enabling sybil-resistant access to decentralized finance, governance, social platforms, gaming, marketplaces, and rewards.
Built on the efficient and scalable Hedera blockchain, UWI offers fast, low-cost, and energy-efficient transactions that support mass adoption. The React-based frontend provides an intuitive interface for onboarding, verifying, and managing the user’s identity, tying together the complex Web3 infrastructure behind a simple and trustworthy user experience.
By centering on Self Protocol’s zk-powered verification and Soulbound Tokens, UWI delivers a cutting-edge decentralized identity ecosystem that balances user privacy, security, and interoperability, paving the way for a safer, more authentic Internet.
Built this with React + Tailwind for the frontend because I wanted something fast to prototype with. The green terminal aesthetic felt right for a privacy-focused identity app.
The tricky part was getting Self Protocol's zk verification working smoothly. Their SDK generates QR codes that users scan with their Self app to prove things like age without revealing actual personal data. Had to handle a bunch of edge cases around different endpoint configurations and disclosure settings - ended up trying multiple configs until one worked.
For blockchain stuff, I went with Hedera since it's fast and cheap. Used wagmi hooks to handle wallet connections and contract interactions. The smart contract mints Soulbound Tokens (non-transferable NFTs) that act as your identity proof on-chain.
Honestly, the Self Protocol integration was a pain to debug at first. The QR generation would fail randomly, so I built some fallback logic that tries different configurations. Also added silent error handling so the demo doesn't break if something goes wrong - it just quietly moves to the next step.
The whole flow is: connect wallet → enter username → scan QR for zk proof → mint your SBT → see your identity card. Kept it simple but each step had its own challenges, especially making sure state management didn't get messy between verification and minting.
Deployed the contract on Hedera testnet. The SBT stores your username and verification hash but no actual personal data - that's the beauty of zero-knowledge proofs.

