Cos'è un output di transazione non speso (UTXO) di Bitcoin?

Di Kraken Learn team
10 min
20 nov 2024

Guida per principianti al modello UTXO di Bitcoin 📕

L'output di transazione non speso (UTXO) è la tecnica che il protocollo Bitcoin utilizza per tracciare i saldi quando si spostano tra i wallet crypto.

Per quanto riguarda il tracciamento e la gestione dei saldi crypto individuali, i protocolli basati su blockchain solitamente utilizzano uno dei due diversi modelli contabili.

Uno è chiamato modello Account/Balance. Progetti come Ethereum, Tezos e EOS utilizzano questo modello per tracciare i saldi quando gli utenti della blockchain eseguono le transazioni. L'altro è chiamato modello Unspent Transaction Output (UTXO). 

Bitcoin e molte altre criptovalute come Litecoin, Cardano e Dogecoin utilizzano il modello UTXO. 

Ma di cosa si tratta esattamente, come funziona e quali sono i vantaggi del modello UTXO rispetto al modello Account/Balance?

BTC icon
$78.287.00
+0,70%
24h
btc

Comprensione del modello UTXO 💻

Storia

Adam Back e il compianto Hal Finney erano due membri del gruppo di crittografia Cypherpunk frequentato da Satoshi Nakamoto, l'autore del white paper di Bitcoin. A entrambi è attribuito lo sviluppo indipendente del modello UTXO, rispettivamente tra il 1997 e il 2004. 

Quando il creatore di Bitcoin, Satoshi Nakamoto, ha lanciato il protocollo nel 2009, questo è diventato il primo sistema di valuta digitale operativo a implementare il modello UTXO.

Sia Hal Finney che Adam Back sono stati a lungo sospettati di essere Satoshi Nakamoto, anche se non è mai stato provato con certezza.

UTXO in sintesi

Quando invii bitcoin a qualcuno, vengono eseguiti diversi passaggi a livello di programmazione. Uno dei primi passaggi del processo di transazione consiste nella scansione della blockchain da parte del tuo wallet di criptovalute per verificare l'importo dei fondi che possiedi. Questi fondi sono noti come output di transazione non spesi (UTXO).

Puoi pensare agli UTXO come al resto avanzato da precedenti transazioni in bitcoin.

I fondi sono considerati “non spesi” perché sono liberamente disponibili per essere inviati a qualcuno o spostati su un altro wallet. Sono chiamati “output di transazione” perché sono stati creati da transazioni precedenti.

Se spendi 12 $ per il pranzo usando una banconota da 20 $, ti resterebbero 8 $. In questo esempio, gli 8 $ rimanenti sarebbero un output di transazione non speso. Tornerebbero nel tuo portafoglio, pronti per essere utilizzati per un altro acquisto.

È esattamente così che funzionano gli UTXO di bitcoin. Quando effettui una transazione, gli output delle transazioni precedenti in bitcoin, ovvero il tuo resto in bitcoin, vengono utilizzati come input per le nuove transazioni.

Un'altra analogia fondamentale tra le transazioni in contanti e gli UTXO è che entrambi devono essere spesi per intero e non possono essere suddivisi. Se hai un UTXO da 5 bitcoin e vuoi inviare 1 BTC a qualcuno, dovrai inviare l'intero UTXO del valore di 5 bitcoin e ricevere in cambio un nuovo UTXO del valore di 4 BTC, meno le eventuali commissioni. 

Proprio come nell'esempio precedente, in cui si consegna un'intera banconota da 20 $ per pagare un pranzo da 10 $.

Quando un UTXO viene speso, è considerato “consumato” e viene tecnicamente rimosso dalla circolazione. 

L'eventuale resto viene generato come un UTXO completamente nuovo. Questa parte del sistema UTXO è il modo in cui Bitcoin risolve il problema della doppia spesa

Così come non è possibile dare fisicamente a un negoziante una banconota da 5 $ e poi dare la stessa banconota a qualcun altro, un utente di bitcoin non può utilizzare con successo lo stesso output di transazione non speso in due transazioni digitali separate.

Quando una persona tenta di spendere due volte lo stesso UTXO, le due transazioni finiscono in una mempool, una sorta di sala d'attesa per le transazioni in sospeso. Rimangono qui finché i miner che vincono la competizione proof-of-work non le raggruppano in nuovi blocchi.

Puoi scoprire di più su questo processo nel nostro articolo del Kraken Learn Center Cos'è il mining di bitcoin?

Anche se entrambe le transazioni venissero raggruppate in due blocchi separati ed elaborate simultaneamente, a causa del timestamping, una delle transazioni verrebbe verificata prima dell'altra. Dopo un certo numero di conferme (nuovi blocchi aggiunti alla blockchain), gli altri nodi segnalerebbero la seconda transazione non valida, rifiutandola.

Transazioni coinbase

L'unico caso in cui una transazione bitcoin non ha input è quando vengono creati nuovi BTC dal mining.

Nota come transazione coinbase, questa rappresenta la prima transazione in ogni nuovo blocco.

Ogni satoshi (la sotto-unità di bitcoin) in circolazione può essere tracciato utilizzando il registro trasparente della blockchain fino alla rispettiva transazione coinbase.

Perché Bitcoin usa il modello UTXO?

Saldo del conto

Per identificare il saldo di un utente, noto anche come set di UTXO, il software del wallet crypto scansiona la blockchain per trovare tutti gli UTXO associati al corrispondente indirizzo pubblico del wallet.

La somma totale di tutti gli UTXO fornisce un resoconto accurato della quantità di crypto controllata dal proprietario di un wallet.

Quando un UTXO viene speso, l'indirizzo pubblico del wallet del destinatario viene assegnato all'importo e un nuovo UTXO viene registrato sulla blockchain una volta eseguito.

Archiviazione

Gli UTXO di Bitcoin sono registrati in varie transazioni che vengono archiviate in blocchi sulla blockchain di Bitcoin. Tuttavia, queste informazioni non sono indicizzate in modo chiaro, quindi può essere difficile cercare e raccogliere rapidamente i metadati. 

Quando si utilizza un software wallet come il client Bitcoin Core, i metadati degli UTXO vengono archiviati e indicizzati utilizzando un database LevelDB. LevelDB è un sistema di archiviazione open-source creato da Google nel 2011 e rende molto più veloce l'individuazione degli UTXO.

Il client Bitcoin Core è un software molto diffuso utilizzato per connettersi alla rete blockchain di Bitcoin. Creato originariamente da Satoshi Nakamoto, Bitcoin Core è ora mantenuto da una community di sviluppatori volontari.

UTXO sotto il cofano 🚗

A un livello più tecnico, una transazione è composta da quattro parti principali:

  • Versione: informa i nodi della rete sulla versione del software client in uso. Versioni diverse seguono regole diverse per la verifica dei dati della transazione.
  • Locktime: è il parametro che definisce il momento più prossimo in cui una transazione può essere aggiunta alla blockchain. Questo input stabilisce l'orario più vicino possibile per l'elaborazione della transazione da parte dei nodi di mining.
  • Input: informazioni che indicano la fonte dei fondi o la transazione precedente in cui è stato prodotto l'UTXO. L'input contiene anche il cosiddetto “unlocking script”.
  • Output: informazioni relative al valore trasferito, al wallet a cui viene riassegnata la proprietà dei fondi e ai nuovi UTXO formati. L'output contiene anche un “locking script”.

Come gli UTXO si differenziano dal denaro contante

Le differenze principali tra l'analogia con le banconote fisiche e il modello UTXO sono che i bitcoin e gli altri crypto-asset basati su UTXO non sono vincolati a importi prestabiliti, come 5 $, 10 $, 15 $, ecc. Qualsiasi importo di bitcoin (fino a otto cifre decimali) può essere un output di transazione non speso. 

Ad esempio, potresti avere 0,0003847 BTC rimasti da una transazione.

Questo importo diventerebbe un nuovo UTXO che, se utilizzato, deve essere speso per intero e non può essere suddiviso in importi più piccoli.

Supponiamo che John abbia un saldo di 1 bitcoin nel suo wallet crypto. Il suo saldo e la composizione di tale saldo sono due cose diverse, più o meno come quando hai 100 $ nel portafoglio, che potrebbero essere composti da quattro banconote da 20 $, due da 5 $ e una da 10 $.

Supponiamo che la composizione del saldo di 1 BTC di John sia costituita da 5 diversi output di transazioni non spesi.

  • 0,138 BTC
  • 0,1 BTC
  • 0,004 BTC
  • 0,73 BTC
  • 0,028 BTC

John vuole inviare 0,6 BTC a Jane. Per farlo, il software del wallet di John raggrupperà automaticamente un numero sufficiente di UTXO da lui controllati per coprire questa transazione, più le eventuali commissioni dei miner necessarie per elaborarla.

In questo esempio, supponiamo che il software del suo wallet invii automaticamente a Jane l'UTXO di bitcoin di John del valore di 0,73 BTC e restituisca a John l'importo rimanente, al netto delle commissioni di transazione, come un nuovo UTXO.

Questo importo viene inviato automaticamente a un indirizzo di resto, ovvero un indirizzo separato collegato al tuo wallet crypto.

Script di blocco e sblocco 🔒

Quando vengono creati gli UTXO, questi vengono bloccati utilizzando l'indirizzo pubblico del wallet del destinatario. Per utilizzare tale UTXO come input in una nuova transazione, deve essere prima sbloccato utilizzando la firma digitale del mittente.

Questo è un altro aspetto importante da comprendere sulle transazioni bitcoin. Quando viene effettuata una transazione, i bitcoin non vengono spostati digitalmente da un conto all'altro. Vengono invece sbloccati, riassegnati a un nuovo proprietario e poi bloccati di nuovo.

Ciò significa che solo il nuovo proprietario può sbloccare i fondi utilizzando la propria firma digitale e trasferirli altrove, a un'altra persona o a un altro wallet sotto il suo controllo.

Script è un linguaggio di programmazione utilizzato da Bitcoin per elaborare le transazioni, compreso il blocco e lo sblocco degli UTXO. 

  • Script di blocco (ScriptPubKey): quando un UTXO viene bloccato, lo script di blocco (noto come ScriptPubKey) stabilisce le condizioni che devono essere soddisfatte prima che l'UTXO possa essere utilizzato come input. Di solito si tratta di dimostrare di possedere la chiave privata che corrisponde all'indirizzo pubblico del wallet utilizzato per bloccare l'UTXO, fornendo una firma digitale.
  • Script di sblocco (ScriptSig): per sbloccare un UTXO, è necessario soddisfare le condizioni stabilite dallo script di blocco, ovvero fornire una firma digitale che dimostri di controllare le chiavi private corrispondenti alla chiave pubblica utilizzata per bloccare l'UTXO.

Questo impedisce a chiunque altro di accedere e spendere tali fondi.

 

Cos'è la Bitcoin dust?

La polvere di Bitcoin si riferisce a UTXO che contengono quantità minime di satoshi, residui di transazioni precedenti.

Presi singolarmente, questi importi minuscoli di BTC costerebbero, in commissioni di transazione, più del loro valore effettivo. Per questo motivo, spesso rimangono negli indirizzi di resto in attesa di essere raggruppati con altri UTXO e spesi.

Cos'è un dusting attack?

I dusting attack si verificano quando i truffatori inviano dust a centinaia di migliaia di indirizzi di wallet diversi. Lo scopo è quello di individuare potenziali bersagli per attacchi di ingegneria sociale.

Un truffatore terrà d'occhio gli indirizzi contenenti la dust che ha inviato, aspettando che il proprietario effettui una transazione che raggruppi gli UTXO di diversi indirizzi collegati al suo wallet. Poiché gli UTXO di dust sono così piccoli, è molto probabile che vengano raggruppati con altri e utilizzati come input.

Una volta che ciò accade, il truffatore può farsi un'idea dei fondi che una persona possiede. Può quindi scegliere di inserire messaggi di phishing nelle transazioni, invitando il proprietario a fare clic su un link che scarica malware, o a visitare siti web falsi che imitano landing page legittime e chiedono informazioni personali.

Quanto sono pericolosi i dusting attack di bitcoin?

Gli attacchi dusting non consentono ai truffatori di accedere ai tuoi fondi.

Servono semplicemente a individuare quali indirizzi sono controllati da un determinato crypto wallet.

Per ridurre al minimo il rischio di attacchi dusting, è meglio non fare mai clic sui link o visitare i siti web associati alle transazioni dust.

Inizia ad acquistare Bitcoin

Ora che hai imparato tutto sul modello UTXO, sei pronto a continuare il tuo viaggio nel mondo delle crypto e ad acquistare bitcoin?

Consulta la nostra guida del Kraken Learn Center per maggiori informazioni su Come acquistare Bitcoin (BTC) e registrati oggi stesso su Kraken.

Alcuni contenuti di questa pagina potrebbero essere stati tradotti utilizzando l'IA