Decodificador de Transação Bruta Ethereum

Cole o hex RLP assinado ou não de qualquer transação EVM. O remetente é recuperado da assinatura, o calldata é comparado com funções comuns de ERC-20 e DeFi, e o hash é calculado para que você o encontre num explorador.

Assinada ou não. A decodificação roda no seu navegador; nada é enviado a lugar nenhum, então é seguro para transações não assinadas que você está prestes a assinar.
Exemplos:

Decodificado no seu navegador com JavaScript. Os endereços nunca são enviados nem armazenados.

O que é uma transação Ethereum bruta?

Uma transação Ethereum bruta é a string de bytes codificada em RLP que uma carteira produz ao assinar: para transações tipadas, um prefixo de tipo de um byte (0x01 a 0x04) seguido de uma lista RLP com nonce, campos de taxa, limite de gas, to, value, data e a assinatura ECDSA (v, r, s). O endereço do remetente não é armazenado; os nós o recuperam da assinatura, e o hash da transação é o Keccak-256 desses bytes exatos.

Onde obter a transação bruta

Campos explicados

Taxa total máxima é limite de gas × taxa máxima por gas: o máximo que a transação pode custar; a taxa real costuma ser menor. Hash não assinado é o digest que a chave privada assina. Access list pré-declara chaves de armazenamento para reduzir gas. Em transações de blob, os dados do blob em si não fazem parte do RLP mostrado aqui, apenas seus hashes versionados.

Tipos de transação em resumo

TipoEIPCampos de taxaCampos extras
0 (legado)chain ID EIP-155 em vgasPricenenhum
1EIP-2930gasPriceaccessList
2EIP-1559maxPriorityFeePerGas, maxFeePerGasaccessList
3EIP-4844como o tipo 2 mais maxFeePerBlobGasblobVersionedHashes
4EIP-7702como o tipo 2authorizationList

Exemplo prático

Uma transação tipo 2 com limite de gas 21.000, maxFeePerGas 30 gwei e maxPriorityFeePerGas 2 gwei mostra uma taxa total máxima de 21.000 × 30 gwei = 630.000 gwei = 0,00063 ETH. Se a base fee do bloco for 12 gwei, o preço efetivo é 12 + 2 = 14 gwei e a taxa real é 294.000 gwei = 0,000294 ETH; os 0,000336 ETH restantes nunca são cobrados. Um to igual ao contrato do USDT com calldata começando em a9059cbb é uma transferência de token, e seu campo value é 0.

Precisa codificar calldata ou decodificar uma função desconhecida? Use o codificador / decodificador ABI e a consulta de seletores.

Perguntas frequentes

Como o remetente é recuperado?

Uma transação Ethereum não armazena o endereço from. O decodificador faz o hash do payload assinado com Keccak-256 e usa os valores r, s e v para recuperar a chave pública, depois deriva o endereço, exatamente como todo nó faz. Transações não assinadas, portanto, não mostram remetente.

O que significam os tipos de transação?

O tipo 0 é o formato original com um único preço de gas. O tipo 1 (EIP-2930) adiciona uma access list. O tipo 2 (EIP-1559) substitui o preço do gas por taxa máxima e taxa de prioridade. O tipo 3 (EIP-4844) carrega commitments de blob para rollups. O tipo 4 (EIP-7702) permite que uma EOA delegue a código de contrato via uma lista de autorizações.

Por que 'to' mostra um endereço de contrato para o qual eu não enviei?

Se a transação não tem destinatário, ela cria um contrato, e o decodificador mostra o endereço que esse contrato vai receber, calculado a partir do remetente e do nonce.

Como leio o valor para tokens?

Uma transferência ERC-20 tem value 0 ETH; a quantia está dentro do calldata. O decodificador mostra os argumentos de transfer(address,uint256) em unidades brutas; divida pelos decimais do token com o conversor.

Qual é a diferença entre o hash não assinado e o hash da transação?

O hash não assinado é o Keccak-256 da transação sem a assinatura (para transações legadas, com o chain ID no lugar de v, r, s, conforme o EIP-155); é o que a chave privada assina. O hash da transação é o Keccak-256 da codificação totalmente assinada e é o ID que os exploradores mostram.

Funciona para BNB Chain, Polygon e L2s?

Sim. Todas as redes EVM usam a mesma codificação. O chain ID é mostrado com seu nome para as redes comuns.