A DAO framework built with Open Zeppelin’s Governor contract in combination with NFTs.
Since v0.10.0, Gov is using non-tranferable membership NFTs (“SBTs”), it is also timestamp-based by default.
Provide a coordination tool that fits the needs of regular users.
pnpm install
pnpm test
Create a .env on the model of .env.template:
cp .env.template .env
.env filedao.config.ts file (optional)pnpm bal
pnpm deploy:sepolia
Then you can add your DAO in Tally and/or spin up your own interface using Gov UI.
Here are the differences between the Governor/ERC-721 implementations suggested by Open Zeppelin and ours:
The following function is onlyGovernance, meaning it can only be triggered by a vote.
setManifesto() updates the CID.The following functions are onlyOwner, and since the NFT contract ownership is transferred to the Gov contract, they can only be triggered by a vote.
safeMint() adds a new member.govBurn() bans a member.setMetadata() changes the tokenURI of a given NFT ID.| Network | Chain ID | Documentation |
|---|---|---|
| Optimism Mainnet | 10 | Documentation |
| Base Mainnet | 8453 | Documentation |
| Arbitrum One | 42161 | Documentation |
| Sepolia Testnet | 11155111 | Documentation |
| OP Sepolia Testnet | 11155420 | Documentation |
| Base Sepolia Testnet | 84532 | Documentation |
| Arbitrum Sepolia | 421614 | Documentation |
| Network | Explorer URL | API URL | API Key Variable |
|---|---|---|---|
| Optimism | https://optimistic.etherscan.io | https://api-optimistic.etherscan.io/api | OP_ETHERSCAN_API_KEY |
| Base | https://basescan.org | https://api.basescan.org/api | BASE_ETHERSCAN_API_KEY |
| Arbitrum One | https://arbiscan.io | https://api.arbiscan.io/api | ARBITRUM_ETHERSCAN_API_KEY |
| Sepolia | https://sepolia.etherscan.io | https://api-sepolia.etherscan.io/api | ETHERSCAN_API_KEY |
| OP Sepolia | https://sepolia-optimism.etherscan.io | https://api-sepolia-optimistic.etherscan.io/api | OP_ETHERSCAN_API_KEY |
| Base Sepolia | https://sepolia.basescan.org | https://api-sepolia.basescan.org/api | BASE_ETHERSCAN_API_KEY |
| Arbitrum Sepolia | https://sepolia.arbiscan.io | https://api-sepolia.arbiscan.io/api | ARBITRUM_ETHERSCAN_API_KEY |
dao.config.tsdeploy-and-test.sh script:chmod +x scripts/deploy-and-test.sh
./scripts/deploy-and-test.sh --salt "<CUSTOM_SALT_HERE>"
Feel free to reach out to Julien on Farcaster, Element, Status, Telegram, Twitter, Discord, or LinkedIn.