Description

The objective of this project was to innovate on the current crowdfunding model and utilize new technology to create mutual trust. Currently crowdfunding generates large sums of money, all of which I'd assume is paid in a lump sum. If the project owner was a poor financial planner or a malicious actor, they could take all the money and not adhere to the roadmap they presented to entice people into donating to their campaign. By leveraging programmable money, I aimed to create an application that would incentivize delivery of one's goals and objectives, while also lowering the risk for investors. Although rough around the edges, I hope my submission demonstrates the spirit of the idea. My application allows for users to create campaigns with a collection end date and a maturity date (the date they will have received all funds by). By using Superfluid's money stream technology, my application distributes the money at a flow rate derived from a maturity date, the date the campaign stops collecting funds, and the total amount of funds collected so that the owner of the campaign will receive their rewards gradually but by the date they require them. Once that date is reached the owner will stop receiving funds. However, if a project is successfully backed but the campaign owner is failing to deliver on their promises or failing to provide sufficient updates to their community before all funds are streamed, any person who participated in the campaign can initiate a vote to end the stream and return the remaining funds back to the supporters. By gradually delivering the funds, there is still a chance to recover any money if the campaign owner is a bad actor. As well, by giving this layer of governance to the supporters the campaign owners are more incentivized to give regular updates and work hard to abide by their original schedule.

Fundmatic showcase

How it's made

I started by writing my contract in Solidity, using the Open Zeppelin Library for certain utilities like counters. I also used Superfluid's and Chainlink's libraries to build in my functionality, As I heavily relied on Superfluid for the core functionality of this project. However, this project would not have been feasible without the ability to automate the creation or deletion of flows using the Keeper Network. I actually had a lot of fun figuring out how to calculate the right flows and how to set up the automations to work correctly once I got past the learning curve with Superfluild. My preferred development environment was Hardhat. For the front end I used Vue.js. I was actually very pleased with how much I accomplished by the end, even though I did not fully complete my project. I ran out of time to implement the redistribution logic for when campaigns end, and there were several other features I wanted to implement but was not skilled enough to accomplish before the deadline. However, I only started learning how to really build things a couple months ago, and this is the first time I have build something this complex from scratch. I would like to continue to work on this and further develop it, as I would like to see how effective it is in a real-world usecase.