es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Archivo no encontrado al intentar implementar un contrato inteligente con Hardhat.

He estado trabajando en este proyecto (puedes encontrarlo aquí) y en el punto de intentar desplegar el contrato inteligente en la red de prueba de Ropsten, con conexión a través de Infura.

Recibo el siguiente error al intentar desplegar el contrato ArbitrageFlashLoaner en Ropsten a través de Infura.io.
Versión de Hardhat: v2.7.1.

Imagen
Error de Hardhat: HH404: No se encuentra el archivo @openzeppelin/contracts/math/SafeMath.sol, importado desde contracts/UniswapV2Library.sol.

Entiendo que no puede encontrar @openzeppelin/contracts/math/SafeMath.sol desde contracts/UniswapV2Library.sol, pero veo que SafeMath.sol está en la ruta relativa de node_modules:

Imagen

UniswapV2Library.sol es una carpeta que contiene un archivo .json:

Imagen

Y el contenido de UniswapV2Library.json es el siguiente:

{
  "_format": "hh-sol-artifact-1",
  "contractName": "UniswapV2Library",
  "sourceName": "contracts/UniswapV2Library.sol",
  "abi": [],
.
.
.
}

Estoy confundido acerca del problema de la ruta al ejecutar npx hardhat.... La traza de pila no me ayuda realmente. ¿Hay alguna manera de ejecutar esto a través de algún tipo de IDE o poner una variable de observación para ver cuáles son las rutas y variables reales en todos los archivos que utiliza (pasar por el proceso) mientras se está ejecutando o dónde está buscando?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Solución al Error de Hardhat: HH404

    El mensaje de error indica que no se pudo encontrar el archivo SafeMath.sol en el directorio @openzeppelin/contracts/math.

    Parece que el directorio node_modules contiene el archivo, lo que implica que el problema podría estar en la ruta relativa al archivo.

    Para solucionar el problema, puedes intentar lo siguiente:

    1. Verifica nuevamente la declaración de importación en el archivo UniswapV2Library.sol para asegurarte de que la ruta relativa sea correcta.
    2. Actualiza el archivo hardhat.config.js para incluir @openzeppelin en la sección external de settings.

      module.exports = {
       solidity: "0.8.4",
       networks: {
         ropsten: {
           url: INFURA_URL,
           accounts: [PRIVATE_KEY],
         },
       },
       external: {
         contracts: [
           {
             artifacts: "@openzeppelin/*
           },
         ],
       },
      };
      

    3. Si los pasos anteriores no funcionan, intenta reinstalar Hardhat y las dependencias para asegurarte de que todo esté actualizado.

    En cuanto a la depuración del problema, puedes intentar ejecutar el comando de implementación con la opción de depuración (npx hardhat --debug deploy --network ropsten) y examinar la salida en busca de pistas. También puedes intentar utilizar un entorno de desarrollo con un depurador, como Remix o Truffle.

    Esperamos que una de estas soluciones resuelva el problema y te permita implementar el contrato inteligente en la red de prueba de Ropsten con éxito.

Comments are closed.