
Este blog explora las diferencias, ventajas y desventajas entre Ethers.js y Viem para crear dapps en Ethereum

Al desarrollar dapps en Ethereum, elegir la biblioteca adecuada puede influir significativamente en tu proceso de desarrollo y en el éxito del proyecto. Dos bibliotecas destacadas en este ámbito son Ethers.js y Viem. Ambas ofrecen un potente conjunto de herramientas para conectarse a contratos inteligentes, enviar transacciones y consultar datos de la blockchain, con soporte oficial para TypeScript. Ambas bibliotecas también adoptan un diseño modular que permite la inclusión selectiva de componentes para optimizar el tamaño del bundle y el rendimiento de la aplicación.
En esta entrada del blog, exploraremos estas bibliotecas en detalle, destacando sus diferencias clave, ventajas y compromisos, así como cuándo conviene usar una sobre la otra. Al final, tendrás toda la información necesaria para tomar una decisión al comenzar tu próximo proyecto.
Aunque comparten un objetivo común, Ethers.js y Viem difieren significativamente en su enfoque y funcionalidades, adaptándose a las distintas preferencias de los desarrolladores y a los requisitos de cada proyecto.
Providers en Ethers.js: Ethers.js utiliza providers como puente hacia la red Ethereum. Estos providers son objetos versátiles a través de los cuales los desarrolladores pueden leer datos de la blockchain o enviar transacciones. Ethers.js simplifica el proceso de conexión a distintos nodos de Ethereum mediante múltiples tipos de provider, incluyendo los predeterminados, JSON-RPC e Infura. Esta abstracción permite a los desarrolladores concentrarse más en la funcionalidad de su dapp que en las complejidades de la conexión a la red.
Madurez y estabilidad: Ethers.js cuenta con una larga trayectoria y una sólida comunidad de soporte, lo que la convierte en una opción confiable para proyectos complejos. Con un conjunto de funcionalidades completo, ofrece una amplia gama de herramientas, ideal para desarrolladores que buscan una solución integral para interactuar con Ethereum. A pesar de su naturaleza exhaustiva, Ethers.js mantiene un diseño modular que permite a los desarrolladores seleccionar las funcionalidades específicas que necesitan.
Actions con Viem: Viem introduce el concepto de actions —funciones dedicadas a ejecutar tareas específicas en la red Ethereum—. Estas pueden clasificarse en public actions (como recuperar una transacción) y wallet actions (como enviar una transacción). Diseñadas para la composabilidad y la modularidad, las actions de Viem permiten a los desarrolladores crear aplicaciones Ethereum con mayor claridad y eficiencia.
Eficiencia y minimalismo: Viem se centra en un diseño minimalista, optimizando la eficiencia con un tamaño de bundle reducido y una ejecución selectiva de tareas. Hace hincapié en la modularidad y la composabilidad a través de sus APIs, lo que permite un proceso de desarrollo más ágil y eficiente. Con un enfoque innovador, Viem apuesta por un diseño de API directo, priorizando la claridad y la facilidad de uso para mejorar la experiencia del desarrollador.
La elección entre Ethers.js y Viem depende de las necesidades específicas de tu proyecto y de tus preferencias como desarrollador.
Ethers.js es la mejor opción para proyectos que requieren un conjunto completo de funcionalidades y priorizan la madurez y el soporte de la comunidad. Es ideal para dapps complejas que necesitan una interacción extensa con la red Ethereum.
Viem es la elección preferida para proyectos donde la eficiencia, un bundle ligero y un diseño minimalista son consideraciones clave. Destaca en aplicaciones web orientadas a la velocidad y el rendimiento, así como para desarrolladores que prefieren un enfoque modular e innovador para interactuar con Ethereum.
Ventajas:
Amplia gama de funcionalidades y sólido soporte de la comunidad.
Alta estabilidad y fiabilidad derivadas de su madurez.
Compromisos:
Puede resultar excesivo para proyectos que no requieren su extenso conjunto de funcionalidades.
La gestión de dependencias y providers externos puede añadir complejidad.
Ventajas:
Eficiente y ligero, perfecto para aplicaciones sensibles al rendimiento.
Simplifica el proceso de desarrollo con su diseño modular y documentación clara.
Compromisos:
Menos maduro que Ethers.js, con una comunidad más pequeña y menos recursos disponibles.
Puede requerir mayor esfuerzo de gestión debido a su naturaleza modular y sin opiniones predefinidas.
A continuación se presenta una tabla comparativa ampliada entre Ethers.js y Viem, con ejemplos de código y breves explicaciones para diversas funcionalidades. Esta comparación destaca las diferencias estructurales y conceptuales en la forma en que cada biblioteca aborda las interacciones con la blockchain de Ethereum.

Terminología y claridad conceptual: El término "provider" es ampliamente utilizado en el desarrollo web3, pero con frecuencia genera confusión debido a su significado sobrecargado. Viem aborda esto empleando el término "Client", clasificándolos en Public Client (para acceder a información de la blockchain), Wallet Client (para firmar transacciones) y Test Client (para pruebas en nodos locales). Esta distinción ayuda a los desarrolladores a orientarse mejor en el ecosistema de interacción con Ethereum.
Tamaño del bundle y eficiencia: Viem está diseñado con una arquitectura modular minimalista, con un tamaño de bundle de tan solo 35 kB. Esto contrasta notablemente con Ethers.js que, debido a su mayor rango de funcionalidades integradas, genera un bundle más grande y puede impactar de forma más significativa en el rendimiento de las aplicaciones web.
Diseño de API y experiencia de desarrollo: Viem opta por APIs detalladas, priorizando la flexibilidad y la facilidad de modificación. Este enfoque contrasta con el de Ethers.js, que puede emplear APIs más abstractas para algunas funcionalidades, lo que potencialmente dificulta la modificación o extensión del código. Además, aprovechando TypeScript, Viem proporciona APIs con tipado estricto, mejorando la experiencia de desarrollo mediante funcionalidades como el autocompletado, la inferencia de tipos y la validación estática. Esto reduce la probabilidad de errores en tiempo de ejecución y hace que la API sea más intuitiva.
Cada biblioteca ofrece un enfoque distinto para interactuar con la blockchain de Ethereum. Ethers.js tiende a abstraer las complejidades mediante clases y métodos predefinidos, apuntando a una experiencia orientada a objetos. En contraste, Viem opta por una interfaz más orientada a funciones, enfatizando la explicitud y ofreciendo quizás una curva de aprendizaje ligeramente más pronunciada, pero con mayor flexibilidad en ciertos contextos.
Ethers.js está orientado a desarrolladores que buscan un kit de herramientas completo para dApps complejas, ofreciendo un rico conjunto de abstracciones y funcionalidades. Por otro lado, Viem está dirigido a quienes valoran la eficiencia, la modularidad y el diseño minimalista, proporcionando un enfoque ágil e innovador para el desarrollo en Ethereum. La elección entre ambas recae, en última instancia, en los requisitos y preferencias específicos del desarrollador o del proyecto.
Traducido por IA. Puede contener errores. Por favor, verifique siempre la información.