Future Transaction Cancel#
Informational
An admin address can cancel a transaction before it exists using the timelock functionality in Governor.sol.
function _cancelTransaction(
address target,
uint256 value,
bytes memory data,
uint256 eta
) public {
require(
msg.sender == admin,
"Governor::cancelTransaction: Call must come from admin"
);
bytes32 txHash = keccak256(abi.encode(target, value, data, eta));
queuedTransactions[txHash] = false;
emit CancelTransaction(txHash, target, value, data, eta);
}
By calling _cancelTransaction
on a nonexistent transaction hash, a CancelTransaction
event is emitted which might confuse governance UIs.
Recommendation#
Validate the transaction is actually queued before enabling cancel.
require(queuedTransactions[txHash], "Transaction not Queued")