Whitepaper – Com’è strutturata una transazione Bitcoin

Indice

Benvenuti alla nona puntata di approfondimento del Whitepaper di Bitcoin.

Questo paragrafo, sebbene breve e semplice a prima vista, è in realtà ricco di contenuti importanti.

Esploreremo la struttura delle transazioni Bitcoin e introdurremo per la prima volta le UTXO, ossia gli Unspent Transaction Outputs.

Preparatevi un buon caffè ed iniziamo 🙂

La vita con gli Euro

Immaginiamo di passare una serata romantica con la/il nostra/o compagna/o e di portarla/o fuori a cena.

Pizza, birra e dolcetto 😉

Totale 60 euro.

Prima di passare ad altro, sempre se la serata vi è andata bene…dovete saldare il conto del ristorante.

In tasca avete una banconota da 50 euro e una banconota da 20 euro.

Unite le due banconote per ottenere un totale di 70 euro e le date al ristoratore.

Il ristoratore vi restituirà i 10 euro di resto che finiranno nel vostro portafogli.

La vita con Bitcoin

Siete ora dei Bitcoiner e la/il vostra/o ragazza/o la/o portate solo in ristoranti che accettano Bitcoin.

Conto totale per pizza, birra e dolcetto 0.001 bitcoin.

Aprite il vostro wallet Bitcoin che contiene un totale di 0.0015 bitcoin dato dalla somma di due precedenti transazioni.

Effettuate il pagamento del conto e vi verranno restituiti 0.0005 bitcoin di resto.

Ed ecco a voi gli UTXO, Unspent Transaction Outputs.

Cosa sono gli UTXO?

Un UTXO si può definire come un importo ricevuto ma non ancora speso, come appunto un resto di un pagamento effettuato.

L’importo totale del wallet non è altro che la somma di tutti i suoi UTXO.

Com’è composta una transazione?

Nel whitepaper, Satoshi, descrive quanto abbiamo cercato di spiegare nel precedente esempio.

Se ci ragioniamo, non avrebbe senso dover creare singole transazioni per raggiungere l’importo da pattuire ma è decisamente più logico sommare tutti i resti presenti nel wallet ed inviare una transazione unica.

Esistono due scenari quando si effettua una transazione:

  1. Se l’importo da pagare è inferiore all’ammontare della transazione precedente, viene creata una transazione composta da un solo ingresso
  2. Se l’importo da pagare è maggiore o uguale all’ammontare della transazione precedente, si combinano più ingressi, dati dagli UTXO presenti nel wallet, che insieme raggiungono o superano l’importo della transazione da effettuare.

In entrambi i casi, la struttura di una transazione Bitcoin avrà due uscite: una destinata al pagamento e una, eventualmente, relativa al resto.

Un esempio pratico ci leverà ogni dubbio.

Il wallet di Pippo ha un totale di 0,23 bitcoin, dato dalla somma di 6 UTXO.

Il wallet di Berenice ha invece un totale di 0,1 bitcoin, dato da una precedente singolo UTXO.

Per l’acquisto della sua nuova mountain bike Pippo deve a Berenice un totale di 0,135 bitcoin.

esempio di una struttura di una transazione Bitcoin

Pippo, tramite il suo Wallet, conferma l’invio dei 0,135 btc a Berenice.

A questo punto il wallet prende, tra gli UTXO presenti, quelli necessari per arrivare o superare il pagamento richiesto considerando anche le commissioni da pagare ai miner per includere la transazione in un blocco e li trasforma in input della transazione.

Nell’esempio, gli UTXO assegnati come ingresso alla transazione sono l’UTXO1, di 0,1 btc, e l’UTXO2 di 0,04 btc. Per un totale di 0,14 btc, maggiore appunto dei 0,135 del pagamento da effettuare.

I full node, vista la richiesta della transazione Bitcoin, controlleranno che gli input siano validi, ovvero che siano UTXO non ancora spesi e che Pippo abbia effettivamente il diritto di spendere quegli UTXO.

Successivamente i miner, se le commissioni inserite sono per loro attraenti, prenderanno in carico la transazione per inserirla in un blocco della timechain.

Al termine di questo processo, gli input vengono segnati come spesi e generate due uscite, la prima diretta verso il wallet di Berenice di 0,135 Btc e la seconda relativa al resto da dare a Pippo pari a 0,005 btc meno la fee di 0,0001 btc dovuta al miner.

Completata la transazione si avrà che:

  • il wallet di Pippo avrà un totale di 0,0949 btc dato dalla somma di 5 UTXO
  • il wallet di Berenice avrà un totale di 0,235 btc dato dalla somma di 2 UTXO

Dall’esempio si possono fare le seguenti osservazioni:

  • Tutti gli input della transazione sono degli UTXO
  • La somma degli input della transazione è uguale alla somma degli output della transazione (meno le fee pagate ai miner)
  • Gli UTXO, una volta utilizzati vengono eliminati

Piccola nota:

Se si osserva una transazione generica, non si è sempre in grado di capire quale sia l’uscita destinata al pagamento e quale sia l’uscita destinata al resto. In alcuni casi può succedere che il resto sia più grande dell’importo.

Dove si trovano gli UTXO?

Gli UTXO sono depositati sulla timechain di Bitcoin. Ogni wallet ricostruisce il suo saldo interrogando il full node a cui è collegato.

Questo fatto porta ad un’altra conclusione importante: i Bitcoin in circolazione possono essere visti come la somma di tutti gli UTXO presenti. Il set degli UTXO disponibili è presente in tutti i full node della rete Bitcoin.

Ogni volta che una transazione viene convalidata i full node aggiornando il loro database eliminando gli input delle transazioni ed aggiungendo nel database gli output delle transazioni.

Si può facilmente concludere che ogni nuova transazione dipende dalle transazioni precedenti e queste, a loro volta, dipendono da molte altre ancora. Ma come afferma Satoshi, questo non è un problema.

Per ottimizzare l’efficienza e minimizzare l’uso di risorse non è necessario estrarre una copia completa e indipendente della storia di una transazione.

In altre parole, una volta che si sa quali sono gli UTXO che formano la transazione, non è necessario ripercorrere la storia di ciascuna transazione passata per assicurarsi che una nuova transazione sia valida.

Quando viene creata una transazione, gli input di questa transazione devono far riferimento a UTXO non spesi. Una volta che un UTXO viene utilizzato come input in una transazione, viene segnato come “speso” e non può essere utilizzato nuovamente.

Questo meccanismo impedisce la doppia spesa, poiché una transazione successiva che tenta di utilizzare lo stesso UTXO come input verrà rifiutata dalla rete come non valida.

Conclusioni

Gli UTXO sono un mattone fondamentale del protocollo Bitcoin, in quanto rappresentano la quantità di Bitcoin che un utente “possiede nel proprio wallet” e permette al protocollo di proteggersi dal problema della doppia spesa.

Ma attenzione però…..

La timechain di Bitcoin è un registro pubblico e di conseguenza tutti possono consultarlo e provare a tracciare il percorso degli UTXO. Questo può compromettere la privacy degli utenti, specialmente se le transazioni sono riconducibili a dati personali forniti in precedenza, come nel caso dell’acquisto di Bitcoin da un exchange centralizzato.

Se ad esempio acquistiamo Bitcoin da un exchange centralizzato, dove forniamo i nostri dati personali, e poi trasferiamo nel nostro wallet i Bitcoin acquistati, diventa facilissimo per un estraneo conoscere a chi appartiene il nostro wallet essendo l’UTXO riconducibile all’exchange di partenza.

Pertanto, è importante comprendere come gestire gli UTXO in modo preservare la nostra privacy e proteggere i proprio fondi.

Approfondiremo l’argomento Privacy nel prossimo articolo proseguendo l’analisi del Whitepaper di Bitcoin. Quindi…STAY TUNED!

Fonti e approfondimenti

Condividi questo post

Se apprezzi il lavoro che facciamo puoi aiutarci a mantenere i contenuti sempre di più aggiornati donandoci qualche Satoshi

CONTATTACI

Compila il form per qualsiasi richiesta di assitenza.