期待結果
預設情況下,etherscan隻能檢視合約上發生的tx,無法調用合約方法。不過,etherscan提供verify contract功能,完成驗證之後,可以讀取和寫入合約,即下圖中Tab頁簽Read Contract和Write Contract。
Contract Code
實作步驟
- 合并合約:将所有import導入的合約和庫(library)都寫到一個檔案中
- 驗證合約:進入verify contract頁面,指定已部署合約位址和名稱
- 編譯合約:選擇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建議不要開啟,否則編譯好的二進制和部署上鍊的二進制有差異,源碼驗證就不能通過。
verify contract
最終方法驗證
通過Read Contract掃描出來的方法,通過證書編号查詢出證書内容:
Read Contract - Query certifications
于 2019-04-02