Tokens

帶有 Open Zeppelin 的超級簡單令牌

  • November 4, 2019

我想為我的社區創建一個超級簡單的代幣。我閱讀了一些教程,發現了這段程式碼:

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 億),之後不能更改數量。此外,您沒有使用任何“契約所有者”功能,因此契約沒有真正的所有者。

  1. 只有ERC20Detailed嚴格必要才能與 ERC20 兼容。或者,嚴格來說,即使這樣也沒有必要,因為您可以使用原始 ERC20 介面,就像在這裡完成的那樣:https ://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20 .sol。所以,不,這ERC20Pausable不是必需的,它只是增加了額外的功能。

我建議你從一個非常基本的代幣開始(所以至少要擺脫它) ERC20Capped,一旦你了解它是如何工作的,你就可以開始使用這些不同的繼承合約向其中添加額外的功能。ERC20Pausable

引用自:https://ethereum.stackexchange.com/questions/76904