Ethereum: Smart Contracts in Practice
ERC-721: Ownership of Unique Assets · 1/2

Fungible vs. non-fungible, and why the interface differs

metadataimage/assetToken #4821owner: 0x71a...

ERC-20 tokens are fungible: any one unit is interchangeable with any other, which is why the standard only needs to track a single balance number per address. ERC-721 tokens are non-fungible, meaning each token has a unique identifier, a `tokenId`, and the contract tracks exactly which address owns each individual ID rather than a simple balance. `ownerOf(tokenId)` returns the current owner of one specific token, and `transferFrom` moves that one specific token, not an arbitrary amount of an interchangeable pool.

This is the right model for anything where individual identity matters: a specific piece of digital art, a specific in-game item, a specific ticket to a specific seat. Two ERC-20 tokens of the same contract are always worth exactly the same, but two ERC-721 tokens from the same collection can have completely different value and properties, because each one is tracked and referenced individually on-chain.