Minare Monero significa entrare in punta di piedi nel mondo del mining senza la necessità di GPU, ASIC o altro hardware specifico dedicato.
Ieri abbiamo parlato di come utilizzare piccole schede ASIC su USB per trasformare il nostro Raspberry PI in un sistema per il mining; abbiamo anche avuto modo di presentare un prodotto per il mining di crittovaluta specifica, particolarmente leggera ma anche poco conosciuta, in un articolo sul Duino-Coin (DUCO). Chiudiamo questa serie di articoli mostrando in che modo aggredire una crittovaluta più nota e diffusa, e quali margini di guadagno (se ne esistono) potremo ottenere.
Perché Monero
La scelta della crittovaluta è caduta su Monero in quanto le sue caratteristiche di complessità intrinseca la rendono attaccabile anche con un sistema CPU-only. Contrariamente a Bitcoin ed Ethereum, infatti, l’algoritmo per il monitoraggio della blockchain di Monero è agile senza compromettere la sicurezza della catena. Anzi, si dice che Monero sia una coin intrinsecamente sicura dal momento che nasconde all’osservatore esterno molti dei dati altrimenti pubblici nel ledger.
Configurare il sistema operativo
Per prima cosa dobbiamo scegliere il sistema operativo da installare sul nostro Raspberry PI. Fortunatamente la Raspberry Foundation ha da poco rilasciato un sistema operativo particolarmente leggero a 64 bit. Non è dotato di una intefaccia grafica, ma tanto, “Real men don’t use GUIs“, quindi ce lo faremo bastare. Utilizzeremo il Raspberry PI Imager, che potremo scaricacre dal sito www.raspberrypi.com. Ovviamente troveremo versioni per Windows, Linux e MacOS. Se ancora non lo abbiamo fatto, scarichiamo il software e lanciamolo. Dal menù scegliamo
1 |
sistema operativo -> Raspberry PI OS (other) -> Raspberry PI OS lite (64 bit) |
Inseriamo una scheda microSD nell’apposito connettore (o riduttore USB) sul computer, ed iniziamo la procedura. Ci verrà chiesto se desideriamo una installazione standard preconfigurata o vogliamo modificare qualche parametro.
Personalmente, quando creo una nuova scheda microSD per Raspberry cerco sempre di configurare in anticipo un nome del nodo e le credenziali per l’accesso SSH, in modo da poter configurare il Raspberry PI via SSH senza dover installare tastiera, mouse e monitor. Se la macchina andrà in rete, configuro in anticipo anche i parametri di connessione e l’eventuale connessione wifi. Ricordiamoci anche che da pochi giorni l’utente standard “pi” non è più riconosciuto ed occorre configurarlo da zero.
Al termine della procedura di creazione e verifica del sistema operativo, la scheda microSD è pronta per l’utilizzo, e verrà inserita nel nostro Raspberry PI.
Occorre tener presente che al primo lancio del S.O. il Raspberry eseguirà la riconfigurazione del filesystem che potrebbe richiedere qualche minuto.
Dopo il reboot ci troveremo collegati alla interfaccia a riga di comando (shell). Prima di lanciare il nostro programma per il mining, però, dovremo completare una serie di altre attività.
Configurare il wallet
L’esecuzione del programma di mining prevede che l’utente possieda un wallet, ovvero un “portacrittomonete”, nel quale inserire gli spiccioli che vengono via via guadagnati dal programma. Esistono diversi tipi di wallet: offline e online, hot e cold. Quel che a noi occorre è l’indirizzo al quale depositare le coin, e questa è una caratteristicacomune a tutti i wallet. Per rendere il tutorial più agevole, presenteremo di seguito le operazioni per crearne uno ex novo.
Rechiamoci all’indirizzo getmonero.org e clicchiamo su downloads. Monero GUI Wallet è il più semplice da usare e configurare, per cui all’inizio scaricheremo proprio questo (sono presenti versioni per WIndows, Linux e MacOS). Procederemo quindi all’installazione (se siamo sotto Windows) o al lancio dell’AppImage (se siamo sotto Linux). Alla prima apertura il programma di configurazione porrà una serie di domande.
Creiamo il wallet in simple mode, lasciando intatte le funzioni standard:
Creiamo un nuovo wallet
Dopo la richiesta di creazione di un nuovo wallet verranno richiesti il nome (di fantasia) del proprio wallet, la posizione all’interno del disco (importante), una serie di parole che dovrete copiare in un posto sicuro, in quanto vi consentiranno di ripristinare il wallet in caso di smarrimento delle credenziali, crash del disco o altre amenità simili, e il wallet restore height, necessario per eseguire la restore del wallet (anch’esso da salvare in un posto sicuro). Attenzione: queste credenziali sono le uniche che ci permetteranno di rientrare in possesso delle nostre crittomonete in caso di danni hardware o software!
Completiamo la configurazione del wallet inserendo e confermando la password per l’accesso, quindi clicchiamo su next sino al termine dell’installazione.
Al lancio del programma, dopo aver inserito la password, il programma si sincronizzerà con la blockchain di Monero alla ricerca delle transazioni relative al nostro wallet, per presentare lo stato attuale delle nostre crittofinanze in esso depositate.
Scegliere il pool per il mining
Ora che abbiamo un wallet in cui depositare le nostre crittomonete, dobbiamo decidere dove andare a cercarle. In linea di massima le ricerche vengono organizzate attraverso mining pools, ovvero gruppi di appsasionati che condividono le proprie risorse per dimostrare di aver eseguito il lavoro necessario per l’estrazione delle monete. Ogni pool gestisce il mining di una o più monete e coordina centinaia di migliaia di volontari: quando la ricerca termina correttamente, il risultato finale viene diviso tra tutti coloro che vi hanno lavorato, in base alla potenza di elaborazione messa in condivisione, meno una piccolissima tassa che rimane agli organizzatori del pool.
Dal punto di vista della configurazione, un pool è semplicemente uno o più URL al quale far puntare il nostro programma: da esso il miner estrarrà le proprie unità di lavoro per verificare i blocchi della catena e guadagnare così la remunerazione.
Il pool che abbiamo scelto per Monero si trova all’indirizzo seguente:
1 |
gulf.moneroocean.stream:10128 |
si accede attraverso una porta dedicata (nel caso specifico la 10128) e solamente fornendo le opportune credenziali da riga di comando
Scaricare e configurare il miner
Bene, ora siamo pronti per scaricare il programma necessario alla ricerca di crittovaluta (il nostro miner). Entriamo sul PI attraverso SSH, ed eseguiamo i classici comandi per l’aggiornamento:
1 2 |
sudo apt update sudo apt upgrade |
in modo di avere sempre l’ultima versione aggiornata di tutte le librerie di sistema. La prima volta ho provato ad utilizzare il programma xmrig, presente al seguente indirizzo:
1 |
https://xmrig.com/download |
ma il sito contiene solo le versioni eseguibili del programma, tra l’altro compilate per processore x86-64 e senza le necessarie librerie. Occorre quindi tirare su le maniche, munirsi di pazienza e compilarci da soli tutto il necessario.
Dopo alcuni tentativi andati male a causa di conflitti con le librerie, ho optato per scaricare i sorgenti che seguono:
1 |
sudo apt install git build-essential cmake libuv1-dev libssl-dev libhwloc-dev -y |
che rappresentano la toolchain necessaria per la compilazione, le librerie per la sicurezza ed il riconoscimento automatico dell’hardware.
E’ arrivato il momento di scaricare il nostro programma:
1 |
git clone https//github.com/xmrig/xmrig.git |
entrare nella directory xmrig, creare una directory nella quale produrremo il nostro eseguibile (la chiameremo build) e creare le variabili d’ambiente con cmake, utilizzando la directory superiore come sorgente. cmake eseguirà in pochi secondi il controllo di tutte le dipendenze di cui abbiamo bisogno, e le scriverà in un file opportuno.
Infine lanceremo il comando make, che leggerà la configurazione rilevata e utilizzerà le variabili come parametri all’interno del makefile per compilare via via tutte le librerie ed il codice necessario per il nostro programma. Possiamo andare a prepararci un caffè, ci vorrà un po’ di tempo…
1 2 3 |
cd xmrig cmake . make |
La compilazione procederà da sola, mostrando sulla sinistra il livello percentuale di avanzamento.
E’ arrivato il momento di lanciare l’applicazione con il comando
1 |
./xmrig -o gulf.moneroocean.stream:10128 -u addressWallet -p Nome_miner |
I parametri indicano lo stream dal quale “minare” (-o), l’indirizzo del nostro wallet (-u) ed il nome dell’utente che esegue il miner (-p), per poterlo riconoscere.
Abbiamo visto il link dello stream nei paragrafi precedenti.
L’indirizzo del wallet possiamo recuperarlo selezionando l’opzione send, e cliccando sul bottone di fianco al campo Address. Si tratta di una lunga stringa di carartteri esadecimali, conviene quindi utilizzare il copia-incolla per riportarla sulla nostra riga di comando.
Il nome_miner è invece una stringa che ci servirà per riconoscere il nostro miner sul Raspberry e poterlo distinguere dai miner che girano su altri computer ma sono collegati al medesimo wallet. Nel nostro esempio, abbiamo una workstation Intel 9800X 16 cores, una vecchia macchina con un Intel Pentium G2030, un portatile Lenovo con processore Celeron N2940 ed il nostro Raspberry PI 2GB, quindi abbiamo scelto il valore PI4_2GB_01 per il parametro -p.
Monitoraggio dell’applicazione
Al lancio dell’applicazione viene presentato un breve banner con le informazoni di compilazione del programma, le caratteristiche del processore, il pool di ricerca, i comandi disponibili. Viene quindi eseguita la prima delle chiamate per recuperare le workunit: ciascuna etichetta colorata rappesenta la sezione del programma in esecuzione (rete, calcolo, algoritmo) e vengono forniti i dati statistici relativi al numero di hash calcolati. Premendo s (results) otteniamo la lista delle 10 posizioni più importanti calcolate dal programma, premendo invece h (hashrate) otteniamo una statistica di funzionamento delle CPU sull’algoritmo.
Ma come facciamo a sapere quanti coin Monero abbiamo guadagnato?
Per saperlo occorre collegarsi con moneroocean.stream, inserire nel campo apposito l’indirizzo del nostro wallet, e attendere qualche tempo per dar modo all’applicazione di sincronizzarsi sulla blockchain.
In alto a destra vediamo la quantità totale di crittovaluta estratta e disponibile per il transito sul nostro wallet, e la quantità effettivamente transitata sul wallet. Nell’esempio non è stato ancora effettuato alcun ritiro, le nostre cripto sono sulla chain in attesa di trasferimento. Questo perché trasferire una crittovaluta dal pool al wallet richiede il pagamento di una piccola tassa (fee) pari a 0,0004 XMR (circa 8,8 centesimi di euro al momento della stesura dell’articolo). Per tale ragione il sistema consente di trasferire su wallet solamente quantitativi superiori a 0,003 XMR (66 centesimi di euro): in tal caso, la tassa grava per un 13,33% sul guadagno totale. E’ evidente che al crescere del “capitale” da trasferire su wallet, l’incidenza della tassa fissa diminuisce
Incidenza fee monero
Montante | Corrispettivo | Incidenza fee | fee applicata | Controvalore |
---|---|---|---|---|
0,003 XMR | 0.659533 euro | 13,33% | 0,0004 XMR | 0.088288 euro |
0,01 XMR | 2.1984 euro | 3,99% | 0,0004 XMR | 0.088288 euro |
0,05 XMR | 10.99 euro | 0,79% | 0,0004 XMR | 0.088288 euro |
0,1 XMR | 21.98 euro | 0,39% | 0,0004 XMR | 0.088288 euro |
0,51 XMR | 112,03 euro | 0,07% | 0,0003 XMR | 0.066216 euro |
1,0 XMR | 219,84 euro | 0,03% | 0,0003 XMR | 0.066216 euro |
2,0 XMR | 440,28 euro | 0,01% | 0,0002 XMR | 0.044144 euro |
3,0 XMR | 660,42 euro | 0,00% | 0,001 XMR | 0.022072 euro |
4,0 XMR | 880,56 euro | 0,00% | 0,000 XMR | 0,00000 euro |
In genere si aspetta di disporre di un montante pari ad almeno 5 euro prima di eseguire il passaggio dal pool al proprio wallet, per minimizzare l’incidenza della tassa di trasferimento.
Notare che al crescere del capitale da versare, diminuisce anche la fee, che si azzera per capitali superiori a 4 XMR. Purtroppo vedremo che per ottenere tali cifre non sarà sufficiente minare Monero con un Raspberry… o con un PC in generale.
Valutazioni sull’efficienza computazionale ed energetica
Ora che il nostro miner per Monero è up and running, possiamo sederci, e sorseggiando una tazza di tè o di caffè cercare di capire “quanto guadagneremo” da questo lavoraccio.
Possiamo dire innanzi tutto che la soddisfazione di vedere il piccolo PI che lavora come “uno grande” su problemi intrinsecamente complessi anziché restare relegato a gestire serre o domotica, è una soddisfazione non da poco. C’è inoltre da tener presente che il nostro amico consuma circa 7W a pieno carico, circa 40-50 volte meno dei normali PC con scheda grafica annessa. Inoltre, qualora dotato di opportuno sistema di raffreddamento attivo, è possibile portarlo a lavorare a 1.8 GHz senza alcun problema.
Infine ocorre ricordare che l’algoritmo RandomX utilizzato per minare i Monero coins predilige l’accesso ad ampie pagine di memoria: il Raspberry PI 4 dotato di 4 GB o più è in grado di offrire prestazioni doppie rispetto al fratello minore.
Monero mining comparativa modelli
Model | W | Hash/s | euro/mese |
---|---|---|---|
Intel core i5 9800X 8 cores | 200 | 4500 | 4,37 |
Intel core i3 3200 4 cores | 150 | 1200 | 1,16 |
Intel G2030 4 cores | 110 | 390 | 0,38 |
Intel Celeron 2 cores | 60 | 150 | 0,14 |
Intel Atom N2940 2 cores | 45 | 60 | 0,06 |
Raspberry PI 2 GB 4 cores | 7 | 50 | 0,05 |
Raspberry PI 4 GB 4 cores | 7 | 100 | 0,10 |
Cluster 5 Raspberry PI 20 cores | 40 | 500 | 0,48 |
Dalla tabella possiamo dedurre che anche a livello funzionale il PI non sfigura troppo: anche se a livello di hashrate non è un fulmine di guerra, il minuscolo fattore di forma e l’elevata efficienza energetica lo rendono competitivo: consideriamo infatti una ulteriore, ipotetica colonna che mostri il costo mensile di ciascun componente in base al costo della corrente elettrica, sottraendo tale consumo dal guadagno netto dei miner:
Rapporto mensile guadagno/consumi
Model | Consumo (W) | Costo energia | Spesa energetica | Guadagno mining (euro) | Differenza | Costo (euro spesi per 1 euro guadagnato) |
---|---|---|---|---|---|---|
Intel core i5 9800X 8 cores | 200 | 0,25592 €/kWh | 36,25 euro | 4,37 euro | -31,88 euro | 8,30 |
Intel core i3 3200 4 cores | 150 | 0,25592 €/kWh | 27,64 euro | 1,16 euro | -26.48 euro | 23,83 |
Intel G2030 4 cores | 110 | 0,25592 €/kWh | 20,27 euro | 0,38 euro | -19,89 euro | 53,34 |
Intel Celeron 2 cores | 60 | 0,25592 €/kWh | 11,06 euro | 0,14 euro | -10,92 euro | 79,00 |
Intel Atom N2940 2 cores | 45 | 0,25592 €/kWh | 8,29 euro | 0,06 euro | -8.23 euro | 138,17 |
Raspberry PI 2 GB 4 cores | 7 | 0,25592 €/kWh | 1,29 euro | 0,05 euro | -1.24 euro | 25,80 |
Raspberry PI 4 GB 4 cores | 7 | 0,25592 €/kWh | 1,29 euro | 0,10 euro | -1.19 euro | 12,40 |
Cluster 5 Raspberry PI 20 cores | 40 | 0,25592 €/kWh | 7,37 euro | 0,48 euro | -6.89 euro | 15,35 |
A conti fatti, il Raspberry PI è il sistema di mining che comporta un rapporto di perdita inferiore a quasi tutti gli altri… ma attenzione: valutando quanti euro ci costerebbe un euro di guadagno con il mining (ultima colonna a destra), nessun sistema basato su CPU o GPU consentirebbe un guadagno netto – a meno di avere comunque un PC o un PI acceso e funzionante per altri scopi. In altri termini, minare Monero con il costo dell’elettricità a questi livelli è una operazione in netta perdita, a prescindere dalla CPU utilizzata.
In casi molto particolari (cluster di Raspberry PI alimentati attraverso un sistema fotovoltaico proprietario, ad esempio) potrebbe esserci un break-even positivo dovuto al fatto che l’energia elettrica viene autoprodotta e non acquistata, ma anche in questo caso occorre disporre di un sistema fotovoltaico già ammortizzato e pronto all’uso.
Peccato…
Considerazioni finali
Quei 4 o 5 lettori giunti al termine di questo corposo articolo hanno comunque appreso come funzioni a livello concettuale un algoritmo di mining, cos’è un pool, cos’è il miner, cos’è e come si configura un wallet, come si configura e si compila un programma ottimizzanolo con le proprie risorse disponibili: si tratta di informazioni che rimangono utili ed attuali in qualsiasi situazione, a prescindere dall’operazione di mining vera e propria, ed aiuteranno i più interessati ad avvicinarsi ai concetti legati alle crittovalute (e alla compilazione di programmi per il PI) senza dover perdere troppe settimane alla ricerca delle informazioni nascoste.
E anche per oggi abbiamo terminato. Se avete dubbi o domande al riguardo, non esitate a contattarci: risponderemo presto, risponderemo a tutti!.
Join our groups on Telegram…
Ciao Luigi, se si riavvia il rasp oppure mi disconnetto dal terminale lui continua a lavorare?
inoltre se rientro con il terminale come faccio a vedere se continua?
grazie
Ciao, Giuseppe, ti ho risposto su YouTube.
In breve, è possibile staccare il processo dal terminale, ed eseguirlo magari in background, per poi riprenderlo alla nuova sessione.