Tokens
帶有 Open Zeppelin 的超級簡單令牌
我想為我的社區創建一個超級簡單的代幣。我閱讀了一些教程,發現了這段程式碼:
pragma solidity ^0.5.2; import "./lib/oz/contracts/token/ERC20/ERC20Pausable.sol"; import "./lib/oz/contracts/token/ERC20/ERC20Capped.sol"; import "./lib/oz/contracts/token/ERC20/ERC20Detailed.sol"; contract CappedToken is ERC20Detailed, ERC20Capped, ERC20Pausable { // ------------------------------------------------------------------------ // Constructor // ------------------------------------------------------------------------ constructor() ERC20Detailed("DEMO Tokens", "DEMO", 18) ERC20Capped(1000000000000000000000000000) // 1B public {} }
3 個問題:
此程式碼是否安全或可通過任何方式破解?
只允許智能合約創建者地址鑄造代幣嗎?
Pausable 是絕對必要的嗎?
非常感謝你。
當您使用 OpenZeppelin 合約時,您應該遠離各種攻擊——除非您在自己的程式碼中使用 OpenZeppelin。OpenZeppelin 廣為人知,被廣泛使用並經過實戰考驗。
至於你的問題:
1)程式碼是安全的,因為您只是在使用 OpenZeppelin 的功能,而不是自己做任何奇怪/花哨的事情。但是當然,您繼承的契約會添加某些功能,您應該了解這些功能的工作原理。
2)您沒有使用可鑄幣。你的合約中沒有鑄幣。所有代幣都在建構子中創建(10 億),之後不能更改數量。此外,您沒有使用任何“契約所有者”功能,因此契約沒有真正的所有者。
- 只有
ERC20Detailed
嚴格必要才能與 ERC20 兼容。或者,嚴格來說,即使這樣也沒有必要,因為您可以使用原始 ERC20 介面,就像在這裡完成的那樣:https ://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20 .sol。所以,不,這ERC20Pausable
不是必需的,它只是增加了額外的功能。我建議你從一個非常基本的代幣開始(所以至少要擺脫它)
ERC20Capped
,一旦你了解它是如何工作的,你就可以開始使用這些不同的繼承合約向其中添加額外的功能。ERC20Pausable