以太坊ERC20代币合约开发指南,从零开始编写你的第一个代币

博主:neragonerago 2026-09-15 07:52:29 8

在以太坊生态中,ERC20是以太坊上最主流的代币标准之一,它定义了一套统一的接口规范,使得不同的代币可以在以太坊网络上兼容交互,被交易所、钱包等工具广泛支持,无论是创建社区代币、治理代币,还是项目方发行的 utility 代币,ERC20 都是最基础的选择,本文将从零开始,带你了解如何编写一个标准的 ERC20 代币合约,并完成部署与测试。

ERC20 标准简介:为什么需要 ERC20?

ERC20(Ethereum Request for Comments 20)是以太坊社区提出的代币标准,发布于 2015 年,它规范了以太坊代币的核心功能,包括:

  • 总供应量totalSupply):代币的总量固定或可增发。
  • 余额查询balanceOf):查询指定地址的代币余额。
  • 转账transfer):地址之间直接转账,无需授权。
  • 授权转账transferFrom):通过 approve 授权后,由第三方地址代为转账(如交易所充值)。
  • 授权管理approve/allowance):授权其他地址使用一定数量的代币,并支持撤销授权。

通过遵循 ERC20 标准,代币可以天然兼容 MetaMask、MyEtherWallet 等钱包,以及 Uniswap、SushiSwap 等去中心化交易所,极大提升了生态兼容性。

开发环境准备:工具与依赖

编写 ERC20 合约无需复杂的本地环境,我们推荐使用 Remix IDE——一个基于浏览器的 Solidity 开发环境,支持编译、部署、测试,适合新手快速上手。

必要工具:

  1. 浏览器:Chrome、Firefox 等现代浏览器。
  2. Remix IDE:访问 remix.ethereum.org 即可使用,无需安装。
  3. MetaMask 插件:用于管理以太坊账户,连接测试网或主网。

编写 ERC20 合约:从零开始实现

创建 Solidity 文件

在 Remix IDE 中,点击 “Create New File”,命名为 MyToken.sol(文件名需以 .sol

导入 OpenZeppelin 合约库

为了避免重复造轮子并确保安全性,我们使用 OpenZeppelin——一个开源的智能合约库,提供了经过审计的 ERC20 标准、安全工具等。

MyToken.sol 中,首先导入 OpenZeppelin 的 ERC20 合约:

// SPDX-License-Identifier: MIT  
pragma solidity ^0.8.20;  
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";  
  • SPDX-License-Identifier: MIT:声明许可证类型(MIT 是开源许可证,允许自由使用)。
  • pragma solidity ^0.8.20:指定 Solidity 编译器版本(^0.8.20 表示兼容 0.8.20 及以上 0.9 以下的版本)。
  • import "@openzeppelin/contracts/token/ERC20/ERC20.sol":导入 OpenZeppelin 的 ERC20 合约。

继承 ERC20 并实现自定义逻辑

我们创建一个 MyToken 合约,继承 OpenZeppelin 的 ERC20,并在构造函数中初始化代币的基本信息(名称、符号)和初始供应量。

contract MyToken is ERC20 {  
    // 构造函数:初始化代币名称、符号和初始供应量  
    constructor(string memory name, string memory symbol, uint256 initialSupply) ERC20(name, symbol) {  
        // 将 initialSupply 数量的代币铸造给部署者(msg.sender)  
        _mint(msg.sender, initialSupply);  
    }  
}  
  • contract MyToken is ERC20:表示 MyToken 合约继承 ERC20,自动获得所有 ERC20 标准功能(如 transferbalanceOf 等)。
  • constructor:合约的构造函数,仅在部署时执行一次。
  • ERC20(name, symbol):调用父类(ERC20)的构造函数,设置代币名称(如 “My Token”)和符号
The End

发布于:2026-09-15,除非注明,否则均为区块链社区- 欧亿APP下载原创文章,转载请注明出处。