Не удалось проверить код контракта Solidity на etherscan.io

Я знаю, что этот вопрос уже задавался много раз. Я прочитал множество ответов, но, похоже, у меня ничего не работает. Сначала я попытался проверить исходный код гораздо более крупного и сложного контракта, но это не сработало, поэтому я написал очень простой крошечный контракт в Solidity:

pragma solidity ^0.4.17;

contract SimpleTest
{
    string public blablabla;
    function SimpleTest() public
    {
        blablabla = "Hello world!";
    }
}

Как видите, я не использую никаких аргументов конструктора, операторов импорта или библиотек. Я скомпилировал и развернул его с помощью Solidity 0.4.17 изнутри Parity. Оптимизация была включена. Я не использовал ни одну из ночных сборок.

Транзакция создания контракта:

https://etherscan.io/tx/0x2d8615c8bfc548a210781443c872737d890f6c4a5aa373c3d6d20bbaac941b8d

Рассматриваемый договор:

https://etherscan.io/address/0x5a8b57a6cf17a196e000eca4481257d5d3025636

Ссылка на страницу проверки:

https://etherscan.io/verifyContract?a=0x5a8b57a6cf17a196e000eca4481257d5d3025636

Сообщение об ошибке, которое я получаю от etherscan.io:

Извини! Байт-код скомпилированного контракта для «SimpleTest» НЕ соответствует коду создания контракта для [0x5a8b57a6cf17a196e000eca4481257d5d3025636].

Найдено название(я) контракта: 'SimpleTest'

На данный момент невозможно проверить контракт.

Я немного проанализировал байт-коды и обнаружил, что:

  • Входные данные транзакции создания контракта в точности совпадают с байт-кодом, который я получил от Parity.

  • Байт-код, который производит верификатор etherscan.io, похож на байт-код от Parity, а значит, и на входные данные транзакции создания контракта.

  • Байт-код на странице контракта на etherscan.io намного короче других байт-кодов.

  • Все байт-коды содержат 2 большие строки по 00 байт, кроме байт-кода на странице контракта etherscan.io, он содержит только 1 большую строку по 00 байт.

Я действительно понятия не имею, что здесь происходит. Кто-нибудь может помочь?

Это случилось с кем-то недавно ethereum.stackexchange.com/questions/27122/… , это может быть проблема со службой Etherescan.
Хорошо, это не совсем ответ. По сути, это «не использовать четность». Я могу подтвердить ошибку, хотя.

Ответы (1)

Я смог проверить свой контракт с включенной оптимизацией при компиляции из ремикса:

https://ethereum.github.io/browser-solidity/

По какой-то причине он выдает отличный от Parity байт-код, даже если вы выберете ту же версию компилятора и тот же параметр оптимизации.