Niente è perfetto. Il protocollo Bitcoin non fa eccezione.

Ha diversi problemi, il più conosciuto e più discusso è quello della scalabilità.

Oggi ci focalizzeremo su tutti i problemi di questa valuta digitale, gli incubi degli sviluppatori e degli investitori.

Scalabilità

Originalmente, non c’era un limite sulla grandezza di uno dei blocchi della blockchain.

Ma questo comportava la possibilità che dei truffatori potessero far finta di creare un blocco enorme per creare una specie di attacco tipo Denial of Service (DoS).

Questi falsi blocchi potrebbero essere scoperti, ma ci vorrebbe molto tempo e si rallenterebbe drasticamente la blockchain.

La soluzione adottata per risolvere questo problema fu quella di limitare la grandezza dei blocchi a solo 1MB. In questo modo attacchi che utilizzano blocchi più grandi sarebbero identificati istantaneamente e rifiutati senza rallentare significativamente il network.

Tuttavia con l’aumento delle transazioni, questo rallenta le transazioni. Con un limite di grandezza si possono aggiungere solo un certo numero di transazioni in un blocco.

Con blocchi da 1MB c’è spazio per 7 transazioni al secondo a 250 bytes/tx.

Ci possono essere solo 220 milioni di transazioni in un anno.

Non abbastanza per una città, figuriamoci per il mondo intero. Un software in grado di sostenere un miliardo di transazioni al giorno dovrebbe avere blocchi da 1,65 GB ed occuperebbe 87 TB all’anno, e forse basterebbe solo per una grande metropoli come Londra o Los Angeles.

Se 7 miliardi di persone facessero due transazioni al giorno i blocchi dovrebbero essere di 24 GB e produrrebbero 1.27 petabyte di dati.

Graficamente:

Una blockchain così diventerebbe impossibile da decentralizzare.

Ci sarebbero pochi nodi e troppo pochi miners per la validazione della blockchain.

La Segregated Witnesses è la soluzione che si è deciso di implementare per provare ad arginare questo problema.

SegWit è un soft fork che formalmente chiamato BIP141 (Bitcoin Improvement Proposal numero 141) ed è stato attivato il 24 Agosto 2017.

Molte delle transazioni Bitcoin sul network non adottano l’update, ma fortunatamente, il numero di persone che utilizzano l’aggiornamento sta aumentando pian piano.

SegWit, nasconde l’aumento della grandezza dei blocchi cambiando la definizione di un blocco definendolo come un milione di unità e non più come un numero di byte. La firma del witness viene separata dalle transazioni vere e proprie. I suoi dati sono inseriti alla fine del blocco e ogni byte di esso contiene solo ¼ di unità. Questo cambiamento porta al cambiamento di grandezza di un blocco da 1MB a 1.8MB, permettendo quindi di non cambiare radicalmente il protocollo.

Inoltre la firma digitale del witness venendo separata dai dati della transazione, diventa impossibile da cambiare. Quindi l’identità della transazioni non è più essere malleabile.

Malleabilità

La malleabilità è un problema del protocollo Bitcoin conosciuto sin dal 2011. Si basa su un metodo che permette di rinominare l’ID della transazione prima che questa possa essere confermata dalla blockchain. Questo è dovuto dal fatto che ogni transazione viene firmata, ma la firma non copre tutte le informazioni contenute in una transazione. E’ molto improbabile, ma un nodo del Network potenzialmente può cambiare la transazione inviata, in modo da rendere l’hash invalido. Questo cambierebbe solamente l’hash, non il contenuto vero e proprio della transazione.

Tuttavia questo significa che, non è sicuro accettare una catena di transazioni non confermate, poiché l’ultima transazione dipenderà dagli hash delle transazioni precedenti. (vedi il simulatore di Blockchain per capire graficamente).

Questi hash possono essere cambiati fino a che non vengono inseriti in un blocco. Per correggere in parte questo problema, è avvenuta una soft fork con il BIP66.

Attacchi Replay

Quando avviene un fork una blockchain si dirama ma tutti i blocchi precedenti alla diramazione rimangono validi.

Per cui ci troviamo in una situazione in cui una moneta che avevamo ricevuto in un blocco precedente ora ha validità su entrambi i nuovi rami rami. Per esempio se avessimo comprato Bitcoin prima del fork con Bitcoin Cash avremmo diritto sia ai Bitcoin che ai Bitcoin Cash che poi diventano delle monete completamente diverse, che possono essere cedute separatamente. La protezione “forte” per un fork permette di essere sicuri che una transazione sulla blockchain X non venga ripetuta sulla blockchain Y.

Tutte le transazioni hanno un marker che rendono perfettamente chiaro per quale blockchain erano intesi. Grazie alla protezione forte non c’è alcun modo di portare a termine un attacco replay.

Un attacco replay, consiste nel ripetere la transazione avvenuta sulla blockchain X, sulla blockchain Y, facendo spendere al mittente il doppio dei Bitcoin o dei token. La protezione “opzionale” consiste nel verificare che non avvenga niente di strano sulla blockchain X e su quella Y, per verificare una transazione. Nel caso qualcuno provi a manipolare una transazione tra le due blockchain, il protocollo interverrà revocando la transazione.

I fork che sono avvenuti negli ultimi mesi sono stati implementati attraverso la protezione forte.

Con il SegWit 2x, l’ultimo fork di cui si è tanto discusso nella comunità, si è deciso di utilizzare la protezione parziale, creando opinioni contrastanti all’interno della comunità.

 

Pagamenti Istantanei

Ci vogliono 10 minuti per verificare un intero blocco. Per transazioni quotidiane come pagare il biglietto dei mezzi pubblici o per fare la spesa, il tempo d’attesa per la conferma della transazione è troppo elevato. Globalmente, la blockchain di Bitcoin non riesce a supportare le transazioni con la stessa velocità di altri protocolli, come quelli delle carte di credito.

Il protocollo Bitcoin supporta dalle 3 alle 4 transazioni al secondo, mentre Visa può gestire fino 56.000 transazioni al secondo. In alcuni casi bisogna aspettare ore per confermare una transazione.

Alcuni siti di trading aggirano questo problema conducendo transazioni come nelle black box usate dagli High Frequency Traders (HFT), senza verificare la conferma della blockchain.

Tuttavia la comunità è preoccupata per queste forme di transazioni che non essendo confermate possono essere sfruttate per scopi illeciti. Proprio per questo si sta pensando di utilizzare protocollo chiamato Lightning Network costruito sopra quello Bitcoin.

 

Nelle prossime settimane spiegheremo nel dettaglio il Lightning Network.

 

Costi di transazione

Quando si fa una transazione sulla blockchain di Bitcoin le informazioni che vengono salvate sono il mittente, il ricevente, l’importo da pagare e una fee a scelta che va inserita.

Più è grande questa commissione più probabilità ci saranno che la transazione sarà inserita nel primo blocco disponibile e quindi verificata il più velocemente possibile. Questa fee è usata per incentivare i miners nel condurre il proprio lavoro, verificando le transazioni.

I tempi di attesa possono durare minuti, ore o perfino giorni se si ha il braccino corto. Con l’aumentare delle persone che utilizza questo network, questo problema potrà solamente peggiorare, portando le persone a pagare fee ridicole (2€-3€) pur di avere la certezza che la transazione avvenga e sia legittima.

 

Protezione dei consumatori

I consumatori non possono riavere indietro i soldi in caso di truffa.

Questo è dovuto al fatto che quando si fa una transazione i fondi vanno nel

portafoglio di un’altra persona. Non vengono fatte copie della transazione. In caso di truffa i soldi non sono recuperabili. Con le compagnie di carte di credito come Visa, Paypal o American Express, in caso di truffa si può usufruire di rimborsi. Tuttavia i sostenitori della tecnologia dietro ai Bitcoin credono che questo non sia tanto un problema, ma più una caratteristica del sistema che lo rende più sicuro. Incentiva le persone a tentare di verificare il profilo dell’altra persona e a fare ricerche approfondite.

Privacy

Il portafoglio Bitcoin non è criptato, quindi può essere un buon bersaglio per un ladro. È possibile risalire alla storia di un portafoglio e quindi studiare tutti i movimenti che sono avvenuti in entrata ed in uscita. Alcune nuove implementazioni permettono ai client Bitcoin di fare transazioni criptando le transazioni, tuttavia questo supporto è un’opzione e l’utente deve decidere di usarlo o meno.