Lanzamiento de Solana Web3.js 2.x: diseño modular para optimizar el rendimiento y mejorar la seguridad

robot
Generación de resúmenes en curso

Solana Web3.js 2.x versión: 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. Esta nueva versión presenta cambios significativos en comparación con la 1.x, y este artículo ofrecerá una visión general de sus principales cambios.

Aunque la versión 2.x acaba de ser lanzada y su uso aún no se ha generalizado, muchas bibliotecas de alto uso tampoco han realizado la transición. Sin embargo, entender estos cambios es muy útil para el trabajo de migración futuro.

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

Comparación de versiones

La versión 1.x es relativamente simple de usar, solo necesitas importar el paquete único @solana/web3.js. Está basado en un diseño orientado a clases y encapsula una gran cantidad de operaciones comunes. Por ejemplo, la clase Connection ofrece decenas de métodos que cubren casi todas las funcionalidades que los desarrolladores necesitan.

Sin embargo, este diseño también trae algunos problemas. A pesar de que los desarrolladores suelen utilizar solo una pequeña parte de las funciones, toda la biblioteca de código se descarga en el dispositivo del usuario, lo que puede llevar a un aumento en el tiempo de carga.

La versión 2.x adoptó un enfoque diferente. El equipo oficial dividió la antigua base de código en varios módulos pequeños, como @solana/accounts, @solana/codecs, @solana/rpc, @solana/signers, @solana/transactions, etc. Al mismo tiempo, se abandonó la implementación basada en clases y se optó por un enfoque de funciones individuales. Este cambio favorece 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 el dispositivo del usuario.

Según estadísticas de la documentación oficial, el uso de la nueva versión de DApp puede lograr una optimización del tamaño del 30%. Si solo se utilizan unas pocas funciones, la proporción de optimización puede ser aún mayor.

Este cambio presenta nuevos desafíos para la documentación del equipo de Solana, siendo un problema clave cómo permitir que los desarrolladores encuentren rápidamente las funciones que necesitan. Actualmente, parece que los nombres de los paquetes tienen una buena semántica, lo que permite entender aproximadamente su propósito solo por el nombre, lo que reduce en cierta medida la dificultad de migración para los desarrolladores.

Debido a que la nueva versión se lanzó hace poco, muchos proyectos aún no han migrado. Actualmente, hay relativamente pocos ejemplos de la versión 2.x. Además, dado que la nueva versión tiende a utilizar funciones integradas en tiempo de ejecución (como la generación de pares de claves), la falta de descripciones relacionadas en la documentación puede causar confusión a algunos desarrolladores.

Otra característica importante de la versión 2.x es la ausencia de dependencias. Esto puede no ser muy 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 dependencias externas puede disminuir significativamente la probabilidad de que ocurran incidentes de seguridad. Con el lanzamiento de la versión 2.x, el equipo de desarrollo de Web3.js decidió utilizar más funciones nativas y eliminar 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.

Puntos de cambio importantes

conexión

En la versión 1.x, la clase Connection proporciona una gran cantidad de métodos. En la 2.x, se adoptó un enfoque más funcional para implementarlos:

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

const rpc = crearSolanaRpcApi({ httpEndpoint: ' wsEndpoint: 'wss://api.mainnet-beta.solana.com', });

// Enviar transacciones usando rpc const sendAndConfirmTransaction = rpc.sendAndConfirmTransaction(/* ... */);

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 confirmada.

par de claves

En la versión 2.x, las clases Keypair y PublicKey, comúnmente utilizadas en la versión 1.x, ya no existen y han sido reemplazadas por algunas funciones. Por ejemplo, puedes usar await generateKeyPair() para generar un par de claves, en lugar de la anterior Keypair.generate().

El nuevo generateKeyPair devuelve una Promesa, ya que la nueva implementación aprovecha al máximo la API Web Crypto de JavaScript, utilizando la implementación nativa de Ed25519. Muchos de los métodos de la API Web Crypto son asíncronos.

enviar transacción

En la versión 2.x ya no existen las clases Transaction y VersionedTransaction. Los métodos relacionados con el System Program tampoco existen más, y es necesario importarlos de otros lugares. Por ejemplo, la instrucción transfer 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 cómo implementar la funcionalidad de transferencia de la versión 1.x utilizando la función pipe:

javascript import { pipe } from '@solana/functional'; import { getTransferSolInstruction } from '@solana/system-program'; importar { addSignatureToTransaction, crearTransacción, sendAndConfirmTransaction, ] de '@solana/web3.js';

const transferSol = pipe( // Crear transacción (ix) => createTransaction({ instructions: [ix] }), // Agregar firma (tx) => addSignatureToTransaction(tx, signer), // Enviar y confirmar la transacción (signedTx) => sendAndConfirmTransaction(rpc, signedTx) );

const signature = await transferSol( getTransferSolInstruction({ de: remitente, para: destinatario, cantidad, }) );

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 confirma el resultado de la transacción mediante la suscripción a WSS RPC.

React soporta

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 demuestra la determinación del equipo de Solana de seguir mejorando. La nueva versión ofrece a los desarrolladores una forma eficiente, flexible y personalizable de interactuar con la red de Solana, lo que se espera impulse 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

SOL7.79%
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
  • 6
  • Compartir
Comentar
0/400
LiquidityHuntervip
· hace2h
Optimización del módulo... pero el cuello de botella de rendimiento sigue estando en el umbral del 85%
Ver originalesResponder0
OnchainFortuneTellervip
· hace20h
Ver la apariencia del BTC es un engaño.
Ver originalesResponder0
NoodlesOrTokensvip
· hace20h
Finalmente se actualizó, ¡qué lento!
Ver originalesResponder0
SandwichTradervip
· hace20h
¿Para qué correr tan rápido? ¿Acaso la arquitectura está asustada?
Ver originalesResponder0
staking_grampsvip
· hace20h
¡Guau! Un poquito quiere aprender.
Ver originalesResponder0
AirdropHunter007vip
· hace20h
¡Otra vez llegué tarde! Solicito Airdrop...
Ver originalesResponder0
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)