utxo

All’inizio, quando si inizia a esplorare il mondo di Bitcoin, il concetto di proprietà digitale può creare un po’ di confusione. Ma quella di scambiare dati non è affatto un’idea nuova: lo facciamo da decenni con i pagamenti digitali. E l’unica cosa che gli utenti vedono sono i saldi che cambiano sui loro schermi.

È importante tuttavia notare che Bitcoin utilizza un sistema di contabilità diverso dai tradizionali database di denaro fiat per generare fondi e modificare i saldi. Il termine Bitcoin ci porta inevitabilmente a pensare che stiamo scambiando monete digitali, mentre in realtà il vostro saldo è costituito da una insieme di file controllabili conosciuti come UTXO (acronimo di Unspent Transaction Output, ovvero “output di transazioni non spese”).

UTXO come concetto essenziale per comprendere Bitcoin

L’UTXO e’ la somma di Bitcoin che non è stata spesa e che è disponibile per future transazioni – e che dunque si trova nel vostro wallet in questo momento. Un’UTXO può essere vista come una moneta digitale che esprime un valore specifico o una determinata quantità di satoshi sulla rete Bitcoin.

Ma facciamo un passo indietro: le operazioni in Bitcoin non sono altro che entrate e uscite. Quando si inviano o ricevono Bitcoin, si crea una nuova transazione. Gli input sono gli UTXO che si spendono e gli output sono i nuovi UTXO che vengono creati per il destinatario e, eventualmente, rinviati come resto a se stessi. Ogni UTXO ha un identificativo unico, che consiste nell’ID della transazione e nel numero dell’indice di uscita all’interno della transazione stessa.

Come viene creata una nuova UTXO?

Quando un nuovo blocco viene estratto nella rete Bitcoin, il miner che riesce a estrarre il blocco viene ricompensato con una quantità specifica di bitcoin appena coniati. Questa ricompensa è nota come block reward o transazione coinbase. La transazione coinbase crea una nuova UTXO (Unspent Transaction Output) che il miner può spendere in transazioni future.

Quella che segue e’ una descrizione generale di come viene creato un’UTXO durante il mining:

  1. Il miner costruisce un blocco: i miners raccolgono le transazioni non confermate dall’insieme di transazioni della rete Bitcoin (conosciuto anche come mempool) e le organizzano in un blocco, seguendo le regole del consenso. Oltre a queste transazioni, il miner crea anche una transazione speciale chiamata transazione coinbase.
  2. Transazione Coinbase: la transazione coinbase è unica perché non ha input. In essa vengono creati nuovi bitcoin dal nulla, fino alla ricompensa di blocco consentita, che consiste nella sovvenzione di base e nelle commissioni di transazione delle transazioni incluse nel blocco.
  3. Creazione di UTXO: nella transazione coinbase, il miner specifica un output, ovvero un indirizzo Bitcoin, come destinatario. Questo output rappresenta la ricompensa del blocco e crea una nuova UTXO, che il miner può utilizzare nelle transazioni successive. L’UTXO in questo caso è la ricompensa del miner per il lavoro svolto nell’estrarre il blocco e aggiungerlo alla blockchain.
  4. Convalida del blocco e aggiunta alla blockchain: dopo aver estratto con successo il blocco trovando una soluzione proof-of-work valida, il miner trasmette il blocco agli altri nodi della rete. Se la maggioranza dei nodi accetta il nuovo blocco come valido, questo viene aggiunto alla blockchain e l’UTXO appena creata nella transazione coinbase entra a far parte dell’insieme UTXO.

Come si forma un’UTXO?

Un’UTXO si forma ogni volta che avviene una transazione sulla rete Bitcoin. Immaginiamo che Anna debba inviare a Raffaello 0,5 BTC. Il portafoglio di Anna sceglierà una o più UTXO da usare come input, per un totale di almeno 0,5 BTC. Ora ipotizziamo che Anna abbia un’UTXO del valore di 1 BTC.

La transazione consiste in due uscite:

  • Una per i 0,5 BTC inviati a Raffaello,
  • un’altra uscita per i restanti 0,5 BTC, che serve come resto e torna ad Anna.

I 0,5 BTC inviati a Raffaello sono ora un nuovo UTXO, che può essere usato nelle prossime transazioni. Quando un’UTXO viene speso, viene consumato interamente ma nel frattempo se ne creano di nuovi. Questi ultimi possono essere utilizzati nelle transazioni seguenti, continuando così il ciclo di ingressi e uscite.

Che cos’è l’UTXO set?

L’UTXO set è la raccolta completa di tutti gli UTXO presenti nella rete Bitcoin in un determinato momento. È essenzialmente un database che aiuta a determinare il saldo di ogni indirizzo e a convalidare le nuove transazioni.

L’UTXO set è costantemente aggiornato man mano che si verificano nuove transazioni e che gli UTXO più vecchi vengono spesi. Questo set è fondamentale per mantenere l’integrità della rete e per prevenire il doppio utilizzo dei bitcoin nella rete. Ogni full node della rete Bitcoin conserva una copia completa dell’UTXO set.

Quando viene trasmessa una nuova transazione, i nodi controllano se gli ingressi corrispondono a UTXO validi nel set. Se gli input sono validi, i nodi aggiornano l’UTXO set, rimuovendo gli UTXO esauriti e aggiungendo quelli nuovi creati nella transazione. Questo meccanismo di consenso garantisce che solo le transazioni valide vengano aggiunte alla blockchain.

Pro e contro del modello UTXO

Vantaggi:

  1. Maggiore sicurezza
    Il modello UTXO fornisce un registro chiaro di tutte le transazioni e consente una facile verifica. Ciò rende difficile per i malintenzionati manipolare o spendere due volte le UTXO. La natura decentralizzata del set UTXO aumenta ulteriormente la sicurezza e l’integrità della rete Bitcoin.
  2. Elaborazione in parallelo
    Gli UTXO possono essere elaborati in parallelo, consentendo tempi di transazione più rapidi e una maggiore scalabilità. Poiché ogni UTXO è indipendente, i nodi possono convalidare più transazioni contemporaneamente, migliorando il rendimento complessivo della rete.
  3. Privacy
    Visto che le transazioni non fanno capo agli account o alle identità degli utenti, gli UTXO offrono un buon livello di privacy agli stessi. Sebbene non sia completamente anonima, la rete Bitcoin offre un buon livello di pseudonimato che rende difficile collegare direttamente le transazioni alle persone.
  4. Gestione semplificata del portafoglio
    I portafogli possono stabilire il saldo dell’utente tracciando i suoi UTXO, agevolando così la gestione dei fondi. Gli utenti possono anche scegliere quali UTXO spendere quando creano una transazione, in modo da ottimizzare le spese di transazione e salvaguardare la propria privacy.

Contro:

  1. Requisiti di archiviazione
    L’insieme di UTXO può crescere nel tempo, aumentando i requisiti di archiviazione e potenzialmente rallentando la convalida delle transazioni. I full node devono mantenere una copia dell’intero UTXO set, il che può diventare un problema con l’aumentare del numero di UTXO. Per risolvere questo aspetto, sono state introdotte alcune tecniche di pruning che aiutano a ridurre le dimensioni dell’insieme UTXO.
  2. Difficoltà
    Il modello UTXO può essere più difficile da comprendere per i nuovi utenti rispetto ai modelli basati sui conti, che sono più familiari a chi ha un background nei sistemi bancari tradizionali. Il concetto di input e output, così come la necessità di tracciare i singoli UTXO, possono costituire una barriera all’ingresso per alcuni utenti.
  3. Frammentazione
    Le UTXO piu’ piccole, conosciuti anche come “dust”, possono accumularsi nei portafogli, rendendo difficile o antieconomica la loro spesa nel lungo periodo. Quando il costo della spesa di un’UTXO è superiore al suo valore, gli utenti possono scegliere di non spenderlo, con conseguente disordine nell’insieme degli UTXO. Alcuni software di portafoglio consolidano automaticamente le dust UTXO per ridurre al minimo questo problema.
  4. Scalabilità
    Sebbene il modello UTXO consenta l’elaborazione parallela delle transazioni, deve comunque affrontare problemi di scalabilità. Con l’aumento del numero di transazioni, l’insieme di UTXO e la blockchain si ingrandiscono, il che potrebbe portare a tempi di elaborazione delle transazioni più lenti e a un aumento dei requisiti di risorse per i full nodes.

Un’UTXO può essere distrutta?

Un’UTXO (Unspent Transaction Output) di Bitcoin non può essere distrutta nel senso di essere rimossa permanentemente dalla circolazione. Un’UTXO esisterà sempre sulla blockchain.

Tuttavia, un’UTXO può essere considerata “distrutta” in termini pratici se la chiave privata associata all’indirizzo che controlla l’UTXO viene persa o distrutta. In questo caso, l’UTXO non è più accessibile e diventa non spendibile, eliminando di fatto la sua circolazione, poiché non c’è modo di recuperare la chiave privata perduta.

A volte, un’UTXO può essere resa intenzionalmente non spendibile inviandola a un “indirizzo burn”. Un indirizzo burn è un indirizzo Bitcoin valido senza chiave privata nota, che quindi rende i Bitcoin inviati a quell’indirizzo non spendibili. Sebbene l’UTXO tecnicamente esista ancora nell’UTXO set, è praticamente “distrutto” perché non può essere speso. Un progetto di sidechain chiamato counterparty utilizzava un indirizzo burn e il suo protocollo di “proof of burn” in passato ha distrutto molte UTXO.

In un certo senso, le UTXO vengono sempre distrutte. Quando un’UTXO viene spesa in una transazione, essa cessa di esistere come output non speso e diventa un output della transazione speso. L’UTXO viene “distrutta”, ma i Bitcoin sottostanti no. Al contrario, vengono trasferiti a un nuovo indirizzo e diventano parte di nuove UTXO che possono essere spesi in transazioni future. Questo processo garantisce che l’offerta totale di Bitcoin rimanga invariata.

Capire UTXO = capire Bitcoin

L’UTXO set di Bitcoin è una componente critica del funzionamento del sistema. Esso garantisce la sicurezza, la trasparenza, l’integrità dei fondi sulla timechain e che tutto rimanga verificabile dai full nodes. Pur comportando alcune sfide, i suoi vantaggi lo rendono un elemento essenziale della rete Bitcoin e delle sue varie soluzioni di scalabilita’.

Se avete intenzione di possedere Bitcoin, dovete capire come funzionano le UTXO. Con l’evoluzione del panorama Bitcoin e l’emergere di nuove tecnologie, è fondamentale comprendere i meccanismi sottostanti che supportano i vari nuovi protocolli su Bitcoin. Abbiamo già visto le UTXO utilizzate in soluzioni di secondo livello come i peg-in su Liquid e State Chains. Le UTXO inoltre sono di fondamentale importanza per gli HTLC e PTLC, che a loro volta permettono il funzionamento dei Lightning Channels.

Il modello UTXO ha dimostrato di essere un approccio solido ed efficace per la gestione delle transazioni nella rete Bitcoin. Comprendendone le complessità, sarete in grado di comprendere e partecipare alle conversazioni piu’ tecniche di Bitcoin.