niklr / crowdmint

Decentralized crowdfunding powered by Nervos Network

Home Page:https://niklr.github.io/crowdmint/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CrowdMINT

Decentralized crowdfunding on Nervos Network.

CrowdMINT logo

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.

Table of Content:

Demo

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:

Architecture

CrowdMINT architecture

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).

Roadmap

2021.Q4

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

2022.Q1

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

2022.Q2

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

2022.Q3

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

Setup

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

Setup Godwoken Network in MetaMask

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>

Create a Godwoken Account by Making a Layer 2 Deposit

https://github.com/Kuzirashi/gw-gitcoin-instruction/blob/master/src/component-tutorials/4.layer2.deposit.md

Impressions

CrowdMINT impression 1

CrowdMINT impression 2

CrowdMINT impression 3

About

Decentralized crowdfunding powered by Nervos Network

https://niklr.github.io/crowdmint/


Languages

Language:TypeScript 96.4%Language:Solidity 3.1%Language:HTML 0.4%Language:JavaScript 0.1%Language:Batchfile 0.0%