Openzeppelin库详解-ERC20

ERC20定义了以太坊网络上同质化代币的标准,通过继承ERC20合约,可以快速创建符合ERC20接口规范的自定义代币。合约引入ERC20方式为:import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; 

1、快速实践

如下实例展示如何快速实现一个自定义的ERC20代币:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract MyErc20 is ERC20{
    constructor(uint initialValue) ERC20("MyErc20","ME"){
        _mint(msg.sender,initialValue*(10**decimals()));
    }
}

通过调用父合约的构造方法:ERC20("MyErc20","ME"),定义了自定义代币的symbol和name,symbol和name为ERC20的属性;通过_mint(msg.sender,initialValue*(10**decimals()));为合约创建者分配代币数量,该操作也确定了该代币的总量。

Remix部署后,对外暴露接口如下:

2、接口说明

Functions

ERC20的函数列表如下,其中没有下划线开头的均为公共函数,即能够对外暴露;有下划线的函数均为内部函数,外部不可见。

  • constructor(name_, symbol_):构造函数,定义了ERC20的“名称”和“符号”属性;

  • name():获取代币名称;

  • symbol():获取代币符号;

  • decimals():获取代币精度,默认18位,可在继承后重写decimals()实现精度重定义,后续涉及代币数量时(总量、余额、转账、授权),均包含精度值。精度值可以理解成小数点后的位数,比如你有2个代币,代币精度值为18位,那么调用余额函数返回的值是2*10**18;

  • totalSupply():获取代币总量;

  • balanceOf(account):获取某个地址的代币余额;

  • transfer(to, value):从transfer函数的调用方,向地址“to”进行数量为“value”的代币发送;

  • allowance(owner, spender):查看“owner”地址对“spender”地址的授权额度,含义是“spender”被授权能够从“owner”账户中划走的代币数量;

  • approve(spender, value):从approve函数的调用地址,向“spender”地址授权“value”数量的代币;

  • transferFrom(from, to, value):从“from”地址向“to”地址进行“value”数量的代币转移,要求from对transferFrom函数的调用者有足够的授权(大于等于“value”),消耗授权额度;

  • _transfer(from, to, value):从“from”向“to”进行“value”数量代币转移;

  • _update(from, to, value):所有代币数量变化的底层处理函数,包括代币转移、铸造、销毁

  • _mint(account, value):向指定地址铸造“value”数量的代币,代币总量相应增加“value”;

  • _burn(account, value):销毁指定地址“value”数量的代币,代币总量减小增加“value”;

  • _approve(owner, spender, value):“owner”向“spender”进行数量“value”的授权;

  • _approve(owner, spender, value, emitEvent):“owner”向“spender”进行数量“value”的授权,根据“emitEvent”来决定是否触发事件;

  • _spendAllowance(owner, spender, value):消耗“owner”对“spender”数量“value”的授权额度;

Events

事件定义如下

IERC20

Errors

revert的ERROR定义如下:

IERC20Errors

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值