Lançamento da versão 2.x do Solana Web3.js, otimização do tamanho do código Gota 30%

robot
Geração do resumo em andamento

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.

Web3 Novato Série: Agora atualize @solana/web3.js 2.x para ativar a programação funcional

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.

Web3 Novato: Agora atualize @solana/web3.js 2.x para iniciar a programação funcional

Ver original
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.
  • Recompensa
  • 5
  • Compartilhar
Comentário
0/400
rekt_but_resilientvip
· 07-11 16:59
Finalmente uma atualização! O desenvolvimento foi muito doloroso.
Ver originalResponder0
ThatsNotARugPullvip
· 07-08 18:57
Finalmente consegui emagrecer.
Ver originalResponder0
CompoundPersonalityvip
· 07-08 18:57
Ufa, finalmente não preciso codificar tanto código.
Ver originalResponder0
BtcDailyResearchervip
· 07-08 18:45
Confiável, é isso mesmo, modular.
Ver originalResponder0
gas_fee_traumavip
· 07-08 18:30
A Solana ficou ainda mais forte.
Ver originalResponder0
  • Marcar
Faça trade de criptomoedas em qualquer lugar e a qualquer hora
qrCode
Escaneie o código para baixar o app da Gate
Comunidade
Português (Brasil)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)