Decentralized crowdfunding on Nervos Network.
CrowdMINT is a blockchain based solution leveraging NFTs to crowdfund community projects.
The developed smart contracts support both the fixed AON (All-Or-Nothing) and the flexible KIA (Keep-It-All) crowdfunding models. A big advantage of smart contracts is most of the fees known from conventional crowdfunding platforms are eliminated. However, possible business uses cases could involve a small fee when creating projects or after successful campaigns, directly programmed into the smart contract.
Typical crowdfunding campaigns offer rewards to contributors for specific amounts. On top of that, CrowdMINT plans to leverage NFTs to incentivize funders. By choosing this option, the amount above the funding goal will be distributed to the holders of minted NFTs and based on the percentage defined by the campaign creator.
Example:
- Funding goal was set to 100'000 CKB and reached 500'000 CKB
- 50% of the amount above goal will be distributed to eligible funders
- NFT minting was limited to 100 with a unit price of 1'000 CKB
- Funder A minted 2 NFTs
- Funder B minted 10 NFTs
Both funders A and B not only contributed to make this crowdfunding project a success but also get a ROI.
- 50% of 400'000 CKB = 200'000 CKB is distributed among eligible funders
- Funder A gets 2% of 200'000 CKB = 4'000 CKB (2'000 CKB profit)
- Funder B gets 10% of 200'000 CKB = 20'000 CKB (10'000 CKB profit)
A decentralized crowdfunding solution such as CrowdMINT could have a great impact on the community leading to a higher number of successful projects started on Nervos.
Video Walkthrough: https://youtu.be/s-3PJrl0gQQ
Live Demo: https://niklr.github.io/crowdmint/
Before accessing the live demo, please make sure to complete the following steps:
The contracts can be found in the contracts folder. They are built using Solidity in combination with Hardhat.
The workers can be found in the workers folder. They are built using TypeScript and run as part of GitHub Actions. Pinata was selected in order to pin data hosted on IPFS. Whenever a project gets created or updated, the worker will detect and handle the events initiated by the smart contract.
The frontend can be found in the client folder. It is built using React and GraphQL in combination with TypeScript. For design & layout purposes the Material UI framework has been chosen.
All components are using Polyjuice Provider to interact with Nervos Layer 2 (Godwoken).
Alpha release on Nervos Layer 2 Godwoken Testnet with the focus on functionalities for a minimum viable product.
- Start new projects as a creator
- Contribute to projects as an individual
- Withdraw as a creator or individual
Implement ERC-721 Non-Fungible Token standard.
- Enable project creators to leverage NFTs to incentivize funders
- Mint project NFTs and collect NFT rewards as an individual
- Beta release on Nervos Layer 2 Godwoken Testnet
Public release on Nervos Layer 2 Godwoken Mainnet.
- Security audit of smart contracts
- Integrate The Graph to improve querying performance
- Automatized social media promotion covering trending projects
Airdrop governance token which allows token holders to help shape the future of CrowdMINT.
Establish DAO to decentralize the decision-making process:
- Approve new projects and vote-based promotion on start page
- Flag misconducting users to be suspended or banned
The setup is split into 3 parts; contracts, workers and client. All parts require Node v14+ and Yarn to be installed.
To install all dependencies just run the following command in the folder containing this README:
yarn install-all
https://github.com/Kuzirashi/gw-gitcoin-instruction/blob/master/src/tasks/7.port.eth.dapp.md
Godwoken Testnet
Network Name: Godwoken Testnet RPC URL: https://godwoken-testnet-web3-rpc.ckbapp.dev Chain ID: 71393 Currency Symbol: <Leave Empty> Block Explorer URL: <Leave Empty>
Godwoken Devnet
Network Name: Godwoken Devnet RPC URL: http://localhost:8024 Chain ID: 1024777 Currency Symbol: <Leave Empty> Block Explorer URL: <Leave Empty>