venerdì 8 novembre 2013

Bitcoin: i primi problemi

Qualche giorno fa vi avevamo parlato del nuovo metodo di pagamento e soprattutto dell'apertura del primo sportello automatico di bitcoin a Vancouver.


L'innovativo conio, però, non è esente da falle. Due ricercatori della Cornell University hanno pubblicato nei giorni scorsi un documento nel quale descrivono una particolare tecnica che potrebbe consentire, almeno in linea teorica, di sovvertire il principio fondamentale su cui si regge il sistema della moneta elettronica Bitcoin, ovvero la sua natura distribuita e decentralizzata.

I ricercatori hanno chiamato questa tecnica "selfish mining" e consente ad un miner (in realtà, come vedremo meglio poco oltre, ad un pool di miner) di piegare il sistema a suo vantaggio riscuotendo in maniera artificiosa le ricompense legate alla scoperta dei nuovi blocchi della catena pubblica. Nel documento Majority is not Enough: Bitcoin Mining is Vulnerable i ricercatori affermano:

Il sistema Bitcoin è aperto alla manipolazione e ad un potenziale assoggettamento dai miner che cercano un modo di massimizzare le proprie ricompense

Ma cos'è il mining?

Il mining è il fondamentale processo del sistema Bitcoin che permette di verificare che una moneta non sia stata usata per due diverse transazioni, accorpando queste ultime in blocchi marcati cronologicamente e che vengono aggiunti ad un registro pubblico chiamato blockchain. La realizzazione del blocco comporta una serie di calcoli più o meno complessi e che si basano inoltre sull'ultimo blocco pubblico verificato.

Contestuale al mining è anche l'emissione della moneta, dal momento che l'individuazione di un blocco comporta una ricompensa che spetta al miner o al pool di miner che hanno scoperto il nuovo blocco. La ricompensa non è fissa e viene dimezzata ogni 210 mila blocchi trovati. Attualmente la ricompensa per l'individuazione di un nuovo blocco è di 25BTC, corrispondenti indicativamente a circa 5500 dollari secondo i tassi di cambio attuali. 

Trattandosi di un processo computazionale dove la soluzione di un problema numerico comporta la creazione di un nuovo blocco, ne consegue che maggior potenza computazionale viene messa a disposizione da un miner, maggiori sono le probabilità che questo miner trovi la soluzione al problema e, in ultima istanza, possa riscuotere la sua ricompensa. In altri termini, sintetizzando estremamente, si può affermare che i miner beneficiano in maniera proporzionale alla potenza computazionale investita per il processo di mining. 

E' importante osservare che la blockchain potrebbe biforcarsi dal momento che non tutti i miner lavorano sul medesimo blocco. La formazione di vari rami dalla biforcazione della catena è un'eventualità sgradita dal momento che i miner devono mantenere un set di transazioni che abbia un ordine cronologico sul quale vi sia un comune consenso. 

Il protocollo Bitcoin prevede ovviamente questa eventualità e dispone che i miner proseguano il proprio lavoro sulla catena più lunga di cui sono a conoscenza o su quella di cui sono venuti a conoscenza per prima nel caso vi siano rami diversi di uguale lunghezza.

Il protocollo Bitcoin chiede che i miner pubblichino i blocchi nuovi non appena essi siano scoperti. E' ovviamente anche nell'interesse del miner pubblicare i nuovi blocchi il prima possibile, dal momento che, come detto poco sopra, è la precedenza cronologica a determinare la validità di due blocchi (o due rami) identici, consentendo così al miner che per primo ha pubblicato il blocco di riscuotere la propria ricompensa. 

E' proprio su questo aspetto che si può innestare la tecnica di "selfish mining": mentre tutti i miner lavorano partendo dall'ultimo blocco pubblicato (pensiamolo come blocco originario), un pool di miner scopre un nuovo blocco e decide di non annunciarlo pubblicamente. Questo pool (che per comodità chiameremo "selfish pool") prosegue quindi la costruzione della blockchain dal blocco non pubblicato, mentre il resto dei miner continua a lavorare sul blocco originario. 

In particolari circostanze il selfish pool potrebbe scoprire un secondo blocco prima ancora che i restanti miner individuino il successore del blocco originario. Il vantaggio del selfish pool sarebbe quindi di due blocchi a uno. Maggiore è il vantaggio che il selfish pool riesce ad accumulare, maggiore sarà la ricompensa che riusciranno a riscuotere: quando i miner onesti pubblicano la soluzione al blocco originario, il selfish pool pubblica immediatamente i blocchi che ha trovato. A questo punto la catena si biforca, ma il ramo più lungo (e quindi quello valido) è stato interamente scoperto dal selfish pool al quale spetta così la ricompensa per tutti i blocchi individuati. 

Dal momento che l'impiego di questa tecnica consente, almeno in linea teorica, di beneficiare in maniera non equa dal processo di mining, altri miner avranno ovviamente l'incentivo ad aderire al selfish pool il quale sarà a sua volta incline ad accettare nuovi miner poiché in questo modo potrà disporre di maggiore potenza computazionale e quindi maggiori capacità di scoprire nuovi blocchi in anticipo sui miner onesti. 

Si verificherebbe a questo punto un meccanismo che, senza alcun contrasto, porta il selfish pool ad allargarsi sempre di più fino a quando non coincide con la maggioranza dei miner. A questo punto il pool, essendo maggioranza, ha il controllo sulla blockchain. La strategia di selfish mining non è più necessaria, dal momento che nessun altro miner o gruppo di miner può essere più veloce nella scoperta dei blocchi. Un pool di maggioranza può quindi raccogliere tutte le ricompense del sistema seguendo il protocollo bitcoin e ignorando i blocchi generati al di fuori dal pool, senza inoltre avere alcun interesse ad accettare nuovi membri e sgretolando inoltre il principio di decentralizzazione. 

Secondo le valutazioni condotte dai ricercatori la tecnica di selfish mining potrebbe essere applicata con successo da un gruppo di miner che controlli almeno il 25% delle risorse di computazione dedicate al processo di mining. Un gruppo di queste dimensioni già esiste: secondo le statistiche di Blockchain Info il pool BTC Guild mina attualmente oltre un quarto dei blocchi scoperti quotidianamente. Secondo i ricercatori nessun gruppo ha impiegato fino ad ora una strategia di selfish mining, anche se ovviamente i grossi gruppi di miner rappresentano una minaccia al sistema. 

I ricercatori della Cornell propongono un cambiamento al protocollo di mining che potrebbe parzialmente arginare il problema: nel caso di una biforcazione con rami della stessa lunghezza i miner dovrebbero scegliere in maniera casuale su quale blocco lavorare. Secondo i calcoli questa modifica nel protocollo renderebbe più difficile, anche se non impossibile, trarre vantaggio dalla tecnica del selfish mining. I miner dovrebbero inoltre staccarsi dai grandi pool fino a quando nessun pool superi la dimensione di guardia e quindi nessuno sia in grado di beneficiare della strategia di selfish mining.

[BusinessMagazine]

0 commenti:

Posta un commento

 
Tecnodiary2 © 2011