Buy Crypto
Markets
Spot
FuturesBTC
Earn
Event Center
More
0-Fee Fest
Hardhat: ¿Qué es Hardhat?Hardhat es un entorno de desarrollo de código abierto utilizado para escribir, compilar, probar, depurar, desplegar y verificar contratos inteligentes de Ethereum.Ofrece a los desarrolHardhat: ¿Qué es Hardhat?Hardhat es un entorno de desarrollo de código abierto utilizado para escribir, compilar, probar, depurar, desplegar y verificar contratos inteligentes de Ethereum.Ofrece a los desarrol

Hardhat

2026/10/14 17:27
#Advanced
Humanity
H$0.05639-2.06%
Lagrange
LA$0.05496-0.95%
Virtuals Protocol
VIRTUAL$0.6653+0.28%
TokenFi
TOKEN$0.001846+0.10%
ELYSIA
EL$0.001553+1.04%

¿Qué es Hardhat?

Hardhat es un entorno de desarrollo de código abierto utilizado para escribir, compilar, probar, depurar, desplegar y verificar contratos inteligentes de Ethereum.Ofrece a los desarrolladores de criptomonedas un espacio de trabajo estructurado para crear aplicaciones que se ejecutan en la Ethereum Virtual Machine, conocida habitualmente como EVM.Hardhat no es una blockchain, criptomoneda, wallet, token ni lenguaje de programación de contratos inteligentes.Es una herramienta para desarrolladores que coordina compiladores, ejecutores de pruebas, redes blockchain simuladas, sistemas de despliegue, bibliotecas, scripts y plugins.

La documentación oficial de Hardhat lo describe como un entorno flexible y extensible para escribir, probar, depurar y desplegar software de Ethereum.

Los desarrolladores pueden utilizar Hardhat para probar localmente el comportamiento de los contratos antes de enviar transacciones a una blockchain pública, donde los errores pueden volverse permanentes y costosos.Nomic Foundation mantiene Hardhat para la comunidad de desarrollo de Ethereum.

Versión actual de Hardhat

Hardhat 3 es la versión principal actual del entorno de desarrollo.

A fecha de 13 de julio de 2026, la última versión etiquetada es Hardhat 3.9.1, publicada el 2 de julio de 2026.

La línea de versiones actual incluye un sistema de plugins rediseñado, pruebas nativas en Solidity, cobertura de código integrada, simulación multichain, artefactos tipados, perfiles de compilación y un nuevo gestor de redes.Antes de actualizar, los desarrolladores que mantengan proyectos antiguos deben comprobar si sus plugins y archivos de configuración son compatibles con Hardhat 3.Un proyecto debe fijar sus dependencias de desarrollo, en vez de aceptar automáticamente todas las versiones principales futuras.

Por qué se utiliza Hardhat en el desarrollo cripto

Los contratos inteligentes pueden controlar tokens, tesorerías de protocolos, posiciones de préstamo, sistemas de staking, gobernanza descentralizada y otros criptoactivos valiosos.Un error de programación puede bloquear fondos, permitir transferencias no autorizadas, calcular mal los saldos o crear una situación económica explotable.Hardhat ayuda a detectar problemas antes de desplegar contratos en una blockchain activa.Puede compilar código fuente Solidity, ejecutar pruebas automatizadas, simular transacciones, mostrar trazas de ejecución, estimar el uso de gas y desplegar contratos mediante procedimientos repetibles.También ayuda a los equipos de desarrollo a estandarizar la estructura de los proyectos y automatizar tareas mediante scripts y sistemas de integración continua.Hardhat mejora el proceso de desarrollo, pero no garantiza que un contrato inteligente sea seguro.Para las aplicaciones cripto de producción siguen siendo necesarios la revisión independiente, el modelado de amenazas, las pruebas, la supervisión y un control de acceso cuidadoso.

Arquitectura de Hardhat 3

Hardhat 3 separa buena parte de sus funciones entre un entorno de ejecución central y plugins opcionales.El entorno central carga la configuración del proyecto, gestiona las tareas, crea conexiones blockchain y pone servicios de desarrollo a disposición de scripts y pruebas.Los plugins pueden añadir bibliotecas de contratos, herramientas de aserción, funciones de despliegue, servicios de verificación, ejecutores de pruebas, compatibilidad con firma mediante hardware y otras capacidades.Este diseño modular permite instalar solo las herramientas que el proyecto necesita.También significa que dos proyectos Hardhat pueden comportarse de forma distinta si utilizan diferentes combinaciones de plugins.Los desarrolladores deben documentar todos los plugins necesarios y fijar versiones compatibles en la configuración del paquete.

Entorno de ejecución de Hardhat

El Hardhat Runtime Environment es el objeto central a través del que los scripts, las tareas y los plugins acceden a las funciones de Hardhat.Suele abreviarse como HRE.El HRE puede proporcionar datos de configuración, conexiones de red, artefactos, extensiones de plugins y funciones relacionadas con tareas.Hardhat 3 puede crear programáticamente más de un entorno de ejecución independiente.Esto resulta útil para scripts avanzados, sistemas de pruebas y aplicaciones que necesitan configuraciones aisladas o conexiones simultáneas a redes.

La documentación del Hardhat Runtime Environment explica cómo conecta el entorno la configuración del proyecto con los plugins y los flujos de desarrollo.

Estructura de un proyecto Hardhat

Un proyecto Hardhat típico es un paquete npm que contiene un archivo de configuración del proyecto y varios directorios de desarrollo.

El archivo de configuración principal suele llamarse

hardhat.config.ts
.

El directorio

contracts
suele contener contratos inteligentes en Solidity.

El directorio

test
contiene pruebas automatizadas escritas en Solidity o TypeScript.

El directorio

ignition
contiene módulos de despliegue utilizados por Hardhat Ignition.

El directorio

scripts
contiene scripts de automatización personalizados.

El proyecto también incluye un archivo

package.json
que registra Hardhat, plugins, bibliotecas y otras dependencias de desarrollo.

Mantener una estructura de proyecto coherente facilita las pruebas, la revisión, la incorporación de nuevos miembros y el despliegue automatizado.

Instalación de Hardhat

Hardhat suele instalarse como dependencia de desarrollo dentro de un proyecto JavaScript o TypeScript.La configuración oficial actual requiere Node.js versión 22.13.0 o posterior.

Se puede inicializar un proyecto nuevo con el comando

npx hardhat --init
.

El proceso de inicialización puede crear contratos de ejemplo, pruebas, configuración, scripts y módulos de despliegue.Los desarrolladores deben utilizar una versión compatible de Node.js, ya que un entorno de ejecución no compatible puede provocar errores de instalación o comportamientos incoherentes.

La política oficial de compatibilidad con Node.js explica qué líneas de versiones de Node.js admite Hardhat 3.

Configuración de Hardhat

El archivo de configuración de Hardhat define cómo debe compilarse, probarse, conectarse y desplegarse el proyecto.Puede especificar versiones del compilador Solidity, ajustes del optimizador, plugins, redes, fuentes de cuentas, perfiles de compilación y opciones de tareas.Los archivos de configuración de Hardhat 3 utilizan ECMAScript Modules de forma predeterminada.Cuando sus entornos lo permiten, los scripts y las pruebas pueden seguir utilizando otros formatos de módulos.La configuración debe revisarse con cuidado, ya que distintos ajustes del compilador o del optimizador pueden generar bytecode de despliegue diferente.Un contrato debe verificarse con la misma versión del compilador y los mismos ajustes que generaron el código desplegado.

Variables de configuración y secretos

Los proyectos de desarrollo cripto suelen necesitar claves privadas, direcciones RPC y otros valores sensibles.Hardhat 3 admite variables de configuración de carga diferida, que solo se cargan cuando una tarea las necesita realmente.Estos valores pueden almacenarse fuera del repositorio de código fuente para reducir el riesgo de publicarlos accidentalmente.

La guía de Hardhat sobre variables de configuración explica cómo validar y formatear valores, y cómo proporcionarlos mediante sistemas de almacenamiento externos.

Hardhat también ofrece un plugin oficial de keystore que puede almacenar determinados valores cifrados.El cifrado no hace que un ordenador débil o una contraseña robada sean seguros.Las claves de despliegue de producción deben protegerse mediante controles de acceso sólidos, saldos limitados, firma por hardware, autorización multifirma u otro proceso de gestión de claves revisado con cuidado.

Compilación de contratos Solidity

Hardhat compila el código fuente Solidity en bytecode ejecutable en la EVM.La compilación también genera una interfaz binaria de aplicación, denominada habitualmente ABI.La ABI describe las funciones invocables, los eventos, los errores y los tipos de parámetros del contrato.Las wallets, los scripts, las aplicaciones front-end y otros contratos utilizan la información de la ABI para codificar y decodificar interacciones.Hardhat puede admitir varias versiones del compilador Solidity en un mismo proyecto si distintos archivos fuente las necesitan.Los desarrolladores deben evitar variaciones innecesarias del compilador, ya que aumentan la complejidad de la revisión y la verificación.El compilador debe configurarse explícitamente en vez de depender de un valor predeterminado supuesto.

Artefactos de compilación de Hardhat

Después de compilar, Hardhat crea artefactos con información sobre cada contrato.Un artefacto puede incluir el nombre del contrato, la ABI, el bytecode de creación, el bytecode desplegado, las referencias de enlace y la información del código fuente.Hardhat 3 también genera de forma predeterminada declaraciones TypeScript para artefactos tipados.Los artefactos tipados pueden ayudar a las herramientas de desarrollo a detectar, antes de la ejecución, nombres de funciones incorrectos, tipos de argumentos equivocados e interacciones incorrectas con contratos.

La especificación de artefactos de Hardhat documenta la estructura de los artefactos de contratos y la información de compilación.

Los artefactos deben generarse a partir de código fuente de confianza y ajustes de compilación reproducibles.Si cambian considerablemente los ajustes del compilador, los nombres de contratos o las dependencias, se deben limpiar los artefactos antiguos.

Perfiles de compilación

Hardhat 3 admite perfiles de compilación que definen distintos ajustes del compilador para diferentes flujos de trabajo.Un perfil de desarrollo puede dar prioridad a la compilación rápida y a la información detallada de depuración.Un perfil de producción puede activar los ajustes exactos del optimizador previstos para el despliegue.Un perfil de cobertura puede modificar el bytecode para medir las rutas de código ejecutadas.Los perfiles de compilación reducen la necesidad de reescribir continuamente una misma configuración.Sin embargo, los equipos deben identificar con claridad qué perfil generó cada despliegue.Desplegar un contrato con un perfil no previsto puede producir bytecode, comportamiento de gas o resultados de verificación distintos.

Redes blockchain simuladas

Hardhat incluye redes simuladas que se ejecutan localmente para el desarrollo y las pruebas.Una red simulada permite desplegar contratos y enviar transacciones sin gastar criptomonedas reales.Puede crear cuentas de prueba con fondos, minar bloques de inmediato, modificar marcas de tiempo, alterar saldos, suplantar cuentas y restablecer el estado.Estas funciones permiten probar condiciones poco habituales que serían difíciles o costosas de reproducir en una blockchain pública.Hardhat 3 utiliza un entorno de ejecución simulado impulsado por EDR y escrito en Rust.El entorno simulado está diseñado para realizar pruebas rápidas, mostrar errores detallados y trazas de ejecución, y controlar el estado de la blockchain.Una simulación local es útil, pero no puede reproducir perfectamente todas las condiciones reales de una red.

Simulación multichain

Hardhat 3 se diseñó para admitir el desarrollo en distintos tipos de cadenas compatibles con EVM.Un proyecto puede configurar varias redes simuladas con comportamientos diferentes.La documentación oficial identifica compatibilidad de simulación integrada para Ethereum Mainnet y OP Mainnet, además de un tipo de cadena genérico para otros entornos compatibles.

La documentación multichain de Hardhat explica cómo los tipos de cadena permiten reproducir con mayor precisión el comportamiento específico de las redes simuladas.

Los desarrolladores deben probar los contratos con las reglas de ejecución reales de cada red en la que se desplegarán.Un contrato que funciona correctamente con una configuración de red puede comportarse de forma distinta si cambian las reglas de gas, los contratos predesplegados o los formatos de transacción.

Gestor de redes de Hardhat

El gestor de redes de Hardhat controla las conexiones a redes blockchain simuladas y externas.Hardhat 3 permite que las tareas y los scripts creen más de una conexión de red a la vez.Esto resulta útil para aplicaciones entre redes, pruebas de bridges, coordinación de despliegues y aplicaciones que leen de una cadena mientras escriben en otra.Los nombres de red de la configuración son etiquetas de conexión, no pruebas de que una conexión llegue a la blockchain prevista.Antes de firmar transacciones, los desarrolladores deben verificar el ID de cadena, el último bloque, los saldos de las cuentas y el destino del despliegue.

La guía de gestión de redes explica cómo se conecta Hardhat a redes simuladas y endpoints JSON-RPC remotos.

Bifurcación de una red blockchain

La bifurcación de una red permite que una simulación local de Hardhat copie el estado de la blockchain de un bloque seleccionado de una red pública.Después, el entorno local puede interactuar con contratos, saldos, cuentas y almacenamiento existentes sin modificar la red real.Las pruebas con bifurcaciones son útiles para probar integraciones de protocolos, escenarios de liquidación, cambios de gobernanza, comportamiento de tokens y actualizaciones de contratos.Si se necesitan resultados reproducibles, la bifurcación debe fijarse en un número de bloque concreto.Las pruebas con el último bloque sin especificar pueden producir resultados distintos a medida que cambia el estado público.El proveedor remoto de datos también puede limitar las solicitudes, registrar la actividad del proyecto o devolver temporalmente información incompleta.Probar con una bifurcación no debe confundirse nunca con tener autorización para controlar cuentas o activos reales.

Pruebas de contratos inteligentes con Hardhat

Las pruebas automatizadas son una de las funciones más importantes de Hardhat.Hardhat 3 admite pruebas escritas directamente en Solidity y pruebas de integración en TypeScript.Ambos métodos pueden utilizarse conjuntamente en un mismo proyecto.Las pruebas en Solidity son útiles para comprobar el comportamiento específico de un contrato, ya que se ejecutan dentro del entorno EVM.Las pruebas en TypeScript son útiles para flujos de aplicación, varias cuentas, lógica off-chain, datos externos y pruebas de integración más amplias.

La introducción oficial a las pruebas de Hardhat explica las ventajas de ambos métodos.

Una buena batería de pruebas debe cubrir operaciones correctas, errores previstos, restricciones de acceso, entradas extremas, transiciones de estado y órdenes de transacción poco habituales.

Pruebas en Solidity

Hardhat reconoce los archivos de pruebas Solidity mediante las convenciones admitidas de directorio y nombre de archivo.Las funciones de prueba públicas pueden desplegar contratos, invocar funciones, inspeccionar el estado y fallar si no se cumple una condición esperada.Las pruebas Solidity pueden utilizar cheatcodes para modificar el entorno de prueba.Los cheatcodes pueden cambiar el emisor de la llamada, adelantar el tiempo, alterar saldos, esperar eventos, esperar reversiones o inspeccionar el almacenamiento.Estos controles facilitan probar condiciones que, de otro modo, requerirían esperas prolongadas o configuraciones complejas.Los cheatcodes afectan al entorno de prueba simulado y no son funciones disponibles para usuarios normales en una blockchain pública.

Pruebas fuzz

Las pruebas fuzz ejecutan repetidamente una función de contrato con valores de entrada generados.Pueden descubrir casos extremos que los desarrolladores no incluyeron en ejemplos escritos manualmente.Un cálculo de tokens puede funcionar con valores habituales, pero fallar con cero, un entero máximo, un límite de redondeo o una combinación de estados inesperada.Las pruebas fuzz deben definir supuestos realistas para que los valores generados sigan siendo pertinentes.Que una campaña fuzz termine sin fallos no demuestra que el contrato sea seguro, ya que solo explora las entradas y propiedades configuradas.Las invariantes importantes deben escribirse explícitamente para que el sistema de pruebas sepa qué comportamiento debe mantenerse siempre.

Pruebas de invariantes

Una invariante es una propiedad que debe mantenerse durante muchas secuencias posibles de acciones.Un protocolo de préstamo puede exigir que la deuda total registrada coincida con la suma de las deudas de los usuarios.Un token puede exigir que la oferta total equivalga a todos los saldos contabilizados según su modelo contable.Un sistema de mercado automatizado puede exigir que determinadas relaciones entre reservas sigan siendo válidas.Las pruebas de invariantes pueden generar secuencias de transacciones y comprobar que la propiedad se mantiene.Son especialmente valiosas en protocolos cripto con estado, cuyas vulnerabilidades solo aparecen después de varias operaciones en un orden concreto.

Pruebas TypeScript

Las pruebas TypeScript interactúan con contratos mediante bibliotecas de desarrollo y conexiones blockchain.La configuración recomendada de Hardhat 3 utiliza el ejecutor de pruebas de Node.js con viem.Los plugins oficiales también admiten una configuración basada en ethers y Mocha.Las pruebas TypeScript pueden coordinar varios contratos, cuentas, archivos, API y conexiones de red.También pueden probar los mismos flujos de trabajo que utiliza el software off-chain de una aplicación descentralizada.Las pruebas deben evitar depender innecesariamente de servicios externos activos, ya que su indisponibilidad puede volver poco fiables los resultados.

Cobertura de código

La cobertura de código mide qué instrucciones, ramas, funciones y rutas de los contratos se ejecutaron durante las pruebas.Hardhat 3 incluye cobertura de código Solidity integrada.

La cobertura puede solicitarse mediante la opción de pruebas

--coverage
.

La guía de cobertura de código de Hardhat explica que la herramienta instrumenta los contratos con marcadores durante las pruebas de cobertura.

El bytecode instrumentado es distinto del bytecode de producción normal y puede consumir más gas.Una cobertura alta no demuestra que las pruebas incluyan aserciones útiles ni que el contrato sea seguro.Una prueba puede ejecutar todas las líneas sin comprobar el resultado económico más importante.

Estadísticas y snapshots de gas

Hardhat puede medir el gas consumido por las funciones públicas de los contratos durante las pruebas.

La opción

--gas-stats
puede mostrar estadísticas de uso de gas en las pruebas compatibles.

Los snapshots de gas pueden registrar valores de gas esperados e identificar cambios inesperados entre revisiones del código.Estas herramientas ayudan a detectar funciones costosas, patrones con mucho almacenamiento y aumentos accidentales del consumo de gas.Los resultados de gas de redes simuladas pueden no incluir todos los costes que afronta un usuario en una red de producción.Las comisiones específicas de cada Layer, los costes de publicación de datos, la congestión y los cambios en las reglas del protocolo pueden afectar al gasto final de la transacción.La optimización del gas nunca debe debilitar la validación, la autorización ni la seguridad contable.

Depuración con Hardhat

Hardhat puede mostrar errores de Solidity, registros decodificados, trazas de pila y trazas de ejecución.Una traza de ejecución muestra la secuencia de llamadas y operaciones involucradas en una transacción.

La guía de trazas de ejecución de Hardhat explica cómo los ajustes de nivel de detalle controlan la cantidad de información de depuración.

Las trazas detalladas pueden revelar qué llamada revirtió, a qué función se accedió y cómo se desarrollaron las interacciones anidadas entre contratos.La trazabilidad resulta especialmente útil en protocolos con proxies, callbacks, hooks, transferencias de tokens y varios contratos conectados.La información de depuración puede contener direcciones, parámetros u otros datos sensibles de desarrollo, por lo que debe gestionarse con cuidado en registros compartidos.

Registro en consola de Solidity

Hardhat admite el registro en consola desde código Solidity en entornos simulados orientados al desarrollo.Los desarrolladores pueden imprimir valores mientras se ejecuta una prueba o una transacción local.Esto facilita inspeccionar el estado, los emisores de llamadas, los saldos y los cálculos intermedios.El registro de desarrollo no debe permanecer en el código de producción sin un motivo claro.Las herramientas de registro pueden afectar al bytecode, al tamaño del contrato y al comportamiento del despliegue.Antes de publicar, las pruebas automatizadas y las aserciones deben sustituir a las instrucciones temporales de depuración.

Tareas de Hardhat

Una tarea Hardhat es un comando con nombre que automatiza parte de un flujo de desarrollo.Una tarea puede compilar contratos, inspeccionar cuentas, generar informes, gestionar despliegues o realizar una operación específica del proyecto.Los plugins pueden registrar tareas disponibles desde la interfaz de línea de comandos.Las tareas personalizadas deben validar la identidad de la red y los datos de entrada del usuario antes de enviar transacciones.Una tarea peligrosa no debe utilizar silenciosamente la primera cuenta disponible ni elegir por defecto una red de producción.Los nombres de comando claros y las comprobaciones de confirmación reducen el riesgo de despliegues o transferencias de fondos accidentales.

Scripts de Hardhat

Los scripts de Hardhat son programas TypeScript o JavaScript que utilizan el entorno de ejecución y los plugins instalados.Un script puede desplegar contratos, invocar funciones, leer estados, transferir roles administrativos o generar registros de despliegue.Los scripts son flexibles, pero dejan más responsabilidad en manos del desarrollador que un sistema de despliegue estructurado.Si falla un script, es posible que ya se hayan completado varias transacciones mientras las posteriores quedan sin ejecutar.Los scripts deben detectar el estado existente y evitar repetir operaciones peligrosas.Los scripts de producción deben registrar hashes de transacción, direcciones de despliegue, parámetros, ID de red y resultados.

Hardhat Ignition

Hardhat Ignition es el sistema declarativo oficial de despliegue que se ofrece para proyectos Hardhat.Los desarrolladores describen los contratos y las operaciones deseadas mediante módulos de despliegue.Ignition analiza esas definiciones y determina cómo ejecutar el despliegue.Puede enviar transacciones independientes en paralelo, recuperarse de determinados errores y reanudar despliegues interrumpidos.

La guía de despliegue de Hardhat Ignition explica cómo se agrupan en módulos los contratos y las llamadas posteriores al despliegue.

El despliegue declarativo reduce algunos riesgos de los scripts manuales, pero aun así se deben revisar cuidadosamente la lógica y los parámetros de los módulos.Un sistema automatizado puede repetir un error de forma sistemática si la definición del despliegue es incorrecta.

Despliegue de contratos inteligentes

El despliegue envía transacciones de creación de contratos a una red blockchain.La transacción contiene bytecode de creación compilado y parámetros del constructor.Una vez confirmada, el contrato recibe una dirección determinada por las reglas de creación de la blockchain.El despliegue debe utilizar el compilador, el optimizador, los argumentos del constructor, la cuenta, la cadena y los ajustes de gas previstos.Antes de enviar una transacción activa, los equipos deben realizar un despliegue simulado final con los mismos artefactos de producción.Inmediatamente después del despliegue, también deben verificar los roles administrativos, la propiedad, los permisos de actualización, las direcciones de tesorería y los controles de emergencia.Las claves privadas nunca deben añadirse directamente a un archivo de configuración de Hardhat ni a un repositorio de código fuente.

Verificación de contratos inteligentes

La verificación de contratos inteligentes vincula el bytecode desplegado con el código fuente declarado y los ajustes del compilador.El código fuente verificado permite a los usuarios, auditores, wallets y herramientas de supervisión inspeccionar el comportamiento previsto del contrato.Hardhat ofrece un plugin oficial de verificación.

La guía de verificación de Hardhat explica que la verificación demuestra que el bytecode desplegado se generó a partir de un código fuente especificado.

La verificación no demuestra que el código fuente sea seguro, justo o esté libre de riesgos económicos ocultos.Los parámetros del constructor, las bibliotecas enlazadas, los ajustes del optimizador, los metadatos y las versiones del compilador deben coincidir con los del despliegue.Los equipos deben conservar la información de compilación para poder reproducir posteriormente la verificación.

Plugins de Hardhat

Los plugins amplían Hardhat con funciones de desarrollo adicionales.Los plugins oficiales ofrecen compatibilidad con viem, ethers, aserciones, herramientas auxiliares de red, verificación de contratos, despliegues con Ignition, almacenamiento cifrado de configuración, firmantes de hardware y ejecutores de pruebas.

El directorio oficial de plugins enumera los plugins mantenidos por Nomic Foundation.

Los plugins de la comunidad pueden añadir funciones útiles, pero quizá no hayan recibido el mismo nivel de revisión o mantenimiento.Un plugin malicioso podría leer archivos del proyecto, variables de entorno, claves, datos de despliegue y tráfico de red.Antes de instalarlo, los desarrolladores deben revisar la titularidad, el historial de actualizaciones, el código fuente, las dependencias, los permisos y la compatibilidad del plugin.

Seguridad de las dependencias

Un proyecto Hardhat depende de paquetes Node.js que pueden ejecutar código durante la instalación, las pruebas o el despliegue.Una dependencia comprometida podría intentar robar variables de entorno, claves privadas, código fuente o credenciales de despliegue.Los proyectos deben guardar un archivo lockfile en el repositorio y revisar los cambios inesperados de dependencias.Los despliegues de producción deben realizarse en sistemas limpios, con el mínimo software necesario y versiones de paquetes verificadas.Las actualizaciones automáticas de dependencias no deben integrarse sin pruebas y revisión.La popularidad de un paquete no garantiza que todas sus versiones sean seguras.

Hardhat y claves privadas

Hardhat puede necesitar acceso a una cuenta de firma para desplegar o invocar contratos en una red externa.Utilizar una clave privada sin cifrar en un archivo de configuración de texto plano supone un riesgo de seguridad grave.Las claves de desarrollo solo deben contener fondos de prueba.Las claves de producción deben protegerse con almacenamiento cifrado, firma por hardware, permisos limitados o procedimientos multifirma.Siempre que sea posible, la cuenta de despliegue debe tener solo el importe necesario para la transacción prevista.Después del despliegue, la propiedad administrativa puede transferirse a una cuenta más segura.Se deben revisar los registros y los informes de errores para confirmar que no revelan valores de configuración sensibles.

Hardhat y hardware wallets

Una hardware wallet puede firmar transacciones de despliegue o administración de Hardhat mediante un plugin y un flujo de trabajo compatibles.Esto permite mantener la clave privada fuera del ordenador de desarrollo.Cuando sea posible, el dispositivo de hardware debe mostrar el destino, la red, el valor y los datos del contrato.Los despliegues complejos de contratos pueden ser difíciles de interpretar en la pequeña pantalla de un dispositivo.Una hardware wallet no puede identificar un despliegue perjudicial solo porque la transacción se haya generado con Hardhat.El código fuente, los artefactos compilados, los argumentos del constructor y los datos de transacción deben revisarse de forma independiente.

Errores de seguridad habituales con Hardhat

Un error habitual es incluir una clave privada o frase de recuperación en un repositorio de código fuente.Otro es desplegar en la blockchain equivocada por confiar en la etiqueta de red sin comprobar el ID de cadena.Un tercer error consiste en utilizar ajustes distintos del compilador para las pruebas, el despliegue y la verificación.Un cuarto es probar solo las acciones correctas e ignorar las llamadas no autorizadas y las condiciones de error.Un quinto es depender de una bifurcación de estado blockchain cambiante sin fijar un número de bloque.Un sexto es instalar plugins no revisados que puedan acceder a secretos de despliegue.Un séptimo es suponer que una cobertura de código completa equivale a una auditoría de seguridad.Un octavo es conceder a la cuenta de despliegue el control permanente de todas las funciones del protocolo.Un noveno es no verificar las direcciones desplegadas y la titularidad una vez finalizado el despliegue.Un décimo es enviar fondos reales a direcciones de desarrollo generadas localmente cuyas claves nunca se protegieron.

Buenas prácticas con Hardhat

Fija las versiones de Hardhat, plugins, bibliotecas y compiladores en los archivos de dependencias del proyecto.Utiliza una versión compatible de Node.js y guarda el archivo de bloqueo de paquetes en el repositorio.Mantén las claves privadas y los endpoints sensibles fuera del repositorio de código fuente.Utiliza cuentas distintas para pruebas locales, pruebas públicas, despliegues y administración a largo plazo.Escribe pruebas unitarias, de integración, fuzz, de invariantes, de control de acceso y de condiciones de error.Ejecuta pruebas de cobertura, teniendo presente que la cobertura mide la ejecución, no la corrección.Para que las pruebas de integración de protocolos sean reproducibles, utiliza bifurcaciones fijadas en bloques conocidos.Revisa los cambios de gas y el tamaño de los contratos antes del despliegue.Verifica el código fuente y conserva la información de compilación después del despliegue.Solicita una revisión de seguridad independiente para los contratos que controlen un valor cripto significativo.

Limitaciones de Hardhat

Hardhat no puede demostrar que el diseño económico de un contrato sea seguro.No puede garantizar que una batería de pruebas incluya todas las vías de ataque.No puede reproducir perfectamente todas las condiciones de una red de producción.No puede impedir que un desarrollador firme una transacción con la cuenta o la red equivocadas.No puede proteger una clave privada almacenada de forma descuidada en el proyecto.No puede hacer de confianza una dependencia de terceros insegura.No puede sustituir la verificación formal, las auditorías, los programas de recompensas por errores, la supervisión y la planificación de respuesta a incidentes.Hardhat resulta más eficaz cuando se utiliza como parte de un proceso más amplio de desarrollo seguro.

Preguntas frecuentes

¿Qué es Hardhat en el ámbito de las criptomonedas?

Hardhat es un entorno de desarrollo para compilar, probar, depurar, desplegar y verificar contratos inteligentes de Ethereum y compatibles con EVM.

¿Hardhat es una blockchain?

No. Hardhat es una herramienta de desarrollo de software, no una red blockchain.

¿Hardhat es una criptomoneda?

No. Hardhat no representa una moneda ni un token.

¿Quién desarrolla Hardhat?

Nomic Foundation desarrolla Hardhat para la comunidad de desarrollo de Ethereum.

¿Cuál es la versión principal actual de Hardhat?

Hardhat 3 es la línea de versiones principales actual.

¿Cuál es la última versión de Hardhat?

A fecha de 13 de julio de 2026, la última versión etiquetada es Hardhat 3.9.1.

¿Qué lenguajes de programación utiliza Hardhat?

Los proyectos Hardhat suelen utilizar Solidity para los contratos inteligentes y TypeScript o JavaScript para la configuración, los scripts y las pruebas de integración.

¿Qué compila Hardhat?

Hardhat compila código fuente Solidity para generar bytecode EVM, ABI, artefactos e información de compilación relacionada.

¿Hardhat incluye una blockchain local?

Hardhat incluye redes blockchain simuladas diseñadas para el desarrollo local y las pruebas automatizadas.

¿Hardhat admite pruebas Solidity?

Sí. Hardhat 3 admite tanto pruebas escritas directamente en Solidity como pruebas basadas en TypeScript.

¿Hardhat puede realizar pruebas fuzz?

Sí. Las pruebas Solidity pueden generar entradas variadas para probar propiedades y casos extremos.

¿Hardhat puede probar invariantes de contratos?

Sí. Los desarrolladores pueden definir propiedades que deben mantenerse a lo largo de secuencias generadas de acciones del contrato.

¿Qué es Hardhat Ignition?

Hardhat Ignition es el sistema declarativo oficial para definir, ejecutar, reanudar y registrar despliegues de contratos inteligentes.

¿Hardhat puede desplegar contratos en redes públicas?

Sí. Hardhat puede conectarse a un endpoint JSON-RPC externo y enviar transacciones de despliegue firmadas.

¿Hardhat necesita criptomonedas reales para las pruebas locales?

No. Las redes simuladas proporcionan cuentas y saldos de desarrollo sin valor en el mundo real.

¿Qué es la bifurcación de redes en Hardhat?

Consiste en copiar el estado blockchain de un bloque seleccionado de una red pública a una simulación local para realizar pruebas.

¿Hardhat puede verificar un contrato inteligente?

Sí. El plugin oficial de verificación puede enviar código fuente e información de compilación a servicios de verificación compatibles.

¿La verificación de un contrato demuestra que es seguro?

No. La verificación vincula el código fuente con el bytecode desplegado, pero no demuestra que la lógica sea segura o económicamente sólida.

¿Una cobertura de código elevada significa que un contrato es seguro?

No. Una cobertura elevada solo indica que el código se ejecutó durante las pruebas; no demuestra que se comprobaran las propiedades correctas.

¿Hardhat puede estimar el uso de gas?

Sí. En las ejecuciones de pruebas compatibles, Hardhat puede generar estadísticas y snapshots de gas.

¿Hardhat puede conectarse a varias redes blockchain?

Sí. Hardhat 3 puede gestionar varias conexiones de red y configuraciones de cadenas simuladas.

¿Es seguro guardar una clave privada en la configuración de Hardhat?

No. Las claves privadas deben cargarse mediante un sistema externo protegido, en vez de incluirse en texto plano en el repositorio.

¿Hardhat puede utilizar una hardware wallet?

Sí. Los plugins y flujos de trabajo compatibles pueden utilizar un dispositivo de hardware para firmar determinadas transacciones de despliegue y administración.

¿Todos los plugins de Hardhat son seguros?

No. Los plugins pueden acceder a recursos sensibles del proyecto y deben revisarse antes de instalarlos.

¿Hardhat puede sustituir una auditoría de contratos inteligentes?

No. Hardhat facilita el desarrollo y las pruebas, pero no sustituye una evaluación de seguridad independiente.

¿Por qué una prueba con bifurcación debe utilizar un bloque fijo?

Fijar un bloque estabiliza el estado blockchain copiado para que las futuras ejecuciones de pruebas sean reproducibles.

¿Hardhat puede impedir un despliegue en la red equivocada?

Hardhat puede facilitar comprobaciones, pero los desarrolladores deben verificar el ID de cadena, la cuenta, el endpoint y los parámetros de despliegue.

Conclusión

Hardhat es un entorno de desarrollo completo para crear software de contratos inteligentes de Ethereum y compatible con EVM.Reúne en una misma estructura de proyecto la compilación, los artefactos, las redes simuladas, las pruebas, la depuración, el despliegue, la verificación, los scripts, las tareas y los plugins.Hardhat 3 es la versión principal actual e incorpora pruebas nativas en Solidity, simulación multichain, artefactos tipados, perfiles de compilación, cobertura de código y una gestión de redes más flexible.Los desarrolladores pueden utilizar Hardhat para probar contratos localmente antes de gastar criptomonedas reales o poner en riesgo los activos de los usuarios.Hardhat Ignition ofrece un sistema de despliegue estructurado que puede reanudar trabajos interrumpidos y registrar el estado del despliegue.Las pruebas con bifurcaciones permiten reproducir el estado de una blockchain pública y probar interacciones con contratos existentes.Las trazas de ejecución, los informes de cobertura, las pruebas fuzz, las invariantes y las estadísticas de gas pueden revelar muchos problemas técnicos antes del despliegue.Estas herramientas no garantizan la seguridad: el resultado sigue dependiendo del código fuente, las pruebas, los supuestos, las dependencias, las claves y el proceso de despliegue.Las claves privadas deben mantenerse fuera de los repositorios de código fuente y protegerse con procedimientos sólidos de firma y control de acceso.Los plugins y las dependencias de paquetes deben revisarse, ya que pueden acceder a recursos de desarrollo sensibles.Los contratos de producción deben utilizar ajustes de compilador fijados, compilaciones reproducibles, código fuente verificado, revisión independiente y supervisión posterior al despliegue.Para los desarrolladores de criptomonedas, Hardhat se entiende mejor como un espacio de trabajo potente para reducir los riesgos del desarrollo de contratos inteligentes, no como un sustituto de la ingeniería rigurosa y la revisión de seguridad.
BTC ETFs See $679M in Outflows
BTC ETFs See $679M in OutflowsBTC ETFs See $679M in Outflows
Citi sees BTC at $113K. What do institutions see?