Se estiver de olho no Éter (ETH) em relação a outros jogadores de criptomoedas, deve dedicar um momento a compreender o Ethereum de uma perspetiva mais técnica. Um protocolo blockchain conhecido pelo seu conjunto de ferramentas, contratos inteligentes e ecossistema alinhado com o código, o Ethereum depende muito do ethers.js - uma biblioteca Javascript - para conferir a potência necessária à sua abordagem centrada no desenvolvedor.
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-o a compreender este conceito técnico.
Neste Guia:
Ethers.js e o ciclo de desenvolvimento: BeInCryptoAqui está o GitHubrepositóriopara a biblioteca.
Sabia que? Ethers.js não é a única biblioteca JavaScript Ethereum conhecida. Outra proeminente é a Web3.js, fundada pela Ethereum Foundation. Web3.js é conhecida pela sua vasta coleção de documentação e destina-se a DApps mais complexas.
Ecossistema 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 perceber como o ethers.js facilita a vida:const { ethers } = require('ethers');
// Conectar à rede Ethereum
const provider = new ethers.providers.JsonRpcProvider(‘https://mainnet.infura.io/v3/YOUR_INFURA_API_KEY’);
// Especificar 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 Éter const balanceInEther = ethers.utils.formatEther(balance); console.log(`Saldo: ${balanceInEther} ETH`);
```});
Neste exemplo, pode ver claramente como o comando — ethers.providers.JsonRpcProvider — invoca um endpoint Infura e getBalance busca o saldo. Não é necessário lidar diretamente com o JSON RPC do Ethereum ou a Chamada de Procedimento Remoto. Neste caso, pode pensar no ethers.js como um tradutor que torna o Ethereum mais fácil e familiar para si.
Ainda não tem a 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. 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, surgiram várias versões do Ethers.js, 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 o principal e os segundo e terceiro números denotam as versões secundárias e de correção. Por agora, apenas consideraremos as atualizações da versão principal — mudanças que podem não ser compatíveis com versões anteriores.
- Versão 1.x (Legado): Este foi o lançamento inicial, seguido por funcionalidades relacionadas com a assinatura de transações, gestão de carteiras e muito mais.- Versão 2.x (Carteira Ethers): Focado em utilitários e funcionalidades da carteira, incluindo armazenamento seguro de [chaves privadas](https://beincrypto.com/learn/private-key-crypto/).- Versão 3.x (provedor de Éter): Introduzidas abstrações para conexão a nós de Ethereum. Diferentes tipos de players foram acomodados, incluindo Infura, WebSockets e mais.- Versão 4.x (contrato Ethers): As propriedades lideradas por contratos inteligentes foram expandidas, com mais utilidades para codificação e decodificação de dados, filtros de eventos e muito 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 funcionalidades 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)
Pode encontrar mais detalhes sobre cada versão ao visualizar Ethers.js’[documentação original](http://ethers.js/).
O Ethers.js brilha com uma interoperabilidade superior de blockchain, suporte nativo ao TypeScript e ferramentas avançadas de depuração. É uma biblioteca enxuta e ágil que se integra perfeitamente a frameworks populares como React, Vue, Angular, etc.
Redbelly Intern, Builder: [X](https://x.com/junior_rbn_dev/status/1765370606868901996)
## Começar com ethers.jsAntes de planear alavancar o potencial do ethers.js, é necessário saber em que fase do desenvolvimento do DApp ou contrato inteligente é invocado. Aqui está uma rápida análise para aqueles que precisam de conhecer e entender estes elementos desde o início.
Web3.js é amigável para iniciantes e mais conciso do que ethers.js.
Ethers.js, por outro lado, 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 ao BeInCrypto
Para começar, primeiro precisa de abrir o computador e configurar o ambiente de desenvolvimento. Isso inclui o Node.js e o Ambiente de Desenvolvimento Integrado. Note que o JavaScript normalmente é executado no navegador, mas com o Node.js, o mesmo pode ser executado no computador. É o ambiente de execução Node.js que instala bibliotecas Javascript como o ethers.js.
Quanto ao IDE, que um desenvolvedor de software precisa testar, 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 Éter, a biblioteca que hospeda ethers.js.
npm instalar ethers
Então, você precisa usar Éteres 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 a blockchain exigirá este passo para validar as credenciais. Você pode usar a biblioteca Ethers instalada para isso. Aqui está o comando de exemplo:
## /Relacionado[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 Receber Pagamentos em Bitcoin (BTC): Tudo o Que Precisa Saber25 mins 15 de março de 2024 2 dias atrás
const { ethers } = require('ethers');
// Conectar ao [MetaMask](https://beincrypto.com/learn/guide-to-using-metamask/)carteira
const provider = 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ê também pode 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 = nova Fábrica de Contrato(abi, bytecode, signatário);
const deployedContract = await contract.deploy();
Para o não iniciado, Abi, Bytecode, Signer são termos necessários para um desenvolvimento contínuo de contratos inteligentes. Abi ou a interface binária de aplicação é mais como o rótulo que ajuda a rede a reconhecer os 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.
### Éter.js para o front-endUma vez que o contrato inteligente é implantado, você precisa construir o front-end ou a interface do usuário do DApp. Para isso, você pode usar Angular ou React. Você pode até integrar o Ethers.js no 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 = novo ethers.Contract(endereçoContrato, contratoABI, provedor.getSigner());
Depois disso, você precisa testar o DApp em uma testnet, como Rinkeby ou Ropsten. Uma vez satisfeito, você pode lançar o DApp na mainnet. Observe quantas vezes ao longo do processo você precisa interagir com Éteres ou ethers.js.
## Funcionalidades principaisEthers.js surge como uma biblioteca Ethereum abrangente. Aqui estão algumas das ofertas exclusivas que podem facilitar a vida dos desenvolvedores:
### FornecedoresOs provedores do Ethers.js funcionam como pontes entre a rede Ethereum e o DApp em que está a trabalhar. Isso envolve simplificar a consulta de dados da blockchain e também ajuda a transmitir transações. A 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’));
// Verificar o número do bloco atual
provider.getBlockNumber().then((blockNumber) => {
console.log("Número de bloco atual:", blockNumber);
### CarteirasEthers.js permite-lhe gerir carteiras, permitindo-lhe criar novas contas, importar contas existentes, gerir de forma segura chaves privadas para assinar transações e muito 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 Javascript nativos.

Ethers.js e interação com contratos inteligentes: BeInCrypto### Integração ENSO Ethers.js pode resolver nomes ENS para os seus endereços Ethereum e vice-versa. Esta funcionalidade reduz o risco de erros.
Aqui está um trecho de código de exemplo para isto:
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’));
const ensName = ‘[alice](https://beincrypto.com/learn/alice-token/).eth’;
provider.resolveName(ensName).then((address) => {
console.log(${ensName} é resolvido para ${address});
Para além das funcionalidades mencionadas, o Ethers.js também apresenta os seguintes aspetos ou funcionalidades, ajudando os programadores com acesso direto específico ao Ethereum:
- Assinantes- Utilidades- Ouvintes de eventos e filtros (destinados a ativar respostas em tempo real às ações de blockchain)- Transações- Suporte a várias chamadas- Suporte para TypeScript (destinado a melhorar a confiabilidade do código e a experiência geral do desenvolvedor)Algumas vantagens 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 de criptomoedas podem aproveitar o Ethers.jsPublicações de mídia como a BeInCrypto podem aproveitar o Ethers.js para criar ferramentas web3 avançadas e úteis a partir do zero. Dessa forma, torna-se possível usar recursos alimentados por blockchain ou, melhor, Ethereum para melhorar a usabilidade. Aqui estão as opções que se pode considerar:
### Feeds de dadosAs funcionalidades do Ethers.js podem ser usadas 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 atuais. Aqui está um código de exemplo para obter o número do bloco mais recente, digamos para 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’));
provider.getBlockNumber().then((blockNumber) => {
console.log(“Número atual do bloco:”, blockNumber);// Integre esses dados na plataforma de publicação para um feed de dados em tempo real
### Conteúdo interativoAs publicações podem criar pequenos conteúdos interativos, permitindo que os utilizadores interajam diretamente com contratos inteligentes, participem em sondagens ou até mesmo joguem pequenos jogos, se necessário.
Aqui está um trecho de código de exemplo para recuperar uma saudação específica do 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, provider);
função async displayGreeting() {
const saudação = await contract.getGreeting();document.getElementById(‘saudação’).innerText = saudação;
Abrir conta na KuCoin & obter um bónus garantido até 700 USDT.
- Inicie a sua jornada de negociação de criptomoedas com KuCoin e tenha uma vantagem inicial!- Negocie com confiança na KuCoin! Nossa plataforma prioriza sua segurança, oferecendo proteção de primeira linha para seus ativos digitais.- Explore o vasto mundo das criptomoedas com a 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 da mídia também podem considerar a publicação descentralizada, onde um resquício de um artigo é publicado na rede blockchain. Isso pode ajudar na resistência à censura e até mesmo na integridade do conteúdo.
Aqui está um código de exemplo onde o hash do artigo é armazenado on-line 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: ‘0xEndereçoDoContratoDeArmazenamento’, dados: hashDeConteúdo // Assumindo que o contrato aceita e armazena esses dados
console.log("Hash da transação (prova de publicação):", tx.hash);
Estes são apenas alguns exemplos de casos de uso para publicações de mídia. Mas existem outros setores que podem aproveitar o poder do ethers.js. Estes incluem:
- Desenvolvedores de blockchain (esperado)- Analistas financeiros que trabalham com [DeFi](https://beincrypto.com/learn/ethereum-decentralized-finance-revolution/)métricas- Desenvolvedores de jogos- Criadores de conteúdo- Gestores de cadeia de abastecimentoE mais.
## Aplicações do mundo real de 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 de Ethers.js. Estes incluem os seguintes:
- 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 DApp 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 Éter.js para interagir com contratos inteligentes específicos da Aave. Desta forma, podem preparar a interface para pedir emprestado ativos, depositar garantias e fazer mais.Desmascarando alguns mitos sobre o Ethers.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 chaves privadas dentro do código-fonte da sua aplicação.- Cada interação com contrato inteligente deve ser precedida por testes e auditorias extensivas dos contratos.- Sempre que interagir com contratos inteligentes, utilize padrões seguros como "chamada" para tarefas de leitura apenas.- Para otimizar o uso do ethers.js, você pode considerar a realização de requisições em lote. É aqui que você pode agrupar, por exemplo, requisições somente leitura para minimizar o número de chamadas de rede. Não é preciso dizer que essas técnicas de otimização podem tornar a aplicação altamente escalável e econômica.Aqui está um exemplo de como funciona:
// Pseudocódigo para agrupar chamadas de contrato com Ethers.js (exemplo conceptual)
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)
Como demonstrado neste guia, o Ethers.js é uma ferramenta versátil. Embora tenhamos dado uma rápida olhada 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 podem os desenvolvedores usar eventos Ethers.js?
Quais são as principais utilidades oferecidas pelo Ethers.js?
Qual é a ligaçã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 de autor 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)equipa, e eles tratarão disso prontamente.- Isenção de Responsabilidade: 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, é proibido copiar, distribuir ou plagiar os artigos traduzidos.





