IERC721

Git Source

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:

  • tokenId must exist.*
function ownerOf(uint256 tokenId) external view returns (address owner);

safeTransferFrom

*Safely transfers tokenId token from from to to. Requirements:

  • from cannot be the zero address.
  • to cannot be the zero address.
  • tokenId token must exist and be owned by from.
  • If the caller is not from, it must be approved to move this token by either {approve} or {setApprovalForAll}.
  • If to refers 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:

  • from cannot be the zero address.
  • to cannot be the zero address.
  • tokenId token must exist and be owned by from.
  • If the caller is not from, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.
  • If to refers 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:

  • from cannot be the zero address.
  • to cannot be the zero address.
  • tokenId token must be owned by from.
  • 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.
  • tokenId must 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 operator cannot be the caller. Emits an {ApprovalForAll} event.*
function setApprovalForAll(address operator, bool _approved) external;

getApproved

*Returns the account approved for tokenId token. Requirements:

  • tokenId must 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);