Ethereum News Wiki

Channel State, Plasma e Truebit: soluzioni off-chain del secondo layer di Ethereum

Come abbiamo già detto in altri articoli, il 2018 per Ethereum potrebbe essere un anno molto importante per lo sviluppo delle piattaforma e della blockchain proprietaria, viste le numerose novità in arrivo. Quest’anno infatti, inizieranno diversi test sulle nuove implementazioni tecnologiche a cui il team lavora ormai da diversi mesi o addirittura anni. L’obbiettivo è quello di migliorare la scalabilità, le prestazioni e le funzionalità offerte dal platform token Ethereum.

Mentre su Bitcoin ormai sta avanzando l’utilizzo di Lightning Network come layer destinato al pagamento fra privati e per una futura adozione di massa, su Ethereum si sta lavorando a diverse applicazioni, anche off-chain, per risolvere i problemi di scalabilità del network. Vediamo quindi le possibili soluzioni a cui il team sta lavorando.

Ethereum: Sfida alla scalabilità della blockchain

Innanzitutto, è importante capire che la scalabilità non è un termine per indicare un unico problema. Esso infatti, si riferisce ad una raccolta di sfide che devono essere superate per rendere Ethereum utile ed applicabile su scala globale, dunque con miliardi di utenti. Il problema più comunemente discusso riguarda throughput delle transazioni. Attualmente, Ethereum può elaborare circa 24 transazioni al secondo, mentre Visa ne elabora circa 45.000. Negli ultimi mesi, alcune applicazioni – come Cryptokitties o alcune ICO – hanno avuto così tanto successo da intasare la rete, comportando un aumento del prezzo del GAS.

La limitazione principale consiste nel fatto che la blockchain richiede che ogni transazione sia processata da ogni singolo nodo della rete. Dunque, ogni operazione che si svolge sulla blockchain, che sia un pagamento, la nascita di un Cryptokitty o la distribuzione di un nuovo contratto ERC20, deve essere eseguita da ogni singolo nodo della rete in parallelo. Questa caratteristica è fondamentale per il funzionamento distribuito della blockchain, in quanto i nodi non devono fare affidamento su nessun altro per conoscere lo stato della blockchain, in quanto lo comprendono da sè.

Emerge quindi il primo limite del throughput: non può essere superiore a quello che è in grado di sostenere ogni singolo nodo. Si potrebbe pensare di chiedere ad ogni singolo nodo di svolgere più lavoro. Tuttavia, raddoppiando la dimensione del blocco, ogni nodo deve svolgere il doppio del lavoro ma si rischierebbe di diminuire la decentralizzazione delle rete, in quanto i computer meno potenti non riuscirebbero a stare al passo delle soluzioni più performanti, venendo dunque tagliati dalla rete. Bisogna quindi trovare un modo per far sì che il carico di lavoro sui singoli nodi non aumenti. Ciò è possibile sfruttando due possibilità.

ELIMINARE IL VINCOLO DELLA PARALLELIZZAZIONE DELLE TRANSIZIONI SUI NODI (Layer 1)

Il primo consiste nella suddivisione della rete in più sezione, in grado di operare in maniera parzialmente indipendente. La sezione A potrebbe trattare una serie di operazioni, mentre la sezione B un altro set di transizioni. Tale meccanismo raddoppierebbe di fatto il volume delle transazioni della blockchain, poiché ora il vincolo è dato dalla capacità elaborativa dei due nodi in contemporanea. Suddividendo dunque la blockchain in diverse sezioni, è possibile aumentare linearmente il numero di operazioni supportate.

Questo è il concetto alla base dello Sharding, di cui vi abbiamo parlato pochi giorni fa dato il presunto imminente arrivo della prima testnet. La blockchain viene quindi divisa in diverse sezioni chiamate shards (frammenti), ognuna delle quali può elaborare autonomamente le transazioni. Lo sharding è spesso indicato come soluzione scalabile di livello uno, poiché va implementato nel protocollo di base di Ethereum.

SFRUTTARE LA BLOCKCHAIN PER ESEGUIRE PIU’ OPERAZIONI (Layer 2)

La seconda possibilità consiste nello sfruttare meglio la capacità attuale della blockchain. Il throughput del blockchain rimarrebbe lo stesso, ma in pratica sarebbe possibile eseguire molte più operazioni. Come? Sfruttando i Channel State, Plasma e Truebit.

I tre sistemi hanno scopi leggermente diversi ma tutti funzionano in maniera off-chain, dunque in maniera asincrona rispetto alla blockchain di Ethereum, pur garantendo un sufficiente livello di sicurezza. Proprio per questo motivo, tali soluzioni vengono definite come soluzioni di Layer 2, poiché costruite “al di sopra” della blockchain. Non richiedono modifiche al protocollo di base, ma funzionano come se fossero dei semplici Smart Contract sulla blockchain di Ethereum in grado di interagire con software off-chain.

Ethereum State Channel

State channel

Vediamo ora come funzionano gli state channel. Gli state channel sono una tecnica per eseguire transazioni ed aggiornamenti di stato in maniera “off chain”. Tuttavia, tutto quello che accade all’interno di un canale conserva comunque un elevato livello di sicurezza. Infatti, se qualcosa non va per il verso giusto si ha la possibilità di fare riferimento all'”hard kernel” della blockchain vera e propria. Tali canali riprendono un po’ il concetto già visto con Lightning Network su Bitcoin, ma non sono limitati ai pagamenti, in quanto permettono anche di aggiornare un contratto e lo stato della blockchain.

Vediamo ora come funziona sfruttando il classico esempio con le due parti Alice e Bob. Immaginate che Alice e Bob vogliano giocare a tic tac toe e che il vincitore riceva un Eth. Un modo semplice per eseguire tale operazione consiste nella creazione di uno Smart Contract che implementi le regole del gioco e che tenga traccia delle mosse di ogni giocatore. Ogni volta che un giocatore vuole fare una mossa, invia una transazione al contratto. Quando un giocatore vince, come stabilito dalle regole, il contratto versa un eth al vincitore.

Questo sistema funziona, ma è inefficiente e lento. Alice e Bob stanno sfruttando la rete di Ethereum per un semplice gioco. Immaginate se invece che due persone ne avessimo un milione, la rete collasserebbe. Inoltre, devono pure pagare i costi del gas ogni volta che un giocatore vuole fa una mossa e devono aspettare che i blocchi siano estratti prima di poter fare la mossa successiva.

Possiamo invece progettare un sistema che permetta ad Alice e Bob di giocare a tic-tac-toe con il minor numero possibile di operazioni sulla blockchain. Alice e Bob saranno quindi in grado di aggiornare lo stato del gioco off-chain, pur avendo ancora piena sicurezza, in quanto possono comunque tornare sulla blockchain di Ethereum in caso di problemi . Tali sistemi vengono definiti State Channel.

In primo luogo, viene creato uno Smart Contract sulla catena principale di Ethereum che comprende le regole del tic-tac-toe e che può identificare Alice e Bob come i due giocatori. Questo contratto contiene inoltre il premio di un Ethereum. Dopodiché, Alice e Bob iniziano a giocare. Alice crea e firma una transazione che descrive la sua prima mossa, la invia a Bob che la firma e rispedisce la versione firmata, oltre a tenerne una copia per se stesso. Successivamente, Bob crea e firma una transazione descrivendo la sua prima mossa e la invia ad Alice. Alice firma tale transizione, la rispedisce e ne conserva una copia. Ogni volta che effettuano tale operazione, stanno aggiornando lo stato del gioco. Ogni transazione contiene una “nonce”, che consente di ricostruire l’ordine delle mosse eseguite.

Finora, nulla di tutto questo sta accadendo è stato trasmesso sulla blockchain, in quanto Alice e Bob si stanno semplicemente inviando transazioni l’un l’altro su Internet. Tuttavia, tutte queste transazioni potrebbero essere inviate allo Smart Contract. Quando la partita termina, possono chiudere il canale inviando lo stato finale allo Smart Contract, pagando quindi solo una volta le spese di commissione. Tale contratto si assicura che lo “stato finale” sia firmato da entrambe le parti ed attende un certo periodo di tempo per assicurarsi che nessuno possa contestare il risultato. Successivamente, versa ad Alice, la vincitrice, un Ethereum.

Come visto in Lightning Networt, il tempo di attesa è necessario per assicurarsi che nessuno dei due giocatori invii un vecchio stato del canale. Tale intervallo di tempo dunque, consente ad Alice di dimostrare, ad esempio, che Bob ha mentito sullo stato finale del gioco. Se c’è uno stato più recente, allora Alice avrà una copia delle transazioni firmate e potrà sottoporle allo Smart Contract, che eseguirà la verifica e respingerà il tentativo di Bob di barare.

LIMITI E FEATURE DEGLI STATE CHANNEL

I channel state sono utili in molte applicazioni, in quanto offrono un notevole miglioramento prestazionale rispetto alla classica blockchain. Tuttavia, è importante tenere a mente alcuni compromessi:

  • Essi dipendono solamente dalla disponibilità. Se Alice perde la connessione internet durante una sfida, potrebbe non essere in grado di rispondere prima dello scadere del tempo di verifica. Tuttavia, Alice può pagare qualcun altro per conservare una copia del suo stato e mantenere la disponibilità al suo posto;
  • Sono particolarmente utili quando i partecipanti scambiano molti aggiornamenti di stato per un lungo periodo di tempo. Ciò perchè vi è solamente il costo iniziale per creare il canale di distribuzione del contratto, ma una volta implementato, il costo per gli aggiornamento dello stato e quasi nullo;
  • I canali vengono utilizzati per applicazioni con un insieme definito di partecipanti. Questo perché il contratto deve sempre conoscere le entità (cioè gli indirizzi) che fanno parte di un determinato canale. Possiamo aggiungere e rimuovere persone, ma ogni volta è necessario modificare il contratto;
  • I canali hanno un alto livello di privacy, poiché tutto accade dentro ad esso e non pubblicamente sulla blockchain. Solo le operazioni di apertura e chiusura sono pubbliche.

Plasma

Nell’agosto 2017, Vitalik Buterin e Joseph Poon hanno pubblicato un documento intitolato: Plasma: Autonomous Smart Contracts. Il documento ha introdotto una nuova tecnica che potrebbe consentire ad Ethereum di eseguire molte più transazioni al secondo rispetto al valore attuale.

Come channel state, Plasma è una tecnica per effettuare transazioni off-chain, affidandosi alla blockchain solamente per mantenere un certo livello di sicurezza finale. Il concetto di Plasma è di creare delle blockchain figlie da collegare alla blockchain principale di Ethereum. Una blockchain figlia, infatti, può funzionare più velocemente ed avere spese di transazione inferiori, poiché non è necessario replicare le operazioni su di essa attraverso l’intera blockchain di Ethereum.

Ethereum Plasma

Vediamo come funziona con un semplice esempio. Immaginiamo di voler creare un gioco di carte su Ethereum. Le carte saranno token ERC 721 (come Cryptokitties), ma hanno alcune caratteristiche e attributi che permettono agli utenti di giocare l’uno contro l’altro, come in Hearthstone o Magic. Questi tipi di operazioni sono costose da eseguire sulla blockchain, motivo per cui conviene optare per il protocollo Plasma.

In primo luogo, creiamo una serie di Smart Contract sulla blockchain principale di Ethereum. Essi fungono da “radice” delle nostre blockchain figlie. La radice di Plasma contiene le regole di transizione dello stato della blockchain figlia e gli hash dello stato della blockchain figlia. Infine, funge da “ponte” di collegamento, che permette agli utenti di spostare beni tra la catena principale Ethereum e la blockchain figlia.

Successivamente, creiamo le blockchain figlie. Esse avranno un proprio algoritmo di consenso, per esempio il Proof of Authority (PoA), un semplice meccanismo di consenso che si basa sull’autorità di chi produce blocchi validi, cioè i validatori. I produttori di blocchi sono analoghi ai minatori in un sistema di “Proof of Work. Sono i nodi che ricevono le transazioni, creano i blocchi e ricevono le commissioni di transazione. Nel nostro esempio, imponiamo che la società che ha creato il gioco sia l’unica entità che può creare i blocchi.

Una volta che la blockchain figlia è stata creata e attivata, i produttori di blocchi assumono impegni periodici per confrontare i vari Smart Contract con la radice. Gli impegni sono registrati sulla blockchain di radice come prova di ciò che è accaduto nella blockchain figlia.

Ora che la blockchain figlia è pronta, possiamo creare i componenti di base del nostro gioco di carte. Le carte sono token ERC721 ed inizialmente vengono create sulla blockchain di Ethereum e poi spostate sulle blockchain figlie tramite la radice di Plasma. Plasma dunque, ci permette far interagire gli asset basati sulla blockchain Ethereum con le catene figlie, che contengono gli Smart Contract a loro volta contenenti le regole del gioco.

Quando un utente vuole giocare al gioco dunque, sta solo interagendo con la blockchain figlia. L’utente può detenere beni (le carte ERC721), acquistarle e scambiarle per Ethereum, oppure giocare il proprio round contro altri utenti, senza mai interagire direttamente con la blockchain principale. 

 Truebit

Truebit è una tecnologia nata con lo scopo di eseguire le operazioni più pesanti in maniera asincrona, dunque off-chain.  Ciò lo rende completamente differente dai Channel State e da Plasma, che puntano ad aumentare il numero di operazioni al secondo.  Truebit dunque, non ci permetterà di eseguire più transazioni, ma permetterà alle applicazioni basate su Ethereum di fare cose più complesse garantendone comunque una rapida verificabilità sulla blockchain.

Quando abbiamo a che fare con applicazioni con decine di migliaia di operazioni, conviene infatti pagare un ente esterno off-chain (risolutore) piuttosto che pagare le commissioni per ogni transizione sulla blockchain principale.

Per verificare la correttezza delle operazioni però, Truebit utilizza un opportuno meccanismo di verifica. In sostanza, crea un incentivo per altre parti esterne, chiamate sfidanti, così che possano controllare il lavoro dei solutori. Se uno sfidante è in grado di dimostrare che un risolutore ha generato un risultato falso, allora raccoglie una ricompensa, mentre il risolutore perde il deposito. Così facendo dunque, si innesca un meccanismo di verifica funzionale ed affidabile, che offre anche un costo inferiore al classico Gas di Ethereum.Truebit Ethereum

Abbiamo quindi visto alcune nuove tecnologie che potremmo ritrovare nel protocollo Ethereum. Ciò mette in evidenza come il team stia lavorando per migliorare la piattaforma ed il potenziale ancora inespresso di essa. Possiamo quindi dire che Ethereum è ancora allo stato embrionale dunque, e che nel prossimo anno/i dovrebbe completare l’enorme ecosistema che già oggi offre. Vincerà la sfida alla scalabilità oppure sarà necessario cambiare ancora strategia? Vedremo nei prossimi anni.

sharing-caring

Vi invitiamo a seguirci sul nostro canale Telegram ed anche sul gruppo ufficiale Telegram, dove sarà possibile discutere insieme delle notizie e dell’andamento del mercato, sulla nostra pagina Facebook e sul nostro account Twitter.

[ VIA ]

Emanuele Pagliari

Ingegnere delle telecomunicazioni appassionato di tecnologia. La mia avventura nel mondo del blogging è iniziata su GizChina.it nel 2014 per poi proseguire su LFFL.org, GizBlog.it, ed ora su CryptoMinando.it. Sono nel mondo delle criptovalute come minatore dal 2013 ed ad oggi seguo gli aspetti tecnici legati alla blockchain, crittografia e dApps, anche per applicazioni nell'ambito dell'Internet of Things, la mia branca di studio.
Follow Me:

Related Posts