Contract-Development
DSAuthority(0) 和 eos.owner() 的含義和作用是什麼?
在 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));
- 當我在 Remix 上編譯並推送合約時,它執行良好。但是,沒有鑄造代幣。在調試時,我認為必須呼叫 initialize() 來生成令牌。但是,當我使用與眾籌合約相同的合約地址作為參數執行 initialize() 時,它會在第二行(第 470 行)顯示“錯誤:無效的 upcode”。我在這裡做錯了什麼?
- 我還注意到 DSToken 合約中沒有稱為 owner() 和 authority() 的方法,它作為參數傳遞給 EOSSale 合約。然後合約如何編譯和執行而沒有任何錯誤,直到初始化。
所有者/授權方法來自 DSAuth。這種情況下的繼承樹是 DSToken -> DSStop -> DSAuth。您的問題是
eos.owner()
不等於眾籌合約的地址。為此,您必須呼叫setOwner(crowdsaleAddress)
和呼叫setAuthority(0x0)
令牌合約。