¿Qué es Ethers.js?
Ethers.js es una biblioteca de código abierto para JavaScript y TypeScript que se utiliza para conectar aplicaciones, wallets, scripts y herramientas de desarrollo con Ethereum y otras redes blockchain basadas en EVM.Ofrece a los desarrolladores funciones reutilizables para consultar datos de la blockchain, enviar transacciones, gestionar cuentas, firmar mensajes, interactuar con contratos inteligentes, decodificar registros de eventos y trabajar con formatos de datos de Ethereum.En lugar de crear manualmente cada solicitud JSON-RPC o codificar cada llamada a un contrato inteligente, los desarrolladores pueden utilizar objetos y métodos de ethers.js que se encargan de buena parte del trabajo técnico.La documentación oficial de ethers.js describe la biblioteca como una herramienta completa y compacta para interactuar con la blockchain de Ethereum y su ecosistema.
Ethers.js se utiliza habitualmente en interfaces de aplicaciones descentralizadas, servicios blockchain del lado del servidor, wallets de criptomonedas, sistemas de supervisión automatizada, scripts de pruebas, herramientas de pago y procesos de despliegue de contratos inteligentes.La biblioteca no opera su propia blockchain ni proporciona el consenso de Ethereum.Actúa como una capa de software entre una aplicación y un nodo de Ethereum, una wallet o un servicio RPC compatible.Ethers.js está escrita en TypeScript e incluye declaraciones de tipos integradas que pueden ayudar a los desarrolladores a detectar determinados errores antes de ejecutar una aplicación.El proyecto se distribuye con la licencia MIT y se mantiene a través de su repositorio público de código fuente de ethers.js.
¿Cuál es la versión actual de Ethers.js?
A 16 de julio de 2026, la versión publicada más reciente es ethers v6.17.0.El repositorio oficial indica que la versión 6.17.0 se publicó el 18 de junio de 2026.También puedes consultar la versión actual en la página oficial del paquete ethers.
Los desarrolladores deberían comprobar cuál es la versión actual antes de instalar la biblioteca, ya que las nuevas versiones pueden incluir correcciones de errores, actualizaciones de red, mejoras de seguridad y compatibilidad con nuevos protocolos.Por lo general, un proyecto debería fijar la versión de sus dependencias mediante un fichero de bloqueo de paquetes, para que los entornos de desarrollo, pruebas y producción utilicen la misma versión del paquete.Instalar automáticamente una versión futura desconocida sin probarla puede introducir cambios incompatibles o cambios inesperados en las dependencias.¿Qué hace Ethers.js?
Ethers.js proporciona un conjunto de herramientas para interactuar con sistemas blockchain basados en Ethereum.Puede conectar una aplicación a un nodo de Ethereum mediante JSON-RPC, WebSocket o la interfaz de una wallet del navegador.Puede consultar saldos de cuentas, bloques, transacciones, datos de comisiones, código de contratos inteligentes, registros de eventos e información de red.También puede crear y gestionar wallets, derivar cuentas a partir de frases mnemotécnicas, cifrar claves privadas y firmar mensajes o transacciones.Puede utilizar la ABI de un contrato inteligente para codificar llamadas a funciones y decodificar los valores devueltos.Puede enviar transacciones que cambian el estado mediante un firmante y esperar a que reciban confirmaciones de bloque.También puede estimar la comisión de gas, dar formato a unidades de criptomonedas, calcular hashes, recuperar direcciones de firma y validar direcciones de Ethereum.Estas funciones permiten que los desarrolladores se centren en la lógica de la aplicación en vez de reconstruir desde cero la comunicación blockchain de bajo nivel.¿Cómo se instala Ethers.js?
Ethers.js se instala habitualmente mediante el sistema de paquetes npm con el nombre ethers.Las instrucciones oficiales de instalación incluyen el comando npm install ethers para proyectos de Node.js.
Una vez instalada, se puede importar todo el espacio de nombres ethers o importar clases y funciones específicas.La versión 6 admite los patrones modernos de módulos de JavaScript y permite importar muchas funciones directamente desde el paquete principal.Las importaciones selectivas pueden ayudar a que las herramientas de empaquetado incluyan solo el código que necesita la aplicación.Las aplicaciones de navegador también pueden utilizar una compilación de módulos ECMAScript, aunque las aplicaciones de producción deberían seguir un proceso controlado de gestión de dependencias y compilación, en lugar de cargar código no verificado de una fuente desconocida.Los desarrolladores nunca deberían instalar un paquete basándose únicamente en que tenga un nombre parecido, ya que los paquetes maliciosos pueden hacerse pasar por bibliotecas de criptomonedas populares.Antes de la instalación, deberían comprobar el nombre del paquete, la información del editor, el repositorio, la versión, los datos de integridad y el fichero de bloqueo de dependencias.Cómo se conecta Ethers.js a una blockchain
Ethers.js se comunica con la infraestructura blockchain a través de un provider.Un provider es una conexión de solo lectura que permite a una aplicación solicitar información de la blockchain y simular transacciones.El provider envía solicitudes a un nodo de Ethereum o a otro endpoint RPC compatible.Entre las solicitudes habituales se incluyen consultar un saldo de ETH, recuperar un bloque, leer el estado de un contrato, estimar la comisión de gas, obtener información sobre comisiones y buscar registros de eventos.Normalmente, el provider no contiene una clave privada ni puede autorizar por sí solo una transacción desde la cuenta de un usuario.La documentación oficial de providers de ethers.js describe las clases de provider y las operaciones blockchain disponibles a través de ellas.
Una aplicación de producción fiable debería utilizar una conexión RPC con capacidad, disponibilidad, acceso a datos históricos, controles de seguridad y límites de solicitudes adecuados.Los endpoints públicos o compartidos pueden ser útiles para realizar pruebas, pero pueden ralentizarse o dejar de estar disponibles cuando hay mucha demanda.¿Qué es un provider en Ethers.js?
Un provider es una abstracción que representa una conexión a una red compatible con Ethereum.Ofrece a los desarrolladores una interfaz JavaScript uniforme, aunque el nodo subyacente o el método de transporte sean distintos.Un provider JSON-RPC se comunica con un nodo mediante solicitudes JSON-RPC estándar.Un provider WebSocket puede mantener una conexión persistente, útil para recibir información sobre nuevos bloques, actividad pendiente y notificaciones de eventos.Un provider de navegador envuelve una interfaz inyectada por una wallet que sigue el estándar común de providers de navegador.Un provider alternativo puede combinar varias fuentes de datos y comparar o priorizar sus respuestas según su configuración.Los providers pueden consultar datos públicos, pero no deben confundirse con los firmantes que autorizan acciones de una cuenta.¿Qué es BrowserProvider?
BrowserProvider es la clase de ethers.js v6 que se utiliza habitualmente para conectar una aplicación web con un provider de Ethereum inyectado en el navegador.El provider inyectado suele proceder de una wallet que permite al usuario aprobar el acceso a su cuenta y las transacciones.La aplicación puede crear un BrowserProvider a partir de la interfaz inyectada y, a continuación, solicitar un firmante para una cuenta autorizada.Conectarse a una wallet no concede automáticamente a la aplicación acceso a la clave privada de la wallet.Normalmente, la wallet mantiene las credenciales de firma en su propio entorno protegido y solicita al usuario que apruebe cada firma o transacción.Las aplicaciones deberían explicar claramente por qué solicitan acceso a la cuenta y evitar pedir firmas antes de que el usuario entienda la acción.¿Qué es un signer en Ethers.js?
Un signer es una abstracción que representa una cuenta de Ethereum capaz de autorizar mensajes y transacciones.El firmante puede estar respaldado por una clave privada, una wallet derivada de una frase mnemotécnica, un dispositivo de firma de hardware, una wallet de navegador, una smart account u otro sistema de firma.La documentación oficial de la interfaz Signer explica que un signer representa una cuenta blockchain y puede admitir configuraciones de firma avanzadas en las que la aplicación no tiene acceso directo a la clave privada.
Normalmente, un signer puede devolver su dirección, firmar un mensaje, estimar la comisión de gas de una transacción, completar los campos de una transacción y enviar una transacción autorizada.Las operaciones disponibles dependen de la implementación del signer.Un signer conectado a un provider puede utilizar datos de red al preparar y enviar una transacción.Un signer desconectado puede firmar datos localmente, pero es posible que no pueda difundir la transacción resultante.Provider frente a signer en Ethers.js
Un provider lee datos de la blockchain, mientras que un signer autoriza acciones asociadas a una cuenta.Un provider puede consultar un saldo o simular una función de contrato sin tener una clave privada.Un signer puede aprobar una transferencia de tokens, desplegar un contrato o enviar otra transacción que cambie el estado.Muchos objetos de ethers.js se comportan de forma distinta según estén conectados a un provider o a un signer.Un contrato conectado únicamente a un provider normalmente puede realizar operaciones de solo lectura.El mismo contrato, conectado a un signer, puede preparar y enviar transacciones que cambian el estado cuando el signer tiene la autoridad y los fondos necesarios.Separar providers y signers ayuda a los desarrolladores a evitar mezclar el acceso a datos públicos con el control sensible de una cuenta.¿Qué es una wallet en Ethers.js?
La clase Wallet de ethers.js es un signer respaldado por una clave privada.Puede derivar una dirección de Ethereum, firmar mensajes y transacciones, y enviar transacciones cuando está conectada a un provider.Una wallet puede crearse a partir de una clave privada, generarse aleatoriamente, restaurarse desde una frase mnemotécnica compatible o descifrarse desde un keystore JSON cifrado.La documentación oficial de wallets de ethers.js describe la creación de wallets, las wallets deterministas jerárquicas, los ficheros JSON cifrados, las frases mnemotécnicas y las funciones de firma.
Una wallet del lado del servidor puede ser útil para automatizaciones controladas, pero incluir una clave privada sin restricciones en el código fuente de una aplicación supone un grave riesgo de seguridad.Las claves privadas no deberían incluirse en un repositorio de código fuente, en un paquete público para navegador, en registros ni en mensajes corrientes.Los sistemas de firma de producción deberían aplicar controles de acceso, secretos cifrados, permisos limitados, copias de seguridad seguras y supervisión de transacciones adecuados a la cantidad de criptomonedas gestionadas.¿Ethers.js almacena los fondos de los usuarios?
Ethers.js no actúa como custodio ni guarda criptomonedas de los usuarios.Es una biblioteca de software que puede crear objetos de firma o interactuar con ellos, así como con cuentas blockchain.Los fondos siguen bajo el control de la clave privada, el contrato inteligente o el sistema de wallet externo asociado a la dirección.Si un desarrollador utiliza ethers.js para crear una wallet, será responsabilidad del desarrollador o del usuario proteger de forma segura los datos de recuperación.Perder la clave privada o la frase mnemotécnica puede hacer que las criptomonedas asociadas queden inaccesibles de forma permanente.Si se expone la clave, otra persona podría transferir los activos.Cómo interactúa Ethers.js con los contratos inteligentes
Ethers.js utiliza la clase Contract para representar un contrato inteligente desplegado.Una instancia de contrato se crea con una dirección de destino, una ABI y un provider o signer opcional.La ABI describe las funciones externas, los eventos, los errores y los tipos de datos del contrato.Ethers.js utiliza esta información para generar métodos JavaScript invocables y decodificar las respuestas de la blockchain.La documentación oficial de la API Contract explica que el runner conectado, normalmente un provider o signer, determina qué operaciones puede realizar el contrato.
Una llamada de solo lectura a un contrato puede consultar el saldo de un token, una dirección de titularidad, un ajuste del protocolo u otro valor público.Una llamada que cambia el estado puede transferir tokens, aprobar gastos, depositar garantías, votar, reclamar recompensas o realizar otra acción definida por el contrato.Invocar un método de contrato mediante ethers.js no demuestra que el contrato sea seguro.El desarrollador debe verificar la dirección del contrato, la ABI, los permisos, la red, el comportamiento esperado y las premisas de seguridad.¿Qué es una ABI?
ABI son las siglas de Application Binary Interface (interfaz binaria de aplicación).Define cómo se comunica el software externo con la interfaz invocable de un contrato inteligente.Una ABI describe nombres de funciones, tipos de entrada y salida, estructuras de eventos, errores personalizados y reglas de mutabilidad.Ethers.js utiliza una ABI para traducir valores JavaScript legibles a datos de transacción codificados.También decodifica los bytes devueltos y los registros de eventos en valores que la aplicación puede interpretar.La documentación oficial de ABI de ethers.js cubre interfaces, fragmentos, codificación, decodificación, eventos, errores y formatos de ABI legibles por humanos.
Una ABI incorrecta puede hacer que la aplicación codifique una llamada a la función equivocada o decodifique mal los datos devueltos.Los desarrolladores deberían obtener las ABI de artefactos de compilación verificados o de fuentes fiables del proyecto.¿Qué es la clase Interface?
La clase Interface representa una ABI en un formato que ethers.js puede utilizar para codificar y decodificar.Puede codificar datos de funciones, decodificar resultados, calcular temas de eventos, analizar entradas de transacciones e interpretar errores personalizados de contratos.Resulta útil cuando un desarrollador necesita control de bajo nivel sin crear un objeto Contract completo.Una Interface también puede ayudar a las herramientas de supervisión a identificar qué función de contrato intentó invocar una transacción.Asimismo, puede decodificar registros cuando se conoce la definición correcta del evento.La información decodificada siempre debería vincularse al contrato correcto, ya que contratos distintos pueden utilizar la misma firma de función o evento.Lectura de datos de contratos inteligentes
Una llamada de solo lectura a un contrato inteligente utiliza el estado actual de la blockchain sin crear una transacción.El nodo conectado ejecuta la llamada localmente y normalmente no cuesta gas, ya que no se añade a la blockchain.Los desarrolladores pueden utilizar ethers.js para consultar datos como saldos de tokens, autorizaciones de gasto, titulares de contratos, parámetros de protocolos y registros almacenados.El resultado representa el estado del bloque utilizado por el provider.Los distintos endpoints RPC pueden devolver resultados diferentes durante un breve periodo si están sincronizados con alturas de bloque distintas.Para consultar estados históricos puede ser necesario un nodo de archivo que conserve el estado antiguo solicitado.Una llamada de lectura también puede fallar si el contrato revierte la ejecución, la ABI es incorrecta, la dirección no contiene el código esperado o el provider no dispone de los datos necesarios.Envío de transacciones a contratos inteligentes
Un método de contrato que cambie el estado requiere un signer, ya que debe autorizarlo una cuenta.Ethers.js codifica el método y sus argumentos en los datos de la transacción y solicita al signer que la autorice.La transacción también puede incluir una cantidad de criptomoneda nativa, un límite de gas, ajustes de comisiones, un nonce y un chain ID.Tras la autorización, la transacción se difunde a través del provider conectado.El resultado inicial suele ser una respuesta de transacción que contiene el hash y los detalles enviados.A continuación, el desarrollador puede esperar al recibo de la transacción y al número de confirmaciones que elija.No se garantiza que una transacción enviada tenga éxito, ya que el estado de la blockchain puede cambiar antes de su ejecución.Respuestas y recibos de transacción
Una respuesta de transacción describe una transacción que se ha enviado o detectado a través de un provider.Puede incluir el hash, el remitente, el destinatario, el nonce, los datos, el valor, la información de gas y campos relacionados con la red.El recibo de una transacción está disponible una vez que esta se incluye en un bloque.El recibo registra el estado de ejecución, el gas utilizado, la información del bloque, los resultados de creación de contratos y los registros de eventos emitidos.Las aplicaciones deberían comprobar el estado del recibo antes de considerar que una transacción ha tenido éxito.El hash demuestra que existe un identificador de transacción, pero no que la operación solicitada al contrato se haya completado correctamente.El método waitForTransaction del provider puede esperar a que la transacción se incluya y alcance el número de confirmaciones elegido.
Estimación de gas en Ethers.js
Ethers.js puede solicitar a un provider que estime cuánto gas se espera que consuma una transacción.El nodo simula la transacción propuesta con el estado actual de la blockchain.La estimación puede fallar si la transacción simulada revertiría la ejecución.La documentación oficial del provider advierte que la estimación de gas es un cálculo aproximado, ya que el estado de la blockchain sigue cambiando.Una transacción que tiene éxito durante la estimación puede fallar más tarde si cambian los saldos, las autorizaciones de gasto, los precios, el almacenamiento del contrato u otras condiciones.Cuando corresponda, los desarrolladores pueden añadir un margen razonable, pero un límite de gas extremadamente alto no corrige una lógica de contrato inválida.Normalmente, el usuario paga el gas realmente consumido, no la parte del límite de gas que no se utiliza.Trabajo con ETH y unidades de tokens
Los valores de Ethereum y de los tokens se almacenan como números enteros en sus unidades más pequeñas.Internamente, ETH suele medirse en wei, y un ETH equivale a 10 elevado a 18 wei.Ethers.js ofrece utilidades como parseEther, formatEther, parseUnits y formatUnits.Estas funciones ayudan a convertir cadenas decimales legibles en valores enteros para la blockchain y a transformar los valores enteros en texto legible.La documentación oficial de conversión de unidades de ethers.js explica cómo convertir valores decimales de forma segura.
Los desarrolladores deberían evitar la aritmética habitual de coma flotante de JavaScript para calcular saldos exactos de tokens, ya que los errores de redondeo pueden dar lugar a importes de transacción incorrectos.El valor real de decimales del token debería confirmarse mediante el contrato correcto, en lugar de deducirse de su símbolo.BigInt en Ethers.js v6
Ethers.js v6 utiliza JavaScript BigInt para muchos valores enteros grandes.Los importes de Ethereum, los valores de gas, los nonces y los enteros de contratos pueden superar el rango seguro de los números normales de JavaScript.La guía de migración de v5 a v6 explica que la clase BigNumber anterior se sustituyó en muchas operaciones por el tipo nativo BigInt de ES2020.
Los valores BigInt utilizan aritmética de enteros y no se pueden combinar directamente con valores Number normales de JavaScript.Tampoco pueden representar importes fraccionarios de tokens sin convertirlos a las unidades enteras más pequeñas del token.Los desarrolladores que migren código antiguo deberían revisar la aritmética, las comparaciones, la serialización, el formato de la interfaz y el almacenamiento en bases de datos.Utilidades para direcciones
Ethers.js proporciona funciones para validar, normalizar, comparar y crear direcciones de Ethereum.Una dirección checksum combina caracteres en mayúscula y minúscula para ayudar a detectar algunos errores de escritura.La utilidad getAddress puede normalizar una dirección válida y rechazar ciertos formatos de checksum no válidos.Que una dirección sea técnicamente válida no demuestra que pertenezca al usuario o contrato previsto.Las aplicaciones deberían comparar las direcciones con fuentes fiables y evitar mostrar solo versiones abreviadas durante confirmaciones sensibles.Un atacante puede crear una dirección distinta con caracteres iniciales y finales similares.Resolución de nombres
Ethers.js puede resolver registros de nombres de Ethereum compatibles y obtener direcciones mediante un provider conectado.También puede realizar búsquedas inversas cuando una dirección haya configurado un nombre principal compatible.Un nombre legible puede mejorar la usabilidad, pero antes de una transferencia de gran valor la aplicación debería mostrar la dirección resuelta o permitir consultarla.Los registros de nombres pueden cambiar con el tiempo y un nombre puede resolverse de forma distinta en otra red.Las aplicaciones deberían gestionar los nombres no resueltos y los registros no válidos, en lugar de enviar silenciosamente fondos a un destino inesperado.Firma de mensajes con Ethers.js
Ethers.js puede firmar mensajes legibles para humanos y recuperar la dirección asociada a una firma válida.La firma de mensajes puede utilizarse para autenticar cuentas, demostrar el control, votar, conceder permisos y autorizar operaciones off-chain.La guía oficial de firma de ethers.js recomienda utilizar contenido legible siempre que sea posible, para que el usuario entienda qué está aprobando.
Una firma no transfiere fondos por sí sola en todos los casos, pero algunas firmas pueden autorizar acciones posteriores en la blockchain.Cuando sea pertinente, las aplicaciones deberían incluir un dominio, un nonce, una fecha de expiración y el contexto de la chain.Los usuarios nunca deberían firmar un mensaje poco claro solo porque la solicitud no muestre una comisión de gas.Datos tipados EIP-712
EIP-712 define un formato de firma estructurado que permite a las wallets mostrar campos tipados en lugar de una secuencia de bytes ilegible.Ethers.js puede codificar, firmar, aplicar hashes y verificar datos tipados compatibles.Los datos tipados pueden utilizarse para permisos de tokens, órdenes de mercados, acciones de gobernanza, autorizaciones de cuentas y otras aprobaciones off-chain.Los datos del dominio pueden incluir un nombre, una versión, un chain ID y un contrato verificador para reducir el riesgo de repetición.Los desarrolladores deben crear correctamente el dominio y los tipos, ya que la falta de un campo o un contexto de chain incorrecto puede debilitar la protección.Antes de firmar datos estructurados, los usuarios deberían revisar el operador autorizado, el importe, la fecha de expiración, el contrato y la red solicitados.Registros de eventos y listeners de contratos
Ethers.js puede consultar registros históricos de eventos de contratos inteligentes y escuchar eventos nuevos.Un evento de contrato se define mediante la ABI y se almacena en los recibos de las transacciones cuando se emite durante una ejecución satisfactoria.Los desarrolladores pueden crear filtros para parámetros de eventos concretos, como una dirección o un identificador de token.Un listener en tiempo real puede actualizar una interfaz cuando se produce una transferencia, un depósito, una operación, un voto u otra acción del contrato.Las aplicaciones no deberían depender únicamente de una conexión activa, ya que las interrupciones de WebSocket pueden hacer que se pierdan notificaciones.Un indexador fiable debería reconciliar los eventos por intervalos de bloques, almacenar los hashes de bloque, evitar el procesamiento duplicado y gestionar las reorganizaciones de la blockchain.La emisión de un evento no demuestra que el contrato que lo emite sea fiable, ya que cualquier contrato puede crear una firma de evento conocida.Hashing y utilidades criptográficas
Ethers.js incluye utilidades para aplicar hashes a datos, calcular selectores de funciones, procesar firmas, derivar direcciones y gestionar formatos de codificación de Ethereum.Entre las operaciones habituales se encuentran el hashing Keccak-256, el hashing de mensajes, la codificación empaquetada, la codificación RLP y la recuperación de firmas.La documentación oficial de hashing de ethers.js explica las funciones auxiliares para mensajes, datos tipados, nombres, identificadores y datos de autorización.
Las API criptográficas deberían utilizarse conforme al estándar de Ethereum pertinente, no combinarse sin criterio.Firmar con un formato de hash incorrecto puede generar firmas incompatibles o debilidades de seguridad.Los desarrolladores deberían incluir separación de dominio cuando los mismos datos pudieran reutilizarse en otro contexto.Despliegue de contratos con Ethers.js
Ethers.js proporciona ContractFactory para desplegar contratos inteligentes.Una factory se crea a partir del bytecode del contrato, una ABI y un signer.La transacción de despliegue puede incluir argumentos del constructor y un importe opcional de criptomoneda nativa.Tras enviarla, el desarrollador debería esperar a que la transacción de despliegue se incluya en un bloque antes de asumir que el contrato existe en la dirección prevista.La dirección del contrato desplegado debería guardarse junto con el chain ID, los ajustes del compilador, la versión del código fuente, los argumentos del constructor y el hash de la transacción de despliegue.Que el despliegue se haya completado correctamente no demuestra que el contrato sea seguro, esté inicializado de forma correcta o esté controlado por el administrador previsto.Antes de gestionar activos de valor, los contratos de producción deberían someterse a pruebas y a una revisión de seguridad adecuada.Ethers.js en aplicaciones de navegador
Una aplicación descentralizada de navegador puede utilizar ethers.js para conectar la interfaz de usuario con una wallet y un provider blockchain.La aplicación puede mostrar saldos, solicitar un cambio de red, leer contratos, estimar transacciones y pedir a la wallet que firme acciones aprobadas.Las claves privadas deberían permanecer en la wallet, no copiarse en el código del front-end.Por lo general, el usuario o un atacante puede inspeccionar todo el código que se entrega a un navegador.Las claves API secretas y las credenciales de firma privilegiadas no deberían incluirse en el paquete público de la aplicación.La interfaz debería mostrar claramente los detalles de las transacciones y gestionar el rechazo de la wallet, los conflictos de red, los errores RPC, las transacciones pendientes, las reversiones y los cambios de cuenta.Ethers.js en aplicaciones del lado del servidor
Un servicio del lado del servidor puede utilizar ethers.js para supervisar datos blockchain, enviar transacciones controladas, generar informes, verificar firmas y gestionar procesos de criptomonedas en el backend.Las aplicaciones de servidor pueden conectarse directamente a un nodo RPC o utilizar un endpoint gestionado.Un backend que firme transacciones debe proteger las credenciales de firma frente a desarrolladores, registros, copias de seguridad, sistemas de compilación y procesos no autorizados.Los sistemas que gestionan grandes cantidades deberían considerar una infraestructura de firma aislada, políticas de transacción, límites de retirada, flujos de aprobación y controles de emergencia.Un servidor también debería controlar cuidadosamente los nonces de las transacciones cuando varios procesos envían transacciones desde una misma cuenta.El uso de nonces duplicados o incompatibles puede hacer que las transacciones se sustituyan entre sí o queden pendientes.Ethers.js y las redes compatibles con EVM
Ethers.js puede conectarse a muchas redes compatibles con EVM que ofrecen interfaces JSON-RPC de tipo Ethereum.La aplicación debe proporcionar el endpoint RPC, el chain ID, la información del activo nativo utilizado para el gas y las direcciones de los contratos correspondientes a la red seleccionada.Una misma dirección de wallet puede tener saldos e historiales de transacciones distintos en diferentes chains.Es posible que un contrato desplegado en una dirección de una red no exista en otra o que contenga un código distinto.La compatibilidad con EVM tampoco garantiza que el comportamiento del gas, los tipos de transacción, la finalidad, las extensiones RPC o los detalles de ejecución de los contratos inteligentes sean idénticos.Cada integración de red debería probarse de forma independiente.Principales cambios de Ethers.js v5 a v6
Ethers.js v6 introdujo cambios importantes en la arquitectura y la API respecto a la versión 5.La guía de migración señala que el mayor uso de las funciones modernas de ES6 es uno de los cambios principales.Para muchas operaciones con números enteros, BigInt nativo sustituyó a la clase BigNumber anterior.Los objetos Contract utilizan el comportamiento Proxy de JavaScript para resolver métodos de forma dinámica.Muchas clases y utilidades pasaron a formar parte de la exportación del paquete principal, en lugar de accederse mediante espacios de nombres anidados anteriores.La clase anterior Web3Provider se sustituyó por BrowserProvider para envolver los providers habituales inyectados en navegadores.También cambiaron los nombres y la estructura de las API de transacciones, firmas, contratos, providers y utilidades.El código de v5 existente no debería actualizarse cambiando únicamente la versión del paquete.Se debería seguir la guía oficial de migración de ethers.js v6 y volver a probar toda la aplicación.
¿Ethers.js v5 sigue teniendo soporte?
La política de seguridad de ethers.js indica que la mayor parte del trabajo de mantenimiento se centra en la versión principal más reciente.También señala que la versión 5 recibe actualizaciones de seguridad, mientras que las ramas principales más antiguas ya no tienen soporte.Los desarrolladores que mantengan una aplicación de la versión 5 deberían instalar la actualización de seguridad más reciente disponible para v5 y revisar un plan de migración a v6.El uso prolongado de una rama heredada puede generar riesgos de compatibilidad y mantenimiento, incluso cuando sigan disponibles parches de seguridad críticos.La información actual sobre el soporte está publicada en la política de seguridad oficial de ethers.js.
Riesgos de seguridad al utilizar Ethers.js
Ethers.js puede ayudar a las aplicaciones a interactuar con sistemas blockchain, pero no puede hacer que una lógica de aplicación insegura sea segura.Un desarrollador puede utilizar correctamente la biblioteca y, aun así, llamar a un contrato inteligente malicioso o firmar una transacción perjudicial.Un chain ID, una dirección de contrato, una ABI, un número de decimales, una estimación de gas o un dominio de firma incorrectos pueden provocar pérdidas financieras.Un endpoint RPC comprometido puede devolver datos falsos o incompletos, retrasar transacciones u ocultar actividad blockchain relevante.Una dependencia o un proceso de compilación comprometido puede alterar el comportamiento de la aplicación antes de que el código llegue a los usuarios.La filtración de una clave privada puede permitir que un atacante eluda todas las protecciones de la interfaz.La seguridad exige una gestión segura de claves, dependencias fiables, verificación de contratos, validación de entradas, simulación de transacciones, supervisión y pruebas independientes.Seguridad de las claves privadas
Una clave privada nunca debería incluirse en el código fuente del navegador ni añadirse a un repositorio.Tampoco debería incluirse directamente en un fichero de configuración público, un ticket de asistencia, una captura de pantalla o un registro de aplicación.Las variables de entorno pueden reducir las exposiciones accidentales, pero no constituyen un sistema de seguridad completo.Cualquier persona con acceso al entorno del proceso, la plataforma de despliegue, la memoria del servidor o la configuración de compilación aún podría obtener acceso.Los sistemas de producción deberían separar los permisos de firma del acceso general a la aplicación.Las claves deberían rotarse si se sospecha que se han visto comprometidas, aunque rotar una clave requiere transferir el control a una nueva dirección blockchain o actualizar los roles autorizados del contrato.Seguridad de las dependencias y la cadena de suministro
Los desarrolladores deberían instalar ethers.js únicamente desde su fuente de paquetes auténtica.Un paquete con el nombre mal escrito puede contener código malicioso diseñado para robar claves privadas o cambiar los destinos de las transacciones.Los ficheros de bloqueo de paquetes y las comprobaciones de integridad ayudan a garantizar que las instalaciones automatizadas utilicen versiones de dependencias revisadas.Las notificaciones de actualizaciones de seguridad deberían supervisarse a través del repositorio oficial y los registros de paquetes.Las aplicaciones de producción deberían probar las actualizaciones de dependencias antes de desplegarlas.Deberían eliminarse los paquetes y scripts que no se utilicen, ya que cada dependencia aumenta la posible superficie de ataque.Riesgo de los providers RPC
Un provider RPC proporciona la información blockchain que utiliza una aplicación de ethers.js.Si el provider no está disponible, es posible que la aplicación no pueda cargar saldos ni enviar transacciones.Si el provider va con retraso, la aplicación puede mostrar información obsoleta.Un endpoint malicioso podría intentar falsear el estado de la chain, las estimaciones de gas o el estado de las transacciones.Las aplicaciones que gestionen decisiones financieras importantes pueden comparar las respuestas de varios nodos independientes o ejecutar su propia infraestructura de nodos.Antes de solicitar una firma, debería verificarse el chain ID devuelto por el provider.Cuando corresponda, la conexión con el provider debería utilizar transporte cifrado y credenciales controladas.Simulación de transacciones y gestión de errores
Ethers.js puede simular llamadas y estimar el gas antes de enviar una transacción.La simulación puede detectar muchas reversiones probables, pero no garantiza que la transacción tenga éxito en el futuro.El estado de la blockchain puede cambiar entre la simulación y la ejecución real.Cuando sea posible, las aplicaciones deberían decodificar los errores de los contratos y mostrar al usuario una explicación útil.Deberían distinguir entre el rechazo de la wallet, un error RPC, fondos insuficientes, un error al estimar el gas, la sustitución de una transacción, una reversión de ejecución y el vencimiento del tiempo de confirmación.Un mensaje de error genérico puede llevar a los usuarios a repetir innecesariamente una transacción o a firmar otra acción sin entender el problema original.Ventajas de Ethers.js
Ethers.js ofrece una interfaz compacta que cubre muchas tareas habituales de desarrollo en Ethereum.La separación entre providers y signers facilita establecer límites de seguridad más claros.Su clase Contract reduce la cantidad de codificación ABI manual necesaria para interactuar con contratos inteligentes.Las declaraciones de TypeScript integradas mejoran la asistencia del editor y pueden detectar algunos usos incorrectos de parámetros.La biblioteca incluye en un solo paquete utilidades para wallets, firmas, direcciones, unidades, hashing, transacciones y eventos.Es de código abierto y cuenta con documentación y pruebas exhaustivas.Su diseño orientado a EVM la hace útil en muchos entornos blockchain compatibles.Limitaciones de Ethers.js
Ethers.js no ejecuta un nodo de Ethereum y sigue necesitando acceso a infraestructura blockchain.No audita contratos inteligentes ni garantiza que una dirección sea fiable.No protege automáticamente las claves privadas que una aplicación almacena de forma descuidada.No puede revertir una transacción confirmada en la blockchain.No puede garantizar que una estimación de gas, un resultado simulado o una respuesta RPC siga siendo exacto.No elimina la necesidad de entender las cuentas de Ethereum, las transacciones, el gas, las firmas, las ABI, los registros de eventos y los permisos de los contratos inteligentes.Los desarrolladores también deben gestionar por separado la seguridad de la interfaz, las bases de datos, el acceso al backend, el despliegue, la supervisión y los requisitos normativos.Ejemplo de un flujo de transacción con Ethers.js
Supongamos que una aplicación descentralizada permite al usuario transferir un token compatible.Primero, la aplicación crea un provider conectado a la red seleccionada.Confirma el chain ID y solicita acceso a la cuenta aprobada del usuario mediante la interfaz de la wallet.La aplicación crea un signer y una instancia Contract utilizando la dirección y la ABI verificadas del token.Consulta los decimales del token y el saldo del usuario.El importe legible de la transferencia se convierte a la unidad entera más pequeña del token mediante parseUnits.La aplicación solicita al método del contrato que estime el gas y prepara la transacción.La wallet muestra al usuario el destinatario, el contrato, la red, el importe y la información de comisiones para que los apruebe.Una vez que el usuario firma, el signer difunde la transacción a través del provider.La aplicación recibe una respuesta de transacción y muestra el hash.Espera al recibo y comprueba si la ejecución se ha completado correctamente.A continuación, actualiza el saldo del token y registra la transacción confirmada.Este flujo muestra cómo trabajan conjuntamente en ethers.js los providers, signers, contratos, ABI, la conversión de unidades, la estimación de gas y los recibos.Errores habituales al utilizar Ethers.js
Un error habitual es incluir una clave privada en el JavaScript del front-end.Otro es utilizar una dirección de contrato o una ABI no verificadas.Un tercer error es mezclar valores Number normales con valores BigInt.Un cuarto error es considerar confirmada una transacción enviada antes de recibir un recibo satisfactorio.Un quinto error es suponer que una estimación de gas satisfactoria garantiza que la ejecución tenga éxito.Un sexto error es utilizar aritmética de coma flotante para calcular importes de tokens.Un séptimo error es ignorar el chain ID al conectar una wallet o firmar datos tipados.Un octavo error es no gestionar la sustitución o el descarte de transacciones, ni las reorganizaciones de la blockchain.Un noveno error es actualizar de ethers.js v5 a v6 sin revisar los cambios incompatibles de la API.Un décimo error es confiar en un paquete, endpoint RPC o contrato inteligente únicamente porque tiene un nombre conocido.Preguntas frecuentes
¿Para qué se utiliza ethers.js?
Ethers.js se utiliza para crear aplicaciones JavaScript y TypeScript que leen datos de la blockchain, gestionan wallets, firman mensajes, envían transacciones e interactúan con contratos inteligentes de Ethereum.¿Ethers.js es una criptomoneda?
No. Ethers.js es una biblioteca de software y no tiene una criptomoneda ni un token de inversión oficial.¿Ethers.js es una wallet?
Ethers.js incluye clases de wallet y herramientas de firma, pero la propia biblioteca no es un servicio de wallet de custodia.¿Cuál es la versión más reciente de ethers.js?
A 16 de julio de 2026, la versión publicada más reciente es ethers v6.17.0, publicada el 18 de junio de 2026.¿Ethers.js puede conectarse a Ethereum?
Sí. Ethers.js se conecta a Ethereum mediante un provider que se comunica con un nodo de Ethereum o un endpoint RPC compatible.¿Ethers.js funciona con otras chains EVM?
Sí. Puede funcionar con muchas redes compatibles con EVM que proporcionan interfaces JSON-RPC de tipo Ethereum.¿Cuál es la diferencia entre un provider y un signer?
Un provider lee datos públicos de la blockchain, mientras que un signer autoriza mensajes y transacciones que cambian el estado de una cuenta.¿Qué es un objeto Contract en ethers.js?
Un objeto Contract combina la dirección de un contrato, una ABI y un provider o signer para ofrecer métodos JavaScript invocables para un contrato inteligente desplegado.¿Ethers.js necesita una ABI?
Por lo general, se necesita una ABI para codificar y decodificar cómodamente las funciones, los eventos y los errores identificados por nombre de un contrato inteligente.¿Ethers.js almacena claves privadas?
La biblioteca puede crear objetos wallet que contienen credenciales de firma en la memoria de la aplicación, pero la responsabilidad de almacenar y proteger las claves recae en el desarrollador.¿Es seguro incluir una clave privada en una aplicación de navegador?
No. Los usuarios, atacantes, extensiones o scripts comprometidos pueden inspeccionar y robar las claves privadas incluidas en el código del navegador.¿Una llamada de solo lectura a un contrato cuesta gas?
Normalmente, un nodo simula mediante un provider una llamada de solo lectura, que no genera una comisión on-chain.¿Por qué utiliza BigInt ethers.js?
BigInt permite trabajar con los grandes números enteros exactos que se necesitan para saldos de criptomonedas, valores de gas, nonces y datos de contratos inteligentes, sin la pérdida de precisión de los números normales de JavaScript.¿Ethers.js puede estimar el gas?
Sí. Puede solicitar una estimación de gas a un nodo, pero esta se basa en el estado actual y no garantiza que la transacción futura tenga éxito.¿Ethers.js puede revertir una transacción?
No. Ethers.js puede enviar transacciones, pero no revertir un cambio de estado de la blockchain que ya se haya confirmado.¿Ethers.js puede escuchar eventos de contratos inteligentes?
Sí. Puede consultar registros históricos y suscribirse a nuevos eventos de contratos mediante un provider adecuado.¿Qué cambió entre ethers.js v5 y v6?
La versión 6 introdujo BigInt nativo, funciones modernas de JavaScript, importaciones revisadas, clases de provider actualizadas, métodos de contrato basados en Proxy y varios cambios en la API.¿Ethers.js es de código abierto?
Sí. Ethers.js está disponible públicamente con la licencia MIT.¿Ethers.js tiene un token oficial?
No. El proyecto oficial indica que ethers no tiene ningún token.¿Dónde deberían informar los desarrolladores de un problema de seguridad en ethers.js?
Los desarrolladores deberían seguir las instrucciones privadas para comunicar vulnerabilidades de la política de seguridad oficial de ethers.js, en lugar de revelar públicamente un problema que aún no se haya corregido.Conclusión
Ethers.js es una biblioteca de JavaScript y TypeScript que ofrece a los desarrolladores de criptomonedas una forma estructurada de interactuar con Ethereum y las redes blockchain compatibles con EVM.Proporciona providers para leer datos de la blockchain, signers para autorizar acciones de cuentas, wallets para gestionar credenciales de firma y objetos Contract para interactuar con contratos inteligentes.También incluye utilidades para codificar ABI, decodificar eventos, firmar mensajes, gestionar datos tipados, direcciones, hashes, estimaciones de gas, recibos de transacciones y conversiones de unidades de criptomonedas.La versión principal actual es ethers.js v6, que utiliza funciones modernas de JavaScript como BigInt y métodos de contrato basados en Proxy.A 16 de julio de 2026, la versión publicada más reciente es ethers v6.17.0.Ethers.js puede simplificar el desarrollo blockchain, pero no elimina los riesgos de exposición de claves privadas, contratos maliciosos, direcciones incorrectas, endpoints RPC poco fiables, dependencias comprometidas o transacciones irreversibles.Los desarrolladores deberían verificar las fuentes de los paquetes, fijar las versiones de las dependencias, proteger las credenciales de firma, confirmar los chain ID, validar las direcciones de los contratos, utilizar las ABI correctas y probar todos los flujos de transacción.Las aplicaciones también deberían gestionar las simulaciones fallidas, el rechazo de la wallet, las interrupciones RPC, las transacciones pendientes o sustituidas, las reversiones, las confirmaciones y las reorganizaciones de la chain.Si se utiliza con prácticas de seguridad rigurosas, ethers.js ofrece una base potente para crear wallets, sistemas de pago con criptomonedas, aplicaciones descentralizadas, herramientas de análisis, servicios de supervisión y automatizaciones de contratos inteligentes.Entender ethers.js ayuda a los desarrolladores a conectar aplicaciones JavaScript con sistemas blockchain sin confundir la biblioteca con un servicio de wallet, una red blockchain o una criptomoneda.También te puede interesar
WhatsMiner M30S++
Dominios Web3
Proyectos Web3
POPULAR
Criptomonedas de moda que están acaparando la atención del mercado
Volumen TOP
Las criptomonedas con mayor volumen de trading
Recién Añadidos
Criptomonedas recientemente listadas y disponibles para operar

