[Ethereum] 淺談 ERC20 在 openzeppelin-contracts 中的結構與實現


 

目前 openzeppelin-contracts 的穩定版是 v2.5,截止到本文發布,最新的 Tag 為 v3.0.0-rc.0

以下是 token/ETC20 的文件列表:

[Contract] 淺談 ERC20 在 openzeppelin-contracts 中的實現

 

IERC20.sol 是 interface 接口文件,不包含實現。

 

ERC20.sol 是對上面 interface 接口的標准實現。ERC20Detailed.sol 是對基礎信息構造,有 name、symbol、decimals 屬性。

 

ERC20Burnable, ERC20Capped, ERC20Mintable, ERC20Pausable 這幾個實質所繼承的父類都比較統一(ERC20.sol)。

可以看成是並列的幾個擴展功能,非 EIP 標准的一部分。

ERC20Mintable 是允許外部鑄幣的一種機制,ERC20Capped 則是為了配合這種機制扣上一個總供應量的上限。

所以總共有兩種鑄幣供應機制,一種是內部通過 ERC20._mint 方法,另一種是外部通過 ERC20Mintable.mint 方法。

 

SafeERC20.sol 是 library 庫文件,對 ERC20.sol 中的方法進行了包裝,方法名都加了一個 safe 前綴。

在合約中采用 `using SafeERC20 for ERC20;` 的方式引入,之后就可以像 `token.safeTransfer(...)` 這樣使用安全的操作了。

 

TokenTimelock.sol 合約的功能是將 token 鎖定指定時間,之后才可以進行轉賬交易。使用場景比如:允許顧問在一年之后才可以提取釋放的 token。

 

詳細用法參照 OpenZeppelin ERC20 部分的文檔或者 API 進行。

實際在使用的時候,我們為了在一個文件中看到整個的方法,一般會用 truffle-flattener 合並 Solidity 文件的依賴到一個文件

 

Link:https://www.cnblogs.com/farwish/p/12556484.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM