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):
| Campo | Tamanho | Formato |
|---|---|---|
| TXID | 32 bytes | ordem natural |
| VOUT | 4 bytes | little-endian |
| Tamanho do ScriptSig | variável | compact size |
| ScriptSig | variável | bytes |
| Sequence | 4 bytes | little-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.