Contract-Development
契約的哪一部分“未初始化”?
我正在閱讀這個問題,並引用:
我能夠使自己成為該契約的所有者,因為它未初始化。
所以我打開這個連結查看合約,但是我沒有找到“未初始化”的部分。
他在這裡是什麼意思?
WalletLibrary
合約用於為所有Wallet
實例提供邏輯。每個實例都必須通過呼叫initWallet
(第 223 行)所有者和其他配置參數來初始化。此方法通過呼叫來設置所有者initMultiowned
。當您現在對實例執行操作時,通過onlymanyowners
(第 95 行)修飾符檢查 onwership。為了防止多次初始化,合約有一個only_unitialized
(第 219 行)修飾符,它檢查是否有任何所有者已經註冊。所以這一切都在意料之中,關鍵是你可以對它做同樣的事情,
WalletLibrary
並通過呼叫來獲得它的所有權initWallet
。完成後,您可以對其執行任何互動,甚至通過kill
方法(第 229 行)銷毀它。問題是當WalletLibrary
程式碼被殺死時從區塊鏈中刪除時,所有Wallet
實例也會失去其功能。