Componentes
Componentes de uma transação
Last updated
Componentes de uma transação
Last updated
Uma transação da Ethereum possui os seguintes componentes:
Uma transação de Ethereum possui os seguintes componentes:
Inclui as informações de origem e destino, o valor de ETH a enviar, detalhes do gás e a assinatura:
chainId: identifica a blockchain. 0x1 para Ethereum.
type: tipo de transação. Existem dois tipos: novo contrato (0x0) e todas as demais (0x2).
hash: hash da transação.
blockNumber: número sequencial que identifica o bloco dentro da blockchain.
blockHash: hash do bloco que contém a transação.
transactionIndex: posição da transação dentro do bloco.
from: endereço que inicia a transação.
nonce: número de transações enviadas a partir do endereço que envia a transação. Após a inclusão da transação no bloco, o nonce é incrementado. Protege contra ataques de replay.
to: endereço para o qual a transação é enviada (EOA ou conta de contrato).
value: valor de ETH a transferir. Não é usado para outras criptomoedas.
gas: unidades de gás utilizadas pela transação.
gasPrice: valor pago nesta transação por unidade de gás (em wei).
maxFeePerGas: valor máximo que o usuário está disposto a pagar por gás (em wei) ao enviar a transação. Inclui a base fee e a priority fee.
maxPriorityFeePerGas: valor máximo que o usuário está disposto a pagar por gás (em wei) acima da base fee. Essa taxa é paga diretamente ao validador para priorizar a inclusão da transação no bloco.
(r, s, v): esses três valores compõem a assinatura do usuário que criou a transação. Eles são usados para verificar que o usuário autorizou a transação antes de sua execução pela EVM. Utiliza-se criptografia de curvas elípticas (ECDSA).
Inclui as informações de origem e destino, o valor de ETH a ser enviado, detalhes sobre o gas e a assinatura:
chainId: Identifica a blockchain. 0x1 para Ethereum.
type: Tipo de transação. Existem dois tipos: novo contrato (0x0) e todos os outros (0x2).
hash: Hash da transação.
blockNumber: O número sequencial que identifica o bloco dentro da blockchain.
blockHash: O hash do bloco que contém a transação.
transactionIndex: A posição da transação dentro do bloco.
from: A direção que inicia a transação.
nonce: Número de transações enviadas desde a direção que envia a transação. Uma vez que a transação tenha sido incluída no bloco, o nonce é incrementado. Protege contra ataques de replay.
to: A direção para a qual a transação é enviada (EOA ou conta de contrato).
value: O valor de ETH a ser transferido. Não é utilizado para outras criptomoedas.
gas: Unidades de gas usadas pela transação.
gasPrice: Valor pago por unidade de gas nesta transação (em wei).
maxFeePerGas: Valor máximo que o usuário que envia a transação está disposto a pagar por gas (em wei). Inclui base fee e priority fee.
maxPriorityFeePerGas: Valor máximo que o usuário que envia a transação está disposto a pagar por gas acima da base fee (em wei). Essa taxa é paga diretamente ao validador para priorizar a inclusão da transação no bloco.
(r, s, v) Esses três valores compõem a assinatura do usuário que criou a transação. São usados para verificar que o usuário autorizou a transação antes de ser executada pela EVM. Usa-se criptografia de curvas elípticas (ECDSA).
Contém:
accessList: uma lista de endereços e chaves de armazenamento que a transação pretende acessar. O access list foi introduzido pela proposta de melhoria EIP-2930, que tem como objetivo melhorar a escalabilidade e reduzir os custos de gás para transações que acessam armazenamento externo. O custo de gás para acessar esses endereços recebe um desconto.
Contém:
input: os dados enviados pela transação em formato binário.
Existem três opções para o conteúdo do campo input:
Transações ETH: vazio.
Novo contrato inteligente: código do contrato inteligente.
Chamada a um contrato inteligente: nome da função e parâmetros para sua execução.
O campo input não faz parte do estado da EVM. Ele apenas fornece dados para serem usados pelo contrato durante a transação.
Assim seria uma transação completa:
Contém:
input: Os dados enviados pela transação em formato binário.
Existem três opções para o que pode conter o input:
Transações ETH - vazio.
Novo contrato inteligente - código do contrato inteligente.
Chamada para um contrato inteligente - nome da função e parâmetros para sua execução.
O campo input não faz parte do estado da EVM. Ele simplesmente fornece dados a serem usados pelo contrato durante a transação.
Assim seria uma transação completa: