ETHGlobalDAO brings the community of in-person ETH Global hackathons to the blockchain with dynamic NFTs and engaging DAO proposals.
ETHGlobalDAO combines the community of in-person hackathon events hosted by ETH Global with the properties of web3 DAO "communities" by gamifying the hackathon experience through dynamically generated NFTs. A DAO represents a community, and as such, ETHGlobalDAO represents the collection of people who are attending this weekends hackathon. Each participant is able to mint a dynamic NFT, gaining them access to the DAO. In this case, the dynamic NFT was the ETH logo and users had to enter a number representing their price prediction of ETH at the conclusion of the hackathon. This dynamic data would then be stored on-chain - allowing all participants to see each other’s engagement. Once a prediction is made and the NFT is minted then hackers can participate in voting on the DAO proposals. In this case, the proposal was a multiple choice question concerning whether the most accurate predictor should receive all the staked ETH! The idea is that the proposals should be relevant to the NFT in some way, thus generating engagement through some form of game theory. With this DAO structure, ETHGlobal can create a custom DAO for each hackathon it will host in the future, perhaps even allowing participants to vote on how the hackathon staked ETH should be distributed - likely depending on some short of competition running only for the duration of the hackathon.
This project uses a number of technologies. First of all, the dynamic NFTs are all stored on IPFS/Pinata. At the beginning of the hackathon I struggled for several hours trying to figure out how to make the NFTs "dynamic" - i.e. allowing them to be associated with metadata individual to each holder, whilst still pointing to the correct image file. After many trials and errors I finally figured out that it should simply be stored on-chain in a smart contract and not in a metadata json file. Duh! This is where Polygon comes in. All smart contracts used in this project were deployed and tested there, on the Mumbai testnet. Smart contract deployment was aided by Hardhat. On the frontend, in order to interact with the smart contracts a number of web3 technologies were used together in addition to Nextjs. Ethers was used in creating the necessary JS representation of the smart contracts to allow Metamask wallets to interact with it. Infrastructure connection, to allow necessary testnet nodes to be reached and to query and perform smart contract operation, both Alchemy and Moralis were used.
My most hacky moment of this hackathon was at the beginning, when I thought that I could trick Pinata into thinking I was uploading the same folder (thus preventing it from generating a different URI) by emulating a file system. Needless to say it did not work out!