Saída (Output)

Um pacote de bitcoins criado em uma transação

Uma saída (output) é um pacote de bitcoins criado em uma transação.

Você pode criar várias saídas em uma transação, onde cada saída contém um valor de bitcoin e uma trava. Uma transação futura pode então gastar essas saídas (como entradas), destravando-as, e criar novas saídas com novas travas. Então as saídas são os blocos de construção para enviar e gastar dinheiro no bitcoin.

Uma transação só pode gastar saídas não gastas anteriormente, e, uma vez que uma saída foi gasta, ela não pode ser gasta de novo.

Cofres de Segurança

É mais fácil pensar em uma saída como um cofre de segurança. Ao fazer uma transação, você está selecionando um cofre existente, abrindo-o e movendo seu conteúdo para novos cofres. As travas que você coloca nesses cofres impedem que outra pessoa os abra (a não ser a pessoa para quem você quer "enviar" os bitcoins). Você pode pensar na blockchain como um grande cofre cheio de cofrinhos de segurança — ou, como os chamamos no Bitcoin, saídas.

Troco

Ao gastar uma saída, você precisa consumir o valor inteiro dela; não dá para abrir uma saída e gastar só parte dos bitcoins, deixando o resto travado na saída original. Então, se a saída contém mais bitcoins do que você quer enviar, você precisa criar uma saída de troco para enviar o restante de volta para você. A maioria das transações usa uma saída de troco (tipicamente a última saída da transação).

Qualquer quantidade de bitcoins que não seja travada em saídas é classificada como a taxa de transação e recolhida por um minerador. Então, se você esquecer de adicionar uma saída de troco, perderá alguns bitcoins.

Estrutura

O que uma saída de transação faz?

Uma saída em uma transação bruta é só um valor (um inteiro) junto com um script de travamento. A estrutura se repete para cada saída:

CampoTamanhoFormato
Valor8 byteslittle-endian
Tamanho do ScriptPubKeyvariávelcompact size
ScriptPubKeyvariávelbytes

Valor

O campo valor tem 8 bytes e pode conter valores entre 0 e 18446744073709551615. Ele está em little-endian (os bytes aparecem "ao contrário" nos dados brutos) e é medido em satoshis (1 satoshi = 0,00000001 BTC).

Ícone Ferramenta Conversor de Unidades
Ícone Ferramenta

Conversor de Unidades

Converta entre as unidades comuns de bitcoin.

O total das saídas de uma transação não pode exceder o total das entradas.

Tamanho do ScriptPubKey

Contém o tamanho do script de travamento a seguir. É um campo compact size, então normalmente tem 1 byte, mas pode se expandir para scripts grandes.

Ícone Ferramenta Compact Size
Ícone Ferramenta

Compact Size

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

ScriptPubKey

O campo ScriptPubKey contém a trava que você quer colocar na saída. Há vários tipos de travas, mas a mais comum é travar a saída à chave pública de alguém (ou seja, ao endereço dela) — esses tipos de trava são chamados de P2PKH e P2WPKH.

É tecnicamente possível o campo ScriptPubKey estar vazio. Porém, isso significaria que não há trava na saída, então qualquer um poderia gastá-la.