Quest Protocol

How Contracts Work

The sequence of events is:
  1. 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. 2.
    Transfer rewards to the newly created Quest. You can just transfer in rewards directly.
  3. 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. 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.