Entrada (Input)

Uma saída anterior sendo gasta em uma transação

Uma entrada (input) é uma saída que está sendo gasta em uma transação. É basicamente uma referência a uma saída não gasta anterior, junto com o código de destravamento que destrava a saída para que ela possa ser gasta.

Você pode ter várias entradas em uma transação. Isso porque às vezes você precisa consumir várias saídas (como entradas) para conseguir criar o valor total que quer enviar.

A maioria das transações tende a ter 1 ou 2 entradas, mas você pode ter milhares. Porém, quanto mais entradas, maior a transação (em bytes), o que a torna mais cara, já que as transações são selecionadas para mineração com base na taxa por espaço que ocupam. Então você quer selecionar estrategicamente o menor número de entradas que permita criar o valor total.

Estrutura

O que uma entrada de transação faz?

A seção de entrada das transações brutas tem a seguinte estrutura (repetida para cada entrada):

CampoTamanhoFormato
TXID32 bytesordem natural
VOUT4 byteslittle-endian
Tamanho do ScriptSigvariávelcompact size
ScriptSigvariávelbytes
Sequence4 byteslittle-endian

Como você pode ver, cada entrada referencia uma saída anterior pelo seu TXID e VOUT, e então fornece o código de destravamento pelo campo ScriptSig.

Para scripts de travamento SegWit (ex.: P2WPKH, P2WSH), o código de destravamento é movido do ScriptSig para o campo de testemunha (witness).

Exemplo

Como é uma entrada de transação?

Uma transação básica com uma entrada (campos separados):

02000000 <- versão
01 <- contagem de entradas
  9945a5a440f2d3712ff095cb1efefada1cc52e139defedb92a313daed49d5678 <- txid
  01000000 <- vout
  6a <- tamanho do scriptsig
  473044022031b6a6b7...eee971dc <- scriptsig
  ffffffff <- sequence
01 <- contagem de saídas
  a702000000000000 <- valor
  17 <- tamanho do scriptpubkey
  a9148ce773d254dc5df886b95848880e0b40f105643287 <- scriptpubkey
00000000 <- locktime

Little-Endian. O campo de valor nas transações brutas está em little-endian. Convertendo a702000000000000 para big-endian, temos 00000000000002a7, que em decimal é 679 sats.

Valores das entradas. As entradas nos dados brutos não contêm o valor da saída sendo gasta. Para descobrir o valor, você precisa voltar à transação que criou a saída.