Double spending e blockchain fork
Se un miner inserisce in un blocco una transazione già presente in un altro blocco, si crea un nuovo «ramo» della blockchain. Infatti lo stesso output sarebbe presente in due blocchi diversi e potrebbe quindi essere speso due volte (double spending).
Quando un blocco andrà ad aggiungersi ai precedenti riconoscerà solo uno dei due blocchi come «sano» e non includerà nel proprio Merkle tree transazioni con bitcoin provenienti dal blocco «malato». Di conseguenza nessun nodo (nessun utente) accetterà i bitcoin provenienti dagli output registrati nel blocco malato.
Se al blocco malato vengono aggiunti altri blocchi, verrà a crearsi un vero e proprio ramo alternativo della blockchain (blockchain fork). Fra i due rami della blockchain, il ramo che rimane più corto sarà considerato quello malato. Infatti, dato che chi dispone di maggiore potenza di calcolo ha più probabilità di creare nuovi blocchi, la «fazione» di minatori che ha più potenza computazionale costruirà il ramo più lungo, qualificandolo come ramo sano. Nessuno accetterà più le transazioni con input proveniente dal ramo malato perché non vorrà incorrere nel rischio che non vengano mai inserite in un blocco e quindi che non siano mai confermate.
Nella storia non sono mai stati creati più di 6 blocchi in un ramo alternativo. Per questa ragione alcuni software considerano una transazione confermata dopo che sono stati aggiunti 6 blocchi.
Quando un ramo è considerato morto i minatori potranno recuperare le transazioni valide in quel blocco (cioè quelle registrate esclusivamente in quel blocco) per costruire il Merkle tree di un nuovo blocco nel ramo sano della blockchain. In questo modo le transazioni «sane» presenti in un blocco malato potranno tornare a essere riconosciute valide e i relativi output essere accettati come nuovi input.
Per evitare la possibilità che un miner possa spendere i bitcoin ottenuti con la generazione di un blocco «malato», contenente una o più transazioni già spese, il protocollo bitcoin prevede che i miners non possano spendere i bitcoin ottenuti dal blocco (tramite commissioni o coinbase) prima che vengano aggiunti altri 100 blocchi a quello. Si ritiene infatti altamente improbabile che venga a crearsi una blockchain fork lunga 100 o più blocchi.
Problema del 50+1
Normalmente, nessun miner ha interesse a inserire transazioni doppie in un nuovo blocco perché rischia di vedere il blocco rifiutato dal resto della rete. Se così fosse, nessuno accetterà i bitcoin guadagnati col blocco tramite le commissioni e la transazione coinbase e il miner avrebbe solo sprecato energia elettrica per il calcolo dei vari hash senza guadagnarci nulla.
Se tuttavia un miner dispone di una potenza di calcolo immensa, o la maggioranza della potenza di calcolo mondiale dedicata alla scoperta di nuovi blocchi (problema del 50+1), allora potrebbe scoprire molti blocchi consecutivamente e dunque manipolare la blockchain a suo piacimento.
Questa ipotesi è molto improbabile per diverse ragioni:
1)l’intera potenza di calcolo di google è inferiore all’1% della potenza di calcolo totale di tutti i minatori di bitcoin*. Per concentrare il 50+1 della potenza computazionale in un’unica entità sarebbe dunque necessario costruire degli impianti enormi con spese gigantesche.
2)Anche se tale entità venisse ad esistenza, non si vede la ragione economica per cui dovrebbe manipolare la blockchain a piacimento, rendendo del tutto inaffidabile il sistema bitcoin e quindi riducendone o azzerandone il valore. Piuttosto, sarebbe più sensato utilizzare quella potenza per creare tutti i nuovi blocchi, arricchendosi in bitcoin tramite coinbase e commissioni.
3)Una potenza tanto elevata di calcolo probablmente avrebbe utilizzi malevoli più profittevoli che abbattere il sistema bitcoin. Ad esempio, si potrebbe usare per hackerare altri sistemi sensibili (come conti correnti o sistemi bancari o la borsa di Wall Street).
4)Una spesa tanto ingente per abbattere i bitcoin probabilmente non sarebbe un’opzione valida nemmeno per chi avesse l’unico obiettivo di distruggere una moneta virtuale (potrebbe diventare un obiettivo per esempio della BCE o delle banche commerciali tradizionali). Infatti dopo un’ipotetica distruzione dei bitcoin nulla vieta che si diffonda una moneta virtuale alternativa con un protocollo differente, pensato per rispondere in modo più efficace al problema del 50+1
*Michael Crosby, Nachiappan, Pradhan Pattanayak, Sanjeev Verma, Vignesh Kalyanaraman, «Blockchain: Beyond Bitcoin», Sutardja Center for Entepreneurship & Technology, Berkeley University of California, 16 oct 2015