Publicité
Motherboard

Miner sur Ethereum, un guide à l'intention des noobs

Hachons ensemble.

par Daniel Oberhaus
14 Juin 2017, 7:00am

Au mois de mars dernier, le prix d'une unité de la crypto-monnaie Ether a atteint le plus haut niveau de son histoire : 25$. Une bonne nouvelle pour les individus qui avaient investi dans Ethereum, la plateforme de calcul distribué qui repose sur la blockchain et utilise l'Ether comme devise.

Depuis le lancement d'Ethereum en juillet 2015, la valeur de sa monnaie virtuelle stagnait aux alentours de 10$ l'unité. Sa prise de valeur signifie beaucoup pour le réseau qu'elle permet de soutenir : pour la première fois, miner des Ether présente un intérêt financier.

Je caressais l'idée de construire un mineur Ethereum depuis plusieurs mois quand l'Ether a de nouveau bondi en mai dernier. Il était temps de se lancer : j'ai vendu une partie de mes réserves de monnaie virtuelle pour acheter du matériel informatique et me suis mis à potasser l'art de la construction de PC. J'ai également commencé à fréquenter Linux.

Mais avant de vous faire parcourir le long et difficile chemin du noob qui décide de fabriquer un mineur d'Ether, je vais vous expliquer les bases de l'Ethereum.

On utilise le terme "miner" pour désigner le procédé qui permet d'extraire des unités de crypto-monnaie d'un réseau basé sur la blockchain, ou chaîne de blocs. Dans le cas d'Ethereum, cela implique de faire tourner des ordinateurs qui traitent un algorithme de hachage, dont la mission consiste à concentrer de grandes quantités d'information dans une suite de chiffres et de lettres d'une longueur prédéterminée : la valeur de hachage.

L'algorithme de hachage sur lequel repose Ethereum, ethash, hache des métadonnées issues du bloc le plus récent à l'aide de ce qu'on appelle un "nonce", un nombre binaire qui produit une valeur de hachage unique. A chaque fois qu'un nouveau bloc est ajouté à la chaîne, le réseau lui attribue un valeur de hachage "cible" ; la mission des mineurs est de découvrir quel nonce va permettre d'obtenir cette valeur de hachage.

Le hachage cryptographique fonctionne de telle manière qu'il est presque impossible de deviner le nonce qui va engendrer la valeur cible. Pour trouver le nonce que l'on veut, la seule méthode fiable est de tester chaque possibilité, l'une après l'autre, jusqu'à découvrir la bonne. On appelle cela la "proof-of-work", la preuve de travail : cela signifie que l'ordinateur qui a découvert le bon nonce doit avoir travaillé (c'est-à-dire utilisé de la puissance de calcul pour faire tourner l'algorithme de hachage) pour en arriver là. L'heureux propriétaire de la machine en question se voit récompensé de 5 ether, puis l'histoire recommence. Un cycle complet dure environ 12 secondes.

Six GPUs RX 470 installés dans mon boîtier DIY. Oui, ce sont des serre-câbles. Image : Daniel Oberhaus/Motherboard

Voilà, vous avez les bases. Seulement, vous ignorez toujours comment on mine pour de bon. Avant toute chose, sachez qu'un mineur a besoin d'une puissance de calcul considérable. Les Graphics Processing Units (GPUs), les processeurs communément utilisés pour afficher les graphismes des jeux vidéo en 3D, sont les plus à même de leur fournir cette puissance. Même s'il est possible de miner à l'aide d'une unité centrale de traitement (ce qu'on appelle communément processeur dans les PC et qui sert d'intermédiaire entre hardware et software), les GPUs sont optimisés pour effectuer des opérations similaires à un rythme soutenu. Parfait pour hacher à toute vitesse sur la blockchain d'Ethereum.

Les problèmes peuvent commencer. Maintenant que le prix de l'électricité nécessaire au minage sur Ethereum est très inférieur à la valeur des Ether minés, le nombre de mineurs qui travaillent sur la blockchain d'Ethereum explose. De plus, avant l'arrivée des crypto-monnaies, les GPUs n'intéressaient que les joueurs PC. Depuis qu'ils peuvent être utilisés pour miner, le marché est pris d'assaut : les GPUs manquent sur les étals. A moins que vous n'ayez pour projet d'acheter du matériel d'occasion, vous allez avoir du mal à vous procurer un GPU.

J'ai eu la chance de mettre la main sur six GPUs RX 470 juste au moment où la valeur de l'Ether a commencé à décoller. A ce moment-là, les GPUs étaient déjà devenus incroyablement difficiles à trouver. J'ai dû revoir mes objectifs en terme de performances. C'était tout de même mieux que rien : quelques heures après que j'aie passé ma commande, le site avait écoulé le reste de son stock.

Si vous avez trouvé le moyen de vous procurer quelques cartes graphiques, votre prochaine mission consistera à trouver une carte-mère et une alimentation capables de supporter l'ensemble de ces GPUs. Pour ma part, je me suis équipé d'une carte-mère MSI Z170a et un bloc d'alimentation Corsair de 1200 watts. Chaque GPU a besoin de 100 à 150 watts de puissance. Les miens réclamaient environ 120 watts par unité, ce qui donne un mineur cadencé à environ 800 watts. Comme les alimentations ne délivrent que trois-quarts de leur puissance totale dans les meilleures conditions, un bloc de 1200 watts était adapté à mes besoins.

Autre élément indispensable : des câbles d'extension PCI. Aucune carte-mère n'a assez de slots PCI pour brancher six GPUs. Les câbles d'extension vous permettront aussi de suspendre les GPUs au-dessus de la carte-mère, ce qui va aider à dissiper la chaleur en permettant à l'air de circuler dans le mineur.

Côté processeur et mémoire vive, j'ai choisi un Intel à 2,8GHz et une barrette TForce à 4Go. Ce n'est rien de clinquant mais c'est suffisant pour le minage d'Ethereum, qui ne demande pas à votre ordinateur d'accomplir beaucoup de tâches différentes à la fois. Un CPU et de la RAM pas chères suffiront amplement.

La carte-mère. Sur la gauche, le bloc d'alimentation de 1200W. Chacun de ces câbles bleus est connecté à un câble d'extension branché à l'un des GPU suspendu au-dessus de la carte-mère. Image : Daniel Oberhaus/Motherboard

Pour finir, vous allez avoir besoin d'un boîtier. Une tour classique a peu de chances de pouvoir accueillir six cartes graphiques, vous avez besoin d'un support customisé. De nombreuses sociétés proposent des boîtiers pour mineur. Sachant qu'ils coûtent parfois plus de 150$ et qu'ils n'ont pas l'air compliqué à construire, j'ai décidé de faire le mien moi-même. Quelques cornières en aluminium découpés dans une boutique de hardware locale, deux ou trois planches pour poser la carte-mère, quelques vis et une visseuse ont suffi.

Construire mon propre boîtier m'a coûté 50$ et une heure de bricolage. En tout et pour tout, la partie hardware de mon mineur m'a délesté d'un peu plus de 2 000 dollars.

Maintenant, il est temps de s'attaquer à la partie software.

Personne n'a dit que ça allait beau à voir. Image : Daniel Oberhaus/Motherboard

Côté système d'exploitation, vos options sont limitées : vous pouvez choisir Window, Linux ou ethOS. Windows a l'avantage de procurer un meilleur suivi des drivers pour vos cartes graphiques ; ethOS est une solution facile et rapide pour tous ceux qui ne connaissent pas Linux et n'ont pas l'intention de le découvrir.

Pour être honnête, je me suis largement lancé dans le minage sur Ethereum parce que je voulais apprendre Linux. J'ai donc choisi de gérer la partie software à la dure : j'ai téléchargé Xubuntu, une version allégée du célèbre Ubuntu, et je l'ai installé sur ma carte-mère. Pour ce faire, j'ai dû écrire une image disque Linux sur une clé USB de 32 Go et la connecter à ma carte-mère. Facile.

Ensuite, j'ai dû télécharger les drivers graphiques qui allaient permettre à mes GPUs AMD de communiquer avec la carte-mère et faire du traitement parallèle. Ces drivers sont disponibles gratuitement sur le site d'AMD et leur installation via le terminal Ubuntu est assez facile. Pour finir, j'ai téléchargé Geht, le programme qui me permet d'envoyer des commandes à mon noeud Ethereum. Après avoir téléchargé la blockchain et couplé mon mineur à un portefeuille ouvert sur Mist, je me suis mis à miner.

Voilà quoi ressemble le terminal de minage sur ethOS :

Au total, mes six GPUs ont une puissance de hachage de 120 MH/s, ou 120 millions d'opérations de hachage par seconde. En bidouillant leurs paramètres, je pourrais atteindre les 125-130 MH/s. Avec ces cartes graphiques, je ne peux pas espérer mieux. Ça peut sembler impressionnant, mais le taux de hachage de l'ensemble du réseau Ethereum atteint actuellement les 42,3 TH/s. 42 trillions, ou 42 milliards de milliards d'opérations de hachage par seconde. Mon mineur n'est qu'une goutte d'eau dans l'océan.

Rappel : cinq Ether vous seront octroyés si votre mineur découvre le bon nonce. Plus vous effectuez d'opérations de hachage par bloc, plus vous avez de chance de découvrir cette valeur magique. Tout seul avec mon petit mineur, je vais peut-être attendre des mois avant de trouver mon premier nonce.

La plupart des mineurs sont dans la même situation que moi. Tout le monde n'a pas la puissance délirante des fermes à minage comme Genesis. Pour accroître leurs chances de découvrir un nonce, les petits mineurs forment des alliances au sein desquelles ils combinent leurs puissances de calcul respectives. Grâce à ce système d'entraide, certaines alliances obtiennent plusieurs nonces par heure. La récompense est redistribuée à tous les mineurs ayant participé à l'opération, selon la part de travail accomplie par chacun. Si vous choisissez cette méthode, vous n'obtiendrez sans doute que quelques millièmes d'Ether par jour. Mais le temps passant, votre pactole va croître, surtout si la valeur de l'Ether continue à grimper.

Chaque alliance a des conditions et des frais d'entrée différents. Malgré ma modeste contribution de 120 MH/s, celle qui m'a accueilli va me permettre d'obtenir 35 Ether par an. En se basant sur la difficulté du minage et la valeur actuelle de l'Ether, cela représente presque 8 000 dollars par an, prix de l'électricité déduit.

Et voilà, vous êtes témoin : même un noob total de Linux et du montage de PC est capable de construire et de faire tourner son propre mineur Ethereum sans trop de difficultés. Après tout, peut-être que monter son propre PC n'est pas si difficile.