Vai al contenuto
buybitcoinsmart

Glossario / Transazioni e commissioni

Indice di output

Noto anche come vout.

Che cos'è un indice di output?
Un indice di output è la posizione di un output all'interno di una transazione, contata da zero, ed è il numero dopo i due punti quando vedi un output scritto come txid:1.

Le transazioni possono pagare decine di destinatari in una volta, quindi l'identificatore da solo non dice mai quale pagamento è il tuo. L'indice è memorizzato come un numero di quattro byte, che consente valori fino a 4.294.967.295, molti più output di quanti qualsiasi blocco potrebbe contenerne. Insieme all'ID della transazione forma un outpoint, l'indirizzo permanente di un output all'interno del registro.

Come funziona

Gli output sono ordinati, e l'ordine è quello con cui li ha serializzati chi ha creato la transazione. Il primo output è l'indice 0, il secondo è l'indice 1, e la numerazione prosegue fino alla fine della lista senza salti. Nulla dell'indice descrive l'importo, il destinatario o lo scopo dell'output; è una posizione e nulla più.

Ogni input di ogni transazione porta uno di questi numeri. Un input inizia con un riferimento di 36 byte: 32 byte di ID della transazione seguiti da un indice di quattro byte in little-endian. È così che una spesa dice quale output sta consumando, ed è per questo che i nodi possono verificare una spesa senza cercare in tutta la catena.

La transazione coinbase di ogni blocco rompe lo schema deliberatamente. Non avendo alcun output da spendere, il suo unico input punta a un ID della transazione di 32 byte nulli con l'indice impostato su 0xffffffff, il valore massimo che il campo può contenere. Qualsiasi cosa faccia riferimento a quell'outpoint è riconosciuta come denaro di nuova emissione e non come un trasferimento.

Anche la posizione rivela informazioni, ed è per questo che i wallet la trattano come un'impostazione di privacy. Se il resto finisse sempre all'indice 1, ogni osservatore potrebbe etichettare all'istante l'output di resto di ogni transazione. Bitcoin Core randomizza la posizione dell'output di resto, e il BIP69 ha proposto l'approccio opposto di ordinare input e output in un ordine lessicografico deterministico, così che dall'ordinamento non si possa dedurre nulla.

Dove lo vedi

Le schermate di coin control sono dove la maggior parte delle persone incontra il numero senza sapere come si chiama. Sparrow, Electrum e Bitcoin Core elencano ciascuno i tuoi bitcoin come un ID della transazione più un indice, perché due output della stessa transazione possono appartenere entrambi a te e solo l'indice li distingue.

Il batching degli exchange rende visibile il numero. Quando Kraken o Binance paga cento prelievi in una sola transazione, il tuo bitcoin si trova nella posizione che gli ha assegnato il software di batching, quindi vedere i tuoi fondi all'indice 87 di 120 output è del tutto normale e non è un segno che qualcosa sia andato storto.

Gli strumenti per sviluppatori lo chiedono direttamente. Il comando gettxout accetta un ID della transazione e un indice come argomenti separati, i file PSBT fanno riferimento agli input tramite outpoint, e i wallet hardware mostrano "output 2 of 3" sullo schermo mentre approvi una spesa. I servizi di assistenza che chiedono "il txid e il vout" chiedono la stessa coppia di valori.

Indice di output vs outpoint

Un indice di output da solo non significa nulla, perché l'indice 0 esiste in ogni transazione mai effettuata. Un outpoint è la coppia, ID della transazione e indice insieme, e identifica esattamente un output fra tutti quelli mai esistiti. La distinzione conta nel momento in cui incolli qualcosa in un campo di coin control o in una richiesta di assistenza: metà del riferimento non è un riferimento.

Da non confondere con

Domande frequenti

Che cosa significa vout in un block explorer?

È l'indice di output, la posizione di un output all'interno della sua transazione, a partire da zero. Gli explorer e l'output delle chiamate RPC usano vout come nome del campo, e i wallet spesso chiamano la stessa cosa numero dell'output.

L'output 0 è sempre il pagamento e l'output 1 sempre il resto?

No, e supporlo è una debolezza di privacy nota. Bitcoin Core randomizza la posizione dell'output di resto proprio perché gli osservatori non possano leggere l'intenzione dall'ordinamento.

Termini correlati

Altro in Transazioni e commissioni

Leggi questa pagina in inglese