Gli sviluppatori di Ethereum ritengono che gli stateless clients siano fondamentali per il futuro del network ma, nonostante tutti i progressi compiuti, vi sono ancora notevoli limitazioni al loro utilizzo pratico.

Alla conferenza Unitize, Vitalik Buterin, co-fondatore di Ethereum, ha analizzato le ultime novità relative all’evoluzione e alle problematiche correlate agli stateless client.

Gli stateless clients permettono ai nodi di partecipare alla validazione delle transazioni senza dover scaricare l’intera blockchain. Essi registrano solo gli account attivi, il codice degli smart contract e i relativi dati. 

Ogni nuovo blocco apporta variazioni molto piccole allo stato generale della rete, ma tutti devono essere verificati a fronte dell’intera blockchain: questo processo è chiaramente molto inefficiente. Gli stateless clients sono uno degli elementi cardine del progetto Ethereum 1.x, che punta a mantenere in funzione la blockchain esistente, ma Buterin ha chiarito che hanno implicazioni molto importanti anche per Ethereum 2.0:

"Dato che Ethereum 2.0 utilizzerà lo sharding, gli stateless client sono praticamente obbligatori, dato che i nodi vengono rapidamente spostati tra vari shard."

Buterin ha inoltre sottolineato che anche altre blockchain, inclusa quella di Bitcoin, stanno lavorando a soluzioni stateless client. Questa tecnologia si basa su tecniche crittografiche che processano solo i cambiamenti di stato e li verificano senza dover scaricare l’intero network. La crittografia alla base di queste tecniche, però, non è ancora stata perfezionata.

Il problema della "proof"

La soluzione che viene attualmente utilizzata prevede delle proof con struttura a Merkle Tree, per validare lo stato della rete tramite l’introduzione dei witness: essi includono le informazioni sulle parti della rete che sono state modificate. Questa soluzione, però, ha notevoli inconveniente a causa dei problemi di scalabilità di Ethereum, che potrebbero portare ad avere dei witness di grandezza pari 405 megabyte su ogni blocco.

Le future ottimizzazioni del sistema potrebbero ridurre la grandezza del witness fino a circa 600 kilobyte in media, al massimo di 2 megabyte. Tuttavia, momento la grandezza dei blocchi di Ethereum è di appena 50 kilobyte.

L’alternativa su cui Buterin sta lavorando al momento sono i Polynomial Commitments, una sistema di prova che si basa su funzioni polinomiali per rappresentare i dati. Queste permetterebbero che un singolo witness possa validare “numerosi valori”.

Lo stesso Buterin ha però chiarito che c’è un evidente problema insito in questa soluzione. Le proof basate sui Merkle Tree sono facili da aggiornare, ma i Polynomial Commitments richiedono una modifica completa dell’intera curva, il che renderebbe molto costoso l’utilizzo dei witness.

Ci sono varie possibili soluzioni a questo problema: una, ad esempio, prevede un modello ibrido detto “Verkle Tree”, che combina i polynomial commitments con la struttura ad albero.

Lo sviluppo è ancora in corso

Buterin ha dichiarato che ogni soluzione presenta anche dei problemi che richiedono studi aggiuntivi. Terminando la sua presentazione, ha aggiunto:

"Ci sono varie tecniche aritmetiche che ci permetterebbero di limitare la grandezza dei witness fino a renderla non particolarmente significativa. Ma c’è ancora bisogno di migliorare parecchio i processi: in quest’ambito ci farebbe molto piacere ricevere l’aiuto della comunità accademica."

Il discorso di Buterin sembra indicare che gli stateless client non arriveranno a breve su Ethereum, dato che c’è ancora molto lavoro da fare sui loro algoritmi crittografici. Al momento il numero di transazioni processabili su Ethereum è volutamente limitato, per evitare che la blockchain diventi inutilizzabile per i dispositivi meno performanti.

Per l’utente medio, questo significa che il gas price rimarrà ancora alto, a meno che la domanda non crolli o che le soluzioni layer two non apportino significativi miglioramenti.