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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/498623.html
標籤:區塊鏈
