Ir para o conteúdo

Gas e taxas de transação

Guia sensível ao fork sobre unidades de gas, custos intrínsecos e de execução, limites de taxa da EIP-1559, queima da taxa-base, taxas de prioridade, reversões, esgotamento de gas, reembolsos, gas de blobs e componentes de taxas de L2.

Atualizado

Somente para fins educacionais; não constitui recomendação nem aconselhamento de investimento. Investir pode causar perdas.

Resposta direta

Gas é a unidade contábil do protocolo para o trabalho de execução e o acesso ao estado; a taxa de gas é um valor monetário calculado a partir das unidades de gas cobradas e de um preço por unidade. No Ethereum com EIP-1559, effectiveGasPrice = min(maxFeePerGas, baseFeePerGas + maxPriorityFeePerGas), a taxa de execução é gasUsed * effectiveGasPrice, a parcela da taxa-base é queimada e a parcela de prioridade é paga pelo caminho do destinatário de taxas do bloco. O limite de gas e os tetos de taxa autorizam valores máximos; não são valores gastos automaticamente.

O gas usado exato depende de calldata, caminho de opcodes, expansão de memória, acessos frios e quentes ao estado, alterações de armazenamento, chamadas aninhadas, precompilados, sucesso ou falha, reembolsos e fork ativo. Um preço maior pode melhorar a competitividade para inclusão, mas não corrige REVERT, limite de gas insuficiente, contrato malicioso, cotação desatualizada ou calldata incorretos. Transações com blobs e muitas L2 acrescentam componentes separados de dados ou protocolo que não devem ser incorporados ao gas da EVM por suposição.

Taxa de rede
0,000462 native
Equivalente em moeda fiduciária
$1,39
Taxa básica
22 gwei

Os resultados são aproximações educacionais. Eles excluem regras de local, impostos, latência, comportamento do oráculo e outros parâmetros específicos do protocolo, a menos que sejam mostrados.

Como funciona

  1. Fixe cadeia, fork, bloco ou tag de estado, tipo de transação, remetente, nonce, destino, valor, calldata, lista de acesso, campos de blob, token de gas e moeda da taxa. Registre se a cotação diz respeito a uma transação L1, execução L2, publicação de dados, retirada ou rota composta.
  2. Reconstrua o gas intrínseco antes da execução: envelope da transação, custos dos bytes de calldata, criação, lista de acesso e sobrecarga específica do tipo. Se o limite de gas for inferior ao gas intrínseco ou o remetente não satisfizer as verificações de validade do custo máximo, a transação será rejeitada antes de uma execução incluída, e não incluída para depois ser revertida.
  3. Rastreie a execução no fork-alvo. Meça custos dinâmicos de opcodes, expansão de memória, contas ou slots de armazenamento frios e quentes, SSTORE, encaminhamento de gas em chamadas, transferência de valor, custos de precompilados, logs e reembolsos. A mesma função ABI pode seguir ramificações distintas e usar quantidades diferentes de gas conforme o estado.
  4. Separe os resultados. Uma execução bem-sucedida confirma seus efeitos. REVERT reverte o escopo que falhou e pode devolver o gas não usado no frame; uma interrupção excepcional por falta de gas normalmente consome o gas disponibilizado ao frame. Uma falha de nível superior incluída ainda consome o nonce e o gas cobrado, embora o estado do contrato, a transferência de valor e os logs sejam revertidos.
  5. Precifique o gas de execução. Para uma transação do tipo 2, calcule o preço efetivo a partir da taxa-base, do teto de prioridade e do teto total; depois divida o gas cobrado entre taxa-base queimada e taxa de prioridade. Diferencie gas não usado e folga não consumida do teto de taxa dos reembolsos protocolares de gas gerados por limpeza de estado elegível e limitados pelo teto de reembolso vigente.
  6. Precifique separadamente os outros mercados de taxas. Uma transação com blobs paga gas de execução mais blobGasUsed * blobGasPrice, sujeito a maxFeePerBlobGas; a taxa-base de blobs tem seu próprio mecanismo de ajuste. Uma taxa de usuário de L2 pode incluir execução L2, dados L1 comprimidos ou custo de blobs, cobranças do operador ou protocolo e margens, com fórmulas e escalares específicos do deployment e da atualização.
  7. Concilie estimativa, inclusão e recibo. Antes de assinar, verifique o saldo em relação ao valor mais as taxas máximas autorizadas, simule em um estado fixado e defina tetos limitados. Após a inclusão, registre limite de gas, gas usado no recibo, preço efetivo, taxa-base, taxa de prioridade, efeitos de reembolso, gas de blobs, campos de taxas L2, status e variação do saldo; trate separadamente erro de estimativa, substituição e finalidade.

Exemplos detalhados

  • Sucesso do tipo 2 e tetos. O limite de gas é 120,000, o gas usado é 70,000, a taxa-base é 25 gwei, a taxa máxima de prioridade é 3 gwei e a taxa máxima é 40 gwei. O preço efetivo é min(40, 25 + 3) = 28 gwei; a taxa efetiva é 70,000 * 28 gwei = 0.001960 ETH, dividida em 0.001750 ETH queimados e 0.000210 ETH de taxa de prioridade. A autorização máxima da taxa de execução é 120,000 * 40 gwei = 0.004800 ETH; os 50,000 gas não usados e a folga não consumida do teto não são reembolsos protocolares por limpeza.
  • REVERT versus falta de gas. Duas chamadas incluídas têm, cada uma, limite de gas de 100,000 e preço efetivo de 30 gwei. A chamada A executa REVERT quando o gas usado no recibo chega a 60,000, portanto sua taxa é 60,000 * 30 gwei = 0.001800 ETH. A chamada B esgota todo o limite de gas da transação, portanto sua taxa é 100,000 * 30 gwei = 0.003000 ETH. Ambas as falhas de nível superior revertem os efeitos contratuais e consomem o nonce, mas REVERT pode preservar gas não usado, enquanto a falta de gas não.
  • Teto de reembolso. Em um caso didático da EIP-3529 delimitado por fork, a execução consome 100,000 gas antes do reembolso e gera um contador de reembolso de 30,000 gas. O reembolso máximo aplicado é 100,000 / 5 = 20,000 gas, portanto o gas cobrado é 100,000 - 20,000 = 80,000 gas. A 20 gwei, a taxa é 0.001600 ETH, e não 0.002000 ETH, uma economia de 0.000400 ETH; as regras e operações elegíveis podem mudar conforme o fork.
  • Mercado separado de taxas de blobs. Uma transação hipotética com blobs usa 100,000 de gas de execução a 20 gwei e dois blobs. Com 131,072 blob gas/blob, o gas de blobs usado é 262,144; a um preço de gas de blobs de 5 gwei, a taxa de blobs é 262,144 * 5 gwei = 0.00131072 ETH. A taxa de execução é 0.002000 ETH, portanto a taxa protocolar combinada é 0.00331072 ETH. Os 5 gwei escolhidos são ilustrativos, e a taxa de blobs não é uma gorjeta de prioridade ao validador nem a taxa integral de um usuário de L2.

Riscos

  • Usar cadeia, fork, token de gas, tipo de transação ou moeda da taxa incorretos.
  • Confundir unidades de gas, wei, gwei, ETH e conversões para moeda fiduciária.
  • Tratar o limite de gas como taxa esperada ou efetiva.
  • Falhar nas verificações prévias de gas intrínseco ou custo máximo.
  • Depender de estimativa desatualizada após mudanças de estado, taxa-base ou calldata.
  • Definir limite de gas inferior às necessidades da ramificação efetiva.
  • Supor que um preço de gas maior possa impedir REVERT do contrato.
  • Confundir REVERT, falta de gas, opcode inválido e rejeição prévia à validação.
  • Não detectar falha capturada de uma chamada filha apesar do status superior 1.
  • Precificar incorretamente acessos frios e quentes ao estado ou uma lista de acesso incompleta.
  • Ignorar expansão de memória, encaminhamento de gas, precompilados ou custos de logs.
  • Aplicar regras obsoletas de reembolso de armazenamento ou exceder seu teto.
  • Contabilizar gas não usado ou folga do teto como reembolso protocolar de gas.
  • Definir a taxa máxima abaixo da taxa-base do bloco de inclusão.
  • Pagar prioridade excessiva sem entender a política do construtor ou sequenciador.
  • Não dispor do token de gas nativo apesar de possuir outros ativos.
  • Omitir gas de blobs, seu teto de taxa ou cobranças por disponibilidade de dados.
  • Tratar como universal a fórmula de execução, dados, escalares e operador de uma L2.
  • Ignorar corridas de substituição, nonce, transação descartada e reserva de saldo.
  • Tratar uma transação paga ou bem-sucedida como prova de segurança do contrato ou finalidade.

Erros comuns

  • Gas é uma porcentagem do valor transferido.
  • Elevar o limite de gas necessariamente aumenta o valor cobrado.
  • Uma taxa máxima ou de prioridade elevada garante execução bem-sucedida.
  • Toda autorização não usada e todo reembolso por limpeza de estado são o mesmo mecanismo.
  • Taxas de L2 equivalem apenas ao gas local da EVM e taxas de blobs são gas de execução comum.

Tópicos relacionados

Fontes

Navegação

Pesquisar na wiki...