Final project for Consensus Blockchain Bootcamp
- Frontend deployed here: https://lparvinsmith.github.io/blockchain-developer-bootcamp-final-project/
- Contract deployed here: https://rinkeby.etherscan.io/address/0xaceb4dab6f366e57c3368584372ea6fa2781522f
- Demo video here: https://drive.google.com/file/d/1N3BNaSCJjGq0yLZaGhKC3AUCUFls9zfh
- Personal ETH Address for NFT: 0xDef9f775b9b2F77aaccd3Caa6A55343f30C28174
Contents
- Retroactive public goods funding
- Directory structure
- Running locally
- Design pattern decisions
- Avoiding common attacks
This project provides a template for communities to come together, establish a common problem, and establish an incentive for entrepreneurs to solve the problem.
Inspired by Vitalik Buterin's talk: "Things that matter outside of defi" (Video, July 21, 2021)
For a large group of people, retrospective decisions are easier than prospective decisions. This allows a large group to agree only on a shared problem, but does not require agreeing on the best solution until after the fact.
The decentralized autonomous organization (DAO) is the contract that establishes the problem and formalizes the community members with voting or administrative power. During the formation of the DAO, members will contribute a buyin and receive one vote. At the end of a specified term, the DAO members will vote on which project was the most valuable.
Project creators can register their projects in the contract until project submissions are closed. Their project pitch and updates would be communicated in an external service like discord. When the voting is complete, the winner will receive the total contract value collected from the voter buyins.
Voters who pay the appropriate buyin receive an NFT which allows them one vote on a candidate. They can sell this NFT if they lose interest in the DAO, and the buyer can assume voting rights.
The voter NFT minted is currently just a unique token with no metadata. In a future iteration, the contract owner would be able to configure a unique design for the NFT to increase the NFT's value as a collectible.
/contracts
: Directory for smart contracts written in Solidity. The Retroactive Funding contract is in contracts/RetroactiveFunding.sol
/migrations
: Directory for scriptable deployment files
/test
: Directory for unit tests to ensure contract code quality
/client
: Directory for React client
Created with Truffle suite. Truffle requires Node v8.9.4 or higher.
Install dependencies with yarn
or npm install
Run locally with truffle develop
Run unit tests with truffle test
Created with Create React App
From the /client directory, run the following commands:
Install dependencies with yarn
(preferred) or npm install
Run locally with yarn start
or npm start