默认情况下,etherscan只能查看合约上发生的tx,无法调用合约方法。不过,etherscan提供verify contract功能,完成验证之后,可以读取和写入合约,即下图中Tab页签Read Contract和Write Contract。
Contract Code
第一步比较繁琐,如果你使用了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