Conversation
The public branch let any address cancel a proposal once the proposer's voting power fell below proposalThreshold. Proposing power is a single 1,000,001 INST delegation rotated between five proposer multisigs, so that condition holds for any proposal whose proposer is not the current delegate — 46 of 139 to date. Timelock.guardian retains an emergency de-queue path for queued proposals.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Executive Summary
cancel()guard reduced tomsg.sender == proposal.proposerproposerVotes < proposalThresholdTimelock.guardianisTEAM_MULTISIGcancelWhy the branch was reachable
Proposing power is a single 1,000,001 INST delegation rotated between the five
PROPOSER_AVO_MULTISIGaddresses, none of which hold INST of their own. One delegation cannotpoint at two addresses, so at most one multisig is above threshold at any time and the other four
are permanently below it. Every proposal whose proposer is not the current delegate was therefore
cancellable by any address, for gas, at any point before execution —
cancel()excludes onlyExecuted, soPending,Active,SucceededandQueuedwere all open.Raising the delegation buffer mitigates a single in-flight proposal but cannot cover two at once,
which is why this is fixed in code rather than operationally.
Deployment
Requires deploying a new implementation and an IGP calling
_setImplementation(address)on theGovernor at
0x0204Cd037B2ec03605CFdFe482D8e257C765fA1B. Build with solc 0.7.3, optimizer enabled,200 runs, matching
hardhat.config.ts, so the runtime bytecode diff against the liveimplementation isolates the cancel path for review.
Keep the delegation above threshold for the lifetime of that proposal — until it lands, the
upgrade proposal is itself cancellable under the behavior it removes.
Note on the G2 alternative
Compound's G2 whitelist does not address this. It retains the same permissionless branch for
non-whitelisted proposers and gates only whitelisted ones behind
whitelistGuardian; its purposeis to let sub-threshold accounts propose. Adopting it without whitelisting all five proposer
multisigs would change nothing here.