发布时间:2025-12-09 11:51:55 浏览次数:1
这套接口、合约和应用程序都与 ERC20 代币标准相关。
有一些核心合约实现了 EIP 中指定的功能和定义:
另外还有一些自定义的扩展可以使用,包括以下内容:
最后,还有一些工具可以以多种方式与ERC20 合约交互:
ERC20的核心接口大多同IERC20合约继承过来的,IERC20中包含以下接口:
函数
//返回存在的Token的总数totalSupply()//返回账户持有的Token的总数balanceOf(account)//将指定数量的Token交易到其他账户//如果交易结果返回一个布尔值//同时触发Transfer事件transfer(to, amount)//返回owner持有的,且spender具有消费权限的Token数量,默认为0allowance(owner, spender)//配置一定数量的允许spender消费的Token数量approve(spender, amount)//从from账户地址交易一定数量的Token到其他地址,该Token通过approve函数赋予消费权限transferFrom(from, to, amount)事件
Transfer(from,to,value)APproval(owner,spender,value)ERC20标准中可选的元数据函数接口:
//返回Token的名称name()//返回Token的符号symbol()//返回Token的精度decimals()使用合约,可以轻松创建自己的ERC20 Token合约,可以用于跟踪虚拟游戏中的内部货币黄金 (GLD)。
一个简单的示例如下:
// contracts/GLDToken.sol// SPDX-License-Identifier: MITpragma solidity ^0.8.0;import "@openzeppelin/contracts/token/ERC20/ERC20.sol";contract GLDToken is ERC20 { constructor(uint256 initialSupply) ERC20("Gold", "GLD") { _mint(msg.sender, initialSupply); }}在该合约中通过内部接口,并使用ERC20合约实现了ERC20基本的接口和Token名称、Token符号、Token精度这些可选的扩展,另外,通过initialSupply指定了初始Token数量,并将指定数量的Token赋予到部署合约的账户地址。
当合约部署完成,将能够去查询合约部署的账户的余额:
> GLDToken.balanceOf(部署者账户地址)1000000000000000000000同样,也可将Token交易到其他账户:
> GLDToken.transfer(otherAddress, 300000000000000000000)> GLDToken.balanceOf(otherAddress)300000000000000000000> GLDToken.balanceOf(deployerAddress)700000000000000000000