Contract-Development

DSAuthority(0) 和 eos.owner() 的含義和作用是什麼?

  • March 13, 2019

在 ERC20 EOS 眾籌合約中,這三行(469-471)的作用是什麼?

   function initialize(DSToken eos) auth {        
   assert(address(EOS) == address(0)); //[Someone explained this line here][2]
   assert(eos.owner() == address(this));
   assert(eos.authority() == DSAuthority(0));
  1. 當我在 Remix 上編譯並推送合約時,它執行良好。但是,沒有鑄造代幣。在調試時,我認為必須呼叫 initialize() 來生成令牌。但是,當我使用與眾籌合約相同的合約地址作為參數執行 initialize() 時,它會在第二行(第 470 行)顯示“錯誤:無效的 upcode”。我在這裡做錯了什麼?
  2. 我還注意到 DSToken 合約中沒有稱為 owner() 和 authority() 的方法,它作為參數傳遞給 EOSSale 合約。然後合約如何編譯和執行而沒有任何錯誤,直到初始化。

所有者/授權方法來自 DSAuth。這種情況下的繼承樹是 DSToken -> DSStop -> DSAuth。您的問題是eos.owner()不等於眾籌合約的地址。為此,您必須呼叫setOwner(crowdsaleAddress)和呼叫setAuthority(0x0)令牌合約。

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