project screenshot 1
project screenshot 2
project screenshot 3
project screenshot 4
project screenshot 5
project screenshot 6

CrowdCaster

CrowdCaster is a decentralized crowdfunding plaform powered by Farcaster's frames

CrowdCaster

Created At

Superhack 2024

Winner of

Blockscout - Use Blockscout Block Explorer!

Prize Pool

Project Description

CrowdCaster's contract contains a pool of funds that can be filled up by people interested in funding a project. Once the funding goal has been reached and the campaign deadline has met, the owner of the contract can retrieve the funds and use them to develop the project. If the goal hasn't been reached or an investor did change their mind, there's also a button to ask for a refund (which is only eligible if the campaign is not over). This campaign can be sponsored via WarpCast using the frames, I developed a PoC using frames.js. I did also publish the project on the DAppscout marketplace. I also made a more complex version of the contract, a simple DAO, to fulfill Celo's challenge requirements, more details on this in the next form.

How it's Made

FRAME & SIMPLE SMART CONTRACT: The frame has some simple slides that can be read, to gather a description of the project. The project can then be funded by specifying the WEI amount. In case of any lack of trust for the project's owner, that amount can be refunded any time before the crowdfunding campaign will be over. Before funding, the frame will also display the current state of the crowdfunding campaign (how much money has been raised vs goal) this data is gotten via the BlockScout API. Contract: https://github.com/0xDorcoPio/CrowdCaster/blob/master/contracts/CrowdCaster.sol Frames: https://github.com/0xDorcoPio/crowdcaster-frames

CELO SMART CONTRACT: The smart contract I did develop for Celo is more complex than the other one, in fact I just can show how it works on the Remix IDE, since I didn't have enough time to develop a Frame complex enough to handle it. The idea behind is that I don't want a scammer who's able to convince people through a good presentation, to be able to runaway with all the money that was raised. That's why I developed this simple DAO that works as follows:

  1. A campaign is created (ie. the contract is deployed)
  2. Investors can contribute to the project making a transaction to the smart contract
  3. If the campaign is over and the goal is not reached, the money is refunded
  4. If the campaign is over and the goal is reached, the owner is not able to collect all the money, to do so (s)he has to create a withdrawal request by calling a method and specifying the desired amount.
  5. Investors can vote yes or no if they think the justification provided by the owner is fine or not (this justification is going to be shared elsewhere than in the contract, I didn't want to waste BlockChain's memory for attachments).
  6. The voting power of an investor is based on how much money they did invest, so if for example the withdrawal request is for 50 and two investors join putting 10 and 40 each, then no other quorum is needed.
  7. In case the investors don't vote within a specified amount of time, I assumed that they don't care about their investment, so the money will be eventually released. This timeout can be specified and I think it's really important since it should not be the bottleneck which slows down the crowdfunding campaign.
  8. If the majority of the investors did vote for "no", the withdrawal request will be deleted and the owner will have to create a new one with a better justification. Contract: https://github.com/0xDorcoPio/CrowdCaster/blob/master/contracts/Crowd2.sol
background image mobile

Join the mailing list

Get the latest news and updates