Ir para o conteúdo

Limite de gas do bloco

Guia sensível a forks sobre limite de gas do bloco Ethereum, meta da EIP-1559, teto por transação, gas usado, taxas, throughput e recursos do nó.

Atualizado

Somente para fins educacionais; não constitui aconselhamento financeiro nem de segurança. Limites, metas e cronogramas de gas, tetos por transação, custos de opcodes e políticas de clientes variam conforme a cadeia, o fork e o momento de observação.

Resposta direta

O limite de gas do bloco é o teto de gas de execução registrado no cabeçalho de um bloco Ethereum. As transações incluídas devem respeitar a contabilidade do protocolo para que o gasUsed agregado não ultrapasse gasLimit. Gas é uma unidade abstrata cujas regras de opcodes, calldata, memória, armazenamento e reembolsos mudam entre forks; não conta diretamente instruções de CPU, bytes ou transações.

Na Mainnet após Fusaka, a referência coordenada dos clientes é 60,000,000 gas por bloco, mas o cabeçalho real é autoritativo e preferências dos validadores podem mover o limite gradualmente pela regra relativa ao bloco pai. Com elasticidade 2, a EIP-1559 fixa a meta de longo prazo em 30,000,000 gas; uso acima da meta eleva a próxima taxa base. A EIP-7825 limita separadamente o gas declarado por transação a 2^24 = 16,777,216 gas, e a EIP-7934 impõe limite RLP independente de 8,388,608 bytes. São valores específicos da rede e da data.

Como funciona

  1. Fixe cadeia, rede, hash e número do bloco, fork ativo, cliente ou RPC e horário. Leia gasLimit, gasUsed e baseFeePerGas do cabeçalho; não use tabela estática como substituta.
  2. Separe limite do bloco, meta EIP-1559, gas declarado, gas efetivamente usado e preço por gas. Separe também gas de execução, gas de blobs, bytes RLP e medição própria de L2.
  3. Reproduza validade e execução com o cronograma ativo: gas intrínseco, calldata, listas de acesso, expansão de memória, acessos frios e quentes, escritas, precompilados e reembolsos. A estimativa depende do estado e do block tag.
  4. Reconcilie capacidade somando gas dos recibos ou usando o acumulado final; confirme gasUsed <= gasLimit e considere ordem e custos dependentes do estado. Contagem de transações não é o limite nem TPS fixo.
  5. Aplique EIP-1559: com elasticidade 2, meta = gasLimit / 2; uso do pai acima ou abaixo altera a próxima taxa base. O limite filho deve ficar na faixa estrita aproximada de 1/1024. Taxa base precifica demanda; limite restringe trabalho aceito.
  6. Verifique limites operacionais. Transação acima do teto é inválida mesmo com espaço, e bloco RLP grande demais também é inválido abaixo do limite de gas. A provisão não usada é liberada; o contador de reembolso é separado e limitado pelo fork. REVERT preserva gas restante; out-of-gas superior reverte o estado e consome toda a provisão fornecida.
  7. Teste tempo de execução de blocos cheios, crescimento do estado, propagação, slots perdidos, reorgs, capacidade de builders e validadores, diversidade de clientes e mudanças de parâmetros. Compare blocos e métricas reais antes de assumir throughput sustentável.

Exemplos resolvidos

  • Teto de transferências simples. Com 60,000,000 gas, cabem teoricamente floor(60,000,000 / 21,000) = 2,857 transferências ETH simples. A meta de 30,000,000 gas admite 1,428; em slot ideal de 12-second, são 1,428 / 12 = 119 transactions/second. É um teto homogêneo, não TPS observado.
  • Bloco-meta misto. Suponha 400 * 21,000 = 8,400,000 gas em transferências, 80 * 180,000 = 14,400,000 gas em swaps e 6 * 1,200,000 = 7,200,000 gas em implantações. Total: 30,000,000 gas em 486 transactions, ou 486 / 12 = 40.5 transactions/second sob o slot assumido.
  • Limite versus cobrança real. Uma transação declara 200,000 gas e usa gasUsed = 146,000. A 22 gwei, paga 146,000 * 22 = 3,212,000 gwei = 0.003212 ETH; os 54,000 gas não usados não são cobrados. Declarar 18,000,000 gas supera o teto atual de 16,777,216 gas e é inválido mesmo com espaço.
  • Resposta da taxa base. Com gasLimit = 60,000,000, meta é 30,000,000. Partindo de 24 gwei, pai cheio com 60,000,000 gas eleva a próxima taxa no máximo 12.5% para 27 gwei; pai vazio reduz 12.5% para 21 gwei. Isso não muda o limite nem garante uso posterior.

Riscos

  • Usar limite desatualizado da Mainnet.
  • Aplicar parâmetros Ethereum a outra cadeia EVM ou L2.
  • Confundir limite do bloco e meta EIP-1559.
  • Confundir limite do bloco e teto por transação.
  • Confundir gas declarado e gas efetivamente usado.
  • Tratar gas como unidade fixa de CPU, bytes ou transações.
  • Usar regras obsoletas ou ignorar o limite RLP independente.
  • Confiar em eth_estimateGas sem estado e block tag pretendidos.
  • Ignorar execução dependente do estado e ordenação.
  • Confundir provisão não usada e contador de reembolso.
  • Ignorar gas cobrado quando a execução reverte ou fica sem gas.
  • Tratar gas de execução e de blobs como um recurso.
  • Deduzir TPS apenas de transferências homogêneas.
  • Ignorar slots perdidos, reorgs e atrasos de finalidade.
  • Aumentar tempo extremo de execução e propagação.
  • Acelerar crescimento do estado e requisitos de arquivo.
  • Elevar requisitos de hardware de validadores, builders e RPC.
  • Aumentar centralização ou divergência de clientes.
  • Perder mudanças de preferências, clientes ou forks.
  • Tratar maior capacidade como garantia de taxas menores ou demanda.

Erros comuns

  • O limite de gas do bloco é constante universal de Ethereum ou EVM.
  • Um limite de 60,000,000 gas exige uso de 60 milhões ou torna essa também a meta EIP-1559.
  • Dividir o limite por 21,000 fornece o TPS real da cadeia.
  • Uma transação pode consumir todo o bloco se houver espaço; o teto atual é independente.
  • Elevar o limite reduz taxas automaticamente sem custos para nó, estado, propagação, demanda ou descentralização.

Tópicos relacionados

Fontes

Navegação

Pesquisar na wiki...