Lanzamiento de Solana Web3.js 2.x: la reestructuración de la programación funcional trae mejoras en el rendimiento

robot
Generación de resúmenes en curso

Solana Web3.js 2.x: un nuevo capítulo en la programación funcional

La biblioteca Solana Web3.js lanzará oficialmente la versión 2.x en noviembre de este año. En comparación con la versión 1.x, la nueva versión ha tenido cambios significativos en su estructura y forma de uso. Este artículo ofrecerá un resumen de estos cambios principales para ayudar a los desarrolladores a prepararse para una posible migración en el futuro.

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

Comparación de versiones

El uso de la versión 1.x es relativamente simple, solo se necesita un paquete @solana/web3.js para cubrir todas las funcionalidades. Está basado en un diseño de clases, como la clase Connection, que ofrece decenas de métodos que casi cubren todas las funciones que los desarrolladores necesitan. Sin embargo, este diseño también trae algunos problemas, como el tamaño excesivo de la biblioteca; incluso si los desarrolladores solo utilizan unas pocas funciones, toda la biblioteca se descargará en el dispositivo del usuario.

La versión 2.x adoptó un enfoque diferente. El equipo oficial dividió el repositorio de código en varios módulos pequeños, como @solana/accounts, @solana/codecs, @solana/rpc, etc. La nueva versión abandonó la implementación basada en clases y adoptó un enfoque de funciones individuales, lo que favorece 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 estadísticas oficiales, las DApps que utilizan la nueva versión suelen obtener una optimización del tamaño del 30%, y si solo se utilizan unas pocas funciones, el porcentaje de optimización puede ser aún mayor.

Este cambio ha elevado las exigencias sobre la calidad de la documentación del equipo de Solana. Cómo ayudar a los desarrolladores a encontrar rápidamente las funciones necesarias se ha convertido en un problema clave. Actualmente, la nomenclatura de los paquetes tiene una buena semántica, lo que permite inferir su uso a partir de los nombres, reduciendo así, en cierta medida, la dificultad de migración para los desarrolladores.

Sin embargo, dado que la versión 2.x se lanzó hace poco, muchos proyectos aún no han realizado la migración. Los ejemplos sobre la versión 2.x en el Solana Cookbook también son relativamente escasos. La nueva versión tiende a utilizar funciones integradas en el tiempo de ejecución (como generar pares de claves), pero la documentación carece de descripción al respecto, lo que podría confundir a algunos desarrolladores.

Otra característica importante de la versión 2.x es la ausencia de dependencias. Esto puede no ser importante para muchos usuarios, pero a la luz del ataque a la cadena de suministro que ocurrió a principios de diciembre de 2023 en las versiones 1.95.5 y 1.95.6 de @solana/web3.js, más entradas y dependencias externas aumentan considerablemente la probabilidad de que ocurran incidentes de seguridad. Con el lanzamiento de la versión 2.x, el equipo de desarrollo decidió utilizar más funciones nativas y eliminar las dependencias externas y la introducción de Polyfills. Actualmente, la versión 2.x ha eliminado todas las dependencias externas.

Puntos de cambio importantes

conexión

En la versión 2.x, la implementación de la conexión adoptó un enfoque más funcional:

javascript import { createSolanaRpc } from '@solana/web3.js';

const rpc = createSolanaRpc(');

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 después de la confirmación.

par de claves

En la versión 2.x, las clases Keypair y PublicKey originales han sido reemplazadas por algunas funciones. Por ejemplo, ahora se puede usar await generateKeyPair() para generar un par de claves, en lugar de la anterior Keypair.generate().

El nuevo generateKeyPair devuelve una Promesa, esto se debe a que la nueva implementación utiliza tanto como sea posible la API Web Crypto de JavaScript, utilizando una implementación nativa de Ed25519. Muchos de los métodos de la API Web Crypto son asíncronos.

enviar transacción

La versión 2.x ya no utiliza las clases Transaction y VersionedTransaction. Los métodos relacionados con el System Program tampoco existen, y deben importarse de otros lugares. Por ejemplo, la instrucción transfer ahora necesita llamar a la función getTransferSolInstruction en @solana-program/system.

La nueva versión ofrece una forma de pipe comúnmente utilizada en la programación funcional. A continuación se muestra un ejemplo de cómo implementar la función de transferencia utilizando la función pipe:

javascript import { pipe } from '@solana/functional'; import { getTransferSolInstruction } from '@solana/programs';

const transaction = pipe( createTransaction({ version: 0 }), addInstruction(getTransferSolInstruction({ de: senderPublicKey, a: recipientPublicKey, cantidad: lamports, })) );

const signature = await sendAndConfirmTransaction(rpc, transaction, signers);

En comparación con la versión 1.x, la cantidad de código ha aumentado ligeramente, pero ofrece una mayor personalización.

Soporte para React

En el proyecto @solana/web3.js también se 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 demuestra el compromiso del equipo de Solana con el desarrollo y la mejora continua. La nueva versión ofrece a los desarrolladores una forma eficiente, flexible y personalizable de interactuar con la red Solana, lo que se espera que impulse 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

Ver originales
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Recompensa
  • 8
  • Compartir
Comentar
0/400
JustHereForMemesvip
· 07-07 16:50
Este coche va un poco rápido, ya no puedo seguir.
Ver originalesResponder0
GweiObservervip
· 07-06 13:21
Mejoras en el rendimiento yyds
Ver originalesResponder0
OPsychologyvip
· 07-06 03:28
Se avanza rápido, ¿quién no ha escrito algunas líneas de código?
Ver originalesResponder0
ShibaSunglassesvip
· 07-05 16:48
Finalmente optimizado, el viejo Loka no sirve.
Ver originalesResponder0
MetaverseHobovip
· 07-05 16:46
Finalmente, perspectivas valiosas han llegado.
Ver originalesResponder0
GateUser-00be86fcvip
· 07-05 16:43
La actualización de web3.js realmente ha llegado.
Ver originalesResponder0
GameFiCriticvip
· 07-05 16:40
No puedo seguir el ritmo del desarrollo de sol.
Ver originalesResponder0
BlockchainDecodervip
· 07-05 16:28
Desde la perspectiva de la implementación funcional, la mejora del rendimiento debería estar en el rango del 15-20%.
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)