Lição 246: EIP-1559 e o Mercado de Taxas de Gas
O mercado de taxas de gas do Ethereum passou por mudanças significativas com a implementação do EIP-1559, que introduziu uma nova estrutura de taxas com o objetivo de tornar as taxas de transação mais previsíveis e melhorar a experiência do usuário. Nesta lição, exploraremos como o EIP-1559 funciona, seus componentes e seu impacto no mercado de taxas de gas, acompanhados de exemplos de código para ilustrar conceitos-chave.
O que é o EIP-1559?
EIP-1559, que significa Proposta de Melhoria do Ethereum 1559, foi introduzido como parte do hard fork de Londres em agosto de 2021. Seus principais objetivos são:
- Tornar as taxas de gas mais previsíveis para os usuários.
- Queimar uma parte das taxas de transação, potencialmente reduzindo a oferta de ETH ao longo do tempo.
Componentes do EIP-1559
O EIP-1559 introduziu vários conceitos-chave na estrutura de taxas do Ethereum:
- Taxa Base: Esta é uma taxa obrigatória que é queimada (ou seja, removida da circulação). A taxa base é ajustada dinamicamente com base na demanda da rede.
- Gratificação (Taxa de Prioridade): Uma taxa que os usuários podem pagar para incentivar mineradores a priorizar suas transações. Ao contrário da taxa base, as gratificações são pagas diretamente aos mineradores.
- Taxa Máxima: A taxa máxima que um usuário está disposto a pagar por sua transação. Inclui tanto a taxa base quanto a gratificação.
A relação entre esses componentes pode ser resumida da seguinte forma:
Taxa Máxima = Taxa Base + Gratificação
Como Funciona a Taxa Base
A taxa base é ajustada com base no uso médio de gas ao longo de um número definido de blocos. Se o bloco estiver mais de 50% cheio, a taxa base é aumentada; se estiver abaixo de 50% cheia, a taxa base é diminuída. Esse ajuste dinâmico permite flutuações na congestão da rede.
Exemplo: Calculando Taxas de Gas
Aqui está um exemplo simples de como calcular a taxa de gas usando os componentes do EIP-1559 em Solidity.
pragma solidity ^0.8.0;
contract CalculadoraDeTaxasDeGas {
function calcularTaxasDeGas(uint256 taxaBase, uint256 gratificacao, uint256 limiteDeGas) public pure returns (uint256) {
uint256 taxaMaxima = taxaBase + gratificacao;
uint256 custoTotal = taxaMaxima * limiteDeGas;
return custoTotal;
}
}
Neste código, definimos uma função calcularTaxasDeGas
que calcula o custo total de gas com base na taxa base, gratificação e limite de gas. A função multiplica a taxa máxima (taxa base + gratificação) pelo limite de gas para obter o custo total da transação.
Impacto no Mercado de Taxas de Gas
O EIP-1559 tem várias implicações para o mercado de taxas de gas do Ethereum:
- Menor Volatilidade: Ao ajustar dinamicamente a taxa base, os usuários podem ter taxas mais previsíveis, reduzindo as flutuações extremas que caracterizavam o modelo anterior de leilão de primeira oferta.
- Queima de Taxas: A queima da taxa base criou um mecanismo deflacionário para a ETH, o que pode aumentar sua escassez ao longo do tempo.
- Transações Simplificadas: Os usuários não precisam mais adivinhar o preço certo do gas, tornando as transações mais simples e amigáveis.
Exemplo: Enviando uma Transação
Ao enviar uma transação usando o EIP-1559 em um ambiente JavaScript (por exemplo, usando ethers.js ou web3.js), você pode estruturar sua transação assim:
const { ethers } = require("ethers");
// Suponha que temos um provedor para obter a taxa base atual
const provider = new ethers.providers.JsonRpcProvider("<SUA_URL_DO_NÓ_ETHEREUM>");
async function enviarTransacao() {
const signer = provider.getSigner();
const taxaBaseAtual = await provider.getFeeData();
const tx = {
to: "<ENDEREÇO_DO_DESTINATÁRIO>",
value: ethers.utils.parseEther("0.01"), // 0.01 ETH
maxFeePerGas: taxaBaseAtual.maxFeePerGas, // Taxa EIP-1559
maxPriorityFeePerGas: ethers.utils.parseUnits("2", "gwei"), // Gratificação para os mineradores
};
const respostaTx = await signer.sendTransaction(tx);
console.log("Transação enviada!", respostaTx);
}
enviarTransacao().catch(console.error);
Neste exemplo, buscamos a taxa base atual e construímos uma transação utilizando maxFeePerGas
e maxPriorityFeePerGas
, aproveitando a estrutura de taxas do EIP-1559 ao enviar ETH.
Conclusão
O EIP-1559 marca uma evolução significativa no mercado de taxas de gas do Ethereum. Ao introduzir um mecanismo de taxa base que é ajustado dinamicamente com base no uso da rede, ele visa criar uma experiência mais previsível e amigável para os participantes. Com as ferramentas e o código apresentados nesta lição, você deve ter uma compreensão sólida de como o EIP-1559 funciona e como implementá-lo efetivamente ao lidar com transações Ethereum.