以太坊发币实战,使用web3.js从零构建你的第一个ERC20代币
在区块链生态中,以太坊作为“世界计算机”,凭借其智能合约平台地位,成为加密货币和去中心化应用(DApp)的核心基础设施,而ERC20代币标准(以太坊请求注解20)作为以太坊上代币的“通用语言”,让各类资产(如稳定币、治理代币、积分等)能够轻松在以太坊网络中流通。
要创建ERC20代币,除了编写智能合约外,还需要通过前端与区块链交互,完成合约部署、代币转账等操作。web3.js是以太坊官方提供的JavaScript库,它封装了与以太坊节点通信的接口,让开发者能够通过JavaScript直接调用智能合约、读写链上数据,是连接DApp前端与区块链的“桥梁”。
本文将以实战为核心,带你从零开始,使用Solidity编写ERC20代币合约,并通过web3.js实现合约部署与代币交互,最终完成一个完整的“以太坊发币”流程。
环境准备:搭建开发与测试环境
在开始编码前,我们需要准备以下工具和环境,确保后续开发顺利:
基础开发工具
- Node.js:JavaScript运行时环境(建议版本≥16),用于执行JavaScript代码和管理依赖。
- npm/yarn:包管理工具,用于安装web3.js等库。
- 代码编辑器:如VS Code,支持Solidity和JavaScript语法高亮。
区块链网络交互工具
- MetaMask:浏览器钱包插件,用于管理以太坊账户、私钥,以及连接测试网络/主网,下载并安装MetaMask后,需创建一个测试账户(点击“创建账户”),并记录12助记词(妥善保管,丢失即丢失资产)。
- 测试网络:为了避免在以太坊主网(Mainnet)上产生真实 gas 费用,我们使用Goerli测试网(一个公共测试网,可通过“网络”切换添加),前往Goerli水龙头(需支持MetaMask登录),免费获取测试以太坊(ETH),用于支付部署和交互的 gas 费。
智能合约开发工具
- Remix IDE:基于浏览器的Solidity智能合约开发环境,无需本地配置,支持编译、测试、部署合约,访问Remix IDE即可使用。
编写ERC20智能合约
ERC20标准定义了代币的6个核心接口(如totalSupply、balanceOf、transfer等),开发者可以直接继承OpenZeppelin提供的ERC20合约,快速实现标准代币功能,避免重复造轮子。
创建合约文件
打开Remix IDE,在“文件”面板中创建新文件,命名为MyToken.sol。
编写合约代码
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract MyToken is ERC20 {
constructor(string memory name, string memory symbol) ERC20(name, symbol) {
// 初始供应量:1000万代币,18位小数(ERC20标准)
_mint(msg.sender, 1000000 * 10**18);
}
}
代码解析:
SPDX-License-Identifier:开源协议标识,MIT协议允许自由使用和修改。pragma solidity ^0.8.20:指定Solidity编译器版本(0.8.20及以上,0.8.x以下兼容)。import "@openzeppelin/contracts/token/ERC20/ERC20.sol":引入OpenZeppelin的ERC20标准合约,它已实现所有ERC20接口。contract MyToken is ERC20:定义MyToken合约,继承ERC20合约,自动获得标准代币功能。constructor:构造函数,在合约部署时执行。name和symbol分别代表代币全称(如“My Token”)和简称(如“MTK”);_mint(msg.sender, 1000000 * 10**18)向部署者地址 mint 1000万代币(10**18是18位小数精度,符合ERC20标准)。
编译合约
在Remix IDE的“编译”面板(图标为锤子),确保编译器版本为8.20,点击“编译MyToken.sol”,若出现绿色对勾,表示编译成功。
使用web3.js部署合约
编写完合约后,我们需要通过web3.js将合约部署到以太坊测试网,这里以Goerli测试网为例,结合MetaMask和Infura(以太坊节点服务商)实现。
安装web3.js
在本地项目目录下(可通过终端创建my-token-project并进入),初始化npm项目并安装web3.js:
npm init -y npm install web3
连接以太坊节点
Infura提供免费的以太坊节点服务,注册后可创建Goerli测试网节点。
推荐阅读