etherscan上验证合约

etherscan上验证合约

通常,为了证明部署的合约和白皮书上的说明一致,合约部署者都会将合约源码放到ehterscan上进行验证。
由于平常我们写的合约是有不同的模块和文件且相互依赖的,但是在ehterscan上验证只能搞一个文件(目前貌似可以上传多个文件了),而模块依赖又比较多,手动合并也不太现实,最终找了个工具搞定了。

安装flat工具

$ git clone https://github.com/coburncoburn/SolidityFlattery.git
$ cd SolidityFlattery
$ go get gopkg.in/natefinch/lumberjack.v2
$ go build flat.go utils.go
$ go install flat.go utils.go

go install会将flat安装到 $GOBIN 目录,就是安装go时设置的环境变量

合并部署文件

$ flat --input TPToken.sol --output verify
Solididy File Flattener (c) David Appleton 2018
contact : [email protected]
released under Apache 2.0 licence
ANALYSIS
Processing  TPToken.sol
--> uses new file  ERC20.sol
has  18  lines
Processing  ERC20.sol
--> uses new file  IERC20.sol
--> uses new file  SafeMath.sol
has  62  lines
Processing  IERC20.sol
has  71  lines
IERC20.sol  has no dependencies
Processing  SafeMath.sol
has  142  lines
SafeMath.sol  has no dependencies
Writing output.
$ ls
ERC20.sol  IERC20.sol  SafeMath.sol  TPToken.sol  verify.log  verify.sol

这是一个简单的TPT token合约,依赖文件ERC20.sol, IERC20.sol, TPToken.sol。
过程中可以看到只需要输入TPToken.sol,flat就会自动寻找其依赖的合约。
其中verify为输出文件的名字,可以根据自己习惯设置。
输出文件有两个; verify.log, verify.sol,其中verify.sol就是合并好的用来在etherscan上验证的合约。

验证

得到verify.sol之后,在etherscan上打开对应合约的地址,选择下方的contract-->verify and publish,按照要求填入相关信息。比如合约的名字、代码、其中优化选择no、run默认200次。选择'I'm not robot',点击verify进行验证。

你可能感兴趣的:(etherscan上验证合约)