Transação

Os dados que destravam e travam lotes de bitcoins

Uma transação de bitcoin é só um monte de dados que destrava e trava lotes de bitcoins.

Mais precisamente, uma transação:

  1. Seleciona lotes existentes de bitcoins (entradas) e os destrava.
  2. Cria novos lotes de bitcoins (saídas) e coloca novas travas neles.

Você pode ter várias entradas e saídas em uma única transação. Então você pode pensar em uma transação como parte de uma cadeia de saídas: uma transação cria uma saída, e uma transação futura seleciona essa saída (como entrada) e a destrava para criar novas saídas.

Uma moeda digital contém a chave pública do seu dono. Para transferi-la, o dono assina a moeda junto com a chave pública do próximo dono. Qualquer um pode verificar as assinaturas para confirmar a mudança de propriedade.
Satoshi Nakamoto, satoshi.nakamotoinstitute.org
Ícone Ferramenta Separador de Transação
Ícone Ferramenta

Separador de Transações

Cole uma transação bruta (hexadecimal) para dividi-la nos seus campos individuais.

Ícone Ferramenta Construtor de Transação
Ícone Ferramenta

Construtor de Transações

Monte os dados brutos de uma transação a partir das entradas e saídas. Os scripts são escritos em ASM (ex.: OP_DUP OP_HASH160 ab12… OP_EQUALVERIFY OP_CHECKSIG).

Tipo

Entradas (1)

Saídas (1)

0 bytes

Estrutura

Como é uma transação bruta de bitcoin?

Uma transação bruta é formada por campos, cada um contendo bytes de dados. Todas as transações têm a mesma estrutura básica, então, para decodificá-las, você só precisa saber o tamanho de cada campo e o formato dos dados:

CampoTamanhoFormato
Versão4 byteslittle-endian
Marker & Flag (segwit)2 bytes0001
Contagem de Entradasvariávelcompact size
Entrada(s): txid, vout, tam. scriptsig, scriptsig, sequencevariável
Contagem de Saídasvariávelcompact size
Saída(s): valor, tam. scriptpubkey, scriptpubkeyvariável
Testemunha (segwit)variável
Locktime4 byteslittle-endian

Versão

Os primeiros 4 bytes indicam o número de versão da transação (em little-endian), o que permite atualizar a estrutura das transações no futuro. Atualmente é 01000000 ou 02000000.

Marker & Flag (Opcional)

Em transações segwit, há dois bytes extras após a versão: o marker (00) e o flag (01). O marker 00 indicaria zero entradas em uma transação legada, o que sinaliza aos nós que esta é uma transação segwit com um campo de testemunha no fim.

Ícone Ferramenta Compact Size
Ícone Ferramenta

Compact Size

Converta entre um número e sua codificação compact size (o varint usado no Bitcoin).

Ícone Ferramenta Little Endian
Ícone Ferramenta

Little Endian

Converta um número entre as ordens de bytes big-endian e little-endian.

Tamanho:

Exemplos

Como é uma transação bruta?

1. Transação Legada Básica

01000000 <- versão
01 <- contagem de entradas
  ...txid... ...vout... ...scriptsig... ffffffff
02 <- contagem de saídas
  ...valor... ...scriptpubkey...  (× 2)
00000000 <- locktime

2. Transação SegWit Básica

Igual à legada, mas com o marker & flag (0001) após a versão e um campo de testemunha antes do locktime.

TXID, wTXID, Tamanho e Taxa

A partir dos dados da transação, você pode derivar:

Ícone Ferramenta

TXID

Calcule o identificador (TXID/wTXID) de uma transação: HASH256 dos dados, em ordem de bytes invertida.

0 bytes