Come avviene una transazione in Bitcoin
Fin qui abbiamo approfondito come la firma digitale permetta di autorizzare le transazioni, ma vediamo di approfondire come i nodi tengono traccia del saldo dei conti legati a ciascun individuo.
E qui viene il bello, in realtà non si tiene traccia da nessuna parte del saldo! Ma allora come si riesce a capire se un individuo A ha abbastanza BTC quando richiede di fare un invio ad un altro individuo B?
Invece di tener traccia del saldo, la verifica avviene collegando la transazione attuale alle transazioni precedenti. Per mandare 5 BTC a B, A deve riferire altre transazioni dove ha ricevuto 5 o più BTC. Le transazioni che vengono riferite in questo meccanismo vengono denominate input. Gli altri nodi che verificano la transazione (attuale) controlleranno anche gli inputs per capire se A ha ricevuto 5 o più BTC.
Qui sotto una figura che specifica il meccanismo di riferimento a transazioni precedenti come input.
Facciamo un esempio di una vera transazione. La transazione a cui ci riferiamo può essere visualizzata al seguente indirizzo: https://blockexplorer.com/tx/a117c441aa5bd3fcb442e3c47a180c584420bcd9f93c68dab9feddd1d26b767e
Ne proponiamo una figura esemplificativa qua sotto:
Gli input di questa transazione sono 6, per un totale di 139.616 BTC. Negli output invece ci sono 2 transazioni. La prima è una transazione che torna indietro al mittente come “resto”, questo perché l’output che si vuole inviare è inferiore alla somma degli inputs e pertanto dobbiamo ricevere la differenza indietro.
Grazie a questi input che vengono riferiti per ogni transazione, si forma una specie di catena grazie alla quale viene trasmesso il possesso dei BTC, dove la validità di ogni transazione è dipendente dalla validità delle transazioni precedenti.
Come possiamo fidarci delle transazioni precedenti?
Non posso fidarmi a priori e devo controllare anche i loro input. Per questo la prima volta che si installa wallet per Bitcoin (software portafoglio dove vengono mantenuti i propri BTC), questo software verifica la validità di ogni transazione effettuata finora risalendo fino alla prima transazione. Bisogna sempre tener presente che poiché si ha a che fare con completi sconosciuti è bene fare tutte le verifiche del caso. Questo processo può portare via molto tempo (solo nel caso che si utilizzi un software wallet desktop) ma la verifica fino alla prima transazione deve essere fatta una volta sola.
Una transazione, una volta utilizzata, viene considerata come “già spesa” e non può essere utilizzata di nuovo, altrimenti qualcuno potrebbe riferirla nuovamente dando origine al problema del double spending (doppia spesa).
Quando i nodi verificano una transazione infatti devono anche verificare che gli input non siano già stati spesi. Ovvero i nodi devono verificare tutte le altre transazioni per essere sicuri che gli input non siano già stati usati. Questo può sembrare molto dispendioso in termini di tempo, ma in realtà è reso più veloce da un indice delle transazioni non ancora spese.
Pertanto invece di tener traccia dei saldi dei conti, nei Bitcoin si tiene traccia di una lista gigante di transazioni: avere dei Bitcoin significa semplicemente che esiste in questa lista una transazione che ha come ricevente il tuo indirizzo e che non è ancora stata spesa (ovvero non è utilizzata come input in nessuna altra transazione).
Per avere il saldo del proprio conto (indirizzo) basta dunque scorrere la lista delle transazioni e sommare tutte quelle che hanno come ricevente il proprio indirizzo e che non sono mai state utilizzate come input.
Altro fatto rilevante riguardo alle transazioni: si possono inviare transazioni complesse che non riguardano solamente un indirizzo ricevente, ad esempio si possono utilizzare meccanismi come quello di escrow. Negli output, come abbiamo visto in precedenza, non sono contenuti 2 semplici indirizzi ma una specie di puzzle matematici che devono essere risolti. Inviare soldi con i bitcoin è molto simile a metterli in una cassaforte ed attaccarci un puzzle matematico che funge da chiave per l’apertura. Il puzzle è fatto in modo che solamente il possessore di una chiave pubblica possa risolverlo, ma possono esserci anche condizioni più complesse: nel caso dell’escrow per effettuare la transazione potrebbero essere necessarie, ad esempio, 2 firme su 3.
Un altro esempio è la prima transazione fatta tramite Bitcoin (il 3 gennaio 2009) che di fatto era un puzzle risolvibile da chiunque.
Seguici su Telegram
Rimani aggiornato con guide e iniziative esclusive per gli iscritti!