The Story Behind NFT-Gated University Access
🔍 Inspiration
As a student juggling 3 physical ID cards (dorm, library, gym), I wondered: "Why can’t universities consolidate access like Web3 wallets consolidate identities?" After seeing BitBadges’ gated NFT tools at this hackathon, the vision clicked:
"A single NFT that adapts to your academic journey—from freshman year to alumni status."
The rise of token-gated communities (like Friends With Benefits) and IoT smart locks proved the tech was ready. We just needed to bridge it to education.
📚 What I Learned
- Multi-Chain Auth: BitBadges’ SDK taught me cross-chain credentialing (e.g., a Polygon NFT triggering an Ethereum smart contract).
- Zero-Knowledge Proofs: To preserve privacy, we implemented partial verification:
$$
\text{Verify}(ID_{\text{NFT}}, \text{University}{\text{DB}}) \rightarrow \text{Access}{\text{Yes/No}} \ \text{without exposing } \text{DOB}_{\text{student}}
$$ - University Bureaucracy: Pilot talks revealed IT departments prioritize backward compatibility—so we added RFID emulation for legacy scanners.
⚙️ How We Built It
Tech Stack
- Frontend: React + WalletConnect (for wallet login)
- Backend: Node.js + BitBadges API (NFT minting/verification)
- Hardware: Raspberry Pi + NFC readers (prototype scanners)
- Smart Contracts: Solidity (access control logic)
Key Steps
- NFT Minting:
- Used BitBadges to issue role-based NFTs (e.g.,
Student_EMU_2025,Alumni_VT_2010).
- Used BitBadges to issue role-based NFTs (e.g.,
- Gate Integration:
- Wrote a smart contract to check NFT ownership + expiry dates:
solidity function hasAccess(address _user) public view returns (bool) { return balanceOf(_user) > 0 && block.timestamp < expiryDate[_user]; }
- Wrote a smart contract to check NFT ownership + expiry dates:
- Scanner Prototype:
- Modified open-source NFC readers to decode wallet addresses (cost: \$17/unit vs. \$200 commercial alternatives).
- Modified open-source NFC readers to decode wallet addresses (cost: \$17/unit vs. \$200 commercial alternatives).
🧗 Challenges Faced
- Wallet Adoption: Non-crypto users struggled with MetaMask.
- Fix: Added email/SMS fallback via UniPass.
- Fix: Added email/SMS fallback via UniPass.
- Gas Fees: Students shouldn’t pay to enter a library!
- Fix: Used Polygon’s testnet for demo + proposed uni-subsidized gas.
- Fix: Used Polygon’s testnet for demo + proposed uni-subsidized gas.
- Real-World Testing:
- First scanner failed in high-traffic areas (≈5 sec latency).
- Fix: Switched to pre-computed
keccak256signatures for faster verification:
$$
\text{Signature}{\text{valid}} = H(\text{Wallet}{\text{ID}} \parallel \text{Room}_{\text{code}})
$$
- First scanner failed in high-traffic areas (≈5 sec latency).
🌟 What’s Next?
- Pilot with EMU’s CS department this fall.
- Add SBTs (Soulbound Tokens) for non-transferable credentials.
- Explore zkRollups for batch verification in crowded lecture halls.
Key Takeaways:
- Web3 can solve real-world inefficiencies if we prioritize UX.
- Collaboration with institutions is harder than coding 😅.
Built With
- accessible-components.-the-backend
- addresses.
- and-used-ethers.js-and-wagmi-for-seamless-web3-interactions.-we-chose-chakra-ui-for-its-modular
- cloud
- connected-to-firebase-firestore-for-storing-user-profiles-and-access-logs.-to-bridge-web2-and-web3-auth
- custom
- decode
- firmware
- in
- like
- powered-by-vite-for-fast-development
- python
- running-on-node.js-and-express
- services
- the-frontend-was-built-with-react.js-and-typescript
- to
- vercel
- wallet
- we-implemented-nextauth.js-and-clerk.dev-for-oauth-integration-with-university-systems.-for-iot-integration
- we-prototyped-nfc-scanners-using-raspberry-pi-4-and-pn532-readers
- writing
Log in or sign up for Devpost to join the conversation.