Я использую ether.js для развертывания интеллектуального контракта на надежность и библиотеку sol-verify , проверяющую смарт-контракт на etherscan.io.
Ссылка на githubдля sol-verifyier - 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-верификатора:
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-verifyier]
Я уверен, что это не удается из-за аргументов конструктора, потому что я пробовал один без аргументов, и он прошел.
Спасибо!