【学习笔记】【区块链】以太坊开发入门-ERC20发行代币
ERC20 是以太坊区块链上最广泛使用的代币标准,用于规范 fungible token(可替代代币)的发行和交互,例如 USDT、UNI 等代币均遵循 ERC20 标准。
一、ERC20 的核心作用
ERC20 定义了代币必须实现的一套通用接口(函数和事件),确保不同代币在以太坊生态中能被钱包、交易所、DApp 等统一识别和交互。核心功能包括:
- 代币基本信息:如名称(name)、符号(symbol)、小数位数(decimals)、总供应量(totalSupply)。
- 余额查询:查询指定地址的代币余额(balanceOf)。
- 转账功能:实现代币在地址间的转移(transfer)、授权转账(approve、transferFrom)。
- 授权管理:允许第三方(如交易所)代用户操作代币(allowance 查询授权额度)。
简单说,ERC20 就像代币的 “通用协议”,让不同代币能在以太坊生态中 “互联互通”。
二、ERC20 代币的测试方法
测试需覆盖功能完整性、安全性、兼容性等维度,确保代币符合标准且无漏洞。以下是核心测试方向和用例:
1. 功能测试(核心接口验证)
name()
、symbol()
、decimals()
、totalSupply()
函数2. 调用
balanceOf(A)
transfer(B, 50)
2. 分别查询 A 和 B 的余额
Transfer
事件(记录转账细节)approve(C, 30)
授权 C 转账2. C 调用
transferFrom(A, B, 20)
allowance(A, C)
剩余 10,触发Transfer
事件transfer(B, 100)
transferFrom(A, B, 40)
2. 安全性测试(防漏洞)
transfer
回调中再次调用transfer
totalSupply
+1 导致数值归零)totalSupply
(若有增发功能)3. 兼容性测试(生态适配)
deposit
(充值)、withdraw
(提现)接口4. 性能与边界测试
- 批量转账测试:一次性向 100 个地址转账,验证 gas 消耗和执行效率。
- 极端余额测试:地址余额为 0、最大整数(2^256-1)时的转账 / 查询行为。
- 事件日志完整性:所有转账、授权操作需正确触发
Transfer
、Approval
事件,方便链上追踪。
三、测试工具
- 开发框架:Truffle、Hardhat(编写测试脚本,支持 JavaScript/TypeScript)。
- 测试网络:Goerli、Sepolia 等以太坊测试网(模拟主网环境)。
- 安全审计工具:Mythril、Slither(静态分析漏洞)、OpenZeppelin Test Helpers(标准化测试用例)。
- 区块链浏览器:Etherscan 测试网(验证交易和事件日志)。
总结
ERC20 测试的核心是确保代币符合标准接口、无安全漏洞,且能兼容以太坊生态的各类应用。测试时需结合自动化脚本(覆盖功能)和人工审计(排查逻辑漏洞),尤其注意整数溢出、重入等常见攻击风险。