ConduitController uses a two-step ownership transfer process, which is good design. However, I'd recommend renaming the initial transferOwnership() method to offerOwnership() to avoid confusion with OpenZeppelin's Ownable.transferOwnership() method, which has the same name but is an atomic transfer that requires no acceptance.
Checks for invalid addresses are unnecessary in transferOwnership() because an invalid address cannot accept ownership. You can remove the check on lines 196-199 and remove the funciton cancelOwnershipTransfer() altogether, letting people call transferOwnership(conduit, address(0x0)) for cancelling functionality instead.
transferOwnership()
method toofferOwnership()
to avoid confusion with OpenZeppelin's Ownable.transferOwnership() method, which has the same name but is an atomic transfer that requires no acceptance.https://github.com/code-423n4/2022-05-opensea-seaport/blob/9d7ce4d08bf3c3010304a0476a785c70c0e90ae7/contracts/conduit/ConduitController.sol#L189
transferOwnership()
because an invalid address cannot accept ownership. You can remove the check on lines 196-199 and remove the funcitoncancelOwnershipTransfer()
altogether, letting people calltransferOwnership(conduit, address(0x0))
for cancelling functionality instead.https://github.com/code-423n4/2022-05-opensea-seaport/blob/9d7ce4d08bf3c3010304a0476a785c70c0e90ae7/contracts/conduit/ConduitController.sol#L196-L199