主页 > imtoken2.0钱包下载 > 如何验证以太坊智能合约的源代码
如何验证以太坊智能合约的源代码
为什么要验证代码
以太坊平台默认是公开透明的。以太坊区块链上的所有数据都是公开的,任何人都可以访问。问题是以太坊上的所有合约代码都是二进制代码,很容易被以太坊虚拟机执行,但几乎不可读。虽然大多数开发人员使用 Solidity 语言编写智能合约,但部署的不是 Solidity,而是二进制代码。
值得思考的问题是:如果没有人能够证明它正在做它所做的事情,那么部署智能合约的意义何在?你会把钱委托给未经验证的代码吗?不可能的。
在哪里验证
合约验证有助于在使用智能合约的客户和部署它们的项目方之间建立信任。Etherscan 区块链实现了一个在线工具来帮助开发人员验证他们的代码。验证是将 Solidity 源代码连接到智能合约的已部署二进制文件的过程。该工具检查 Solidity 代码的编译版本是否与二进制代码匹配。合约通过验证后,任何人都可以查看源代码、审查和审计。
Etherscan Blockchain Explorer 的验证和发布工具如何验证您的代码
在我们解释如何验证您的代码之前,如果您使用我们的代币发行工具部署了一些 ERC-20 代币,您不需要做任何事情;合同自动验证。这是使用我们的工具部署在 Etherscan 区块链浏览器上的示例 Token Solidity 代码。
本指南适用于使用 Truffle 和 Solidity 进行合约开发的开发人员。
1.准备一个扁平的 Solidity 文件
truffle-flattener 将在 Truffle 下开发的文件与所有依赖项连接起来。安装它:
npm install truffle-flattener -g
使用 truffle-flattener 连接已部署合约的所有依赖项。示例代码如下:
truffle-flattener contracts/ERC20/YidaibiERC20Token.sol > FlatYidaibiERC20Token.sol
应该创建一个名为 FlatYidaibiERC20Token.sol 的新文件,其中包含层次结构中使用的所有可靠性合约的内容。
2.验证和发布工具
本节将引导您完成 Etherscan 区块链浏览器的验证和发布工具,并帮助您填写其页面上的所有选项。我们会一步一步来。
2.1 合约地址和构造函数参数ABI代码
在 Etherscan 区块链浏览器上找到您的合约,然后导航到代码选项卡并单击“验证和发布”链接。Etherscan 区块链浏览器将自动填充一些表单选项区块链合约地址查询,因此您不必(合约地址和构造函数参数 ABI 编码)。
2.2 合约名称
接下来,您将使用solidity 文件中的合约名称填写合约名称(例如,来自YidaibiERC20Token.sol 的名称为YidaibiERC20Token)。
2.3 编译器
您正在使用的 Solidity 编译器版本可以使用以下命令检查:
松露版
你会得到这样的东西:
松露 v4.1.14(核心:4.1.14)
Solidity v0.4.24 (solc-js)
从下拉列表中找到您的编译器版本区块链合约地址查询,使用最短的提交版本,而不是每晚提交版本(例如 v0.4.24 + commite57f0147).
2.4 优化
要检查是否启用了优化,请打开项目根文件夹中的 truffle.js 配置文件并查找名为 solc 的对象,如下所示:
溶胶:{
优化器:{
启用:真,
运行:200
}
}
如果有这样的对象,可以看到优化启用,运行 200 次。如果 solc 对象不存在,则禁用优化。
2.5 合约代码
在选项中复制/粘贴展平文件(FlatYidaibiERC20Token.sol)的内容。
2.6 完成
点击“验证和发布”按钮,等待几秒钟,让合约得到验证!