ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ERC20介绍

2022-06-26 21:01:04  阅读:195  来源: 互联网

标签:spender 接口 Token 介绍 GLDToken 合约 ERC20


ERC 20

这套接口、合约和应用程序都与 ERC20 代币标准相关。

有一些核心合约实现了 EIP 中指定的功能和定义:

  • IERC20:包含所有ERC20应该实现的接口
  • IERC20Metadata:对ERC20接口的扩展,包括Token名称,符号,和精度。
  • ERC20:对ERC20接口的实现,将名称,符号和精度这些可选的标准扩展引入到基本接口中。

另外还有一些自定义的扩展可以使用,包括以下内容:

  • ERC20Burnable:销毁持有的token
  • ERC20Capped:发行Token时对总供应量指定上限
  • ERC20Pausable:能够暂停Token的交易
  • ERC20Snapshot:有效存储过去的Token余额,以便以后随时查询
  • ERC20Permit:token的委托无需Gas(同ERC2612的标准)
  • ERC20FlashMint:通过临时代币的铸造和销毁对闪电贷的代币级支持(同ERC3156标准)
  • ERC20Votes:支持投票和投票委托
  • ERC20VotesComp:支持投票和投票委托(兼容Compound的Token,有uint96的限制)
  • ERC20Wrapper:用于创建由另一个 ERC20 支持的 ERC20 的包装器,具有存储Token和撤回Token的方法,通常用于ERC20Votes的裁决

最后,还有一些工具可以以多种方式与ERC20 合约交互:

  • SafeERC20:接口的包装器,无需对布尔类型的返回值进行处理。
  • TokenTimelock:冻结交易的Token一定时间,直到到达一个指定的时间后才可以持有Token
  • ERC20Permit

核心接口

IERC20

ERC20的核心接口大多同IERC20合约继承过来的,IERC20中包含以下接口:
函数

//返回存在的Token的总数
totalSupply()
//返回账户持有的Token的总数
balanceOf(account)
//将指定数量的Token交易到其他账户
//如果交易结果返回一个布尔值
//同时触发Transfer事件
transfer(to, amount)
//返回owner持有的,且spender具有消费权限的Token数量,默认为0
allowance(owner, spender)
//配置一定数量的允许spender消费的Token数量
approve(spender, amount)
//从from账户地址交易一定数量的Token到其他地址,该Token通过approve函数赋予消费权限
transferFrom(from, to, amount)

事件

Transfer(from,to,value)
APproval(owner,spender,value)

IERC20Metadata

ERC20标准中可选的元数据函数接口:

//返回Token的名称
name()
//返回Token的符号
symbol()
//返回Token的精度
decimals()

ERC20 Token 合约 构建

使用合约,可以轻松创建自己的ERC20 Token合约,可以用于跟踪虚拟游戏中的内部货币黄金 (GLD)。
一个简单的示例如下:

// contracts/GLDToken.sol
// SPDX-License-Identifier: MIT
pragma 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

标签:spender,接口,Token,介绍,GLDToken,合约,ERC20
来源: https://www.cnblogs.com/cbkj-xd/p/16414338.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有