- Cosa è un client Ethereum
- Quali sono i client disponibili?
- OpenEthereum
Introduzione
Sembrerebbe che le reti dei vari asset di mercato si vadano aggiornando sempre più velocemente, consentendo agli utenti sviluppatori di personalizzare qualsiasi cosa modo rapido e veloce. In particolare, i client Ethereum stanno facendo enormi progressi, e diventano sempre più leggeri e intuitivi. Oggi, ad esempio, OpenEthereum ha rilasciato la versione v 3.1.1, tramite la quale ha risolto diversi bug e introdotto nuove funzioni utili a tutti gli sviluppatori che operano sulla rete ETH. Prima di scoprire i vari aggiornamenti, però, è opportuno fare una piccola introduzione ai client in modo da capirne il funzionamento.
Cosa è un client Ethereum?
Spiegare cosa sia un client Ethereum non è molto semplice se non si hanno ben chiari i concetti di network decentralizzato e blockchain. Ad ogni modo, un client Ethereum può essere definito come un software che contiene dei nodi, e che viene utilizzato per verificare le transazioni di ogni blocco, così da mantenere un alto livello di sicurezza all’interno della rete.
In altri termini, con client ci si riferisce a qualsiasi nodo in grado di analizzare e verificare la blockchain, i suoi smart-contracts e tutto ciò che è ad essa collegato. Inoltre, un client Ethereum mette a disposizione diverse interfacce per creare transazioni o estrarre blocchi. Tali funzioni sono, appunto, elementi cruciali per il corretto funzionamento di tutte le transazioni che avvengono all’interno della blockchain.
E’ anche da sottolineare come i vari client disponibili siano molto simili tra di loro, se non per il fatto che operano su linguaggi di programmazione diversi. Alcuni, ad esempio, utilizzano Java, altri Python e altri ancora C++. Tuttavia, ognuno di essi opera secondo delle procedure standardizzate, che dettano le regole dell’intera blockchain.
Quali sono i client disponibili?
Come appena accennato, ogni client opera su un linguaggio diverso, che può essere più o meno funzionale in base alle proprie competenze e preferenze. Di seguito vi illustreremo brevemente il funzionamento di Geth, client ufficiale di Ethereum, in modo da farvi capire come può essere utilizzato. Se, invece, volete consultare alcuni dei client disponibili in rete, troverete una breve lista alla fine dell’articolo.
Geth
Geth è famoso principalmente per essere il client ufficiale di Ethereum. Scritto in linguaggio Golang, può essere utilizzato sia come client indipendente sia come strumento di archiviazione per altri progetti. Geth consente di controllare diversi tipi di nodi, tra cui quelli completi e quelli leggeri.
Controllando un nodo leggero, è possibile utilizzare il network di Ethereum senza dover scaricare l’intera copia della blockchain. Se, invece, si vogliono estrarre e verificare nuovi blocchi di transazioni, si può utilizzare un nodo completo. Geth, inoltre dispone di una propria testnet Rinkeby che permette di testare, ad esempio, gli smart-contracts senza utilizzare del denaro reale.
Ciò per cui Geth è molto gettonato però, oltre al fatto che si tratta di un client ufficiale Ethereum, è la sua sincronizzazione estremamente rapida. Infatti, durante la fase di download, Geth riesce a mantenere soltanto i dati storici recenti, diminuendo notevolmente la dimensione della blockchain da 300 Gb a 25 Gb, rendendo ogni processo molto più veloci.
Questa breve spiegazione fa già comprendere quanto sia importante disporre di un client, soprattutto se si ha intenzione di operare rapidamente all’interno della blockchain.
OpenEthereum
Per quanto riguarda OpenEthereum, esso è, appunto, un client Ethereum creato con l’obiettivo di diventare il più veloce, sicuro e affidabile dei servizi disponibili. Tali caratteristiche, infatti, sono cruciali per i miners, i providers e gli exchange, che hanno bisogno di una sincronizzazione veloce e in tempo reale, ma anche ben protetta da eventuali attacchi. Tra i vari vantaggi offerti da OpenEthereum sono presenti:
- una basecode intuitiva che offre una personalizzazione rapida e completa
- un client all’avanguardia basato su CLI
- una memoria minima di archiviazione dati
- una sincronizzazione in ore, possibile grazie a Warp Sync
L’intero client è scritto utilizzando il moderno linguaggio di programmazione Rust, e opera su un server HTTP JSON-RPC sulla porta :8545 e un server Web-Sockets sulla porta :8546, completamente configurabili. Ovviamente, come ogni software, possono essere riscontrati numerosi bug e malfunzionamenti, che vengono risolti tramite il rilascio di versioni più aggiornate.
OpenEthereum v 3.1.1.
Tra i vari aggiornamenti rilasciati nella v 3.1.1 di OpenEthereum, la maggior parte si concentra su potenziamenti e funzioni aggiuntive che ne hanno migliorato ulteriormente le prestazioni. Di seguito troverete alcuni degli elementi che sono stati modificati grazie alla nuova versione:
Bug risolti:
- Risoluzione del bug target set. InvalidStateRoot (#69) (#149)
- Aggiornamento della mappa linked-hask alla versione 0.5.3
Miglioramenti:
- Aggiunzione dei bootnode Sg-1,Ca-2,Ca-3 OE
- Aggiunzione di
--ws-max-paxload
(#155) - Implementazione di flag per disabilitare l’output dello storage in openethereum-evm tool #97 (#115)
- Verifica dei blocchi (#74)
- Add
wasmDisableTransition
spec option (#60) - Implementazione di EIP2565 (#82)
DevOps:
Conclusioni
Per ovvi motivi, non è semplice capire quale sia il miglior client Ethereum da utilizzare. Alcuni potrebbero risultare molto leggeri e reattivi, ma limitati dal punto di vista delle funzioni e del livello di personalizzazione. Altri, al contrario, possono essere molto completi, ma allo stesso tempo lenti e macchinosi, e non consentono di ricevere informazioni in tempo reale. Per quanto riguarda OpenEthereum, invece, sembra che gli sviluppatori stiano facendo passi da gigante, in quanto sono state risolte diverse problematiche nel tempo. Riuscirà davvero a raggiungere l’obiettivo di diventare il più veloce e sicuro tra i client Ethereum? Come al solito, l’unica soluzione è tenersi sempre aggiornati, in modo da poter sfruttare strumenti che possono tornare davvero utili, soprattutto per gli sviluppatori che vogliono operare sulla blockchain.
Lista dei Client Ethereum
Qui di seguito troverete una piccola lista di quelli che sono soltanto alcuni dei client tramite i quali è possibile operare, con accanto i loro linguaggi di programmazione:
- Pantheon — Java
- Parity — Rust
- Aleth — C++
- Pyethapp — Python con pyethereum
- Ethereumj — Java
- Harmony — Java
- Exthereum — Elixir
Approfondimenti
- https://theledger.it/approfondimenti/l2-optimistic-rollup-lancio-ufficiale/
- https://theledger.it/approfondimenti/scrypta-id-lidentita-digitale-di-scrypta-blockchain/
Bibliografia
- https://getblock.io/blog/ethereum-clients-comparison-which-one-is-the-best
- https://github.com/openethereum/openethereum/releases/tag/v3.1.1
- https://github.com/openethereum/openethereum
- https://media.consensys.net/an-definitive-list-of-ethereum-developer-tools-2159ce865974
- https://ethereum.org/en/developers/docs/nodes-and-clients/#clients