Skip to content

🐝 Quests wiki

Corantin edited this page Jun 3, 2022 · 1 revision

There is already an official wiki here (WIP) but below is focusing on how to use the dapp.

Roles

  • Creator: Promoters having a requirement or a task
  • Player: People that complete the task defined in a Quest
  • Patrons: Investors that fund a Quest

Anatomy of a quest

A quest is no more than a contract between a Creator and a Player. It consists of :

  • Title
  • Description
  • Bounty token
  • Expiration date

The description is the core of the contract. It should include :

  • Details about what the quest entails.
  • What evidence must be submitted by users claiming a reward for completing the quest.
  • The payout amount. This could be a constant amount for quests that payout multiple times, a range with reference to what determines what amount or the quest bounty amount at the time of claim.

The expiration date is the maximum date a Player can schedule a Claim. The funds for the Quest will be in the specified Bounty token only.

List view

This page consists of a small dashboard and a list of summarized Quests.

The dashboard shows the following information:

  • Total of the active Quests bounties in USD
  • Number of active Quests
  • A Create quest button

This list can be filtered by Quest title, description, expiration date, and state.

The expired Quests can be accessed by selecting Expired in the state filter.

Detail view

This page is the detailed version of the quest showing more information :

  • The claim deposit (amount locked during the claiming process)
  • The full description (not summarized)
  • The list of the Players' claims
  • The action buttons (need to be connected)
    • Fund (where Patrons can fund the quest)
    • Schedule claim (where Players can submit their evidence of task completion)

Create a quest

Creators can create a Quest only when connected to a wallet. The Create quest buttons will then appear in the header/dashboard/footer.

The creator must submit the following in 2 steps :

  1. First:
    • Title
    • Description (the field supports markdown)
  2. Second:
    • Funding token (any token address can be put in the field)
    • Initial bounty
    • Expire time (after that, Players will not be able to schedule new claims)
    • Fallback address (the address where the funds can be restored once the quest expires)
  3. The Creator needs to deposit collateral that will be locked until the Quest expiration date. He will need to Reclaim the deposit to recover it

Fund a quest

Patrons can fund a Quest only when connected to a wallet. The Fund button is in the detail view of a Quest.

The Patron should only submit the amount of funding for the Quest reward token.

Claim a Quest bounty

Players can claim the bounty only when connected to a wallet. The Schedule claim button is in the detailed view of a Quest.

The submitted claim will be delayed for a specific period where other users can challenge the claim if the requirements of the Quest aren't met.

The Player must submit the following in 2 steps :

  1. First:
    • Evidence of completion (should meet the Quest description requirements)
  2. Second:
    • The UI offers to claim all the Quest's bounty or just a specific amount (the Player should pick what is specified in the Quest description)
    • Player's wallet address to which the reward should be sent when a claim is completed
  3. The Player should deposit collateral that will be restored once the claim is executed successfully.

When the delay will be over, the Player can execute the claim by clicking on the Claim button next to the corresponding claim. (Note that anyone can execute the claim if the Quest isn't expired)

Challenge a claim

Anyone can challenge a Player's claim when connected to a wallet. The Challenge button is next to the Player claim.

A challenger can only challenge during the delay period.

The Challenger must submit the following :

  1. Reason why this claim should be challenged
  2. A deposit that will be restored when the challenge is resolved in favor of the Challenger

This will then create a dispute in Celeste (Note that with Rinkeby network, a dispute should be resolved manually by contacting us in the #Quests channel in the 1hive discord)

Once the dispute is resolved in Celeste, a stakeholder of the dispute needs to click on the Resolve button next to the claim to spread the challenge's result to the app.

If the dispute is resolved ... :

  • in favor of the Player: The claim will immediately be executed and Player wins the Challenger deposit
  • in favor of the Challenger: The claim is rejected and the Challenger wins the Player deposit

Reclaim

The Creator can reclaim the remaining funds and deposit them when connected to the corresponding wallet. This Reclaim button is only in the detailed view of a Quest once the Quest is in the Expired state.

If there are pending claims after the expiration date, the Creator should wait for the pending claim to be executed/rejected. The creator can still execute the claims by himself if he doesn't want to wait for the Player to do it.

Reclaiming a Quest will switch the state from Expired to Archived

More details on the mechanism of Quests

The Quests dapp relies on a community verification mechanism which is well described in this Wiki