首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在以太扫描上验证与ABIEncoderV2的合同

无法在以太扫描上验证与ABIEncoderV2的合同
EN

Ethereum用户
提问于 2018-09-07 20:52:49
回答 3查看 947关注 0票数 6

昨天,我向Ropsten (https://ropsten.etherscan.io/address/0x1fe59c223fa4e9781237f0f49a15ca598069cc30)部署了一份合同,该合同依赖于ABI编码器的V2。因此,它包括语句

代码语言:javascript
复制
pragma experimental ABIEncoderV2;

我尝试使用我的稳定代码的扁平版本运行Etherscan的代码验证(https://ropsten.etherscan.io/verifyContract2),匹配编译器版本、优化标志、优化器运行等。然而,代码验证结果是否定的。

早在6月份,当我用同样的务实方式部署合同时,我从Etherscan处得到消息说,他们不支持ABIEncoderV2。尽管Remix的编译只发出警告,而Etherscan声称支持在Remix上编译的合同。

所以我在寻找替代方案。有人能支持这样一个假设,即仍然导致代码验证问题的是缺乏对ABIEncoderV2的支持吗?此外,对于智能合同的公共代码验证,还有其他选择吗?

干杯,

延斯·伊瓦尔

EN

回答 3

Ethereum用户

发布于 2019-06-19 07:30:07

当我试图将源代码压缩为单个文件并将其上传到etherscan.io时,验证源代码不适用于我。我认为这是因为多文件项目中的pragma experimental ABIEncoderV2;只应用于某些文件,但是当您将文件夷为平地时,它将应用于整个源代码。

通过编译预扁平化版本来部署二进制got解决了这个问题:

  1. 使用truffle-flatteneretherlime flatten压缩源代码
  2. 从平面文件编译和部署智能契约(可以使用https://remix.ethereum.org)
  3. 验证https://etherscan.io的源代码
票数 1
EN

Ethereum用户

发布于 2018-09-19 22:14:16

你试过用0.4.25编译吗?在这样做之后,我能够删除ABIEncoderV2,并且我的验证开始工作。

票数 0
EN

Ethereum用户

发布于 2018-12-04 14:49:26

确保将pragma experimental ABIEncoderV2;行放在具有Solidity版本的行后面。由于某些原因,如果它位于版本号之前,则编译方式不同。

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/58309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档