Incapacidad para verificar el contrato con ABIEncoderV2 en Etherscan

Ayer implementé un contrato con Ropsten ( https://ropsten.etherscan.io/address/0x1fe59c223fa4e9781237f0f49a15ca598069cc30 ) que se basa en la V2 del codificador ABI. Por lo tanto, incluye declaraciones

pragma experimental ABIEncoderV2;

Intenté ejecutar la verificación de código de Etherscan ( https://ropsten.etherscan.io/verifyContract2 ) con una versión plana de mi código Solidity, la versión del compilador coincidente, el indicador de optimización, las ejecuciones del optimizador, etc. Sin embargo, el resultado de la verificación del código es negativo.

En junio, cuando también implementé contratos con el mismo pragma, recibí un mensaje del servicio de asistencia de Etherscan de que no son compatibles con ABIEncoderV2. Esto a pesar del hecho de que la compilación en Remix solo emite una advertencia y Etherscan afirma respaldar los contratos que se compilan en Remix.

Así que estoy buscando alternativas. ¿Alguien puede respaldar la hipótesis de que es la falta de soporte para ABIEncoderV2 lo que todavía está causando problemas de verificación de código? ¿Existen también otras alternativas para la verificación del código público de los contratos inteligentes?

Salud,

Jens Ivar

etherchain.org también le permite verificar contratos. ¿Quizás intentarlo allí?
Ojalá pudiera, @MathematicalRain. Pero por lo que sé, etherchain.org solo rastrea la red principal.

Respuestas (3)

La verificación del código fuente no funcionó para mí cuando traté de aplanar el código fuente en un solo archivo y subirlo a etherscan.io. Creo que eso se debe a que pragma experimental ABIEncoderV2;en el proyecto de varios archivos se aplica solo a algunos archivos, pero cuando aplana los archivos a uno solo, se aplica a todo el código fuente.

Resolvió este problema implementando el binario obtenido al compilar la versión preaplanada:

  1. Aplanar el código fuente con truffle-flatteneroetherlime flatten
  2. Compile e implemente un contrato inteligente desde un archivo plano (puede usar https://remix.ethereum.org )
  3. Verifique el código fuente de https://etherscan.io

¿Has probado a compilar con 0.4.25? Después de hacerlo, pude eliminar ABIEncoderV2y mis verificaciones comenzaron a funcionar.

Asegúrese de poner la pragma experimental ABIEncoderV2;línea después de la línea con la versión de Solidity. Por alguna razón, se compila de manera diferente si es anterior al número de versión.