Miner du Monero (XMR) avec xmr-stak - CPU & GPU
Si le bitcoin fait beaucoup parler de lui, d'autres cryptomonnaies commencent également à s'imposer, ces dernières semblent ne pas vouloir reproduire les mêmes erreurs que le bitcoin. Avec l'usage d'algorithmes de hashage différents, il est ainsi possible d'utiliser son CPU ou son GPU pour le minage. C'est le cas du Monero, basé sur la technologie Cryptonote, dont le code monétaire est XMR.
Dans ce tutoriel, nous allons voir comment miner du Monero avec l'outil open-source xmr-stack disponible sur Github. Ce dernier est disponible sur Windows, Linux et Mac OS et permet de miner avec votre CPU et/ou votre GPU AMD/NVIDIA.
Monero - Comme le bitcoin ?
Si j'ai décidé de parler du minage du Monero dans cet article, c'est tout d'abord car cette cryptomonnaie est très différente du célèbre bitcoin. Voici les principales différences entre les deux cryptomonnaies :
1) Un portefeuille et des transactions anonymes
Alors que toutes les transactions effectuées avec des bitcoins sont affichées publiquement, elles restent confidentielles avec le Monero.
Il est ainsi impossible de lister les transactions réalisées depuis un portefeuille ainsi que le montant de ces transactions.
2) Des frais de transactions faibles
Si de nombreuses personnes ont commencé à s'intéresser au bitcoin et à y investir de l'argent, la majorité d'entre elles ne l'utilisent pas comme moyen de paiement en ligne. Cependant au moment où j'écris cet article, pour envoyer l'équivalent de 1€ à un autre portefeuille bitcoin, les frais de réseaux sont de 20.88€.
Grâce à des blocks aux dimensions dynamiques, permettant de s'adapter aux nombre de transactions par rapport à la puissance de calcul disponible, les transactions avec le Monero sont rapides et les frais de transactions faibles.
3) Tout le monde peut miner
À l'inverse du bitcoin, il n'est pas nécessaire d'investir 1500€ dans un ASIC (Application Specific Integrated Circuit) pour pouvoir miner du Monero. L'objectif du Monero étant que chacun puisse participer au réseau et donc garantir que ce dernier soit totalement décentralisé.
Tout savoir sur le Monero
Voici quelques liens utiles si vous souhaitez en savoir plus sur le Monero :
Les sites principaux
- getmonero.org : le site officiel du Monero
- mymonero.com : portefeuille en ligne conseillé par getmonero.org
- www.monero.how : Tutoriaux, statisques, informations
Les sites pour en discuter
Les sites pour miner
- monerobenchmarks.info : benchmark CPU & GPU
- moneropools.com : comparateur des pools de minage
- reddit monero mining
Miner du Monero
Comme expliqué précédemment, avec le Monero, il peut ainsi être intéressant de miner avec votre PC ou votre serveur dédié, sans pour autant utiliser tous les cores de votre CPU. Par exemple, avec 2 Cores d'un Intel Core i7-4790K, j'obtiens un hashrate moyen de 240 H/s.
Il reste possible de monter des machines dédiées pour le minage et pour cela les GPU AMD restent plus intéressants que ceux proposés par Nvidia. Les RX 570 & 580 proposent un tarif abordable pour commencer, et la nouvelle gamme VEGA est visiblement beaucoup plus intéressante pour le minage que pour les jeux-vidéos.
Le minage du monero est similaire au bitcoin sur le fonctionnement puisque vous pouvez miner seul ou via un pool. Pour débuter il est souvent plus intéressant d'utiliser un pool.
Suite à de nombreuses plaintes sur reddit, je vous déconseille l'usage du site minergate.com
Les alternatives à Monero
mise à jour du 24/10/2018
Je ne mine plus de Monero depuis Février suite à la forte augmentation du hashrate et de la difficulté sur le réseau Monero, qui a réduit de moitié la récompense obtenu à puissance égale.
Monero n'est pas le seule cryptomonnaie basée sur cryptonote, et de nombreux autres projets ont vu le jour dont le Stellite (XTL) ou le Graft (GRFT) pour ne citer que les plus prometteurs. Si vous souhaitez découvrir et/ou miner d'autres cryptomonnaies similaires au Monero, je vous invite à visiter le site de référence Cryptunit.com.
Le Monero reste un projet stable, et ses développeur nous l'ont prouvés en ce début Avril, en réalisant un nouveau hardfork, ou du moins une mise à jour de l'algorithme du PoW(Proof of Work) en Français afin de lutter contre les ASICs (application-specific integrated circuit), ces machines dédiées au minage d'une cryptomonnaie et qui propose un ratio hashrate/consommation exceptionnel.
Si vous vous demandez pourquoi le Monero fait la guerre aux ASICs, c'est tout simplement parce que ses développeurs ont bien retenu la leçon du bitcoin (12 sociétés représente 87% de la puissance de calcul du réseau Bitcoin).
Quasiment toutes les cryptomonnaies partagent une même logique de décentralisation, mais à l'heure actuelle, le projet Monero est clairement celui qui fait le plus d'efforts pour que le réseau reste décentralisé.
Le résultat de ce hardfork, une baisse de 50% du hashrate sur le réseau Monero. Un autre hardfork est déjà programmé dans 6 mois, et il y en aura désormais un tous les 6 mois, rendant la conception et la vente d'ASICs totalement impossible.
XMR-STACK : Un mineur tout-en-un
Depuis sa release v2.0, xmr-stack est un mineur tout-en-un, puisqu'il permet de miner avec votre CPU et/ou GPU AMD ou Nvidia et il dispose d'un interface web pour suivre votre hashrate en temps réel.
Installer xmr-stack
Sur Windows
Sur Windows, il vous suffit de télécharger la version pré-compilée disponible sur la page release du projet xmr-stack.
Sur Linux
Sur Linux, il est par contre nécessaire de compiler xmr-stack. Il est alors possible d'ajouter la librarie OpenCL pour un GPU AMD ou CUDA pour un GPU Nvidia.
Le CUDA Toolkit est disponible via le lien suivant : CUDA
Et l'APP SDK pour ADM est disponible via le lien suivant : AMD
Pour la compilation, xmr-stack nécessite gcc 5.1+. Si votre système d'exploitation vous propose uniquement une version antérieur de gcc, vous pouvez dans ce cas utiliser le script bash docker disponible sur le dépôt d'xmr-stack, pour réaliser la compilation.
Compiler xmr-stack avec le script bash docker
- Installer Docker
curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh
- Lancer le script
wget https://raw.githubusercontent.com/fireice-uk/xmr-stak/master/scripts/build_xmr-stak_docker/build_xmr-stak_docker.sh
bash build_xmr-stak_docker.sh
Le script réalise la compilation d'xmr-stack pour Ubuntu 14.04, 16.04, Centos 6, 7 et Fedora 27. Une fois la compilation terminée, chaque version sera disponible dans un dossier distinct.
Compiler xmr-stack sur Ubuntu
> apt install libmicrohttpd-dev libssl-dev cmake build-essential libhwloc-dev -y
git clone https://github.com/fireice-uk/xmr-stak.git
mkdir xmr-stak/build
cd xmr-stak/build
Vous pouvez alors ajouter des arguments à la commande cmake pour désactiver les librairies OpenCL (-DOpenCL_ENABLE=OFF) et CUDA (-DCUDA_ENABLE=OFF) si vous souhaitez miner uniquement avec votre CPU. Et si vous ne souhaitez pas utiliser la dashboard web, vous pouvez également définir l'option (-DMICROHTTPD_ENABLE=OFF).
Ce qui donne
# CPU only + Interface web
cmake .. -DCUDA_ENABLE=OFF -DOpenCL_ENABLE=OFF
make install
# AMD + CPU + Interface web
cmake .. -DCUDA_ENABLE=OFF
make install
# Nvidia + CPU + Interface web
cmake .. -DOpenCL_ENABLE=OFF
make install
# CPU only sans Interface web
cmake .. -DCUDA_ENABLE=OFF -DOpenCL_ENABLE=OFF -DMICROHTTPD_ENABLE=OFF
make install
L'exécutable xmr-stack sera disponible dans le dossier bin après la compilation.
Vous pouvez le lancer en vous rendant dans le dossier :
cd xmr-stack/build/bin/
./xmr-stack
Configuration d'xmr-stack
Lors du premier lancement de l'application, xmr-stack va détecter la configuration de votre ordinateur (CPU & GPU), puis vous afficher un menu interactif pour générer les différents fichiers de configuration :
- config.txt : fichier de configuration principal où vous pouvez définir les options relative à l'affichage console, aux logs ou à l'interface web
- pools.txt : ficher de configuration du/des pool(s)
- cpu.txt : fichier de configuration pour le CPU, qui définit le nombre de threads a utiliser et l'intensité
- gpu.txt : fichier de configuration pour le GPU (si un GPU est présent)
Globalement, les options par défaut sont optimisées grâce à la détection des périphériques disponibles. Cependant il est possible de les ajuster, en réduisant par exemple le nombre de coeurs utilisés pour le minage.
Optimisation
Windows
Afin d'obtenir un meilleur hashrate sous Windows, il est nécessaire d'autoriser le verrouillage des pages en mémoire.
Pour cela, il faut se rendre dans l'éditeur de stratégie de groupe locale, accessible via le commande gpedit.msc dans le menu démarrer. Puis dans Paramètres Windows > Paramètres de sécurité > Attribution des droits utilisateur comme sur l'image ci-dessous :
Vous pouvez ensuite ajouter des utilisateurs (votre utilisateur et/ou l'Administrateur) dans le menu contextuel de l'option "Verrouiller les pages en mémoire". Un redémarrage est nécessaire pour appliquer la modification.
Linux
Tout comme avec Windows, il vous faudra ajuster certaines options concernant la gestion de la mémoire de votre système pour obtenir un meilleur hashrate.
Via le fichier sysctl.conf
echo 'vm.nr_hugepages=128' >> /etc/sysctl.conf
sysctl -p
Via le fichier limits.conf
echo '* soft memlock 262144' >> /etc/security/limits.conf
echo '* hard memlock 262144' >> /etc/security/limits.conf
Pour appliquer la nouvelle configuration, il n'est pas nécessaire de redémarrer, mais simplement de fermer votre session, puis de l'ouvrir à nouveau.
Mettre à jour xmr-stack
Windows
Sous Windows, il vous suffit de télécharger la nouvelle version disponible sur la page release, tout en conservant vos fichier de configurations.
Linux
Sous Linux, on récupère les modifications depuis le dépôt Github, avant de sélectionner la dernière release, et on relance la compilation :
cd xmr-stack
git fetch
git checkout v2.2.0
cd build
cmake .. -DCUDA_ENABLE=OFF -DOpenCL_ENABLE=OFF
make install
Mes astuces et chiffres
- Sur des processeurs avec suffisament de cache, il peut-être intéressant d'activer le l'option
low_power_mode
via le fichier cpu.txt si vous ne souhaitez pas utiliser tous les cores disponibles pour miner. Sur un XEON E3-1270v6, j'obtiens ainsi un hashrate de 220 H/s avec 2 Cores. - Sous Windows, avec un GPU Nvidia, activer l'option "optimiser pour les performances de calcul" via le panneau de configuration Nvidia, dans la section Gérer les paramètres 3D, comme sur l'image ci-dessous :
Je suis passé d'un hashrate de 300 H/s à 430 H/s avec une GTX 970 après avoir activé cette option.
Quelques chiffres
GPU :
- Nvidia GTX 970 : 430 H/s
CPU :
-
Intel(R) Core(TM) i5-2400 @ 3.10GHz : 150 H/s
-
Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz : 250 H/s
-
Intel(R) Core(TM) i7-2600 @ 3.40GHz : 260 H/s
-
Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz : 260 H/s
-
Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz : 260 H/s
-
Intel(R) Xeon(R) CPU E3-1231 v3 @ 3.40GHz : 250 H/s
-
Intel(R) Xeon(R) CPU E3-1270 v6 @ 3.80GHz : 250 H/s
-
Intel(R) Xeon(R) CPU E5-1630 v3 @ 3.70GHz : 280 H/s
-
Intel(R) Xeon(R) CPU E3-1245 V2 @ 3.40GHz : 260 H/s
-
Intel(R) Xeon(R) CPU E5-1650 v4 @ 3.60GHz : 390 H/s
-
2 x Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz : 930 H/s