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

Solana Web3.js versión 2.x: Actualización importante de una biblioteca JavaScript rica en funciones

Solana Web3.js, como una poderosa biblioteca de JavaScript, lanzó oficialmente la versión 2.x en noviembre. En comparación con la 1.x, la nueva versión trae numerosos cambios significativos; este artículo ofrecerá un resumen de sus principales actualizaciones.

A pesar de que la versión 2.x se acaba de lanzar y su uso no es alto, muchas bibliotecas ampliamente utilizadas aún no se han migrado, entender estos cambios es crucial para futuros trabajos de migración.

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

Comparación de versiones

No se puede negar que la versión anterior es más simple y directa de usar. La versión 1.x solo incluye un paquete @solana/web3.js, que contiene todas las funcionalidades. Está basado en un diseño de clases y encapsula una gran cantidad de operaciones comunes. Por ejemplo, la clase Connection ofrece decenas de métodos que cubren prácticamente todas las funcionalidades necesarias para los desarrolladores. Además, el rico código de ejemplo en el libro de cocina de Solana proporciona una gran comodidad a los desarrolladores.

Sin embargo, este diseño también trae consigo algunos problemas. A pesar de que las funciones que los desarrolladores realmente utilizan 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 de la biblioteca, esto puede causar cierto retraso en la carga.

La versión 2.x adoptó un enfoque diferente. El equipo oficial dividió el código fuente original en varios módulos pequeños, como @solana/accounts, @solana/codecs, @solana/rpc, @solana/signers y @solana/transactions. Al mismo tiempo, la nueva versión abandonó la implementación basada en clases y adoptó más la forma de funciones individuales. Este cambio beneficia enormemente la optimización durante la construcción del código JavaScript, ya que 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 pueden obtener en general un 30% de optimización en el tamaño; para aplicaciones que solo utilizan unas pocas funciones, el porcentaje de optimización es incluso mayor.

Este cambio también ha planteado mayores exigencias sobre la calidad de la documentación del equipo de Solana. Cómo permitir que los desarrolladores encuentren rápidamente las funciones que necesitan se ha convertido en un problema clave. A primera vista, los nuevos nombres de los paquetes tienen una buena semántica, lo que permite entender su propósito en gran medida solo a partir del nombre, lo que, en cierta medida, reduce la dificultad de migración para los desarrolladores.

Sin embargo, debido a que la nueva versión se ha lanzado recientemente, muchos proyectos aún no han migrado. Hay relativamente pocos ejemplos sobre la versión 2.x en el Solana Cookbook. Además, 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 llevar a que los desarrolladores se sientan confundidos en ciertos aspectos.

Otra característica importante de la versión 2.x es la cero dependencia. Esto puede no ser tan importante para muchos usuarios, pero considerando el 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, reducir las entradas y dependencias externas puede disminuir 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 es posible que haya cambios en el futuro, en este momento la versión 2.x ha eliminado todas las dependencias externas.

Cambios principales

forma de conexión

En la versión 1.x, la clase Connection proporciona una gran cantidad de métodos. 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 adopta 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 iniciará automáticamente una solicitud HTTPS y se establecerá 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.

procesamiento de claves

El manejo relacionado con las claves públicas y privadas 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 una serie de funciones.

Por ejemplo, ahora se puede usar await generateKeyPair() para generar un par de claves, en lugar de la anterior Keypair.generate().

Es importante señalar que el nuevo generateKeyPair devuelve una Promesa, en lugar de devolver directamente un par de claves. Esto se debe a que la nueva implementación aprovecha al máximo la API Web Crypto de JavaScript, utilizando la implementación nativa de Ed25519. Muchos métodos de la API Web Crypto son asíncronos. Sin embargo, para los desarrolladores modernos de JavaScript familiarizados con Promesas, este cambio no es difícil de aceptar.

envío de transacción

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

Los métodos relacionados con el System Program proporcionados en versiones anteriores ya no se conservan, por lo que los métodos estáticos de la clase SystemProgram deben ser importados desde otro lugar.

Por ejemplo, el comando transfer ahora necesita llamar a la función getTransferSolInstruction en @solana-program/system.

Debido a que ya no se proporcionan clases, Web3.js ofrece la forma de pipe comúnmente utilizada en la programación funcional. A continuación se muestra un ejemplo de cómo implementar la funcionalidad de transferencia original de la versión 1.x utilizando la función pipe:

javascript import { pipe } from "@solana/web3.js"; import { getTransferSolInstruction } from "@solana/system-program";

const transaction = pipe( createTransaction({ version: 0 }), addInstruction(getTransferSolInstruction({ fromPubkey: sender, toPubkey: recipient, lamports: cantidad })) );

const signature = await rpc.sendTransaction(transaction);

Se puede ver que las transacciones ya no se inician a través de Connection, sino que se genera una función específica a través de nuestro RPC Provider definido 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 ligeramente, pero ofrece una mayor personalización.

Las transacciones se inician a través de HTTPS RPC y luego se confirman a través de la suscripción a WSS RPC. Se puede sentir que el nuevo enfoque depende más de WSS, y se cree que en el futuro la aplicación de WSS será más amplia, lo que también plantea mayores requisitos de estabilidad del servicio para los proveedores de RPC.

Soporte de React

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

Resumen

La publicación de la versión 2.x de @solana/web3.js muestra plenamente la determinación del equipo de Solana de mejorar y desarrollarse continuamente. La nueva versión ofrece 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. Aunque actualmente se encuentra en una etapa temprana, con la migración de más proyectos y la adaptación de la comunidad, se cree que la versión 2.x desempeñará un papel aún más importante en el futuro.

Web3 Novato Serie: Ahora actualiza @solana/web3.js 2.x para habilitar la programación funcional

SOL0.85%
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
  • 5
  • Republicar
  • Compartir
Comentar
0/400
GweiWatchervip
· 08-09 18:00
El viejo que no se actualiza pasa de largo.
Ver originalesResponder0
TheShibaWhisperervip
· 08-09 18:00
¿Cuándo se podrá completar la actualización? Es muy molesto.
Ver originalesResponder0
SchrodingerWalletvip
· 08-09 17:54
Otra ronda de migración, estoy frustrado.
Ver originalesResponder0
SorryRugPulledvip
· 08-09 17:50
Otra actualización y migración, me está volviendo loco.
Ver originalesResponder0
DaoTherapyvip
· 08-09 17:42
Esperemos a la actualización primero.
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)