ERC-721 (Ethereum Request for Comments 721) is the token standard that defines Non-Fungible Tokens (NFTs) on the Ethereum blockchain. Unlike ERC-20 tokens where every unit is identical and interchangeable, ERC-721 tokens each have a unique token ID making them individually distinguishable. Proposed by William Entriken, Dieter Shirley, Jacob Evans, and Nastassia Sachs in January 2018 (finalized June 2018), ERC-721 provided the technical foundation that enabled CryptoPunks, CryptoKitties, BAYC, and the entire NFT ecosystem.
Fungible vs. Non-Fungible
The core distinction:
| Property | ERC-20 (Fungible) | ERC-721 (Non-Fungible) |
|---|---|---|
| Interchangeable? | Yes — 1 USDC = 1 USDC | No — Punk #1 ≠ Punk #2 |
| Individual ID? | No | Yes — each has unique tokenId |
| Divisible? | Yes — fractions possible | No — each NFT is a whole unit |
| Example | USDC, UNI, ETH | CryptoPunk, Bored Ape, domain name |
The ERC-721 Interface
Key functions in the ERC-721 standard:
“`
ownerOf(tokenId) → Returns current owner of a specific token
balanceOf(address) → Number of NFTs owned by address
transferFrom(from, to, tokenId) → Transfer a specific NFT
safeTransferFrom(…) → Transfer with receiver contract check
approve(to, tokenId) → Approve address to transfer specific token
getApproved(tokenId) → Returns approved address for tokenId
setApprovalForAll(operator, bool) → Approve all tokens to an operator
isApprovedForAll(owner, op) → Check operator approval status
“`
Event:
“`
Transfer(from, to, tokenId)
Approval(owner, approved, tokenId)
ApprovalForAll(owner, operator, approved)
“`
Metadata Extension
ERC-721 includes an optional metadata extension that enables NFT images and traits:
“`
name() → Collection name (e.g., “CryptoPunks”)
symbol() → Collection symbol (e.g., “PUNK”)
tokenURI(tokenId) → URL pointing to token metadata JSON
“`
The tokenURI typically returns a JSON file containing:
name: Name of the specific NFTdescription: Descriptionimage: URL to the image (IPFS, Arweave, or HTTP)attributes: Array of trait objects (used for rarity)
On-chain vs. off-chain metadata: Most NFT images are stored off-chain (IPFS or centralized servers) — only the metadata URI is on-chain. If the image hosting goes down, the NFT becomes a broken link. True “on-chain” NFTs store image data entirely in the contract (rare, expensive, but permanent).
CryptoKitties: The First ERC-721 Killer App
CryptoKitties (December 2017) was the first major application of ERC-721 and famously congested the Ethereum network — gas prices spiked to unprecedented levels as players raced to breed unique digital cats. Although CryptoKitties predated the formal ERC-721 standard, co-creator Dieter Shirley authored the initial ERC-721 proposal based on the CryptoKitties architecture.
ERC-721 vs. ERC-1155
ERC-1155 (by Enjin, 2018) is a multi-token standard that allows a single contract to manage both fungible and non-fungible tokens:
- More gas-efficient for batch transfers
- Used extensively in blockchain gaming (items that have multiple copies aren’t truly non-fungible)
- BAYC/CryptoPunks use ERC-721; many game items use ERC-1155
Royalty Limitations
ERC-721 has no built-in royalty mechanism. The ERC-2981 (royalty standard) was created to address this, but royalty enforcement remains a marketplace-level feature — exchanges can choose to bypass royalties, which caused the major NFT royalty debate of 2022–2023 when Blur and other marketplaces made royalties optional.
Related Terms
Sources
- Entriken, W. et al. (2018). “ERC-721 Non-Fungible Token Standard.” Ethereum Improvement Proposals, GitHub, January 24, 2018.
- Wang, Q. et al. (2021). “Non-Fungible Token (NFT): Overview, Evaluation, Opportunities, and Challenges.” arXiv:2105.07447.
- Dowling, M. (2022). “Fertile LAND: Pricing Non-Fungible Tokens.” Finance Research Letters, 44.
- Mazur, M. (2021). “Non-Fungible Tokens (NFT). The Analysis of Risk and Return.” SSRN Working Paper.
- Dapper Labs (2021). “Flow Blockchain and the Legacy of ERC-721.” Dapper Labs Technical Documentation.