-
Notifications
You must be signed in to change notification settings - Fork 115
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Crowdfunded Bounties #1998
Comments
@bedeho one issue that has been floating around in my mind for a while is how the council, in a mainnet scenario could adapt the current KPI system to ensure there are regular checks and reports being made. I created a forum thread discussing this, and linked to some github issues exploring the idea of council checks/reports being made on an incentive basis (whereby users create reports with spending proposals, rather than relying on the council to do work, as they are the most incentivized people when it comes to this work): https://testnet.joystream.org/#/forum/threads/188 The regular checks/reports are difficult to define since they require both data and opinion, the data part is easy to perform using scripts, but when it comes to providing opinion things get complicated. How it relates to the bounty board is that the council could create bounties for each council session for performing spot checks/creating reports. This would free up the proposal system from multiple spending proposals and also ensure there is some likely "guarantee" that good actors are paid for doing work. So in each given council term, the council could issue several bounties, covering the "paperwork" and expect that the bounty board system/oracle would deal with judging the work, rather than relying on spending proposals. This also means that the council could have a system of judging whether the platform is achieving reporting requirements, and adjust incentives accordingly if the reports are not completed: Joystream/community-repo#65 (this is largely redundant since you already mentioned the council being able to issue bounties, but if this use case changes anything I think its worth pointing out) |
Done in |
Background
Currently, the only way to fund the production of goods that create benefits to a broad set of platform participants is through a financing proposal or discretionary spending by a working group lead out of the group budget. These processes incur the transaction costs of beneficiaries having to convince a number of external decision-makers, such as a council financing quorum, that this is a good idea. For smaller initiatives that ideally should start and finish sooner, or where they depend on knowledge or insight that is not as broadly shared, these processes become too costly.
Proposal
Crowd funded bounties which allows a member, or the council, to crowd fund work on projects with a public benefit. The funding mechanism for the bounties attempts to facliate two forms of crowd funding:
In either case, an oracle is required to judge how much of the collected funds should be paid to any given contributor of work on the bounty, and this will either be a pre-specified member, or the council iself.
Bounty Creation
Any member or the council can create a bounty by providing the following information.
Bounty Lifecycle
A bounty has the following phases
Funding
The initial period after creation where any other member can add their funding to the bounty. The funds are kept in a special per bounty account managed by the module. A given funder can repeatedly increase their total contribution multiple times but never decrease it. If the funding cap is reached at any time, then the funding period is instantly over, and one proceeds to the work period. Any contribution that partially overflows the cap results in the difference not being drawn. If the minimum funding bound is not reached by the time limit, then all funders can withdraw their contribution - including their share of the cherry, which is split proportionate to share of total funding (eeeek fractions, watch out!). The creator can cancel at any time before this, something that is of particular importance of in perpetual funding periods. If no one has contributed, any cherry is returned and the bounty is instantl removed, but if at least one contributor has funded, then the cherry will be split amont all contributors, and the bounty goes to the withdraw period.
Work
During the work period, a suitable member can announce they are working on the bounty - possibly requiring stake, called an entry, submit one or more work submissions corresponding to a given entry, or withdraw an entry at any time. A given member can submit independent entries to the same bounty. The staking period, by which we mean the earliest time you will get your stake back, is set to be by the end of the judging period. The stake is not reusable with any other purpose except voting in elections. Multiple members may announce they are working in parallel. One can withdraw an entry, which may return up to the staked amount, but possibly less. The slashing penalty is proportional to the total time the entry was active as a percentage of the share of the working period they were active, as this was discouraging other entrants. Being able to submit an entry depends on having announced you are working prior, and submitting your entry must be done prior to the end of the work period. All submitted entries are public.
Judging
The oracle selects two subset of entrants. First, the winners are selected, and the funding pool is split among them according to the ratio selected by the oracle. Second, any other legitimate entrants are selected as legitimate, yet not winning, which results in them being able to withdraw their full stake. Anyone else, that is those who either never submitted an entry at all, or submitted something bogus, will only be able to withdraw their stake with a penalty deducted. Withdrawing is in all cases an active operation by the entrant, so no iteration is required. When an oracle submits such a judgment, one transition to the challenge period. If no judgment is submitted, then the default outcome is that everyone will be able to withdraw the full stake, and all funders can withdraw their contributed funds also. The latter is also an action on the funders. But before this goes into effect, the challenge period begins.
Withdraw
During this time anyone can actually withdraw what they are owed, both winning submissions, losing submissions or funders in failed bounties. When the last withdrawal possible has been made, the bounty should be removed.
Implementation
The text was updated successfully, but these errors were encountered: