SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
06.12.2024

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:

  1. 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.
  2. 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.
  3. 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:

  1. 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.
  2. 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.
  3. 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.

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!