• Forum has been upgraded, all links, images, etc are as they were. Please see Official Announcements for more information

Pre-proposal: Grassroots Crowdfunding System

Would you support this proposal?


  • Total voters
    12

Martin Rue

New member
Pre-proposal: grass roots crowdfunding system for Dash projects.

TL;DR

I want to build a community crowdfunding platform for Dash, aimed at smaller projects and individuals.

Please let me know whether you would support this proposal. I'm really excited about the potential of this idea, and I truly think it could become a huge support mechanism that helps people at the grass roots level do something positive for Dash. I'd love the opportunity to build and run this project. FYI: I've kept this proposal as cheap as I possibly can.

INTRO

As the value of Dash increases, the cost of making a proposal becomes more expensive. This is both good and bad. On the one hand, we don't want to overwhelm master node operators with lots of smaller projects to consider, and instead focus their attention on the bigger, more far-reaching ideas. On the other hand, smaller grass roots projects are very unlikely to receive (or apply) for DAO funding because the proposal fee doesn't warrant the risk. This leaves many smaller projects and individuals, that would otherwise contribute to the Dash ecosystem, doing on it on their own.

Quite often, little things become big things, so this proposal is in the spirit of supporting smaller projects and helping everyone get involved and invested in the Dash ecosystem.

So what do I mean by "smaller projects"?
  • Perhaps you're running an event and want to buy pizza to attract more attendees.
  • Perhaps you want to build a small information website about how to buy Dash, or how to use it, etc.
  • Maybe you need sponsorship for a crypto conference to go along and talk about Dash.
  • Maybe you want to take a week off work and man the support channels to help people with their questions.
In other words, smaller projects where one would require somewhere between 0 and 5 Dash to support.

DETAILS

This project has two major milestones:

MILESTONE 1

From the perspective of users:
  1. You sign up to the crowdfunding platform and create an account. You must fund your account with a minimum of 0.5 Dash, or more if you like.
  2. If you choose not to fund your account, you cannot participate in supporting projects. You can still browse the site and read project proposals and discussions. You can decide to fund your account later.
  3. The 0.5 Dash is held by the system. It is returned in full if you close your account. The purpose of the 0.5 Dash is to activate your account as a participating member. You can then support any project(s) you like in multiples of 0.1 Dash. E.g. you could support one project with 0.1 Dash, and another with 0.4 Dash.
From the perspective of projects:
  1. A project can be proposed much like Dash Central. The proposal itself costs the creator 0.1 Dash, which is essentially them backing their own project, and should help with reducing spam and opportunistic proposals.
  2. Projects must have a target funding amount (in denominations of 0.1 Dash) and a deadline (3 days to 1 month).
  3. Projects that don't reach the target amount by the deadline return the commitments back to the backers, and the 0.1 Dash to the proposer.
  4. Successful projects can withdraw the total funding once the deadline is reached.
  5. Completed projects must be updated with evidence. Consequently, the proposal receives a follow-on vote from backers to determine whether the project was adequately completed.
At this point, perhaps you're thinking: why would I spend my own money and get nothing back?

Here's what participating members get back:
  1. You support grass roots projects, helping spread Dash in those small community spaces where real support grows from.
  2. You increase the value of however much Dash you hold by supporting projects that have a positive impact on the Dash ecosystem, albeit a smaller corner of it.
  3. And here's the important part: you build a participation score (both for supporting proposals, and for creating them).
  4. The purpose of the participation score is to reflect how much you have supported projects (by backing them, by participating in discussions, by proposing your own). The participation score then becomes a key part of the second milestone, please read on.
MILESTONE 2

After a month or two, a number of users should have participated and backed projects. We should have a number of successful projects having been funded and delivered. We'll also have a good idea of which users are the most active supporters through their participation score.

From there, another DAO proposal will be made to provide additional funding. If successful, the extra DAO funding will be used to support projects further. Based on your participation score, your backing will be multiplied with additional DAO funding. The more you help, the more DAO funding you can add to your own commitments.

Here's an example of how this might work:
(Note: the details may change, the exact mechanics will need further refinement.)

At stage 1, you can only back a project with your own funds. Let's say you back a project with 0.1 Dash. The project receives the sum of all the backed funds, which either meets or fails its target.

By stage 2, you're actively participating and now have a sufficient participation score. When you back a new project, the amount you back will be automatically matched by the DAO funds. So, if you now back a project with 0.5 Dash, the commitment to the project automatically becomes 1.0 Dash.

I have other feature ideas for milestone 2 as well. For example:
  • Keeping communication open between backers (who mark themselves as wanting to remain part of a failed proposal), allowing the proposer and those backers to come to alternate arrangements to potentially support the project.
  • Proposing tranched projects where funding is released in batches with continued approval from backers.
  • Creating Request For Help proposals to find collaborators and others to work with on ideas you can't get off the ground alone.
TIMEFRAMES & COSTS

My initial proposal will be to build and deploy the first milestone described above. The system will be built as a web application, deployed and hosted in cloud infrastructure. I'll release a new functional part of the system each month until completion, which is estimated to take 4-5 months before fully functional. Costs estimate below:

Development: 4-5 months at 12 Dash/month = 60 Dash
Hosting: 12 months hosting costs = 10 Dash (required from month 1 of development in order to share progress).
Contingency: domain name, graphic design work, email delivery service, other = 10 Dash
Total = 80 Dash

Note: If it's more appealing from a risk point of view, I would be more than happy to create a proposal that requests half the funding now, and the other half after the first month's release. But, on that point, here's some more info about me:

ABOUT ME

I'm a software developer from Manchester, UK. I've been writing code and building things since I was around 13. I especially love building things that help others. Additionally, holding a little Dash myself, I want to help the Dash ecosystem grow as much as I can. I believe this project can become an important part of that.

My most recent projects are:

https://yakkapp.com
An app to help people learn foreign languages by learning how to speak the language from day 1. Recently launched and growing, with just over 200 users currently.

https://esperantujo.directory
A community site for Esperanto speakers to indicate where they live and meet fellow speakers. It has grown to more than 1,600 users.

You can find out more about me at:

My blog: http://martinrue.com
Twitter: @martinrue

I hope you consider this project and support it – it's something I'd love to build.

If you got this far, good job! I owe you a beer once you wake up from your nap :)

Cheers,
Martin
 
Last edited:
Very interesting idea.

When many people support projects, how can you protect funds against hackers?

Hey bhkien, great question, thanks. I will update the pre-proposal with this question and answer.

The plan is use a BIP32 HD set of addresses. This will allow the server to generate unique addresses for users, but ensure all funds flow into an offline hardware wallet, entirely separate from the system itself. Successful proposals will be paid manually, by humans, until the point this doesn't scale.

That will take the system quite far I believe, and from a security point of view, is a good way to start.
 
Great idea. We've been many lately to talk about a crowdfunding system like that and you put it up in shape nicely ! I will definetely support this proposal !
 
I like the idea. My first thought was about security, but using an offline wallet would be good. I like the anti-spam fee of 0.1 Dash - I assume it would be where I, submitting a proposal, kick off the funding by donating 0.1 Dash to myself, yeah?

What's the point of asking everyone to fund their account with 0.5 Dash? If I only want to donate 0.1 Dash to one single project, why require me to fund my account with 0.5 first?

I prefer the idea of "keep it simple" so I'd like to see the first phase run for a while. It gets a little complicated adding in treasury funds to the pool for the DAO to match our donations, so I'd prefer seeing how we do without that for a while.

I'd vote yes. I think we could go really far even without the DAO matching funds but that might be nice down the road if this picks up steam.
 
I will not be supporting this.

I'm most definitely hoping for a crowdfunding solution but I want to see it implemented as part of the dash protocol so that it retains it's decentralised roots. I'm sure a decentralised version can be built into dash. By accepting this proposal, my major concern would be that it stays ("good enough") and a decentralised version never gets implemented.
 
I like the idea. My first thought was about security, but using an offline wallet would be good. I like the anti-spam fee of 0.1 Dash - I assume it would be where I, submitting a proposal, kick off the funding by donating 0.1 Dash to myself, yeah?

Yeah, exactly – kicking off the funding is a good way to phrase it. Sort of like "Look, I support my own project, so please help me make it happen."

What's the point of asking everyone to fund their account with 0.5 Dash? If I only want to donate 0.1 Dash to one single project, why require me to fund my account with 0.5 first?

The idea of 0.5 was a sort of initial collateral, to help encourage people to take it more seriously and make it easier to go ahead and support additional projects easily, but without locking up *too much* money in the site. The actual amount could be very flexible if there's a consensus that smaller limits make more sense.

I prefer the idea of "keep it simple" so I'd like to see the first phase run for a while. It gets a little complicated adding in treasury funds to the pool for the DAO to match our donations, so I'd prefer seeing how we do without that for a while.

I'd vote yes. I think we could go really far even without the DAO matching funds but that might be nice down the road if this picks up steam.

I agree that letting the first phase run for as long as it continues to work would be ideal. Learn what's working and what's not, and fix those issues. If it becomes sustainable without the additional DAO funding, that would be awesome, I'd love to see that happen.

Thanks so much for the feedback Jmmon!
 
I will not be supporting this.

I'm most definitely hoping for a crowdfunding solution but I want to see it implemented as part of the dash protocol so that it retains it's decentralised roots. I'm sure a decentralised version can be built into dash. By accepting this proposal, my major concern would be that it stays ("good enough") and a decentralised version never gets implemented.

That's a perfectly fair concern. There is a risk that a successful version of this project could cause the incentive to build protocol support to diminish.

On the other hand, the community supporting this and showing it to work successfully could act as an incentive *to build* it into the protocol, and have proposals like this then use that protocol support underneath.

A large part of this project will be precisely how people interact and support each other. I can imagine the protocol, in the future, providing the decentralised storage and voting mechanism for crowdfunded proposals, and the funding mechanism itself, but not necessarily the UX on top of that. One could see them as stages, where this is the proof of concept (or perhaps you might say proof of community) which later de-risks a decision to build fundamental parts of this into the core protocol once it's seen to work.

Just my off-the-top-of-my-head thoughts! As I said, that's a valid concern and thanks for taking to time to leave that feedback GrandMasterDash. Much appreciated.
 
That's a perfectly fair concern. There is a risk that a successful version of this project could cause the incentive to build protocol support to diminish.

On the other hand, the community supporting this and showing it to work successfully could act as an incentive *to build* it into the protocol, and have proposals like this then use that protocol support underneath.

A large part of this project will be precisely how people interact and support each other. I can imagine the protocol, in the future, providing the decentralised storage and voting mechanism for crowdfunded proposals, and the funding mechanism itself, but not necessarily the UX on top of that. One could see them as stages, where this is the proof of concept (or perhaps you might say proof of community) which later de-risks a decision to build fundamental parts of this into the core protocol once it's seen to work.

Just my off-the-top-of-my-head thoughts! As I said, that's a valid concern and thanks for taking to time to leave that feedback GrandMasterDash. Much appreciated.

Maybe we can make this a proposal of two halves; you work on the front-end / logistics, while core do the back-end. The new governance system is meant to be a lot more flexible and powerful than before, so maybe this is easier than we think. I think it would be worth exploring this with core. I wouldn't mind dash hiring a couple more developers so that work isn't diverted from other activities.
 
Maybe we can make this a proposal of two halves; you work on the front-end / logistics, while core do the back-end. The new governance system is meant to be a lot more flexible and powerful than before, so maybe this is easier than we think. I think it would be worth exploring this with core. I wouldn't mind dash hiring a couple more developers so that work isn't diverted from other activities.
I agree. I'd prefer a services included in the core protocol to be decentralized. However, it seems that core team is swamped with work so we definitely should hire some new developers. Actually, I believe that there should be a team (a subteam of the core team) whose only work would be to implement whatever proposal that is voted by the network and that can be implemented. By not having such a team already, we actually are encouraging the proposal of third party proposition.
 
I agree. I'd prefer a services included in the core protocol to be decentralized. However, it seems that core team is swamped with work so we definitely should hire some new developers. Actually, I believe that there should be a team (a subteam of the core team) whose only work would be to implement whatever proposal that is voted by the network and that can be implemented. By not having such a team already, we actually are encouraging the proposal of third party proposition.

Splitting the proposal would work so long as Core had a plan, and resources, to build out these protocol pieces to support this idea. But a few things occur to me:

- Core are busy on things I personally think are more important right now. This shouldn't take attention away from Evolution's development.

- The specific additions to the protocol and governance objects aren't yet clear. This proposal refers to the first stage I outlined, and it could almost be thought of as an experiment to see how this works and takes shape. I'm not sure we'd build the right protocol extensions now without learning more about the way this should work first.

- In the time it would take to work out how the protocol should be extended to support backends for this sort of project (and possibly others), we could have this out there in the community, growing and showing other cryptos how it's done, and most importantly learning.

So, I'm going to push again on the original proposal as I think getting something done quickly and iterating on it (when Core build these things, or we learn enough to see a different approaches, etc) is the best approach in terms of time, cost and learning.

Thanks for everyone's feedback so far! Very healthy, positive discussion. It's good to see :)
(We're on the Internet, after all.)
 
So, I'm going to push again on the original proposal as I think getting something done quickly and iterating on it (when Core build these things, or we learn enough to see a different approaches, etc) is the best approach in terms of time, cost and learning.
Sorry, I actually didn't finish my thoughts : my comment was to show my agreement to @GrandMasterDash . His reflexion is valid. However yours is too, and if the ideal project would be what GrandMasterDash proposes I will definitely support your proposal as we will be able to learn from your project for when we are ready to take it to the core.
 
I really like the idea of a crowdfunding mechanism, but I don't see the need for funds to actually leave control of the owner until actually pledging support to a project. Why not make it so that a user can enter one or more of his own addresses into their account, which can then be verified by the server as having funds in them. That way users can setup a wallet for themselves specifically for this purpose, while still keeping control over their own funds.

Then when they pledge money to project, they receive a request to transfer payment to a time locked account that automatically pays out the money to the project owner at the end of the time lock if the amount requested has been reached or returns the money to their respective owners automatically if the required funds has not been reached.
 
I really like the idea of a crowdfunding mechanism, but I don't see the need for funds to actually leave control of the owner until actually pledging support to a project. Why not make it so that a user can enter one or more of his own addresses into their account, which can then be verified by the server as having funds in them. That way users can setup a wallet for themselves specifically for this purpose, while still keeping control over their own funds.

Then when they pledge money to project, they receive a request to transfer payment to a time locked account that automatically pays out the money to the project owner at the end of the time lock if the amount requested has been reached or returns the money to their respective owners automatically if the required funds has not been reached.

You would then be trusting they release the funds when needed. This can be done automatically on the blockchain using a time-locked multisig. If the fund doesn't reach it's goal by a certain date, all the funds would be returned automatically.
 
Then when they pledge money to project, they receive a request to transfer payment to a time locked account that automatically pays out the money to the project owner at the end of the time lock if the amount requested has been reached or returns the money to their respective owners automatically if the required funds has not been reached.

This sounds like a more secure solution, although it would be more complex. (Backers would need to sign a message from their address to prove ownership, like proving masternode collateral.)

What I can't picture is how this would work after that. I think you mean that each backer would have to sign A transaction that would only be valid if N other such transactions were signed, or if the amounts add up to M. Is that what you had in mind, and (if so) do you know if what you describe possible in Dash's scripting language? Or is there some other way to do it in a decenetralised manner?
 
This sounds like a more secure solution, although it would be more complex. (Backers would need to sign a message from their address to prove ownership, like proving masternode collateral.)

What I can't picture is how this would work after that. I think you mean that each backer would have to sign A transaction that would only be valid if N other such transactions were signed, or if the amounts add up to M. Is that what you had in mind, and (if so) do you know if what you describe possible in Dash's scripting language? Or is there some other way to do it in a decenetralised manner?

I think GrandMasterDash said it perfectly:

This can be done automatically on the blockchain using a time-locked multisig. If the fund doesn't reach it's goal by a certain date, all the funds would be returned automatically.

So, yes as far as I know this is perfectly possible to do in DASH scripting language. Basically you set the minimum amount of funds needed and the funding time for an address that only exists on the blockchain, so that no one can interfere with it. For example let's say you set one month and 100 DASH. Then when the one month time limit expires, the script that controls the address checks the amount send to the address. If it is more than 100 DASH, it is send to the payment address set by the proposal owner, if the 100 DASH is not reached, all transactions that send money to the address in the first place are reversed. This way it will never be possible to withdraw funds by anyone until either the project is funded and the money is transferred to the project owner or it is not funded and all funds are returned to the people who pledged it.
 
For example let's say you set one month and 100 DASH. Then when the one month time limit expires, the script that controls the address checks the amount send to the address. If it is more than 100 DASH, it is send to the payment address set by the proposal owner, if the 100 DASH is not reached, all transactions that send money to the address in the first place are reversed.

Dash transactions can't be "reversed" as such, so I assume you mean this method involves undoing then with a compensating transaction. I imagine it must work like this: For example, say 5 backers will fund 20 DASH each to make a total of 100 DASH for a proposal. They each send to a P2SH address. The script for the P2SH address says:
  • If the total DASH received is >= 100, it must be spent to a nominated address
  • If the total DASH received is < 100, it must be sent in pieces to an address nominated by each funding transaction
Is this how it would work? I only know the very basics of the Dash Script language, so this is the best I can describe it, and I don't know if the script language supports all the operations necessary for this.
 
Back
Top