Vai al contenuto
buybitcoinsmart

Glossario / Transazioni e commissioni

Output di transazione

Noto anche come Output, TxOut.

Che cos'è un output di transazione?
Un output di transazione è un importo di bitcoin più il lock che decide chi potrà spenderlo in seguito, ed è l'unico luogo in cui il bitcoin esiste davvero.

Due campi ne formano uno solo: un importo di otto byte in satoshi e uno script che stabilisce la condizione per spenderlo. L'indirizzo che incolli in un modulo di prelievo non è altro che quello script in una codifica leggibile, ed è per questo che scegliere bech32 invece di un formato più vecchio è in realtà una scelta sul lock dietro cui staranno i tuoi bitcoin. Gli output costano poco da creare e molto da sbloccare in seguito.

Come funziona

Un output è un piccolo record in cui non è indicato il nome di alcun proprietario.

Il campo valore occupa 8 byte e contiene un numero intero di satoshi. Sessantaquattro bit sono generosi per una valuta con un tetto vicino a 2.100.000.000.000.000 satoshi, e usare numeri interi invece dei decimali è il motivo per cui la contabilità del bitcoin non ha errori di arrotondamento. Poi vengono un prefisso di lunghezza e lo script di blocco, chiamato scriptPubKey nel codice sorgente, che è un breve programma che chi spenderà in futuro deve soddisfare.

Script diversi producono dimensioni diverse e costi diversi. Un lock pay-to-public-key-hash occupa 25 byte di script, per un output complessivo di 34 byte. Un lock SegWit nativo occupa 22 byte, per un output di 31 byte. Un lock Taproot occupa 34 byte di script e 43 byte in totale. Le codifiche di indirizzo che riconosci corrispondono direttamente a questi lock: un prefisso 1, un bc1q, un bc1p.

La parola "lock" è più precisa di «proprietario». Lo script non registra una persona. Registra una prova, e chiunque riesca a superarla può spendere quei bitcoin, ed è esattamente per questo che una chiave privata va protetta e non è soltanto un accesso.

Contano altre due proprietà. Gli output sono numerati per posizione, a partire da zero, quindi il secondo output di una transazione è l'indice 1. E un output sotto la soglia dust, all'incirca 546 satoshi per un lock legacy e 294 per uno SegWit nativo, non viene ritrasmesso per impostazione predefinita, perché spenderlo costerebbe più di quanto contiene.

Dove lo vedi

Gli output sono la colonna di destra di ogni pagina di un block explorer, e in una spesa ce ne sono quasi sempre due.

Uno è il pagamento e l'altro è il resto, e nulla nella transazione dice quale sia quale. Questa ipotesi è la materia prima dell'analisi della blockchain, ed è per questo che un wallet che riutilizza il proprio indirizzo di resto è più facile da seguire di uno che non lo fa.

Gli output sono anche la memoria della rete. Ogni nodo completo conserva un database di tutti gli output non spesi, perché quell'insieme è esattamente ciò con cui va confrontata ogni nuova transazione. Un output che crei resta in quel database su decine di migliaia di macchine finché qualcuno non lo spende. Creare molti output minuscoli è quindi in parte antisociale oltre che costoso, e consolidarli è tanto una cortesia quanto un risparmio.

L'unica eccezione è deliberatamente non spendibile. Un output OP_RETURN trasporta dati e non può mai essere riscattato, quindi i nodi lo eliminano subito dall'insieme degli output non spesi invece di conservarlo per sempre.

Per chi compra bitcoin, la versione pratica è breve. Preleva verso un formato di indirizzo che il tuo io futuro ti ringrazierà di aver scelto, preferisci pochi prelievi grandi a molti piccoli, e ricorda che il saldo mostrato dal tuo wallet è solo la somma degli output attualmente bloccati su chiavi che esso gestisce.

Output di transazione vs UTXO

Un output è un record; un UTXO è uno stato che quel record ha solo finché nessuno lo ha speso. Ogni output mai creato è scritto per sempre in un blocco e può esservi letto anni dopo, ma nel momento in cui una transazione successiva lo referenzia smette di essere non speso ed esce dall'insieme di cui i nodi tengono traccia. Quindi ogni UTXO è un output, mentre la maggior parte degli output non è più un UTXO. La distinzione ha un risvolto pratico: il saldo del tuo wallet è la somma dei tuoi UTXO, non la somma di tutto ciò che è mai stato pagato ai tuoi indirizzi, e un block explorer che mostra un grande totale ricevuto su un indirizzo descrive la storia, non denaro che hai ancora.

Da non confondere con

Domande frequenti

Perché una transazione che ho inviato ha un output che torna a me?

È il resto. I bitcoin si spendono interi, quindi se il bitcoin che hai speso era più grande del pagamento più la commissione, il wallet crea un secondo output bloccato su un indirizzo che gestisce e ti restituisce la differenza.

Un output è la stessa cosa di un indirizzo?

No. Un indirizzo è una codifica testuale dello script di blocco che un output porta con sé. Molti output possono condividere un solo indirizzo, e un output contiene anche un importo e una posizione, nessuno dei quali è presente in un indirizzo.

Leggi anche

Termini correlati

Altro in Transazioni e commissioni

Leggi questa pagina in inglese