EVM Token Standards Overview

Every wallet, DEX, and dApp on Ethereum can handle a token it has never seen because token standards define the interface: how a token behaves, transfers, and interacts with the software around it. Four standards cover most of what I read and build against in practice, ERC-20, ERC-1155, ERC-6909, and ERC-7281, and between them they describe how a large share of the Web3 economy moves.

EVM Token Standards

ERC-20: the fungible token blueprint

ERC-20, launched in 2015, is Ethereum's original token standard. It defines the functions for fungible tokens, which are identical and interchangeable like currency.

Its interface is small:

  • Each token contract represents one asset type.
  • The core functions are transfer, approve, transferFrom, balanceOf, and totalSupply.
  • Adoption is universal across DeFi, DAOs, and token sales.

ERC-20 is the format for stablecoins such as USDC and DAI, governance tokens such as UNI and AAVE, and wrapped assets such as WBTC, which makes it the base layer of DeFi protocols and most decentralized applications.

Its limits come from the one-asset-per-contract design, so it has no batch operations and does not fit NFTs or multi-token systems.

ERC-1155: multiple assets in one contract

ERC-1155, introduced by Enjin in 2018, is a multi-token standard in which one contract represents many token types, both fungible and non-fungible. It supports batch operations and mints and transfers several assets in one call.

That shape suits games, where weapons, armor, and currency can live in one contract, as well as digital collectibles and metaverse economies. The trade-off is implementation complexity, since safe interactions require safeTransferFrom and the onERC1155Received callback.

ERC-6909: the lean multi-token standard

ERC-6909 is a newer, lighter alternative to ERC-1155 for DeFi protocols that need many fungible asset types in one contract. It keeps a minimal interface for managing token types, drops the mandatory callbacks, adds per-token allowances where ERC-1155 only has global operator approvals, and costs less gas than both ERC-20 and ERC-1155.

It fits vault shares, LP positions such as those in the Uniswap v4 PoolManager, and tokenized funds with several share classes, all without the operational overhead of ERC-1155.

ERC-7281: cross-chain token identity

Update (2026): At publication I described ERC-7281 as a chainId() identity extension. The EIP is actually Sovereign Bridged Tokens (xERC20): issuer-controlled mint/burn with per-bridge rate limits and an optional Lockbox wrapper. The section below reflects my original write-up, not the authoritative standard.

ERC-7281 introduces a standard interface for identifying tokens across chains by embedding the chainId in the token's interface.

As multichain ecosystems grow, token identity gets ambiguous, since USDC on Ethereum L1 and USDC on Arbitrum may be entirely different tokens, and ERC-7281 aims to prevent the resulting confusion, spoofing, and misrepresentation in dApps, bridges, and explorers. It does that in four ways:

  • It adds a chainId() function to token interfaces.
  • It extends symbol(), name(), and decimals() with optional chainId-aware context.
  • It lets wallets and protocols tell tokens apart across L1s, L2s, and sidechains.
  • It supports bridge security and cross-chain composability.

That makes it useful for cross-chain token registries, safer bridging and routing, and dApps that show accurate token information across chains. ERC-7281 complements ERC-20, ERC-1155, and ERC-6909 by giving their tokens global uniqueness, and it does not replace any of them.

How the four standards compare

FeatureERC-20ERC-1155ERC-6909ERC-7281
Token Types1 FungibleMany (Fungible + NFTs)Many (Fungible)Any (extension)
Batch OperationsNoYesNoN/A
Transfer CallbacksNoYesNoN/A
NFT SupportNoYesNoNo (enhancement)
Approval ModelPer-addressGlobal operatorGlobal + Per-IDN/A
Cross-Chain AwarenessNoNoNoYes via chainId()
Gas EfficiencyMediumHighHighestDepends on base
UsageTokensGames, NFTsDeFi vaultsWallets, bridges

Each standard has its own job:

  • ERC-20 is the default for plain fungible assets.
  • ERC-1155 fits multi-asset and NFT-heavy environments like games.
  • ERC-6909 is the leaner pattern for multi-token DeFi applications.
  • ERC-7281 gives tokens a cross-chain identity so they aren't confused across the ecosystem.

The newer standards are leaner because protocols need cheaper, more composable financial plumbing, and when I build a dApp, wallet, or protocol I choose the standard as part of the product design, based on how many asset types it holds, how approvals should work, and which chains it has to reach.

Related writing