Skip to content
GridQuest

GridQuest

Gamify Web3 identity with on-chain XP and levels tied to Universal Profiles.

Created on 4th May 2025

GridQuest

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 a

    keccak256

    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-injected

    admin

    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

🧩 How This Project Fits the Track This project enhances Universal Profiles (UPs) by attaching a gamified, on-chain XP ...Read More

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