天天看點

如何在Etherscan中支援合約接口調用

期待結果

預設情況下,etherscan隻能檢視合約上發生的tx,無法調用合約方法。不過,etherscan提供verify contract功能,完成驗證之後,可以讀取和寫入合約,即下圖中Tab頁簽Read Contract和Write Contract。

如何在Etherscan中支援合約接口調用

Contract Code

實作步驟

  1. 合并合約:将所有import導入的合約和庫(library)都寫到一個檔案中
  2. 驗證合約:進入verify contract頁面,指定已部署合約位址和名稱
  3. 編譯合約:選擇Compiler版本和優化方案

第一步比較繁瑣,如果你使用了open-zeppelin之類的通用庫,需要翻翻好多個目錄才能把依賴的合約湊齊并放置在一個檔案當中,而且特别要注意加上版本宏定義

pragma solidity ^0.5.0;

第二步填入合約位址和名稱,注意名稱必須和源檔案中的合約名稱一緻。etherscan會掃描出代碼中所有的合約和庫名稱。可以說這裡的名稱就是尋常程式的main函數。

第三步是有一定竅門的,也是不好把握的地方。我的做法是先去檢視truffle compile之後的json檔案,比如此處的CacContract.json檔案,搜尋version關鍵字,定位到compiler處:

"compiler": {
    "name": "solc",
    "version": "0.5.0+commit.1d4f565a.Emscripten.clang"
  }           

複制

這樣大概就知道了編譯器的版本。Optimization建議不要開啟,否則編譯好的二進制和部署上鍊的二進制有差異,源碼驗證就不能通過。

如何在Etherscan中支援合約接口調用

verify contract

最終方法驗證

通過Read Contract掃描出來的方法,通過證書編号查詢出證書内容:

如何在Etherscan中支援合約接口調用

Read Contract - Query certifications

于 2019-04-02