[CCBL] Crowdfunding platform

I. Introduction

There are two ways to get funded for projects in the Secret ecosystem. The first is to apply for a grant (or VC funding), and the other is to make an on-chain proposal. In the first case, the decision is necessarily made by a small number of people, and for the second there is still a high bar that must be met–reaching quorum, etc. The intention of this grant is to build a decentralized crowdfunding platform on Secret Network that is open to anyone to use.

There are a number of smaller/bespoke projects that could be crowdfunded by interested backers, which would not be funded otherwise because they are only of interest to a minority of stakeholders or they are not seen as a central priority for the network. In my opinion, having a way for these projects to still get funded will help create a more vibrant community all around. This would not preclude Secret Labs or the foundation contributing to those projects if they wanted to. In addition to projects that are specifically about Secret Network, this platform will allow for decentralized crowdfunding of projects that are unrelated to Secret Network.

By building on Secret Network the donation amounts from individual users can be kept hidden. A project can request donations be made with SNIP20s (sscrt, silk, etc.). Progress toward funding goals will only be revealed in coarse grained percentages: (50%, 100% funded) so chain analytics cannot be used to figure out individual contributions. The project creator’s address will be public. In theory that could be private as well, but then there is no transparency whatsoever about who you might be funding. Because it is an open source project, if someone wants to run a crowdfunding project completely anonymously then they have the option of putting their own version on chain.

Every project has a public title, public description (that can include linked images, videos online, etc), a private message for people who have pledged money before funding has been completed, and a private message for people who have contributed money after the project is funded. All of this information is stored on the Secret Network chain. Private messages can be used for any special things that the creator of the project wants to share with supporters, e.g. special whitelist codes for NFT badges.

II. Background

I began building a crowdfunding app, called Mage Hands, last year, so some work has already gone into this project, however at the moment it is not being actively developed. With this idea being added to the CCBL list of projects, I’ve decided to complete it. You can read more about what was already done here: Mage Hands - Crowdfunding Dapp. It requires more work before it is ready for release, which I describe in the following section.

One reason I did not continue at the time was due to the complex regulatory space, liability issues around crowdfunding, which frankly I did not want to deal with. If I continue this project, then I will build it to be a permissionless and commission-free platform with fully open-source code. In other words, I do not plan to personally make money off this platform, but I would like to get some funding to support my development time, given the value to the wider community.

Developer Ben Adams (@darwinzero) – associate professor of computer science, developer of Fardels and contributor to other Secret Network projects. darwinzer0 (Ben Adams) · GitHub

III. Timeline, Milestones & KPIs

Deliverables

Contract:

  • Update existing codebase to CosmWasm 1.0 + newer query permit functions.
  • Implement a receive interface for SNIP20 payments, and query interfaces for coarse-grained funding goals.
  • Deadman switch – if a successfully funded project is not paid out after a given block, then it reverts to not funded status and contributors can pull their money out.

Frontend:

  • SecretJS based integration tests.
  • Basic but fully functional UI written in Svelte (a minimal UI is halfway there but it requires some code-refactoring, update to newer version of SecretJS, etc).

Note: there are many frontend features that would be nice to have, but are out-of-scope, e.g. a search interface for public project information, which would require some kind of off-chain indexing.

Community testing:

  • Release on Pulsar testnet (post-Shockwave Delta update).
  • Gathering of feedback / bug fixes.

Documentation (e.g. Gitbook):

  • Basic tutorial on how to use the platform.
  • Detailed information on all the message types on the platform, so that e.g. other devs can create their own frontends, command line scripts, etc.

Timeline / Milestones

I will work on this project part-time (10 hrs/wk).

Week 1-2:

  • Contract code updates (5 hrs), receive interface + query (5 hrs), and deadman switch (6 hrs). Integration tests (4 hrs).
  • KPI 1: Successful compilation and upload to Shockwave Delta local dev testnet (with SecretJS)
  • KPI 2: Successful SecretJS integration test of SSCRT receive and deadman switch

Week 3-4:

  • Front-end dev (16 hrs). Integration tests (4 hrs)
  • KPI3: Completion of integration tests for all message interfaces
  • KPI4: A user interface that supports creating a new project, viewing existing projects (including current and past), and contributing to a project.

Week 5-6:

  • Release contract on Pulsar and setup testnet website (4 hrs). Documentation and tutorials (16 hrs).
  • KPI5: A working version is on testnet and users can successfully complete the tutorial.

I will post on KPIs on the SN forum.

After this grant is completed, the contract should be ready to release on mainnet. The UI will be open source, so anyone in the community will be able to extend it as they see fit.

IV. Budget

  • SCRT 2000, nominal amount for prior work on this idea last year
  • 60 hours developer time x $USD 150/hr = $USD 9000 equivalent in SCRT. Current price @ $1.20 = SCRT 7500.

Total: SCRT 9500

This hourly rate is lower than my normal contract rate but seems to be in line with other grants. For open source development I am happy to do a discounted rate.

Note, this funding does not include an external audit of the contracts. If the CCBL wants this added, then it will be in addition to the listed budget.

I would be happy to discuss any details of this proposal. Unfortunately it is hard for me to attend the normal governance meetings because they are held in the middle of the night in my time zone, but I can review any recommendations and respond in the forums or another meeting time.

12 Likes

I support this. We have a team building a SNIP20 tipbot at the moment that is kind of too small a project to apply for a grant, and also don’t want to deal with going on chain. Yet the product will bring a tonne of user engagement & retention to our channels.

I hope you get funded & if you do, keep in touch with the projects progress as you go into testnet. Secret Agents would love to help you get the product ready for market. :slight_smile:

5 Likes

Thinking I also need to add an upvote / downvote feature (a contribution is also an implicit upvote). As a permissionless platform people should be able to post whatever they want, which of course invites the possibility of spam. But if there is a simple way for community members to register downvotes, then the UI can flag that or take that into account when ordering the search results.

This is pretty easy to do, so does not require an update to the budgeted time.

4 Likes

I like this prop in general, but there are some things that I think should be addressed.

The hourly rate seems a bit high given the current market conditions, the dev committee members cut down their costs to 85$/h. Also how are the 2000 SCRT justified? A bit more breakdown for it is fine :slight_smile: .

Also when do you plan to open source the contract code, when the project is done or now ?

1 Like

just as a small note, Dev committee does mainly non-dev work which requires a dev-brain. this will be like 90% development work it seems.

2 Likes

Thanks for the feedback! I’m not sure why market conditions should make a difference (you want to pay people who stick around during the bear market, not penalise them), but personally this project would not be worth my time at that pay rate. My normal rate for contract work, ML work, expert reports for funding etc, tends to run a fair bit higher, so this is already lower than that.

The 2000 SCRT is for the work I did previously (see the other forum post linked above)-- considering the time already spent, then the actual hourly rate is much lower than what I listed. The github repo is already open: GitHub - darwinzer0/mage-hands: Mage hands secret network crowdfunding dApp

Still, perhaps this is higher than normal for the network for dev work? All I can say is that I have years of experience and I work fast–so I could extend the hours, work slower and get paid a lower rate but I think that’s a waste of everyone’s time. :wink:

I guess I would suggest that rather than focusing on hourly rates for dev work, instead the question people should ask is what value does a crowdfunding platform bring to the network? If you think ~$10000-12000 is reasonable (which I think it is) then I would support it. But I am curious to hear others’ opinions. If the consensus seems to be that the amount should be significantly lower, then I will probably just pass on this and someone else can build off my repo if they want.

5 Likes

agreed with all of this. being annoyed about the lack of devs with one hand and only offering them 85$ an hour for contract work on the other is not a great look

3 Likes

Hey Ben! I’m the lead over at the biz dev committee, and I personally love this idea. Regardless of whether the proposal passes or not, I’d love to speak with you since we’re looking to do something very similar. So I’d be happy to work with you on this proposal (or another one) if it might help. Can you please send me a direct message on telegram if you’re able at @DanScrtNetwork ? Would love to speak further. Great stuff!

1 Like

I have had some conversations about this proposal. Currently as it is scoped, this is a kickstarter-style crowdfunding application designed as a free resource for the community. In other words, people make donations to projects that they like and want to support. There is a mechanism for the creator to share special content with the contributors in the form of a hidden message encrypted on chain. This allows for the creator to give back to the contributors.

However, this does not have in scope any method to establish a DAO through the crowdfunding process. This can be done after the fact, of course, but the funds are paid once the funding limit has been met. The platform will not mint SNIP-20s or NFTs for the contributors which would allow them to participate in governance.

My question here is whether that is something that people would like to have? Doing that would require me to spend a little more time figuring out the development requirements and update the budget.

2 Likes

Personally I’m fine with this rate given the qualifications of the proposer.

I’m not a big fan of the 2000 scrt backpay but ultimately 10k usd for a functioning kickstarter platform that will be open source seems like a fair price tag.

1 Like

Ok I see your argument :slightly_smiling_face:

As to a DAO or any SNIP-20 token/NFT: Not every platform needs a DAO or it’s own SNIP-20 Token, see stashh for example. I wouldn’t fund just another token or NFT project with it.

1 Like

Yeah, it is an idea that has been proposed to me, and I am just trying to understand the demand and figure out if it is something that people would use. It is the kind of thing that doesn’t make sense in many cases, and it would be optional. But if there’s a demand then I could update the work plan accordingly.

The only feedback I have, which imho, isn’t small.

Is that the product is a bare minimum skeleton of a Kickstarter like application.

There are no milestones, no stretch goals, and no infrastructure to transfer these rewards (digital copy / sound tracks / physical product / etc).

So really, it is more like a lobby platform. Where people lobby for donations. I doubt whether such an app will succeed (success measured by successfully funded projects).

I would be more enthusiastic if the ask was twice as high, but the output was more something like Kickstarter.

1 Like

Thanks for the excellent feedback, Stefan. Definitely a good idea to add milestones/stretch goals.

Adding in infrastructure to share digital files with contributors is definitely do-able. I have already a similar set up for Fardels that could be adapted for storing encrypted files on an IPFS node. I could include cost for a pinning service in the grant (for some reasonable amount of ongoing cost, e.g. a year). Probably a better alternative would be to use Jackal but I don’t know what their release timeline is and when they will have app integration working, so I am hesitant to put a milestone around that.

I’m not sure what you had in mind with regard to physical products–certainly adding a way for contributors to share a mailing address with a creator is easy. Integrating with a shipping API or something like that is likely to be out of scope because then we are getting into the space of more ongoing costs.

I’ll re-work the deliverables and budget based on all the feedback I’ve gotten so far, and post the update here.

1 Like

Taking into account the feature requests from others (here and in DMs), I have updated the deliverables and budget for this proposal as follows. I acknowledge that a couple of people have questioned paying for prior work, however I looked at past examples and it is not unprecedented to ask for backpay on community spend proposals, so I plan to keep that. I’ll wait another 3 days at least for more comments before putting anything on chain. Many thanks to everyone who has contributed to the discussion so far.

The main changes involve adding in reward structures as well as other ways to interact with the projects. These changes are significant in terms of the time involved, so the hours have been doubled. I have an estimate of what the amount would be below, but I’ll base the spend proposal on the price the day it goes on chain.

I am still basing the work plan on 10 hrs/wk, so the length of the project is now longer (3 months). That is a conservative estimate–I want to make sure that it is a time commitment that I can guarantee but it is possible that I might be able to spend more time per wk and the delivery time could be sooner.

III. Timeline, Milestones & KPIs

Deliverables

Contract:

  • Update existing codebase to CosmWasm 1.0 + newer query permit functions.

  • Implement a receive interface for SNIP20 payments, and query interfaces for coarse-grained funding goals.

  • Deadman switch – if a successfully funded project is not paid out after a given block, then it reverts to not funded status and contributors can pull their money out.

  • Add ability for creator to add “stretch goals” to a project, essentially appending the project description after the project has started fundraising

  • Add ability for anyone to flag spam/scam for a project, counts stored on chain.

  • Add ability for anyone to make short comments on projects, stored on chain.

  • Allow creator to set one or more reward bands by saving reward information on chain (private message, CID and key for encrypted data). This information will be accessible to contributors if the funding is successful. A creator can mark a reward as a physical reward–users contributing in that reward band can also set their address on chain (viewable only to the creator upon successful fundraising).

  • Allow creator to set a SNIP24 token reward, with set total supply, % for creator(s), % for funders (proportional to contribution amount). This is a reference implementation SNIP-24. Anything else needing a custom SNIP-24 (e.g. vesting) should really be developed for the purpose at hand. This is essentially equity crowdfunding, so any creators wanting to use this feature will need to make sure they are following local laws.

Frontend:

  • SecretJS based integration tests.

  • Basic but fully functional UI written in Svelte (a minimal UI is halfway there but it requires some code-refactoring, update to newer version of SecretJS, etc).

  • “New project” flow will need to be a multi-page form to handle more information.

Note: there are many frontend features that would be nice to have, but are out-of-scope, e.g. a search interface for public project information, which would require some kind of off-chain indexing.

Community testing:

  • Release on Pulsar testnet (post-Shockwave Delta update).

  • Gathering of feedback / bug fixes.

Documentation (e.g. Gitbook):

  • Basic tutorial on how to use the platform.

  • Detailed information on all the message types on the platform, so that e.g. other devs can create their own frontends, command line scripts, etc.

Timeline / Milestones

I will work on this project part-time (10 hrs/wk).

Week 1-2:

  • Contract code updates (5 hrs), receive interface + query (5 hrs), and deadman switch (6 hrs). Integration tests (4 hrs).

  • KPI 1: Successful compilation and upload to Shockwave Delta local dev testnet (with SecretJS)

  • KPI 2: Successful SecretJS integration test of SSCRT receive and deadman switch

Week 3-4:

  • Implement spam flag, commenting, “stretch goal”/description editing with integration tests (15 hrs). Begin reward mechanisms (5 hrs).

  • KPI 3: Successful test of flagging spam, commenting, and editing content.

Week 5-6:

  • Complete reward mechanisms in contract: 1. storage and logic to give access based on funding level, and 2. instantiation of SNIP24 based on set parameters.

  • KPI 4: Successful test of crowdfunding with different rewards visible to accounts based on funding levels.

  • KPI 5: Successful test of SNIP24 instantiation on successful funding

  • KPI 6: Completion of integration tests for all other message interfaces, including correct error handling.

Week 7-10:

  • UI design for project creation flow and project interaction (multipage project creation, funding, commenting, accessing rewards…) (16 hrs). Additional front-end dev /testing including integration of reward file storage with IPFS pinning (or possibly JKL if it is ready) (24 hrs).

  • KPI 7: A user interface that supports creating a new project, viewing existing projects (including current and past), and contributing to a project.

  • KPI 8: Can successfully create tiered rewards for a new project, pin encrypted files, and other users can fund and view rewards.

Week 11-12:

  • Release contract on Pulsar and setup testnet website (4 hrs). Documentation and tutorials (16 hrs).

  • KPI 9: A working version is on testnet and users can successfully complete the tutorial.

IV. Budget

  • SCRT 2000, nominal amount for prior work on this idea last year

  • 120 hours developer time x $USD 150/hr = $USD 18000 equivalent in SCRT. Current price @ $1.19 = SCRT 15126.

Total: 17126 * 1.1 (volatility buffer) = SCRT 18839. (I added the volatility buffer after reading this: How to Participate in Secret Governance | by Secret Network | Medium)

3 Likes

I’m personally not interested in allocating startup capital to dapps that lack detailed plans for self-sustainability and continuous innovation.

History suggests that the industry moves too fast for these ‘once-and-done’ projects to move the needle.

2 Likes

Thanks for the feedback, Winston. In my opinion, there are many, many services that could exist on secret network which would benefit the entire community that 1) developers do not want to develop without some compensation, but 2) are services that should be free for anyone to use. No reflection on the product itself, but black box is a perfect example: there is absolutely no reason why that service should cost users money. Once the contract is written there are no running costs.

This is a project that was identified as part of the Community Curated Bounty List, and I have indeed framed it as a utility rather than a startup. Many of the projects listed on CCBL are one-off improvements for the community. I have no idea who proposed this particular idea to the bounty list, perhaps they could explain their intent? But anyway I guess I will leave it up to the community to decide if it is a useful use of funds. There is interest from biz dev about this idea so if it fails in this form then perhaps it can be reformulated as something that costs people money to use.

2 Likes

In my view, the cost might not be apparent because it exists as the opportunity cost from funding the same concept but with a sustainable business model.

I agree that I take less issue with this particular proposal and more the premise behind the CCBL’s. Tragedy of the commons seems all too likely.

1 Like

They are not mutually exclusive–everything developed in this project (contract and front-end user interface) will be open source and can be built on by anyone, including for commercial purposes.

I think the real cost is that no one will ever build it, because really this is a tool designed to bootstrap the community. We want to create an environment on secret network where a much wider and heterogeneous variety of projects can be funded by interested parties. Picking winners by majority vote is not really the best approach in my opinion. We want more smaller but creative builders to use private compute in ways that aren’t just about rebuilding what is on every other network.

3 Likes

Makes sense, I’m good with that explanation.