GridQuest
Gamify Web3 identity with on-chain XP and levels tied to Universal Profiles.
Created on 4th May 2025
•
GridQuest
Gamify Web3 identity with on-chain XP and levels tied to Universal Profiles.
The problem GridQuest solves
✅ The Problem It Solves
Most Web3 dApps lack a native, verifiable system to track user contributions, learning progress, or engagement. Traditional solutions rely on centralized databases or off-chain systems that are:
- ❌ Not portable across platforms
- ❌ Not tied to user identity
- ❌ Vulnerable to manipulation or loss
🔐 How This dApp Helps
- ✅ Tracks XP and levels on-chain — no backend needed
- ✅ Tied to Universal Profiles — progress becomes part of the user's Web3 identity
- ✅ Public & Verifiable — any dApp can read your achievements
- ✅ Incentivizes participation — adds gamification to learning, contributions, and community activity
💡 Use Cases
- Learning platforms with on-chain certificates
- DAOs assigning tasks and tracking contributor XP
- dApps onboarding new users through gamified flows
- Communities rewarding engagement and reputation
Challenges I ran into
🐞 Challenges I Ran Into
1. Storing Dynamic User Data On-Chain
- Problem: Efficiently storing per-user XP and level in a format compatible with Universal Profiles.
- Solution: Used
ERC725Y::_setData()
with akeccak256
hash key that includes the user's address. This allowed for structured, collision-resistant metadata storage within the user's profile.
2. Handling NFT Mint Failures Gracefully
- Problem: NFT minting could fail due to gas issues or contract errors, disrupting the flow of quest completion.
- Solution: Wrapped the minting logic in a
try/catch
block to avoid reverts and maintain a smooth user experience.
3. Permission Management for Admin Functions
- Problem: Ensuring only the Universal Profile owner (admin) could create or manage quests.
- Solution: Implemented an
onlyAdmin
modifier based on constructor-injectedadmin
address and added support for changing admin via smart contract.
4. Integrating With ERC725Y
- Problem: Lack of real-world examples made it hard to understand the best practices for using ERC725Y for user-level metadata.
- Solution: Studied the LUKSO docs and LSP standards closely, and tested various
setData
patterns before settling on an efficient encoding strategy.
Tracks Applied (1)
Build mini dApps for Universal Profiles
Cheer Project
Cheering for a project means supporting a project you like with as little as 0.0025 ETH. Right now, you can Cheer using ETH on Arbitrum, Optimism and Base.
Discussion
Builders also viewed
See more projects on Devfolio
