Entrada (Input)
Saídas que são consumidas 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 algum 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 na transação.
A maioria das transações tende a ter 1 ou 2 entradas, mas você pode ter milhares se quiser. Porém, quanto mais entradas, maior a transação será (em bytes), o que a torna mais cara, já que as transações são selecionadas para mineração com base no tamanho da taxa por quanto espaço elas ocupam em um bloco.
Então, ao fazer uma transação de bitcoin, você quer selecionar estrategicamente o menor número de entradas que permita criar o valor total que quer enviar.
Estrutura
O que uma entrada de transação faz?
A seção de entrada das transações brutas tem a seguinte estrutura:
| Campo | Exemplo | Tamanho | Formato | Descrição |
|---|---|---|---|---|
| TXID | [TXID] | 32 bytes | Ordem Natural de Bytes | O TXID da transação que contém a saída que você quer gastar. |
| VOUT | 01000000 | 4 bytes | Little-Endian | O número de índice da saída que você quer gastar. |
| Tamanho do ScriptSig | 6b | variável | Compact Size | O tamanho em bytes do ScriptSig seguinte. |
| ScriptSig | [script] | variável | Script | O código de destravamento da saída que você quer gastar. |
| Sequence | fdffffff | 4 bytes | Little-Endian | Define se a transação pode ser substituída ou quando pode ser minerada. |
Esta estrutura é repetida para cada entrada incluída na transação.
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 para destravar aquela saída para gasto 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).
Exemplos
Como é uma entrada de transação?
1. Uma Entrada
Esta é uma transação bem básica com uma entrada:
02000000019945a5a440f2d3712ff095cb1efefada1cc52e139defedb92a313daed49d5678010000006a473044022031b6a6b79c666d5568a9ac7c116cacf277e11521aebc6794e2b415ef8c87c899022001fe272499ea32e6e1f6e45eb656973fbb55252f7acc64e1e1ac70837d5b7d9f0121023dec241e4851d1ec1513a48800552bae7be155c6542629636bcaa672eee971dcffffffff01a70200000000000017a9148ce773d254dc5df886b95848880e0b40f10564328700000000 {
"version": "02000000",
"inputcount": "01",
"inputs": [
{
"txid": "9945a5a440f2d3712ff095cb1efefada1cc52e139defedb92a313daed49d5678",
"vout": "01000000",
"scriptsigsize": "6a",
"scriptsig": "473044022031b6a6b7...672eee971dc",
"sequence": "ffffffff"
}
],
"outputcount": "01",
"outputs": [
{
"amount": "a702000000000000",
"scriptpubkeysize": "17",
"scriptpubkey": "a9148ce773d254dc5df886b95848880e0b40f105643287"
}
],
"locktime": "00000000"
} Transação: 05d350c8a65010bbe9d220b2accd7601b4c6541b7c6d7f5ad451efbcc07f8d66
Esta transação referencia a saída 1 da transação 78569dd4ae3d312ab9edef9d132ec51cdafafe1ecb95f02f71d3f240a4a54599, que tem um valor de 3453 sats. Em seguida, ela "envia" parte desse valor a outro endereço criando uma nova saída com valor de 679 sats.
Os 2774 sats restantes foram para o minerador como a taxa da transação.
Little-Endian. O campo de valor nas transações brutas está em little-endian. Então, se você converter a702000000000000 para big-endian, obtém 00000000000002a7, e em decimal isso é 679.
Valores das entradas. As entradas nos dados brutos da transação não contêm de fato o valor da saída que está sendo gasta. Para descobrir o valor dela, você precisa voltar à transação que criou a saída.
2. Duas Entradas
Esta transação tem duas entradas:
0200000002e925fec58184fe99a4789993b62963b0813851793350b1aec99f3e75466225a5190000006a473044022046e23b8f6b749a15b0571848fe2b86bfbe7e158b23f37fb0335be0a71f48a5dd022076640b2d39659c26224c9e67101b34e1394a38ff08a4bdd88d7503f63e54adc5012103b3e19c8169b81d15ec21f9d0f3ed4b2f18c7c9e1149ce5f7ddebed7732724b9fffffffffca45253a9f908429e09986454e83dfaab6ea30502356078477c81f57967a59641f0000006b483045022100f39a8b1f91e5293448a05c642362e510a718d1fc04e781a3778a51a1abb968a8022031ce768c5ff01c4899f24f8600d67777b3672c9e44ed5b1377672cfe89ef354b012103b3e19c8169b81d15ec21f9d0f3ed4b2f18c7c9e1149ce5f7ddebed7732724b9fffffffff01674275000000000017a91484504805e56355c8cb8fc06032ce352920edfc068700000000 {
"version": "02000000",
"inputcount": "02",
"inputs": [
{
"txid": "e925fec58184fe99a4789993b62963b0813851793350b1aec99f3e75466225a5",
"vout": "19000000",
"scriptsigsize": "6a",
"scriptsig": "473044022046e23b8f...ed7732724b9f",
"sequence": "ffffffff"
},
{
"txid": "ca45253a9f908429e09986454e83dfaab6ea30502356078477c81f57967a5964",
"vout": "1f000000",
"scriptsigsize": "6b",
"scriptsig": "483045022100f39a8b1f...ed7732724b9f",
"sequence": "ffffffff"
}
],
"outputcount": "01",
"outputs": [
{
"amount": "6742750000000000",
"scriptpubkeysize": "17",
"scriptpubkey": "a91484504805e56355c8cb8fc06032ce352920edfc0687"
}
],
"locktime": "00000000"
} Transação: 42563ae3e391d74de7160e64ebfc730885306faad799197b80ebe5fb1386b7a2
Esta transação referencia as seguintes saídas anteriores para usar como entradas:
- a5256246753e9fc9aeb1503379513881b06329b6939978a499fe8481c5fe25e9:25 (Valor = 1000000 sats)
- 64597a96571fc877840756235030eab6aadf834e458699e02984909f3a2545ca:31 (Valor = 6690000 sats)
Em seguida, ela cria uma nova saída com valor de 7684711 sats. O restante de 5289 sats foi como taxa da transação.
Então, como você pode ver, você pode reunir várias entradas para criar o valor total que quer enviar na transação, mas isso torna a transação maior.
3. Transação da Pizza (131 entradas)
Esta é a famosa transação da pizza, que tem 131 entradas:
a1075db55d416d3ca199f55b6084e2115b9345e16c5cf302fc80e9d5fbf5d48d (clique para ver a transação bruta)
Esta transação está reunindo muitas entradas menores para criar uma única saída grande de 10.000 BTC.
Esse tipo de transação costuma acontecer quando você recebeu vários pagamentos pequenos e quer enviar um valor grande de uma vez. É perfeitamente normal, mas significa que a sua transação vai ficar bem grande (em termos de bytes), então você pagará mais em taxas para conseguir minerá-la.
É mais econômico ter algumas saídas de alto valor na sua carteira do que muitas saídas de baixo valor. Quando as taxas estão baixas, às vezes é uma boa ideia consolidar muitas saídas pequenas em uma maior, para economizar em taxas quando você for fazer uma transação mais tarde, em que as taxas podem estar mais altas.
O maior número de entradas que já vi em uma transação está em 52539a56b1eb890504b775171923430f0355eb836a57134ba598170a2f8980c1, que contém 20.000 entradas no total.
Coinbase
Uma coinbase é um tipo especial de entrada encontrado nas transações coinbase.
A entrada de uma transação coinbase não precisa referenciar nenhuma saída anterior, pois a transação coinbase serve apenas para coletar a recompensa do bloco. Por isso, o TXID é definido como todo zeros, o VOUT é definido com o valor máximo, e o minerador é livre para colocar qualquer dado que quiser dentro do ScriptSig.
Por exemplo, esta é a transação coinbase do bloco 56.214:
01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff070453ec131c0108ffffffff0100f2052a01000000434104f5865dd3ec943e68f85e811ddb1f1cbad26933992e2d48941e1e040a71b3333ff51cb789348e6741bdf6d493e4394762f1b4542c97ae8640ed09d5a692b3c976ac00000000 {
"version": "01000000",
"inputcount": "01",
"inputs": [
{
"txid": "0000000000000000000000000000000000000000000000000000000000000000",
"vout": "ffffffff",
"scriptsigsize": "07",
"scriptsig": "0453ec131c0108",
"sequence": "ffffffff"
}
],
"outputcount": "01",
"outputs": [
{
"amount": "00f2052a01000000",
"scriptpubkeysize": "43",
"scriptpubkey": "4104f5865dd3ec943e68f85e811ddb1f1cbad26933992e2d48941e1e040a71b3333ff51cb789348e6741bdf6d493e4394762f1b4542c97ae8640ed09d5a692b3c976ac"
}
],
"locktime": "00000000"
} Transação: 7b9301882a8527588d697462c2e394fa3d522eb86de72cc12694420c4a91196b
Esta transação tem uma entrada que não referencia de fato nenhuma saída anterior para gasto, mas ainda assim consegue criar uma nova saída de 50 BTC, o que significa que esta transação é usada para a nova emissão de bitcoins.
BIP 34: Após a altura de bloco 227.836, o início do ScriptSig precisa conter a altura do bloco atual.
Seleção de Moedas
Você pode escolher as entradas da sua transação?
Se você está usando uma carteira de bitcoin para fazer uma transação, uma boa carteira permite que você selecione as suas próprias entradas para a transação.
Um bom exemplo de carteira que permite isso é a Electrum:
Então a carteira vai mostrar as saídas que você tem disponíveis para gastar, e você pode escolher quais quer usar como entradas na sua próxima transação. O benefício disso é que você pode escolher quais moedas ficarão associadas ao endereço de destino, o que pode ser benéfico para a privacidade.
Porém, muitas carteiras voltadas a iniciantes não têm esse recurso. Em vez disso, elas selecionam automaticamente a combinação mais eficiente de entradas para você, sem te sobrecarregar com a complexidade de escolhê-las. Isso é perfeitamente normal, mas, se você quer mais controle sobre as suas moedas, vai querer usar uma carteira que ofereça um recurso de "seleção de moedas" ou "coin control", em que você pode escolher as suas próprias entradas se quiser.