Skip to content

Instantly share code, notes, and snippets.

@nphsu
Created January 4, 2022 07:15
Show Gist options
  • Save nphsu/b7b13f0ae74fa12c657b8a969f694037 to your computer and use it in GitHub Desktop.
Save nphsu/b7b13f0ae74fa12c657b8a969f694037 to your computer and use it in GitHub Desktop.
Crowdfundr Spec

Specifications

Day1 Requirements

Build a smart contract that allows creators to register their projects. Other people can contribute ETH to that project. Once the goal has been met, the creators can withdraw the funds. When someone contributes 1 ETH, they receive a contributor badge NFT, which is tradable.

Specs that is my understanding

  • Anyone can launch a project to raise funds by ETH.
    • cannot be funded with any ERC20s.
    • can launch projects multiple times as another project.
  • Anyone can pay ETH to any projects.
    • can contribute any amount
    • can pay multiple times to the same project. (more than 2 times)
    • cannot pay to a project that is already meet its goal.
  • Anyone can get a contributor badge NFT if the value is over 1ETH (>= 1ETH).
    • cannot get the NFT if the value is under the 1ETH. (< 1ETH)
    • can get the same NFT no matter how much they pay as long as it is more than 1 ETH (>= 1ETH).

Questions to non-technical client

  • I would like to clarify the definition of meeting a goal for a project. I think we should require at least two parameters to create a project. It would be graet if you could prioritize the two below.
    1. Target Amount: A creator can withdraw the fund after meeting the target amount. For instance, if the creator sets 3ETH as the target amount and the cumulative amount is over the 3ETH, then the creator can withdraw the fund.
    2. Deadline: A project will be finished and no one can contribute to the project more after the deadline.
    • Q1: Are those two necessary for this project?
    • Q2: If those two are required, how do we prioritize? For instance, if a project meets the target amount before the deadline, can they contribute to the project more in addition until the deadline? Otherwise, we can stop any more contributions right after meeting the target amount.
  • I would like to clarify the flow when failing a project.
    • Q3: What is the definition of failure? It seems reasonable to consider it as a failure if the target amount is not collected by the deadline. Am I correct?
    • Q4: I think we should refund all amount to the contributors when failing. Am I correct?
    • Q5: I think contributors to the failure projects should not get NFTs. In that case, we should hand out NFTs after meeting a goal of the project. Is that okay?
  • I would like to ask you a usage fee on the protocol.
    • Q6: How much do you plan to set the usage fee?
    • Q7: Is there any problem with the timing of collecting the usage fee when the creator withdraws the fund?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment