Etherscan

如何獲取合約數據?

  • November 12, 2020

假設我們有關於WePower contract的資訊。

我想通過 API 獲取有關此契約的一些資訊。例如。這,

https://api.etherscan.io/api?module=contract&action=getabi&address=0x4CF488387F035FF08c371515562CBa712f9015d4&apikey=YourApiKeyToken

但是沒有參數值——只有描述(契約 ABI)。有什麼方法可以得到嗎?

您在這裡,通過帶有查詢參數的 API 呼叫action=getabi,請求合約的 ABI。所以它應該返回 ABI,但沒有別的,正如你正確得到的那樣。

由於您需要使用查詢參數讀取契約中變數的值,因此action=eth_call可能會這樣做。也請參考這裡的討論

更新:

我想,我搞定了。我沒有處理太多etherscan API。但我認為這就是你要找的。

根據上面的討論,你首先需要獲取 的 Keccak-256 Hash 值paused()並獲取 8 個字元的子字元串並加入0x到前面 => 0x5c975abb。然後查詢參數data應該設置為那個。即data=0x5c975abb

然後 API url 應該是這樣的;

https://api.etherscan.io/api?module=proxy&action=eth_call&to=0x4CF488387F035FF08c371515562CBa712f9015d4&data=0x5c975abb&apikey=my-api-key=YourAPIKey

我得到的回應;

{
   "jsonrpc": "2.0",
   "id": 1,
   "result": "0x0000000000000000000000000000000000000000000000000000000000000001"
}

result應該是 paused 的值,即 1表示true

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