ERC721Basic.sol 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. pragma solidity ^0.4.23;
  2. import "../../introspection/SupportsInterfaceWithLookup.sol";
  3. /**
  4. * @title ERC721 Non-Fungible Token Standard basic interface
  5. * @dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
  6. */
  7. contract ERC721Basic is SupportsInterfaceWithLookup {
  8. event Transfer(
  9. address indexed _from,
  10. address indexed _to,
  11. uint256 indexed _tokenId
  12. );
  13. event Approval(
  14. address indexed _owner,
  15. address indexed _approved,
  16. uint256 indexed _tokenId
  17. );
  18. event ApprovalForAll(
  19. address indexed _owner,
  20. address indexed _operator,
  21. bool _approved
  22. );
  23. bytes4 private constant InterfaceId_ERC721 = 0x80ac58cd;
  24. /*
  25. * 0x80ac58cd ===
  26. * bytes4(keccak256('balanceOf(address)')) ^
  27. * bytes4(keccak256('ownerOf(uint256)')) ^
  28. * bytes4(keccak256('approve(address,uint256)')) ^
  29. * bytes4(keccak256('getApproved(uint256)')) ^
  30. * bytes4(keccak256('setApprovalForAll(address,bool)')) ^
  31. * bytes4(keccak256('isApprovedForAll(address,address)')) ^
  32. * bytes4(keccak256('transferFrom(address,address,uint256)')) ^
  33. * bytes4(keccak256('safeTransferFrom(address,address,uint256)')) ^
  34. * bytes4(keccak256('safeTransferFrom(address,address,uint256,bytes)'))
  35. */
  36. bytes4 private constant InterfaceId_ERC721Exists = 0x4f558e79;
  37. /*
  38. * 0x4f558e79 ===
  39. * bytes4(keccak256('exists(uint256)'))
  40. */
  41. constructor ()
  42. public
  43. {
  44. // register the supported interfaces to conform to ERC721 via ERC165
  45. _registerInterface(InterfaceId_ERC721);
  46. _registerInterface(InterfaceId_ERC721Exists);
  47. }
  48. function balanceOf(address _owner) public view returns (uint256 _balance);
  49. function ownerOf(uint256 _tokenId) public view returns (address _owner);
  50. function exists(uint256 _tokenId) public view returns (bool _exists);
  51. function approve(address _to, uint256 _tokenId) public;
  52. function getApproved(uint256 _tokenId)
  53. public view returns (address _operator);
  54. function setApprovalForAll(address _operator, bool _approved) public;
  55. function isApprovedForAll(address _owner, address _operator)
  56. public view returns (bool);
  57. function transferFrom(address _from, address _to, uint256 _tokenId) public;
  58. function safeTransferFrom(address _from, address _to, uint256 _tokenId)
  59. public;
  60. function safeTransferFrom(
  61. address _from,
  62. address _to,
  63. uint256 _tokenId,
  64. bytes _data
  65. )
  66. public;
  67. }