Glossário / Transações e taxas
Índice de saída
Outros nomes: vout.
- O que é um índice de saída?
- Um índice de saída é a posição de uma saída dentro de uma transação, contada a partir de zero, e é o número depois dos dois pontos quando um bitcoin aparece descrito como txid:1.
As transações podem pagar dezenas de destinatários de uma só vez, então o identificador sozinho nunca diz qual pagamento é o seu. O índice é armazenado como um número de quatro bytes, o que permite valores de até 4.294.967.295, muito mais saídas do que qualquer bloco poderia conter. Junto com o ID da transação, ele forma um outpoint, o endereço permanente de uma saída dentro do registro.
Como funciona
As saídas são ordenadas, e a ordem é aquela em que o criador da transação as serializou. A primeira saída é o índice 0, a segunda é o índice 1, e a numeração segue até o fim da lista sem lacunas. Nada no índice descreve o valor, o destinatário ou a finalidade da saída; é uma posição e nada mais.
Toda entrada de toda transação carrega um desses números. Uma entrada começa com uma referência de 36 bytes: 32 bytes de ID da transação seguidos de um índice de quatro bytes em little-endian. É assim que um gasto diz qual saída está consumindo, e é por isso que os nós podem verificar um gasto sem procurar na cadeia inteira.
A transação coinbase de cada bloco quebra o padrão de propósito. Como não tem saída alguma para gastar, sua única entrada aponta para um ID de transação de 32 bytes zero com o índice em 0xffffffff, o valor máximo que o campo pode conter. Qualquer coisa que faça referência a esse outpoint é reconhecida como dinheiro recém-emitido, e não como uma transferência.
A posição também vaza informação, e é por isso que as carteiras a tratam como um ajuste de privacidade. Se o troco caísse sempre no índice 1, qualquer observador poderia rotular na hora a saída de troco de cada transação. O Bitcoin Core randomiza onde fica a saída de troco, e o BIP69 propôs a abordagem oposta, de ordenar entradas e saídas em uma ordem lexicográfica determinística para que nada possa ser deduzido da ordenação.
Onde você vê isso
As telas de controle de moedas são onde a maioria das pessoas encontra o número sem saber seu nome. A Sparrow, a Electrum e o Bitcoin Core listam cada uma seus bitcoins como um ID de transação mais um índice, porque duas saídas da mesma transação podem pertencer as duas a você e só o índice as distingue.
O agrupamento em lote das corretoras torna o número visível. Quando a Kraken ou a Binance paga cem saques em uma única transação, seu bitcoin fica na posição que o software de agrupamento lhe deu, então ver seu dinheiro no índice 87 de 120 saídas é completamente normal e não é sinal de que algo deu errado.
As ferramentas para desenvolvedores pedem o número diretamente. O comando gettxout recebe um ID de transação e um índice como argumentos separados, os arquivos PSBT fazem referência às entradas por outpoint, e as carteiras de hardware mostram "output 2 of 3" na tela enquanto você aprova um gasto. Os setores de suporte que pedem "o txid e o vout" estão pedindo esse mesmo par de valores.
Índice de saída vs outpoint
Um índice de saída sozinho não significa nada, porque o índice 0 existe em todas as transações já feitas. Um outpoint é o par, ID da transação e índice juntos, e identifica exatamente uma saída entre todas as que já existiram. A distinção importa no momento em que você cola algo em um campo de controle de moedas ou em um chamado de suporte: metade da referência não é uma referência.