Go-Ethereum

’eth_call’ 返回值 ‘0x’

  • February 6, 2017

我正在嘗試通過 rpc 的 ’eth_call’ 方法呼叫合約函式。我的契約如下:

contract Ballot {

  function Ballot(string _title) {

      title = _title;
  }
...

  function getTitle() constant returns (string) { return title; }

...

}

我正在計算 ‘getTitle()’ 的方法 id,它產生 ‘0x4e7ea493’,當在 rpc 呼叫的 ‘data’ 參數中發送時,它應該返回 title 變數。

但是它只在結果中返回“0x”,我做錯了什麼?

geth

> web3.sha3('getTitle()').substring(0,10)
"0xff3c1a8f"

您的方法呼叫簽名應該是0xff3c1a8f.

使用 Browser Solidity 和以下程式碼進行確認:

pragma solidity ^0.4.6;

contract Ballot {
   string public title;

   function Ballot(string _title) {
       title = _title;
   }

  function getTitle() constant returns (string) { 
      return title; 
  }
}

這是 Browser Solidity 生成簽名的截圖:

在此處輸入圖像描述

引用自:https://ethereum.stackexchange.com/questions/11945