Closed soloseng closed 2 years ago
After further discussion with the team, it was established that:
The main purpose of our timelock
is to give users time to react and therefore the functionality to unschedule a proposals is not as important in our use case. Additionally, introducing unscheduleProposal
could have unintended consequence of giving a single owner veto power over the proposals if only the minimum number of confirmations were initially submitted.
The decision was made to not change the current multiSig contract implementation.
Description
Currently, when a proposal is scheduled and is waiting for the
delay
to be reached, any owner can revoke their confirmation during thedelay
period. However, revoking a confirmation only decrease the total number of confirmations for that proposal.In the event that the total number of confirmations falls bellow the
required
threshold, a scheduled transaction can still be executed once thedelay
period has elapsed, rendering the timelock mechanism ineffective.Proposed Fix
UnscheduledProposal(uint256 proposalId)
that is emitted when proposal is unscheduled.unscheduleProposal(uint256 proposalId)
that isinternal
, only called by therevokeConfirmation()
and resetstimestampExecutable
and emitProposalUnscheduled(proposalId)
eventThe updated
revokeConfirmation()
logic would be as follows:isScheduled()
for execution.true
=> check if proposalisFullyConfirmed()
false
=>unscheduleProposal(proposalId)