Too many NFT investors are being scammed. The founders come up with an elaborate roadmap and raise millions of dollars, but then they withdraw the money and disappear when minting is finished. The community is left with nothing. The NFTDAO contract we've designed combines the best features of an ERC721 collection and a DAO. The money raised from mint is held in the treasury and can only be withdrawn when the community allocates funds to the owners. If the mint sell out raises 1 million, the community may decide to give 100k to the founder and keep the rest in the treasury. If the founder executes the roadmap and needs more money to do so, the community can release more funds. Every NFT holder is entitled to 1 vote. The founder sets the voting threshold and the proposal threshold, which says how many NFTs you must hold to create a proposal, and how many total votes are needed for a proposal to be considered. For example, if only 2 people vote, the proposal won't pass. Every proposal is valid for a week and passes if there's more yes votes than no votes. For every proposal, the user who submitted the proposal enters how much the owner should receive, and provided a description of why they will receive the money. This description is saved in IPFS. We've set the app up as a Factory, this way users can easily take advantage of this project and begin using it right away. We have a discovery page that allows you to see other NFTDAOs and track their progress.

NFTDAO Factory showcase

How it's made

We used Solidity, Remix, Web.js, Github, Covalent API, Covalent Replit templates. The home page of our app is an interface using web3.js and hosted on github. This is how the user interacts with the factory. We deployed on the mumbai test net because the Covalent API doesn't support Eth Ropsten, and we wanted to use their API for this project. We use our Infura URL for the RPC connection. The Covalent Event Logs API returns different events the user takes in the life cycle of the NFTDAO -- mint, create proposal, vote, and execute proposal and send money to the owner. We kept the app static so that we could focus on interacting with the blockchain without using react. We're most proud of learning how to build a Factory contract. This is something we've always wondered about and now we understand this more clearly. It's a useful tool because we've been paid to help people launch collections, and now we can automate this and take a fee.