> 技术文档 > 【学习笔记】【区块链】以太坊开发入门-ERC20发行代币

【学习笔记】【区块链】以太坊开发入门-ERC20发行代币

ERC20 是以太坊区块链上最广泛使用的代币标准,用于规范 fungible token(可替代代币)的发行和交互,例如 USDT、UNI 等代币均遵循 ERC20 标准。

一、ERC20 的核心作用

ERC20 定义了代币必须实现的一套通用接口(函数和事件),确保不同代币在以太坊生态中能被钱包、交易所、DApp 等统一识别和交互。核心功能包括:

  1. 代币基本信息:如名称(name)、符号(symbol)、小数位数(decimals)、总供应量(totalSupply)。
  2. 余额查询:查询指定地址的代币余额(balanceOf)。
  3. 转账功能:实现代币在地址间的转移(transfer)、授权转账(approve、transferFrom)。
  4. 授权管理:允许第三方(如交易所)代用户操作代币(allowance 查询授权额度)。

简单说,ERC20 就像代币的 “通用协议”,让不同代币能在以太坊生态中 “互联互通”。

二、ERC20 代币的测试方法

测试需覆盖功能完整性、安全性、兼容性等维度,确保代币符合标准且无漏洞。以下是核心测试方向和用例:

1. 功能测试(核心接口验证)
测试项 测试步骤 预期结果 基本信息正确性 调用name()symbol()decimals()totalSupply()函数 返回正确的代币名称、符号(如 “USDT”)、小数位数(通常为 18)、总供应量 余额查询准确性 1. 向地址 A 转账 100 代币
2. 调用balanceOf(A) 返回 100(需考虑小数位数,如 100 * 10^18) 直接转账功能 1. 地址 A 调用transfer(B, 50)
2. 分别查询 A 和 B 的余额 A 余额减少 50,B 余额增加 50,触发Transfer事件(记录转账细节) 授权转账功能 1. A 调用approve(C, 30)授权 C 转账
2. C 调用transferFrom(A, B, 20) A 余额减少 20,B 余额增加 20,allowance(A, C)剩余 10,触发Transfer事件 超额转账限制 地址 A 余额为 50,调用transfer(B, 100) 转账失败,余额不变,交易回滚 授权额度不足限制 A 授权 C 最多转账 30,C 尝试transferFrom(A, B, 40) 转账失败,余额和授权额度不变
2. 安全性测试(防漏洞)
测试项 测试场景 预期结果 重入攻击防护 构造恶意合约,在transfer回调中再次调用transfer 合约拒绝重入,转账仅执行一次,余额正确 整数溢出 / 下溢 利用极大量值触发溢出(如totalSupply+1 导致数值归零) 合约通过安全库(如 OpenZeppelin 的 SafeMath)限制,交易失败 权限控制 非所有者尝试修改totalSupply(若有增发功能) 操作被拒绝,仅所有者可执行 零地址处理 向零地址(0x000...)转账或授权 交易失败(或允许但有明确提示,避免代币永久冻结)
3. 兼容性测试(生态适配)
测试项 测试场景 预期结果 钱包兼容性 将代币添加到 MetaMask、Trust Wallet 等钱包 钱包正确显示代币名称、余额,支持转账操作 交易所接口适配 模拟交易所调用deposit(充值)、withdraw(提现)接口 代币能正常转入 / 转出交易所地址,记录准确 DApp 交互 在 DeFi 协议(如 Uniswap)中添加该代币流动性、兑换 协议能正确识别代币,交易执行成功
4. 性能与边界测试
  • 批量转账测试:一次性向 100 个地址转账,验证 gas 消耗和执行效率。
  • 极端余额测试:地址余额为 0、最大整数(2^256-1)时的转账 / 查询行为。
  • 事件日志完整性:所有转账、授权操作需正确触发TransferApproval事件,方便链上追踪。

三、测试工具

  1. 开发框架:Truffle、Hardhat(编写测试脚本,支持 JavaScript/TypeScript)。
  2. 测试网络:Goerli、Sepolia 等以太坊测试网(模拟主网环境)。
  3. 安全审计工具:Mythril、Slither(静态分析漏洞)、OpenZeppelin Test Helpers(标准化测试用例)。
  4. 区块链浏览器:Etherscan 测试网(验证交易和事件日志)。

总结

ERC20 测试的核心是确保代币符合标准接口、无安全漏洞,且能兼容以太坊生态的各类应用。测试时需结合自动化脚本(覆盖功能)和人工审计(排查逻辑漏洞),尤其注意整数溢出、重入等常见攻击风险。

陕汽配件