Skip to main content

Il funzionamento di Bitcoin (II) -- prove e conoscenza comune

Posted in

In un post precedente sono stati esposti alcuni dei concetti crittografici che sono alla base del funzionamento di Bitcoin.

In questo vedremo invece una panoramica del funzionamento ad un livello più alto.

E' necessario prima di tutto inquadrare i problemi da affrontare per implementare un sistema di transazioni monetarie completamente decentralizzato ed anonimo (o meglio, pseudoanonimo). Il problema principale è quello di riuscire ad avere una "conoscenza comune" delle proprietà della moneta. In particolare tutti devono sapere chi è il proprietario corrente di ogni unità monetaria (per evitare che qualcuno "spenda" del denaro che non gli appartiene), ma bisogna anche sapere che tutti abbiano le stesse informazioni. Ed è necessario sapere che gli altri sappiano che io so che loro sanno... e così via. Più formalmente questo tipo di conoscenza è definito in letteratura come "conoscenza comune"1.

In altre parole non mi basta sapere di conoscere i proprietari di ogni moneta ma devo anche contare sul fatto che gli altri siano d'accordo con me, e sapere che io sono d'accordo con loro. Se si riesce ad arrivare ad una tale situazione allora è possibile fare in modo che facciamo tutti riferimento alla stessa storia (delle transazioni) risolvendo quindi il problema di una discordanza su chi è il proprietario di cosa, ma senza fidarsi di nessuno in particolare. Questo è il problema principale che per la prima volta Bitcoin ha risolto in maniera brillante senza dover fare affidamento ad una autorità centrale di cui fidarsi, come normalmente era sempre avvenuto.

L'innovazione chiave per risolvere questa problematica è stata quella di poter dimostrare quante operazioni si sono impiegate per produrre un certo risultato, altrimenti definito come "dimostrazione di lavoro"2. In un sistema che implementa questa caratteristica è possibile avere una archivio di transazioni che dimostra avere alle spalle una certa mole di lavoro. A quel punto è sufficiente che la maggior parte degli utenti del sistema accettino come "buono" l'archivio che ha alle spalle il numero maggiore di calcoli che sono stati fatti su di esso. Questo permette di conoscere quale sia il "libro mastro", e possiamo essere sicuri che è lo stesso usato da tutti gli altri.

Ed in definitiva questo permette di avere una prova di proprietà senza una autorità centrale.

Avendo chiaro questo concetto, una buona parte della complessità di Bitcoin comincia a diventare accessibile.

In un articolo precedente si era accennato al fatto che dei Bitcoin vengono dati in premio a chi riesce a risolvere un particolare problema matematico. Questo problema non serve solo per permettere una distribuzione iniziale delle monete, anzi, non è nemmeno il suo scopo principale. Il suo obiettivo principale invece è quello di dimostrare che un certo elenco di transazioni porta con se il maggior numero di calcoli eseguiti. Quindi se noi cominciamo a lavorare sull'ultima soluzione conosciuta (che ha un elenco di transazioni fino ad un preciso punto nel tempo) partiamo da una documentazione che al momento ha il numero maggiore di calcoli eseguiti su di essa. Il protocollo di Bitcoin specifica che è necessario utilizzare la più "grande" (cioè quella con più calcoli alle spalle), ma come si vedrà questo è nel nostro stesso interesse.

Se pubblichiamo un "aggiornamento", cioè l'ultimo elenco delle transazioni più quelle più recenti, assieme ad una soluzione allora gli altri utenti sanno che il nostro "libro mastro" porta con se tutto l'elenco dei conti precedenti fino all'ultima soluzione più tutti quelli che abbiamo fatto noi. Di conseguenza se vogliamo reclamare il bonus (in bitcoin) per l'ultima soluzione è bene partire dal "libro mastro" che contiene l'ultima soluzione.

Vediamo quindi di riepilogare e sintetizzare una semplificazione di quello che accade in una rete bitcoin:

  1. Quando un utente vuole trasferire i propri bitcoin a qualcun altro trasmette a tutti un messaggio che contiene la transazione, cioè quanti dei propri bitcoin vanno a chi, e lo firma con la propria chiave privata.
     
  2. Quando un utente riceve un messaggio che identifica un trasferimento di proprietà (una transazione) come prima cosa verifica che la firma sia valida (vedere l'articolo precedente3 in proposito) e che l'indirizzo di colui che "spende" i bitcoin possieda fondi a sufficienza, cosa che può verificare sul "libro mastro". Se le verifiche sono positive allora mantiene la transazione e la distribuisce a tutti i suoi contatti.
     
  3. Gli utenti che vogliono reclamare il premio per una soluzione (cioè i "minatori") raggruppano tutte le transazioni che possiedono (cioè le nuove più quelle dell'ultimo libro mastro confermato) e creano un problema matematico unico per questo insieme. Poi cominciano a cercare una soluzione ad esso.
     
  4. Quando qualcuno trova una soluzione la distribuisce a tutti i suoi contatti assieme all'insieme delle transazioni a lui conosciute (cioè l'ultima versione del "libro mastro"). Come per le singole transazioni, ognuno di coloro che la riceve la verifica e, se valida, la distribuisce a tutti gli altri.
     
  5. I minatori che ricevono una nuova soluzione valida interrompono i calcoli che stavano facendo e prendono l'ultima versione del "libro mastro" come nuovo punto di partenza per cercare una nuova soluzione. Come definito nel punto 3) aggiungono ad esso tutte le nuove transazioni di cui sono a conoscenza e costruiscono un nuovo unico problema matematico da risolvere.

Nella pratica può succedere che a volte diversi utenti troveranno simultaneamente una soluzione e che queste si propaghino all'interno delle varie parti della rete a diverse velocità. I minatori dovranno quindi tenere tutte le ultime versioni dei "libri mastri" in attesa che uno di questi diventi più "lungo" (cioè porti con se un numero di conti maggiore) e quindi definitivo. Dal canto loro gli utenti invece aspetteranno un certo numero di nuove soluzioni dopo una certa transazione è stata accettata per essere sicuri che confermata a sufficienza.

Traducendo i concetti generali sopra esposti nel lessico tipico di Bitcoin avremmo che una nuova soluzione, con il suo blocco di transazioni vecchie e nuove, viene chiamato "blocco". Il "libro mastro", cioè tutto l'elenco delle transazioni, con tutte le soluzioni intermedie che dimostrano come sono costruite una sull'altra, viene chiamato "catena dei blocchi" perchè ogni blocco si collega al "libro mastro" precedente, formando quindi una catena.

Ci sono ancora molti dettagli da definire, cosa che vedremo di fare in articoli successivi, ma questo dovrebbe far capire i concetti generali del funzionamento della rete Bitcoin ed alcuni degli elementi fondamentali in gioco.

Dusty


Fonte: traduzione libera dell'articolo Bitcoin overview: proofs and common knowledge