mirror of openzeppelin-contracts
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
openzeppelin-contracts/contracts/token/ERC721
Alan Arvelo 377431bc4c Fix/add erc721 safe mint safe transfer from #1736 (#1816) 6 years ago
..
ERC721.sol Fix/add erc721 safe mint safe transfer from #1736 (#1816) 6 years ago
ERC721Burnable.sol Revert Solidity version bump. (#1729) 6 years ago
ERC721Enumerable.sol migrate content to format for new docs site 6 years ago
ERC721Full.sol migrate content to format for new docs site 6 years ago
ERC721Holder.sol Revert Solidity version bump. (#1729) 6 years ago
ERC721Metadata.sol Revert Solidity version bump. (#1729) 6 years ago
ERC721MetadataMintable.sol Revert Solidity version bump. (#1729) 6 years ago
ERC721Mintable.sol Fix/add erc721 safe mint safe transfer from #1736 (#1816) 6 years ago
ERC721Pausable.sol Fix/add erc721 safe mint safe transfer from #1736 (#1816) 6 years ago
IERC721.sol Squash merge of branch docs-v2.x into master 6 years ago
IERC721Enumerable.sol Revert Solidity version bump. (#1729) 6 years ago
IERC721Full.sol Revert Solidity version bump. (#1729) 6 years ago
IERC721Metadata.sol Revert Solidity version bump. (#1729) 6 years ago
IERC721Receiver.sol Squash merge of branch docs-v2.x into master 6 years ago
README.adoc Squash merge of branch docs-v2.x into master 6 years ago

README.adoc

= ERC 721

This set of interfaces, contracts, and utilities are all related to the https://eips.ethereum.org/EIPS/eip-721[ERC721 Non-Fungible Token Standard].

TIP: For a walkthrough on how to create an ERC721 token read our xref:ROOT:tokens.adoc#ERC721[ERC721 guide].

The EIP consists of three interfaces, found here as {IERC721}, {IERC721Metadata}, and {IERC721Enumerable}. Only the first one is required in a contract to be ERC721 compliant.

Each interface is implemented separately in {ERC721}, {ERC721Metadata}, and {ERC721Enumerable}. You can choose the subset of functionality you would like to support in your token by combining the
desired subset through inheritance.

The fully featured token implementing all three interfaces is prepackaged as {ERC721Full}.

Additionally, {IERC721Receiver} can be used to prevent tokens from becoming forever locked in contracts. Imagine sending an in-game item to an exchange address that can't send it back!. When using <<IERC721-safeTransferFrom,`safeTransferFrom`>>, the token contract checks to see that the receiver is an {IERC721Receiver}, which implies that it knows how to handle {ERC721} tokens. If you're writing a contract that needs to receive {ERC721} tokens, you'll want to include this interface.

Finally, some custom extensions are also included:

* {ERC721Mintable} — like the ERC20 version, this allows certain addresses to mint new tokens
* {ERC721Pausable} — like the ERC20 version, this allows addresses to freeze transfers of tokens

NOTE: This page is incomplete. We're working to improve it for the next release. Stay tuned!

== Core

{{IERC721}}

{{ERC721}}

{{IERC721Metadata}}

{{ERC721Metadata}}

{{ERC721Enumerable}}

{{IERC721Enumerable}}

{{IERC721Full}}

{{ERC721Full}}

{{IERC721Receiver}}

== Extensions

{{ERC721Mintable}}

{{ERC721MetadataMintable}}

{{ERC721Burnable}}

{{ERC721Pausable}}

== Convenience

{{ERC721Holder}}