Scaling

La rete Bitcoin ha dei limiti (introdotti volontariamente) e dei bug (introdotti involontariamente).

– Limiti:
1) La rete invia ogni transazione valida ad ogni nodo e ogni blocco generato dai miner ad ogni nodo, il numero di nodi e’ al momento circa centomila. E’ come se chi avesse inventato il protocollo di posta elettronica SMTP avesse deciso che ogni messaggio dovesse essere inviato a tutti e finisse in ogni casella di posta, se avessero seguito questa strada probabilmente oggi ogni singola casella sarebbe di trillioni di miliardi gi zettabyte  Pertanto Bitcoin ha bisogno per poter essere una rete decentralizzata di limitare il numero di transazioni possibili.

2) (anche) per la ragione sopra la dimensione massima del blocco e’ di 1Mb, quindi la rete e’ in grado di processare massimo 3.3 transazioni al secondo circa. Considerando che VISA ne processa migliaia, Bitcoin non e’ in grado di diventare (con questi limiti) un buon mezzo di pagamento.

– Bug:

quello piu grave si chiama transaction malleability, in pratica e’ un attacco che permette di modificare una transazione anche dopo che e’ stata inviata nella rete, non e’ molto grave fintanto che non hai bisogno che la transazione rimanga inalterata, caso ad esempio del layer 2, ne parliamo dopo.

Come aumentare il throughput della rete? 

– Solutione 1: Aumentare la dimensione del blocco.

E’ la soluzione scelta da Bitcoin Cash che ha portato il blocco da 1Mb a 8Mb. Il vantaggio principale di questa soluzione e’ che la modifica ha effetto immediato ed e’ relativamente semplice da sviluppare. Svantaggi: E’ una modifica non retrocompatibile (~hard fork) quindi ogni utente/servizio deve adeguarsi in tempo. Non risolve il problema, perche porta le tx possibili da 3.3 a 26, ancora molto lontani dalle migliaia necessarie, e comunque 8Mb ogni 10 minuti sono gia una dimensione che e’ vicina al limite massimo che la rete puo’ sopportare.

– Soluzione 2: Segregated witness (e Lighting Network).

Segwit e’ la soluzione adottata da Bitcoin. Consiste nel separare una transazione in 2 parti, una contenente i dati ed una contenente la firma, In questo modo i nodi aggiornati possono passarsi tutti i dati (firme incluse) in blocchi effettivamente piu grandi di 1Mb (al momento indicativamente 2.2Mb fino ad un massimo di 4Mb), ma evitare di passare le firme ai nodi vecchi non aggiornati, mantenendo quindi retrocompatibilita’ (~soft fork). Segwit inoltre risolve il bug della transaction malleability permettendo la creazione di Lighting Network (LN) che permette di fare transazioni istantanee e insieme all’aumento del blocco di segwit permette di arrivare a circa (stimate) 4000 transazioni al secondo dando cosi respiro alla rete, e tempo agli sviluppatori per programmare un aumento del blocksize per il futuro insieme ad altre migliorie che al momento sembra siano quelle incluse nella proposta HF chiamata spoonnet.
Vantaggi: la transizione e’ piu semplice e non ci sono rischi per utenti/servizi. La blockchain non cresce in maniera sproporzionata ma sempre “gestibile”. Permette di attivare LN con tutti i suoi vantaggi. Svantaggi: il deploy e’ piu lento, e per beneficiare di segwit si dovranno spostare i fondi sui nuovi “indirizzi”, cosa che avverra’ lentamente. I miner perderanno parte del loro potere e parte delle fee perche l’economia si spostera’ anche su Layer aggiuntivi.

– Soluzione 3: Segwit2x – NYA – Barry Silbert Agreement

Visto che la soluzione 2 e’ stata ostacolata dai miner per mesi contro gli interessi degli utenti e’ nato un accordo tra circa 40 aziende del settore per sviluppare un ibrido che attiva segwit e in piu dopo 60 giorni aumenta il blocco base da 1Mb a 2Mb quindi con blocchi reali di circa 4.4Mb (fino ad un massimo di 8Mb), perdendo quindi i vantaggi di retrocompatibilita di segwit. Non avendo ragioni tecniche reali alle spalle e’ solo una proposta politica, che piace a tanti e non piace ad altrettanti (non sto a spiegare i pro e i contro di questa proposta perche non e’ tecnica e meriterebbe uno #spiegone a parte).

Lascia un commento