In a governed multisig wallet, the owner (admin) is expected to remain in control of administrative actions (e.g., adding/removing signers, proposing transactions if owner‑gated) or follow a safe two‑step ownership transfer. Renouncing ownership should be either disabled or guarded to avoid leaving the system unmanageable.
The contract inherits OpenZeppelin’s Ownable but does not override renounceOwnership(). If the owner calls renounceOwnership(), owner() becomes address(0). All onlyOwner functions (grantSigningRole, revokeSigningRole, proposeTransaction) become permanently inaccessible, effectively bricking administrative control and (given owner‑gated proposals) blocking any future transactions.
Likelihood: Low
Teams might call renounceOwnership() to “decentralize” or as a safety practice; in this design it removes all admin capabilities with no recovery path.
Accidental invocation by scripts or operators (or deliberate action without awareness of consequences) will occur during maintenance or incident response.
Impact: High
Permanent loss of admin control: No one can add/remove signers or propose transactions (because proposeTransaction is onlyOwner). If the current signer count is < REQUIRED_CONFIRMATIONS, funds can become locked forever.
Incident response impossible: You cannot revoke compromised signers or adjust membership once ownership is renounced.
Copy the code below to MultiSigTimeLockTest.t.sol.
Run command forge test --mt testRenounceOwnershipBricksWallet -vvvv.
Output:
Disable renouncing ownership.
Override renounceOwnership to prevent bricking the wallet:
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.
The contest is complete and the rewards are being distributed.