Solana Web3.js versão 2.x: Atualização significativa de uma biblioteca JavaScript rica em funcionalidades
A Solana Web3.js, como uma biblioteca JavaScript rica em funcionalidades, lançou oficialmente a versão 2.x em novembro deste ano. Em comparação com a versão 1.x, a nova versão apresenta mudanças significativas na estrutura e na forma de uso. Este artigo irá fornecer uma visão geral dessas principais mudanças, a fim de ajudar os desenvolvedores a se prepararem para a migração futura.
Comparação de Versões
A biblioteca Web3.js na versão 1.x é relativamente simples e direta de usar. Ela possui apenas um pacote principal: @solana/web3.js, e todas as funcionalidades estão concentradas nesse pacote. Adota um design baseado em classes, encapsulando uma grande quantidade de operações comuns. Por exemplo, a classe Connection oferece dezenas de métodos que cobrem quase todas as funcionalidades necessárias para os desenvolvedores.
No entanto, este design também traz alguns problemas. Embora as funcionalidades que os desenvolvedores realmente utilizam possam ser apenas uma pequena parte da biblioteca, todo o código da biblioteca será baixado para o dispositivo do usuário, o que pode resultar em um aumento do tempo de carregamento.
A versão 2.x adotou uma abordagem diferente. A equipe de desenvolvimento dividiu o código original em vários módulos pequenos, como @solana/accounts, @solana/codecs, @solana/rpc, @solana/signers e @solana/transactions. A nova versão também abandonou a implementação baseada em classes, optando por uma abordagem mais centrada em funções individuais. Esta abordagem é benéfica para a otimização do código JavaScript durante a construção, permitindo que o código não utilizado seja removido, de modo que não seja baixado para o dispositivo do usuário.
De acordo com estatísticas, o uso de novas versões de aplicações descentralizadas (DApp) pode resultar em uma otimização de aproximadamente 30% no tamanho do código. Se apenas algumas funcionalidades forem utilizadas, a proporção de otimização pode ser ainda maior.
Outra característica importante da versão 2.x é a ausência de dependências. Esta característica pode não ser significativa para muitos usuários, mas considerando os recentes ataques à cadeia de suprimentos nas versões 1.95.5 e 1.95.6 do @solana/web3.js, a redução de dependências externas pode diminuir significativamente os riscos de segurança. A equipe de desenvolvimento do Web3.js decidiu usar mais recursos nativos, eliminando a introdução de dependências externas e Polyfills.
Pontos de mudança importantes
conectar
Na versão 2.x, a forma de conexão tornou-se mais funcional:
javascript
import { createSolanaRpc } from "@solana/web3.js";
const rpc = createSolanaRpc("");
Quando a função sendAndConfirmTransaction é chamada para enviar uma transação, o sistema inicia automaticamente uma solicitação HTTPS e estabelece uma conexão WSS para assinar o estado da transação, retornando o hash da transação após a confirmação.
par de chaves
Na versão 2.x, as classes Keypair e PublicKey foram substituídas por uma série de funções. Por exemplo, pode-se usar await generateKeyPair() para gerar um par de chaves, em vez do antigo Keypair.generate(). A nova implementação utiliza a Web Crypto API do JavaScript, utilizando a implementação nativa de Ed25519.
enviar transação
A versão 2.x não utiliza mais as classes Transaction e VersionedTransaction. Métodos relacionados ao System Program também precisam ser importados de outros lugares. Por exemplo, o comando transfer agora precisa chamar a função getTransferSolInstruction no @solana-program/system.
A nova versão oferece a forma pipe, comumente utilizada na programação funcional. Aqui está um exemplo de como implementar a função de transferência usando a função pipe:
javascript
import { pipe } from "@solana/web3.js";
É importante notar que o projeto @solana/web3.js também inclui uma biblioteca chamada @solana/react, que oferece alguns React Hooks, integrando funcionalidades como signIn.
Resumo
A versão 2.x do @solana/web3.js demonstra o compromisso da equipe Solana com o desenvolvimento e a melhoria contínua. A nova versão oferece aos desenvolvedores uma maneira mais eficiente, flexível e personalizável de interagir com a rede Solana, prometendo impulsionar a adoção e o desenvolvimento adicional da plataforma.
Esta página pode conter conteúdo de terceiros, que é fornecido apenas para fins informativos (não para representações/garantias) e não deve ser considerada como um endosso de suas opiniões pela Gate nem como aconselhamento financeiro ou profissional. Consulte a Isenção de responsabilidade para obter detalhes.
14 Curtidas
Recompensa
14
5
Compartilhar
Comentário
0/400
rekt_but_resilient
· 07-11 16:59
Finalmente uma atualização! O desenvolvimento foi muito doloroso.
Ver originalResponder0
ThatsNotARugPull
· 07-08 18:57
Finalmente consegui emagrecer.
Ver originalResponder0
CompoundPersonality
· 07-08 18:57
Ufa, finalmente não preciso codificar tanto código.
Lançamento da versão 2.x do Solana Web3.js, otimização do tamanho do código Gota 30%
Solana Web3.js versão 2.x: Atualização significativa de uma biblioteca JavaScript rica em funcionalidades
A Solana Web3.js, como uma biblioteca JavaScript rica em funcionalidades, lançou oficialmente a versão 2.x em novembro deste ano. Em comparação com a versão 1.x, a nova versão apresenta mudanças significativas na estrutura e na forma de uso. Este artigo irá fornecer uma visão geral dessas principais mudanças, a fim de ajudar os desenvolvedores a se prepararem para a migração futura.
Comparação de Versões
A biblioteca Web3.js na versão 1.x é relativamente simples e direta de usar. Ela possui apenas um pacote principal: @solana/web3.js, e todas as funcionalidades estão concentradas nesse pacote. Adota um design baseado em classes, encapsulando uma grande quantidade de operações comuns. Por exemplo, a classe Connection oferece dezenas de métodos que cobrem quase todas as funcionalidades necessárias para os desenvolvedores.
No entanto, este design também traz alguns problemas. Embora as funcionalidades que os desenvolvedores realmente utilizam possam ser apenas uma pequena parte da biblioteca, todo o código da biblioteca será baixado para o dispositivo do usuário, o que pode resultar em um aumento do tempo de carregamento.
A versão 2.x adotou uma abordagem diferente. A equipe de desenvolvimento dividiu o código original em vários módulos pequenos, como @solana/accounts, @solana/codecs, @solana/rpc, @solana/signers e @solana/transactions. A nova versão também abandonou a implementação baseada em classes, optando por uma abordagem mais centrada em funções individuais. Esta abordagem é benéfica para a otimização do código JavaScript durante a construção, permitindo que o código não utilizado seja removido, de modo que não seja baixado para o dispositivo do usuário.
De acordo com estatísticas, o uso de novas versões de aplicações descentralizadas (DApp) pode resultar em uma otimização de aproximadamente 30% no tamanho do código. Se apenas algumas funcionalidades forem utilizadas, a proporção de otimização pode ser ainda maior.
Outra característica importante da versão 2.x é a ausência de dependências. Esta característica pode não ser significativa para muitos usuários, mas considerando os recentes ataques à cadeia de suprimentos nas versões 1.95.5 e 1.95.6 do @solana/web3.js, a redução de dependências externas pode diminuir significativamente os riscos de segurança. A equipe de desenvolvimento do Web3.js decidiu usar mais recursos nativos, eliminando a introdução de dependências externas e Polyfills.
Pontos de mudança importantes
conectar
Na versão 2.x, a forma de conexão tornou-se mais funcional:
javascript import { createSolanaRpc } from "@solana/web3.js";
const rpc = createSolanaRpc("");
Quando a função sendAndConfirmTransaction é chamada para enviar uma transação, o sistema inicia automaticamente uma solicitação HTTPS e estabelece uma conexão WSS para assinar o estado da transação, retornando o hash da transação após a confirmação.
par de chaves
Na versão 2.x, as classes Keypair e PublicKey foram substituídas por uma série de funções. Por exemplo, pode-se usar await generateKeyPair() para gerar um par de chaves, em vez do antigo Keypair.generate(). A nova implementação utiliza a Web Crypto API do JavaScript, utilizando a implementação nativa de Ed25519.
enviar transação
A versão 2.x não utiliza mais as classes Transaction e VersionedTransaction. Métodos relacionados ao System Program também precisam ser importados de outros lugares. Por exemplo, o comando transfer agora precisa chamar a função getTransferSolInstruction no @solana-program/system.
A nova versão oferece a forma pipe, comumente utilizada na programação funcional. Aqui está um exemplo de como implementar a função de transferência usando a função pipe:
javascript import { pipe } from "@solana/web3.js";
const transaction = pipe( createTransaction({ version: 0 }), addInstruction(getTransferSolInstruction({ de: remetente, para: destinatário, amount: transferAmount, })), setTransactionFeePayer(sender), );
const signature = await sendAndConfirmTransaction(rpc, transaction, [senderKeypair]);
Suporte para React
É importante notar que o projeto @solana/web3.js também inclui uma biblioteca chamada @solana/react, que oferece alguns React Hooks, integrando funcionalidades como signIn.
Resumo
A versão 2.x do @solana/web3.js demonstra o compromisso da equipe Solana com o desenvolvimento e a melhoria contínua. A nova versão oferece aos desenvolvedores uma maneira mais eficiente, flexível e personalizável de interagir com a rede Solana, prometendo impulsionar a adoção e o desenvolvimento adicional da plataforma.