Sol-verifier 构造函数参数 - 失败 - 无法验证

Posted

技术标签:

【中文标题】Sol-verifier 构造函数参数 - 失败 - 无法验证【英文标题】:Sol-verifier Constructor Arguments - Fail - Unable to verify 【发布时间】:2019-09-05 00:56:14 【问题描述】:

我正在使用 ether.js 来部署 Solidity 智能合约,并使用 sol-verifier 库来验证 etherscan.io 上的智能合约。

sol-verifier 的 github 链接是 - https://github.com/Aniket-Engg/sol-verifier。

当合约在验证过程中需要构造函数参数时,验证过程会失败。我已经使用 ether.js 库部署了我的合同。验证过程仅对具有带参数的构造函数的合约失败。

这是使用 Ether.js 的合约部署脚本:

let factory = new ethers.ContractFactory(contractABI, contractBytecode, wallet);
let contract = await factory.deploy(tokenSymbol, projectName, numOfTokens);

这里,tokenSymbol、projectName、numOfTokens是合约构造函数的参数

sol-verifier 的输入:

var data = 
                key: etherscanAPIKey,
                path : path.join(__dirname, '../../ERC20-Mintable-Contract/erc20_mintable_contract.sol'),
                contractAddress:  contractAddress,
                network  : contractConfig.PROVIDER,
                contractName: contractName,
                cvalues: [tokenSymbol, projectName, numOfTokens],
                optimizationFlag: false
;

验证时传递的参数与部署智能合约时传递的参数相同。

输出:


    "status": false,
    "message": "Fail - Unable to verify"

参考合同:

0xa7a3373419dc09740a6D5c7c308230aB37581984 [手动验证 etherscan.io] 0x5Cb0832FA136486E15a2271E06f341c81f7d8602 [失败 使用 sol-verifier 进行验证]

我确信这会因为构造函数参数而失败,因为我尝试了一个不带参数的方法并且它通过了。

谢谢!

【问题讨论】:

【参考方案1】:

此问题已在最新版本中得到解决。再试一次:https://www.npmjs.com/package/sol-verifier

【讨论】:

以上是关于Sol-verifier 构造函数参数 - 失败 - 无法验证的主要内容,如果未能解决你的问题,请参考以下文章

如何处理构造函数的失败?

由于无参数构造函数,使用IMultipleResults从存储过程填充KeyValuePair失败

objectmapper.readValue() 失败并出现错误“没有从字符串值反序列化的字符串参数构造函数/工厂方法”

调试断言失败(缓冲区太小)构造函数初始化

如何:安全地调用具有不同参数的超级构造函数

变量 args SFINAE 默认构造函数在 clang 中工作,但在 Visual Studio 2015 中失败