Se você está de olho no Ether (ETH) em relação a outros jogadores de criptomoedas, você deve dedicar um momento para entender o Ethereum de uma perspectiva mais técnica. Um protocolo de blockchain conhecido por sua caixa de ferramentas, contratos inteligentes e ecossistema alinhado com o código, o Ethereum depende fortemente do ethers.js - uma biblioteca Javascript - para dar à sua abordagem centrada no desenvolvedor a potência necessária.
Embora ethers.js não seja a única biblioteca JavaScript nativa do Ethereum, é a melhor opção para DApps menores. Neste guia, aprofundamos os aspectos do ethers.js, ajudando você a entender esse conceito técnico.
Neste Guia:
Ethers.js e o ciclo de desenvolvimento: BeInCryptoAqui está o GitHubrepositóriopara a biblioteca.
Sabia? Ethers.js não é a única biblioteca JavaScript Ethereum conhecida. Outra proeminente é a Web3.js, fundada pela Ethereum Foundation. Web3.js é conhecida por sua abrangente coleção de documentação e é destinada para DApps mais complexos.
Ecossistema do Ethers.js e os papéis que pode assumir: BeInCryptoAqui está um exemplo rápido do trecho de código usado para buscar o saldo atual de uma conta Ethereum. Vamos ler o código primeiro e entender como o ethers.js facilita a vida:const { ethers } = require(‘ethers’);
// Conecte-se à rede Ethereum
const provider = new ethers.providers.JsonRpcProvider('https://mainnet.infura.io/v3/YOUR_INFURA_API_KEY’);
// Especifique o endereço da conta
const accountAddress = ‘0xABC123…’;
// Buscar e exibir o saldo
provider.getBalance(endereçoDaConta).then((saldo) => {
// Converter o saldo de Wei para Etherconst balanceInEther = ethers.utils.formatEther(balance);console.log(`Saldo: ${balanceInEther} ETH`);
```});
Neste exemplo, você pode ver claramente como o comando — ethers.providers.JsonRpcProvider — invoca um endpoint Infura, e getBalance busca o saldo. Você não precisa lidar diretamente com o JSON RPC do Ethereum ou a Chamada de Procedimento Remoto. Neste caso, você pode pensar no ethers.js como um tradutor que torna o Ethereum mais fácil e familiar para você.
Ainda não tem certeza sobre o significado do ethers.js? Aqui está uma rápida analogia.
Pense no ethers.js como um antigo cartão de biblioteca. Lembra-se de que esses cartões tinham catálogos, permitindo que você encontrasse o livro certo localizando o corredor e depois o número da prateleira? É isso que o ethers.js pretende fazer. Ele simplifica e organiza as enormes capacidades do Ethereum, permitindo que os desenvolvedores encontrem exatamente o que precisam.
[https://twitter.com/wonder*nw/status/1764751034096800009?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1764751034096800009%7Ctwgr%5Ec1f906e08013316a8e26d4dc6736b846d7473e55%7Ctwcon%5Es1*&ref_url=https%3A%2F%2Fbeincrypto.com%2Flearn%2Fethers-js-explained%2F](https://twitter.com/wonder_nw/status/1764751034096800009?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1764751034096800009%7Ctwgr%5Ec1f906e08013316a8e26d4dc6736b846d7473e55%7Ctwcon%5Es1_&ref_url=https%3A%2F%2Fbeincrypto.com%2Flearn%2Fethers-js-explained%2F)
## Todas as versões do Ethers.js explicadasAo longo dos anos, várias versões do Ethers.js surgiram, cada uma introduzindo um novo recurso ou uma correção de bug. Além disso, a numeração segue a semântica padrão, como v1.2.3, onde o primeiro número significa a versão principal e os segundo e terceiro números denotam versões secundárias e de correção. Vamos considerar apenas as atualizações da versão principal por enquanto — mudanças que podem não ser compatíveis com versões anteriores.
- Versão 1.x (Legado): Esta foi a versão inicial, seguida por recursos relacionados à assinatura de transações, gerenciamento de carteira e muito mais.- Versão 2.x (Carteira Ethereum): Focado em utilidades e recursos da carteira, incluindo armazenamento seguro de [chaves privadas](https://beincrypto.com/learn/private-key-crypto/).- Versão 3.x (provedor de Ethers): Introduziu abstrações para se conectar a nós do Ethereum. Diferentes tipos de players foram acomodados, incluindo Infura, WebSockets e outros.- Versão 4.x (contrato de Ethers): As propriedades lideradas por contratos inteligentes foram expandidas, com mais utilidades para codificação e decodificação de dados, filtros de eventos e mais.- Versão 5.x: Oferece uma arquitetura modular, suporte aprimorado para [ENS](https://beincrypto.com/learn/ethereum-name-service-ens/), tratamento abrangente de erros e muito mais. - Versão 6.x: Inclusão de recursos ES6, introdução de BigInt, acessibilidade de sobrecarga e mais.
Arquitetura e componentes do Ethers.js: BeInCrypto[https://harambetoken.ai/?domain=beincrypto&banner=header-banner-3&cpid=1ce31526-203f-4d6a-bf00-af77d6cf6edd](https://harambetoken.ai/?domain=beincrypto&banner=header-banner-3&cpid=1ce31526-203f-4d6a-bf00-af77d6cf6edd)
Você pode encontrar mais detalhes sobre cada versão visualizando Ethers.js’[documentação original](http://ethers.js/).
“Ethers.js brilha com superior interoperabilidade de blockchain, suporte nativo ao TypeScript e ferramentas avançadas de depuração. É uma biblioteca enxuta e eficaz que se integra perfeitamente a estruturas populares como React, Vue, Angular etc.”
Redbelly Intern, Construtor: [X](https://x.com/junior_rbn_dev/status/1765370606868901996)
## Começando com ethers.jsAntes de planejar alavancar o potencial do ethers.js, é necessário saber em que estágio do desenvolvimento de DApp ou contrato inteligente ele é invocado. Aqui está uma rápida explicação para aqueles que precisam saber e entender esses elementos do zero.
"Web3.js é amigável para iniciantes e mais conciso do que ethers.js.
Por outro lado, Ethers.js oferece mais opções e é novo; é um pouco mais complexo do que o Web3.js.
[degenBRo](https://twitter.com/devEmkiddo), desenvolvedor de blockchain e Fundador da Solidity Finance: Como contado à BeInCrypto
Para começar, você primeiro precisa abrir o computador e configurar o ambiente de desenvolvimento. Isso inclui o Node.js e o Ambiente de Desenvolvimento Integrado. Note que o JavaScript geralmente é executado no navegador, mas com o Node.js, o mesmo pode ser executado no computador. É o ambiente de tempo de execução do Node.js que instala bibliotecas Javascript como o ethers.js.
Quanto ao IDE, que um desenvolvedor de software precisa para testar, você pode considerar o VS Code, Sublime Text ou qualquer outra coisa.
[https://twitter.com/junior*rbn_dev/status/1765370597066862749?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1765370597066862749%7Ctwgr%5Ec1f906e08013316a8e26d4dc6736b846d7473e55%7Ctwcon%5Es1*&ref_url=https%3A%2F%2Fbeincrypto.com%2Flearn%2Fethers-js-explained%2F](https://twitter.com/junior_rbn_dev/status/1765370597066862749?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1765370597066862749%7Ctwgr%5Ec1f906e08013316a8e26d4dc6736b846d7473e55%7Ctwcon%5Es1_&ref_url=https%3A%2F%2Fbeincrypto.com%2Flearn%2Fethers-js-explained%2F)
### Instalando suporte ethers.jsO próximo passo é instalar Ethers, a biblioteca que hospeda ethers.js.
npm instalar ethers
Então, você precisa usar Ethers para se conectar ao [Carteira Ethereum](https://beincrypto-com.webpkgcache.com/doc/-/s/beincrypto.com/learn/the-top-15-ethereum-wallets-in-2020/), pois a interação com o blockchain exigirá esta etapa para validar credenciais. Você pode usar a biblioteca Ethers instalada para isso. Aqui está o comando de exemplo:
## /Related[MAIS ARTIGOS](https://beincrypto.com/learn/)

### ETF Ethereum Explicado: O Que É e Como Funciona14 mins 15 de março de 2024 3 dias atrás

### Como ser pago em Bitcoin (BTC): Tudo o que você precisa saber25 mins 15 de março de 2024 2 dias atrás
const { ethers } = require(‘ethers’);
// Connect to the [MetaMask](https://beincrypto.com/learn/guide-to-using-metamask/)carteira
const provedor = new ethers.providers.Web3Provider(window.ethereum);
Uma vez feito, você pode usar o IDE para escrever o código de solidez e criar contratos inteligentes para DApps. Ethers.js será usado para implantar o mesmo. Você pode até testar o DApp ou o contrato localmente, usando ambientes como [Truffle](https://beincrypto.com/learn/what-is-ethereum-truffle/)e Hardhat. Em seguida, você implanta os contratos na rede Ethereum, para a qual é necessário o ethers.js.
const contrato = new ethers.ContractFactory(abi, bytecode, signer);
const deployedContract = await contract.deploy();
Para os não iniciados, Abi, Bytecode, Signer são termos necessários para o desenvolvimento contínuo de contratos inteligentes. Abi ou a interface binária de aplicativo é mais como o rótulo que ajuda a rede a reconhecer seus contratos inteligentes. Bytecode é a versão compilada ou melhor, pronta para a rede do contrato inteligente e o signer é a entidade que gera a assinatura.
### Ethers.js para o front-endDepois que o contrato inteligente é implantado, você precisa criar o front-end ou a interface do usuário do DApp. Para isso, você pode usar Angular ou React. Você pode até mesmo integrar Ethers.js dentro do front-end para garantir que ele possa interagir com contratos inteligentes Ethereum. Aqui está o código de exemplo para o mesmo:
const provider = new ethers.providers.Web3Provider(window.ethereum);
const contrato = new ethers.Contract(endereçoDoContrato, contratoABI, provedor.getSigner());
Depois disso, você precisa testar o DApp em uma testnet, como Rinkeby ou Ropsten. Quando estiver satisfeito, você pode lançar o DApp na mainnet. Observe quantas vezes ao longo do processo você precisa interagir com Ethers ou ethers.js.
## Recursos principaisEthers.js se apresenta como uma biblioteca Ethereum abrangente. Aqui estão algumas das ofertas exclusivas que podem facilitar a vida dos desenvolvedores:
### FornecedoresOs provedores do Ethers.js atuam como pontes entre a rede Ethereum e o DApp em que você está trabalhando. Isso envolve simplificar a consulta de dados da blockchain e também ajudar na transmissão de transações. Infura é um dos provedores que o Ethers.js utiliza.
Aqui está o código de exemplo para o mesmo:
const { ethers } = require('ethers');
// Conectar usando Infura
const provider = new ethers.providers.JsonRpcProvider('[https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID’](https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID’));
// Verifique o número do bloco atual
provider.getBlockNumber().then((blockNumber) => {
console.log(“Número do bloco atual:”, blockNumber);
### CarteirasEthers.js permite que você gerencie carteiras, permitindo que você crie novas contas, importe contas existentes, gerencie com segurança chaves privadas para assinar transações e faça mais.
### Contratos[https://harambetoken.ai/?domain=beincrypto&banner=header-banner-3&cpid=1ce31526-203f-4d6a-bf00-af77d6cf6edd](https://harambetoken.ai/?domain=beincrypto&banner=header-banner-3&cpid=1ce31526-203f-4d6a-bf00-af77d6cf6edd)
Este componente da existência do Ethers.js suporta a instanciação de objetos. Isso torna mais fácil chamar funções de contrato específicas, mais parecido com métodos nativos do Javascript.

Ethers.js e interação com contratos inteligentes: BeInCrypto### Integração ENSO Ethers.js pode resolver nomes ENS para seus endereços Ethereum e vice-versa. Essa funcionalidade reduz o risco de erros.
Aqui está um trecho de código de exemplo para isso:
const { ethers } = require('ethers');
const provedor = new ethers.providers.JsonRpcProvider('[https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID’](https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID’));
const ensName = ‘[alice](https://beincrypto.com/learn/alice-token/).eth’;
provider.resolveName(ensName).then((address) => {
console.log(${ensName} é resolvido para ${address});
Além das características mencionadas, o Ethers.js também se orgulha dos seguintes aspectos ou características, ajudando os desenvolvedores com acesso direto específico ao Ethereum:
- Signatários- Utilidades- Ouvintes de eventos e filtros (destinados a ativar respostas em tempo real às ações da blockchain)- Transações- Suporte a várias chamadas- Suporte ao TypeScript (destinado a melhorar a confiabilidade do código e a experiência geral do desenvolvedor)Alguns benefícios de usar Ethers.js:
[https://twitter.com/junior*rbn_dev/status/1765370617937736000?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1765370617937736000%7Ctwgr%5Ec1f906e08013316a8e26d4dc6736b846d7473e55%7Ctwcon%5Es1*&ref_url=https%3A%2F%2Fbeincrypto.com%2Flearn%2Fethers-js-explained%2F](https://twitter.com/junior_rbn_dev/status/1765370617937736000?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1765370617937736000%7Ctwgr%5Ec1f906e08013316a8e26d4dc6736b846d7473e55%7Ctwcon%5Es1_&ref_url=https%3A%2F%2Fbeincrypto.com%2Flearn%2Fethers-js-explained%2F)
## Como publicações cripto podem aproveitar o Ethers.jsPublicações de mídia como BeInCrypto podem aproveitar o Ethers.js para criar ferramentas avançadas e úteis da web3 do zero. Dessa forma, torna-se possível usar recursos alimentados por blockchain ou, melhor, Ethereum para aprimorar a usabilidade. Aqui estão as opções que alguém pode considerar:
### Feeds de dadosOs recursos do Ethers.js podem ser usados para integrar feeds de dados cripto em tempo real, como estatísticas de rede, [taxas de gás](https://beincrypto.com/learn/ethereum-gas-fees-lowest/), e mais, para manter os artigos e recursos sempre atualizados. Aqui está um código de exemplo para buscar o número do bloco mais recente, digamos para o Bitcoin, para rastrear o halving em tempo real.
const { ethers } = require(‘ethers’);
const provider = new ethers.providers.JsonRpcProvider(‘[https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID’](https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID’));
fornecedor.getBlockNumber().then((blockNumber) => {
console.log(“Número do bloco atual:”, blockNumber);// Integre esses dados à plataforma de publicação para um feed de dados em tempo real
### Conteúdo interativoAs publicações podem criar pedaços de conteúdo interativo, permitindo que os usuários interajam diretamente com contratos inteligentes, participem de enquetes ou até joguem pequenos jogos, se necessário.
Aqui está um trecho de código de exemplo para recuperar uma saudação específica de um marco de um contrato inteligente:
const { ethers } = require('ethers');
const provider = new ethers.providers.Web3Provider(window.ethereum);
const contractAddress = ‘0x…’;
const contractABI = [
“função getGreeting() visualização retorna (string)”
const contrato = new ethers.Contract(contractAddress, contractABI, provedor);
função assíncrona displayGreeting() {
const saudação = await contrato.getGreeting();document.getElementById(‘saudação’).innerText = saudação;
Abrir conta na KuCoin & receber um bônus garantido de até 700 USDT.
- Comece sua jornada de negociação de criptomoedas com a KuCoin e obtenha uma vantagem inicial!- Negocie com confiança na KuCoin! Nossa plataforma prioriza sua segurança, oferecendo proteção de alto nível para seus ativos digitais.- Explore o vasto mundo das criptomoedas com KuCoin
Um exemplo do mundo real de como o Ethers.js é implantado:
[https://twitter.com/ronak*pal1/status/1767071343345095092?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1767071343345095092%7Ctwgr%5Ec1f906e08013316a8e26d4dc6736b846d7473e55%7Ctwcon%5Es1*&ref_url=https%3A%2F%2Fbeincrypto.com%2Flearn%2Fethers-js-explained%2F](https://twitter.com/ronak_pal1/status/1767071343345095092?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1767071343345095092%7Ctwgr%5Ec1f906e08013316a8e26d4dc6736b846d7473e55%7Ctwcon%5Es1_&ref_url=https%3A%2F%2Fbeincrypto.com%2Flearn%2Fethers-js-explained%2F)
### Publicação descentralizadaAs publicações de mídia também podem considerar a publicação descentralizada, onde um fragmento de um artigo é publicado na rede blockchain. Isso pode ajudar na resistência à censura e até na integridade do conteúdo.
Aqui está um código de amostra onde o hash do artigo é armazenado online como prova de publicação:
const { ethers } = require(‘ethers’);
const carteira = new ethers.Wallet(‘YOUR_PRIVATE_KEY’, provedor);
const contentHash = ethers.utils.id("Conteúdo do artigo aqui");
const tx = await carteira.sendTransaction({
para: '0xSomeStorageContractAddress', dados: contentHash // Supondo que o contrato aceite e armazene esses dados
console.log('Hash da transação (prova de publicação):', tx.hash);
Estes são apenas alguns casos de uso para publicações de mídia. Mas há outros setores que podem aproveitar o poder do ethers.js. Estes incluem:
- Desenvolvedores de blockchain (esperados)- Analistas financeiros que trabalham com [DeFi](https://beincrypto.com/learn/ethereum-decentralized-finance-revolution/)métricas- Desenvolvedores de jogos- Criadores de conteúdo- Gerentes de cadeia de suprimentosE mais.
## Aplicações do mundo real do Ethers.jsAlém de ser útil em [DeFi](https://beincrypto.com/learn/decentralized-finance-and-use-cases/), projetos NFT e de jogos, existem alguns DApps existentes que suportam o uso do Ethers.js. Estes incluem o seguinte:
- Uniswap: O Ether.js interage com os contratos inteligentes inerentes da Uniswap para executar negociações, adicionar liquidez e até mesmo consultar estatísticas de pool. Neste caso, os desenvolvedores de DApps planejam construir ferramentas que interajam com a Uniswap, como bots de negociação, ferramentas de gestão de portfólio e muito mais.- [Aave](https://beincrypto.com/learn/what-is-aave/): Os desenvolvedores de DApp e outras partes interessadas podem aproveitar as funcionalidades do Ether.js para interagir com contratos inteligentes específicos da Aave. Dessa forma, eles podem preparar a interface para empréstimo de ativos, depósito de garantias e muito mais.Desmascarando alguns mitos sobre o Ether.js:
[https://twitter.com/imashuttoshh/status/1765558806291894739?ref*src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1765558806291894739%7Ctwgr%5Ec1f906e08013316a8e26d4dc6736b846d7473e55%7Ctwcon%5Es1*&ref_url=https%3A%2F%2Fbeincrypto.com%2Flearn%2Fethers-js-explained%2F](https://twitter.com/imashuttoshh/status/1765558806291894739?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1765558806291894739%7Ctwgr%5Ec1f906e08013316a8e26d4dc6736b846d7473e55%7Ctwcon%5Es1_&ref_url=https%3A%2F%2Fbeincrypto.com%2Flearn%2Fethers-js-explained%2F)
## Considerações de segurançaUsar Ethers.js vem com um conjunto bastante extenso de[segurança](https://beincrypto.com/learn/top10-must-have-cryptocurrency-security-tips/)considerações. Aqui estão algumas a seguir:
- É aconselhável não codificar em duro as chaves privadas dentro do código-fonte da sua aplicação.- Toda interação de contrato inteligente deve ser precedida por testes e auditorias extensas dos contratos.- Sempre que interagir com contratos inteligentes, use padrões seguros como “call” para tarefas somente leitura.- Para otimizar o uso do ethers.js, você pode considerar o agrupamento de solicitações. Aqui é possível agrupar, por exemplo, solicitações somente para leitura para minimizar o número de chamadas de rede. Não é preciso dizer que essas técnicas de otimização podem tornar o aplicativo altamente escalável e eficiente em termos de custos.Aqui está um exemplo de como funciona:
// Pseudocódigo para agrupar chamadas de contrato com Ethers.js (exemplo conceitual)
const contrato = new ethers.Contract(endereço, abi, provedor);
const [valor1, valor2, valor3] = await Promise.all([
contract.viewFunction1(),contract.viewFunction2(),contract.viewFunction3()
## Ethers.js: uma ferramenta versátilPatrocinado
[https://harambetoken.ai/?domain=beincrypto&banner=header-banner-3&cpid=1ce31526-203f-4d6a-bf00-af77d6cf6edd](https://harambetoken.ai/?domain=beincrypto&banner=header-banner-3&cpid=1ce31526-203f-4d6a-bf00-af77d6cf6edd)
Conforme demonstrado neste guia, o Ethers.js é uma ferramenta versátil. Embora tenhamos dado uma olhada rápida em suas capacidades, a melhor maneira de entender completamente o Ethers.js é aprofundar-se no mundo dos contratos inteligentes, JavaScript, IDEs, DApps e muito mais. Além disso, juntar-se às comunidades Ethereum e Ethers também pode ser útil.
## Perguntas frequentesComo os desenvolvedores podem usar eventos Ethers.js?
Quais são as principais utilidades oferecidas pelo Ethers.js?
Qual é a conexão entre Ethers.js e Web3.js?
### Aviso Legal:- Este artigo é reproduzido a partir de [[beincrypto](https://beincrypto.com/learn/ethers-js-explained/)], Todos os direitos autorais pertencem ao autor original [[Ananda Banerjee](https://beincrypto.com/author/ananda-banerjee/)]. Se houver objeções a esta reimpressão, por favor entre em contato com o [Gate Learn](https://www.Gate.com/questionnaire/3967)equipe, e eles lidarão com isso prontamente.- Responsabilidade de Isenção: As opiniões expressas neste artigo são exclusivamente do autor e não constituem qualquer conselho de investimento.- As traduções do artigo para outros idiomas são feitas pela equipe Gate Learn. Salvo indicação em contrário, copiar, distribuir ou plagiar os artigos traduzidos é proibido.





