Il futuro della serie Blockchain

Sì, la blockchain ha un problema di scalabilità. Ecco cos’è, ed ecco cosa stanno facendo le persone per risolverlo.

La battaglia per una soluzione scalabile è la corsa alla luna della blockchain. Bitcoin elabora 4,6 transazioni al secondo. Visa fa in media circa 1.700 transazioni al secondo (sulla base di un calcolo derivato dalla dichiarazione ufficiale di oltre 150 milioni di transazioni al giorno). Il potenziale per l’adozione c’è, ma è strozzato attualmente dalla scalabilità.

Uno studio pubblicato da Tata Communications nel 2018 ha mostrato che il 44% delle organizzazioni nella sua indagine sta adottando blockchain, ma allude anche ai problemi universali che sorgono dall’implementazione di nuove tecnologie. Da un livello architettonico, il problema irrisolto della scalabilità sta emergendo come un collo di bottiglia per l’adozione di blockchain e le applicazioni pratiche.

Come dice Deloitte Insights, “i sistemi basati su blockchain sono relativamente lenti. La lentezza delle transazioni di Blockchain è una grande preoccupazione per le imprese che dipendono dai sistemi di elaborazione delle transazioni legacy ad alte prestazioni”. Il mondo ha ricevuto un assaggio dei problemi di scalabilità nel 2017 e nel 2018: gravi ritardi di trasferimento e tariffe elevate sulla rete Bitcoin, e la famigerata app Cryptokitties che ha congestionato la rete blockchain Ethereum (una rete su cui si basano migliaia di applicazioni decentralizzate).

Per scalare una blockchain, non è sufficiente aumentare la dimensione del blocco o diminuire il tempo del blocco riducendo la complessità dell’hash. Con entrambi i metodi, la capacità di scalare raggiunge un tetto prima di poter raggiungere le transazioni necessarie per competere con aziende come Visa, che “gestisce una media di 150 milioni di transazioni ogni giorno” o circa 1.736 transazioni al secondo (TPS).

In confronto, la velocità delle transazioni di Bitcoin è tremendamente inferiore. Attualmente, la dimensione del blocco è fissata a 1MB (1.048.576 byte – anche se attraverso SegWit, questa dimensione può scalare fino a 4MB teorici) e la dimensione media delle transazioni è di 380,04 byte (assumendo che ogni transazione sia da un portafoglio a x altri portafogli – quindi una transazione batch conterebbe come una transazione. Parlerò più avanti delle transazioni batch e del perché l’ho etichettata in questo modo) e sembra essere in aumento.Pertanto, la quantità media di transazioni che possono entrare in uno dei blocchi di Bitcoin, attualmente, è calcolata come:

L’attuale tempo di generazione del blocco Bitcoin è di 10 minuti; cioè, ogni dieci minuti, viene estratto un nuovo blocco. In dieci minuti (600 secondi), Bitcoin può avere una media di circa 2.759,12 transazioni in base alle ipotesi precedenti. In altre parole, la blockchain di Bitcoin può attualmente garantire solo 4,6 transazioni al secondo.

Aumentare la dimensione del blocco o diminuire il tempo di generazione del blocco non risolve il problema: uno sguardo al TPS non SegWit

Il problema della scalabilità è confezionato con le proposte di valore della blockchain; quindi, non si può semplicemente aumentare la scalabilità cambiando i parametri della blockchain.

La comunità Bitcoin può regolare due variabili per cercare di aumentare il TPS. Una variabile è la dimensione del blocco (B), che è attualmente codificata a 1MB. Idealmente, B dovrebbe essere aumentato per aumentare il TPS. L’altra variabile è il tempo di generazione del blocco (TB), che è regolato cambiando la complessità del puzzle di hashing. Idealmente, TB dovrebbe essere ridotto per aumentare TPS.

Tabella 1: i diversi scenari per aumentare TPS saranno esaminati nella sezione seguente. Solo in S1 e S2 la blockchain di Bitcoin può raggiungere un TPS simile a quello di Visa, ma entrambi gli scenari sono impossibili a causa del tempo di propagazione delle transazioni, che sarà discusso anche in questa sezione.

Scenari 1 & 2

Per passare da 4,4 ai 1.736 di Visa, Bitcoin dovrebbe scalare il suo TPS di 377,5x. In altre parole, B dovrebbe essere aumentato da 1MB a 377,5MB (Tabella 1, S1) o TB dovrebbe essere ridotto da dieci minuti a 1,6 secondi (Tabella 1, S2). Un terzo scenario sarebbe quello di regolare entrambi. Ognuno dei tre scenari è irraggiungibile sulla blockchain a causa di un terzo fattore non controllato: il tempo di trasmissione (TR) necessario per trasmettere un nuovo blocco ad ogni nodo della rete Bitcoin.

Attualmente, si stima che ci siano 10.198 nodi nella rete Bitcoin. Trasmettere un 1MB (1.048.576 byte) attraverso la rete peer-to-peer richiede del tempo. Il Karlsruhe Institute of Technology misura il tempo di propagazione dei blocchi di Bitcoin, e il tempo medio di propagazione dei blocchi riportato il 17 gennaio 2019 era di 13.989,42 millisecondi o circa 14 secondi per propagarsi al 99% della rete. TB non può scendere sotto il 99% di TR (TR99)=14 perché se lo facesse, allora un nuovo blocco verrebbe generato prima che un vecchio blocco venga ricevuto dalla maggior parte dei blocchi della rete. Più TB si avvicina a TR99, più problemi sorgono con i fork, i blocchi orfani e le riorganizzazioni della catena, e (in casi estremi) le vulnerabilità di sicurezza come gli attacchi double-spend.

Scenario 3

Anche se TB = TR99 = 14, con una dimensione del blocco di 1MB, la blockchain Bitcoin sarebbe in grado di aumentare la sua velocità solo a 188 TPS (Tabella 1, S3). Anche se questa scala rappresenta un aumento di 188x in TPS, non è affatto vicino ai 1.736 TPS che Visa conduce quotidianamente; inoltre, si stratifica sui rischi sopra menzionati. L’altra variabile, B, può essere riadattata, ma non senza influenzare TR, che influenzerebbe TR99 e quindi il limite inferiore di TB.

Scenario 4

Per esempio, raddoppiando la dimensione di B (da 1MB a 2MB), il tempo impiegato da ogni nodo della rete per scaricare un nuovo blocco, TR, aumenterebbe anch’esso – di circa 2x; così, a 2MB, TR99 = 28s, quindi anche il limite inferiore di TB sarebbe 28s. Aumentando B di qualsiasi fattore, e successivamente aumentando TR dello stesso fattore, il TPS netto rimarrebbe lo stesso – in questo caso, circa 188 TPS (Tabella 1, S4). Una soluzione per ridurre l’impatto di B da TR è quella di aumentare la larghezza di banda tra tutti i nodi della rete Bitcoin. Sfortunatamente, poiché si tratta di una rete P2P, questa responsabilità ricade sulle spalle di ogni peer della rete.

L’emergere di SegWit

Nel 2017, Segregated Witness (SegWit) è entrato in vigore in tutti i nodi Bitcoin. Nota – non entrerò in tutti i dettagli di SegWit, ma se vuoi conoscere la sua storia e il suo ruolo nell’emergere dell’hard fork di Bitcoin Cash, dai un’occhiata a questo articolo:

Fa quello che il nome sembra fare – segregare la parte di testimone di ogni transazione dai dati della transazione effettiva. Si è verificato come un soft fork, quindi è stato istituito senza grandi effetti sulla rete blockchain esistente e sul codice. A causa del modo in cui la transazione del testimone verrebbe pesata, i nuovi blocchi Bitcoin abilitati a SegWit potrebbero essere teoricamente aumentati fino a 4MB senza cambiare la dimensione del blocco Bitcoin.

Dico teoricamente perché ci sono ulteriori fattori che contribuiscono alla dimensione finale del blocco SegWit. Infatti, se si controlla un esploratore della blockchain di Bitcoin, si vedrà che (almeno al momento in cui questo articolo è stato pubblicato) la dimensione media del blocco è ancora sotto 1MB.

Fonte: https://www.blockchain.com/charts

Ma questo non vuol dire che i blocchi non possono andare oltre 1MB. All’inizio del 2018, abbiamo assistito a una delle più grandi (probabilmente ancora la più grande) dimensioni dei blocchi generati, arrivando a pesare circa 2,1MB. Il soft fork di SegWit ha contribuito a migliorare le dimensioni dei blocchi senza modifiche al codice di base, ma non migliora ancora il TPS in modo scalabile.

Esaminando i quattro scenari precedenti sotto un consenso proof-of-work, abbiamo visto che il semplice aumento della dimensione del blocco o la riduzione della complessità di estrazione potrebbero portarci solo fino a un certo punto. Anche una combinazione di queste cose sarebbe limitata a causa del tempo di propagazione delle transazioni. Cercare di estrarre nuovi blocchi più velocemente di quanto i vecchi blocchi possano propagarsi porterà ad alcuni problemi di sicurezza piuttosto grandi. SegWit ha contribuito ad alleviare alcuni dei problemi TPS nel frattempo, ma una soluzione più scalabile è ancora necessaria per raggiungere TPS simile a Visa.

Sembra che spostare qualsiasi pezzo in posizione per aumentare TPS muova un altro pezzo fuori posto da qualche altra parte nel puzzle della blockchain; indipendentemente, ci sono progetti e startup che lavorano per raggiungere le risposte TPS necessarie per spingere l’adozione della blockchain in una fase scalabile.

Approcci esistenti e futuri per risolvere la scalabilità

Quando si cerca la potenziale risposta al problema della scalabilità, sorgono molte altre questioni. Per esempio, se la risposta è applicabile solo per una particolare blockchain, allora si basa sul presupposto che quella particolare blockchain sarà quella che avrà bisogno di quella scalabilità in futuro; altrimenti, lo sforzo è indebito o fuori luogo. Un’altra considerazione è capire quale può essere il trade-off. In questo momento, tutte le soluzioni disponibili hanno delle limitazioni.

Pagamenti in blocco in una transazione

Pro: Riduce la dimensione di un record di transazione mettendo più transazioni in una sola, consentendo più transazioni complessive per blocco, il che può aumentare il TPS in una certa misura.

Cons: Non può raggruppare le transazioni di più portafogli; rischia la privacy

I pagamenti in lotti sono stati una caratteristica di Bitcoin (e quindi, i fork di Bitcoin tra cui Digibyte, Dogecoin, Bitcoin Cash, ecc) attraverso il sendmany RPC. Gli scambi lo fanno già, e puoi vederlo quando provi a cercare il tuo ID di transazione su un esploratore di blockchain. Quello che si potrebbe finire per vedere è un portafoglio che invia a più portafogli diversi. In questo caso, è una transazione batch.

Il vantaggio di questo è che metterlo in una transazione significa che 1) devi pagare solo una tassa di transazione, e 2) non devi scrivere una transazione completa che è, come ho descritto in precedenza, circa 380 byte, per ogni transazione. Infatti, dei 380 byte che la transazione può essere, solo 34 byte potrebbero essere le informazioni della transazione.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.