Adding bounties network support for DAOstack DAOs.
DAOstack DAOs act via proposals. Currently, there is one type of proposal for rewarding a members’ contribution - a “Contribution Reward” proposal. In a Contribution Reward proposal, the beneficiary has to be set in advance which sets all sorts of limitations.
DAOstack DAOs also have the ability to interact with any contract on the blockchain via “Generic Action” proposals. This bounty will be paid for adding support for standard bounties contract to Alchemy (DAOstack’s DApp) using the Generic Action Scheme.
- Genesis DAO
- Standard Bounties
- [action] Join the Genesis Alpha DAO
To qualify for this bounty you must be a member of the genesis dao.
- [code] Create standard bounty proposals.
On the contract level, the generic action scheme only needs the encoded call data in order to function. Since this is not very user-friendly we created a way for customizing the UI for specific contracts’ proposals. The customization needs to happen in several places:
- Creating proposals <br />
_‘src/genericSchemeRegistry/schemes/DutchX.json’ _is an example of how alchemy customises the create proposal popup to present the different functions the scheme can call on the contract. <br />
This requires adding the contracts’ ABI and customizing things like the titles of the labels and placeholders. The client library takes care of encoding the ABI and submitting the proposal.
- Displaying proposals** \
‘src/components/Proposal/ProposalSummary/ProposalSummaryDutchX.tsx’** is an example of how to customise the description summary of a proposal to explain what will happen if it passed.
- Actions we need to support:
- Issue and contribute
- Refund Contributions
- Drain bounty
- Accept Fulfillment
- Change Bounty
- Change Data
- Change Deadline
- Fulfil and accept
- ** optional **
- Replace Approvers
- Replace Issuers
- [code] Show list of open bounties
- Currently, Alchemy’s UI was only focused on the current open proposals. But with the introduction of bounties, the list of open bounties becomes very important.
This means adding a new tab to the bounty scheme with a list of open bounties. Every bounty on the list should show the bounty title, remaining balance, and the description. <br />
Attaching a design at the specs section below.
- [action] Register the bounty scheme
- In alchemy, using a scheme registrar proposal, register a generic scheme to the genesis DAO that points to the standard bounties contract.
- [action] Get paid
- Submit a proposal to approve the fulfilment of this bounty to be approved by the DAO :).
Example User Story(s)
- Any user with an idea can submit a proposal for the dao to sponsor it with a bounty
- If the dao agrees that the idea is interesting and the proposal is passed, the bounty will be created and added to the bounty list.
- Optionally, the proposal can already include a suggested bounty sum
- Any user can propose to add funds to a bounty (using the Contribute method)
- Any user that wants to fulfil an existing bounty will create a fulfil-and-accept proposal asking for part of (or all) the bounty.
- If the DAO likes the work and accepts the proposal, the bounty will be paid out to the user.
- Users can create fulfillments on the bounty directly and only propose to accept their fulfilment.
- If a bounty is about to expire, anyone could create a proposal to extend it
- If a bounty is no longer interesting, anyone could create a proposal to close it and drain the funds back to the DAO.
- If the bounty has external contributors, the dao can choose to refund them instead of draining the funds to the dao.
- When creating a bounty
- The issuer and approver of the bounty should be the DAO’s avatar address.
- The platform should be set to ‘DAOstack’.
- For the bounty scheme, the information tab should be called “Open Bounties”
- The list should show all the open bounties this DAO created / is the approver of.
- We should query the bounty network’s api and ask for all the open bounties in the DAOstack platform with the current DAO’s avatar as the issuer / approver.
- Bounty cards
- Title - the title of the bounty + bounty amount in brackets <br />
i.e. “Meta Bounty [12.34 ETH]”
- Description - the description of the bounty
- Should be capped to 10 lines, when longer should indicate that by adding “Read the full description on bounty networks” as the last line…
- Card - clicking on the card should take you to the bounty page on bounty networks.
@zak_alex on telegram
email@example.com (but better on telegram 🙃)