Quest Protocol

The Quest Protocol is a standardized way to create quest-based collections that reward users with tokens and coins for completing cryptographically verified tasks. Quest collections are designed for achievement-based systems where users complete quests (tasks) and provide cryptographic proofs (Merkle proofs) to claim tokens along with coin incentives.

Protocol Requirements

Collection Standards

  • Must include "Quests" in the standardsTimeline for the current time period

  • Must have exactly one valid token ID: {"start": "1", "end": "1"}

Quest Approval Requirements

  • From List: Must be "Mint" (minting from the mint address)

  • Merkle Challenge: Must have exactly one Merkle challenge with:

    • maxUsesPerLeaf: 1 (one use per proof)

    • useCreatorAddressAsLeaf: false (custom proof verification)

    • Valid Merkle root hash for proof verification

  • Coin Transfers: Must have exactly one coin transfer with:

    • Exactly one coin denomination and amount

    • overrideFromWithApproverAddress: true (coins come from collection creator)

    • overrideToWithInitiator: true (coins go to the quest completer)

  • Max Transfers: Must have overallMaxNumTransfers > 0

  • Predetermined Balances: Must have:

    • Exactly one startBalance with amount 1 for token ID 1

    • incrementTokenIdsBy: 0 (no token ID incrementing)

    • incrementOwnershipTimesBy: 0 (no time incrementing)

    • durationFromTimestamp: 0 (no time-based duration)

    • allowOverrideTimestamp: false (no timestamp overrides)

    • All recurringOwnershipTimes fields set to 0 (no recurring)

  • Additional Constraints:

    • mustOwnTokens: empty (no prerequisite tokens)

    • requireToEqualsInitiatedBy: false (no address matching required)

Validation Functions

Collection Validation

API Documentation: doesCollectionFollowQuestProtocol

Approval Validation

API Documentation: isQuestApproval

Implementation Example

For a complete implementation example, see the Quest Token Collection Example.

Last updated