0Pricing
Blockchain Smart Contracts with Solidity · Lesson

ERC-20 Fungible Token Standard

Understand the specifications and functionalities of the ERC-20 standard for creating interchangeable tokens.

ERC-20 Fungible Token Standard is a free Blockchain Smart Contracts with Solidity lesson on CoddyKit — lesson 1 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the Blockchain Smart Contracts with Solidity learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.

Intro to Blockchain Tokens

Welcome to the world of blockchain tokens! Beyond cryptocurrencies like Ether, blockchains host many other digital assets.

These assets, often called 'tokens', can represent anything from digital currency to ownership of real-world items, or even voting rights in a decentralized organization.

Fungibility: Interchangeable Assets

A key concept for tokens is fungibility. What does it mean?

  • Fungible: Each unit is identical and interchangeable with another. Like a dollar bill – one $1 bill is the same as any other $1 bill.
  • Non-Fungible: Each unit is unique and cannot be replaced by another. Like a piece of art or a specific house.

ERC-20 tokens are fungible, meaning every token is equal to every other token of the same type.

Meet the ERC-20 Standard

ERC-20 (Ethereum Request for Comment 20) is a technical standard for fungible tokens on the Ethereum blockchain.

It defines a common set of rules that all compliant tokens must follow. This ensures they can interact seamlessly with wallets, exchanges, and other smart contracts.

Interoperability Through Standards

Why is a standard so important?

  • Compatibility: Any wallet that supports ERC-20 can manage any ERC-20 token.
  • Ecosystem Growth: Decentralized applications (dApps) can easily integrate different tokens.
  • Predictable Behavior: Developers know exactly how an ERC-20 token will behave, making integration safer and faster.

Core Function: `totalSupply()`

The totalSupply() function returns the total number of tokens in existence. It's a public view function, meaning it doesn't change the blockchain state and costs no gas to call.

Try running this simple contract to see how totalSupply might be represented:

pragma solidity ^0.8.0;

contract SimpleTokenInfo {
    uint256 public totalTokens = 1000; // Example supply

    function totalSupply() public view returns (uint256) {
        return totalTokens;
    }
}

Core Function: `balanceOf()`

The balanceOf(address account) function returns the token balance of a specific address. It helps you check how many tokens a user owns.

Let's add balanceOf to our example. The deployer will start with all tokens.

pragma solidity ^0.8.0;

contract SimpleTokenInfo {
    uint256 public totalTokens = 1000;
    mapping(address => uint256) public balances;

    constructor() {
        balances[msg.sender] = totalTokens; // Assign all to deployer
    }

    function totalSupply() public view returns (uint256) {
        return totalTokens;
    }

    function balanceOf(address account) public view returns (uint256) {
        return balances[account];
    }
}

Core Function: `transfer()`

The transfer(address recipient, uint256 amount) function allows the sender of the transaction to send tokens directly to another address.

This is the most common way to move tokens between users.

pragma solidity ^0.8.0;

contract SimpleTokenInfo {
    uint256 public totalTokens = 1000;
    mapping(address => uint256) public balances;

    constructor() {
        balances[msg.sender] = totalTokens;
    }

    function totalSupply() public view returns (uint256) {
        return totalTokens;
    }

    function balanceOf(address account) public view returns (uint256) {
        return balances[account];
    }

    function transfer(address recipient, uint256 amount) public returns (bool) {
        require(balances[msg.sender] >= amount, "Insufficient balance");
        balances[msg.sender] -= amount;
        balances[recipient] += amount;
        return true;
    }
}

Delegated Transfers: `approve()` & `allowance()`

ERC-20 also supports delegated transfers, where one user (the owner) allows another address (the spender) to move tokens on their behalf.

  • approve(address spender, uint256 amount): The owner grants permission to a spender to withdraw a specific amount of tokens.
  • allowance(address owner, address spender): Returns the amount of tokens that the spender is currently allowed to withdraw from the owner.

Executing Delegated Transfers: `transferFrom()`

Once an approve() call has been made, the designated spender can then use the transferFrom() function.

transferFrom(address sender, address recipient, uint256 amount): Allows a spender to transfer amount tokens from the sender's balance to the recipient, provided the spender has enough allowance from the sender.

Tracking Actions: ERC-20 Events

ERC-20 defines two standard events: Transfer and Approval. These events are crucial for off-chain applications (like wallets or block explorers) to track token movements and approvals without having to read the entire blockchain state.

They emit logs that can be efficiently indexed and queried.

pragma solidity ^0.8.0;

contract EventExample {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);

    function demonstrateTransferEvent(address _to, uint256 _value) public {
        // Imagine actual transfer logic here
        emit Transfer(msg.sender, _to, _value);
    }

    function demonstrateApprovalEvent(address _spender, uint256 _value) public {
        // Imagine actual approval logic here
        emit Approval(msg.sender, _spender, _value);
    }
}

Check Your Understanding

The ERC-20 standard outlines specific functions that all compliant tokens must implement. Understanding these is crucial for working with tokens.

ERC-20: Your Token Blueprint

You've now learned about the ERC-20 Fungible Token Standard! It's the blueprint for most interchangeable tokens on Ethereum.

  • It defines core functions like totalSupply(), balanceOf(), and transfer().
  • It enables delegated transfers with approve(), allowance(), and transferFrom().
  • Standard events Transfer and Approval help track token activity.

This standard ensures that all ERC-20 tokens are compatible, making the Ethereum ecosystem robust and easy to navigate. Next, we'll dive into implementing your own ERC-20 token!

Frequently asked questions

Is the “ERC-20 Fungible Token Standard” lesson free?

Yes — the full text of “ERC-20 Fungible Token Standard” is free to read here on the web, and the Blockchain Smart Contracts with Solidity course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the Blockchain Smart Contracts with Solidity course, upgrade to CoddyKit PRO.

What will I learn in “ERC-20 Fungible Token Standard”?

Understand the specifications and functionalities of the ERC-20 standard for creating interchangeable tokens. You practise Blockchain Smart Contracts with Solidity with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.

Do I need any experience to start Blockchain Smart Contracts with Solidity?

No prior experience is required. Blockchain Smart Contracts with Solidity on CoddyKit is structured for beginners through advanced learners; this is — lesson 1 of 4, so you can start here or from the beginning and move at your own pace.

How long does the “ERC-20 Fungible Token Standard” lesson take?

Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.

Can I write and run code in this Blockchain Smart Contracts with Solidity lesson?

Yes. Every Blockchain Smart Contracts with Solidity lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.

All lessons in this course

  1. ERC-20 Fungible Token Standard
  2. Implementing an ERC-20 Token
  3. ERC-721 Non-Fungible Tokens (NFTs)
  4. ERC-1155 Multi-Token Standard
← Back to Blockchain Smart Contracts with Solidity