IERC721
Inherits: IERC165
Required interface of an ERC721 compliant contract.
Functions
balanceOf
Returns the number of tokens in owner's account.
function balanceOf(address owner) external view returns (uint256 balance);
ownerOf
*Returns the owner of the tokenId token.
Requirements:
tokenIdmust exist.*
function ownerOf(uint256 tokenId) external view returns (address owner);
safeTransferFrom
*Safely transfers tokenId token from from to to.
Requirements:
fromcannot be the zero address.tocannot be the zero address.tokenIdtoken must exist and be owned byfrom.- If the caller is not
from, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If
torefers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.*
function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;
safeTransferFrom
*Safely transfers tokenId token from from to to, checking first that contract recipients
are aware of the ERC721 protocol to prevent tokens from being forever locked.
Requirements:
fromcannot be the zero address.tocannot be the zero address.tokenIdtoken must exist and be owned byfrom.- If the caller is not
from, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If
torefers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.*
function safeTransferFrom(address from, address to, uint256 tokenId) external;
transferFrom
*Transfers tokenId token from from to to.
WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721
or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must
understand this adds an external call which potentially creates a reentrancy vulnerability.
Requirements:
fromcannot be the zero address.tocannot be the zero address.tokenIdtoken must be owned byfrom.- If the caller is not
from, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.*
function transferFrom(address from, address to, uint256 tokenId) external;
approve
*Gives permission to to to transfer tokenId token to another account.
The approval is cleared when the token is transferred.
Only a single account can be approved at a time, so approving the zero address clears previous approvals.
Requirements:
- The caller must own the token or be an approved operator.
tokenIdmust exist. Emits an {Approval} event.*
function approve(address to, uint256 tokenId) external;
setApprovalForAll
*Approve or remove operator as an operator for the caller.
Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
Requirements:
- The
operatorcannot be the caller. Emits an {ApprovalForAll} event.*
function setApprovalForAll(address operator, bool _approved) external;
getApproved
*Returns the account approved for tokenId token.
Requirements:
tokenIdmust exist.*
function getApproved(uint256 tokenId) external view returns (address operator);
isApprovedForAll
Returns if the operator is allowed to manage all of the assets of owner.
See {setApprovalForAll}
function isApprovedForAll(address owner, address operator) external view returns (bool);
Events
Transfer
Emitted when tokenId token is transferred from from to to.
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
Approval
Emitted when owner enables approved to manage the tokenId token.
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
ApprovalForAll
Emitted when owner enables or disables (approved) operator to manage all of its assets.
event ApprovalForAll(address indexed owner, address indexed operator, bool approved);