Hi - I've got a Governor running on rinkeby and I wanted to change the VotingPeriod. I've run thru the entire setup, giving permissions, etc and was able to mint thru proposing & voting (Tally is my UX) using the whole Governor + Timelock setup. But today, I wanted to modify the VotingPeriod of the Gov itself. I'm wondering if I'm missing a permission. ?? I tried to do this thru Tally and it just hangs when I submit it. So I came back to Defender. Here, I Chose the Governor as the contract, then setVotingPeriod and gave it a new value. As my Execution strategy, I chose Governor. It noticed the timelock, so everything looks good, but I get the "Transaction validation failed" message.
Am I missing something? What accounts need what permissions to be able to change something in the governor? Note I also tried it using EOA and it errored too - it told me this was "OnlyGovernor". I'm really stuck - thanks in advance for your help
Chris
Before taking this as an issue for us, I'd just like to validate if it's a bug or not, can you provide me the addresses for your contracts (both governor and timelock), so I can try to replicate or look what's blocking the execution for you.
Also, if you have code examples or a repo to take a look at, that'd be great to see what the permissions mechanisms are in you smart contract.
I don't have a script that set up permissions. I was following a youtube video that walked me thru the entire thing, including the mint from Tally that I was able to do. The mint however, talks to the ERC20 not to the Governor. Here's the permissions I added:
After deploying the Governor:
granted Governor proposer role in Timelock
granted Governor executor role in Timelock
I left the deployer addr as executor & proposer just as a backup for testing
granted Timelock Minter role in ERC20 token
granted Governor Minter role in ERC20 token
granted myself (deployer addr) PAUSER role in Governor
delegated my votes to myself
The setVotingPeriod can't be added as an Admin Action through defender since it requires to pass through the governance protocol. When you create a proposal it has to be executed using your EOA, which is detected as not the Governor itself when validating the transaction.
You need to:
Create a proposal with a propose call to the Governor
Add the Governor itself as a target
Add 0 in value
Add the function signature for setVotingPeriod(uint256) followed by the new voting period (eg. 0xea0217cf000000000000000000000000000000000000000000000000000000000000b2fb) in the calldatas field
Send the proposal through the Defender Admin UI
Vote the proposal in Tally or any other UI, so you can execute the proposal once the previous voting period has passed