UTXO o Unspent transaction output (output di transazione non speso) è uno dei concetti centrali che permettono il corretto funzionamento della tecnologia blockchain che Satoshi Nakamoto ha sviluppato per Bitcoin, la prima criptovaluta al mondo.
Ddecenni prima che fosse creato Bitcoin, l'ossessione di creare un denaro puramente digitale perseguitava la testa di molte persone. Ma uno dei problemi principali su cui tutti si sono imbattuti è stato il famoso la doppia spesa:.
Era Satoshi Nakamoto che, grazie ad un insieme di tecniche, ha risolto questo grande problema, riuscendo a creare la prima moneta decentralizzata prettamente digitale. In questo articolo spiegheremo cosa sono gli UTXO e il grande ruolo che svolgono nella creazione di transazioni in modo che i tuoi bitcoin possano viaggiare in sicurezza all'interno del protocollo. blockchain.
UTXO, un concept per evitare la doppia spesa
Come abbiamo già spiegato nell'articolo Come funzionano le transazioni in Bitcoin?, una transazione è composta da input e output. L'insieme di input e output, insieme alle monete da inviare e alle firme crittografiche, si traduce in un hash della transazione, chiamato HASH ID.
Le voci sono l'ID HASH di una transazione che ha ricevuto l'estensione portafoglio e che non sono stati utilizzati in precedenza, ovvero sono UTXO, mentre l'output è l'indirizzo di destinazione, per il quale verrà creato UTXO che potrà essere successivamente utilizzato in una transazione. Lo stesso indirizzo può avere UTXO infinito. Questo è il motivo per cui gli UTXO sono definiti come un insieme di transazioni.
Quando una persona ha bisogno di inviare una transazione, deve nutrirsi di UTXO. Cioè, da transazioni ricevute che non sono state spese. Ciò significa che una persona può utilizzare uno o più UTXO per la stessa transazione. In effetti, quegli UTXO possono far parte di uno o più indirizzi nel tuo portafoglio. E andiamo oltre, anche una transazione potrebbe essere creata con indirizzi UTXO da portafogli diversi, purché ciascuno sia firmato con la corrispondente chiave privata in chiaro.
Tutto questo porta a un posto: un UTXO può essere utilizzato solo una volta. E questo è fondamentale all'interno del funzionamento della tecnologia blockchain, poiché fa parte dell'insieme di strumenti che garantisce che alcune monete non vengano utilizzate più di una volta (la famosa doppia spesa).
Tale è l'affidabilità dell'utilizzo di questo meccanismo per identificare le monete non spese che è il modo in cui Bitcoin può essere contato quante monete sono in circolazione. Quello che si fa è sommare tutte le monete che si trovano nell'UTXO, cioè nelle transazioni che non sono state spese.
Successivamente, ti lasciamo un semplice esempio in modo che tu capisca il flusso:
Immagina che Maria voglia pagare a Pedro un totale di € 100 in bitcoin per un lavoro. María spera di ricevere il pagamento da alcune persone che le devono i suoi bitcoin e da quei soldi pagherà per il lavoro di Pedro.
Quando Maria riceve questi pagamenti, ha avuto alcune "entrate" di denaro, e da quelle entrate farà un "output" per pagare Pedro. Maria è stata pagata i suoi debiti, che erano un pagamento di € 75 e un altro di € 50.
Quando paga Pedro, Maria deve usare entrambi gli ingressi, poiché nessuno dei due ne ha abbastanza, e metterà Pedro come uscita.
Dopodiché, Pedro avrà una voce UTXO (ha ricevuto il pagamento).
Dove vanno le monete rimanenti?
Come hai visto, María aveva un totale di 125€ divisi in due UTXO, ma le bastava inviare solo 100€. Ha dovuto usare i due UTXO, impostando l'indirizzo di Pedro come Output, ma il suo portafoglio avrà fatto qualcos'altro in modo trasparente a María. Il tuo portafoglio avrà messo un indirizzo per María come uscita, a cui avrai assegnato i restanti € 25. È ciò che è noto come Cambia direzione.
A proposito, ci sono alcune transazioni che vengono convertite in un UTXO ma non sono generate da un UTXO precedente, vedrai in cosa consistono più avanti.
Con quanto sopra descritto puoi capire come funziona questo modello di "Biglietti" y "Partenze", può aiutarci a stabilire rapporti di possesso e concessione di denaro. Un rapporto che in blockchain si caratterizza per l'utilizzo della crittografia e che ci fornisce la sicurezza assoluta che il denaro sia arrivato a destinazione e che sia effettivamente sotto il controllo del destinatario.
UTXO e la sua importanza in Bitcoin
in Bitcoin tutte le transazioni hanno questa struttura di input e output.
- Negli "Ingressi" di una transazione Bitcoin, possiamo vedere le origini del saldo che stiamo gestendo con il nostro portafoglio o borsellino.
- Mentre nelle "Uscite", possiamo vedere dove inviamo i nostri soldi.
- Inoltre, possiamo vedere il denaro rimanente che viene restituito. Tutto questo è visibile e tracciabile da chiunque, poiché la blockchain di Bitcoin è pubblica e trasparente.
Se guardi da vicino, questo modello ti consente di avere il controllo totale sul modo in cui viene utilizzato il denaro e in quali condizioni può essere speso. Primo, Per utilizzare un saldo Bitcoin, deve essere considerato come un UTXO nel tuo portafoglio.. Cioè, qualcuno deve effettuare un pagamento (un output o UTXO) in modo che questo pagamento diventi il tuo input e quindi tu abbia un saldo disponibile da spendere.
Questo è un processo ricorsivo. Cioè, si ripete dal momento in cui la moneta viene generata a seguito di un blocco minato. Ad esempio, A transazione coinbase è effettivamente un UTXO creato dal minatore per inviare quel saldo a un indirizzo sotto il suo controllo. Pertanto, quella transazione di output diventa un input di denaro per il minatore che può successivamente spendere. Lo stesso processo viene ripetuto per il resto degli utenti Bitcoin. Con questo possiamo vedere che gli UTXO sono una parte essenziale delle transazioni Bitcoin e senza di essi il loro funzionamento sarebbe impossibile.
Ampliare l'esempio di come funziona un UTXO su Bitcoin
Possiamo vedere il funzionamento di un UTXO in Bitcoin nel modo seguente:
Daniel vuole pagare per l'auto di Luis, del valore di 1 BTC, e nel suo portafoglio è disponibile un totale di 1,5 BTC. Il saldo di Daniel è diviso in due direzioni, A con 0,8 BTC e B con 0,7 BTC.
Pertanto, Daniel va da Luis ed effettua il pagamento per 1 BTC. A questo punto, il portafoglio di Daniel non può inviare direttamente 1 BTC perché il saldo è suddiviso tra due indirizzi. Così prende entrambi i saldi e li converte negli input dell'operazione di pagamento. Successivamente, prende l'indirizzo di Luis e gli assegna l'invio di 1 BTC, assegna inoltre un totale di 0,4995 BTC all'indirizzo di scambio e il resto rimane come commissione mineraria.
Una volta che Daniel ha inviato la sua transazione, questa verrà elaborata e confermata dalla rete, iniziando il suo percorso verso l'irreversibilità. E a questo punto, sarà facile vedere dove sono gli UTXO della transazione.
I primi UTXO che possiamo rilevare nell'esempio sono i saldi di Daniel. Quegli indirizzi con un saldo di 0,8 BTC e 0,7 BTC sono due UTXO che sono sotto il loro controllo e sono quelli che consentono loro di effettuare il pagamento a Luis. Poiché Daniel ha il controllo di quei saldi, può trasformare il suo UTXO in "Input" per un nuovo pagamento, come effettivamente fa in questo esempio.
Subito dopo che la rete ha confermato la transazione di Daniel, la situazione cambia. Ora, Daniel non ha più il controllo degli equilibri che aveva originariamente, e invece, la tua transazione ha generato nuovi UTXO che sovrascrivono quelli vecchi. I nuovi UTXO in questione sono rappresentati per primi dall'indirizzo di Luis e da 1 BTC che ha ricevuto in esso da Daniel. E in secondo luogo, a causa dell'indirizzo di scambio e dei 0,4995 BTC che Daniel ha ricevuto dalla rete, perché è ciò che resta del pagamento che ha effettuato. Come abbiamo detto, il resto per completare gli 1,5 BTC che Daniel aveva in linea di principio rimangono come pagamento di commissione per il minatore.
Bitcoin Scripts e il suo rapporto con UTXO
L'intero funzionamento dell'UTXO in Bitcoin è garantito dal Bitcoin Script , il linguaggio di programmazione utilizzato per scrivere tutte le operazioni in Bitcoin. Ogni transazione ha uno script associato che ci consente di:
- Convalida che la bilancia utilizzata è davvero la nostra.
- Assicurati che i saldi inviati possano essere spesi solo dalla persona a cui li inviamo.
Ma come vengono eseguite queste operazioni? Questo è ciò che spieghiamo di seguito:
Convalidando che l'equilibrio è nostro
Il primo compito per poter utilizzare un equilibrio in Bitcoin è dimostrare che questo equilibrio è davvero nostro. Per fare questo, la prima cosa da tenere in considerazione è che ogni UTXO che trasformiamo in un input (saldo che andremo a spendere) è in realtà il uscita da una transazione precedente che ci ha dato accesso a quei BTC. Cioè, ogni saldo in Bitcoin ha un UTXO associato ad esso e detto UTXO ha uno script di blocco associato ad esso.
Questo script di blocco è un lucchetto digitale che dobbiamo aprire per utilizzare l'equilibrio di detto UTXO. Gli script di blocco in Bitcoin sono vari, ma il più comune è il P2PKH (paga all'hash della chiave pubblica). Sebbene ci siano anche i file P2SH (multisegno), la P2PK (il più primitivo di tutti). Questo script di blocco può essere aperto con la chiave privata che risulta nell'indirizzo indicato nell'UTXO.
Quindi, per sbloccare questo script, ciò che dobbiamo fare è prendere l'indirizzo Bitcoin, insieme alla nostra chiave privata e generare la chiave pubblica di detto indirizzo. Alla fine timbriamo la nostra firma digitale e con tutti quei dati verificati, il saldo di detto indirizzo viene sbloccato in modo che possiamo usarlo. Cioè, i nodi accetteranno la transazione e la inseriranno nel file MemPool in attesa dei minatori
Al contrario, se non riusciamo a fare quella procedura, semplicemente la transazione viene rifiutata dai nodi e non potremo utilizzare il saldo. Questo processo è chiamato script di sblocco. Naturalmente, questo processo crittografico lo è automatico e trasparente per gli utenti di un portafoglio, l'intero processo viene eseguito dal portafoglio stesso, ma ora sai cosa succede al suo interno. In questo schema, questa parte dell'operazione è descritta nello scriptSig di ogni Bitcoin Script.
Creazione dello script di blocco
Dimostrando che possiamo spendere i nostri UTXO, passiamo al processo di creazione della transazione, creando uno script di blocco per il nuovo UTXO destinato alla destinazione. In questo caso, ciò che fa il portafoglio è creare uno script simile a quello che è stato creato per noi in precedenza, che lo indica L'unico che può spendere questo nuovo UTXO è chi ha in suo possesso le chiavi private che controllano gli indirizzi a cui abbiamo inviato.
In questo modo, cosa viene creato è una stringa di convalida, dove i bitcoin nel passaggio da un indirizzo all'altro, vengono bloccati per essere utilizzati dall'ultima persona che ne prende possesso.
Come vedi, in Bitcoin ogni cosa ha un motivo ben definito, e questo permette a tutte le sue parti insieme di permettere il corretto funzionamento della criptovaluta. Essendo un protocollo aperto, tutti i nodi che vogliono far parte del protocollo interpretano le regole allo stesso modo.
Tutte le transazioni vengono esaminate da tutti i nodi, con quelle accettate dalla maggioranza convalidate e quelle accettate dalla maggioranza dell'hash power (generato dai minatori) confermate. Questi controlli garantiscono democraticamente il rispetto del protocollo.
Curiosità dell'UTXO in Bitcoin
Ora, nell'esempio precedente hai sicuramente visto alcune cose curiose sugli UTXO e il loro funzionamento in Bitcoin, e ti daremo una spiegazione in questa sezione.
Transazioni che non provengono da un UTXO
Come abbiamo indicato prima, ci sono alcune transazioni speciali, alcune che non vengono generate con gli UTXO, poiché le monete appaiono "magicamente". Questo caso particolare si verifica nel transazioni coinbase, che vengono creati dai minatori al momento dell'estrazione di un blocco e vengono utilizzati per ottenere la ricompensa del blocco.
Perché non effettuare un pagamento frazionario utilizzando i saldi in BTC?
Leggendo l'esempio precedente, ti sarai sicuramente chiesto perché il portafoglio Bitcoin di Daniel non ha effettuato un pagamento esatto di 1 BTC utilizzando un singolo input? La risposta per questo è che Gli UTXO rappresentano indivisibilmente l'equilibrio all'interno di Bitcoin. Cioè, non possiamo trasformare quel saldo in valori più piccoli, a meno che non spendiamo il saldo creando una nuova transazione.
Per semplificare, diamo un'occhiata a questo esempio: se vogliamo pagare 1 BTC con il nostro portafoglio, ma questo importo è diviso in 100 diversi UTXO che hanno 0,01 BTC ciascuno, allora il nostro portafoglio prenderà i 100 indirizzi come input per la nostra transazione e con esso effettuerà il pagamento. Cioè, il protocollo Bitcoin contrassegna quei 100 UTXO come "Spesi". Da lì, genera una nuova transazione con un nuovo UTXO che è dove abbiamo inviato il pagamento di 1 BTC, e ci lascia senza controllo del saldo in quegli indirizzi utilizzati.
Rapporto con le commissioni in Bitcoin
Un'altra utilità dell'UTXO ha a che fare con le commissioni o commissioni in Bitcoin. Nell'esempio precedente abbiamo spiegato che ogni volta che effettuiamo una transazione, la commissione di tale operazione è pari alla differenza tra le entrate e le uscite. Vale a dire:
Input totale - Output totale = Commissioni
Questo ce lo dice la costruzione di una transazione ha fin dall'inizio un saldo di commissioni. La commissione ai miner non è associata ad alcun output, quindi i miner mantengono ciò che non è associato. Cioè, l'input totale deve essere sempre maggiore dell'output totale associato.
La commissione ai miners non è fissa, ognuno decide quanto vuole pagare a seconda della fretta in cui si trovano, ma è qualcosa che vediamo in tutte le transazioni all'interno di Bitcoin e il suo scopo è due cose:
- Incoraggiare il lavoro dei minatori che quando generano un blocco ricevono non solo la ricompensa dello stesso, ma anche le commissioni di tutte le transazioni confermate da detto blocco.
- Impedisci alla rete di essere vulnerabile ad attacchi dannosi come Protezione, attacco spolverante, tra gli altri. Questo perché ogni transazione ha un costo e fare transazioni in grandi quantità ha un costo elevato per l'attaccante.
UTXO su altre blockchain e criptovalute
Lo schema UTXO è così buono che il resto delle criptovalute ha deciso di usarlo per i loro sistemi. Ovviamente, ogni blockchain può modificare questo concetto in modo diverso. In questo modo, può adattarsi alle funzioni aggiuntive che ogni protocollo blockchain in cui vengono eseguiti può presentare. Tuttavia, l'operazione di base è la stessa. Quindi anche le monete per la privacy come Monero o Zcash, usa questo schema adattato alle particolarità del tuo protocollo.
Corso avanzato di Bitcoin
Livello avanzatoAlla Bit2Me Academy ti offriamo questo corso avanzato gratuito di Bitcoin per farti diventare il prossimo Satoshi Nakamoto.