Saltar al contenido principal

Requisitos previos

  • Un contrato desplegado en la testnet de Plasma. Consulta despliega un contrato si aún no has desplegado uno.
  • El código fuente y la configuración de compilación de tu contrato.
  • Los argumentos del constructor utilizados durante el despliegue (si los hay).
El explorador de bloques de Plasma (plasmascan.to) ofrece una API de verificación compatible con Etherscan. Los ejemplos a continuación usan esa API directamente — no se requiere una cuenta de terceros para enviar una verificación.

Contratos de ejemplo

Usaremos dos contratos de ejemplo para demostrar argumentos de constructor tanto simples como complejos:

Contrato simple

Un contrato básico de almacenamiento de datos que demuestra conceptos fundamentales de smart contracts.

Contrato complejo

Un sistema de vault más sofisticado para administrar depósitos de tokens con parámetros configurables.

Verifica con Foundry

Foundry provee el comando forge verify-contract para la verificación de contratos.
  1. Asegúrate de que tu foundry.toml incluya la configuración de verificación:
  2. Verifica el contrato. Para el contrato SimpleStorage con un argumento de constructor de tipo string:
    Para el contrato TokenVault con múltiples argumentos de constructor:
  3. Verifica el estado de la verificación. Foundry mostrará el estado de verificación en tiempo real con la bandera --watch. Busca:

Verifica con Hardhat

Hardhat ofrece verificación de contratos a través del plugin @nomicfoundation/hardhat-verify.
  1. Actualiza tu hardhat.config.js para incluir la configuración de verificación:
  2. Verifica el contrato. Para el contrato simple:
    Para contratos con múltiples argumentos de constructor, crea un script de verificación scripts/verify.js:
  3. Ejecuta el script de verificación:

Verificación automatizada durante el despliegue

También puedes verificar contratos automáticamente durante el despliegue agregando la verificación a tu script de despliegue:

Verifica con Ethers.js

Ethers.js requiere llamadas API manuales al explorador de bloques para la verificación. Este enfoque te brinda control total sobre el proceso de verificación.
  1. Instala las dependencias requeridas:
  2. Crea el script de verificación verify-ethers.js:
  3. Codifica los argumentos del constructor. Para argumentos de constructor complejos, debes codificarlos en ABI. Puedes usar la herramienta cast de Foundry:
  4. Finalmente, ejecuta la verificación:

Comprueba el estado de la verificación

Después de la verificación, puedes comprobar si fue exitosa:

En el explorador de bloques

  1. Visita el explorador de la testnet de Plasma.
  2. Busca la dirección de tu contrato.
  3. Busca un check verde junto a la pestaña «Contract».
  4. Haz clic en la pestaña «Contract» para ver el código fuente verificado.

Programáticamente

  1. Crea un script de verificación de estado check-verification.js:

Métodos alternativos

Si bien los exploradores de bloques son el método de verificación más común, también puedes usar:

Sourcify

Sourcify provee verificación descentralizada de contratos:

Tenderly

Tenderly ofrece verificación como parte de su plataforma de depuración. Consulta su documentación para más detalles.

Aplanado de contratos

Para contratos con imports o librerías, es posible que necesites aplanar tu contrato en un único archivo antes de la verificación. Herramientas populares incluyen: Para proyectos complejos con librerías externas, consulta la documentación de verificación de Hardhat para opciones de configuración avanzadas.

Solución de problemas

Desajuste en los argumentos del constructor

Verifica nuevamente que tus argumentos del constructor coincidan exactamente con los usados durante el despliegue. Usa cast abi-encode para verificar la codificación.

Desajuste en la versión del compilador

Asegúrate de que la versión del compilador en tu solicitud de verificación coincida con la versión usada durante la compilación.

Desajuste en la configuración de optimización

Verifica que la configuración de optimización (habilitada/deshabilitada y conteo de runs) coincida con tu configuración de compilación.

Ya verificado

Esto significa que la verificación fue exitosa previamente. Revisa el explorador de bloques para confirmar.

Límite de tasa

Espera unos minutos antes de reintentar. Considera actualizar tu plan de API si necesitas límites más altos.