bytes4(keccak256(‘balanceOf(address)’)) == 0x70a08231
* bytes4(keccak256(‘ownerOf(uint256)’)) == 0x6352211e
bytes4(keccak256(‘approve(address,uint256)’)) == 0x09
bytes4(keccak256(‘getApproved(uint256)’)) == 0x081812
bytes4(keccak256(‘setApprovalForAll(address,bool)’))
bytes4(keccak256(‘isApprovedForAll(address,address)’)
bytes4(keccak256(‘transferFrom(address,address,uint25
bytes4(keccak256(‘safeTransferFrom(address,address,ui
bytes4(keccak256(‘safeTransferFrom(address,address,ui
* => 0x70a08231 ^ 0x6352211e ^ 0x095ea7b3 ^ 0x081812fc
* 0xa22cb465 ^ 0xe985e9c5 ^ 0x23b872dd ^ 0x42842e0e
bytes4 private constant _INTERFACE_ID_ERC721 = 0x80ac58cd;
bytes4(keccak256(‘name()’)) == 0x06fdde03
* bytes4(keccak256(‘symbol()’)) == 0x95d89b41
bytes4(keccak256(‘tokenURI(uint256)’)) == 0xc87b56dd
* => 0x06fdde03 ^ 0x95d89b41 ^ 0xc87b56dd == 0x5b5e139f
bytes4 private constant _INTERFACE_ID_ERC721_METADATA = 0x5b
bytes4(keccak256(‘totalSupply()’)) == 0x18160ddd
bytes4(keccak256(‘tokenOfOwnerByIndex(address,uint256
bytes4(keccak256(‘tokenByIndex(uint256)’)) == 0x4f6cc
* => 0x18160ddd ^ 0x2f745c59 ^ 0x4f6ccce7 == 0x780e9d63
bytes4 private constant _INTERFACE_ID_ERC721_ENUMERABLE = 0x