Nethermind è un "execution client" per Ethereum, scritto in C#, che può essere utilizzato per scaricare la blockchain, realizzare dApp o attivare un validatore per svolgere l'attività di staking e incassare così le ricompense previste. Si pone dunque come alternativa al più popolare Go Ethereum, con il quale rimane comunque pienamente interoperabile. In questa guida vedremo proprio come installare e configurare Nethermind su un qualsiasi PC

Come attivare nodo Ethereum: guida Nethermind Ubuntu (installazione configurazione) - ethereum spotlight

Configurare un nodo Ethereum con Nethermind: cosa serve

Chiunque può partecipare alla rete Ethereum installando un client compatibile. È sufficiente disporre di:

  • un computer da dedicare a questa attività
  • un minimo di manualità con la linea di comando in ambiente Linux
  • un collegamento veloce a Internet (almeno 10 megabit in download e 2 megabit in upload), senza limitazione al volume di dati

Per tutti i dettagli, ti invito a consultare la mia guida allo staking di Ethereum: i requisiti di sistema, infatti, sono gli stessi.

Configurare un nodo Ethereum: quale programma scegliere

Il programma necessario per trasformare il PC in un nodo Ethereum è detto "client Ethereum". Ne esistono molteplici, tutti compatibili fra loro.

Nel corso della presente guida, configureremo Nethermind

Come attivare nodo Ethereum: guida Nethermind Ubuntu (installazione configurazione)

Configurare un nodo Ethereum: testnet e mainnet

La rete Ethereum "reale", chiamata mainnet, è affiancata da molteplici reti di prova, chiamate testnet. Ogni rete ha le proprie monete (chiamate Ether, con simbolo ETH), con la differenza che solo quelle della mainnet hanno un controvalore economico reale. Le altre reti utilizzano "soldi del Monopoli", senza alcun valore e "spendibili" solo per transazioni di test.

L'altra differenza fondamentale da tenere presente è la dimensione delle rispettive blockchain:

  • la blockchain della mainnet si aggira, a settembre 2024, attorno a 1.2 TB (in rapidissima crescita)
  • le blockchain delle testnet contengono invece pochi gigabyte

Se desideri attivare un nodo Ethereum devi quindi scegliere subito se partecipare alla mainnet oppure ad una testnet. Raccomando vivamente di prendere dimestichezza dapprima con una testnet, non fosse altro per la quantità significativa di spazio su disco occupata dalla blockchain mainnet e, di conseguenza, dei lunghi tempi necessari per scaricare i dati in locale e diventare operativi.

Configurare un nodo Ethereum con Nethermind, passo 1: Preparare il sistema

Per iniziare è necessario seguire i seguenti passi che ho dettagliato nella guida allo staking di Ethereum:

  1. Installare Ubuntu
  2. Avviare il Terminale
  3. Aggiornamento completo
  4. Accesso SSH (opzionale)
  5. Diventare root

Prima di proseguire, assicurati quindi di essere davanti al Terminale del sistema sul quale installeremo Nethermind e, lo ripeto!, di avere i privilegi di root

Come attivare nodo Ethereum: guida Nethermind Ubuntu (installazione configurazione)

Configurare un nodo Ethereum con Nethermind, passo 2: Installare i pre-requisiti

Procediamo installando gli altri pacchetti di utilità che impiegheremo di seguito:

apt install curl libsnappy-dev software-properties-common -y

Configurare un nodo Ethereum con Nethermind, passo 3: Installare Nethermind

Procediamo aggiungendo il Personal Package Archive (PPA) ufficiale di Nethermind:

add-apt-repository ppa:nethermindeth/nethermind

Ora sfruttiamolo per installare il software vero e proprio:

apt update && apt install nethermind -y

Configurare un nodo Ethereum con Nethermind, passo 4: Creare l'utente per Nethermind

Creiamo ora una nuova utenza con privilegi minimi: sarà quella che eseguirà materialmente l'applicazione. Allo scopo, impartiamo i comandi seguenti per creare l'utente di nome nethermind, la cartella /var/lib/nethermind e concedergli pieno accesso alla stessa:

useradd --create-home --home /home/nethermind --shell /bin/false nethermind

mkdir -p /var/lib/nethermind

chown -R nethermind:nethermind /var/lib/nethermind

chmod u=rwx,g=rx,o= /var/lib/nethermind -R

Come attivare nodo Ethereum: guida Nethermind Ubuntu (installazione configurazione)

I comandi indicati poco fa non mostrano alcun messaggio, se tutto va bene.

Se però vogliamo verificarlo puntualmente, assicuriamoci che la cartella sia stata creata e che abbia il proprietario e i permessi attesi impartendo:

ls -la /var/lib/ | grep nethermind

Per controllare che l'utente esista, invece:

cat /etc/passwd | grep nethermind

Configurare un nodo Ethereum con Nethermind, passo 5: Eseguire Nethermind come servizio

Per eseguire Nethermind come servizio ad ogni avvio del PC dobbiamo creare un file di configurazione. Il modo più facile per raggiungere l'obbiettivo è di scaricare quello già pronto.

Per la testnet:

curl -Lo /etc/systemd/system/nethermind.service https://turbolab.it/scarica/460

Per la mainnet:

curl -Lo /etc/systemd/system/nethermind.service https://turbolab.it/scarica/459

Ispezioniamo poi il suo contenuto:

cat /etc/systemd/system/nethermind.service

Come attivare nodo Ethereum: guida Nethermind Ubuntu (installazione configurazione)

[ nota tecnica: la configurazione qui proposta espone sia il WebSocket, sia il tradizionale endpoint HTTP. Può quindi essere utilizzato anche per lo staking con i vari client dedicati ]

[ seconda nota tecnica: il servizio esegue Nethermind lanciando direttamente /usr/share/nethermind/nethermind. Questo permette di aggirare un bug che impedirebbe agli utenti non-root di lanciare il programma ]

Configurare un nodo Ethereum con Nethermind, passo 6: Eseguire Nethermind automaticamente all'avvio

Ora che abbiamo preparato il servizio, facciamo in modo che parta automaticamente all'avvio del computer:

systemctl enable nethermind

Come attivare nodo Ethereum: guida Nethermind Ubuntu (installazione configurazione)

Per sincerarcene, riavviamo il sistema:

reboot

Terminato il riavvio, assicuriamoci di ri-acquisire i privilegi di root (sudo -s), poi visualizziamo lo stato del servizio:

service nethermind status

La schermata dovrebbe mostrare il messaggio active (running)

Come attivare nodo Ethereum: guida Nethermind Ubuntu (installazione configurazione)

Battere Q sulla tastiera per uscire.

Nel frattempo, la ventola del PC sarà partita con irruenza: digitiamo top e scopriamo che il responsabile è il processo di nome nethermind, che utilizza intensamente la CPU e sta scaricando la blockchain dagli altri nodi della rete

Come attivare nodo Ethereum: guida Nethermind Ubuntu (installazione configurazione)

È una situazione assolutamente normale mentre il nodo si sincronizza con la rete, e potrebbe durare parecchie ore: non so dire esattamente "quante", perché io ho lasciato il PC a lavorare tutta notte e l'indomani aveva terminato. Questo vale per le testnet: lavorando con la mainnet, invece, saranno necessari parecchi giorni, forse persino una settimana.

Configurare un nodo Ethereum con Nethermind, passo 7: Blindare il server con il firewall

Generalmente, ritengo superfluo l'uso del firewall su Linux. Tuttavia, in questa circostanza, faccio un'eccezione. Attiviamo dunque il firewall e apriamo solo le porte strettamente indispensabili.

Chi interagisca con il PC sul quale è in esecuzione Nethermind via SSH, e non con tastiera, mouse e schermo collegati direttamente, deve innanzitutto lasciar passare il traffico SSH:

ufw allow 22/tcp

Per essere assolutamente chiari: il comando appena segnalato NON è necessario per chi utilizzi la tastiera, il mouse e lo schermo collegati direttamente al PC che esegue Nethermind.

In ogni caso, invece, dobbiamo aprire le porte proprie di Nethermind:

ufw allow 30303/tcp && ufw allow 30303/udp && ufw --force enable

Visualizziamo la situazione aggiornata con ufw status

Come attivare nodo Ethereum: guida Nethermind Ubuntu (installazione configurazione)

Per maggiori informazioni:

» Leggi: Guida rapida a ufw - Come attivare/configurare il firewall su Ubuntu Desktop/Server da linea di comando: aprire le porte, bloccare le connessioni e gli indirizzi IP

Configurare un nodo Ethereum con Nethermind, passo 8: Aprire le porte sul router

In questo momento, il nostro nodo non sta funzionando in modo ottimale: dobbiamo infatti "aprire" le relative porte sul router. Più precisamente: dobbiamo svolgere il port forwarding dal router verso il PC che ospita il nodo Ethereum. Allo scopo, seguiamo questa guida:

» Leggi: Come aprire le porte sul router/modem: la guida definitiva al port forwarding (inoltro delle porte)

Le specifiche porte da aprire sono le seguenti:

  • 30303 TCP
  • 30303 UDP

Come attivare nodo Ethereum: guida Nethermind Ubuntu (installazione configurazione)

Dopo aver svolto la configurazione, verifichiamo esplicitamente che sia andata a buon fine tramite Shields Up!. Il link diretto è il seguente:

» Vedi: test porta 30303

Il servizio deve riportare la dicitura OPEN!

Come attivare nodo Ethereum: guida Nethermind Ubuntu (installazione configurazione) - shields up port open

» Leggi anche: Come testare se una porta del router/firewall è aperta? guida al Port scan con Shields Up!

Configurare un nodo Ethereum con Nethermind, passo 9: Installare un "consensus client"

Arrivati a questo punto, la nostra installazione di Nethermind è perfettamente funzionante. Ispezionando i log, però, noteremo la presenza di avvisi simili a questo:

No incoming messages from the consensus client that is required for sync.

Questo dipende dal fatto che dobbiamo ora affiancare a Nethermind un secondo programma, chiamato consensus client. Ne esistono molteplici: Lighthouse, Lodestar, Teku, Nimbus, Prysm. In particolare, ho proposto la guida all'installazione di Nimbus nel già ricordato articolo sullo staking di Ethereum.

Addendum: Mantenere aggiornato il sistema

Periodicamente, dovremo aggiornare tutto il sistema. Il comando zzupdate torna sicuramente utile allo scopo, poiché aggiorna il sistema operativo e i pacchetti installati tramite apt... fra i quali c'è anche Nethermind, che verrà dunque aggiornato insieme al resto.

È importante farlo periodicamente, poiché le nuove versioni includono correzioni di sicurezza, oppure modifiche indispensabili per continuare a operare in seguito ai frequenti hard fork, ovvero le modifiche più profonde al protocollo, che rendono incompatibili i vecchi client.

Conclusioni, fonti e riferimenti

In questa guida abbiamo visto come configurare un nodo Ethereum con Nethermind. La procedura è sicuramente un po' articolata, ma è una buona occasione per tutti noi smanettoni di provare in prima persona come funziona Ethereum, ed è un componente indispensabile per chi si stia avvicinando al mondo della programmazione su blockchain.

Questo articolo è frutto della mia esperienza diretta con la sola testnet, poiché non dispongo di un SSD abbastanza capiente da ospitare tutta la blockchain della mainnet. Ogni feedback da chiunque abbia attivato Nethermind su mainnet è dunque particolarmente gradito.