
Aprenda a criar um app simples de rastreamento de gas usando a API de gas do MetaMask, Next.js e ShadcnUI.

'Gas' refere-se a uma unidade que mede a quantidade de esforço computacional necessário para executar operações, como realizar transações ou executar smart contracts. É semelhante ao combustível de um carro – necessário para que a rede processe e valide operações. Cada transação no Ethereum requer uma quantidade específica de gas, determinada pela sua complexidade. Os usuários definem um preço de gas em Gwei (1 Gwei = 1 bilionésimo de um Ether), representando a quantidade de Ether que estão dispostos a pagar por unidade de gas.
Entender os preços de gas é fundamental nas redes blockchain, pois ajuda os usuários a gerenciar o custo de suas transações. O conhecimento dos preços de gas atuais permite que os usuários escolham o momento mais econômico para iniciar uma transação e determinem sua velocidade. A consciência sobre os preços de gas também é essencial para evitar transações com falha, planejar orçamentos, compreender o congestionamento da rede e tomar decisões de investimento bem embasadas.
A Gas API do MetaMask, disponível por meio da Infura, é uma ferramenta especializada desenvolvida para fornecer informações em tempo real sobre preços de gas para redes compatíveis com a Ethereum Virtual Machine (EVM). Ela funciona como um oracle, oferecendo dados atualizados sobre os custos computacionais necessários para executar operações ou transações nessas redes. A API capacita desenvolvedores a criar recursos avançados de estimativa de gas, o que pode gerar economia de custos em operações de transação no back-end ou aprimorar a interface do usuário.
Neste tutorial, aprenderemos como construir um App de Rastreamento de Gas usando a Gas API, Next.js e ShadcnUI. Esta aplicação permitirá que usuários de dapps acessem preços de gas recomendados adaptados às suas prioridades de transação, auxiliando na inclusão eficiente dessas transações em um bloco da blockchain.
Uma chave de API Web3 e um segredo de chave de API válidos.
Node.js e npm ou yarn instalados.
Familiaridade com Next.js e React.
Primeiro, certifique-se de que o Node.js está instalado em sua máquina. Após configurar o Node.js, inicie uma nova aplicação Next.js abrindo seu terminal e executando o seguinte comando:
npx create-next-app@latestApós executar o comando, além de vários prompts aparecerem, um novo diretório será criado com o nome do seu projeto – utilizei gastracker-app –, estabelecendo assim a estrutura base do Next.js e instalando as dependências essenciais. Agora, acesse o diretório do seu projeto:
Navegue até o diretório do seu novo projeto e ative a aplicação Next.js em modo de desenvolvimento. Em seguida, você pode explorar sua aplicação acessando http://localhost:3000 no seu navegador.
Para nossa aplicação, utilizaremos uma biblioteca de componentes. Vamos começar instalando o ShadcnUI:
npx shadcn-ui@latest initDurante a instalação, você será guiado pela configuração do arquivo components.json com os seguintes prompts:
Com isso resolvido, vamos também instalar o componente Card do Shadcn UI:
npx shadcn-ui@latest add cardNeste tutorial, vamos focar no uso do componente Card do Shadcn UI. Para saber mais sobre esses componentes, visite o site do Shadcn UI. Com o front end configurado, estamos prontos para começar a trabalhar com a Gas API.
No diretório raiz, crie um arquivo chamado .env, onde armazenaremos as seguintes credenciais:
Certifique-se de obter a API_KEY e a API_KEY_SECRET no seu painel da Infura. É fundamental evitar enviar a chave de API para o GitHub. No diretório raiz, verifique o arquivo .gitignore para confirmar que as linhas necessárias estão incluídas.
Também precisaremos dos pacotes axios e dotenv:
Agora, crie um arquivo chamado 'index.js' na raiz do nosso gastracker-app e copie o seguinte código nele:
Em outra janela do terminal, execute o seguinte comando.
node index.jsVocê deverá ver o seguinte:
Se você observar os dados exibidos no terminal, isso indica que estamos recebendo respostas da API com sucesso. O próximo passo é apresentar esses dados no nosso frontend. Você pode excluir o arquivo index.js agora.
Para estabelecer tipos personalizados para uso em todo o projeto, crie um arquivo chamado 'index.d.ts' no diretório raiz e inclua as seguintes linhas:
Essas declarações de interface TypeScript em um arquivo global definem estruturas para estimativas de taxas de gas e respostas da API. Elas abrangem detalhes como sugestões de taxas, tempos de espera, congestionamento da rede e tendências de taxas para diferentes níveis de prioridade de transação em uma rede blockchain.
Na pasta 'lib', crie um arquivo chamado 'getData.ts' e adicione o seguinte código:
Esses códigos buscam dados de taxas de gas da Gas API:
Configuração de Autenticação: Cria um Buffer a partir de INFURA_API_KEY e INFURA_API_KEY_SECRET, que são definidos como variáveis de ambiente. Esse Buffer é então convertido em uma string base64 (chamada 'Auth') para autenticação básica nas requisições à API.
Especificação do Chain ID: Define a variável chainId como 1, representando tipicamente a mainnet do Ethereum em contextos de blockchain.
Função getData: Uma função assíncrona projetada para buscar dados de taxas de gas:
Utiliza fetch para fazer uma requisição GET ao endpoint da API da Infura, recuperando as taxas de gas sugeridas para o chainId especificado.
Define o cabeçalho Authorization na requisição usando o token Auth criado anteriormente.
Se bem-sucedida, analisa a resposta como JSON e a retorna como GasFeesApiResponse, alinhando-se à interface previamente definida.
Registra quaisquer erros, como problemas de rede ou erros de servidor, no console.
Variabilidade do Chain ID: O chainId pode ser ajustado com base na rede para a qual o app é construído. A Gas API na Infura suporta a maioria das principais redes EVM. Para mais informações sobre redes suportadas, visite a documentação.
Chegamos agora à parte mais interessante, onde vamos focar na UI para exibir os dados. Vamos navegar até a pasta de componentes e criar um componente chamado 'GasCard.tsx'.
Veja o que aconteceu aqui:
Importações e Busca de Dados:
O componente importa a função getData para buscar dados de taxas de gas, juntamente com vários componentes de UI como Card, CardContent, CardHeader e CardTitle, que fazem parte do Shadcn UI que instalamos anteriormente.
Dentro do componente GasCard, a função getData é invocada para recuperar os dados de taxas de gas.
Renderização das Estimativas de Taxas de Gas:
Uma função chamada renderGasFeeEstimateCard é definida, que renderiza um card de UI para uma estimativa de taxa de gas específica (GasFeeEstimate) e título (title).
Essa função constrói um componente Card exibindo detalhes como a taxa de prioridade máxima, taxa máxima por gas e tempos de espera estimados.
Estrutura do Componente:
A estrutura JSX do componente GasCard é delineada na instrução return. Ela utiliza um layout de grade para exibir cards para estimativas de taxas de gas baixas, médias e altas, que são exibidas condicionalmente dependendo da disponibilidade dos dados.
Um card adicional mostra mais informações como a taxa base estimada, congestionamento da rede, faixas de taxa de prioridade (recentes e históricas) e tendências nas taxas de prioridade e base.
Agora, o único passo restante é importar o GasCard.tsx no arquivo page.tsx. Após isso, todos os dados deverão estar visíveis no nosso frontend.
Utilizar a Gas API na Infura oferece vantagens significativas para desenvolvedores que trabalham com redes compatíveis com EVM. Ela fornece insights em tempo real sobre o mercado de gas em constante variação, permitindo que os usuários tomem decisões bem embasadas sobre suas taxas de transação. Isso é particularmente benéfico para otimizar tanto a velocidade quanto a eficiência de custos das transações.
Este tutorial aborda como começar a usar a GasAPI e criar um App simples de Rastreamento de Gas. Você pode encontrar o código aqui: GasAPI-Template no GitHub.
Mas podemos fazer muito mais coisas interessantes com isso; podemos adicionar formas de atualizar o GasData em determinados intervalos com uma contagem regressiva, e também podemos integrar a GasAPI em qualquer aplicação existente. Recomendo conferir os seguintes recursos:
Documentação da Gas API: Documentação da Gas API da Infura
EventSea: Um Dapp de Eventos full-stack que utiliza a GasAPI de forma criativa: EventSea no GitHub
Bons projetos! 🚀
Traduzido por IA. Pode conter erros. Por favor, verifique sempre as informações.