Skip to main content

Bitcoin, decentralizzazione, ed equilibrio di Nash

di Vitalik Buterin1

Gli storici della tecnologia si riferiranno a Bitcoin per lungo tempo come una innovazione fondamentale all'interno della tecnologia di Internet. E' il primo sistema di denaro elettronico distribuito che impedisce di spendere la stessa moneta più volte, un problema che fino a poco tempo fa sembrava essere inerentemente impossibile da risolvere. E' infatti inerente nella natura dei dati digitali poter essere copiati, ed per questo motivo che le multinazionali di music, film e libri da decenni cercano, con scarsissimo successo, di evitare che le opere che vendono possano essere copiate. Ogni schema di protezione che implementano viene alla fine forzato e reso nullo. Bitcoin ha veramente la possibilità di diventare la migliore moneta mondiale del web e capovolgere l'attuale sistema finanziario. Ma anche se Bitcoin fallisse in questo intento, i concetti che implementa sono in sè stessi rivoluzionari.

L'idea di una cryptomoneta in sè stessa non è innovativa, è semplicemente una delle applicazioni più ovvie di un progresso di qualcosa molto più fondamentale: per la prima volta possiamo vedere in funzione una rete di computer che proibisce gli imbrogli non perchè è gestita da un ente centrale che deve garantirne la correttezza, ma perchè il suo stesso protocollo, operando in un equilibrio di Nash2, fa sì che nessuna deviazione dalla strategia di equilibrio (cioè quella implementata dal software standard) porta un vantaggio a chi vuole barare.

Gli equilibri di Nash vengono spesso usati per descrivere situazioni di cooperazione sociale: consideriamo una situazione dove due persone si stanno scambiando dei beni ed entrambi hanno la possibilità e non adempiere a quanto pattuito. Se entrambi cooperano il vantaggio è definito come (3,3), cioè entrambi beneficiano dallo scambio. Se entrambi barano il beneficio sarà zero per entrambi: (0,0), quindi dal punto di vista di un esterno interessato al benessere di entrambi, truffare chiaramente non è vantaggioso. Ma se solo uno dei due bara allora il risultato diventa (5,-2) a favore del truffatore, quindi da un punto di vista egoistico può essere vantaggioso. La strategia della collaborazione (3,3) non è un equilibrio di Nash dato che deviare unilateralmente dalla strategia è benefico per chi non segue le regole. L'unico equilibrio di Nash è la situazione in cui entrambi gli attori barano, il che porta loro nessun guadagno: (0,0). In questo caso una deviazione dalla strategia implica cooperazione, il che porta ad una perdita alla persona che collabora (-2). Quindi la cooperazione è instabile e ne possiamo vedere le conseguenze nel mondo reale, con la necessità di leggi, reputazioni, reti di fiducia3, per penalizzare i disonesti e rendere la truffa meno profittevole della cooperazione.

Per capire il significato del concetto di equilibrio di Nash nell'elaborazione distribuita prendiamo in considerazione un esempio in un campo completamente differente, quello dei giochi di ruolo online multigiocatore di massa (MMORPG)4. Anche un MMORPG è un protocollo: i giocatori muovono i propri avatar, attaccano, usano incantesimi e le loro azioni cambiano lo stato del mondo in cui operano, e questo nuovo stato viene trasmesso agli altri giocatori.

Ma almeno teoricamente c'è la possibilità di barare: un giocatore potrebbe decidere di assegnarsi 10.000 punti ferita e passare questa informazione al resto dei giocatori. Per risolvere questo problema gli MMORPG sfruttano un approccio centralizzato: i punti ferita di ogni giocatore sono memorizzati su di un server centrale e l'unica forma permessa di interazione con esso è attraverso l'uso di una serie di azioni predefinite, ad esempio movimenti ed incantesimi. Ma anche con questo schema di funzionamento è possibile barare: un giocatore può scrivere un bot (un programma)5 che gli permetta di accumulare esperienza o oro mentre lui fa dell'altro, oppure sviluppare uno script (un'altra forma di programma)6 per giocare con bassissimi tempi di reazione.

E la soluzione a questo tipo di problematiche è il dover utilizzare un programma proprietario, cioè sviluppato da chi gestisce il server e fornisce il servizio. Blizzard 7 ad esempio esegue dei controlli regolari per cercare di identificare i giocatori che usano le modalità più comuni di barare ed il client (il programma) che usano i giocatori è proprietario per non permettere che mostri al giocatore più di quello che dovrebbe, ad esempio personaggi nascosti dietro agli ostacoli, o posti dietro di lui.

Il giocatore ha sempre qualche modo per barare e l'uso di un server centralizzato è l'unico modo per prevenire o limitare queste possibilità.

Prendiamo in considerazione un altro esempio: lo scaricare un file da internet attraverso BitTorrent8. Perchè il download abbia successo è necessario che delle persone lo mantengano volontariamente in condivisione (seeding) senza nessuna ricompensa per farlo, che, da un punto di vista egoistico, non è la strategia ottimale. Il numero di file disponibili per il download via torrent infatti sarebbe maggiore se ci fosse un meccanismo per incoraggiare a condividere tutto quello che hanno a disposizione. In alcuni casi si è cercato di mitigare questo problema ancora una volta con lo sviluppo di software proprietario, attraverso l'uso di client o server che cercano di forzare un rapporto tra quanto scaricato e quanto condiviso.
Le soluzioni open source però sono in genere di gran lunga preferibili, soprattutto per quel tipo di programmi che può generare l'interesse del governo, e per cui quindi è meglio non doversi fidare di una entità centrale: quella che sviluppa il programma, e che quindi può essere infiltrata o manipolata.

Vediamo ora come Bitcoin può imporre il corretto funzionamento a tutti i suoi partecipanti.

Ci sono due tipi di partecipanti: gli utenti ed i minatori (ogni minatore è in genere anche un utente, ma non tutti gli utenti sono dei minatori ed è per questo che li prendiamo in considerazione separatamente). Gli utenti hanno la possibilità di eseguire una sola azione: inviare monete. Per farlo hanno bisogno della loro chiave privata e della chiave pubblica del destinatario. Per poter inviare le monete si devono autenticare ai minatori esattamente come un giocatore di un MMORPG si deve autenticare al server. In questo caso la differenza tra un MMORPG e la rete Bitcoin è che i server Bitcoin (i minatori) sono decentralizzati.

Anche gli utenti BitTorrent sono decentralizzati, ma abbiamo visto come questi possono deviare il comportamento da quello che è possibile definire come ottimale per beneficiarne, e cioè scaricare ma senza condividere.

Quali modalità per barare hanno a disposizione gli utenti Bitcoin? Quelle che ricadono in una più delle seguenti categorie:

  1. Assegnare a sé stessi delle monete
  2. Agire sulle monete di qualcun altro
  3. Forzare una transazione di terzi girandola a sé stessi
  4. Spendere più volte le stesse monete

Vediamo singolarmente ognuno di questi casi.

1. Effettivamente ad alcuni utenti è permesso assegnarsi delle monete, ed in particolare ai minatori. In specifici casi possono assegnarsi 50 Bitcoin (almeno nel periodo temporale in cui stiamo scrivendo), ma se le monete sono più di 50 oppure le altre condizioni al contorno non vengono rispettate, allora questa transazione (o meglio, il blocco che la contiene) non verrà accettata dagli altri minatori della rete.

2. Esistono 3 modi per manipolare le monete di proprietà altrui: (A) non includere una transazione di un certo utente nel blocco di un minatore, (B) eliminare una transazione di un blocco precedente e (C) modificare una transazione cambiando il destinatario di una transazione (questo è il caso 3, esaminato subito sotto). Il caso A è in effetti possibile che si verifichi, ma la transazione rimarrà in rete e verrà probabilmente inclusa da qualcun altro. Il caso B invece risulterà in una mancata corrispondenza dei codici hash che proteggono i blocchi, e quindi tale blocco non sarà accettato da nessun altro nella rete.

3. Una transazione dove la chiave privata non corrisponde correttamente verrà rifiutata da ogni altro utente della rete.

4. Il blocco che conterrà la transazione invalida verrà rifiutato dagli altri minatori della rete.

Fin qui va tutto bene: i blocchi che non seguono esattamente le regole prestabilite non verranno accettati dagli altri minatori o utenti della rete. Ma questo è sufficiente a far si che il sistema sia stabile? Che incentivo c'è per i minatori a partecipare al processo di punizione di chi non sta al gioco?

Per risolvere questo problema è necessaria una nuova strategia: la punizione di secondo ordine, cioè la punizione di chi non punisce.

Come analogia, come descritto in dettaglio da questo studio9, i diritti di proprietà possono essere visti come un equilibrio stabile di questo tipo. Deviare unilateralmente dalla strategia di equilibrio secondo la quale chi non rispetta la proprietà privata è punito dalla polizia, ed il sistema di polizia è a sua volta mantenuto da un sistema di punizione di secondo ordine: se qualcuno non partecipa al processo di punizione (nella nostra società ciò avviene indirettamente pagando le tasse) questo viene a sua volta punito dallo stesso sistema. Anche la partecipazione a questo processo di "punizione di secondo ordine" viene imposto: una parte delle tasse viene utilizzata per finanziare il settore che si occupa di rilevare gli evasori fiscali, per cui il sistema è ricorsivamente stabile.

Tutti possono seguire la strategia di non rubare e partecipare ai due livelli di punizione, ed ogni deviazione da questa strategia comporta una perdita per chi la effettua a causa della punizione imposta dal resto della comunità.

Per impedire che il governo stesso non rispetti queste regole abbiamo la democrazia, che permette ai cittadini (la "rete") di rifiutare dei cattivi governi.

Questo modello in realtà ovviamente è fortemente fallato (ed il fatto che esistano modelli migliori di cooperazione sociale è un argomento molto dibattuto in rete), ma questo è dovuto ad una debolezza pratica dovuta all'inefficienza umana, non una debolezza della teoria.
La rete Bitcoin invece è gestita da un programma, e con i programmi la teoria diventa pratica, e quindi un sistema di punizione di ordine infinitamente ricorsivo è un modello perfettamente stabile da utilizzare.

La punizione del secondo ordine in Bitcoin in effetti è particolarmente semplice: se un minatore crea un blocco a partire da un blocco errato, allora un secondo minatore si accorgerà che c'è un problema nella catena dei blocchi e sia il primo blocco difettoso che quello calcolato dal minatore poco attento (o truffatore) verrà ignorato o scartato e tutto il lavoro svolto dal minatore sarà stato completamente inutile.
Se il secondo minatore non farà niente allora probabilmente lo farà il terzo e così via in quanto le monete contenute nelle transazioni di quel blocco non saranno spendibili perchè quel blocco non sarà accettato da nessun altro, in questo senso è ricorsivo. Anche gli utenti sono incoraggiati a punire i minatori che hanno inserito transazioni non correttamente firmati dalle giuste chiavi private perchè se non lo fanno si troveranno con monete che nessun altro vorrà accettare come pagamento.

Di conseguenza non c'è una variazione concepibile dal protocollo che non venga immediatamente individuata e punita. Esiste la possibilità che un attaccante abbia una potenza di calcolo maggiore di quella dell'intera rete, ma niente può proteggere da questa eventualità, esattamente come nessuna società si può difendere da un attacco militare da parte di un attaccante più grande di tutti gli attaccanti messi assieme.

Una società può rendere difficile un attacco di questo tipo attraverso l'utilizzo di tecniche di guerriglia, Bitcoin invece limita le possibilità dell'attaccante al poter effettuare una "doppia spesa". E le condizioni nelle quali un attacco del genere possa essere proficuo relativamente al costo per portarlo sono molto poche.

E' grazie a questo che ora abbiamo un sistema monetario contemporaneamente decentralizzato ed open source: nessuna centralizzazione è necessaria, e nessun programma chiuso (proprietario) diventa indispensabile.

Di conseguenza non c'è la necessità di fidarsi di nessun nodo in particolare della rete per fare in modo che il sistema funzioni correttamente, e la natura stessa della sua decentralizzazione farà si che si venga a creare un sistema più stabile.

Per capire come mai un sistema decentralizzato è intrinsecamente più affidabile è necessario rendersi conto che in un sistema dove le regole vengono imposte da un ente centrale, anche il banco è un giocatore. Cioè l'autorità centrale è essa stessa teoricamente soggetta a comportarsi in modo deviato per profitto. L'unico motivo per cui non lo fa è il meccanismo di punizione che chiamiamo mercato libero: le persone non hanno interesse ad avere un controllore inaffidabile e quindi i controllori hanno un incentivo a rispettare le regole del gioco.

Tra l'altro il libero mercato è anch'esso un sistema di punizione infinitamente ricorsivo: la punizione di secondo ordine, cioè la punizione per quegli individui che non puniscono chi non rispetta le regole smettendo di usufruire dei loro servizi è il crimine stesso.

In ogni modo, come possiamo vedere molto facilmente con l'esempio dei governi, i sistemi parzialmente centralizzati, sebbene funzionanti in teoria, nella pratica sono difettosi.

Questo è il motivo per cui la decentralizzazione è così importante.

L'innovazione portata da Bitcoin nell'implementare un equilibrio di Nash che permette di decentralizzare un maggior numero di attività è di conseguenza rivoluzionaria.


Traduzione a cura di Dusty per il portico dipinto.