Actualización importante de la versión 2.x de Solana Web3.js: división de funciones y optimización del rendimiento

robot
Generación de resúmenes en curso

Solana Web3.js 2.x versión: división de funciones y optimización del rendimiento

Solana Web3.js, como una biblioteca de JavaScript rica en funciones, lanzó la versión 2.x en noviembre de este año. La nueva versión presenta cambios significativos en comparación con la 1.x, y este artículo resumirá sus principales cambios.

Aunque la versión 2.x se lanzó recientemente y su uso aún no es alto, muchas bibliotecas ampliamente utilizadas aún no se han cambiado, pero comprender estos cambios es muy útil para el trabajo de migración en el futuro.

Comparación de versiones

La versión anterior era relativamente simple de usar, solo necesitabas un paquete @solana/web3.js que contenía todo. Está basada en un diseño basado en clases y encapsula una gran cantidad de operaciones comunes. Por ejemplo, la clase Connection ofrece decenas de métodos, casi cubriendo todas las funcionalidades necesarias para los desarrolladores.

Sin embargo, este diseño también trae algunos problemas. Incluso si los desarrolladores solo utilizan una pequeña parte de las funciones, toda la biblioteca de código se descargará en el dispositivo del usuario, y dado que la cantidad de código de la biblioteca es grande, esto puede provocar un cierto tiempo de carga.

La versión 2.x adoptó una estrategia diferente. El equipo oficial dividió el antiguo repositorio de código en múltiples pequeños módulos, como @solana/accounts, @solana/codecs, @solana/rpc, @solana/signers, @solana/transactions, etc. Al mismo tiempo, la nueva versión abandonó la implementación basada en clases y adoptó más un enfoque de funciones individuales. Este diseño es beneficioso para la optimización durante la construcción del código JavaScript, ya que el código no utilizado se eliminará y no se descargará en el dispositivo del usuario. Según las estadísticas de la documentación oficial, el uso de la nueva versión de DApp generalmente puede lograr una optimización de tamaño de aproximadamente el 30%; si solo se utiliza una pequeña parte de las funciones, la proporción de optimización puede ser aún mayor.

Este cambio también ha presentado desafíos para el trabajo de documentación del equipo de Solana, ya que cómo permitir que los desarrolladores encuentren rápidamente las funciones necesarias se ha convertido en un problema importante. Actualmente, los nombres de los paquetes tienen una buena semántica, lo que permite entender en gran medida su propósito solo a partir de los nombres, lo que reduce en cierta medida la dificultad de migración para los desarrolladores.

Sin embargo, debido a que se lanzó hace poco, muchos proyectos aún no han realizado la migración. En Solana Cookbook hay pocos ejemplos sobre la versión 2.x. La nueva versión tiende a utilizar funciones integradas en tiempo de ejecución (como la generación de pares de claves), pero la documentación es insuficiente en la descripción de estas partes, lo que puede causar confusión entre los desarrolladores.

Una característica importante de la versión 2.x es la cero dependencia. Esto puede no ser tan importante para muchos usuarios, pero a partir del ataque a la cadena de suministro que ocurrió a principios de diciembre de este año en las versiones 1.95.5 y 1.95.6 de @solana/web3.js, más entradas externas y dependencias aumentarán significativamente la probabilidad de que ocurran eventos de seguridad. Con el lanzamiento de la versión 2.x, el equipo de desarrollo de Web3.js decidió utilizar más funciones nativas, eliminando la introducción de dependencias externas y Polyfills. Aunque puede haber cambios en el futuro, actualmente la versión 2.x ha eliminado todas las dependencias externas.

Serie para principiantes de Web3: Actualiza ahora @solana/web3.js 2.x para habilitar la programación funcional

Puntos de cambio importantes

conexión

En la versión 1.x, la clase Connection proporciona una gran cantidad de métodos. Pero su función principal es crear un emisor de solicitudes configurando la dirección RPC, y luego enviar varias solicitudes a través de él.

La versión 2.x utiliza un enfoque más funcional para implementar esta función. Por ejemplo, al llamar a sendAndConfirmTransaction para enviar una transacción, se inicia automáticamente una solicitud HTTPS y se establece una conexión WSS, suscribiéndose al estado de la transacción, devolviendo el hash de la transacción una vez que se confirma.

par de claves

Ha habido cambios significativos en la parte relacionada con las claves públicas y privadas. Las clases Keypair y PublicKey, que eran comunes en la versión 1.x, ya no existen y han sido reemplazadas por algunas funciones.

Por ejemplo, se puede usar await generateKeyPair() para generar un par de claves, en lugar del anterior Keypair.generate(). Es importante notar que el nuevo generateKeyPair devuelve una Promise, en lugar de devolver directamente el par de claves. Esto se debe a que la nueva implementación aprovecha tanto como sea posible la Web Crypto API de JavaScript, utilizando la implementación nativa de Ed25519. Muchos métodos de la Web Crypto API son asíncronos. Sin embargo, este cambio no es difícil de aceptar; hoy, a finales de 2024, los desarrolladores de JavaScript ya están muy familiarizados con las Promises.

enviar transacción

Las clases Transaction y VersionedTransaction en la versión 1.x ya no existen en la 2.x.

Los métodos relacionados con el System Program proporcionados en la versión anterior ya no existen, por lo que todos los métodos estáticos en la clase SystemProgram deben importarse desde otros lugares. Por ejemplo, la instrucción transfer necesita llamar a la función getTransferSolInstruction en @solana-program/system.

Debido a que ya no se proporcionan clases, Web3.js ofrece una forma de pipe comúnmente utilizada en la programación funcional. Los desarrolladores pueden implementar la funcionalidad de transferencia de la versión 1.x a través de la función pipe.

Es importante notar que las transacciones ya no se inician a través de Connection, sino que se generan mediante un función única definida por el proveedor RPC del desarrollador, y luego se llama a esa función para iniciar la transacción. En comparación con la versión 1.x, la cantidad de código ha aumentado, pero la personalización es más fuerte.

Las transacciones se inician a través de HTTPS RPC y luego se confirman los resultados de las transacciones mediante la suscripción a WSS RPC. Se puede sentir que este nuevo método depende mucho de WSS, y creo que en el futuro la aplicación de WSS será cada vez más amplia, lo que también plantea mayores demandas sobre la estabilidad del servicio de los proveedores de RPC.

React

Cabe destacar que el proyecto @solana/web3.js también incluye una biblioteca llamada @solana/react, que ofrece algunos Hooks de React con funciones integradas como signIn.

Resumen

La publicación de la versión 2.x de @solana/web3.js refleja el compromiso del equipo de Solana con el desarrollo y la mejora continua. Proporciona a los desarrolladores una forma eficiente, flexible y personalizable de interactuar con la red Solana, lo que ayuda a impulsar la adopción y el desarrollo de la plataforma.

Serie para principiantes en Web3: Actualiza ahora @solana/web3.js 2.x para habilitar la programación funcional

SOL2.41%
Ver originales
Esta página puede contener contenido de terceros, que se proporciona únicamente con fines informativos (sin garantías ni declaraciones) y no debe considerarse como un respaldo por parte de Gate a las opiniones expresadas ni como asesoramiento financiero o profesional. Consulte el Descargo de responsabilidad para obtener más detalles.
  • Recompensa
  • 4
  • Compartir
Comentar
0/400
SignatureVerifiervip
· hace19h
smh... otro lanzamiento apresurado que requiere una auditoría de seguridad extensa
Ver originalesResponder0
BearMarketSurvivorvip
· hace19h
Cuanto más se optimiza el rendimiento, más tontos hay.
Ver originalesResponder0
AlwaysAnonvip
· hace20h
Oh, finalmente se ha actualizado.
Ver originalesResponder0
DefiPlaybookvip
· hace20h
Según la curva de crecimiento de TVL, se prevé que el rendimiento del módulo 2.x optimizado aumente en un 27,8%.
Ver originalesResponder0
  • Anclado
Opere con criptomonedas en cualquier momento y lugar
qrCode
Escanee para descargar la aplicación Gate
Comunidad
Español
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)