Ropsten
代理合約呼叫結果返回錯誤
我將我的代理 (AdminUpgradeabilityProxy) 和邏輯合約發佈到 Ropsten 測試網路。
但是我的呼叫結果通過我的代理契約返回了錯誤的值。例如我在邏輯合約中呼叫 totalsupply() 函式(我使用代理合約地址)然後呼叫結果是錯誤的:
{ "totalSupply": "3963877391197344453575983046348115674221700746820753546331534351508065746944" }
(結果必須是 ‘0’… :( )
然後我通過代理呼叫邏輯合約中的 owner() 函式,我又得到了錯誤的結果
合約所有者呼叫結果:
{ "owner": "0x0000000000000000000000000000000000000000" }
然而,當我將合約發佈到 Ropsten 網路時,我看到所有者和 ProxyAdmin 地址設置正確。
我的錯是什麼?為什麼結果返回錯誤值:(
我的部署腳本:
await deployer.deploy(logic); const instance = await logic.deployed(); await instance.initialize("0x5f1007A94861275Ca739D1B16ac2fdb673bf2002"); await deployer.deploy(AdminUpgradeability, logic.address, "0x5f1007A94861275Ca739D1B16ac2fdb673bf2002");
謝謝你
它按混音的預期工作。
- 總供應量:0
- 所有者:
0x0000..00
- 名稱:’’(空字元串)
- 符號:’’(空字元串)
邏輯地址可能已經初始化,但沒關係,因為將從代理地址讀取儲存。
錯誤可能是您如何呼叫代理。
問題出在部署腳本中
await deployer.deploy(logic); // Logic contract will be used for the bytecode // it is not necessary to initialize // const instance = await logic.deployed(); // await instance.initialize("deployerAccount"); await deployer.deploy(AdminUpgradeability, logic.address, "deployerAccount"); // const instanceAdminUpgrade = await AdminUpgradeability.deployed(); // To use logic from proxy we need an instance of logic // that points to AdminUpgradeability.address const instanceAdminUpgrade = await logic.at(AdminUpgradeability.address); // Initialize proxied instance await instanceAdminUpgrade.initialize("deployerAccount");