# MVP ## [Quest fields stored in chain] - Title - ERC21 Token used for funding the quest or send bounty to player - Description as an IPFS hash - Expiration as a timestamp - Govern address given by Quest Factory contract - Funds recovery address - Creator address - Creator deposit token and ammount - Player Claims array ## Create a quest as a CREATOR - Title - Description with requirements (will be stored as IPFS hash) - 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, the contracts balance at time of claim. This shouldn’t be a percentage of the contracts balance though as claims are not guaranteed to happen in order as they can be cancelled, messing up the valid claim amounts. - Optionally a whitelist of addresses or set of addresses that can receive rewards for this quest. - Funds fallback address (default is **Creator** wallet address) - Expire time - Initial funding wich can be zero (used to funds the quest) - The creator will have to place a collateral deposit wich will be reclaimable when the quest is expired ## List & Filter quests as a USER - Simple infinite scroll with last created on top - Filtering by : - Title - Description - Expiration - Bounty available - State (active or expired) ### Quest summary Card containing : - Title - Description - Address - Bounty Available ### Quest detail Modal containing : - Title - Description - Address - Bounty Available - Claim deposit - List of **Player** claiming the **Quest** containing : - Evidence of completion - Amount requested - Time until **Claim** challenge delay expiration - Claim button - Fund button - Expire time - Creation time ## Fund quest as a PATRON - Fund button in **Quest** detail - Send fund directly to the token bound to the quest - UI fetch the total available bounty ## Claim a quest as a PLAYER - **Player** click the **Claim** button - **Player** provides : - Evidence of completion (IPFS) - Requested amount - His wallet address where claim will be transferred - **Player** should place a collateral deposit wich is restored if claim is executed. - Call **Aragon Govern Queue** with **Claim** function of **Quest** contract with a delay of 7 days - If any account challenge the claim during this delay, the claim is frozen and the **Dispute** will be raised to **Celeste** - If the **Dispute** is ruled in favor of the **Challenger**, he earns the **Player** deposit and the **Claim** is denied. - If the **Dispute** is ruled in favor of the **Player**, he earns the **Challenger** deposit and the **Claim** is immediatly executed. - Each time a **Dispute** has been ruled in Celeste, someone needs to resolve it from the Quests UI. ## Challenge a claim - Any stakeholder can go to a quest detail - If a **Claim** is pending, it is challengable - The **Challenger** should place a collateral deposit and pay a challenge fee - The **Claim** will then be raised to celeste - If **Challenger** wins the dispute, he collects **Player** deposit