It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
The selector can be obtained in Solidity with IERC721.onERC721Received.selector.
Code style: some strings are declared with '', others with "". I suggest only using one style.
QA Report
Consider adding an
address(0)
check here:NFTLoanFacilitator.sol
usesOwnable
's defaulttransferOwnership()
instead of implementing a 2-step ownership transfer patternrenounceOwnership()
can be called inNFTLoanFacilitator.sol
. Consider overriding the method to always keep an owner.Comment says "private" instead of "internal" :
onERC721Received
not implemented inborrowTicketContract
(BorrowTicket.sol
)The
IERC721.safeTransferFrom
call will triggeronERC721Received
here:It must return its Solidity
selector
to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.The selector can be obtained in Solidity with
IERC721.onERC721Received.selector
.''
, others with""
. I suggest only using one style.Strings with
''
:Strings with
""
: