Solana Web3.js 2.x: La nueva era de la programación funcional
Solana Web3.js lanzó la versión 2.x en noviembre de 2023, que trae cambios significativos en comparación con la versión 1.x. Este artículo resumirá sus principales mejoras.
Aunque la versión 2.x acaba de ser lanzada y la tasa de uso aún no es alta, muchas bibliotecas populares aún no han migrado, pero entender estos cambios ayudará a prepararse para futuras actualizaciones.
Comparación de versiones
La versión 1.x es relativamente sencilla de usar, ya que solo incluye un paquete: @solana/web3.js, que encapsula una gran cantidad de operaciones comunes basadas en un diseño orientado a clases. Por ejemplo, la clase Connection proporciona decenas de métodos que cubren casi todas las funcionalidades que los desarrolladores necesitan.
Sin embargo, este diseño también trae algunos problemas. Aunque las funciones que los desarrolladores realmente utilizan pueden ser pocas, toda la biblioteca de código se descarga en el dispositivo del usuario, lo que provoca un aumento en el tiempo de carga.
La versión 2.x adoptó un enfoque diferente. El equipo oficial dividió el código existente 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ó más 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 los datos oficiales, las DApps que utilizan la nueva versión generalmente pueden lograr una optimización del tamaño del 30%, y para aplicaciones con menos funcionalidades, la proporción de optimización puede ser aún mayor.
Este cambio 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. Actualmente, la semántica de los nombres de los paquetes es bastante buena, ya que se puede entender su propósito a partir de sus nombres, lo que, en cierta medida, reduce la dificultad de migración para los desarrolladores.
Sin embargo, debido a que acaba de ser lanzado, muchos proyectos aún no se han migrado. Algunos ejemplos y descripciones de la documentación también no son lo suficientemente completos, lo que podría causar cierta confusión a los desarrolladores.
Otra característica importante de la versión 2.x es la cero dependencia. Esto es crucial para mejorar la seguridad, especialmente después de que las versiones 1.95.5 y 1.95.6 de @solana/web3.js sufrieron un ataque de cadena de suministro a principios de diciembre de 2023. La nueva versión utiliza más funciones nativas, eliminando la introducción de dependencias externas y Polyfills, lo que reduce el riesgo de seguridad.
Cambios principales
método de conexión
La versión 2.x utiliza un enfoque más funcional para manejar las conexiones. Ya no se utiliza la clase Connection, sino que se crea un emisor de solicitudes configurando la dirección RPC. Por ejemplo, al enviar una transacción, se inicia automáticamente una solicitud HTTPS y se establece una conexión WSS, se suscribe al estado de la transacción y se devuelve el hash de la transacción una vez que se confirma.
gestión de claves
Las operaciones relacionadas con las claves públicas y privadas también han cambiado significativamente. Las clases Keypair y PublicKey, que se utilizaban en la versión 1.x, ya no existen, siendo reemplazadas por una serie de funciones. Por ejemplo, ahora se utiliza await generateKeyPair() para generar un par de claves, en lugar de la anterior Keypair.generate().
La nueva implementación utiliza la API Web Crypto de JavaScript y utiliza una implementación nativa de Ed25519. Esto ha hecho que algunas operaciones se vuelvan asíncronas, pero para los desarrolladores modernos de JavaScript que están familiarizados con Promesas, esto no es un gran problema.
procesamiento de transacciones
En la versión 2.x, ya no existen las clases Transaction y VersionedTransaction. Los métodos relacionados con el System Program también deben ser importados de otros lugares. Por ejemplo, la instrucción de transferencia ahora requiere llamar a la función getTransferSolInstruction en @solana-program/system.
La nueva versión ofrece la forma pipe comúnmente utilizada en la programación funcional. Las transacciones ya no se inician a través de Connection, sino que se generan funciones específicas mediante el RPC Provider definido para iniciar las transacciones. Aunque esta forma aumenta ligeramente la cantidad de código, proporciona una mayor personalización.
Soporte de React
Es importante señalar que el proyecto @solana/web3.js también incluye una biblioteca llamada @solana/react, que proporciona algunos hooks de React y funciones integradas como signIn.
Conclusión
La publicación de la versión 2.x de @solana/web3.js demuestra la determinación del equipo de Solana para 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 el desarrollo y la aplicación del plataforma.
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.
15 me gusta
Recompensa
15
3
Compartir
Comentar
0/400
SoliditySlayer
· hace12h
¿Cuánto puede aumentar el tps?
Ver originalesResponder0
GateUser-aa7df71e
· hace12h
solana esta vez va a To the moon ¿verdad?
Ver originalesResponder0
GateUser-e87b21ee
· hace12h
¡Desarrollar es más fácil después de la actualización!
Lanzamiento de la versión 2.x de Solana Web3.js: la programación funcional redefine la experiencia de desarrollo
Solana Web3.js 2.x: La nueva era de la programación funcional
Solana Web3.js lanzó la versión 2.x en noviembre de 2023, que trae cambios significativos en comparación con la versión 1.x. Este artículo resumirá sus principales mejoras.
Aunque la versión 2.x acaba de ser lanzada y la tasa de uso aún no es alta, muchas bibliotecas populares aún no han migrado, pero entender estos cambios ayudará a prepararse para futuras actualizaciones.
Comparación de versiones
La versión 1.x es relativamente sencilla de usar, ya que solo incluye un paquete: @solana/web3.js, que encapsula una gran cantidad de operaciones comunes basadas en un diseño orientado a clases. Por ejemplo, la clase Connection proporciona decenas de métodos que cubren casi todas las funcionalidades que los desarrolladores necesitan.
Sin embargo, este diseño también trae algunos problemas. Aunque las funciones que los desarrolladores realmente utilizan pueden ser pocas, toda la biblioteca de código se descarga en el dispositivo del usuario, lo que provoca un aumento en el tiempo de carga.
La versión 2.x adoptó un enfoque diferente. El equipo oficial dividió el código existente 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ó más 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 los datos oficiales, las DApps que utilizan la nueva versión generalmente pueden lograr una optimización del tamaño del 30%, y para aplicaciones con menos funcionalidades, la proporción de optimización puede ser aún mayor.
Este cambio 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. Actualmente, la semántica de los nombres de los paquetes es bastante buena, ya que se puede entender su propósito a partir de sus nombres, lo que, en cierta medida, reduce la dificultad de migración para los desarrolladores.
Sin embargo, debido a que acaba de ser lanzado, muchos proyectos aún no se han migrado. Algunos ejemplos y descripciones de la documentación también no son lo suficientemente completos, lo que podría causar cierta confusión a los desarrolladores.
Otra característica importante de la versión 2.x es la cero dependencia. Esto es crucial para mejorar la seguridad, especialmente después de que las versiones 1.95.5 y 1.95.6 de @solana/web3.js sufrieron un ataque de cadena de suministro a principios de diciembre de 2023. La nueva versión utiliza más funciones nativas, eliminando la introducción de dependencias externas y Polyfills, lo que reduce el riesgo de seguridad.
Cambios principales
método de conexión
La versión 2.x utiliza un enfoque más funcional para manejar las conexiones. Ya no se utiliza la clase Connection, sino que se crea un emisor de solicitudes configurando la dirección RPC. Por ejemplo, al enviar una transacción, se inicia automáticamente una solicitud HTTPS y se establece una conexión WSS, se suscribe al estado de la transacción y se devuelve el hash de la transacción una vez que se confirma.
gestión de claves
Las operaciones relacionadas con las claves públicas y privadas también han cambiado significativamente. Las clases Keypair y PublicKey, que se utilizaban en la versión 1.x, ya no existen, siendo reemplazadas por una serie de funciones. Por ejemplo, ahora se utiliza await generateKeyPair() para generar un par de claves, en lugar de la anterior Keypair.generate().
La nueva implementación utiliza la API Web Crypto de JavaScript y utiliza una implementación nativa de Ed25519. Esto ha hecho que algunas operaciones se vuelvan asíncronas, pero para los desarrolladores modernos de JavaScript que están familiarizados con Promesas, esto no es un gran problema.
procesamiento de transacciones
En la versión 2.x, ya no existen las clases Transaction y VersionedTransaction. Los métodos relacionados con el System Program también deben ser importados de otros lugares. Por ejemplo, la instrucción de transferencia ahora requiere llamar a la función getTransferSolInstruction en @solana-program/system.
La nueva versión ofrece la forma pipe comúnmente utilizada en la programación funcional. Las transacciones ya no se inician a través de Connection, sino que se generan funciones específicas mediante el RPC Provider definido para iniciar las transacciones. Aunque esta forma aumenta ligeramente la cantidad de código, proporciona una mayor personalización.
Soporte de React
Es importante señalar que el proyecto @solana/web3.js también incluye una biblioteca llamada @solana/react, que proporciona algunos hooks de React y funciones integradas como signIn.
Conclusión
La publicación de la versión 2.x de @solana/web3.js demuestra la determinación del equipo de Solana para 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 el desarrollo y la aplicación del plataforma.