Quest Protocol
  • Quest Protocol
    • Introduction to Quest Protocol
    • Mission & Principles
    • Ecosystem Challenges & Solutions
    • How it Works
  • Deploying Quests on Quest Terminal
    • Choosing an Action
    • Choosing Quest Participants
      • Allowlists
      • Our Philosophy on Sybil Resistance
    • Scheduling a Quest
    • Choosing a Reward
    • Deploying a Quest & Quest Fees
    • Monitoring a Quest
    • Withdrawing Tokens
    • FAQ
  • Protocol Rewards
    • Protocol Rewards Overview
    • Quest Referrals
  • RabbitHole
    • Completing Quests
    • Power Score
  • For Developers
    • Quest Protocol Contracts
    • How Contracts Work
    • Submitting Actions
    • Submitting Plugins
    • Submitting Tokens
    • Public API
    • Codearena Audit
Powered by GitBook
On this page

Was this helpful?

  1. For Developers

How Contracts Work

PreviousQuest Protocol ContractsNextSubmitting Actions

Last updated 1 year ago

Was this helpful?

The sequence of events is:

  1. Call QuestFactory.createQuest(rewardType: [erc20] defined as:

     function createQuest(
         address rewardTokenAddress_,
         uint256 endTime_,
         uint256 startTime_,
         uint256 totalParticipants_,
         uint256 rewardAmountOrTokenId_,
         string memory contractType_,
         string memory questId_
     )
    • rewardTokenAddress_is the contract address for the ERC20 token reward

    • endTime is the end time in unix for the Quest.

    • startTime is the start time in unix for the Quest.

    • totalParticipants is the total number of accounts that can participate in the Quest.

    • rewardAmountOrTokenId_ is the reward amount if it's an ERC-20 token (ie. 1 UNI token out of the 1,000 total)

    • contractType_ will be either an ERC-20 token.

    • questId is an internal UUID that connects multiple systems and acts as a universal UUID

  2. Transfer rewards to the newly created Quest. You can just transfer in rewards directly.

  3. The Quest Factory will keep track of receipts for a given user and quest. There is a finite amount of participants allowed which is calculated by taking the totalRewards / rewardAmountOrTokenId.

  4. Execute the start function. This will validate that the Quest is ready for public and upon reaching the effective StartDate, will be ready for use.