No se puede verificar el código de contrato de Solidity en etherscan.io

Sé que esta pregunta se ha hecho muchas veces antes. He leído un montón de respuestas, pero nada parece funcionar para mí. Primero intenté verificar el código fuente de un contrato mucho más grande y complejo, pero no funcionó, así que escribí un pequeño contrato muy simple en Solidity:

pragma solidity ^0.4.17;

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

Como puede ver, no estoy usando ningún argumento constructor, declaraciones de importación o bibliotecas. Lo compilé e implementé usando Solidity 0.4.17 desde dentro de Parity. Se habilitó la optimización. No usé una de las compilaciones nocturnas.

Transacción de creación de contrato:

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

El contrato en cuestión:

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

Enlace a la página de verificación:

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

El mensaje de error que recibo de etherscan.io es:

¡Perdón! El ByteCode de contrato compilado para 'SimpleTest' NO coincide con el código de creación de contrato para [0x5a8b57a6cf17a196e000eca4481257d5d3025636]

Nombre(s) de contrato encontrado(s): 'SimpleTest'

No se puede verificar el contrato en este momento.

Analicé un poco los bytecodes y descubrí que:

  • Los datos de entrada de la transacción de creación del contrato son exactamente iguales al código de bytes que obtuve de Parity.

  • El código de bytes que produce el verificador etherscan.io es similar al código de bytes de Parity y, por lo tanto, también es similar a los datos de entrada de la transacción de creación del contrato.

  • El código de bytes en la página del contrato en etherscan.io es mucho más corto que los otros códigos de bytes.

  • Todos los códigos de bytes contienen 2 cadenas grandes de 00 bytes, excepto el código de bytes en la página de contrato de etherscan.io, que solo contiene 1 cadena grande de 00 bytes.

Realmente no tengo idea de lo que está pasando aquí. ¿Alguien puede ayudar?

Le ha pasado a alguien recientemente ethereum.stackexchange.com/questions/27122/… , puede ser un problema con el servicio Etherescan.
OK, eso no es realmente una respuesta. Es básicamente, "no use paridad". Sin embargo, puedo confirmar el error.

Respuestas (1)

Pude verificar mi contrato con la optimización activada, al compilar desde remix:

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

Por alguna razón, produce un código de bytes diferente de Parity, incluso si selecciona la misma versión del compilador y la misma configuración de optimización.