What is an ERC-20 token: the complete explanation
What is an ERC-20 token? – An ERC-20 token is a fungible digital asset built on the Ethereum blockchain that follows a shared technical standard defining how the token behaves, how balances are tracked, and how transfers execute. Every compliant token, whether a dollar-pegged stablecoin, a governance instrument, or a utility asset for a specific application, conforms to the same rules.
Because that interface is universal, any wallet, exchange, or smart contract built for ERC-20 compatibility can interact with any compliant token without custom integration work. That shared specification is what made ERC-20 the foundation of Ethereum’s token economy.
What is the ERC-20 standard?
ERC-20 is a technical specification that establishes a common interface for fungible tokens deployed on Ethereum, defining precisely how balances are stored, how transfers execute, and how third-party contracts may interact with a token on a holder’s behalf. ERC stands for Ethereum Request for Comment, the process through which proposed changes to Ethereum are documented, debated, and formalized by the developer community. The “20” is the sequential number assigned to this particular proposal within that system.
The proposal process behind ERC-20
Ethereum improvement proposals, known as EIPs, pass through a structured review process before formal adoption. A developer submits a proposal, the community evaluates its design against existing systems, and once consensus forms, the proposal is recorded as a standard. ERC-20 was proposed by Fabian Vogelsteller and Vitalik Buterin in November 2015 and formalized as EIP-20 after community review.
Before ERC-20, every token project on Ethereum defined its own technical interface. One project might name its transfer function “send”; another might call it “move”; a third might track balances in a structurally different way. Wallets and exchanges required custom integration code for each token they wanted to support.
ERC-20 ended that fragmentation by specifying a mandatory interface that all compliant tokens share. Any code designed to work with one ERC-20 token automatically works with all of them.
What “fungible” means here
Fungibility means every unit of a token is identical to every other unit. One unit of a given ERC-20 token is interchangeable with any other unit of the same token; there is no distinction between individual units, and swapping equal amounts produces no change in value.
This is the same property that makes conventional currency function. Non-fungible tokens, governed by the ERC-721 standard, do not share this property: each NFT carries a unique identifier that distinguishes it from every other token in that collection.
How does an ERC-20 token work?
An ERC-20 token is not a self-contained asset with its own ledger. It exists as a smart contract, a piece of code deployed to and permanently recorded on the Ethereum blockchain, which maintains an internal mapping that associates Ethereum wallet addresses with token balances. When tokens are transferred, the contract updates those balance records.
Because the token contract runs on Ethereum, every on-chain action requires an Ethereum transaction. That transaction consumes computational resources, which users pay for as gas fees denominated in ETH. This applies regardless of which ERC-20 token is involved: interacting with any ERC-20 token on-chain requires holding ETH to cover gas costs.
The six mandatory functions
The ERC-20 specification requires every compliant token contract to expose six functions. A contract that omits any of these is not technically ERC-20 compliant, and standard wallets or interfaces may fail to recognize it correctly.
- totalSupply: Returns the total number of tokens in existence under that contract. The figure can be fixed at deployment or dynamic if the contract includes minting and burning logic, depending entirely on how the token is designed.
- balanceOf(address): Returns the token balance held by a specific Ethereum address. Wallets call this function to display holdings without needing to read the entire internal ledger.
- transfer(to, amount): Moves tokens from the calling address to a specified recipient. The function verifies the caller has a sufficient balance and updates both accounts atomically within the same transaction.
- transferFrom(from, to, amount): Allows an authorized third-party address, typically a smart contract, to move tokens from one address to another on behalf of the token owner. Decentralized exchanges use this function to execute trades on a user’s behalf after the user has granted an allowance.
- approve(spender, amount): Grants a specific address permission to spend up to a defined number of tokens on behalf of the owner. The owner retains their balance; the spender gains the right to initiate transfers up to the approved limit.
- allowance(owner, spender): Returns the remaining number of tokens a spender is still authorized to use on behalf of a given owner. This figure decreases with each transferFrom call and resets when approve is called again.
The three optional metadata functions
Three additional functions appear in the specification as optional. Most contracts implement them because wallets, exchanges, and block explorers depend on them to display token information accurately.
- name(): Returns the token’s full descriptive name, such as “Chainlink” or “USD Coin.” This is a display string with no effect on contract mechanics or balance logic.
- symbol(): Returns the shortened ticker identifier, such as “LINK” or “USDC.” Portfolio interfaces and exchanges use this label for display purposes.
- decimals(): Returns the number of decimal places the token supports. Most ERC-20 tokens use 18 decimal places to match ETH’s precision; dollar-pegged stablecoins often use 6, reflecting the granularity of the underlying fiat currency.
Events: Transfer and Approval
Beyond functions, the standard requires contracts to emit two types of events at defined moments. These events are recorded on-chain in transaction receipts and allow block explorers, analytics tools, and indexers to track activity without querying the contract’s state directly.
Transfer is emitted whenever token ownership changes, including at minting (where the source address is the zero address) and at burning (where the destination is the zero address). Approval is emitted when an owner calls the approve function, recording the authorized spender and amount publicly on-chain.
What are ERC-20 tokens used for?
The ERC-20 standard defines how a token behaves on Ethereum but places no restrictions on what it represents. A stablecoin, a governance instrument for a decentralized protocol, a utility asset, and a wrapped representation of a foreign asset can all be ERC-20 tokens. The interface is fixed; the purpose built around it is determined entirely by the surrounding contract design and the project behind it.
Utility tokens
Utility tokens grant holders access to a product, service, or protocol function. A decentralized file storage protocol might require its native ERC-20 token as payment for storage capacity. A blockchain oracle network might denominate data request fees in its own ERC-20 token.
The structural value of a utility token is tied to demand for the underlying service it enables.
Governance tokens
Decentralized protocols and DAOs (decentralized autonomous organizations) issue governance tokens that give holders voting rights over protocol decisions. Proposals covering fee structures, treasury allocations, and technical upgrades are put to a vote, with influence typically proportional to token balance held. This distributes decision-making authority across participants rather than concentrating it centrally.
Stablecoins
Several of the most widely transacted ERC-20 tokens are stablecoins, designed to maintain a pegged value relative to a reference asset, most commonly the US dollar. These tokens implement the standard ERC-20 interface while layering additional contract logic to manage peg maintenance. Fiat-backed designs hold reserves off-chain; algorithmic designs manage collateral entirely on-chain.
Wrapped tokens
Wrapped tokens are ERC-20 representations of assets that do not natively exist on Ethereum. Wrapped Bitcoin, for example, is an ERC-20 token designed to maintain one-to-one backing with bitcoin held in custody. The mechanism allows value from other blockchains to participate in Ethereum’s DeFi protocols, which expect the ERC-20 interface and cannot directly handle assets from foreign chains.
ERC-20 vs other token standards
ERC-20 is the dominant fungible token standard on Ethereum, but it is not the only one. Several alternatives handle use cases the original specification was not designed to address. Understanding where ERC-20 fits requires placing it alongside its main alternatives.
| Standard | Token type | Defining characteristic | Primary application |
|---|---|---|---|
| ERC-20 | Fungible | Uniform, interchangeable units | Currency, governance, stablecoins |
| ERC-721 | Non-fungible | Each token holds a unique identifier | Digital art, collectibles, credentials |
| ERC-1155 | Multi-token | One contract manages multiple token types | Gaming items, mixed asset collections |
| ERC-777 | Fungible (advanced) | Send/receive hooks for automated callbacks | Advanced DeFi token flows |
| ERC-4626 | Vault share | Standardized yield-bearing vault interface | DeFi yield strategies |
ERC-20 vs ERC-721
ERC-721 is the non-fungible token standard. Where ERC-20 tracks how many tokens an address holds, ERC-721 tracks which specific token IDs an address owns. Token ID 1 in an ERC-721 contract is a distinct item from token ID 2; neither substitutes for the other.
This uniqueness property makes ERC-721 appropriate for digital art, game items with individual provenance, or verifiable credentials where distinct identity matters.
ERC-20 vs ERC-1155
ERC-1155 allows a single contract to manage multiple token types simultaneously, both fungible and non-fungible. A game developer can represent in-game currency, equipment, and rare collectibles within one contract deployment rather than deploying separate contracts for each category. ERC-20 handles only one fungible token type per contract; ERC-1155 trades some simplicity for significantly broader scope.
ERC-20 vs ERC-777
ERC-777 is an advanced fungible token standard that extends ERC-20 with operator permissions and transaction hooks: functions that fire automatically when tokens are sent or received. These hooks let contracts react to incoming tokens without a separate approval step. The same hook mechanism has introduced reentrancy vulnerabilities in certain implementations, which has made security-focused protocols cautious about adopting it despite its technical advantages over ERC-20.
Limitations and risks of ERC-20 tokens
ERC-20 solved a real coordination problem in Ethereum’s token development environment, and its design has proven durable across years of adoption. That durability does not mean freedom from constraints. The standard’s architecture carries structural limitations, and the tokens built on it are subject to risks that compound the general risks already present in cryptocurrency markets.
ETH dependency for every transaction
Every ERC-20 action, including a basic transfer, is an Ethereum transaction requiring gas paid in ETH. A wallet holding only ERC-20 tokens with no ETH cannot execute any on-chain action with those tokens. This creates a practical onboarding friction: acquiring an ERC-20 token without also acquiring ETH leaves that token functionally immobile on-chain.
The approval mechanism and its risks
The approve and transferFrom combination enables powerful DeFi composability, allowing users to authorize protocols to move tokens on their behalf. But approvals are persistent by default. An unlimited approval granted to a protocol remains valid indefinitely unless the user explicitly revokes it.
If that protocol is later exploited or contains logic errors, the outstanding approval gives an attacker a valid pathway to drain the user’s approved token balance. Auditing and revoking stale token approvals is a security practice that experienced on-chain participants treat as routine maintenance.
Tokens lost to incompatible contract addresses
ERC-20’s transfer function does not verify whether a recipient address belongs to a wallet or a smart contract, or whether that contract is equipped to receive tokens. Sending ERC-20 tokens to a contract with no mechanism to forward or hold them renders those tokens permanently inaccessible. This failure mode has contributed meaningfully to the volume of tokens permanently removed from circulation across the Ethereum ecosystem over time.
Smart contract code risk
An ERC-20 token is software, and its security is bounded by the quality of its contract code. Logic errors, arithmetic vulnerabilities, and access control flaws have led to token losses and exploits. Contracts deployed without formal security audits carry heightened technical risk.
Even audited contracts carry residual risk, as audits evaluate known vulnerability patterns rather than guaranteeing correctness. Immutable contracts cannot be patched after deployment unless they include explicit upgrade mechanisms, which introduce their own design trade-offs.
Counterfeit tokens
The ERC-20 standard is permissionless: any address can deploy a contract using any name and ticker symbol. Malicious actors routinely deploy tokens that mimic the names and tickers of legitimate projects.
The only reliable method of confirming a token’s identity is verifying its contract address against the project’s official documentation. Display names and ticker symbols shown in wallets are not sufficient for identification on their own.
FAQs
The following questions address common points of confusion around what ERC-20 tokens are, how they work technically, and the risks associated with using them.
What is an ERC-20 token in simple terms? An ERC-20 token is a type of cryptocurrency that runs on the Ethereum blockchain and follows a standardized technical interface. That interface specifies how balances are tracked, how transfers execute, and how smart contracts interact with the token. Any ERC-20-compatible wallet or exchange can handle any compliant token without additional setup.
Do I need ETH to send ERC-20 tokens? Yes. Every ERC-20 transaction runs on Ethereum and requires gas fees paid in ETH. Holding an ERC-20 token without any ETH in the same wallet means no on-chain action with those tokens is possible until ETH is acquired. This applies to transfers, approvals, and interactions with any DeFi protocol.
Can ERC-20 tokens work on blockchains other than Ethereum? True ERC-20 tokens exist only on Ethereum. Other EVM-compatible networks such as BNB Chain and Polygon use technically identical interfaces, but tokens on those networks are distinct assets on separate ledgers. Bridging a token to another network creates a new wrapped representation, not the original ERC-20 token.
How is an ERC-20 token different from ETH? ETH is Ethereum’s native protocol asset and predates the ERC-20 standard. ERC-20 tokens are secondary assets created by smart contracts running on Ethereum. ETH does not follow the ERC-20 interface; developers use Wrapped Ether (WETH), an ERC-20 token backed one-to-one by ETH, when DeFi protocols require a standard token interface for ETH-denominated value.
What determines how many ERC-20 tokens can exist? Supply rules are encoded in the token’s smart contract at deployment. A contract can enforce a hard cap that prevents additional minting, allow controlled minting through a governance process, or permit uncapped issuance. The ERC-20 standard places no restrictions on supply design; that choice belongs entirely to the contract developer.
Is an ERC-20 token the same as an NFT? No. ERC-20 tokens are fungible: every unit is identical and interchangeable. NFTs follow the ERC-721 or ERC-1155 standard and are non-fungible: each token carries a unique ID distinguishing it from all others. Exchanging one ERC-20 token for another of the same type produces no change in value; exchanging one NFT for another involves two entirely distinct items.
Why do some ERC-20 tokens use 6 decimal places instead of 18? Decimal precision is a design choice embedded in the contract. Most tokens use 18 decimal places to mirror ETH’s precision. Dollar-pegged stablecoins often use 6 decimals, reflecting the two-decimal precision of the underlying fiat currency while providing sufficient granularity for on-chain accounting. The decimals function communicates this choice to wallets so balances display correctly.
Disclaimer
This article is written for educational and informational purposes only. It does not constitute financial, investment, or legal advice, and nothing here should be interpreted as a recommendation to buy, sell, or hold any asset. Cryptocurrency markets carry significant risk, including the potential for complete loss of principal. Readers should conduct independent research and consult qualified professionals before making any financial decisions.
Understanding what is an ERC-20 token ultimately means grasping two things at once: a narrow technical specification and a broad coordination mechanism. The six mandatory functions are precise rules. Their consequence — an environment where thousands of tokens are composable by default, where any compatible wallet handles any compliant token without bespoke integration — is the practical result of that precision.
The standard succeeded not because it was ambitious in scope, but because it was exact enough to be followed consistently and flexible enough to accommodate applications its designers did not anticipate.
Let our warm library welcome you back every time life feels too heavy—find our healing insights here.