以太坊ERC20代币制作全教程,从零开始创建你的第一个代币
在区块链世界中,ERC20是以太坊上最通用的代币标准之一,它规范了代币的基本功能(如转账、授权、余额查询等),使得不同代币能在以太坊生态中兼容互通,无论是项目方发行治理代币、社区创建 meme 代币,还是开发者构建 DeFi 协议中的中间代币,ERC20 都是最基础的工具,本文将带你从零开始,手把手教你制作一枚属于自己的 ERC20 代币,无需深厚编程基础,跟着步骤就能完成。
准备工作:创建代币前的必备工具
在开始编写代码之前,你需要准备好以下工具和环境,它们是制作 ERC20 代币的“基础设施”:
MetaMask 钱包
MetaMask 是一款浏览器插件钱包,用于管理以太坊账户、私钥,并与智能合约交互(如部署合约、转账代币)。
- 安装方式:前往 MetaMask 官网(metamask.io)下载浏览器插件(支持 Chrome、Firefox、Edge 等),按照提示创建钱包并备份好助记词(务必妥善保管,丢失后将无法恢复资产)。
- 获取测试网 ETH:由于部署智能合约需要支付 Gas 费,建议先在以太坊测试网(如 Sepolia、Goerli)上测试,可通过水龙头(faucet)免费获取测试网 ETH,Sepolia 水龙头(sepoliafaucet.com)。
Remix IDE
Remix 是一款基于浏览器的智能合约开发环境,无需本地安装环境,支持 Solidity 编程语言的编写、编译、测试和部署,是新手开发以太坊合约的首选工具。
- 访问方式:直接打开浏览器访问 remix.ethereum.org 即可使用。
基础概念了解
- ERC20 标准:以太坊社区制定的代币接口规范,包含
totalSupply()(总供应量)、balanceOf(address)(地址余额)、transfer(address,uint256)(转账)、transferFrom(address,address,uint256)(授权转账)、approve(address,uint256)(授权)等核心函数。 - Solidity:以太坊智能合约的编程语言,类似 JavaScript,需了解基本语法(如变量、函数、修饰符等)。
- Gas:以太坊网络中执行操作(如部署合约、转账)所需的费用,单位为 Gwei(1 ETH = 10⁹ Gwei)。
编写 ERC20 代币智能合约
Remix IDE 提供了可视化界面,我们可以直接在线编写合约,这里推荐使用 OpenZeppelin 的 ERC20 合约库——它是目前最安全、最广泛使用的合约标准,避免了重复造轮子,降低了代码漏洞风险。
步骤1:在 Remix 中创建新文件
打开 Remix IDE,点击左侧“文件”图标(📄),然后点击“Create New File”,命名为 MyToken.sol(文件名后缀 .sol 表示 Solidity 合约)。
步骤2:编写合约代码
在 MyToken.sol 文件中,输入以下代码(代码已添加详细注释,方便理解):
// SPDX-License-Identifier: MIT // 指定许可证,标识合约的版权信息
pragma solidity ^0.8.20; // 指定 Solidity 版本(0.8.20 是较新的稳定版本)
import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; // 导入 OpenZeppelin 的 ERC20 合约
contract MyToken is ERC20 { // 继承 ERC20 合约,自动实现所有 ERC20 标准功能
constructor(string memory name, string memory symbol) ERC20(name, symbol) { // 构造函数,初始化代币名称和符号
_mint(msg.sender, 1000000 * 10**18); // 向合约部署者(msg.sender)铸造 100 万代币,10**18 是 18 位小数(ERC20 标准建议)
}
}
代码解析:
SPDX-License-Identifier: MIT:声明合约使用 MIT 许可证(开源,可自由使用)。pragma solidity ^0.8.20:指定 Solidity 编译器版本(^0.8.20表示兼容 0.8.20 及以上 0.9.0 以下的版本)。import "@openzeppelin/contracts/token/ERC20/ERC20.sol":从 OpenZeppelin 导入 ERC20 标准合约,避免手动编写复杂的函数逻辑。contract MyToken is ERC20:定义MyToken合约,并继承ERC20,这样MyToken自动拥有transfer、balanceOf等功能。constructor(string memory name, string memory symbol):构造函数,在合约部署时自动执行,用于初始化代币的名称(如 "My Token")和符号(如 "MYT")。_mint(msg.sender, 1000000 * 10**18):_mint是 ERC20 合约中的内部函数,用于铸造代币。msg.sender是部署合约的地址(即你的 MetaMask 钱包地址),1000000 * 10**18表示铸造 100 万代币,乘以10**18是因为 ERC20 标准要求代币必须有 18 位小数(类似以太坊的 ETH,最小单位是 wei)。
编译智能合约
编写完代码后,需要将 Solidity 代码编译成以太坊虚拟机(EVM)能够执行的字节码。
步骤1:选择 Solidity 编译器版本
在 Remix IDE 左侧,点击“编译器”图标(⚙️),确保编译器版本与代码中指定的版本一致(如 8.20),如果未显示,点击“Auto Compile”右侧的“手动编译”,然后在“编译器”下拉菜单中选择对应版本。
步骤2:编译合约
点击“编译”按钮(蓝色图标),如果代码无误,Remix 会在下方显示 MyToken.sol 编译成功,并生成 ABI(应用程序二进制接口,定义合约与外部交互的函数接口)和 Bytecode(字节码,EVM 可执行的机器码)。
- ABI:后续与合约交互时需要用到,可点击“编译”下方的
MyToken.sol展开后复制 ABI。 - Bytecode:部署合约时需要用到,Remix 会自动填充,无需手动复制。
部署 ERC20 代币
编译成功后,即可将合约部署到以太坊网络(测试网或主网),这里以 Sepolia 测试网 为例(主网操作类似,但需要真实 ETH 支付 Gas 费)。
步骤1:切换到部署环境
在 Remix IDE 左侧,点击“部署”图标(🚀),然后在“ENVIRONMENT”下拉菜单中选择“Injected Provider - MetaMask”,Remix 会自动连接你的 MetaMask 钱包,并在 MetaMask 弹窗中确认当前网络是否为 Sepolia 测试网(如果不是,需在 MetaMask 中
推荐阅读