sabato 24 luglio 2021

Come Risolvere Il Trilemma: Scalabilità, Sicurezza, Decentralizzazione


V.Buterin (Ethereum): "Se puntiamo alla velocità e alla scalabilità, dobbiamo rinunciare alla decentralizzazione"

Noi avevamo già parlato del noto problema del Trilemma (CAP, PACELC e Zooko Theorem), oggi vediamo come questo problema venga affrontato nelle blockchain delle criptovalute. I tre problemi da risolvere sono:

1) Scalabilità (un protocollo con transazioni poco costose che sfrutta basse performance hardware è definito scalabile)
2) Decentralizzazione (ci si riferisce al fatto che non c'è un ente o comunque un'azienda a governare la rete ma sono i partecipanti stessi a farla andare avanti. Meno nodi ci sono e più una rete deve essere basata sulla fiducia e questo non va bene. Il nodo più "debole" delle rete deve essere in grado di soddisfare/verificare tutte le regole del network: validità delle transazioni, supply del token, etc)
3) Sicurezza (è comunque connessa alla decentralizzazione)

Sostanzialmente il problema del Trilemma indica che migliorando uno (o due) di questi tre fattori diminuisce l'altro. Ad esempio Bitcoin ed Ethereum sono abbastanza decentralizzati e sicuri ma poco scalabili (ovvero le transazioni non sono molto veloci e sono costose, rispetto ad altre blockchain; Ethereum 2.0 con il passaggio da Proof Of Work a Proof Of Stake, con l'utilizzo di una doppia chain e lo sharding ovvero la frammentazione della blockchain in piccoli frammenti chiamati "shards", prova a migliorare la sua scalabilità senza inficiare la decentralizzazione).

Il nodo di un network richiede tre risorse:
- Larghezza di Banda (Bandwidth): costo per scaricare e trasmettere dati Blockchain
- Elaborazione (Compute): costo di eseguire calcoli e smart contract
- Storage: funzione necessaria per immagazzinare dati, essa ha ovviamente un costo

La performance di una rete (Scalabilità) dipende da due fattori:
- Throughput: trasmissione di transazioni al secondo
- Latency: tempo di processione di una transazione
(fondamentale che per aumentare questi due fattori, i costi rimangano bassi)

Ad esempio BNB, Tron, EOS hanno ottima scalabilità (sono economiche e veloci) ma sfruttando un meccanismo di consenso tramite delegazione sono poco decentralizzate (ci sono pochi nodi). Come detto ad inizio articolo, Ethereum è decentralizzato e sicuro ma poco scalabile (a causa della latenza ovvero bassa velocità e degli altri costi di rete pagati sotto forma di gas; ETH permette 47 transazioni al secondo, spostando Ethereum da un wallet all'altro sono meno costose, 16 transazioni al secondo invece trasferendo Erc20 da un wallet all'altro, circa 10 invece sui dex facendo trade da un token all'altro). 


AUMENTO DELLA SCALABILITA' (LAYER1 E LAYER2)
Per aumentare la scalabilità, ovvero le transazioni per secondo diminuendo il costo di rete, ci si potrebbe affidare:
1) Ad una terza parte ma ovviamente questo aumenta la fiducia "trust" e quindi diminuisce la decentralizzazione e la sicurezza (gli asset trasferiti potrebbero essere rubati)
2) Utilizzare blocchi più grandi e più frequenti (Bitcoin Cash e Bitcoin SV). Ma qual è il problema in questo caso? Il costo del nodo è maggiore e ciò diminuisce gli stessi quindi diminuisce la decentralizzazione e sicurezza (anche EOS, Ripple, Solana soffrono di questo problema). Meno nodi vuol dire meno miners/validatori quindi meno sicurezza
3) All'esecuzione di tutte operazioni su una chain parallela (ad esempio Matic funziona come un Layer2) che diminuisca il trust (fiducia) ed aumenti l'unità di costo per ogni blocco (rendendo le transazioni più economiche). Le operazioni vengono eseguite off-chain (optimistic rollup), sulla catena principale invece vengono scritti solo i risultati. Ciò non inficia la decentralizzazione, aumenta parzialmente la scalabilità ma la criticità potrebbe essere la sicurezza (i dati vengono elaborati in locale e poi riscritti "ufficialmente" sulla blockchain; chiaramente questi dati andrebbero verificati da un altro sequencer del network chiamato "verifier" reso legit da un "fidelity bond" ovvero da un collaterale bloccato che fa da assicurazione. Lo stato delle transazioni prima di essere convalidate vanno sotto un "dispute period" dove eventualmente una "fraud proof" indica che la transazione non è sicura. Questo è uno dei motivi per cui passando dal Layer2 al Layer1 ora come ora è necessario attendere una settimana perchè i dati vengono verificati). Perchè la scalabilità è aumentata parzialmente? Perchè comunque da Layer1 a Layer2 (e viceversa) devo passare da Ethereum (che è poco scalabile). Una volta all'interno del Layer2, la soluzione è perfettamente scalabile.

Un paradosso per il Layer2 è il seguente: "Se il sistema incentiva a lavorare bene, nessuno proverà ad imbrogliare (altrimenti perderebbe il fidelity bond). Ma se nessuno imbroglia non c'è nessun incentivo a diventare un verifier perchè non si fanno soldi ma sarebbe solo una cosa dispendiosa. Ma se nessuno è un verifier potrebbe nascere l'esigenza di imbrogliare e convalidare transazioni non valide quindi il sequencer imbroglia e il sistema non funziona più"

Il Layer2 prova a risolvere questo paradosso tramite il "dispute period" ovvero l'attesa di 7 giorni per il prelievo. Per forzare quest'attesa, l'utente può pagare una fee che finisce nelle mani del verifier che quindi è incentivato a svolgere questo lavoro (verifica delle transazioni). Avviene una sorta di scambio tra utente e verifier: se sto riportando 1 ETH al Layer1, ne riceverò 0.95 (la differenza finisce al verifier che fa anche da "market maker"). Qual è potrebbe essere il problema? Chiaramente la sicurezza perchè se il Layer2 è collegato al Layer1 ho un collegamento diretto comunque con la mainnet (esponendo la rete a maggiori vulnerabilità o bug).


ALTRE BLOCKCHAIN
Abbiamo già citato il fatto che Bnb, Tron ed EOS sono molto veloci ed economiche ma quasi centralizzate (a causa dei pochi nodi). EOS, Ripple e Solana hanno costi molto elevati per l'implementazione di un nodo (questo discorso vale anche per Bitcoin Cash, Bitcoin SV, Dogecoin, Litecoin che hanno adottato la soluzione dei blocchi grossi. Si tratta di blockchain più soggette ad attacchi potendo saturare un blocco con microtransazioni e lasciandolo non disponibile per quelle legit, qui per approfondire: How to Evaluate Bitcoin Cash Based on Block Size).
Invece Polkadot, Zilliqa, Cardano ed Egld utilizzano lo sharding garantendo grandi prestazioni ma a discapito della sicurezza di rete (gli "shards" sono più attaccabili da exploit e vulnerabilità).
Interessante comunque è la soluzione di Solana per risolvere parzialmente il trilemma attraverso la "Proof Of History" che sfrutta un principio delle telecomunicazioni: il multiplexing tramite la divisione del tempo (ovvero una moltitudine di utenti che utilizzano la stessa frequenza radio). Solana ha tradotto questo principio usando:

1) Nodi validatori con un clock che permette la sincronizzazione degli stessi (le transazioni arrivano a nodi casuali ed infine vengono poste in ordine cronologico, creando una catena di blocchi)
2) Questo sistema garantisce velocità molto elevate (50.000 / 80.000 transazioni al secondo) mantenendo la decentralizzazione
3) Proof of Stake con delega: chiunque può creare un nodo validatore  (non ci sono puntate minime ma serve hardware davvero performante e costoso, questo è il problema)
4) Solana non utilizzando lo "sharding" (frammentazione della blockchain) ha una sicurezza maggiore rispetto a Polkadot, Cardano, Zilliqa, Egld (tutte economiche e veloci ma appunto si tratta di un compromesso con la sicurezza, in quanto un "frammento" intercettato potrebbe diventare un vettore d'attacco avendo anche un impatto sul prezzo del token) ma potrebbe andare incontro a saturazione ed attacchi spam (proprio a causa del bassissimo costo di transazione)
5) Turbine Block Propagation (il blocco viene scomposto in tanti frammenti e distribuito ai vari nodi)
Qual è il problema di Solana? Forse la decentralizzazione. Relativamente pochi validatori e una maggiore richiesta di potenza di calcolo rispetto ad altre blockchain. Ma coloro che hanno le risorse necessarie, possono rendere la rete scalabile anche nei periodi di massiccio utilizzo.

Anche Algorand ha provato a risolvere questo problema, sfruttando una tecnica particolare. Sicuramente si tratta di una blockchain economica e veloce (quindi scalabile) ma come fa a raggiungere la scalabilità mantenendo la decentralizzazione? Il focus è sui validatori, che hanno il compito di aggiungere nuove transazioni (nuovi blocchi). Algorand lo fa selezionando i validatori casualmente tra tutti i possessori di token. La rete si basa su un algoritmo che seleziona automaticamente il successivo gruppo di nodi che diventano idonei per l'aggiunta di blocchi. Questo approccio mantiene il decentramento poiché tutti possono essere selezionati dal sistema. Il fatto che nessuno sappia chi saranno i prossimi validatori garantisce la sicurezza, che è un altro elemento importante del trilemma. 
La casualità è un potente strumento per ottenere il decentramento e impedire alla rete un potenziale "attacco del 51%".  L'unico modo per danneggiare la rete Algorand è avere la maggioranza dei token, cosa difficile da eseguire (l'attacco non sarebbe conveniente). Chi è responsabile della scelta dei validatori casuali? Il Pure Proof Of Stake (DPOS). Il fondatore Micali ha spiegato come funziona il sistema:

"In Algorand, facciamo qualcosa di poco ortodosso: essenzialmente, i possessori di token vengono scelti a caso. Se ci pensi, sembra una pessima idea perché se sono una persona cattiva, mi selezionerò più e più volte perché voglio far parte del comitato ogni volta. Anche se rappresento un'intera nazione, estremamente potente, con un'incredibile potenza di calcolo, non ho la capacità di migliorare nemmeno minimamente la mia probabilità che uno dei miei biglietti vinca alla lotteria"
Ciò che Micali vuole dire è che ogni possessore di token sta eseguendo la sua lotteria individuale, che è come partecipare ad una slot machine solo una volta: o vinci o perdi. 
Se vinci un biglietto, sei uno dei 1.000 titolari di token che possono aggiungere il blocco successivo in Algorand e garantire che le transazioni siano accurate. Quindi, tutti partecipano all'estrazione, ma solo 1.000 vincitori sono in grado di convalidare i blocchi successivi. Il sistema è scalabile perché la lotteria avviene in un microsecondo. 

Per un altro noto trilemma del mondo Blockchain vai qui: Il Trilemma Dei Bridge: Asset Nativi, Liquidità Unificata e Finalizzazione Istantanea

Per approfondire su Ethereum:

Nessun commento:

Posta un commento