Solidity
無法通過呼叫另一個合約的方法來獲取值
我創建了兩個契約來分離儲存和驗證規則。
驗證服務.sol
pragma solidity ^0.4.16; import "./Storage.sol"; contract ValidationService { Storage public store; constructor(address add) public{ store=Storage(add); } function getMyNumber() public constant returns (uint) { return store.getNumber(); } }
儲存.sol
pragma solidity ^0.4.16; contract Storage { uint public mynum = 5; function getNumber() public constant returns (uint) { return mynum; } }
我呼叫了 getMyNumber 方法,該方法呼叫了 Storage 合約的 getNumber 方法,它應該返回 5 作為輸出。
validationservice.getMyNumber.call()
上面的程式碼在 remix 和 truffle 開發環境中執行良好,但在使用 Geth 的私有區塊鍊網路中無法執行。
如果我直接從 geth 控制台呼叫儲存合約的 getNumber 方法,它工作正常。
誰能指導我的錯誤在哪裡
我已經解決了這個問題。我在 genesis.json 文件中使用了 “byzantiumBlock”: 0並重新創建了私有區塊鏈。
更多詳情,請參考
謝謝大家
這工作正常。它不起作用的唯一情況是,如果您在部署時沒有傳遞正確的地址
validationService
。希望這可以幫助