iT邦幫忙

0

geth 上部署的合約不能呼叫函數(invalid address)

  • 分享至 

  • xImage

我在本地端的 private chain 上部署了智能合約,但是他卻沒有辦法呼叫 function,會出現下面的錯誤訊息。
https://ithelp.ithome.com.tw/upload/images/20230827/20137966R5nQWTOGYc.png

而我的合約程式碼如下

pragma solidity ^0.8.0;
contract Storage{
    uint256 public value = 5;
    function set(uint256 number) public{
        value = number;
    }
    function retrieve() public view returns (uint256){
        return value;
    }
}

而我執行的指令是

(contract dir) solc --abi contract.sol -o build
(contract dir) solc --bin contract.sol -o build
geth --datadir data --networkid 12345 --nodiscover --ipcdisable --allow-insecure-unlock console
abi = <contract abi>
bytecode = <contract bytecode>
contract = eth.contract(abi)
gas = eth.estimateGas({data:bytecode})
tx = {from:eth.accounts[0], data:bytecode, gas:gas}
contract.new(tx)
interface = contract.at(<ContractAddress>)
interface.retrive()

執行完後就出現了上面圖片的錯誤,想請問該如何解決這個問題 Orz..

啊... 我發現我加個引號 然後 call 函數的寫法改用 eth.call()就可以了@@
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答