基于以太坊实现代币发布(ERC-20 标准详解与实践)
随着区块链技术的快速发展,以太坊(Ethereum)已经成为全球最流行的智能合约平台之一,在以太坊上发布自己的代币(Token)是进入区块链开发世界的重要一步,本文将详细介绍如何基于以太坊 ERC-20 标准,从零开始实现一个属于自己的代币,包括环境准备、合约编写、编译部署以及测试验证的完整流程。
什么是 ERC-20?
ERC-20(Ethereum Request for Comments 20)是以太坊上代币合约的统一标准接口,于 2015 年提出,正因为有了这个标准,各种钱包、交易所才能无缝支持成千上万种代币。
ERC-20 规定了代币合约必须实现的核心方法:
| 方法/事件 | 说明 |
|---|---|
totalSupply() |
返回代币总供应量 |
balanceOf(address) |
查询某地址的代币余额 |
transfer(address, uint256) |
转账 |
approve(address, uint256) |
授权第三方花费代币 |
allowance(address, address) |
查询授权额度 |
transferFrom(...) |
被授权方代为转账 |
event Transfer |
转账事件 |
event Approval |
授权事件 |
环境准备
在开始编写代码之前,我们需要准备以下工具:
- MetaMask 钱包:浏览器插件版数字钱包,用于管理账户和签名交易。
- Remix IDE:以太坊官方推荐的在线智能合约开发环境,访问
https://remix.ethereum.org即可使用,无需本地安装。 - 测试网 ETH:部署合约需要消耗 Gas,建议先在测试网(如 Sepolia)上练习,可通过水龙头(Faucet)免费领取测试币。
- Solidity 基础知识:了解合约、状态变量、事件等基本概念。
💡 提示:在 MetaMask 中打开网络选择器,添加 Sepolia 测试网络,确保账户中有足够的测试 ETH。
编写代币智能合约
1 手写简化版 ERC-20 合约
为了理解底层原理,我们先手写一个简化版的代币合约:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract MyToken {
string public name = "My Token"; // 代币名称
string public symbol = "MTK"; // 代币符号(类似 ticker)
uint8 public decimals = 18; // 小数位数,18 为惯例
uint256 public totalSupply; // 代币总供应量
// 余额映射表:地址 => 余额
mapping(address => uint256) public balanceOf;
// 授权映射表:owner => (spender => 额度)
mapping(address => mapping(address => uint256)) public allowance;
// ERC-20 标准事件
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
// 构造函数:部署时铸造初始供应量,全部给部署者
constructor(uint256 _initialSupply) {
totalSupply = _initialSupply * 10 ** uint256(decimals);
balanceOf[msg.sender] = totalSupply;
}
// 转账
function transfer(address _to, uint256 _value) public returns (bool success) {
require(balanceOf[msg.sender] >= _value The End
发布于:2026-09-24,除非注明,否则均为原创文章,转载请注明出处。
