ERC20是以太坊上的一种合约标准,它包含5个函数、2个事件。具体如下:
- totalSupply(): token的总量
- balanceOf() :某个地址上的余额
- transfer() : 发送token
- allowance() :额度、配额、津贴
- approve() : 批准给某个地址一定数量的token(授予额度、授予津贴)
- transferFrom(): 提取approve授予的token(提取额度、提取津贴)
- Transfer() : token转移事件
- Approval() :额度批准事件
| 标准函数 | 含义 |
|---|---|
| totalSupply() | 代币总量 |
| balanceOf(addresss account) | account地址上的余额 |
| transfer(address recipient, uint256 amount) | 向recipient发送amount个代币 |
| allowance(address owner, address spender) | 查询owner给spender的额度(总配额) |
| approve(address spender, uint256 amount) | 批准给spender的额度为amount(当前配额) |
| transferFrom(address sender, address recipient, uint256 amount) | recipient提取sender给自己的额度 |
| Transfer(address indexed from, address indexed to, uint256 value) | 代币转移事件:从from到to转移value个代币 |
| Approval(address indexed owner, address indexed spender, uint256 value) | 额度批准事件:owner给spender的额度为value |
1、ERC20标准接口
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
2、Token实现
HelloWorldToken合约,它继承IERC20接口,同时添加了name()、decimals()、symbol()、increaseAllowance()、decreaseAllowance() 等函数。
| 扩展函数 | 名义 |
|---|---|
| name() | 代币名称 |
| decimals() | 代币精度 |
| symbol() | 代币符号(代币简称) |
| increaseAllowance() | 增加额度 |
| decreaseAllowance() | 减少额度 |
// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
library SafeMath {
function add(uint256 a,uint256 b) internal pure returns (uint256) {
uint256 c = a+b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a,uint256 b) internal pure returns (uint256){
require( b <= a,

本文详细介绍了以太坊ERC20标准,包括其核心接口、函数及事件,并通过HelloWorldToken合约实例展示了如何实现ERC20标准。此外,还提供了使用Hardhat进行智能合约测试的方法。
2484

被折叠的 条评论
为什么被折叠?



