Mise en place d’un nœud 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 20.04 LTS et avec Dash 0.16. Nous tâcherons de la tenir à 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#

Installation manuelle#

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

sudo apt update
sudo apt upgrade

Configuration de dashd#

P2Pool nécessite 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/fr/telechargements 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/v18.2.2/dashcore-18.2.2-x86_64-linux-gnu.tar.gz

Vérifiez l’authenticité de votre téléchargement en comparant sa signature séparée à la clé publique diffusée par l’équipe de développement Dash Core. Toutes les versions de Dash sont signées avec GPG avec une des clés suivantes :

curl https://keybase.io/codablock/pgp_keys.asc | gpg --import
curl https://keybase.io/pasta/pgp_keys.asc | gpg --import
wget https://github.com/dashpay/dash/releases/download/v18.2.2/dashcore-18.2.2-x86_64-linux-gnu.tar.gz.asc
gpg --verify dashcore-18.2.2-x86_64-linux-gnu.tar.gz.asc

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-18.2.2-x86_64-linux-gnu.tar.gz
cp dashcore-18.2.2/bin/dashd .dashcore/
cp dashcore-18.2.2/bin/dash-cli .dashcore/

Nettoyez les fichiers non nécessaires

rm dashcore-18.2.2-x86_64-linux-gnu.tar.gz
rm -r dashcore-18.2.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 python2 python2-dev gcc g++ git
curl https://bootstrap.pypa.io/get-pip.py --output get-pip.py
sudo python2 get-pip.py
pip install twisted

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

git clone https://github.com/dashpay/p2pool-dash
cd p2pool-dash
git submodule update --init
cd dash_hash
python2 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/hardcpp/P2PoolExtendedFrontEnd ext
cd ..

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

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

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#