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.
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';
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';
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.
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.
13 me gusta
Recompensa
13
6
Compartir
Comentar
0/400
LiquidityHunter
· hace2h
Optimización del módulo... pero el cuello de botella de rendimiento sigue estando en el umbral del 85%
Ver originalesResponder0
OnchainFortuneTeller
· hace20h
Ver la apariencia del BTC es un engaño.
Ver originalesResponder0
NoodlesOrTokens
· hace20h
Finalmente se actualizó, ¡qué lento!
Ver originalesResponder0
SandwichTrader
· hace20h
¿Para qué correr tan rápido? ¿Acaso la arquitectura está asustada?
Lanzamiento de Solana Web3.js 2.x: diseño modular para optimizar el rendimiento y mejorar la seguridad
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.
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.