Publicación de la versión 2.x de Solana Web3.js: la reestructuración de programación funcional trae optimizaciones significativas

robot
Generación de resúmenes en curso

Solana Web3.js versión 2.x: nueva experiencia de programación funcional

Solana Web3.js, como una biblioteca de JavaScript rica en funcionalidades, lanzó oficialmente la versión 2.x este noviembre. En comparación con la versión 1.x anterior, la nueva versión ha tenido cambios significativos. Este artículo resumirá sus principales cambios.

A pesar de que la versión 2.x se acaba de lanzar y su uso aún no se ha generalizado, muchas bibliotecas ampliamente utilizadas aún no han realizado la transición, pero comprender estos cambios será de gran ayuda para el trabajo de migración futuro.

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

Comparación de versiones

No se puede negar que la versión anterior es más simple y directa en su uso. La versión 1.x solo contiene un paquete @solana/web3.js, donde se concentran todas las funcionalidades. Está basada en un diseño orientado a clases y encapsula una gran cantidad de operaciones comunes. Por ejemplo, la clase Connection proporciona decenas de métodos que cubren casi todas las funciones necesarias para los desarrolladores.

Sin embargo, este diseño también trae algunos problemas. A pesar de que las funciones que realmente utilizan los desarrolladores pueden representar solo una pequeña parte, toda la biblioteca de código se descargará en el dispositivo del usuario, y debido a la gran cantidad de código en la biblioteca, esto puede llevar un tiempo considerable.

En comparación, la versión 2.x descompone el antiguo repositorio de código en múltiples módulos pequeños, como @solana/accounts, @solana/codecs, @solana/rpc, @solana/signers, @solana/transactions, etc. Al mismo tiempo, la nueva versión abandona la implementación basada en clases y adopta más el enfoque de funciones individuales, lo que es muy útil para la optimización durante la construcción del código JavaScript. El código no utilizado será eliminado y no se descargará en los dispositivos de los usuarios. Según las estadísticas de la documentación oficial, las DApps que utilizan la nueva versión generalmente pueden obtener una optimización del tamaño del 30%; si solo se utilizan unas pocas funciones, la tasa de optimización puede ser aún mayor.

Esto plantea mayores exigencias en la calidad de la documentación del equipo de Solana, y cómo permitir que los desarrolladores encuentren rápidamente las funciones necesarias se convierte en un tema importante. Actualmente, parece que los nombres de los paquetes tienen una buena semántica, lo que permite comprender su uso a partir del nombre, lo que reduce en cierta medida la dificultad de migración para los desarrolladores.

Debido a que fue lanzado hace poco, muchos proyectos aún no han realizado la migración. También hay relativamente pocos ejemplos sobre la versión 2.x en el Solana Cookbook. Además, la nueva versión tiende a usar funciones integradas en tiempo de ejecución (como la generación de pares de claves), pero la documentación carece de descripciones sobre estas funciones, lo que puede causar confusión en algunos aspectos para los desarrolladores.

Una característica importante de la versión 2.x es la ausencia de dependencias. Esto puede no ser muy relevante para muchos usuarios, pero a raíz 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, una mayor cantidad de entradas y dependencias externas podría aumentar considerablemente 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. Puede haber cambios en el futuro, pero al menos en este momento, la versión 2.x ha eliminado todas las dependencias externas.

Puntos de cambio importantes

conexión

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

La versión 2.x adopta 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 para suscribirse al estado de la transacción, devolviendo el hash de la transacción una vez que ha sido confirmada.

par de claves

La parte relacionada con la clave pública y la clave privada también ha cambiado significativamente. 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, ahora se puede usar await generateKeyPair() para generar un par de claves, en lugar del anterior Keypair.generate(). Cabe destacar que el nuevo generateKeyPair devuelve una Promise, ya que la nueva implementación aprovecha tanto como sea posible la API de Web Crypto de JavaScript, utilizando la implementación nativa de Ed25519. Muchos métodos de la API de Web Crypto son asíncronos. Sin embargo, este cambio no es inaceptable, hoy, en el final de 2024, los desarrolladores de JavaScript ya están muy familiarizados con las Promises.

Enviar transacción

Las clases Transaction y VersionedTransaction, familiares para los usuarios de la versión 1.x, ya no existen en la versión 2.x.

Los métodos relacionados con el System Program que se ofrecían en la versión anterior ya no existen, por lo que los métodos estáticos en la clase SystemProgram deben ser importados desde otro lugar. Por ejemplo, la instrucción transfer necesita llamar a la función getTransferSolInstruction en @solana-program/system.

Debido a que ya no se proporciona class, Web3.js ofrece una forma pipe comúnmente utilizada en la programación funcional. Los desarrolladores pueden utilizar la función pipe para implementar la funcionalidad de transferencia que originalmente estaba en 1.x.

Es importante señalar que las transacciones ya no se inician a través de Connection, sino que se generan a través de un proveedor RPC definido, creando una función única que luego se llama 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 ahora más fuerte.

Las transacciones se inician a través de HTTPS RPC y luego se confirman mediante la suscripción a WSS RPC. Este nuevo método depende en gran medida de WSS, y se cree que su aplicación se volverá cada vez más amplia en el futuro, lo que también plantea mayores exigencias en la estabilidad del servicio de los proveedores de RPC.

React

Cabe mencionar que el proyecto @solana/web3.js también incluye una biblioteca llamada @solana/react, que proporciona algunos Hooks de React y cuenta 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 de Solana, lo que ayuda a impulsar la adopción y el desarrollo de la plataforma.

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

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
MemeCoinSavantvip
· 07-15 21:50
según mis modelos estadísticos, este cambio de paradigma se basa en af ngl
Ver originalesResponder0
MEVHunterZhangvip
· 07-15 21:45
Finalmente llegó la reestructuración, tanto tiempo esperando.
Ver originalesResponder0
OnlyOnMainnetvip
· 07-15 21:39
El jefe de sol se está moviendo demasiado rápido, ¿no?
Ver originalesResponder0
LiquidityNinjavip
· 07-15 21:35
Confiable~ Finalmente estoy usando programación funcional.
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)