WEB3DEV Español

Cover image for Web3.js vs Ethers.js - Guía Completa
Juan José Gouvêa
Juan José Gouvêa

Posted on

Web3.js vs Ethers.js - Guía Completa

En estos días, los desarrolladores de cripto pueden elegir entre múltiples cadenas de bloques programables para construir. Y, si bien puedes escuchar el término "Ethereum Killer" con bastante frecuencia, el rey se mantiene en su posición. Como tal, la mayoría de los desarrolladores de blockchain todavía se enfocan en Ethereum. Además, dado que otras cadenas programables tienden a seguir el ejemplo de Ethereum, la mayoría de ellas son compatibles con la EVM. Por lo tanto, las mismas bibliotecas de JavaScript se pueden usar para implementar dApps (aplicaciones descentralizadas) en varias cadenas. Con eso en mente, deberías echarle un vistazo más de cerca a la comparación que haremos entre Web3.js y Ethers.js.

W3JS VS ETHSJS

En este documento, tendrás la oportunidad de aprender qué es Web3.js y Ethers.js. También aprenderás sobre los módulos de JavaScript. Además, daré una breve descripción general de los módulos de cada una de las dos bibliotecas ETH de JavaScript. Sin embargo, el núcleo de este artículo es la comparación entre Web3.js y Ethers.js. Te ayudará a establecer una imagen clara de las ventajas y desventajas de cada biblioteca. Además, también debería aclarar por qué la mayoría de la industria de la criptografía se está moviendo hacia la más joven de las dos bibliotecas (ether.js).

¿Qué es Web3.js?

Como se mencionó anteriormente, Web3.js es una biblioteca de código abierto o una colección de bibliotecas de JavaScript (JS). Si no sabes qué es JavaScript, asegúrate de leer nuestra guía sobre este popular lenguaje de programación. También mencioné en la introducción, que Web3.js sirve para proyectos basados en Ethereum. Como tal, permite a los desarrolladores interactuar con la cadena de bloques de Ethereum al crear dApps. Además, vale la pena señalar que la biblioteca Web3.js fue construida por la Fundación Ethereum. Así, tiene una comunidad bastante grande detrás, lo que suele ser un valor añadido.

Además de eso, Web3.js incorpora esencialmente funciones para comunicarse con los nodos de Ethereum. Esta comunicación se realiza a través de la notación de objetos de JavaScript: protocolo de llamada a procedimiento remoto (JSON-RPC). En caso de que sea la primera vez que escuchas sobre Web3, asegúrese leer mi guía de transición a Web3. Antes de realizar nuestra comparación entre Web3.js y Ethers.js, debemos asegurarnos de que todos sepan qué son los módulos en JS. Por ahora, ten en cuenta que tanto Web3.js como Ethers.js contienen módulos.

JS MODULES

Módulos JS explicados

Puedes pensar en los módulos de JavaScript como capítulos o secciones de libros. Este principio de compartimentación es algo que aplican todos los programadores experimentados. Como tal, puedes ver muchos programas y bibliotecas de programación divididos en módulos. Ambas bibliotecas ETH JS cubiertas aquí, siguen esta práctica.

Los módulos son básicamente grupos de código. Cuando se trata del lenguaje de programación JavaScript, los módulos representan un grupo de combinaciones significativas de palabras y caracteres especiales. Además, ten en cuenta que cada módulo, normalmente, cubre una funcionalidad específica dentro de un programa más grande. Sin embargo, volviendo a la analogía del capítulo del libro, a diferencia de las secciones del libro, los buenos módulos de programación se pueden quitar, agregar o barajar según sea necesario. Todas estas alteraciones no afectan al sistema en su conjunto. Como tal, son esencialmente autónomos con una funcionalidad específica. Además, la división de programas y bibliotecas en módulos también simplifica mucho el mantenimiento y la reutilización. No obstante, si estás familiarizado con otros lenguajes de codificación (por ejemplo, Java o Python), puedes pensar en clases. Son una analogía muy cercana a los módulos.

Módulos en Web3.js

Ahora que sabes qué son los módulos JS, echemos un vistazo rápido a los módulos Web.js:

  • Web3.eth: El módulo Eth existe para interactuar con la red Ethereum. Ofrece varios submódulos, incluidos Web3.eth.subscribe, Web3.eth.contract, Web3.eth.accounts, Web3.eth.personal y más.
  • Web3.*.net: El módulo Net está para interactuar con las propiedades de la red. Por supuesto, puede usarse como un submódulo para interactuar con Ethereum (Web3.eth.net).
  • Web3.bzz: El módulo Bzz está diseñado para interactuar con la red de swarm.
  • Web3.shh: El módulo Shh sirve para interactuar con el protocolo whisper.
  • Web3.utils: Este módulo proporciona funciones de utilidad para dApps de Ethereum y otros paquetes de web3.js.

Al igual que con la mayoría de los lenguajes de programación, plataformas y bibliotecas, es mejor usar su documentación oficial para obtener más detalles. Puedes encontrar el enlace a la documentación de Web3.js en la sección "Web3.js vs Ethers.js - Documentación", más adelante.

ETHERSJS

¿Qué es Ethers.js?

Ethers.js, también es una biblioteca JavaScript de Ethereum que permite a los desarrolladores comunicarse e interactuar con la red Ethereum. Además, es una biblioteca de código abierto con licencia MIT. Entonces, ¿cuál es el punto de Ethers.js si tiene el mismo propósito que Web3.js? Bueno, ten en cuenta que tener más de dos opciones normalmente es algo bueno. Como tal, Ethers.js ofrece una alternativa impresionante (y en muchos aspectos superior) a Web3.js. Sin embargo, al igual que cualquier otro producto, Ethers.js y Web3.js tienen sus propias ventajas y desventajas. Hablaremos más sobre eso en “Web3.js vs Ethers.js: una comparación”, a continuación.

Módulos de Ethers.js

Al igual que Web3.js, Ethers.js también tiene varios módulos. Para ser exactos, hay cuatro módulos en esta biblioteca JS: Ethers.contract, Ethers.provider, Ethers.utils y Ethers.wallets. Estos módulos son el núcleo de la API (Application Programming Interface) de Ethers.js. Echemos un vistazo rápido a los cuatro módulos:

  • Ethers.Provider: Este módulo te permite establecer una conexión con la cadena de bloques de Ethereum. Lo puedes usar para emitir consultas y enviar transacciones firmadas. A través de este módulo, los usuarios de Ethers.js pueden cambiar el estado de la cadena de bloques.
  • Ethers.Contract: Utiliza este módulo siempre que necesites implementar e interactuar con contratos inteligentes. Si bien, la implementación de contratos inteligentes es uno de los propósitos principales de Ethers.Contract, tiene más que ofrecer. Como tal, también incluye funciones que permiten a los desarrolladores "escuchar" eventos de contratos inteligentes (sincronizar e indexar eventos de contratos inteligentes). Además, también puedes utilizar este módulo para obtener información sobre contratos inteligentes y llamar a funciones particulares proporcionadas por los mismos.
  • Ethers.Utils: Puedes usar este módulo cuando desees formatear datos y procesar entradas de usuarios. Como tal, Ethers.utils hace que la creación de dApps sea mucho más fácil.
  • Ethers.Wallet: Como puedes suponer en función de '.wallet', Ethers.Wallet proporciona una forma de conectarse a cualquier dirección Ethereum existente (una cartera de Ethereum). Además de esa característica importante, este módulo también le permite crear nuevas carteras y firmar transacciones.

Doubts

Web3.js frente a Ethers.js: bibliotecas ETH JS en paralelo

Hasta ahora hemos cubierto los conceptos básicos de ambas bibliotecas JS ETH, incluidos sus módulos. Como tal, debes tener una comprensión adecuada de lo que son Ethers.js y Web3.js. Ahora sabes para qué se utilizan. Por lo tanto, deberías comprender que son muy importantes para desarrollar dApps en la cadena de bloques Ethereum u otras cadenas compatibles con la EVM.

En la siguiente subsección, cubriré los aspectos principales de ambas bibliotecas JS. Como resultado, podrás usar esta comparación entre Web3.js y Ethers.js para determinar cuál de las dos opciones usar. Sin embargo, ten en cuenta que no necesitas pensar demasiado en esto. Te aseguro que puedes trabajar con cualquiera de las dos bibliotecas. Dicho esto, hagamos la comparación.

Web3.js vs Ethers.js: La comparación

En las subsecciones que siguen, compararemos Web3.js y Ethers.js en los siguientes aspectos:

  • El equipo detrás del proyecto
  • Popularidad
  • Descargas
  • Actualizaciones
  • Pruebas
  • Desempeño Web
  • Documentación
  • Licencia

Cual?

Web3.js vs Ethers.js: El equipo detrás del proyecto

  • Web3.js: Es un proyecto de la Fundación Ethereum (una organización sin fines de lucro). Con toda una organización detrás de un proyecto, hay más desarrolladores que ofrecen soporte. Desafortunadamente, esto también significa que no existe una responsabilidad clara sobre quién debe garantizar que todo esté en orden.
  • Ethers.js: Fue desarrollado y mantenido por Richard "RicMoo" Moore. Esto claramente pone toda la responsabilidad sobre RicMoo.

Como puedes ver, cada uno de los tipos de respaldo tiene sus pros y sus contras. ¿Qué tipo de respaldo prefieres?

Web3.js vs Ethers.js: Popularidad

Aquí, debes tener en cuenta que Web3.js es más antiguo. Como tal, tiene sentido que gane el título general de casos de uso. Al apoyarse en los datos de GitHub, Web3.js tiene más estrellas y más repositorios. Por otro lado, cuando se trata de la velocidad de crecimiento de la popularidad, Ethers.js ocupa el primer lugar.

Web3.js vs Ethers.js: Descargas

Otra forma de comparar estas dos bibliotecas JS, es mirar las descargas, aunque el número total de descargas no pinte una imagen tan clara. Dado que Web3.js ha estado en escena durante mucho más tiempo, tiene una ventaja injusta. Por suerte, podemos centrarnos más bien en las descargas diarias. Según npm-stat.com, Ethers.js es un ganador en ese aspecto.

Web3.js vs Ethers.js: Actualizaciones

Es importante ir con una biblioteca que se actualiza con regularidad y correctamente. De esta forma, se asegura de que el equipo de soporte elimine todos los errores conocidos y agregue nuevas funciones de manera oportuna. De acuerdo con las revisiones disponibles y los comentarios de los desarrolladores, ambas bibliotecas ETH JS se actualizan con relativa regularidad.

Testing

Web3.js frente a Ethers.js — Pruebas

Cuando se trata de pruebas, Ethers.js puede ser la mejor opción. Tiene pruebas escritas previamente y documentación clara de las mismas. Sin embargo, debes tener en cuenta que esta conclusión se basa en versiones anteriores de Ethers.js. Con la nueva versión, las cosas pueden ser diferentes.

Web3.js frente a Ethers.js: Desempeño Web

Ethers.js carga un poco más rápido gracias a su peso considerablemente ligero, lo que puede ofrecer un mejor rendimiento. Sin embargo, el factor tamaño juega un papel notable sólo cuando se trata de pequeñas dApps. Además, es importante señalar que no hay suficientes datos de prueba de velocidad para exactamente las mismas dApps que usan Web3.js y Ethers.js. Por lo tanto, queda por confirmar cualquier ventaja de rendimiento.

Web3.js vs Ethers.js: Documentación

Según mi experiencia y comentarios de desarrolladores, podemos decir que ninguna de las dos bibliotecas ETH JavaScript tienen una documentación perfecta. Sin embargo, ambos te brindan detalles más que suficientes para comenzar. Depende de ti cubrir los aspectos clave de tus intereses. Esta es también la forma en que determinará cuál se adapta mejor a tu proyecto. Además, aquí están los enlaces a las últimas versiones actuales (en el momento de escribir este artículo) de la documentación de cada biblioteca:

Además, también debes tener en cuenta que JavaScript en sí mismo siempre está evolucionando, por lo que sus bibliotecas también deben actualizarse. Las cosas evolucionan aún más rápido en el mundo de la blockchain. Como tal, los equipos lanzan actualizaciones y versiones más nuevas de ambas bibliotecas ETH JavaScript con bastante frecuencia.

Web3.js vs Ethers.js: Licencia

  • Web3.js: Tiene una licencia LGLv3.
  • Ethers.js: Tiene licencia MIT. Si tu proyecto tiene requisitos específicos con respecto a la licencia, debes prestar atención a esto. En algunos casos, es inteligente contratar a un experto en licencias. Un profesional te ayudará a determinar cuál de las dos bibliotecas JavaScript ETH es más adecuada para ti.

Blockchain

Web3.js vs Ethers.js, la Guía completa: Conclusión

Hemos cubierto mucho terreno y hemos logrado concluir nuestra comparación entre Web3.js y Ethers.js. A estas alturas, ya sabes que ambas bibliotecas ofrecen varios módulos que te permiten interactuar con la cadena Ethereum. Además, has aprendido que cada biblioteca tiene sus ventajas y desventajas. Sin embargo, la industria de la cadena de bloques en su conjunto está migrando lentamente hacia una alternativa más joven: Ethers.js.

¡Gracias por tu apoyo! 👐🏼

Esta es una traducción de Juan José Gouvêa. El artículo original, fue escrito en inglés, por Alexandr Kumancev.

Discussion (0)