Pionieri della Blockchain
Menu
Home » Blockchain » UTXO e Account: i diversi modelli di transazione di Bitcoin e Ethereum

UTXO e Account: i diversi modelli di transazione di Bitcoin e Ethereum

11 Giugno 2019 20:30
Tempo di lettura: 8 min.
11 Giugno 2019 20:30
Giuseppe Brogna

La comprensione delle differenze tra il modello “UTXO” e il modello “Account Based”, rispettivamente di Bitcoin e Ethereum, è utile a offrire una panoramica più completa del funzionamento di queste diverse blockchain.

In genere chi si approccia per la prima volta al mondo delle criptovalute, è indotto a pensare che il wallet sia simile a un conto bancario.

Fermo restando che nel mondo blockchain le transazioni sono approvate in maniera decentralizzata, l’assimilazione a un conto bancario può essere vera per alcune criptovalute ma non per altre.

Bitcoin ed Ethereum, infatti, utilizzano diversi modelli di transazione per le rispettive blockchain, ciascuno con i propri specifici vantaggi e svantaggi rispetto all’altro.

Capire come funzionano da una prospettiva concettuale, serve a far comprendere la struttura complessiva di queste piattaforme e di altre con modelli uguali o simili.

Il modello di transazione utilizzato da una blockchain ha la funzione di dimostrare la proprietà sui token. Si tratta di modelli per tracciare lo stato del database. L’implementazione di ciascuno ha uno scopo e un ruolo specifico nella struttura più ampia della piattaforma.

Bitcoin si basa sullo schema UTXO (Unspent Transaction Output), mentre Ethereum utilizza il modello Account Based.

Vediamoli più nel dettaglio

Lo schema UTXO di Bitcoin

Il modello UTXO applicato in Bitcoin è un concetto più astratto rispetto al modello Account Based utilizzato in Ethereum.

Nel protocollo Bitcoin il proprietario dei token, in realtà, non possiede direttamente i token. Possiede l’output per un numero specifico di token, che può essere poi firmato come input per un altro proprietario che controllerà un nuovo output.

In altri termini, ogni transazione spende output di transazioni precedenti, generando nuovi output che potranno essere spesi da altre transazioni in futuro.

Il proprietario di un token può trasferirlo a un altro firmando digitalmente l’hash di una transazione precedente e la chiave pubblica (indirizzo) del prossimo proprietario.

La seguente immagine illustra le dinamiche di continua formazione e scomposizione di input e output:

Un esempio può essere utile per comprendere più agevolmente il funzionamento di questo modello di transazione:

  • Tizio possiede 6 bitcoin e vuole inviarne 5 a Caio. Caio al momento possiede già un output da 2 bitcoin.
  • Tizio non ha interamente 6 bitcoin, bensì tre output (ricevuti quindi da diverse transazioni) da 2 bitcoin ciascuno.
  • Per far ricevere i 5 bitcoin a Caio, il wallet di Tizio seleziona i tre output da 2 bitcoin per inviarli al destinatario.
  • Caio diventa il proprietario dei 5 bitcoin, avendo l’indirizzo richiesto, la chiave privata e la firma per dimostrare la proprietà sul nuovo output da 5 bitcoin.
  • Ricordiamo che Tizio ha inviato tre output da 2 bitcoin ciascuno. L’ulteriore 1 bitcoin che avanza dalla transazione, viene restituito come resto a Tizio, formando un nuovo UTXO da 1 bitcoin.
  • Ora Caio controlla due output: un output da 5 bitcoin e uno (che già aveva in precedenza) da 2 bitcoin. Tizio possiede solo un output (in precedenza ne aveva tre) da 1 bitcoin.

N.B. Per semplificare non ho tenuto conto delle fee pagate ai miner.

Il wallet di un utente tiene traccia di un elenco di UTXO associati a tutti gli indirizzi dell’utente. Il saldo del wallet viene calcolato come la somma di quegli output di transazione non spesi.

Ci sono 3 regole fondamentali nello schema UTXO:

  1. Ogni transazione deve dimostrare che la somma dei suoi input sia maggiore della somma dei suoi output.
  2. Ogni input incluso deve essere valido e non ancora speso.
  3. Per ogni input la transazione deve avere una firma corrispondente al proprietario dell’input.

Sul piano delle analogie, il modello UTXO può essere assimilato alle banconote o monete detenute in un portafoglio. Il valore del tuo portafoglio può essere determinato sommando tutte le banconote e monete (gli UTXO) in esso contenute.

Quando devi effettuare un pagamento, utilizzi una quantità di banconote o monete (UTXO esistenti) in grado di coprire il costo, ricevendo come resto la parte che avanza (un nuovo UTXO).

Se ad esempio devi pagare 9 euro, puoi usare due banconote (due UTXO) da 5 euro ciascuna. Riceverai come resto una moneta da 1 euro (un nuovo UTXO).

Il modello UTXO è molto più semplice del modello account in termini di scalabilità.

Attraverso lo schema UTXO è possibile l’esecuzione parallela su più indirizzi, favorendo un’infrastruttura più scalabile. Le transazioni possono essere eseguite in parallelo, poiché si riferiscono tutte a input indipendenti.

Un altro vantaggio del modello UTXO riguarda la privacy.

Poiché un utente può generare e utilizzare un nuovo indirizzo per ogni transazione, sarà più difficile collegare gli account, nonostante la trasparenza by design della blockchain. È pur vero che nel tempo sono state introdotte tecniche avanzate (c.d. chain analysis) per monitorare le transazioni e collegare gli account.

Sebbene il modello UTXO presenti dei vantaggi, per gli scopi specifici di una blockchain per pagamenti come Bitcoin, lo stesso mal si adatta a una piattaforma più complessa e general purpose come quella di Ethereum.

Ethereum utilizza un linguaggio di programmazione Turing complete (Solidity), e una delle sue caratteristiche principali sono gli smart contract. Per questi scopi il modello Account Based offre molta più semplicità rispetto al modello UTXO utilizzato da Bitcoin.

Il modello Account Based di Ethereum

La gestione del saldo nel modello Account Based, è molto più familiare rispetto allo schema UTXO di Bitcoin. Funziona in maniera simile al mondo bancario tradizionale.

Questo schema di transazione tiene traccia del saldo di ogni account come uno stato globale. Viene verificato il saldo di un account per assicurarsi che sia maggiore o uguale all’importo della transazione di spesa.

La seguente immagine è utile per comprendere il modello di transazione usato da Ethereum confrontandolo con quello di Bitcoin:

Il modello Account Based di Ethereum funziona in questo modo:

  • Tizio ha 10 ether e vuole inviarne 4 a Caio. Caio già dispone nel suo account di 3 ether.
  • Il sistema sottrae 4 ether dall’account di Tizio e incrementa di tale importo l’account di Caio.
  • Il saldo di Tizio è di 6 ether, mentre quello di Caio è di 7 ether (poiché in precedenza già disponeva di 3 ether).

Nel caso del modello UTXO di Bitcoin, abbiamo fatto un’analogia con un portafoglio contenente banconote e monete. La registrazione di dati su Ethereum è simile a quella del sistema bancario.

Ipotizziamo che tu voglia effettuare un pagamento con una carta di debito. La banca tiene traccia di quanti soldi dispone ciascuna carta di debito. Nel momento in cui devi spendere i soldi, per approvare la transazione, la banca controlla il suo registro di dati per assicurarsi che tu abbia sufficienti fondi.

Ovviamente, nel caso della blockchain, la sicurezza della rete e la validazione dello stato dipendono dalle regole del consenso decentralizzato, e non dall’approvazione di un’entità centrale.

Su Ethereum ci sono due tipi di account: account utente controllati con chiave privata (externally owned account) e account controllati da codice (smart contract).

Ethereum ha una notevole quantità di applicazioni decentralizzate che contengono codice e stati arbitrari. Non avrebbe senso utilizzare il modello UTXO di Bitcoin, poiché limiterebbe intrinsecamente la capacità di esecuzione degli smart contract.

In Ethereum ogni account ha il proprio saldo, spazio di archiviazione e di codice per chiamare altri account o indirizzi. Una transazione è valida se un account di invio ha abbastanza saldo da pagare la transazione.

Se l’account di ricezione ha codice, la chiamata di una funziona comporta l’esecuzione del codice, modificando qualsiasi cosa, dallo storage interno alla creazione di messaggi aggiuntivi che potrebbero avere effetti successivi su altri account.

I vantaggi del modello Account Based sono innanzitutto la semplicità e maggiore familiarità. Altri specifici vantaggi risiedono nel maggior risparmio di spazio e nella fungibilità.

Nel modello Account Based ogni transazione deve solo creare un riferimento e una firma che producano un output, contrariamente al design UTXO. Ciò consente notevole risparmio di spazio, che è fondamentale per una piattaforma tanto grande e complessa quanto Ethereum.

Peraltro, esiste un grado molto più elevato di fungibilità sulla blockchain di Ethereum rispetto a Bitcoin.

Gli utenti di Ethereum eseguono transazioni utilizzando chiamate di procedura remota, che rendono il tracciamento delle internal transaction molto più impegnativo rispetto a Bitcoin, in cui tutte le transazioni sono pubblicamente collegabili tracciando le firme digitali dello schema UTXO.

Il modello Account Based reca con sè indubbi vantaggi, ma limita la scalabilità della piattaforma.

Sebbene si tratti di un’implementazione necessaria, dovuta al design di Ethereum, i problemi di scalabilità che circondano lo sviluppo di Ethereum sono ben radicati. Hanno fatto accelerare la ricerca e lo sviluppo verso una nuova versione di Ethereum in grado di poter soddisfare le esigenze dell’industria nascente.

Un altro inconveniente del modello Account Based risiede nel rischio di double spend. L’attaccante potrebbe trasmettere più volte alla rete la stessa transazione per vedersi accreditato un numero maggiore di token.

Ethereum previene questa possibilità attraverso l’utilizzo di un “nonce” che attribuisce ordine alle transazioni.

Ogni transazione di un account è numerata in sequenza, a partire da 0 per la prima transazione. Ad esempio, se il nonce di una transazione è 10, sarà l’undicesima transazione inviata dall’indirizzo del mittente.

In definitiva, le blockchain includono una serie diversificata di concetti di progettazione e meccanismi tecnici finalizzati a far sì che la piattaforma sia in grado di funzionare come un sistema attuabile, sicuro e utilizzabile.

Lo schema UTXO funziona bene per Bitcoin, mentre il modello Account Based utilizzato in Ethereum è orientato a supportare le sue più complesse esigenze applicative.

Successive iterazioni delle blockchain potrebbero modificare e ottimizzare questi meccanismi per adattarsi meglio allo sviluppo futuro delle rispettive reti.



3 VIDEO GRATUITI DALLA DM CRIPTO












Ti invieremo i
VIDEO GRATUITI
e in più, n
elle email successive, il frutto delle nostre ricerche più avanzate sulle criptovalute e i nostri servizi legati ad esse.

Tratteremo i tuoi
dati personali
con la massima cura e in conformità della normativa privacy GDPR UE2016/679. E potrai disiscriverti in qualsiasi momento con un semplice click.


Condividi

CATEGORIE:

Blockchain


Giuseppe Brogna

Giuseppe è laureato in giurisprudenza, da sempre appassionato di tecnologia e studioso di tematiche economiche. Stimolato dal potenziale impatto economico e sociale, si approccia al mondo delle DLT; matura particolari interessi nella nuova finanza decentralizzata legata alle tecnologie del ledger distribuito.


Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Condividi questo articolo

Invia questo articolo ad un amico