-
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
Idea: Crowdfunded Bounties #1094
Comments
If I am to understand correctly this would enable funding of projects outside of the council almost entirely (except for dispute resolution?)
|
Thanks for the feedback! Yes, this is meant to be outside the council. I have many times wanted to fund stuff myself personally, but there was never a great way to do it within the system itself I felt. But the scenario in which such a system would really shine is when there is a group of people all wanting something to get done, but without having to lobby the council.
|
I think as long as that option is there to elect someone else as the oracle it would be good enough. My main worry was that there would be situations where people fund stuff and never accept the solutions because they get busy/AFK. |
One other use case I hadn't thought of in previous responses was the marketplaces that currently exist for creating channel intros, thumbnails, logos and layouts. Or maybe a video creator wants an infographic or animation created for a project. In a case like that the user creating the bounty would be putting 100% of the funds forward and the work being done would be solely for their benefit (ex. 100 JOY bounty for a new channel avatar). I assume this could be done within the same bounty system without any real changes, but maybe just something to consider as it would enable this kind of work to take place directly within Joystream. Even if not its intended use, I could foresee people trying to use it for this purpose. |
Very interesting, yes I did not think of that use-case, I always thought of it as a place to produce things that benefit multiple people, but you are right that nothing in the design prevents it from being just a sort of gig board among members. That would actually be really cool. |
Here is an alternative scenario which may require a bit of a different model: Some good cause is identified, a bit of money is put in, but it's not clear when exactly anyone is going to come along to solve it, nor is it perhaps very urgent to have it done by some deadline, it could just be some beneficial thing. E.g. getting some documentation improved, or solving some long-standing smaller issue. In this case, you may want funding not to stop at some predetermined amount of time. You instead want people to be able to contribute as long as the issue remains open, and for someone to be able to make a submission at any time, without announcing, and winning becomes a race that the oracle decides when has ended. Getting the funds back requires the council to cancel the bounty at some point. |
Would those issues be the sort added by council proposal? Similar to a spending proposal, but it would create a bounty listing with a set amount of tokens that is then the responsibility of the oracle to oversee? The spending proposal system has some limitations which make it a bit challenging to use effectively as there is no oversight (like the bounty system would provide), so having some sort of link where a proposal is voted on that creates a bounty listing would be quite interesting to see. Alternatively, if adding funding to a bounty is as simple as a balance transfer between accounts and does not involve extrinsics, then the spending proposal system could be used to send tokens directly towards a specific bounty. It would achieve the same thing. |
Check this for useful ideas |
Extra idea: perhaps it should be possbile for the council to also open a bounty, in which case the value add is less about getting outside buyin, and more about signalling - with commitment, what the council is explicitly looking to fund. |
Narrowed down and cleaned up here: #1998 |
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 (not yet implemented?). 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
A crowdfunding mechanism which allows one or more individuals to propose, crowdfund and payout bounties, with possible dispute resolution from the council. Further, the funding itself can take one of two forms
Both are described here
In both cases, an oracle is required to judge whether a payout should be made depending on whether the provided solution addressed the project goal.
Assurance Contract
Any member can create a new funding project which describes
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. If the minimum funding bound is not reached by the time limit, then all funders can withdraw their contribution - possibly including their share of the cherry, which is split proportionate to share of total funding.
Work: During the work period, entrants can announce that they are working on a submission, which possibly requires some stake. The staking period is set to be by the end of the judging period. Multiple people may announce they are working in parallel. Announcing this may require some amount of stake. 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.
Challenge: During this period, anyone can submit a staked proposal, in the proposal system, challenging the outcome, to the council. This can happen one time, and a single challenge should be used to aggregate all grievances that may be outstanding. It's the responsibility of the council to settle on a single outcome. If a challenge is posted, then one moves to the arbitration stage, otherwise one move to the withdrawl period.
Arbitration: During this time, the council is processing a challenge proposal. The period has a max upper bound, and if the council does not submit a final judgment within this time, then one moves to the withdrawl period.
Withdrawl: During this time anyone can actually withdraw what they are owed. When the lats withdrawal possible has been made, the bounty should be removed.
Dominant Assurance Contract
The approach here is a bit simpler because there is just a single entrant, but the basic structure is the same.
Implementation
Comment
Q: Why not just use Gitcoin?
A:
Addendum
We should seriously consider whether the discussion module for the proposal system can be slightly refactored so that it can be an instance module base used with different subsystems, for example one discussion per bounty. Here the natural set of posters would be: creator, funders, any active contributor, or alternatively all members?
The text was updated successfully, but these errors were encountered: