Mettendosi d’accordo sul Dibattito sul Blocco

blocksize

Articolo di Eric Lombrozo, Co-CEO e CTO di Ciphrex Corp. una società pioniera nell’ambito delle tecnolgie per i network decentralizzati. Lombrozo è anche un membro fondatore di CryptoCurrency Security Steering Commitee ed è stato un legittimo contributore di Bitcoin.

Introduzione

Negli ultimi mesi un dibattito continuo è salito a riguardo del valore da attribuire ad una costante nelle regole di consenso di Bitcoin. Mentre apparentemente sembra una semplice costante, la discussione sul suo valore ha aperto un vaso di Pandora.

Cos’è la dimensione del blocco e perchè esiste?

Agli inizi del protocollo Bitcoin molte assunzioni sono state fatte su quali risorse computazionali un nodo Bitcoin tipico avrebbe avuto: banda, spazio di archiviazione e processore. Se i blocchi fossero stati lasciati crescere essi avrebbero mangiato tali risorse rendendo facile attaccare il network o discoraggiando gli amministratori a mantenere attivi i nodi. Dall’altra parte, se i blocchi fossero stati troppo piccoli, le risorse del network sarebbero sottoutilizzate ed il numero di transazioni non crescerebbe. Malgrado le risorse varino notevolmente da device a device e la tecnologia continua ad evolversi, per semplicità, una dimensione è stata scelta: un megabyte.

Tutto dipende sempre dall’economia

La dimensione del blocco è una decisione economica. E’ la giusta dimensione per bilanciare il numero di transazioni con le risorse necessarie a computarle. La dimensione del blocco è soggetta agli stessi principi economici di una risorsa scarsa (definizione di economia).

Nei primi giorni del network era pensato che il carico delle transazini sarebbe rimasto ben sotto i limiti per un po’ di tempo. Tuttavia è stato anticipato che, eventualmente, il blocco sarebbe stato utilizzato a pieno a mano a mano che più nodi si fossero aggiunti. Per gestire la scarsità le commissioni di transazione sono state inserite nel design del protocollo. L’idea era che un mercato libero si sarebbe naturalmente sviluppato con coloro i quali avessero voluto le proprie transazioni in prima linea per l’inoltro pagando commissioni più alte. Fino a che le commissioni non avessero mantenuto il network, una ricompensa inflazionaria che si dimezza ogni 210.000 blocchi (una volta ogni quattro anni circa) avrebbe provveduto ad incentivare il lavoro dei miner.

Il problema è il paradossa (“E’ nato prima l’uovo o la gallina?”) che si eredita: per quanto la dimensione del blocco sia abbondante c’è poco incentivo nello svluppare una infrastruttura ad-hoc per accomodare un libero mercato. Fino a poco tempo fa questa risorsa era considerata abbondante. La scarsità della dimensione del blocco richiede un significantivo cambio nel come le transazioni sono propagate, tuttavia, solo ora questi problemi stanno cominciando ad essere affrontati in quanto stiamo affrontando la scarsità.

Essendo la ricompensa per il blocco decrescente con il tempo, le commissioni diventano sempre più importanti come mezzo per sostenere il network. Le Blockchains sono costose da mantenere e la dimensione del blocco non è gratuita nemmeno. Qualcuno deve pagare questa spesa. Rimuovere la scarsità incrementando la dimensione del blocco sposta i costi da coloro che inviano le transazioni ai nodi che le confermano, gli stessi nodi dai quali dipendiamo per la sopravvivenza del network.

La discussione sulla dimensione del blocco riguarda la scalabilità?

Una interpretazione sbagliata di questa discussione è la scalabilità. La scalabilità è di certo una preoccupazione, recentemente affrontata attraverso canali di catene non custodite (noncustodial offchain payment channels), ma tuttavia oltre lo scopo di questo articolo. Il limite del blocco riguarda l’economia, non la scalabilità. Cercheremo di spiegare questa interpretazioni.

Nei sistemi di computer, la scalabilità è la proprietà di un sistema di essere in grado di operare nelle specifiche di design al crescere dei dati processati. Le risorse computazionali sono finiti (ipotesi) qualsiasi sistema nel mondo reale ha limiti oltre i quali non si comporta più come richiesto.

Un massimo nelle dimensioni del blocco è stato imposto nel protocollo Bitcoin per essere sicuri di non superare mai quel limite. Comportamenti inaspettati non sono solo questione di noia: la sicurezza del network è in gioco! Superare il limite operativo significa che neanche il modello di sicurezza sul quale il network è basato non è più affidabile.

Ona delle assunzioni nel modello sicurezza di Bitcoin è che sia ragionevolmente economico validare le transazioni. Oltre una dimensione del blocco, il costo di validare le transazioni cresce oltre quello che i nodi del network riescono o sono disposti a sostenere. Senza una validazione le transazioni non possono essere considerate sicure.

Incrementare la dimensione del blocco può incrementare il numero di transazioni che il network può processare non oltre il limite oltre il quale le transazioni cominciano a fallire.

Possiamo ottimizzare il software per ridurre i costi?

Si. Ci sono un sacco di aree che possono essere migliorate: il paradigma di propagazione dei blocchi, la comprassione o la cancellazione di dati, schemi di firma più efficienti e limiti più forti sul conto delle operazioni. Molte di queste cose sono senza ombra di dubbio buone opinioni e meritano di essere seguite, tutto il resto rimane uguale, ridurre il costo delle conferme può solo migliorare la salute del network. Il limite superiore oltre il quale non possiamo più ridurre i costi delle transazioni è dato dalle leggi di Moore e Nielsen.

Anche con queste leggi i costi computazionali delle conferme crescono con una funzione non lineare: moltiplicare il blocco di X incrementa il costo della validazione di un fattore maggiore di X. Saremo ancora molti ordini di grandezza più piccoli di quelli che riescono a soddisfare una richiesta globale se ci aspettiamo di includere tutte le transazioni nella blockchain e, allo stesso tempo, il network di funzionare correttamente. La dimensione del blocco è scarsa.

A quale punto le conferme non arrivano più?

C’è una forte evidenza che stiamo superando questo punto, se non l’abbiamo già passato. Il costo computazionale della validazione aumenta ad un fattore di crescita maggiore oggi di quello che le risorse computazionali stanno descrescendo. In aggiunta alla complessità maggiore di lineare del protocollo il design dello stesso ha due errori che aumentano il problema: assume che i miner confermino i blocchi e i client ottengano prove ragionevolmente sicure per le loro transazioni che siano in grado di controllare loro stessi.

I miner confermano i blocchi?

Alle volte hanno un incentivo per questo, tuttavia i miner non sono pagati per confermare blocchi, sono pagati per trovare nonce che confermino appunto l’hash del blocco dentro un certo intervallo (prova di lavoro o proof of work). Non è veramente importante chi confermi i blocchi, i miner perdono la loro ricompensa se il loro blocco è invalido o minano sopra un blocco invalido, ma se quelli che gli danno i blocchi gli forniscono blocchi validi, può essere razionale “tagliare gli angoli” alla conferma per risparmiare. I blocchi invalidi occasionali potrebbero essere statisticamente di più dell’offset dei tagli nominali delle spese di gestione. Questo scenario ha qualcosa di tragico.

Particolarmente costoso per i miner è la latenza di propagazione. Più lungo è il tempo per ricevere, validare e propagare un nuovo blocco più alte sono le chance che qualcun altro gli rubi il blocco. Inoltre, costose sono per i miner, le spese di mantenimento e supporto per essere sicuri che aderiscono correttamente alle regole del consenso, infine ci sono i costi per le risorse computazionali per gestire il nodo. Tuttavia, anche se il miner è disposto a pagare tutti questi costi, un problema software può ancora dimostrarsi che sta minando un blocco invalido. Tutto quanto detto sopra sarebbe vero anche senza aggiungere i costi delle pool, i quali amplificano gli errori di conferma.

Questi argomenti non sono solo sproloqui intellettuali: attorno al 4 Luglio 2015 un fork del network è successo per questa stessa ragione ed ha causato molti clienti, siti e servizi online ad accettare blocchi invalidi. Invece di aumentare le spese di transazione hanno fatto come al solito… ma i miner questa volta non confermavano. Aumentare le spese di conferma è lo scenario più accettabile.

Sfortunatamente il protocollo, al momento, manca di un modo di ricompensare i miner sicuramente, se questo fosse possibile questo porterebbe ad un modello economico più robusto e sicuro.

Perchè i client non possono confermare i blocchi?

Mentre le risorse per mantenere un nodo sono ancora nella capacità dei server odierni, esse hanno di gran lunga superato la capacità di device più piccoli, in particolare device mobili con connessione al network intermittente. La maggior parte dei sistemi desktop e laptop sono già tassati dalla validazione del blocco ad un megabyte ed il bisogno per mantenere la propria validazione diminuisce l’esperienza dell’utente.

Il secondo problema nel protocollo è l’assunzione che non essendo pratico per l’utente media mantenere un nodo sia ancora possibile richiedere ad altri nodi la prova che il blocco e la transazione in esso sia confermato. Un meccanismo soddisfacente per questo non si è ancora materializzato.  Questo problema è maggiormente esacerbato quando i miner falliscono la conferma, invece i client stanno ricadendo la loro sicurezza di confermare i blocchi ad enti centralizzati ed il fork del 4 Luglio ha dimostrato che anche con buone intenzioni questi server centralizzati non possono essere sicuri nemmeno.

Cosa possiamo fare per tutto questo?

L’era dell’abbondanza del blocco sta terminando. Anche affrontando tutti i problemi sopra descritti ci mettessimo d’accordo sulla dimensione del blocco, prima o poi sbatteremo contro il nuovo limite e se ci andremo a sbattere senza aver affrontato tutti questi problemi assieme agli enormi rischi associati con i cambi incompatibili nelle regole del consenso rischiamo un collasso del modello sicurezza di Bitcoin, rendendo la discussione sulla dimensione del blocco irrilevante.

Indipendentemente dal fatto di quando andremo ad aumentare la dimensione del blocco stiamo già lavorando in condizioni di scarsità. I nodi che affidano le transazioni sono già rafforzati a prioritare le stesse per ridurre il carico di memoria ed evitare DoS. Un libero mercato si stà già sviluppando, mi fido dell’ingenuità umana per trovare una buona via per queste cose.

Riguardo ai costi di validazione sono speranzoso che potremo rendere economico ed efficiente confermare o sviluppare meccanismi per affidare a terzi  la conferma. Questo richiederà una ringegnerizzazione del protocollo e probabilmente dell’intere rete Internet. Anche se quella è ad un paio di anni dalla fine, dati i maggiori sviluppi in questo settore, credo che prima o poi accadrà, per ora incoraggio cautela nel fare qualsiasi cosa che incrementa i costi di transazione.

Rif.: https://bitcoinmagazine.com/21377/settling-block-size-debate/

Advertisements
Tagged with:
Posted in Tecnologia

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Categories
Archives
%d bloggers like this: