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.

This following section describes the steps to setup an Ubuntu Server running P2Pool for Dash. It has been tested with Ubuntu 20.04 LTS and Dash 0.16. While a reasonable effort will be made to keep it up to date, it should be possible to modify the instructions slightly to support different versions or operating systems as necessary.

Configuration du serveur hôte

Download a copy of Ubuntu Server LTS from https://ubuntu.com/download/server and install it on your system according to the steps described here. If you are using a VPS such as Vultr or AWS, your provider will most likely provide an option to install this system during provisioning. Ensure you enable OpenSSH server during setup so you can control your server from a remote console. Once you have access to your server, create a new non-root user if you have not already done so using the following command, replacing <username> with a username of your choice:

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

If you are on a private network behind a router, you will need to set up port forwarding for at least port 8999 (UDP/TCP) for access to the sharechain, as well as port 7903 (UDP/TCP) if you want your node to be accessible to the public. How this is done depends on your particular network router and is therefore beyond the scope of this documentation. An example from the popular DD-WRT open source router distribution is shown below. Guides to setting up port forwarding can be found here and here.

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

Manual setup

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

sudo apt update
sudo apt upgrade

Configuration de dashd

P2Pool requires a full Dash node to be running to get block and transaction data. To download and install Dash, visit https://www.dash.org/downloads/ on your computer to find the link to the latest Dash Core wallet. Click Linux, then right-click on Download TGZ for Dash Core x64 and select Copy link address. Go back to your terminal window and enter the following command, pasting in the address to the latest version of Dash Core by right clicking or pressing Ctrl + V:

cd ~
wget https://github.com/dashpay/dash/releases/download/v0.16.1.1/dashcore-0.16.1.1-x86_64-linux-gnu.tar.gz

Verify the authenticity of your download by checking its detached signature against the public key published by the Dash Core development team. All releases of Dash are signed using GPG with one of the following keys:

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/v0.16.1.1/dashcore-0.16.1.1-x86_64-linux-gnu.tar.gz.asc
gpg --verify dashcore-0.16.1.1-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-0.16.1.1-x86_64-linux-gnu.tar.gz
cp dashcore-0.16.1/bin/dashd .dashcore/
cp dashcore-0.16.1/bin/dash-cli .dashcore/

Nettoyez les fichiers non nécessaires

rm dashcore-0.16.1.1-x86_64-linux-gnu.tar.gz
rm -r dashcore-0.16.1/

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