Crypto
2 min read

ERC-20

The dominant Ethereum token standard for fungible tokens. ERC-20 defines a common set of functions (transfer, balanceOf, approve) that wallets and dApps rely on to interact with any compliant token.

What ERC-20 defines

ERC-20 specifies a small set of required functions every fungible token contract must implement:

  • totalSupply() — total tokens in existence.
  • balanceOf(address) — balance for a given address.
  • transfer(to, amount) — send tokens from caller to another address.
  • transferFrom(from, to, amount) — spend tokens approved for use by caller.
  • approve(spender, amount) — authorize another address to spend on caller's behalf.
  • allowance(owner, spender) — check approved spending limits.

Plus two events (Transfer, Approval) that wallets and indexers use to track activity.

Every wallet, DEX, lending protocol, and indexer is built around this interface. A new ERC-20 token deployed today works with all this infrastructure automatically — that's the standard's main value.

What ERC-20 doesn't standardize

A few choices remain up to each contract:

  • Decimals — most tokens use 18 (matching ETH); USDC and USDT use 6; WBTC uses 8. The decimal count is part of the interface but not standardized across tokens.
  • Symbol and name — readable strings but not globally unique. Multiple tokens can claim the same symbol.
  • Mintability and burnability — some tokens are fixed-supply; some allow minting (often controlled by an owner or governance); some have burn mechanics.
  • Fee-on-transfer logic — some tokens deduct a fee on every transfer (a "rebase" or "tax" token). These break naive integrations because the amount received is less than the amount sent.

Famous ERC-20s

A few that shaped crypto:

  • USDC, USDT — the dominant stablecoins. Hundreds of billions of supply combined.
  • DAIMakerDAO's decentralized stablecoin.
  • WBTCwrapped Bitcoin; brings BTC into Ethereum's ecosystem.
  • UNI, AAVE, MKR, COMP — major DeFi governance tokens.
  • LINKChainlink's token.
  • stETHLido's liquid staking token.

The approval pattern and risks

The two-step "approve, then transferFrom" pattern lets contracts pull tokens from users when needed (for DEX swaps, staking, etc.). The downside: malicious or compromised contracts with broad approvals can drain wallets.

Common best practices:

  • Approve specific amounts, not unlimited. Many wallets default to "infinite approval" which is convenient but riskier.
  • Revoke unused approvals. Tools like revoke.cash let users see and remove old approvals.
  • Permit (ERC-20 with EIP-2612) — newer pattern using off-chain signatures instead of separate approve transactions. Saves gas and reduces some attack surface.

Beyond Ethereum

ERC-20 was Ethereum's standard, but the same interface has been adopted across most EVM-compatible chains: Polygon, Arbitrum, Optimism, Base, BNB Chain, Avalanche. Tokens with the same name often exist on multiple chains, bridged between them or natively issued on each.

Non-EVM chains have their own equivalents: SPL on Solana, TIP-20 / TRC-20 on Tron, Aptos and Sui have Move-native standards. Each is functionally similar but not directly interoperable without a bridge.

Why ERC-20 has been so durable

The standard hasn't been substantially revised since 2015. Newer proposals (ERC-777, ERC-1363) added features but didn't displace ERC-20 in practice. The simplicity is the strength: every wallet supports it; every dApp expects it; new infrastructure is built assuming it. Network effects have entrenched the standard well past where its technical limitations would otherwise have led to replacement.

The standard's age is itself a feature for institutional adoption — there's a decade of audits, exploits, and learnings around it that newer standards don't have.