체인의정석

ERC721 Receiver에 대한 설명 본문

블록체인/NFT & BRIDGE

ERC721 Receiver에 대한 설명

체인의정석 2022. 2. 8. 16:15
728x90
반응형

ERC721 Receiver

    /**
     * @dev Internal function to invoke `onERC721Received` on a target address.
     * The call is not executed if the target address is not a contract.
     *
     * This function is deprecated.
     * @param from address representing the previous owner of the given token ID
     * @param to target address that will receive the tokens
     * @param tokenId uint256 ID of the token to be transferred
     * @param _data bytes optional data to send along with the call
     * @return bool whether the call correctly returned the expected magic value
     */
    function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data)
        internal returns (bool)
    {
        if (!to.isContract()) {
            return true;
        }

        bytes4 retval = IERC721Receiver(to).onERC721Received(msg.sender, from, tokenId, _data);
        return (retval == _ERC721_RECEIVED);
    }

다음과 같이 erc721 receiver에서 체크를 하여서 구현이 된 컨트렉트에만 보낼 수 있게 설정하였다. 

EOA는 상관이 없지만 만약 컨트렉트라면 이를 사용해야 한다.

 

특히 지갑이나, 거래와 같이 erc721을 직접적으로 만드는 부분에서는 이를 써야하는데

 

현재 재작중인 dapp에서는 erc721을 상속받아서 쓰는 새로운 erc721에 접근하여 쓰고 있으므로 직접 구현할 필요는 없었다.

728x90
반응형
Comments