ConfluxScan 合约验证快速教程

验证合约?

在 Conflux 网络上部署了智能合约后,如果未进行验证,就无法通过 ConfluxScan 区块浏览器直观地获取信息或与合约交互,此时就需要合约的部署者将完整的合约源码上传以验证合约。

上传源码

在上传合约源码前,先要填写一些相关信息,包括合约地址、合约名称(不是合约的 name 属性)、编译器版本、开源许可证书、是否优化等。然后就可以将源码复制粘贴到下方,点击 submit 提交即可。源码上传并验证成功之后,ConfluxScan 会在源码下方自动生成合约的 ABI 文件。

注意: 因为目前 ConfluxScan 合约验证只支持单文件,所以上传源码时需要将所引用的所有库合约也一并上传,并且在每个库合约之前都要指定其所使用的编译器。因此需要保证引用的库合约所使用的编译器版本低于最终部署的合约所使用的编译器版本。

Flatten 合约

在合约验证前需要进行 flatten 操作,从而获取主合约及所有依赖的完整代码。有以下方式可以进行合约 flatten 操作:

Conflux-Truffle

使用 Conflux-Truffle 在 VSCode 上开发可以安装 Solidity Contract Flattener 插件,鼠标右键选择合约文件,在最下方选择 Solidity: flatten selected file(s) 可以将合约一键展平,获得一个包含所有源码的文件。

Hardhat

使用 Hardhat 框架则可以通过 npx hardhat flatten ./contracts/your_contract.sol > YourContractMerged.sol 命令来展平合约。

总结

本文简单介绍了在 ConfluxScan 上验证合约的过程,更详细资料和操作请见:
ConfluxWiki - ConfluxScan 验证合约:https://wiki.conflux123.xyz/books/tutorials/page/confluxscan
Conflux Wiki - 如何在 Scan 上注册合约和代币展示: https://conflux-wiki.github.io/conflux-wiki/development/register-contract-and-token-display/