ERC-721

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 NFT
  • description: Description
  • image: 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

  1. Entriken, W. et al. (2018). “ERC-721 Non-Fungible Token Standard.” Ethereum Improvement Proposals, GitHub, January 24, 2018.
  1. Wang, Q. et al. (2021). “Non-Fungible Token (NFT): Overview, Evaluation, Opportunities, and Challenges.” arXiv:2105.07447.
  1. Dowling, M. (2022). “Fertile LAND: Pricing Non-Fungible Tokens.” Finance Research Letters, 44.
  1. Mazur, M. (2021). “Non-Fungible Tokens (NFT). The Analysis of Risk and Return.” SSRN Working Paper.
  1. Dapper Labs (2021). “Flow Blockchain and the Legacy of ERC-721.” Dapper Labs Technical Documentation.