Quick Brief
DAO creation and governance using soulbound, self-destructing NFTs that track working groups, voting power, and organization affiliation. Allows for the creation of a private DAO model that no longer depends on community demand for the strength of its treasury & governance: ideal for universities, nonprofits, and corporations looking to explore the DAO model.
About the project/What it does
Populus is an end-to-end DAO creation platform, built with initial functionality in DAO creation & membership NFT minting, as well as off-chain governance, with plans to implement on-chain governance and other features in the future. We hope Populus can provide a viable alternative for many of the DAO tooling solutions that exist today—it's ideal for universities, nonprofits, and private corporations.
How it works:
When a user accesses the portal and connects their wallet, Populus checks the user's wallet to see if the user has NFT's associated with Populus DAOs, and also checks against the internal Populus database to see if any of the user's multisig partners have already added the user's DAO to Populus.
If the user is not associated with an existing Populus DAO, they are prompted to create their own by connecting a Gnosis Safe multisig (which automatically checks that they are a signatory and stores the other signatories so they too can access the DAO) and adding a name for their DAO.
A user can access the DAOs they own and create working groups (ex. core team, ext governance, consulting team, research team, etc.) and add members to the DAO and working groups via member addresses, also assigning leadership roles. DAO creators can also assign voting power to different roles. Once this process is complete, membership NFTs that store all these attributes are automatically airdropped to user addresses. NFT-membership owners can now log into the portal and see these attributes and their NFT.
3.1: Membership NFTs are soulbound, which means they are non-transferrable because the default transfer function for ERC-721 has been overridden. This prevents external individuals from buying up membership NFTs and gaining access to internal organization management.
3.2: Membership NFTs self-destruct (burn themselves) upon the termination of a user's contract, which is set by the DAO creator and is an attribute of the NFT. This enables, for example, university students to be automatically removed from the DAO upon graduation.
4 . (Planned) Membership NFT-holders will be able to log onto the platform and access widgets that allow them to create and vote for proposals on-chain, with those votes automatically executed by the DAO multisig upon completion. Other planned features include a fee system that allows Chicago DAO to profit from each use of the Populus platform, more customizable working groups and roles, and reverse-compatibility with the governance token standard.
Inspiration
There were a number of factors that inspired the Populus project. First and foremost, our own personal experiences. We’re building ChicagoDAO (chicagodao.io) a community at the University of Chicago that is combining the undergraduate and graduate schools in an effort to expand access to blockchain opportunities. We realized that a token-based governance system wouldn’t work for us, because we’re a closed community and, analogous to a “private company” as opposed to a “public company,” we didn’t want governance/treasury power for our DAO to be influenced by external players. In addition, we talked to folks at SyndicateDAO, who realized a governance token system didn’t work for them for similar reasons, and switched to an NFT-based system. Members of our team have done extensive research on the DAO tooling space (https://www.alchemy.com/overviews/so-you-want-to-start-a-dao) and we realized that there was a gap in the market for an NFT-based DAO tooling solution. Upon brainstorming ways that we could adapt the ERC-721 system to work for our use-cases (soulbound, self-destructing), Populus was born.
How we built it
Populus was built as a full stack application, using Reactjs, AWS, Piñata, and EVM. On the frontend, there is a well developed reactjs app using the latest web3 tools to create a friendly and usable interface for our users.
On the backend, we created 4 different api endpoints to manage various aspects of the product, from managing working groups, to consolidating images.
On the EVM, we wrote contracts in Solidity and deployed via Hardhat, using Alchemy’s platform for hosting, analytics, NFT data, and troubleshooting. The ERC-721 functions we called were based upon OpenZeppelin’s contract libraries. We used both ethers.js and web3.js in different parts of our project to access and deploy Solidity-native functions.
UI/Design
Our UI was designed using sketches at first to conceptualize the ux flow of the user. Because there were many different type of user with different levels of access, we had to design our ui for this for the beginning, and asked other members of our school for what they thought about our sketches.
Challenges we ran into
The biggest challenge we ran into was having no solidity experience and also lack of manpower. As two beginners and a two person team, we worked all night and day to complete our project with very little sleep (gm). It was difficult to manage our time but we were able to create our MVP and learned so much. We are excited to continue to build our project!
Accomplishments that I'm proud of/What we learned
We are proud of all the solidity knowledge we gained. We also learned how to develop with web3 on the frontend which was a new thing for both of us! We also learned how to make soul bound NFTs from scratch and learned about how metadata on NFTs work.
What's next for this project.
While we were able to create our MVP, we want to implement one of the most important parts of DAO tooling into our product, which is a voting system for both internal and external governance (with the NFT system we created)
Built With
- alchemyapi
- amazon-dynamodb
- amazon-web-services
- erc-721
- hardhat
- ipfs
- lambda
- open-zeppelin
- opensea
- pinata
- react
- solidity
- web3
Log in or sign up for Devpost to join the conversation.