ERC20以太坊Web3实例教程,从零开始掌握代币交互开发
在以太坊生态中,ERC20是最广泛使用的代币标准,几乎所有基于以太坊的代币(如USDT、USDC、LINK等)都遵循这一标准,而Web3.js则是连接前端应用与以太坊区块链的桥梁,本文将通过完整的实例,带你一步步掌握如何使用Web3.js与ERC20代币合约进行交互,包括查询余额、转账、授权等核心操作。
什么是ERC20标准?
ERC20(Ethereum Request for Comments 20)是以太坊上代币合约的标准接口规范,一个符合ERC20标准的合约必须实现以下核心方法:
totalSupply()— 返回代币总供应量balanceOf(address)— 查询某地址的代币余额transfer(address, uint256)— 转账approve(address, uint256)— 授权额度allowance(address, address)— 查询授权额度transferFrom(address, address, uint256)— 授权转账
同时包含两个标准事件:Transfer(转账事件)和 Approval(授权事件)。
环境准备
在开始之前,需要安装以下工具:
# 初始化项目 npm init -y # 安装web3.js npm install web3
你还需要:
- 一个以太坊节点服务:推荐使用 Infura 或 Alchemy,注册后可获取免费的API密钥
- 测试网ETH:开发阶段建议使用 Sepolia 测试网,可通过水龙头免费领取
- 测试代币合约:可以自己部署一个,或使用已部署的测试代币
编写并部署一个简单的ERC20合约
使用OpenZeppelin库可以快速创建一个安全的ERC20代币:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract MyToken is ERC20 {
constructor() ERC20("My Token", "MTK") {
// 铸造100万枚代币给部署者
_mint(msg.sender, 1000000 * 10 ** decimals());
}
}
可以用 Remix(remix.ethereum.org)在线编译并部署到测试网,记下部署后的合约地址,后续会用到。
Web3.js实战实例
实例1:初始化Web3并连接以太坊
const { Web3 } = require('web3');
// 使用Infura节点连接
const web3 = new Web3('https://sepolia.infura.io/v3/你的项目ID');
async function init() {
const blockNumber = await web3.eth.getBlockNumber();
console.log('当前区块高度:', blockNumber);
const chainId = await web3.eth.getChainId();
console.log('链ID:', chainId);
}
init();
实例2:查询ERC20代币基本信息
与合约交互需要定义ABI(应用二进制接口),以下是精简版ABI:
const minABI = [
{
constant: true,
inputs: [],
name: 'name',
outputs: [{ name: '', type: 'string' }],
type: 'function'
},
{
constant: true,
inputs: [],
name: 'symbol',
outputs: [{ name: '', type: 'string' }],
type: 'function'
},
{
constant: true,
inputs: [],
name: 'decimals',
outputs: [{ name: '', type: 'uint8' }],
type: 'function'
},
{
constant: true,
inputs: [],
name: 'totalSupply',
outputs: [{ name: '', type: 'uint256' }],
type: 'function'
},
{
constant
The End
发布于:2026-09-27,除非注明,否则均为原创文章,转载请注明出处。

