Lançamento da versão 2.x do Solana Web3.js: a programação funcional redefine a experiência de desenvolvimento

robot
Geração de resumo em curso

Solana Web3.js 2.x: A nova era da programação funcional

A versão 2.x do Solana Web3.js foi lançada em novembro de 2023, trazendo mudanças significativas em relação à versão 1.x. Este artigo irá resumir suas principais melhorias.

Embora a versão 2.x tenha sido lançada recentemente e a taxa de utilização ainda não seja alta, muitos bibliotecas populares ainda não foram migradas, entender essas mudanças ajuda na preparação para futuras atualizações.

Web3 Novos usuários: Agora atualize @solana/web3.js 2.x para habilitar a programação funcional

Comparação de Versões

A versão 1.x é relativamente simples de usar, contendo apenas o pacote @solana/web3.js, que encapsula uma série de operações comuns com base em design orientado a classes. Por exemplo, a classe Connection oferece dezenas de métodos, cobrindo praticamente 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 poucas, toda a base de código é descarregada para o dispositivo do usuário, resultando em tempos de carregamento mais longos.

A versão 2.x adotou uma abordagem diferente. A equipe oficial dividiu o repositório de código original em vários pequenos módulos, como @solana/accounts, @solana/codecs, @solana/rpc, etc. A nova versão abandonou a implementação baseada em classes, adotando mais funções individuais, o que favorece a otimização na construção de código JavaScript. O código não utilizado será removido e não será baixado para o dispositivo do usuário. De acordo com os dados oficiais, o uso da nova versão do DApp geralmente pode alcançar uma otimização de 30% em tamanho, e para aplicações com menos funcionalidades, a proporção de otimização pode ser ainda maior.

Essa mudança impõe requisitos mais altos à qualidade da documentação da equipe Solana. Como fazer com que os desenvolvedores encontrem rapidamente as funcionalidades necessárias se tornou uma questão chave. Atualmente, a semântica dos nomes dos pacotes é boa, permitindo que se compreenda, apenas pelo nome, o seu propósito, o que, de certa forma, reduz a dificuldade de migração para os desenvolvedores.

No entanto, devido ao seu recente lançamento, muitos projetos ainda não migraram. Alguns exemplos e descrições de documentos também não estão suficientemente completos, o que pode causar alguma confusão aos desenvolvedores.

Outra característica importante da versão 2.x é a zero dependência. Isso é crucial para melhorar a segurança, especialmente após os ataques de cadeia de suprimentos nas versões @solana/web3.js 1.95.5 e 1.95.6 no início de dezembro de 2023. A nova versão utiliza mais funcionalidades nativas, eliminando a introdução de dependências externas e Polyfills, reduzindo assim os riscos de segurança.

Alterações principais

forma de conexão

A versão 2.x adotou uma abordagem mais funcional para lidar com conexões. Não é mais utilizada a classe Connection, mas sim configurando o endereço RPC para criar um remetente de solicitações. Por exemplo, ao enviar uma transação, uma solicitação HTTPS é automaticamente iniciada e uma conexão WSS é estabelecida, inscrevendo-se no estado da transação e retornando o hash da transação após a confirmação.

Gestão de Chaves

As operações relacionadas com chaves públicas e privadas também sofreram mudanças significativas. As classes Keypair e PublicKey, comuns na versão 1.x, deixaram de existir, sendo substituídas por uma série de funções. Por exemplo, agora usa-se await generateKeyPair() para gerar pares de chaves, em vez do anterior Keypair.generate().

A nova implementação utiliza a API Web Crypto do JavaScript, fazendo uso da implementação nativa de Ed25519. Isso fez com que algumas operações se tornassem assíncronas, mas para desenvolvedores modernos de JavaScript familiarizados com Promises, isso não é um grande problema.

processamento de transações

Na versão 2.x, as classes Transaction e VersionedTransaction não existem mais. Os métodos relacionados ao System Program também precisam ser importados de outros locais. Por exemplo, o comando de transferência agora requer a chamada da função getTransferSolInstruction no @solana-program/system.

A nova versão oferece a forma pipe, comumente utilizada na programação funcional. As transações não são mais iniciadas através da Connection, mas sim através da geração de funções específicas por um RPC Provider definido. Embora essa abordagem resulte em um ligeiro aumento na quantidade de código, ela proporciona uma maior personalização.

React suporta

É importante notar que o projeto @solana/web3.js também inclui uma biblioteca chamada @solana/react, que oferece alguns Hooks do React, incorporando funcionalidades como signIn.

Conclusão

A publicação da versão 2.x de @solana/web3.js demonstra a determinação da equipe Solana em melhorar continuamente. A nova versão oferece aos desenvolvedores uma forma eficiente, flexível e personalizável de interagir com a rede Solana, com a expectativa de impulsionar o desenvolvimento e a aplicação da plataforma.

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

Ver original
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.
  • Recompensa
  • 3
  • Partilhar
Comentar
0/400
SoliditySlayervip
· 13h atrás
Quanto tps isso pode aumentar?
Ver originalResponder0
GateUser-aa7df71evip
· 13h atrás
solana esta onda vai Até à lua, certo?
Ver originalResponder0
GateUser-e87b21eevip
· 13h atrás
Depois da atualização, o desenvolvimento ficou mais fácil!
Ver originalResponder0
  • Pino
Negocie cripto em qualquer lugar e a qualquer hora
qrCode
Digitalizar para transferir a aplicação Gate
Novidades
Português (Portugal)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)