¿Cómo se verifica correctamente un contrato en etherscan implementado por otro contacto?
Implementé un contrato que implementa otros contratos en la cadena de bloques.
El contrato original está verificado, sin embargo, cuando ese contrato implementa el contrato en la cadena de bloques, no puedo verificar el contrato.
¿Alguien puede ayudarme con esto?
No es posible a partir del 24 de marzo de 2018. Etherscan no puede ubicar el código de contrato en la dirección del subcontrato.
Aquí está la transacción que implementa dos contratos. Pero para el segundo contrato, etherscan no puede encontrar el código de contrato.
El segundo contrato existe y esto se verificó mediante el uso de la función "en la dirección" de la remezcla. Hasta que haya algunas actualizaciones de etherscan, no es posible verificar el contrato creado por otro contrato.
He implementado un contrato de otro contrato: https://etherscan.io/tx/0x8fd885ce7ad7b6a591d9614d41cbb1d97aa7d2e290f6aa52531ce3d4c799a5ff
que implementó: https://etherscan.io/address/0xb1400278014f34c8243b15613a4b463b51fb6f2a#code
y pude verificar el contrato usando la misma versión y optimización del compilador. Sin embargo, debe codificar todos los argumentos del constructor usted mismo, utilizando web3.eth.abi.encodeParameters
así fue como pude verificarlo en etherscan.
string
, bytes
, uint[]
).Si es un usuario de Hardhat, puede usar el complemento hardhat-etherscan :
$ yarn hardhat --network NETWORK_NAME verify CONTRACT_ADDRESS --param1 --param2
Funciona incluso con contratos implementados por otros contratos porque usa el formato de entrada json estándar. Puede leer más sobre cómo funciona esta característica del compilador de Solidity en los documentos .
Nunca he implementado un contrato secundario , pero me imagino que podría ingresar el código fuente de su "otro" contrato en Solidity para recuperar el ABI
necesario para Etherscan.
Desde la pestaña Compilar:
Details
Interface (ABI)
Copy value to clipboard
Ha declarado que ya ha verificado el contrato "original" , por lo que supongo que está de acuerdo con el resto de los pasos en Etherscan.
Es posible antes del 1 de octubre de 2020. Solo tiene que especificar la versión correcta del compilador. Si implementó su contrato con Truffle, entonces su versión del compilador será la versión del paquete "solc" utilizada para compilar su código de contrato.
Por defecto, el paquete "solc" establece "optizaciones" en "Sí"
Entonces, cuando verifique su contrato, "Optimización" debe seleccionarse como "Sí"
Aquí está el código de contrato y subcontrato de muestra verificado en la red kovan.
Espero que esto ayude.
Pablo Razvan Berg
mate suezey
surinder kumar