Come fare staking con Ethereum 2.0: la Guida Definitiva a cura di Turbolab.it
Come fare staking con Ethereum 2.0: la Guida Definitiva per configurare tutto e guadagnare interessi (testnet Pyrmont e mainnet, video) (aggiornamento: novembre 2020)
Con Ethereum 2.0 è possibile fare staking, validare le transazioni e guadagnare cifre molto interessanti con pochissimo sforzo. Il bello è che non è più necessario acquistare potenti GPU e spendere centinaia di euro in corrente elettrica: basta invece un tradizionale PC e un po’ di pazienza per configurare tutto quanto nel modo corretto. Ebbene: in questa guida passo per passo vedremo proprio come fare staking con Ethereum 2.0, dapprima sulla testnet Pyrmont e poi sulla mainnet, per guadagnare gli interessi.
Staking Ethereum 2.0: cosa significa, come funziona
La prima versione di Ethereum utilizzava la modalità Proof of work (PoW) per validare le transazioni. Si tratta dello stesso sistema impiegato tutt’oggi da Bitcoin, nel quale gli utenti che decidono di svolgere l’attività di mining competono per l’occasione di validare le transazioni (l’invio di monete da un indirizzo all’altro, ad esempio), scrivere il risultato sulla blockchain e guadagnare la ricompensa prevista per il loro lavoro.
Per svolgere l’attività di mining è necessaria attrezzatura specializzata, generalmente costituita da dispositivi hardware dedicati (ASIC) o, nel caso di Ethereum, molteplici schede video (GPU) di fascia alta, collegate in parallelo fra loro. È quindi necessario un investimento iniziale importante per l’acquisto dell’hardware. Di più: poiché questi apparecchi consumano moltissima energia elettrica, il mining genera profitto solo se il costo dell’elettricità è basso (si impiegano pannelli fotovoltaici con batterie, ad esempio).
Ethereum 2.0 utilizza invece la modalità Proof of stake (PoS), nella quale gli utenti “bloccano” le proprie monete Ethereum (ETH) all’interno di uno smart contract e vengono sorteggiati periodicamente per validare le transazioni. Chi decide di svolgere questa attività viene detto validatore e guadagna le commissioni pagate da chi ha svolto la transazione. Non è dunque più necessario acquistare costosa attrezzatura hardware: basta un normale PC, preferibilmente a basso consumo energetico per ridurre la spesa elettrica e massimizzare i guadagni.
Staking Ethereum 2.0: quanto si guadagna
Tutto bello e interessante ma, in concreto, quanto si guadagna dallo staking di Ethereum? La risposta dipende da molteplici fattori, ma i principali sono il numero complessivo di validatori attivi (meno sono, più si guadagna), il numero delle transazioni (più sono, più si guadagna) e il livello di intasamento del sistema Ethereum (più è intasato, più le commissioni pagate sono alte, più si guadagna).
In rete sono disponibili molti calcolatori che permettono di fare simulazioni, ma il ritorno effettivo varia enormemente, a seconda di parametri appena citati. In linea di massima, comunque, possiamo aspettarci un guadagno compreso fra il 4-10% all’anno. Niente male davvero: per molti di noi che hanno un stipendio medio, significa 2 mensilità in più all’anno!
Attenzione, però: al momento in cui scrivo, la funzionalità del sistema Ethereum che consente di prelevare quanto guadagnato non è ancora pronta. Lo sarà, presumibilmente, a fine 2022. Da quel momento, potremo materialmente incassare anche gli eventuali guadagni degli anni precedenti.
Staking Ethereum 2.0: cosa serve
Chiunque può diventare validatore sulla rete Ethereum: basta disporre dei requisiti e configurare il sistema. In particolare, è necessario:
- un PC, fisso o portatile (vedi seguito)
- Linux da linea di comando: di seguito riporteremo ogni singolo comando da impartire, ma è comunque indispensabile un minimo di manualità con la linea di comando in ambiente Linux
- collegamento a Internet veloce e stabile: una tradizionale ADSL “home” è sufficiente, a patto che non vada giù di frequente. Movimenteremo parecchie decine di gigabyte, quindi è fondamentale che la linea non preveda limitazioni al volume di traffico
- alimentazione elettrica stabile: il PC di staking e il router che lo collega ad Internet dovranno rimanere sempre accesi e operativi. Se viviamo in una zona nella quale vi sono frequenti interruzioni, dobbiamo acquistare un gruppo di continuità (UPS) con una batteria ad alta capacità
Gli ultimi due requisiti sono delicati, ma importanti: se infatti il PC di staking sarà offline (spento o scollegato da Internet) al momento in cui viene sorteggiato per validare le transazioni, subiremo una penalità e perderemo qualche decimo di ETH come “multa”.
Staking Ethereum 2.0: testnet e mainnet
Capiamoci: fare staking non è “una passeggiata”. Non è necessaria la laurea in informatica, ma è comunque richiesto un po’ di smanettamento e, per “fare sul serio”, è obbligatorio bloccare un determinato quantitativo di monete ETH. Per questo motivo, sono disponibili due reti:
- testnet Pyrmont: è una rete di test, alla quale tutti possono partecipare liberamente e gratuitamente per prendere confidenza con gli strumenti e la configurazione. Non si guadagna nulla, ma si può provare la procedura in tutta sicurezza
- mainnet: è la vera rete Ethereum, dove girano le applicazioni e si guadagnano realmente gli interessi per l’attività di staking
Chi desiderasse diventare validatore dovrebbe dapprima configurare tutto sulla testnet Prymont e, una volta acquisita una buona esperienza, passare sulla mainnet.
Ci sono piccole differenze fra le due, soprattutto in termini di hardware necessario. Nella prima parte della guida vedremo dunque come preparare tutto quanto per fare staking in testnet e, successivamente, approfondiremo l’accesso alla mainnet.
Quante monete servono per fare staking con Ethereum
Per diventare validatore sulla mainnet Ethereum è necessario possedere 32 ETH (32.2 ETH, in realtà: i decimali servono per pagare i costi di spostamento delle monete stesse dal wallet allo smart contract). Se già possiedi questo ammontare… buon per te! Puoi “fare sul serio” e guadagnare cifre interessanti. D’altro canto, al momento in cui scrivo, 32 ETH hanno un controvalore superiore agli 11.000 €: una cifra non certo irraggiungibile, ma fuori dalla portata mia e di molti altri “smanettoni”.
Evidenzio inoltre che, fino a fine 2022 circa, queste monete saranno bloccate. In altre parole, non potremo averle indietro prima di quel momento.
Ad ogni modo: prima di pensare alla mainnet è opportuno configurare tutto quanto sulla testnet, dove è tutto gratis e non è necessario spendere nemmeno un centesimo: guadagneremo “soldi senza alcun valore”, ma lo staking su testnet è un’esperienza formativa estremamente interessante.
Vedremo come fare nei prossimi paragrafi.
Fare staking con meno di 32 ETH: gli staking pool
Chi volesse guadagnare dallo staking di Ethereum pur senza possedere 32 ETH reali può rivolgersi agli staking pool: servizi che aggregano le poche monete di molteplici utenti per raggiungere la soglia e fare staking, per poi suddividere proporzionalmente gli interessi ai partecipanti. Ne ho parlato qui:
Quale PC usare per lo staking di Ethereum (testnet)
Nel sistema Proof of stake, non è necessario che il PC sia “potente”: la validazione delle transazioni richiede infatti pochissima potenza di calcolo
Ci sono però alcune differenze significative fra testnet e mainnet. Per quanto riguarda la testnet, un vecchio notebook è l’ideale, a patto che abbia una CPU a 64 bit e almeno 4 GB di RAM
» Leggi: Come vedere se il PC ha un processore a 64 bit (CPU x64) con Windows 10 o Linux
Nella modalità consigliata di seguito dovremo scaricare l’intera blockchain della rete di test Pyrmont, ma sono comunque pochi gigabyte: la mia configurazione di test occupa meno di 50 GB in totale. È però obbligatorio usare un SSD: come spiegato nella documentazione, i vecchi dischi fissi meccanici sono troppo lenti, e non riescono a tenere il passo.
» Leggi anche: Come installare un SSD sul PC portatile/notebook e sostituire/clonare l’hard disk senza formattare (video-guida definitiva)
Tale PC dovrà essere dedicato allo scopo: non potremo dunque usare il nostro computer personale.
Quale PC usare per lo staking di Ethereum (testnet)
Se mai un giorno riusciremo a passare sulla mainnet e “fare sul serio”, servirà un computer più “carrozzato”.
La CPU non è particolarmente importante: qualsiasi modello dual-core uguale o superiore ad un Intel Core i3 (o equivalente AMD) prodotto negli ultimi 4-5 anni è sufficiente.
Molto più importante è il quantitativo di memoria: per fare staking di Ethereum su mainnet si consigliano almeno 8 GB di RAM. Chi riuscisse ad investire qualcosina e arrivare a 16 GB avrà una tranquillità in più: considerate le cifre in gioco, vale sicuramente la pena di scegliere la dotazione superiore.
La vera criticità è lo spazio su disco: nella modalità ottimale, consigliata di seguito, saremo costretti a scaricare tutto il ramo più recente della blockchain Ethereum, per un ammontare complessivo di circa 500 GB di dati. È dunque già oggi necessario un SSD da almeno 1 TB
Ribadisco che l’uso di un vecchio disco fisso a piatti magnetici è esplicitamente indicato come “non possibile” dalla documentazione ufficiale. Serve proprio un SSD.
Staking Ethereum, passo 1: Installare Ubuntu 20.04
Per prima cosa, dobbiamo installare Linux sul PC dedicato allo staking. Svolgeremo l’installazione e la configurazione dapprima sulla testnet, poi, eventualmente, procederemo a formattare completamente il PC e riconfigurare tutto da zero prima di passare alla mainnet.
Qualsiasi distribuzione va bene, ma la presente guida prevede l’uso di Ubuntu 20.04: non è l’ultima versione rilasciata, ma si tratta di quella che garantisce il supporto esteso (LTS), con tutti gli aggiornamenti di sicurezza gratuiti fino al 2025 (persino fino al 2030, attivando la sottoscrizione a pagamento) ed è indubbiamente la più indicata per un progetto di questo tipo.
Possiamo scegliere indifferentemente Ubuntu Desktop oppure Ubuntu Server. In entrambi i casi lavoreremo perlopiù da linea di comando, ma l’edizione Desktop è raccomandabile ai meno esperti perché include il familiare ambiente grafico ed il browser web necessario all’attivazione del validatore. L’edizione Server, invece, è totalmente a linea di comando e richiede un passaggio in più.
Per il download e la guida all’installazione di Ubuntu si veda l’approfondimento dedicato:
» Leggi: Video-guida: come installare Ubuntu da chiavetta USB (Linux facile)
Staking Ethereum, passo 2: Avviare il Terminale
Chi abbia scelto Ubuntu Server accede direttamente alla linea di comando, quindi può proseguire.
Chi invece abbia preferito Ubuntu Desktop deve avviare il Terminale tramite la combinazione da tastiera Ctrl+Alt+T
. In alternativa, cliccare sul pulsante con i 3×3 punti in basso a sinistra e cercare terminale
per lanciare rapidamente l’omonima applicazione
Leggi anche: Come aprire il terminale di Ubuntu
Staking Ethereum, passo 3: Aggiornamento completo
Subito dopo aver aggiornato Ubuntu, è di importanza vitale applicare tutti gli aggiornamenti seguendo queste indicazioni:
Per chi non voglia approfondire ora questo tema, possiamo riassumere la procedura in due passaggi. Installazione del comando (solo la prima volta):
sudo apt install curl -y && curl -s https://raw.githubusercontent.com/TurboLabIt/zzupdate/master/setup.sh | sudo sh
Applicazione di tutti gli aggiornamenti:
sudo zzupdate
Staking Ethereum, passo 4: Accesso SSH (opzionale)
Se abbiamo la possibilità di interagire con il PC dedicato allo staking tramite il mouse, la tastiera e lo schermo fisicamente collegati allo stesso, le cose sono più semplici e possiamo procedere al passo successivo. Per inciso: questa è la modalità più sicura, che raccomando vivamente a tutti coloro che facciano staking con 32 ETH “reali”.
In caso contrario, dovremo accedervi tramite VNC (solo Ubuntu Desktop) o, ancora meglio, SSH. Dobbiamo dunque configurare e usare SSH, come mostrato in quest’altro articolo:
» Leggi: Come usare SSH nel modo più facile possibile: video-guida per Windows 10 e Linux
Considerata l’importanza di mantenere il sistema sicuro, è imperativo disattivare l’accesso SSH via password ed entrare solo tramite chiave. Ho mostrato come svolgere questa importante configurazione qui:
Raccomando a chiunque acceda al PC di staking via SSH di non sottovalutare l’importanza di questa accortezza e svolgere la modifica immediatamente.
Staking Ethereum, passo 5: Diventare root
Le operazioni descritte di seguito richiedono i privilegi di amministratore. Per non impazzire, acquisiamoli immediatamente impartendo il comando sudo -s
In caso venisse richiesta la password, digitiamo quella dell’utente corrente.
Ricordiamo di svolgere questa operazione per prima cosa dopo ogni riavvio, chiaramente SOLO inizialmente, mentre stiamo configurando tutto quanto.
Staking Ethereum, passo 6: Installare il nodo Ethereum (Go Ethereum)
Siamo ora pronti ad entrare nel vivo della trattazione. Il primo componente richiesto è il software Go Ethereum, l’implementazione ufficiale in linguaggio Go del protocollo Ethereum. In questo modo, il PC diverrà un nodo della rete Ethereum e potrà comunicare con gli altri.
Iniziamo aggiungendo la fonte ufficiale dell’installazione (presa da qui):
add-apt-repository -y ppa:ethereum/ethereum
Ora installiamo il software vero e proprio:
apt update && apt install geth -y
Staking Ethereum, passo 7: Creare l’utente per Go Ethereum
Creiamo ora una nuova utenza con privilegi minimi: sarà quella che eseguirà materialmente l’applicazione. Allo scopo, impartiamo i tre comandi seguenti per creare l’utente di nome goeth
, la cartella /var/lib/goethereum
e concedergli pieno accesso alla stessa:
useradd --no-create-home --shell /bin/false goeth
mkdir -p /var/lib/goethereum
chown -R goeth:goeth /var/lib/goethereum
Staking Ethereum, passo 8: Eseguire Go Ethereum come servizio
Per eseguire Go Ethereum come servizio dobbiamo creare un file di configurazione. Il modo più facile per raggiungere l’obbiettivo è di scaricare quello già pronto tramite il comando curl. Installiamolo perché non è presente nella dotazione base:
apt update && apt install curl -y
Ora procediamo ad ottenere il file di configurazione del servizio vero e proprio, differente a seconda che si stia lavorando in testnet oppure su mainnet.
Per la testnet:
curl -o /etc/systemd/system/geth.service https://turbolab.it/scarica/344
cat /etc/systemd/system/geth.service
Per la mainnet:
curl -o /etc/systemd/system/geth.service https://turbolab.it/scarica/348
cat /etc/systemd/system/geth.service
nota tecnica: la configurazione qui proposta utilizza un WebSocket (argomento --ws
) al posto del classico HTTP. Questa è la modalità consigliatami da uno sviluppatore di Nimbus e raccomandata nella documentazione ufficiale.
Staking Ethereum, passo 9: Eseguire automaticamente Go Ethereum all’avvio
Ora che abbiamo preparato il servizio, facciamo in modo che parta automaticamente all’avvio del computer:
systemctl enable geth
Per sincerarcene, riavviamo il sistema:
reboot
Terminato il riavvio, assicuriamoci di ri-acquisire i privilegi di root (sudo -s
), quindi visualizziamo lo stato del servizio:
service geth status
La schermata dovrebbe mostrare il messaggio active (running)
Battere Q
sulla tastiera per uscire.
Nel frattempo, la ventola del PC sarà partita con irruenza: digitiamo top
e scopriamo che il colpevole è proprio il servizio geth
appena creato, che utilizza la CPU al 100%
È 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. Per seguire l’avanzamento di questa fase, battiamo Q
sulla tastiera per uscire da top e impartiamo quanto segue:
journalctl -f -u geth.service
Le singole righe riportano un messaggio simile a questo:
Nov 01 17:45:53 eth geth[603]: INFO [11-01|17:45:53.493] Imported new block headers count=2048 elapsed=1.366s number=1419455 hash="0af687…9fe
Fino a quando appaiono nuove righe, va tutto bene: l’operazione sta continuando.
Premere Ctrl+C
sulla tastiera per uscire e possiamo continuare con il resto della configurazione.
Non preoccupiamoci di attendere che Go Ethereum abbia finito: la documentazione ufficiale di Nimbus chiarisce che It is safe to run Nimbus and start validating even if Geth hasn't fully synced yet
, ovvero è sicuro procedere anche se la sincronizzazione non è ancora terminata.
Staking Ethereum, passo 10: Ottenere ETH da Görli (solo testnet)
Se stai “facendo sul serio” e già possiedi i 32 ETH “veri” che servono per lo staking, puoi passare oltre.
Se invece stai “giocando” con la testnet, devi procurarti 32 ETH “fasulli” dalla rete di test Görli. Allo scopo, passa ad un PC dotato di interfaccia grafica (può essere anche il medesimo PC di staking, se hai scelto Ubuntu Desktop) e installa l’estensione MetaMask per il browser web:
» Ottieni: MetaMask per Chrome/Edge
» Ottieni: MetaMask per Firefox
Completata la configurazione iniziale di MetaMask, clicca sul menu a tendina Reti
(in alto a destra) e seleziona Rete di test Goerli
i
Ora clicca sulla dicitura Account 1
a centro pagina per copiare l’indirizzo del wallet
Accedi ora al canale #request-goerli-eth
su ethstaker tramite questo link (è necessario registrarsi ed eseguire login a Discord). A questo punto è sufficiente inviare un messaggio nel canale simile a questo:
!goerliEth MioIndirizzoEthereum
Chiaramente, dobbiamo sostituire alla parola MioIndirizzoEthereum
il reale indirizzo del wallet, ovvero quello che abbiamo appena copiato
In caso il canale su Discord smettesse di funzionare, segnalo come alternativa il sito Goerli Authenticated Faucet. Questa risorsa richiede di inserire un messaggio pubblico sul proprio profilo Twitter o Facebook per ricevere le monete: una meccanica un po’ bislacca (preparatevi a ricevere molti commenti perplessi da parte degli amici) che, personalmente, preferisco evitare.
Attendiamo alcuni minuti (pochi istanti, nel mio caso) e riceveremo l’accredito su MetaMask
Wow! Ho appena ricevuto quasi 12.000 €!! Anzi no, sono soldi giocattolo, peccato…
Staking Ethereum, passo 11: Installare eth2.0-deposit-cli
Procediamo installando il tool eth2.0-deposit-cli: uno strumento che genera le chiavi crittografiche di identità (una sorta di “account”) che, successivamente, faremo assurgere al ruolo di “validatore”.
Prima di tutto, installiamo i prerequisiti, ovvero Git per ottenere il codice, l’interprete Python 3 e il relativo gestore di pacchetti PIP:
apt install git python3 python3-pip -y
Ora cloniamo il repository del tool vero e proprio:
cd $HOME
git clone https://github.com/ethereum/eth2.0-deposit-cli.git
Entriamo nella cartella e lanciamo l’installazione vera e propria:
cd eth2.0-deposit-cli
./deposit.sh install
Staking Ethereum, passo 12: Creare un account da validatore
Usiamo ora il client appena installato per generare le chiavi. Dobbiamo svolgere passaggi leggermente diversi a seconda che si stia lavorando in testnet oppure su mainnet (questa scelta deve essere la stessa che abbiamo effettuato in precedenza, quando abbiamo attivato il servizio Go Ethereum per lavorare su testnet oppure su mainnet).
Per la testnet:
./deposit.sh new-mnemonic --num_validators 1 --chain pyrmont
Per la mainnet:
./deposit.sh new-mnemonic --num_validators 1 --chain mainnet
Le opzioni indicate sono quelle documentate qui.
Ci viene così chiesto di scegliere la lingua: digitiamo italian
.
Subito dopo:
- digitiamo la password che deve essere utilizzata per proteggere le chiavi crittografiche – è opportuno scegliere qualcosa di complesso, preferibilmente di almeno 18 caratteri, di cui almeno 5 “speciali” (
$, %, &
eccetera) - battere
Invio
- digitare di nuovo la stessa password, per conferma
- battere
Invio
Questa password va custodita con la massima cura (KeePass, Bitwarden): ci servirà in seguito
A questo punto vengono mostrate le parole di seed, ovvero una serie di parole che potremo utilizzare in seguito per recuperare le nostre monete nel malaugurato caso in cui non riuscissimo più ad accedere al PC (a causa della rottura del disco, ad esempio). Questa frase va trascritta, preferibilmente su un pezzo di carta, e conservata al sicuro. Per essere assolutamente chiari: chiunque riesca ad entrare in possesso di questa serie di parole potrà rubare tutte le vostre monete!
Premere un tasto per continuare.
Saremo così chiamati a ri-digitare le parole appena mostrate, come conferma che le abbiamo annotate correttamente. Alla fine, premiamo Invio
La procedura terminerà in automatico generando le chiavi crittografiche
Sì noti la dicitura Your keys can be found at:
: indica il percorso nel quale sono state salvate le chiavi crittografiche (nello screenshot qui sopra, è /root/eth2.0-deposit-cli/validator_keys
):
- facciamo immediatamente un backup di questa cartella, in modo da poterla ripristinare facilmente in caso di problemi
- teniamo a portata di mano questo percorso perché ci servirà fra poco
Staking Ethereum, passo 13: Installare Nimbus
Installiamo ora Nimbus, un client “leggero” per la rete Ethereum 2.0. Poiché Nimbus deve essere compilato dai sorgenti, ci servono Git per ottenere il codice e il pacchetto Build Essentials di Ubuntu per trasformarlo in codice macchina. Installiamo tutto quanto:
apt install build-essential git libpcre3-dev -y
Ora cloniamo il repository Git del progetto per ottenere il codice sorgente:
cd $HOME
git clone https://github.com/status-im/nimbus-eth2.git
Entriamo nella cartella e lanciamo la compilazione:
cd nimbus-eth2
make beacon_node
L’operazione richiede parecchio tempo. In particolare, il messaggio Building: Nim compiler
e, dopo di lui, molti altri componenti con il prefisso Building:
rimarranno fermi sullo schermo per parecchi minuti: è normale, bisogna solo pazientare.
Al termine, spostiamo l’eseguibile generato nella cartella dedicata, di modo che sia poi possibile invocare semplicemente il comando nimbus
per usarlo:
mv /$HOME/nimbus-eth2/build/beacon_node /usr/local/bin/nimbus
Infine, non dimentichiamo di eliminare la cartella dei sorgenti: questo manterrà pulito l’ambiente di lavoro ed eviterà confusione in fase di aggiornamento. Allo scopo impartire:
cd $HOME
rm -rf $HOME/nimbus-eth2
Staking Ethereum, passo 14: Creare l’utente per Nimbus
Procediamo creando un utente dedicato all’esecuzione di Nimbus e la relativa cartella per contenere i dati:
useradd --no-create-home --shell /bin/false nimbus
mkdir -p /var/lib/nimbus
chown -R nimbus:nimbus /var/lib/nimbus
Detta cartella deve avere un predeterminato set di permessi, altrimenti i comandi successivi falliranno. Assegniamoli ora:
chmod u=rwx,g=rx,o= /var/lib/nimbus -R
Staking Ethereum, passo 15: Importare il wallet da validatore in Nimbus
Procediamo importando all’interno di Nimbus la chiave creata poco fa dal comando eth2.0-deposit-cli. Il comando da impartire è il seguente:
nimbus deposits import --data-dir=/var/lib/nimbus /root/eth2.0-deposit-cli/validator_keys
Dovete però avere l’accortezza di sostituire a /root/eth2.0-deposit-cli/validator_keys
il percorso nel quale si trova la vostra chiave, cioè quello che vi eravate segnati in precedenza. Ricordate? Era quello vicino alla dicitura Your keys can be found at:
che raccomandavo di backuppare e segnarsi perché sarebbe servito fra poco.
Ci verrà richiesto di inserire la password: dobbiamo digitare quella scelta quando abbiamo lanciato eth2.0-deposit-cli poco sopra. Attenzione: si tratta della password, non delle parole di seed!
Terminata l’operazione, facciamo in modo che tutti i file appena generati diventino proprietà dell’utente Nimbus:
chown nimbus:nimbus /var/lib/nimbus -R
Staking Ethereum, passo 16: Eseguire Nimbus come servizio
Ora che abbiamo importato le chiavi in Nimbus, possiamo prepararci ad eseguirlo come servizio. Il modo più facile per raggiungere l’obbiettivo è di scaricare il file di servizio per Nimbus già pronto tramite il comando curl. Dovremmo aver già installato curl ad uno dei Passi precedenti, ma assicuriamocene lanciando nuovamente il comando
apt update && apt install curl -y
Ora procediamo ad ottenere il file di configurazione del servizio vero e proprio, differente a seconda che si stia lavorando in testnet oppure su mainnet – questa scelta deve essere la stessa che abbiamo effettuato in precedenza, quando abbiamo attivato il servizio Go Ethereum per lavorare su testnet oppure su mainnet.
Per la testnet:
curl -o /etc/systemd/system/nimbus.service https://turbolab.it/scarica/347
cat /etc/systemd/system/nimbus.service
Per la mainnet:
curl -o /etc/systemd/system/nimbus.service https://turbolab.it/scarica/349
cat /etc/systemd/system/nimbus.service
Staking Ethereum, passo 17: Eseguire automaticamente Nimbus all’avvio
Ora che abbiamo preparato il servizio, facciamo in modo che parta automaticamente all’avvio del computer:
systemctl enable nimbus
Per sincerarcene, riavviamo il sistema:
reboot
Terminato il riavvio, assicuriamoci di ri-acquisire i privilegi di root (sudo -s
) quindi visualizziamo lo stato:
service nimbus status
La schermata dovrebbe mostrare il messaggio active (running)
Battere Q
sulla tastiera per uscire.
Anche in questo caso, la ventola del PC potrebbe essere già partita con irruenza: digitiamo top
e scopriamo che il colpevole è proprio il servizio nimbus
appena creato, che utilizza la CPU al 100%
È una situazione assolutamente normale mentre il programma si sincronizza con la rete. Per seguire l’avanzamento di questa fase, battiamo Q
sulla tastiera per uscire da top e impartiamo quanto segue:
journalctl -f -u nimbus.service
Le singole righe riportano un messaggio simile a questo:
Nov 02 09:12:53 eth bash[26396]: INF 2020-11-02 09:12:44.387+00:00 Slot start topics="beacnde" tid=26396 file=beacon_node.nim:457 lastSlot=646862 scheduledSlot=646863 beaconTime=12w5d20h12m36s387ms702us683ns peers=27 head=ca2c9197:5937 headEpoch=185 finalized=6b302d69:5856 finalizedEpoch=183
Fino a quando appaiono nuove righe, va tutto bene: l’operazione sta continuando.
Premi Ctrl+C
per uscire.
Staking Ethereum, passo 18: 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 dedicato allo staking via SSH, e non con la consigliata modalità “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 deve essere impartito da chi utilizzi la tastiera, il mouse e lo schermo collegati direttamente.
In ogni caso, invece dobbiamo aprire le porte di Go Ethereum e Nimbus:
ufw allow 30303,9000/tcp && ufw allow 30303,9000/udp && ufw enable
Visualizziamo poi la situazione aggiornata con ufw status
Per maggiori informazioni:
Staking Ethereum, passo 19: Aprire le porte sul router
In questo momento, i nostri servizi non stanno funzionando in modo ottimale: dobbiamo infatti fare in modo che le rispettive porte sulle quali accettano le connessioni siano “aperte” sul router. Più precisamente: dobbiamo svolgere il port forwarding dal router verso il PC di staking. 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
9000 TCP
9000 UDP
Dopo aver svolto la configurazione, verifichiamo esplicitamente che sia andata a buon fine tramite Shields Up!:
» Leggi: Come testare se una porta del router/firewall è aperta? guida al Port scan con Shields Up!
I link diretti sono i seguenti:
Il servizio deve riportare, per entrambe le porte, la dicitura OPEN!
.
Staking Ethereum, passo 20: Copiare il file deposit_data
Dobbiamo ora caricare sul sito di Ethereum il file dal nome simile a deposit_data-*.json
creato poco fa dal programma eth2.0-deposit-cli. Ricordate? Si trova nella cartella delle chiavi, ovvero quella indicataci dal testo Your keys can be found at:
che raccomandavo di backuppare e segnarsi perché sarebbe servita. Nel mio caso, detto file si trova nella cartella /root/eth2.0-deposit-cli/validator_keys
.
Ebbene: deposit_data-*.json
contiene la chiave pubbllica associata al validatore: come tale, non è un’informazione riservata e può essere trasferita anche su canali insicuri. Traduco: se anche qualcuno ce la rubasse, non se ne farebbe niente.
Se il PC dedicato allo staking che stiamo configurando è dotato di un browser web (stiamo usando Ubuntu Desktop, ad esempio) possiamo lavorare direttamente da lì. Limitiamoci a copiare il file nella “Home” del nostro utente non-root, poi lo prenderemo da lì:
cp /root/eth2.0-deposit-cli/validator_keys/deposit_data* /home/$(logname)
Possiamo proseguire al Passo successivo.
Se invece stiamo usando Ubuntu Server, non abbiamo a disposizione un browser web (no, amici esperti: Lynx non è una soluzione pratica!). Dobbiamo dunque copiare questo file su un PC “normale”. Se abbiamo accesso al PC dedicato allo staking tramite mouse, tastiera e schermo fisicamente collegati allo stesso, valutiamo di portare a termine il trasferimento usando una chiavetta USB.
Se invece stiamo operando tramite SSH, usiamo il comando SCP:
- se il PC dal quale operiamo usa Windows: » Leggi: Guida: upload e download via SSH
- se il PC dal quale operiamo usa Linux: » Leggi: Guida SFTP/SCP, con esempi
Lo scopo ultimo, lo ripeto, è riuscire a portare questo file su un PC dotato di browser web.
Staking Ethereum, passo 21: caricare il file deposit_data
Procediamo aprendo il browser web da un PC che abbia la possibilità di accedere al file deposit_data-*.json
appena trattato. Ora colleghiamoci a uno di questi due siti, a seconda che si stia lavorando in testnet oppure su mainnet (questa scelta deve essere la stessa che abbiamo effettuato in precedenza, quando abbiamo attivato il servizio Go Ethereum per lavorare su testnet oppure su mainnet):
- per la testnet: pyrmont.launchpad.ethereum.org
- per la mainnet: launchpad.ethereum.org
Dalla pagina iniziale, cliccare sul pulsante colorato GET STARTED
, quindi leggere le varie informazioni preliminari cliccando i vari tasti ACCEPT
oppure CONTINUE
in fondo ad ogni pagina
Arrivati alla pagina di selezione del client, selezioniamo Geth
(Go Ethereum): non credo che sia rilevante, ma meglio stare sul sicuro..
Avanziamo di nuovo e scegliamo Nimbus
.
Dalla pagina Generate Key Pairs
, immettiamo 1
nel campo dedicato al numero dei validatori, poi scorriamo fino a fondo pagina e avanziamo di nuovo
Finalmente, alla pagina Upload Deposit File
, dobbiamo caricare la nostra chiave privata, ovvero il file dal nome simile a deposit_data-*.json
di cui parlavamo sopra
Terminato l’upload, avanziamo ancora.
Staking Ethereum, passo 22: Trasferire i fondi
Dalla pagina di selezione del wallet, clicchiamo sull’icona che rappresenta il nostro wallet. Per questa guida abbiamo usato MetaMask, quindi clicchiamo sulla volpe. Si aprirà così l’interfaccia dell’estensione
[in caso conservassimo i nostri ETH su un wallet differente, è necessario consultare i link proposti in pagina per capire come procedere]
Autorizziamo la connessione e potremo proseguire.
Arrivati alla pagina di riepilogo, spuntiamo tutte le caselle per confermare che sappiamo quello che stiamo facendo e avanziamo
Dalla pagina di selezione del wallet, clicchiamo sull’icona che rappresenta il nostro wallet. Per questa guida abbiamo usato MetaMask, quindi clicchiamo sulla volpe. Si aprirà così l’interfaccia dell’estensione
[in caso conservassimo i nostri ETH su un wallet differente, è necessario consultare i link proposti in pagina per capire come procedere]
Autorizziamo la connessione e potremo proseguire.
Arrivati alla pagina di riepilogo, spuntiamo tutte le caselle per confermare che sappiamo quello che stiamo facendo e avanziamo
Infine, clicchiamo sul grande pulsante colorato per aprire di nuovo l’interfaccia di MetaMask e confermare definitivamente l’invio delle monete
L’operazione è terminata.
Staking Ethereum, passo 23: Verificare lo stato di approvazione dell’account validatore
L’attivazione del validatore non è istantanea, ma si svolge in due fasi:
- elaborazione del deposito da parte della rete Ethereum 2.0
- effettiva attivazione del validatore – il sistema prevede un limite massimo di 900 nuovi validatori al giorno, approvati tramite una coda “chi prima chiede, prima viene approvato”
Per controllare a che punto siamo, iniziamo aprendo uno di questi due siti:
- per la testnet: pyrmont.beaconcha.in
- per la mainnet: beaconcha.in
A questo punto:
- aprire MetaMask (o il nostro wallet dal quale abbiamo depositato gli ETH)
- copiare di nuovo l’indirizzo del wallet, come fatto in precedenza
- tornare al sito pyrmont.beaconcha.in oppure beaconcha.in (quello aperto un attimo fa)
- cliccare sulla lente d’ingrandimento in alto a destra
- incollare l’indirizzo del wallet
- cliccare sulla voce subito sotto alla sezione
Validators
Si aprirà così un pannello informativo. Per il momento, limitiamoci ad aggiungere questa pagina ai Preferiti del browser web: riporta infatti informazioni utili, che serviranno molto spesso
Staking Ethereum, passo 24: Attendere l’attivazione del validatore
Se sei arrivato fino a qui: COMPLIMENTI! Il validatore è configurato correttamente, anche se non ancora attivato. Per verificare quando questo accade, teniamo d’occhio l’indirizzo pubblico del nostro wallet usando la pagina che abbiamo aggiunto ai Preferiti un attimo fa.
Prestiamo attenzione alla scheda Overview
, sezione Status
. In un primo momento, riporterà la dicitura Deposited
: significa che il deposito è stato ricevuto, ma non è ancora stato elaborato dalla rete Ethereum 2.0
In pagina si legge che questa situazione dovrebbe durare almeno 12 ore. Ma, in una mia prova precedente con la vecchia testnet Medalla, erano stati necessari addirittura 3 giorni di attesa. Insomma: bisogna solo pazientare.
Non appena il deposito verrà processato, inizierà la seconda fase di attivazione e la dicitura Status
cambierà in Pending
. Da qui dobbiamo attendere (ancora!) che il nostro validatore venga materialmente attivato
Questa fase richiede alcuni giorni (!!). La sezione Estimated Activation
presente in pagina ci fornisce una stima del tempo rimanente: in una mia prova precedente con la vecchia testnet Medalla, erano stati necessari altri 12 giorni.
Niente paura: si tratta solo di pazientare perché è tutto automatico. No, non c’è un operatore comunale con un timbro che esamina le richieste ad una ad una: è tutto gestito via software!
Staking Ethereum, passo 25: Monitorare la rendita
Una volta che il validatore è finalmente attivo, non dobbiamo fare altro se non mantenere acceso il PC di staking e assicurandoci che non si spenga a causa di interruzioni dell’energia elettrica o perda il collegamento ad Internet troppo a lungo. Quando questo si verifica, riceviamo infatti una “multa” dalla rete Ethereum 2.0 e perdiamo qualche decimo di Ethereum…. che si recupera rimanendo online.
Per il resto, possiamo usare la solita pagina aggiunta i Preferiti per tenere d’occhio i nostri guadagni e la rendita complessiva dell’operazione.
Il mio validatore su testnet Pyrmont è disponibile qui per confronto e visualizzazione di una configurazione completa e approvata.
Addendum: Mantenere aggiornato il sistema
L’ho già detto ma lo ripeto: mantenere in sicurezza il PC di staking è di importanza critica. Questo implica che dovremo periodicamente installare tutti gli aggiornamenti: una volta al mese come minimo, ma “settimanalmente” sarebbe ancora meglio.
Il comando zzupdate torna sicuramente utile allo scopo, poiché aggiorna il sistema operativo e i pacchetti installati tramite apt, compreso Go Ethereum.
Nimbus, invece, deve essere aggiornato manualmente. È importante farlo: uno degli sviluppatori mi ha esplicitamente invitato a ricordarlo! Allo scopo, basta ripetere i comandi indicati al precedente Passo 13: Installare Nimbus
e riavviare il PC al termine.
Conclusioni, fonti e riferimenti
In questa lunga guida abbiamo visto come fare staking con Ethereum 2.0. La procedura è sicuramente un po’ articolata, ma è una buona occasione per tutti gli smanettoni di provare in prima persona come funziona la validazione Proof of stake su Ethereum e, per i possessori di 32 ETH, di guadagnare interessi molto succulenti sulle proprie monete.
Questo articolo è frutto della mia esperienza diretta con la sola testnet, poiché non possiedo un numero di ETH sufficienti a passare sulla “vera” mainnet. Ogni feedback da chiunque si cimenti è dunque particolarmente benvenuto.
Per preparare la guida ho consultato le seguenti fonti:
- Guide to Staking on Ethereum 2.0 (testnet, mainnet): una buona guida in inglese dalla quale ho attinto alcune informazioni non chiare nella documentazione ufficiale
- How to setup a validator on ETH2 (mainnet): un’altra guida in inglese che ho confrontato con la mia per individuare eventuali errori
- man systemd.service: preparazione dei file di configurazione per avviare i servizi
- On Ethereum 2.0 PoS, how/when are new coins minted?: domanda e risposta ad un aspetto dello staking che non mi era chiaro
- Geth Documentation: documentazione ufficiale di Go Ethereum
- The Nimbus beacon chain book: documentazione ufficiale di Nimbus e guida a Ethereum 2.0
- Best way to get goerli ether?: discussione su Reddit con varie modalità per ottenere ETH di test dalla rete Görli
- Ethereum nodes with insecure RPC settings are actively exploited: discussione sulla sicurezza del nodo Ethereum (attacco RPC, solo configurazioni particolari)
- After 48 hours, my validator request is still “Pending” (Deposited): domanda relativa ai tempi di durata della fase
Deposited
- Resource issue with Nimbus: bug che imponeva di riavviare Nimbus ogni 6 ore (ora risolto)
- Allow Nimbus to work with a dynamic IP address: chiarimento circa la necessità di utilizzare o meno un indirizzo IP statico
- Nimbus su Discord: chiarimento circa la necessità o meno di avere un indirizzo IP pubblico (non è necessario)
- A slightly updated look at hardware for staking: post su Reddit con alcune informazioni relative all’hardware
IL PRESENTE ARTICOLO, A CURA DI TURBOLAB.IT
Resta aggiornato con la Newsletter Settimanale

Independent researcher and consultant, Tech Writer at Blockchain Technology. From Italy