Reputation: 2597
I am using the OpenZeppelin contracts for every contract, as they are robust, modular and just perfect. But now I am struggling with the governance contracts... I just can't get my head around how the Governor, the token contract and Timelock manager works together.
What do I want to achieve?
I created an ERC20 and an ERC721 contract. The ERC20 contract is the "Voting Power" for the DAO (you need at least X tokens to create a proposal, every token is a "vote" for existing proposals and will be removed from your wallet after voting). The DAO should be able to govern the ERC20 contract and also the ERC721 contract. So users should be able to create proposals with actions on both contracts, but the ERC20 token contract is what is used to define who can create a new proposal and how much influence you have.
I already deployed a default governor, created using the OpenZeppelin wizard, to Polygon Amoy and used Tally to interact with it. But nothing seems to work. Proposals are hanging in the "Draft" state and waiting for the deployment to the chain (they are published by me, but the state is "Waiting for chain deployment"... always). Also I am always having a voting power of "0" despite I minted some of the tokens after the deployment of the governor and assigned it to my account. Also I don't understand how the "Delegate" should work, as nothing is happening if I do so....
Long story short, is there any detailed documentation/tutorial/example I can study? Or something else? The OpenZeppelin documentation is just the contract interface documentation, but not how the concept behind is designed....
I want to manage both contracts, the ERC20 and the ERC721 contract, using my DAO. New proposal should only be able for proposers with more than X ERC20 tokens and every vote on a proposal costs Y ERC20 tokens (the tokens should be burned after usage).
Here is my currently deployed setup at Tally: https://www.tally.xyz/gov/governor-test-5
I deployed it on Polygon AMOY testnet.
Upvotes: 0
Views: 34