Ownable2Step and Ownable2StepUpgradeable prevent the contract ownership from mistakenly being transferred to an address that cannot handle it (e.g. due to a typo in the address), by requiring that the recipient of the owner permissions actively accept via a contract call of its own.
Proof of Concept (PoC) File
file: /src/CatalystChainInterface.sol
28 contract CatalystChainInterface is ICatalystChainInterface, Ownable, Bytes65 {
Github username: @saidqayoumsadat Twitter username: saqsadat143 Submission hash (on-chain): 0xc35ff36c88677acf554f3830f0b084e6b277a49726208551bfe4eef5dcd0e515 Severity: low
Description: Description
Ownable2Step
andOwnable2StepUpgradeable
prevent the contract ownership from mistakenly being transferred to an address that cannot handle it (e.g. due to a typo in the address), by requiring that the recipient of the owner permissions actively accept via a contract call of its own.https://github.com/catalystdao/catalyst/blob/27b4d0a2bca177aff00def8cd745623bfbf7cb6b/evm/src/CatalystChainInterface.sol#L28C1-L28C79
https://github.com/catalystdao/catalyst/blob/27b4d0a2bca177aff00def8cd745623bfbf7cb6b/evm/src/CatalystFactory.sol#L20C1-L20C58