1contract ERC721 {2 uint8 _dummy = 0;3 address _dummy_addr = 0x0000000000000000000000000000000000000000;4 string _dummy_string = "";5 string stub_error =6 "this contract does not exists, code for collections is implemented at pallet side";78 event Transfer(9 address indexed from,10 address indexed to,11 uint256 indexed tokenId12 );1314 event Approval(15 address indexed owner,16 address indexed approved,17 uint256 indexed tokenId18 );1920 event ApprovalForAll(21 address indexed owner,22 address indexed operator,23 bool approved24 );2526 // 0x18160ddd27 function totalSupply() external view returns (uint256) {28 require(false, stub_error);29 return 0;30 }3132 function name() external view returns (string memory res_name) {33 require(false, stub_error);34 res_name = _dummy_string;35 }3637 function symbol() external view returns (string memory res_symbol) {38 require(false, stub_error);39 res_symbol = _dummy_string;40 }4142 function tokenURI(uint256 tokenId) external view returns (string memory) {43 require(false, stub_error);44 tokenId;45 return _dummy_string;46 }4748 function tokenByIndex(uint256 index) external view returns (uint256) {49 require(false, stub_error);50 index;51 return 0;52 }5354 function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256) {55 require(false, stub_error);56 owner;57 index;58 return 0;59 }6061 // 0x70a0823162 function balanceOf(address owner) external view returns (uint256) {63 require(false, stub_error);64 owner;65 return 0;66 }6768 // 0x6352211e69 function ownerOf(uint256 tokenId) external view returns (address) {70 require(false, stub_error);71 tokenId;72 return _dummy_addr;73 }7475 // 0xb88d4fde76 function safeTransferFrom(77 address from,78 address to,79 uint256 tokenId,80 bytes calldata data81 ) external payable {82 require(false, stub_error);83 from;84 to;85 tokenId;86 data;87 }8889 // 0x42842e0e90 function safeTransferFrom(91 address from,92 address to,93 uint256 tokenId94 ) external payable {95 require(false, stub_error);96 from;97 to;98 tokenId;99 }100101 // 0x23b872dd102 function transferFrom(103 address from,104 address to,105 uint256 tokenId106 ) external payable {107 require(false, stub_error);108 from;109 to;110 tokenId;111 }112113 // 0x095ea7b3114 function approve(address approved, uint256 tokenId) external payable {115 require(false, stub_error);116 approved;117 tokenId;118 }119120 // 0xa22cb465121 function setApprovalForAll(address operator, bool approved) external {122 require(false, stub_error);123 operator;124 approved;125 _dummy = 0;126 }127128 // 0x081812fc129 function getApproved(uint256 tokenId) external view returns (address) {130 require(false, stub_error);131 tokenId;132 return _dummy_addr;133 }134135 // 0xe985e9c5136 function isApprovedForAll(address owner, address operator)137 external138 view139 returns (bool)140 {141 require(false, stub_error);142 owner;143 operator;144 return false;145 }146147 // 0x01ffc9a7148 function supportsInterface(bytes4 interfaceID) public pure returns (bool) {149 return150 // ERC721151 interfaceID == 0x80ac58cd ||152 // ERC721Metadata153 interfaceID == 0x5b5e139f ||154 // ERC721Enumerable155 interfaceID == 0x780e9d63 ||156 // ERC165157 interfaceID == 0x01ffc9a7;158 }159}