¿Puedo encontrar argumentos de constructor del artefacto de trufa?

Estoy en proceso de verificar mi contrato en Etherscan. Etherscan solicita argumentos de constructor codificados en ABI durante el proceso de verificación, aunque fui un poco tonto y no sé muy bien cuáles son.

Esto es simplificado por lo que:deployer.deploy(Contract, Date.now()/1000|0 + 36000)

Establecí el argumento del constructor para que sea una función de la hora actual, aunque no estoy muy seguro de cuándo fue la hora exacta en segundos. Por el momento, tengo conmigo el artefacto generado por la trufa.

¿Cómo puedo obtener acceso al constructor cuando se implementó el contrato? ¿Hay algo en el archivo de artefactos de trufas que pueda ayudar? Debido a que conozco el momento difícil de cuando inicié el programa, ¿podría potencialmente contratar contratos de fuerza bruta para encontrar el mismo código de bytes?

Cualquier ayuda sería muy apreciada.

Respuestas (1)

A partir de una simple inspección, los artefactos de trufa no incluyen los parámetros del constructor. Pero sí incluye el código de bytes del contrato.

Si inspecciona la transacción que creó el contrato, verá que el código de bytes se incorpora como parte de los datos de la transacción con algunos bytes adicionales al final, esos bytes adicionales son los parámetros de construcción codificados con ethereum abi.

Por ejemplo, el contrato AugurToken https://etherscan.io/address/0xe94327d07fc17907b4db788e5adf2ed424addff6#code en el "Código de creación de contrato" si se desplaza hasta el final verá el mismo contenido que está en "Argumentos del constructor"

00000000000000000000000048c80f1f4d53d5951e5d5438b54cba84f29f32a5
0000000000000000000000000000000000000000000000000de0b6b3a7640000
000000000000000000000000e1e212c353f7a682693c198ba5ff85849f8300cc

Por ejemplo, el contrato https://etherscan.io/address/0x50ce4b73320ee36e307c1551207fd8008f4f38eb#codese creó en https://etherscan.io/tx/0xd7a4f8958704be82903ce9bd44a3770e110776bd20ddea672d43bc92d17b4977.

Si compara tanto el código de bytes en la sección de código como los datos en la transacción, los bytes adicionales son los parámetros que se envían al constructor.

000000000000000000000000000000000000000000000000000000005a72cfef
000000000000000000000000000000000000000000000000000000005ac09180
0000000000000000000000000000000000000000000000000000000000000258
00000000000000000000000000000000000000000000000d8d726b7177a80000
000000000000000000000000000000000000000000001a784379d99db4200000
00000000000000000000000021c6dadc34965da5fd102f68f3f83aea7f7b249f
Si no me equivoco, creo que los argumentos del constructor codificados en abi solo aparecen en el código de bytes en Etherscan una vez que alguien lo ha verificado.
Por ejemplo, este es mi contrato y no puedo encontrar ninguno de mis argumentos de constructor dentro de él (incluso codificado en hexadecimal). etherscan.io/dirección/…
@NagaganeshJaladanki Tiene razón, el bytecode+params está presente en la transacción que creó el contrato. Verifique los datos de entrada en etherscan.io/tx/… .