Atualmente, os desenvolvedores de criptomoedas podem escolher entre várias blockchains programáveis para construir. E, embora você possa ouvir o termo “matadores de Ethereum” sendo usado com bastante frequência, o primeiro a se mover continua sendo o rei. Como tal, a maioria dos desenvolvedores de blockchain ainda se concentra na Ethereum. Além disso, como outras cadeias programáveis tendem a seguir o exemplo da Ethereum, a maioria delas é compatível com EVM. Assim, as mesmas bibliotecas JavaScript podem ser usadas para implantar dApps (aplicativos descentralizados) em várias blockchains. Com isso em mente, você deve dar uma olhada na comparação Web3.js vs Ethers.js.
Aqui, você terá a chance de aprender o que são Web3.js e Ethers.js. Você também aprenderá sobre módulos JavaScript. Além disso, darei uma rápida visão geral dos módulos de cada uma das duas bibliotecas JavaScript ETH. No entanto, o foco deste artigo é a comparação Web3.js vs Ethers.js. Ele irá ajudá-lo a estabelecer uma imagem clara dos benefícios e desvantagens de cada biblioteca. Além disso, também deve deixar as coisas mais claras sobre por que a maioria da indústria de criptomoedas está se movendo para a mais jovem das duas bibliotecas.
O que é Web3.js?
Como mencionado acima, Web3.js é uma biblioteca de código aberto ou uma coleção de bibliotecas JavaScript (JS). Se você não conseguir responder “o que é JavaScript?”, certifique-se de ler nosso guia sobre esta conhecida linguagem de programação. Também mencionei na introdução que o Web3.js serve para projetos baseados em Ethereum. Como tal, permite que os desenvolvedores interajam com a blockchain Ethereum ao criar dApps. Além disso, vale ressaltar que a biblioteca Web3.js foi construída pela Ethereum Foundation. Assim, tem uma comunidade bastante grande por trás, o que geralmente é um valor agregado.
Além disso, Web3.js essencialmente incorpora funções para comunicação com nós Ethereum. Essa comunicação é realizada por meio do protocolo JavaScript Object Notation — Remote Procedure Call (JSON-RPC). Caso esta seja a primeira vez que você está ouvindo sobre Web3, certifique-se de pular para o meu guia migração para Web3. Além disso, antes de fazer nossa comparação Web3.js vs Ethers.js, precisamos garantir que todos saibam o que são módulos JS. Por enquanto, observe que Web3.js e Ethers.js contêm módulos.
Módulos JS explicados
Você pode pensar nos módulos JavaScript como capítulos ou seções de livros. Além disso, esse princípio de compartimentalização é algo que todos os programadores experientes aplicam. Como tal, você pode ver muitos programas e bibliotecas de programação divididos em módulos. E ambas as bibliotecas ETH JS aqui abordadas seguem essa prática.
Além disso, os módulos são basicamente clusters de código. Assim, quando a linguagem de programação JavaScript está em questão, os módulos representam um conjunto de combinações significativas de palavras e caracteres especiais. Além disso, lembre-se de que cada módulo normalmente cobre uma funcionalidade específica dentro de um programa maior. No entanto, voltando à analogia do capítulo do livro, diferentemente das seções do livro, bons módulos de programação podem ser removidos, adicionados ou embaralhados conforme necessário. Além disso, todas essas alterações não afetam o sistema como um todo. Como tal, eles são essencialmente altamente autocontidos com funcionalidade específica. Além disso, dividir programas e bibliotecas em módulos também torna a manutenção e a reutilização muito mais simples. No entanto, se você estiver familiarizado com qualquer outra linguagem de codificação (por exemplo: Java ou Python), você pode pensar em classes. Elas são uma analogia muito próxima aos módulos.
Módulos Web3.js
Agora que você sabe o que são módulos JS, vamos dar uma rápida visão geral dos módulos Web.js:
- Web3.eth: O módulo Eth existe para interagir com a rede Ethereum. Ele oferece vários submódulos, incluindo Web3.eth.subscribe, Web3.eth.contract, Web3.eth.accounts, Web3.eth.personal e muito mais.
- Web3.*.net: O módulo Net existe para interagir com as propriedades da rede. Claro, pode ser usado como um submódulo para interagir com aEthereum (Web3.eth.net).
- Web3.bzz: O módulo Bzz existe para interagir com a rede swarm.
- Web3.shh: O módulo Shh existe para interagir com o protocolo whisper.
- Web3.utils: Este módulo fornece funções utilitárias para dApps Ethereum e outros pacotes web3.js.
Como na maioria das linguagens de programação, plataformas e bibliotecas, é melhor usar sua respectiva documentação para obter mais detalhes. Você pode encontrar o link para a documentação do Web3.js na seção “Web3.js vs Ethers.js — Documentação” mais adiante.
O que é Ethers.js?
Ethers.js também é uma biblioteca JavaScript Ethereum que permite que os desenvolvedores se comuniquem e interajam com a rede Ethereum. Além disso, é uma biblioteca de código aberto com a licença MIT. Então, qual é o objetivo do Ethers.js se ele serve ao mesmo propósito que o Web3.js? Bem, tenha em mente que ter opções normalmente é uma coisa boa. Como tal, o Ethers.js oferece uma alternativa impressionante (em muitos aspectos superior) ao Web3.js. No entanto, assim como com qualquer produto por aí, Ethers.js e Web3.js têm suas próprias desvantagens e benefícios. Mais sobre isso na seção “Web3.js vs Ethers.js — Uma comparação” mais abaixo.
Módulos Ethers.js
Assim como o Web3.js, o Ethers.js também possui vários módulos. Para ser exato, existem quatro módulos nesta biblioteca JS: Ethers.contract, Ethers.provider, Ethers.utils e Ethers.wallets. Esses módulos são o núcleo da API (Application Programming Interface) do Ethers.js. Além disso, vamos dar uma rápida visão geral de todos os quatro módulos Ethers.js:
- Ethers.Provider: Este módulo permite que você estabeleça uma conexão com a blockchain Ethereum. Você o usa para emitir consultas e enviar transações assinadas. Por meio deste módulo, os usuários de Ethers.js podem alterar o estado do blockchain.
- Ethers.Contract: Você usa este módulo para implantar e interagir com contratos inteligentes. Embora a implantação de contratos inteligentes seja um dos principais objetivos do Ethers.Contract, ele tem mais a oferecer. Como tal, ele também inclui funções que permitem aos desenvolvedores 'ouvir' eventos de contrato inteligente (sincronizar e indexar eventos de contrato inteligente). Além disso, você também usa este módulo para obter informações sobre contratos inteligentes e chamar funções específicas fornecidas por esses contratos.
- Ethers.Utils: Você usará este módulo quando quiser formatar dados e processar entradas do usuário. Como tal, o Ethers.utils torna a construção de dApps muito mais fácil.
- Ethers.Wallet: Como você pode supor com base no '.wallet', o Ethers.Wallet fornece uma maneira de se conectar a qualquer endereço Ethereum existente (uma carteira Ethereum). Além desse importante recurso, este módulo também permite criar novas carteiras e assinar transações.
Web3.js vs Ethers.js — Bibliotecas ETH JS lado a lado
Até agora, cobrimos o básico de ambas as bibliotecas JS ETH, incluindo seus módulos. Como tal, você deve ter uma compreensão adequada do que são Ethers.js e Web3.js. Além disso, agora você sabe para que eles são usados. Como tal, você entende que eles são muito importantes para desenvolver dApps na blockchain Ethereum ou outras cadeias compatíveis com EVM.
Na subseção a seguir, abordarei os principais aspectos de ambas as bibliotecas JS. Como resultado, você poderá usar esta comparação Web3.js vs Ethers.js para determinar qual das duas opções usar. No entanto, observe que você não precisa pensar demais nisso. Garanto que você pode trabalhar com sucesso com qualquer uma das duas bibliotecas JS ETH. Com isso dito, vamos fazer a comparação Web3.js vs Ethers.js.
Web3.js vs Ethers.js — A Comparação
Nas subseções a seguir, compararemos Web3.js e Ethers.js nos seguintes aspectos:
- A equipe por trás disso
- Popularidade
- Transferências
- Atualizações
- Testando
- Desempenho Web
- Documentação
- Licença
Web3.js vs Ethers.js — A equipe por trás disso
- Web3.js: É um projeto da Ethereum Foundation (uma organização sem fins lucrativos). Com uma organização inteira por trás de um projeto, há mais desenvolvedores oferecendo suporte. Infelizmente, isso também significa que não há uma responsabilidade clara sobre quem deve garantir que tudo esteja em ordem.
- Ethers.js: Foi desenvolvido e é mantido por Richard “RicMoo” Moore. Isso claramente coloca total responsabilidade em RicMoo.
- Como você pode ver, cada um dos tipos de suporte tem seus prós e contras. Que tipo de apoio você prefere?
Web3.js vs Ethers.js — Popularidade
Aqui, você precisa ter em mente que a Web3.js foi criada primeiro. Como tal, faz sentido que ela ganhe o título geral de casos de uso. Ao se apoiar nos dados do GitHub, a Web3.js tem mais estrelas e mais repositórios. Por outro lado, quando se trata da velocidade de crescimento da popularidade, a Ethers.js vem em primeiro lugar.
Web3.js vs Ethers.js — Downloads
Outra maneira de comparar essas duas bibliotecas JS é observar o download. No entanto, o número total de downloads não mostra uma imagem clara. Como a Web3.js está em cena visivelmente há mais tempo, ele tem uma vantagem injusta. Felizmente, podemos nos concentrar em downloads diários. De acordo com o npm-stat.com, a Ethers.js é um vencedor nesse aspecto.
Web3.js vs Ethers.js — Mantendo-se Atualizado
É importante produzir com uma biblioteca que é atualizada regularmente e adequadamente. Dessa forma, garante-se que a equipe de suporte remova todos os bugs conhecidos e adicione novos recursos em tempo hábil. De acordo com as revisões disponíveis e o feedback dos desenvolvedores, ambas as bibliotecas ETH JS são atualizadas com relativa regularidade.
Web3.js vs Ethers.js — Testando
Quando se trata de testes, o Ethers.js pode ser a melhor escolha. Possui testes pré-escritos e documentação clara de seus testes. No entanto, você deve ter em mente que esta conclusão é baseada em versões anteriores do Ethers.js. Com a nova versão, as coisas podem ser diferentes.
Web3.js vs Ethers.js — Performance Web
A Ethers.js carrega um pouco mais rápido graças ao seu tamanho notavelmente menor, o que pode oferecer melhor desempenho. No entanto, o fator de tamanho desempenha um papel notável apenas quando se trata de pequenos dApps. Além disso, é importante ressaltar que não há dados de teste de velocidade suficientes para exatamente os mesmos dApps usando Web3.js e Ethers.js. Assim, qualquer vantagem de desempenho continua a ser confirmada.
Web3.js vs Ethers.js — Documentação
De acordo com minha experiência e comentários de desenvolvedores, podemos dizer que nenhuma das duas bibliotecas ETH JavaScript possui documentação perfeita. No entanto, ambas fornecem detalhes mais do que suficientes para começar. Então, cabe a você cobrir os principais aspectos de seus interesses. Esta também é a maneira que você vai determinar, qual delas melhor se adapta ao seu projeto. Além disso, aqui estão os links para as versões mais recentes (no momento da redação) da documentação de cada biblioteca:
Além disso, você também deve ter em mente que a própria JavaScript está sempre evoluindo, portanto, suas bibliotecas também devem ser atualizadas. As coisas evoluem ainda mais rápido no mundo blockchain. Como tal, as equipes lançam atualizações e visões mais recentes de ambas as bibliotecas ETH JavaScript com bastante frequência.
Web3.js vs Ethers.js — Licença
- Web3.js: Tem uma licença LGLv3.
- Ethers.js: Tem uma licença MIT. Se o seu projeto possui requisitos específicos em relação à licença, você precisa ficar atento a isso. Em alguns casos, é inteligente contratar um especialista em licenças. Um profissional o ajudará a determinar qual das duas bibliotecas JavaScript ETH é mais adequada para você.
Web3.js vs Ethers.js — Guia Completo — Resumo
Cobrimos muitos assuntos e conseguimos encerrar nossa comparação Web3.js vs Ethers.js. Até agora você sabe que ambas as bibliotecas JS ETH oferecem vários módulos que permitem interagir com a cadeia Ethereum. Além disso, você aprendeu que cada biblioteca tem suas vantagens e desvantagens. No entanto, a indústria de blockchain como um todo está migrando lentamente para uma alternativa mais jovem – Ethers.js.
Obrigado pelo seu apoio!👐🏼
Esta é uma tradução de Bernardo Perelló, o artigo original em inglês de Alexandr Kumancev pode ser lido aqui.
Latest comments (1)
Excelente artigo!!! 👏