The current minter transfer process involves the current minter calling setMinter(). If the nominated EOA account is not a valid account, it is entirely possible the owner may accidentally transfer ownership to an uncontrolled account, or address(0), breaking all functions that requre msg.sender == _minter
Recommend considering implementing a two step process where the minter nominates an account and the nominated account needs to call an accept() function for the transfer of minter to fully succeed. This ensures the nominated EOA account is a valid and active account.
No Transfer Ownership Pattern
description
The current minter transfer process involves the current minter calling setMinter(). If the nominated EOA account is not a valid account, it is entirely possible the owner may accidentally transfer ownership to an uncontrolled account, or address(0), breaking all functions that requre msg.sender == _minter
Recommend considering implementing a two step process where the minter nominates an account and the nominated account needs to call an accept() function for the transfer of minter to fully succeed. This ensures the nominated EOA account is a valid and active account.
findings
the setVoter function in VotingEscrow also does not implement this pattern
open TODO
description
clean up any open TODOs in the comments
findings