|
|
|
pragma solidity ^0.4.24;
|
|
|
|
|
|
|
|
import "../../introspection/ERC165.sol";
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @title ERC721 Non-Fungible Token Standard basic interface
|
|
|
|
* @dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
|
|
|
|
*/
|
|
|
|
contract ERC721Basic is ERC165 {
|
|
|
|
|
|
|
|
bytes4 internal constant InterfaceId_ERC721 = 0x80ac58cd;
|
|
|
|
/*
|
|
|
|
* 0x80ac58cd ===
|
|
|
|
* bytes4(keccak256('balanceOf(address)')) ^
|
|
|
|
* bytes4(keccak256('ownerOf(uint256)')) ^
|
|
|
|
* bytes4(keccak256('approve(address,uint256)')) ^
|
|
|
|
* bytes4(keccak256('getApproved(uint256)')) ^
|
|
|
|
* bytes4(keccak256('setApprovalForAll(address,bool)')) ^
|
|
|
|
* bytes4(keccak256('isApprovedForAll(address,address)')) ^
|
|
|
|
* bytes4(keccak256('transferFrom(address,address,uint256)')) ^
|
|
|
|
* bytes4(keccak256('safeTransferFrom(address,address,uint256)')) ^
|
|
|
|
* bytes4(keccak256('safeTransferFrom(address,address,uint256,bytes)'))
|
|
|
|
*/
|
|
|
|
|
|
|
|
bytes4 internal constant InterfaceId_ERC721Enumerable = 0x780e9d63;
|
|
|
|
/**
|
|
|
|
* 0x780e9d63 ===
|
|
|
|
* bytes4(keccak256('totalSupply()')) ^
|
|
|
|
* bytes4(keccak256('tokenOfOwnerByIndex(address,uint256)')) ^
|
|
|
|
* bytes4(keccak256('tokenByIndex(uint256)'))
|
|
|
|
*/
|
|
|
|
|
|
|
|
bytes4 internal constant InterfaceId_ERC721Metadata = 0x5b5e139f;
|
|
|
|
/**
|
|
|
|
* 0x5b5e139f ===
|
|
|
|
* bytes4(keccak256('name()')) ^
|
|
|
|
* bytes4(keccak256('symbol()')) ^
|
|
|
|
* bytes4(keccak256('tokenURI(uint256)'))
|
|
|
|
*/
|
|
|
|
|
|
|
|
event Transfer(
|
|
|
|
address indexed _from,
|
|
|
|
address indexed _to,
|
|
|
|
uint256 indexed _tokenId
|
|
|
|
);
|
|
|
|
event Approval(
|
|
|
|
address indexed _owner,
|
|
|
|
address indexed _approved,
|
|
|
|
uint256 indexed _tokenId
|
|
|
|
);
|
|
|
|
event ApprovalForAll(
|
|
|
|
address indexed _owner,
|
|
|
|
address indexed _operator,
|
|
|
|
bool _approved
|
|
|
|
);
|
|
|
|
|
|
|
|
function balanceOf(address _owner) public view returns (uint256 _balance);
|
|
|
|
function ownerOf(uint256 _tokenId) public view returns (address _owner);
|
|
|
|
|
|
|
|
function approve(address _to, uint256 _tokenId) public;
|
|
|
|
function getApproved(uint256 _tokenId)
|
|
|
|
public view returns (address _operator);
|
|
|
|
|
|
|
|
function setApprovalForAll(address _operator, bool _approved) public;
|
|
|
|
function isApprovedForAll(address _owner, address _operator)
|
|
|
|
public view returns (bool);
|
|
|
|
|
|
|
|
function transferFrom(address _from, address _to, uint256 _tokenId) public;
|
|
|
|
function safeTransferFrom(address _from, address _to, uint256 _tokenId)
|
|
|
|
public;
|
|
|
|
|
|
|
|
function safeTransferFrom(
|
|
|
|
address _from,
|
|
|
|
address _to,
|
|
|
|
uint256 _tokenId,
|
|
|
|
bytes _data
|
|
|
|
)
|
|
|
|
public;
|
|
|
|
}
|