Mise en place d’un nœud Dash P2Pool

Ce guide décrit comment configurer un nœud Dash P2Pool pour gérer un groupe de mineurs. À l’inverse des groupes de minage centralisés, P2Pool est basé sur le même modèle pair à pair (P2P) que Dash, ce qui rend le groupe en tant que tel hautement résistant aux attaques malveillantes, préservant et protégeant la nature décentralisée de Dash. Quand vous lancez un nœud P2Pool, il cherche, se connecte et partage des données avec un réseau décentralisé d’autres nœuds P2Pool (également connus sous le nom de pairs). Les nœuds P2Pool partagent une chaîne cryptographique de données représentant de la valeur, de manière similaire à la blockchain Dash. La version P2Pool se nomme une « sharechain ». La nature décentralisée et équitable de ce principe de minage implique qu’il est fortement encouragé de miner avec P2Pool. P2Pool pour Dash utilise le logiciel p2pool-dash sur GitHub, qui est un fork de P2Pool pour Bitcoin. Pour en savoir plus, voir ici.

En raison de la façon dont P2Pool gère les ajustements de difficulté sur la sharechain, il est important de maintenir une latence basse entre les mineurs et le nœud P2Pool, pour éviter que les mineurs ne soumettent leurs parts trop tard pour qu’elles soient incluses à la blockchain. À la configuration de votre nœud, vous devez étudier son emplacement physique et sur le réseau, relativement aux mineurs auxquels vous souhaitez connecter votre nœud. Si vous gérez une ferme de minage, votre nœud P2Pool devrait probablement être une machine physique sur le même réseau local que vos mineurs. Si vous envisagez de gérer un nœud public, il peut être préférable de configurer votre nœud P2Pool en tant que machine virtuelle dans un centre de données disposant d’une connexion à haut débit, de telle façon que les mineurs géographiquement proches puissent miner vers votre groupe avec une latence relativement basse.

La section suivante décrit les étapes de configuration d’un serveur Ubuntu faisant tourner P2Pool pour Dash. Elle a été testée avec Ubuntu 16.04 LTS et 18.04 LTS et avec Dash 0.12.2.3. Un effort sera fait pour la mettre à jour, mais il devrait être possible de modifier légèrement les instructions pour assurer une compatibilité avec des versions différentes ou d’autres systèmes d’exploitation, si nécessaire.

Configuration du serveur hôte

Téléchargez une copie d’Ubuntu Server LTS depuis l’adresse https://www.ubuntu.com/download/server et installez-la sur votre ordinateur en suivant les étapes décrites ici. Si vous utilisez un VPS tel que Vultr ou AWS, votre fournisseur vous propose très probablement une option d’installation de ce système. Assurez-vous d’activer le serveur OpenSSH pendant la mise en place, pour que vous puissiez contrôler votre serveur depuis une console distante. Une fois que vous avez accès à votre serveur, créez un nouvel utilisateur non-root si ce n’est pas déjà fait en utilisant la commande suivante, et en remplaçant <username> avec un nom d’utilisateur de votre choix

adduser <username>

Un mot de passe vous sera demandé. Tapez un nouveau mot de passe (différent de votre mot de passe « root ») puis confirmez-le. Conservez-le ensuite dans un endroit sûr. Il vous sera aussi demandé différentes informations sur l’utilisateur, mais vous pouvez les laisser vides. Une fois l’utilisateur créé, nous allons l’ajouter au groupe « sudo » de manière à ce qu’il puisse passer des commandes en tant que « root »

usermod -aG sudo <username>

Redémarrez votre serveur et connectez-vous-y en tant que le nouvel utilisateur. À cette étape, il est recommandé de se connecter à distance en utilisant PuTTY (pour Windows) ou ssh (pour Linux et macOS) si ce n’est pas déjà le cas.

Configuration de la redirection de ports

Si vous êtes connecté à un réseau privé derrière un routeur, vous devrez configurer votre redirection de ports au moins pour le port 8999 (UDP/TCP) pour accès à la sharechain, ainsi que pour le port 7903 (UDP/TCP) si vous souhaitez que votre nœud soit accessible publiquement. La manière de le faire dépend de votre routeur et dépasse donc le cadre de cette documentation. Un exemple concernant le routeur populaire et open source DD-WRT est affiché ci-dessous. Des guides pour configurer la redirection de ports peuvent être trouvés ici ou .

Prenez note de votre adresse IP, soit sur l’interface de gestion de votre routeur, soit en consultant l’adresse https://www.whatismyip.com

../_images/p2pool-ddwrt.png

Configuration de la redirection de ports avec DD-WRT

Option 1 : Mise en place automatique par script

Dracocephalum, membre de la communauté Dash, a généreusement partagé un script permettant de déployer automatiquement tout ce qui est nécessaire pour faire tourner un nœud P2Pool-Dash sous Ubuntu Server 16.04 ou ultérieur. Pour en savoir plus, voir ce billet de forum, ou suivez simplement ces instructions pour obtenir le script. Pour récupérer le script et vous lancer, tapez

sudo apt install git
git clone https://github.com/strophy/p2pool-dash-deploy

Les fichiers seront créés dans le répertoire « p2pool-dash-deploy ». Nous devons maintenant définir quelques variables propres à votre système

nano ./p2pool-dash-deploy/p2pool.deploy.sh

Descendez jusqu’à la section #Variables et saisissez les informations suivantes, en remplaçant les espaces réservés <xxx> après le signe =. Veuillez noter qu’il peut être également nécessaire de mettre à jour les valeurs DASH_WALLET_URL, DASH_WALLET_ZIP et DASH_WALLET_LOCAL si elles ne correspondent pas à la version actuelle de Dash :

  • PUBLIC_IP = votre adresse IP publique (telle que dans l’étape précédente)
  • EMAIL = votre adresse e-mail
  • PAYOUT_ADDRESS = l’adresse de votre portefeuille Dash où recevoir les frais
  • USER_NAME = nom d’utilisateur Linux
  • RPCUSER = saisissez un nom d’utilisateur RPC alphanumérique aléatoire
  • RPCPASSWORD = saisissez un mot de passe RPC alphanumérique aléatoire

Faites la combinaison de touches Ctrl-X pour fermer l’éditeur de texte puis O et Entrée pour enregistrer le fichier. Puis lancez le script

bash ./p2pool-dash-deploy/p2pool.deploy.sh

Le script se chargera de toutes les étapes nécessaires pour configurer P2Pool sur Ubuntu Server et démarrer la synchronisation de dashd. Quand la mise en place est terminée, vous devriez voir un message disant Installation terminée. Vous pouvez à présent lancer un second script pour démarrer p2pool-dash

bash ~/p2pool.start.sh

Votre nœud P2Pool est désormais fonctionnel. Si vous voyez des erreurs telles que Error getting work from dashd ou -10 Dash Core is downloading blocks…, vous devez attendre que Dash termine la synchronisation. Une fois que c’est le cas, vous pouvez pointer vos mineurs vers <ip_address>:7903 pour commencer à miner.

../_images/p2pool-antminer.png
../_images/p2pool-running.png

Exemple de configuration montrant un unique Bitmain Antminer D3 connecté au nœud p2pool-dash sur le réseau local

Option 2 : Configuration manuelle

D’abord, mettez à jour votre système d’exploitation comme suit

sudo apt update
sudo apt upgrade

Configuration de dashd

P2Pool demande que tourne un nœud complet Dash pour obtenir les données de transactions et de blocs. Pour télécharger et installer Dash Core, allez à l’adresse https://www.dash.org/wallets sur votre ordinateur pour trouver le lien vers la plus récente version du portefeuille logiciel Dash Core. Cliquez sur Linux, puis faites un clic-droit sur Télécharger TGZ pour Dash Core Linux 64 bits, puis choisissez Copier l’adresse du lien. Revenez à votre fenêtre de terminal et tapez la commande suivante, en y collant l’adresse de la plus récente version de Dash Core en faisant un clic-droit ou la combinaison de touches Ctrl-V

cd ~
wget https://github.com/dashpay/dash/releases/download/v0.12.2.3/dashcore-0.12.2.3-linux64.tar.gz

Vérifiez l’intégrité de votre téléchargement en lançant la commande suivante et en comparant sa valeur de sortie à la valeur du fichier affiché sur le site Dash sous le nom de Fichier d’empreinte numérique

sha256sum dashcore-0.12.2.3-linux64.tar.gz
../_images/setup-manual-download.png

Lien vers le fichier d’empreinte numérique pour vérifier l’intégrité du téléchargement

Créez un répertoire de travail pour Dash, décompressez l’archive, copiez les fichiers nécessaires dans le répertoire et rendez-les exécutables

mkdir .dashcore
tar xfvz dashcore-0.12.2.3-linux64.tar.gz
cp dashcore-0.12.2/bin/dashd .dashcore/
cp dashcore-0.12.2/bin/dash-cli .dashcore/
chmod 777 .dashcore/dash*

Nettoyez les fichiers non nécessaires

rm dashcore-0.12.2.3-linux64.tar.gz
rm -r dashcore-0.12.2/

Créez un fichier de configuration avec la commande suivante

nano ~/.dashcore/dash.conf

Une fenêtre d’éditeur de texte apparaîtra. Nous devons à présent créer un fichier de configuration définissant plusieurs variables. Copiez et collez le texte suivant pour démarrer, puis remplacez les variables propres à votre configuration, comme suit

#----
rpcuser=XXXXXXXXXXXXX
rpcpassword=XXXXXXXXXXXXXXXXXXXXXXXXXXXX
rpcallowip=127.0.0.1
#----
listen=1
server=1
daemon=1
maxconnections=64
#----

Remplacez les champs marqués XXXXXXX comme suit :

  • rpcuser: saisissez une chaîne alphanumérique aléatoire, sans caractères spéciaux
  • rpcpassword : saisissez une chaîne alphanumérique aléatoire, sans caractères spéciaux

Le résultat devrait ressembler à ça :

../_images/p2pool-dash-conf.png

Saisie de données clés dans le fichier « dash.conf » sur le nœud P2Pool

Faites la combinaison de touches Ctrl-X pour fermer l’éditeur de texte, puis O et Entrée pour enregistrer le fichier. Vous pouvez à présent lancer Dash sur le masternode pour commencer la synchronisation avec la blockchain

~/.dashcore/dashd

Vous verrez un message disant Démarrage du serveur Dash Core. Vous pouvez suivre les étapes ci-dessous tout en vérifiant régulièrement la synchronisation avec la commande suivante. La synchronisation est terminée quand le nombre blocks est égal au nombre actuel de blocs dans la blockchain Dash, tel qu’il est indiqué par n’importe quel portefeuille Dash synchronisé ou par tout explorateur de blocs:

~/.dashcore/dash-cli getblockcount

Configuration de P2Pool

Nous allons maintenant configurer le logiciel P2Pool et ses dépendances. Commencez avec les dépendances

sudo apt install python-zope.interface python-twisted python-twisted-web python-dev
sudo apt install gcc g++ git

Créez des répertoires de travail et configurez p2pool-dash

mkdir git
cd git
git clone https://github.com/dashpay/p2pool-dash
cd p2pool-dash
git submodule init
git submodule update
cd dash_hash
python setup.py install --user

Nous ajoutons quelques interfaces supplémentaires, facultatives, au panneau de contrôle

cd ..
mv web-static web-static.old
git clone https://github.com/justino/p2pool-ui-punchy web-static
mv web-static.old web-static/legacy
cd web-static
git clone https://github.com/johndoe75/p2pool-node-status status
git clone https://github.com/hardcpp/P2PoolExtendedFrontEnd ext

Vous pouvez à présent démarrer p2pool et, facultativement, indiquer l’adresse de paiement, l’IP externe (si nécessaire), les frais et un don, comme suit

python ~/git/p2pool-dash/run_p2pool.py --external-ip <public_ip> -f <fee> --give-author <donation> -a <payout_address>

Vous pouvez alors surveiller votre nœud en vous rendant aux adresses suivantes, en remplaçant <ip_address> par l’adresse IP de votre nœud P2Pool :

../_images/p2pool-antminer.png
../_images/p2pool-running.png

Exemple de configuration montrant un unique Bitmain Antminer D3 connecté au nœud p2pool-dash sur le réseau local