UTXO versus blockchain basate su account: funzionamento, differenze e applicazioni

Cosa sono le blockchain UTXO e account-based?
Le blockchain UTXO e account-based sono due modi diversi in cui una blockchain tiene traccia di chi possiede quale crypto e di come vengono elaborate le transazioni.
Esempi noti di blockchain che funzionano con il modello UTXO sono Bitcoin, Litecoin, Dogecoin e Bitcoin Cash. Cardano usa una variante più avanzata, il modello eUTXO, che rende possibili anche logiche più complesse e gli smart contract.
Esempi noti di blockchain account-based sono Ethereum, Solana e la C-Chain di Avalanche. In queste blockchain, lo stato viene mantenuto negli account, per esempio tramite saldi e altri dati salvati. Ethereum, per esempio, usa account con tra le altre cose un saldo e un nonce, mentre Solana salva tutto lo stato negli account.
UTXO è l’abbreviazione di Unspent Transaction Output: una parte di crypto proveniente da una transazione precedente che non è ancora stata spesa. Puoi immaginarla come dei piccoli biglietti digitali separati. Ogni biglietto ha un certo valore e può essere speso una sola volta.
Quando fai per esempio una transazione Bitcoin, usi uno o più UTXO esistenti come input. Dopo di che vengono considerati spesi. Allo stesso tempo nascono nuovi UTXO per il destinatario ed eventualmente per il resto che torna al mittente.
Un modello account-based funziona più come un normale conto bancario. Un account ha uno stato attuale, come un saldo che sale o scende quando le transazioni vengono elaborate. Su Ethereum, un account del genere contiene per esempio, oltre al saldo in ETH, anche un nonce e, a seconda del tipo di account, informazioni su codice e dati salvati.
La differenza più importante sta quindi nella gestione. Una blockchain UTXO tiene traccia di pezzi di valore separati e non ancora spesi, mentre una blockchain account-based tiene soprattutto traccia del saldo attuale e di altri dati per ogni account.
Questo non dice automaticamente nulla, per esempio, sul consenso, sulla privacy o sulle possibilità degli smart contract. Esistono inoltre modelli UTXO più avanzati, come eUTXO, che supportano anche logiche più complesse.
In breve
- Un modello UTXO tiene traccia del valore come output separati e non ancora spesi di transazioni precedenti.
- Un modello account-based tiene traccia di un saldo variabile e di altri dati per ogni account.
- Bitcoin usa il modello UTXO ed Ethereum è un noto esempio di blockchain account-based.
- Con UTXO, un output esistente viene consumato e ne vengono creati di nuovi.
- Entrambi i modelli possono avere transazioni pseudonime, ma facilmente tracciabili, su blockchain pubbliche.
Come funziona il modello UTXO?
Il modello UTXO funziona con pezzi separati di crypto che non sono ancora stati spesi. Un UTXO del genere deriva da una transazione precedente e può essere usato solo se vengono rispettate le condizioni associate. Di solito dimostri con una firma digitale di essere autorizzato a spendere quell’UTXO.
Quando crei una nuova transazione, questa fa riferimento a uno o più UTXO esistenti. La rete controlla poi se quegli UTXO non sono già stati spesi e se le condizioni sono state rispettate.
Importante da sapere: un UTXO non può essere consumato solo in parte. Una volta usato, l’intero UTXO viene speso. Per questo, quando fai un pagamento, spesso nascono più nuovi UTXO: uno per il destinatario e, se serve, uno per l’importo residuo che torna al mittente. Quest’ultimo viene anche chiamato change output.
Esempio: Immagina che il tuo crypto wallet possa spendere un UTXO da 1 BTC e che tu voglia inviare 0,4 BTC a qualcuno.
L’intero UTXO da 1 BTC viene allora usato come input. La transazione può per esempio inviare 0,4 BTC al destinatario e rimandare l’importo restante, dopo aver sottratto le commissioni di transazione, come nuovo UTXO a un indirizzo che controlli tu.
Il vecchio UTXO da 1 BTC non esiste più dopo questo. Al suo posto sono nati nuovi UTXO.
Il tuo saldo visibile quindi non è un singolo importo sulla blockchain. È la somma di tutti gli UTXO che il tuo wallet può spendere.
Anche il valore di una transazione è facile da controllare. Il valore totale dei nuovi output non può essere superiore al valore degli input usati. La differenza tra i due può andare come commissione di transazione al miner che produce il blocco.
In Bitcoin, a un UTXO possono essere collegate anche condizioni extra tramite script. Uno script del genere stabilisce a quali condizioni l’UTXO può essere speso. Questo rende Bitcoin programmabile per alcune forme di autorizzazione, ma il modello di script di Bitcoin è molto più limitato degli smart contract avanzati di Ethereum, per esempio.
Come funziona il modello account-based?
Il modello account-based funziona con account che hanno ciascuno uno stato attuale. Pensa per esempio a un saldo e a un nonce. Un nonce è un numero progressivo che tiene traccia di quante transazioni ha inviato un account. Così la rete può evitare che lo stesso ordine di transazione venga eseguito di nuovo.
Con una normale transazione ETH, il saldo del mittente diminuisce e quello del destinatario aumenta. Dopo di che il nuovo stato di entrambi gli account viene salvato su Ethereum.
Ethereum distingue due tipi di account:
- Externally owned accounts (EOA): account gestiti con una private key. Di solito sono gli account che gli utenti gestiscono tramite un wallet. Un EOA può avviare da solo una transazione.
- Account di contratto: account a cui è collegato codice di smart contract. Non hanno una private key e non avviano autonomamente una transazione esterna. Eseguono codice quando vengono chiamati da una transazione o da un altro contratto.
Una transazione da un EOA contiene tra le altre cose informazioni sulla destinazione, l’importo, il nonce, la firma, eventuali dati extra e quanto gas può essere usato al massimo. Il gas determina quanta potenza di calcolo Ethereum può usare per una transazione.
Se una transazione va solo a un account normale, per esempio si può inviare ETH. Se la transazione va a un account di contratto, la EVM, l’ambiente di esecuzione di Ethereum, può eseguire il codice di quel contratto.
Per questo una singola transazione può fare molto più che inviare solo ETH. Uno smart contract può per esempio spostare token, modificare dati salvati o chiamare altri smart contract.
I validatori controllano ed elaborano le transazioni secondo le stesse regole. Se la transazione è valida, i nuovi saldi e le altre modifiche diventano parte del nuovo stato di Ethereum.
Quali sono le differenze principali tra i due modelli?
La differenza più grande sta nel modo in cui una blockchain tiene traccia di ciò che qualcuno possiede.
In un modello UTXO, lo stato attuale è formato da pezzi separati di crypto che non sono ancora stati spesi. In un modello account-based, invece, ogni account ha uno stato attuale, come un saldo, un nonce ed eventualmente dati di contratto salvati.
Con UTXO usi output esistenti e ne nascono di nuovi. Con gli account, lo stato esistente viene modificato direttamente. Pensa per esempio a un saldo che diminuisce, a un nonce che aumenta o a dati in uno smart contract che cambiano.
Anche la doppia spesa viene evitata in modo diverso. Con UTXO, lo stesso output può essere usato una sola volta. In un modello account-based, il nonce aiuta a elaborare le transazioni dello stesso account nell’ordine corretto e a evitare che lo stesso comando venga eseguito di nuovo.
È troppo semplicistico dire che UTXO è adatto solo ai pagamenti e che le blockchain account-based servono solo per gli smart contract. Modelli UTXO avanzati, come eUTXO, possono supportare anche logiche più complesse e smart contract.
In pratica, inoltre, il funzionamento di una blockchain non dipende solo dal modello UTXO o account. Contano anche, per esempio, il crypto wallet, le commissioni di transazione, la macchina virtuale ed eventuali tecniche di privacy.
In cosa differiscono transazioni e gestione dei saldi?
In una transazione UTXO, il tuo wallet usa uno o più UTXO esistenti come input. Il wallet mette insieme abbastanza importi separati per poter pagare il trasferimento e le commissioni di transazione. Questo si chiama anche coin selection.
Gli UTXO scelti insieme valgono più dell’importo che vuoi inviare? Allora di solito nasce un nuovo UTXO con l’importo residuo. Questo viene chiamato change output.
Nel modello UTXO, quindi, il tuo saldo è formato da più UTXO separati che insieme costituiscono il tuo saldo totale disponibile.
In un modello account-based funziona diversamente. Un account ha un solo saldo che viene modificato direttamente. Se invii per esempio ETH, il saldo del tuo account scende e quello del destinatario sale.
Le transazioni dallo stesso account Ethereum hanno inoltre ciascuna un nonce. Così Ethereum sa in quale ordine devono essere elaborate quelle transazioni. Questo è importante, perché una transazione precedente può influenzare una successiva. Per esempio, il tuo saldo può cambiare oppure uno smart contract può avere nel frattempo uno stato diverso.
Una transazione Ethereum quindi non si può paragonare bene a un singolo input e a un singolo output. La transazione parte sì da un account, ma uno smart contract può durante l’esecuzione modificare più account, token e dati salvati.
In cosa differiscono privacy e tracciabilità?
Le blockchain pubbliche UTXO e account-based sono di solito pseudonime. Questo significa che un indirizzo non mostra automaticamente il tuo nome, ma che transazioni e indirizzi sono comunque pubblici sulla blockchain.
In Bitcoin si usano spesso indirizzi diversi per transazioni diverse. Anche il resto di una transazione può andare a un nuovo indirizzo. Per questo non è sempre subito chiaro quali indirizzi appartengano alla stessa persona.
Gli analisti però possono riconoscere dei pattern. Se per esempio più indirizzi vengono usati insieme come input per una sola transazione Bitcoin, questo può indicare che la stessa parte controlla quegli indirizzi. Ma non è una prova certa.
In Ethereum, le persone usano spesso lo stesso indirizzo account per molte attività diverse. Per questo transazioni, movimenti di token e interazioni con smart contract da quell’indirizzo possono essere collegati tra loro più facilmente.
Nessuno dei due modelli è automaticamente anonimo o più adatto alla privacy. Tecniche extra, come zero-knowledge proof, mixer o transazioni shielded, possono aumentare la privacy. Sono tecniche aggiuntive e non fanno parte in modo standard del modello UTXO o account.
Quali pro e contro hanno le blockchain UTXO e account-based?
Entrambi i modelli hanno punti forti e punti deboli. Quale approccio funzioni meglio dipende da ciò che una blockchain o un’applicazione deve fare.
Vantaggi del modello UTXO
-
Struttura delle transazioni chiara In una transazione UTXO è visibile con precisione quali output esistenti vengono usati e quali nuovi output nascono. Per questo il flusso di denaro all’interno di una transazione è facile da seguire.
-
Possibilità di elaborazione parallela Le transazioni che non usano gli stessi UTXO, in alcuni modelli UTXO, possono essere controllate in modo indipendente l’una dall’altra. Questo può lasciare spazio all’elaborazione parallela.
-
Controllo chiaro sulla doppia spesa Un UTXO può essere speso una sola volta. Una volta usato, non esiste più come output disponibile.
Svantaggi del modello UTXO
-
Più lavoro per i wallet Un crypto wallet deve decidere quali UTXO usare per un pagamento. Questo si chiama coin selection. Anche gli output di resto e un gran numero di piccoli UTXO devono essere gestiti.
-
Lo stato condiviso può essere più complicato Se più transazioni hanno bisogno dello stesso UTXO per eseguire la logica di un contratto, possono entrare in conflitto tra loro. Appena una transazione usa quell’UTXO, l’altra transazione potrebbe dover essere ricostruita con il nuovo stato.
Vantaggi del modello account-based
-
Gestione dei saldi semplice Un account ha un saldo attuale che viene modificato direttamente. Per questo un wallet non deve prima mettere insieme diversi UTXO separati.
-
Utile per stato condiviso e persistente Le blockchain account-based come Ethereum possono collegare i dati direttamente agli account e agli smart contract. Questo si adatta bene alle applicazioni in cui molte transazioni si basano sulle stesse informazioni salvate.
-
Adatto a smart contract complessi Uno smart contract può, durante una singola esecuzione, modificare diversi saldi, account e dati salvati. Questo rende il modello pratico per molti tipi diversi di applicazioni blockchain.
Svantaggi del modello account-based
-
Le transazioni dipendono di più dallo stato attuale L’esito di una transazione può dipendere dal saldo, dal nonce o dai dati del contratto nel momento in cui la transazione viene eseguita. Una transazione precedente può aver già cambiato quello stato nel frattempo.
-
L’ordine delle transazioni è importante Le transazioni dallo stesso account devono essere eseguite nel giusto ordine di nonce. Anche negli smart contract, l’ordine in cui le transazioni vengono elaborate può influenzare lo stato finale.
-
Più stato condiviso può rendere l’elaborazione più complessa Quando molte transazioni cercano di modificare gli stessi account o gli stessi dati di contratto, queste transazioni non sono sempre completamente indipendenti tra loro.
In breve: nessuno dei due modelli è automaticamente più veloce, più economico, più sicuro o migliore per la privacy. Queste caratteristiche dipendono dal progetto complessivo della blockchain e da come il modello UTXO o account viene sviluppato al suo interno.
Quando è adatto un modello blockchain o l’altro?
Un modello UTXO si adatta bene alle applicazioni in cui il valore viene tenuto come importi separati e ogni output può essere speso una sola volta. Questo funziona bene per esempio per i pagamenti, dove deve essere chiaro quali importi vengono usati e quali nuovi importi nascono dopo.
Se vuoi costruire applicazioni più complesse, un modello UTXO può comunque essere adatto. Varianti avanzate, come eUTXO, possono supportare anche smart contract e regole più complesse.
Per queste applicazioni, però, bisogna pensare bene a come più utenti lavorano contemporaneamente sugli stessi dati. Se molte transazioni hanno sempre bisogno dello stesso UTXO, possono entrare in conflitto. Distribuendo i dati su più UTXO, questi conflitti a volte si possono limitare.
Un modello account-based si adatta invece bene alle applicazioni in cui i dati vengono modificati spesso e più azioni si basano sullo stesso stato salvato. Su Ethereum, per esempio, una transazione può inviare ETH e allo stesso tempo chiamare uno smart contract che poi modifica i dati salvati.
Quale approccio sia più adatto dipende quindi non solo dall’etichetta UTXO o account-based. Guarda soprattutto a cosa deve fare l’applicazione, a quanti utenti vogliono modificare gli stessi dati nello stesso momento, a quanto sono complessi gli smart contract e all’esperienza d’uso che vuoi offrire con i wallet.
Conclusione
UTXO e blockchain account-based risolvono lo stesso problema di base, ma lo fanno in modo diverso. UTXO funziona con output separati, spendibili una sola volta, mentre un modello account tiene traccia di uno stato variabile per ogni account.
Per i pagamenti semplici la differenza si vede bene: con UTXO i vecchi importi digitali vengono consumati e ne vengono creati di nuovi, mentre con gli account i saldi vengono aggiornati. Nelle applicazioni più complesse, la scelta diventa più interessante. Le varianti UTXO possono supportare gli smart contract, e i modelli account possono anche trasferire valore senza problemi.
La cosa più importante quindi non è quale modello sia in generale migliore. Conta quale modello si adatta meglio a ciò che una blockchain o un’applicazione deve fare.