# 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