Tech by VICE

Una guida a prova di idioti per costruire un PC-miniera di Ethereum

Hash hash hash un sacco di hash.

di Daniel Oberhaus
13 giugno 2017, 1:03pm

A marzo, la criptovaluta Ether ha sfiorato il picco di valore mai raggiunto in precedenza di 25 dollari. È stata una notizia più che ottima per chi ha investito in Ethereum — la piattaforma computazionale distribuita basata su blockchain che usa l'Ether come valuta — e che avevano visto il valore della criptovaluta stagnare sotto i 10 dollari dal suo lancio avvenuto nel luglio 2015. Questo evento, però, ha avuto un altro effetto importantissimo sull'evoluzione del network: per la prima volta, infatti, investire per estrarre Ether è diventato davvero remunerativo.

Erano alcuni mesi che mi sollazzavo con l'idea di costruire un setup per l'estrazione di Ethereum e il picco di valore consumatosi a maggio mi è sembrato un buon momento per cominciare finalmente a lavorarci su. Quindi, ho venduto un po' dell'Ether che avevo da parte per comprare dell'hardware, mi sono messo a studiare l'arte di costruire un PC e tutto il conoscibile su Linux.

Ma prima di lanciarci nella disperata impresa di costruire un setup per l'estrazione di Ethereum da totale n00b, rinfreschiamoci un po' le basi sul tema.

'Mining' è il termine usato per descrivere il processo di estrazione dei token della criptovaluta da una rete blockchain. Nel caso di Ethereum, significa avere dei computer che fanno girare continuamente un algoritmo di hashing, che prende una grossa quantità di informazione e la condensa in una stringa di lettere e numeri di lunghezza prefissata. L'algoritmo di hashing utilizzato da Ethereum — chiamato ethash — effettua l'hashing dei metadati dai blocchi più recenti sfruttando una cosa chiamata nonce: un numero binario che produce un valore hash unico. Per ogni nuovo blocco della blockchain, la rete imposterà un valore di hashing obiettivo e tutti gli estrattori del network proveranno a indovinare il nonce che va a generare quel valore.

A causa del funzionamento dei processi di hashing crittografico, provare a indovinare un nonce che poi genererà un determinato valore è praticamente impossibile. Ciò significa che l'unico modo per trovare il nonce corretto è ciclando tutte le soluzioni possibili finché non si trova quella giusta . Questo procedimento è chiamato "proof-of-work," e significa che, per arrivare a trovare quel valore, il computer che ha trovato il nonce corretto deve aver effettivamente svolto un grosso lavoro — ad esempio, aver sfruttato della potenza computazionale per far girare l'algoritmo di hashing. Il miner che trova il nonce corretto viene ricompensato con un block e riceve 5 ether. Dopodiché, il processo ricomincia nuovamente in un ciclo che ricorre ogni 12 secondi.

Sei GPU RX 470 installate nel mio setup di estrazione di Ethereum. Sì, quelle sono fascette. Immagine: Daniel Oberhaus/Motherboard

Ok, quindi questo questo è il quadro generale, ma che cosa comporta tutto questo dal lato del mining? Tanto per cominciare, un rig ha bisogno di una potenza di elaborazione consistente. Questo è ottenuta più facilmente grazie alle GPU (Graphics Processing Units,) utilizzate generalmente per la grafica 3D dei videogame. Sebbene sia possibile eseguire operazioni di mining con le unità di elaborazione centrali CPU, che normalmente connettono le componenti hardware e software nei computer classici, le GPU sono ottimizzate per eseguire operazioni simili ripetendole di continuo — il che le rende perfette per eseguire l'hashing sulla blockhain di Ehtereum.

Ed è qui che cominciano i problemi. Ora che la spesa per la corrente elettrica necessaria per produrre Ethereum è molto inferiore al valore dell'Eter stessi, c'è stato un boom del numero di miner sulla blockchain di Ethereum. Prima che si diffondessero le criptovalute, le GPU erano di sola competenza degli appassionati di videogame per PC, ma ora che possono essere utilizzate anche per il mining, assistiamo a una scarsità di GPU sul mercato. A meno che non cerchiate hardware usato, nei prossimi tempi, comprare una GPU online non sarà così semplice.

Sono stato così fortunato da assicurarmi sei GPU RX 470 proprio mentre il prezzo degli Ether cominciava a salire. In quel momento, le GPU erano incredibilmente difficili da trovare online: soprattutto quelle che garantiscono certe prestazioni. Ma era comunque meglio di niente — tanto per farvi capire, nelle ore che ho speso online per ordinare le mie GPU, il sito aveva venduto il resto del suo stock.

Se siete riusciti in qualche modo a mettere le mani su delle schede grafiche, il prossimo passo è trovare una scheda madre e un'unità di alimentazione che possa gestire contemporaneamente tutte le GPU in esecuzione. Per questo compito, ho preso una scheda madre MSI Z170a e un alimentatore Corsair da 1200 watt. Ogni GPU sfrutta intorno ai 100-250 watt di potenza. Il mining, in media, si aggira sui 120 watt a pezzo, quindi, l'impianto in totale prende circa 800 watt. Le unità di alimentazione funzionano in modo ottimale a circa tre quarti della loro capacità di carico totale, quindi, un alimentatore da 1200 watt era il più adatto alle mie esigenze.

C'è bisogno anche di alcuni estensori poiché sei GPU non riescono ad entrare direttamente negli slot per le PCI su qualsiasi scheda madre. Questo consente anche di sospendere le GPU sopra la scheda madre per dissipare maggiormente il calore e consentire all'aria di scorrere attraverso il dispositivo.

Ho usato un processore Intel dual core da 2,8GHz e una memoria TForce da 4GB rispettivamente per la CPU e RAM. Non è nulla di speciale, ma così il mining dell'Ethereum non richiede che il vostro computer esegua molte operazioni multitasking in modo che le CPU e le RAM svolgano loro questo compito.

La configurazione della scheda madre. Sulla sinistra, l'alimentatore da 1200 W. Ognuno di questi cavi USB blu è connesso ad un estensore alimentato che collega le GPU di sopra alla scheda madre. Immagine: Daniel Oberhaus/Motherboard

La configurazione della scheda madre. Sulla sinistra, l'alimentatore da 1200 W. Ognuno di questi cavi USB blu è connesso ad un estensore alimentato che collega le GPU di sopra alla scheda madre. Immagine: Daniel Oberhaus/Motherboard

L'elemento finale dal punto di vista hardware è il case. Dato che il case standard dei PC non può ospitare sei schede grafiche, ne serve uno personalizzato. Molte aziende vendono online dei case per il mining realizzati ad hoc, ma costano anche più di 150 dollari e mi sembravano abbastanza semplici da ricreare. Così, mi sono costruito il mio case con delle componenti di alluminio che ho fatto tagliare dal mio ferramenta di fiducia, delle tavole di legno per ospitare la scheda madre, qualche decina di viti autofilettanti e un trapano.

Tutto sommato, il lavoro mi ha impiegato circa un'ora per un costo di poco inferiore ai 50 dollari. I quali, sommati al prezzo totale dell'hardware, hanno portato la mia spesa totale a superare di poco i 2.000 dollari.

Il computer era pronto, oltre ad essere bello *, quindi era giunta l'ora di occuparci del software.

( * Di solito, si dice che la bellezza è negli occhi di chi guarda. L'autore di Motherboard Jason Koebler ha descritto la mia macchina come "per nulla sicura," Emanuel Maiberg, invece, l'ha definita "oscena." Entrambi sono palesemente privi di qualsiasi senso estetico.)

Nessuno ha promesso che sarebbe stato anche bello. Immagine: Daniel Oberhaus/Motherboard

In questo caso, le opzioni sono relativamente limitate: è possibile eseguire il mining su Windows, Linux o ethOS. Windows ha il vantaggio di un migliore supporto del driver per le schede grafiche e EthOS è una buona soluzione plug and play per chi non conosce Linux e non ha intenzione di impararlo.

Ma parte del motivo per cui mi sono voluto costruire un impianto di mining di Ethereum era proprio la scusa di imparare Linux, quindi, ho deciso di impostare il mio software seguendo la strada più difficile. Per prima cosa, ho dovuto scaricare e installare sulla mia scheda madre Xubuntu, una versione leggera del popolare Ubuntu Linux. Ciò ha comportato la scrittura di un file immagine Linux su una chiavetta USB da 32 GB da connettere alla scheda madre. Fin qui, nulla di complicato.

Dopodiché, ho dovuto scaricare i driver grafici per le mie GPU AMD in modo che comunicassero con la scheda madre e eseguissero le elaborazioni in parallelo. Questi driver sono disponibili gratuitamente sul sito di AMD e la loro installazione è abbastanza semplice attraverso una serie di comandi sul terminale di Ubuntu. Infine, è giunto il momento di scaricare Geth, il programma utilizzato per implementare i comandi sul mio nodo Ethereum. Dopo aver scaricato la blockchain e aver puntato il mio apparecchio a un portafoglio che avevo già installato su Mist, ho potuto iniziare con il mining.

Ecco come appare il terminale del mining su ethOS:

Di base, le mie 6 GPU hanno un potenza totale di hashing di circa 120 MH/sec— ovvero, 120 milioni di operazioni di hashing al secondo. Modificando le impostazioni delle mie GPU, spero di aumentarla tra i 125 e i 130 MH/sec. Potrebbe sembrare molto ma, nel momento in cui sto scrivendo questo articolo, la rete totale di Ethereum ha un hashrate di circa 39,1 TH/sec. Ovvero, 39 trilioni di operazioni di hashing al secondo, il che rende il mio apparecchio una semplice goccia in questo oceano di potenza di calcolo.

Dato che Ether ricompensa sulla base dell'individuazione del nonce corretto, le probabilità che questo accada aumentano le operazioni di hashing da eseguire su ogni blocco. Se dovessi cercare di farlo da solo utilizzando il mio equipaggiamento, potrebbero volerci mesi prima di vincere un singolo blocco.

La maggior parte degli altri miner sono nella mia stessa situazione non avendo accesso alla potenza di grandi aziende di mining come Genesis. Quindi, per aumentare le loro probabilità, i piccoli miner si riuniscono in dei mining pool che combinano il potere di calcolo di ogni singolo miner per l'hash dei block. Grazie al loro potere di calcolo combinato, i mining pool riescono a risolvere un blocco in pochi minuti e la ricompensa viene distribuita ai vari miner del pool in proporzione al lavoro svolto per risolverlo. Ciò significa che si può ottenere solo pochi millesimi di Ether ogni giorno, ma sommandoli si ottiene un guadagno decente — soprattutto se il prezzo degli Ether continua a crescere.

Per aderire ai vari pool ci sono requisiti e tariffe differenti a seconda dei casi. Anche se io sto solo contribuendo con una potenza di calcolo di 120 MH/sec al pool a cui mi sono unito, questo mi frutterà circa 35 Ether all'anno per il mio impianto. Al momento, in base alla difficoltà del mining e al prezzo dell'Ether, dovrebbe significare circa 8.000 dollari all'anno esclusi i costi dell'energia elettrica.

Così eccoci qui — un totale inesperto di Linux senza precedenti esperienze nella costruzione di PC ha realizzato uno strumento per il mining di Ethereum funzionante con difficoltà minime (a parte alcune componenti hardware difettose.) Quindi forse costruirsi un PC da soli non è poi così difficile.