Quests is a Celeste enabled incentivised bounty platform allowing users or organisations to publish bounties for work which anyone can claim by providing evidence of completion. Quests are open ended and are defined purely by a text description, quest players submit a text description as evidence for completing a quest which can be verified by other users and disputed with Celeste should the evidence not meet the original quest's criteria.
- Creator : Promoters having a requirement or a task
- Player : People that complete the task defined in a Quest
- Patrons : Investors that fund a Quest
Each quest is a single contract and consists of:
- The reward ERC20 token which any user or organisation can send to the quests contract address to fund.
- An expiry time and refund address.
Quest players submit claims for a quest, including evidence, for some or all of the quests available bounty, along with a deposit. The claim is fulfillable after a 7 day delay period.
During the delay period other users can verify that the evidence submitted demonstrates completion of the quest. If they believe that the quest has not been completed to the standard specified in the quest description then it can be challenged, also requiring a deposit, and raising it to Celeste which will decide whether the work has been completed as expected or not.
The Celeste outcome will determine whether or not the claim should be fulfilled and who is rewarded with the participants deposits. Whoever out of the player and challenger loses will lose their deposit to the winner.
Quest descriptions are open ended but must include details of the work required, payment criteria and amounts, and evidence required to verify completion. Upon completion of the quest, players specify the reward amount in the claim, which may be the full amount held by the quest or a portion, depending on how the quest defined the payment criteria.
A quest that is intended to be completed only once would define in the payment criteria that it would reward all of its bounty to the first player to successfully submit a claim. However, a quest intended to be completed multiple times, for example “writing a blog post with your vision for 1Hive” could define the payment criteria such that each completion receives 1 HNY or perhaps a diminishing reward. Eg the first submission receives 2 HNY the second receives 1.5 HNY and each subsequent completion receives 0.5 less HNY than the last.
The evidence required for completing a quest will depend on the work expected. For a quest on writing a blog post, the evidence required will likely include a link to the blog post. It may also specify the minimum length of the blog post and that it hasn't been copied from somewhere else. For a quest on adding a feature to a web UI, the evidence required will likely include a link to the code written, some screenshots of the deployed feature and some reference to the code standard expected.
This page consists of a small dashboard and a list of summarized Quests.
The dasboard shows the following information:
- Total of the active Quests bounties in USD
- Number of active Quests
- A Create quest button
Note that the USD value is computed from some stable coins, the list of these stable coins is avalaible in the footer. This list can be adjust on demand to include more pairs.
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.
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 (needs to be connected)
- Fund (where Patrons can fund the quest)
- Claim quest (where Players can submit their evidence of task completion)
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 :
- Funding token (any token address can be put in the field)
- Initial bounty
- Expire time (after that, Players will not be able to claim the quest)
- Fallback address (the address where the funds can be restored once the quest expires)
The Creator needs to deposit a collateral that will be locked until the quest expiration date. After that, Recover the quest will send the deposit back to the creator wallet
Patrons can fund a quest only when connected to a wallet. The Fund button is in the detail view.
The Patron then submit the amount of the quest reward token to be sent.
Players can claim the bounty only when connected to a wallet.
The Claim quest button is in the detail view.
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 (see [verification of quest (quests.md#verifying-a-quest)).
The Player must submit the following in 2 steps :
- Evidence of completion (should meet the quest description requirements)
- The UI offers to claim all the quest s bounty or just a specific amount (Player should pick what is specified in the quest description)
- Player's wallet address to which the reward should be sent
- Contact information if the Player want to be contacted to discuss about his claim (recommended to not being challenged for a wrong reason)
The Player needs to deposit a collateral that will be restored once the claim is executed.
When the delay will be over, the Player can execute the claim by clicking on the Execute button next to the corresponding claim.
The Execute button will be displayed for everyone once the quest has expired
Anyone can challenge a Player's claim when connected to a wallet. (see [verification of quest (quests.md#verifying-a-quest))
The Challenge button is next to the Player claim.
A challenger can only challenge during the 7 day delay period.
The Challenger must submit the reason why this claim should be challenged
The Challenger needs to pay some challenge fees defined by Celeste and needs to deposit a collateral that will be restored once the claim is executed successfully.
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 immediatly be executed and Player wins the Challenger deposit
- Challenger : The claim is rejected and the Challenger wins the Player deposit
The Creator can recover the remaining funds and the deposit when connected.
This Recover button is only shown in the detail view once the quest has expired.
If there's still pending claims (still in verification delay or waiting to be executed) after the expiration date, the Creator should't recover the funds unless he doesn't want the claiming Players to collect their reward. (Remember that the Execute button will be displayed for everyone once the quest has expired.)
Recovering a quest will switch the state from Expired to Archived
Quests can be verified by anyone. Although in many cases the quest verifier will be the original creator of the quest, in some cases the quest is funded by more than one user or an organisation so there is a financial incentive to verify them.
Quest players must make a deposit with their claim which is paid to a verifier should they successfully challenge the claim. Quest verifiers also have to make a deposit, which is lost if their challenge is unsuccessful. However, this is less than the deposit for creating a claim but large enough to prevent spamming of challenging of claims.
The first thing to look for when verifying a quest is whether the claimed amount is in line with the quests payment criteria. If it isn't it can immediately be challenged and Celeste will verify the challenge.
Besides verifying the claim amount the verification of evidence submitted in a claim is dependant on the evaluation criteria specified in the quest. For example if a quests evaluation criteria require links to completed code and screenshots then these should be included in the evidence submitted by the quest player and should be verified as being accurate.