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
- Add your own keys in your
.env
file - Edit the
dao.config.ts
file (optional) - Check if the main account has a sufficient wallet balance:
pnpm bal
- Then deploy to Sepolia:
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 |
- Make sure the main account, as well as Alice and Bob accounts have a sufficient balance on OP Sepolia, Arbitrum Sepolia and Base Sepolia
- Set the initial parameters of the test DAO in
dao.config.ts
- Run the
deploy-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.