🇧🇷
Ethereum Developer Pack - PT
  • Ethereum Developer Pack - PT
  • Módulo 1
    • Introdução a Smart Contracts
      • Fundamentos de Blockchain
        • Histórico
        • Bitcoin
        • O que é Blockchain
        • Conceitos-chave em Blockchain
        • Como funciona a Blockchain
        • Tipos de Blockchain
        • Modelos de Consenso
      • A nova Internet
        • Web 3
        • Elementos Fundamentais
        • Impacto do Ethereum em Diversos Setores
      • Wallets
        • Componentes de uma wallet
        • Tipos de Wallet
        • Códigos Mnemônicos
      • Ethereum 101
        • Smart Contracts
        • Contas
          • Tipos de contas
          • Conteúdo das contas
        • Transações
          • Componentes
          • Ciclo de vida
        • Gás
        • Solidity
        • EVM
          • A máquina de estados
          • Opcodes
          • Como funciona a EVM
          • Clientes de execução
          • DApps
      • Blockchain Explorer
        • Funções de um blockchain explorer
        • Beneficios de utilizar um blockchain explorer
      • Remix
        • Características do Remix
        • Workspaces ou espaços de trabalho
        • Carregar e compilar um contrato
        • Implantar na máquina virtual do Remix (Remix VM)
        • Interagindo com funções
        • Deployar em uma rede pública
      • Crie seu primeiro Smart Contract
  • Módulo 2
    • Fundamentos de Solidity
      • Hello World
      • Tipos de Dados
      • Funções
      • Variáveis
        • Exercício 1
      • Operadores
        • Ejercicio 2
      • Constructor
        • Exercício 3
      • Convenções de nomenclatura
      • Tipos de armazenamento para variáveis
      • Estruturas de Controle
        • Exercício 4
      • Modificadores
      • Eventos
        • Exercício 5
      • Tipos de Referencia
        • Arrays
          • Exercício 6
        • Mappings
          • Exercício 7
        • Structs
          • Exercício 8
      • Address Payable
      • Como os contratos e funções recebem Ether.
      • Transferências de Ether
      • Conceitos Avançados
        • Codificação de ABI
        • Hashing
        • This
        • Herança
        • Abstract
        • Interface
        • Chamada entre contratos
        • EVM
        • ABI
        • Bytecode
        • Opcodes
  • Módulo 3
    • ERCs, Bibliotecas e Padrões de Desenvolvimento
      • Boas Práticas de Desenvolvimento
      • Padrões de Desenvolvimento
      • EIP & ERC
      • ERC-20
      • ERC-721
      • Open Zeppelin
      • Crie um Token ERC-20
      • Almacenamiento Descentralizado: IPFS
      • Crea un Token ERC-721
      • DeFi
  • Módulo 4
    • Kit de ferramentas para desenvolvimento na Ethereum
      • Requisitos para o módulo 4
        • Terminal
        • Git e Github
        • Node.js e npm
        • Visual Studio Code para Solidity
      • Toolkit
        • JSON-RPC
        • Ethers.js
          • Exercício
        • Hardhat
          • Implantação de um contrato no Hardhat
          • Implantação de um contrato em uma rede pública
        • Scaffold-ETH
          • Características do Scaffold-ETHCaracterísticas
          • Como instalar o Scaffold-ETH
  • Módulo 5
    • Segurança, Testes e Auditorias
      • Testes
        • Importância de realizar testes
        • Métodos para testar contratos inteligentes
          • Testes automatizados
          • Testes manuais
        • Conceitos importantes em testes
        • Ferramentas para testes
        • Testes com Hardhat
        • Recursos adicionais
      • Segurança
        • Uma mentalidade diferente de design
        • Principais vulnerabilidades em contratos inteligentes
          • Reentrancy attack (ataque de reentrada)
          • Replay attack (ataque de repetición)
          • Price Oracle Manipulation (Manipulación de Oráculos de Precios)
          • Missing Access Control (Pérdida de Control de Acceso)
          • Reward Manipulation (Manipulación de Recompensas)
          • Failure to Initialize (Falla al Inicializar)
          • Front-running
          • Invariant Breaks (Quebra de Invariantes)
          • Mishandling of ETH (Má gestão de ETH)
          • Denial of Service (DoS - Negação de Serviço)
          • Integer overflow and underflow (Overflow e Underflow de inteiros)
          • Phishing y Typosquatting
        • Recursos adicionais
      • Auditoria de smart contracts
        • Processo de Auditoria
        • Ferramentas
        • Como se preparar para uma auditoria
        • O teste Rekt
        • Desafios
        • Recursos adicionais
  • Contribuye
    • Kipu Explorer
Powered by GitBook
On this page
  • Limite de gás
  • Onde visualizar o preço do gás
  1. Módulo 1
  2. Introdução a Smart Contracts
  3. Ethereum 101

Gás

PreviousCiclo de vidaNextSolidity

Last updated 23 days ago

Na criptoeconomia do Ethereum, gas é o combustível necessário para executar os smart contracts. É a unidade de medida do poder computacional necessário para realizar transações.

Uma transação pode incluir várias instruções de máquina. Cada instrução tem um custo denominado em gas, que é pré-definido no Yellow Paper do Ethereum (Apêndice G). Por exemplo, uma instrução de soma (ADD) custa 3 gas, enquanto uma mais complexa, como verificar um saldo, custa 700 gas.

O uso de gas também serve para evitar que os usuários executem programas que sobrecarreguem os recursos da rede ou utilizem práticas de programação ineficientes. Um loop mal estruturado, por exemplo, será executado apenas até que o gas disponível se esgote.

Para determinar a taxa (fee) de uma transação, consideramos dois componentes:

  1. Quantidade de gas: Corresponde às unidades de gas necessárias com base nas operações que uma transação consome. Não é a mesma coisa transferir ETH, editar um campo de dados ou armazenar um byte de dados. Cada uma dessas transações consome uma quantidade diferente de gas.

Na criptoeconomia do Ethereum, gas é o combustível necessário para executar os contratos inteligentes (smart contracts). É a unidade de medida do poder computacional requerido para executar transações.

Uma transação pode envolver muitas instruções de máquina. Cada instrução tem um custo denominado em gas, com um custo preestabelecido no (apêndice G). Por exemplo, uma instrução do tipo soma (ADD) custa 3 gas, mas uma mais complexa, como verificar um saldo, custa 700 gas.

O uso de gas também serve para evitar que os usuários executem programas que sobrecarreguem os recursos da rede ou que pratiquem programação ineficiente. Um loop incorreto, por exemplo, só será executado até que o gas se acabe.

Para determinar a taxa (fee) de uma transação, temos dois componentes:

  1. Quantidade de gas: Refere-se às unidades de gas de acordo com as operações que uma transação consome. Não é a mesma coisa fazer uma transferência de ETH, editar um campo de dados ou armazenar um byte de dados. Cada uma dessas transações consome uma quantidade diferente de gas.

Transação
Gas

Transferência de ETH

21,000

Editar um slot

5,000

Byte de dados

16

  1. Preço do gas: possui dois componentes: base fee e priority fee. O preço do gas é expresso em uma fração de ETH chamada gwei, equivalente a um bilionésimo de ETH (1 gwei = 10^-9 ETH).

Base fee

A tarifa base é determinada de forma automática pelo protocolo em função da demanda de transações. Se os blocos se encherem acima do valor objetivo (15 milhões de gas), a base fee se incrementa automaticamente. O oposto ocorre quando os blocos se enchem abaixo do valor objetivo.

A partir da atualização EIP 1559 (London) no ano de 2021, este componente do gas é queimado.

Ou tarifa base, é determinada automaticamente pelo protocolo com base na demanda de transações. Se os blocos estiverem cheios acima do valor objetivo (15 milhões de gas), a base fee aumenta automaticamente. O oposto acontece quando os blocos estão cheios abaixo do valor objetivo.

A partir da atualização EIP 1559 (London) em 2021, esse componente do gas é queimado.

Priority fee

É o valor pago acima da base fee, como uma "gorjeta" para o validador que gera o bloco. Com base nesse valor, os validadores priorizam a inclusão das transações nos blocos.

É o valor pago além da base fee como uma gorjeta para o validador que gera o bloco. Com base nesse valor, os validadores priorizam a inclusão das transações nos blocos.

Dependendo da fee que incluímos, nossa transação será executada mais cedo ou mais tarde, pois os validadores selecionam, com preferência, do pool de transações que eles têm para processar aquelas que possuem o preço de gas mais alto. Portanto, se tivermos urgência para que nossa transação seja executada, precisaremos propor um preço de gas mais alto que a média do momento.

Suponhamos que queremos executar uma transação de 21.000 gas, como uma transferência de ETH. Se a base fee for 15 gwei e estamos dispostos a pagar uma priority fee de 2 gwei.

O cálculo da fee a ser paga por essa transação, assumindo que o preço do ETH é US$ 1600, será mostrado no gráfico a seguir:

Dependendo da fee que incluirmos, nossa transação será executada mais cedo ou mais tarde, pois os validadores darão preferência às transações com o preço de gas mais alto, retirando-as do pool de transações para processamento. Portanto, se tivermos urgência para que nossa transação seja executada, precisaremos propor um preço de gas mais alto que a média do momento.

Suponhamos que queremos executar uma transação de 21.000 gas, como uma transferência de ETH. Se a base fee for 15 gwei e estivermos dispostos a pagar uma priority fee de 2 gwei, o cálculo da taxa a ser paga por essa transação, assumindo que o preço do ETH é US$ 1.600, é mostrado no gráfico a seguir:

Limite de gás

Embora a transação do nosso exemplo exigisse 21.000 unidades de gas, é comum definir um número mais alto, chamado de "limite de gas" (gas limit), que indica o máximo que estamos dispostos a considerar por transação. Isso é feito para evitar problemas caso tenhamos cometido um erro e a transação exija mais de 21.000 gas. Se a estimativa for insuficiente, a transação não será concluída, e perderíamos nosso dinheiro. Por outro lado, se a necessidade de gas for menor, o gas não consumido será devolvido. O limite de gas ou gas limit é normalmente estimado pela nossa wallet com base nas operações que a transação enviada irá executar. Por isso, recomenda-se não modificar esse dado.

Embora a transação do nosso exemplo exigisse 21.000 unidades de gas, o normal é definir um número mais alto, denominado "limite de gas", que expressa o máximo que estamos dispostos a considerar por transação, caso tenhamos cometido um erro e a transação precise de mais de 21.000 gas. Se nossa estimativa for insuficiente, a transação não será concluída e perderemos nosso dinheiro. Por outro lado, se a necessidade de gas for menor, o gas não consumido será devolvido. O limite de gas ou "gas limit" é normalmente estimado pela nossa carteira com base nas operações que a transação que estamos enviando irá executar, por isso, recomenda-se não modificar esse valor.

Onde visualizar o preço do gás

Em sites como y é possível monitorar os preços médios de mercado do gas. Tenha em mente que o preço do gas pode variar muito em pouco tempo. Variações de 500% ou mais em questão de minutos não são incomuns. Por isso, é importante acompanhar essas mudanças para evitar pagar valores excessivos por uma transação.

Em sites como e , é possível monitorar os preços médios de mercado do gas. Vale ressaltar que o preço do gas pode variar muito de um momento para outro, com variações de 500% ou mais em poucos minutos, o que não é raro. Por isso, é importante monitorar para não pagar demais por uma transação.

Yellow Paper do Ethereum
EtherScan
Ultra sound money
EtherScan
Ultra Sound Money