Configuration#

Mettre en place un masternode demande une compréhension de base de Linux et de la technologie blockchain, ainsi qu’une capacité à suivre des instructions de près. Cela demande également une régularité de gestion et une sécurité pointilleuse, en particulier si vous ne stockez pas vos dashs sur un portefeuille matériel. Il y aura quelques choix à faire lors de la procédure, et quelques étapes supplémentaires facultatives à suivre pour une meilleure sécurité.

Des services commerciaux d’hébergement de masternode sont disponibles si vous préférez déléguer la gestion au jour le jour de votre masternode à un opérateur professionnel. En utilisant ces services d’hébergement, vous conservez un contrôle total sur la caution de 1000 dashs et vous payez un pourcentage convenu d’avance à l’opérateur, à titre de rétribution. Il est également possible de déléguer vos clés de vote à un représentant, veuillez consulter la documentation sur la gouvernance pour en savoir plus.

Avant de commencer#

Ce guide présuppose que vous mettez en place un seul masternode, pour la première fois, sur le réseau Dash principal. Pour mettre à jour un masternode existant, voyez plutôt ici. Voici ce dont vous aurez besoin :

  • 1000 dashs

  • un portefeuille pour stocker vos dashs, de préférence un portefeuille matériel, bien que le portefeuille logiciel Dash Core soit aussi envisageable

  • un serveur Linux, de préférence un serveur privé virtuel (VPS)

Dash version 0.13.0 et ultérieure met en œuvre la DIP003, qui introduit certains changements dans la façon d’installer et de gérer un masternode. Bien que cette mise à jour du réseau ait été achevée début 2019, veuillez trouver ci-dessous une liste de sa documentation disponible :

This documentation describes the commands as if they were entered in the Dash Core GUI by opening the console from Window > Console, but the same result can be achieved on a masternode by entering the same commands and adding the prefix ~/.dashcore/dash-cli to each command.

Configuration de votre VPS#

Un VPS, plus connu sous le nom de « serveur dans le nuage », est une installation entièrement fonctionnelle d’un système d’exploitation (Linux, en général) exécutée dans une machine virtuelle. La machine virtuelle permet au fournisseur de VPS de faire tourner de nombreux systèmes sur un seul serveur physique, rendant l’ensemble plus efficace et beaucoup moins cher que de faire tourner un unique système d’exploitation sur le « métal nu » de chaque serveur. Un VPS est idéal pour héberger un masternode Dash car les VPS proposent en général une garantie sur la disponibilité, une redondance dans le cas de problèmes matériels et une adresse IP statique qui est indispensable pour que votre masternode ne soit pas éjecté de la file d’attente des paiements. Bien que faire tourner un masternode depuis son domicile, sur un ordinateur de bureau, soit techniquement possible, cela ne marchera certainement pas de manière fiable car la plupart des fournisseurs d’accès allouent des adresses IP dynamiques aux utilisateurs domestiques.

Nous utiliserons l’hébergeur Vultr comme VPS pour notre exemple, bien que DigitalOcean, Amazon EC2, Google Cloud, Choopa ou encore OVH soient également des choix reconnus. Tout d’abord, créez un compte et créditez-le. Puis allez sur le menu Serveurs sur la gauche et cliquez sur + pour ajouter un nouveau serveur. Choisissez un endroit pour votre nouveau serveur, sur l’écran suivant :

../../../_images/setup-server-location.png

Page Vultr de choix d’emplacement de serveur#

Choisissez Ubuntu 20.04 x64 comme type de serveur. Nous utilisons cette version LTS d’Ubuntu plutôt que la version la plus récente, car les versions LTS d’Ubuntu se voient fournir des mises à jour de sécurité pendant 5 ans, plutôt que pendant les 9 mois habituels.

../../../_images/setup-server-type.png

Page Vultr de choix du type de serveur#

Choisissez une taille de serveur avec au moins 2 Go de mémoire vive.

../../../_images/setup-server-size.png

Page Vultr de choix de taille de serveur#

Tapez un nom d’hôte et une étiquette pour votre serveur. Dans cet exemple, nous utiliserons « dashmn1 » comme nom d’hôte.

../../../_images/setup-server-hostname.png

Page Vultr de choix du nom d’hôte et de l’étiquette du serveur#

Vultr installe à présent votre serveur. Cette étape peut prendre quelques minutes.

../../../_images/setup-server-installing.png

Page Vultr d’installation du serveur#

Cliquez sur Gérer quand l’installation est terminée et prenez note de l’adresse IP, du nom d’utilisateur et du mot de passe.

../../../_images/setup-server-manage.png

Page Vultr de gestion du serveur#

Configuration de votre système d’exploitation#

Nous commencerons par nous connecter à votre serveur fraîchement créé. Sous Windows, vous devrez d’abord télécharger une application appelée PuTTY pour vous connecter au serveur. Allez sur la page de téléchargement de PuTTY et choisissez l’installeur MSI approprié à votre ordinateur. Sur Mac ou Linux, vous pouvez vous connecter directement par ssh depuis le Terminal — tapez simplement ssh root@<server_ip> puis votre mot de passe quand il vous est demandé.

../../../_images/setup-putty-download.png

Page de téléchargement de PuTTY#

Double-cliquez sur le fichier téléchargé pour installer PuTTY, puis lancez l’application depuis votre menu Démarrer. Tapez l’adresse IP du serveur dans le champ Nom d’hôte puis cliquez sur Ouvrir. Il est possible qu’un avertissement sur le certificat vous soit affiché, puisque c’est votre première connexion à ce serveur. Vous pouvez sans risque cliquer sur Oui pour faire confiance à ce serveur à l’avenir.

../../../_images/setup-putty-alert.png

Alerte de sécurité de PuTTY à la connexion à un nouveau serveur#

Vous êtes maintenant connecté à votre serveur et vous devriez voir une fenêtre de terminal. Commencez par vous identifier sur votre serveur avec l’utilisateur « root » et le mot de passe fourni par votre hébergeur.

../../../_images/setup-putty-connect.png

Demande de mot de passe à la première connexion à votre VPS#

Il vous est fortement conseillé de modifier sans attendre le mot de passe de « root » et de le garder dans un endroit sûr. Vous pouvez copier et coller chacune des commandes suivantes en les sélectionnant dans votre navigateur, en faisant la combinaison de touches Ctrl-C puis en revenant sur le fenêtre PuTTY pour y faire un clic-droit. Le texte se collera à la position actuelle du curseur

passwd root

Tapez et confirmez un nouveau mot de passe (de préférence long et généré aléatoirement). Ensuite, nous allons créer un nouvel utilisateur avec la commande suivante, en remplaçant <username> par le 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>

Maintenant, toujours en tant que « root », nous allons mettre à jour le système directement depuis le dépôt logiciel Ubuntu

apt update
apt upgrade

Le système affiche une liste de paquets prêts à être mis à jour. Appuyez sur O et Entrée pour installer les paquets. Nous allons maintenant installer un pare-feu (et quelques autres paquets qui nous seront utiles plus tard), ajouter de la mémoire virtuelle et redémarrer le serveur pour que soit appliquée toute mise à jour nécessaire du noyau. Puis nous nous connecterons en tant que nouvel utilisateur à notre environnement fraîchement sécurisé

apt install ufw python virtualenv git unzip pv

(appuyez sur O et Entrée pour confirmer)

ufw allow ssh/tcp
ufw limit ssh/tcp
ufw allow 9999/tcp
ufw logging on
ufw enable

(appuyez sur O et Entrée pour confirmer)

fallocate -l 4G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
nano /etc/fstab

Ajoutez la ligne suivante à la fin du fichier (appuyez sur Tabulation pour séparer chaque mot ou nombre), puis faites la combinaison de touches Ctrl-X pour fermer l’éditeur de texte, puis appuyez sur O et Entrée pour enregistrer le fichier.

/swapfile none swap sw 0 0

Enfin, pour empêcher les attaques par force brute sur les mots de passe, nous allons installer fail2ban et désactiver le login root par SSH. Ces étapes sont facultatives, mais hautement recommandées. Commencez par fail2ban :

apt install fail2ban

Créez un nouveau fichier de configuration :

nano /etc/fail2ban/jail.local

Collez-y la configuration suivante :

[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 3

Puis faites la combinaison de touches Ctrl-X pour fermer l’éditeur de texte, puis O et Entrée pour enregistrer le fichier. Redémarrez et activez le service fail2ban :

systemctl restart fail2ban
systemctl enable fail2ban

Ensuite, ouvrez le fichier de configuration SSH pour désactiver le login root par SSH

nano /etc/ssh/sshd_config

Repérez la ligne PermitRootLogin yes et changez-la en PermitRootLogin no. Juste en-dessous, ajoutez une ligne AllowUsers <username>, en remplaçant <username> avec le nom d’utilisateur que vous avez choisi plus haut. Puis faites la combinaison de touches Ctrl-X pour fermer l’éditeur de texte, puis Y et Entrée pour enregistrer le fichier.

Puis redémarrez le serveur :

reboot now

PuTTY se déconnectera au redémarrage du serveur.

Note

While this setup includes basic steps to protect your server against attacks, much more can be done. In particular, authenticating with a public key instead of a username/password combination. Enabling automatic security updates is advisable. More tips are available here.

Envoi de la caution#

Une adresse Dash avec une unique transaction non dépensée (UTXO) d’exactement 1000 dashs est obligatoire pour faire tourner un masternode. Une fois que cette transaction a été effectuée, différentes clés doivent en être extraites. Elles seront utilisées plus tard dans un fichier de configuration et dans la transaction d’enregistrement servant de preuve pour écrire la configuration sur la blockchain, et pour que le masternode soit inclus dans la liste déterministe.

Un masternode peut être enregistré depuis un portefeuille matériel, ou bien depuis le portefeuille logiciel officiel Dash Core, ou bien depuis un portefeuille logiciel Dash Electrum — mais un portefeuille matériel est hautement recommandé pour améliorer la sécurité et vous protéger contre le piratage. Ce guide va décrire les étapes pour les portefeuilles matériels tout comme pour le logiciel Dash Core.

Note

Les détails pour enregistrer un masternode avec le logiciel Dash Electrum peuvent être trouvés dans la page des fonctions avancées de Dash Electrum.

Option 1 : Envoi depuis un portefeuille matériel#

Configurez votre Trezor en utilisant le portefeuille Trezor à l’adresse https://wallet.trezor.io/ et envoyez-lui une transaction d’essai pour vérifier que tout fonctionne bien. Pour obtenir de l’aide sur cette étape, voir ce guide. Vous pouvez aussi (avec prudence !) ajouter une phrase de passe à votre Trezor pour protéger encore mieux votre caution. Créez un nouveau compte dans votre portefeuille Trezor en cliquant sur Ajouter un compte. Puis cliquez sur l’onglet Recevoir et envoyez exactement 1000 dashs à l’adresse affichée. Si vous mettez en place plusieurs masternodes, envoyez 1000 dashs aux adresses consécutives du même compte. Vous devriez voir la transaction arriver dès les premières confirmations, en général sous quelques minutes.

../../../_images/setup-collateral-trezor.png

Onglet Recevoir du portefeuille Trezor, montrant une caution de 1000 dashs bien reçue#

Une fois la transaction apparue, cliquez sur le QR-code à droite pour afficher la transaction dans la blockchain. Gardez cette fenêtre ouverte le temps des étapes suivantes, car nous aurons bientôt à vérifier que les 15 confirmations ont bien eu lieu, comme dans la capture d’écran suivante.

../../../_images/setup-collateral-blocks.png

Explorateur de blocs de Trezor montrant 15 confirmations pour le transfert de la caution#

Pendant que nous attendons les 15 confirmations, téléchargez la plus récente version de DashMasternodeTool (DMT) depuis la page GitHub ici. Décompressez le fichier et lancez l’exécutable. La fenêtre suivante s’affiche.

../../../_images/setup-collateral-dmt-start.png

Écran de démarrage de DashMasternodeTool#

Cliquez sur le troisième bouton depuis la gauche, Vérifier la connexion au réseau Dash, dans le coin supérieur gauche de la fenêtre principale, pour vérifier que la connexion fonctionne. Puis connectez votre appareil Trezor et cliquez sur Tester la connexion au portefeuille matériel pour vérifier que la connexion au Trezor fonctionne.

../../../_images/setup-collateral-connection.png
../../../_images/setup-collateral-hardware.png

Confirmations de connexion réussie dans DashMasternodeTool#

Nous allons maintenant nous servir de DMT pour saisir quelques informations de base sur le masternode, et extraire l’identifiant de transaction. Suivez les étapes ci-dessous, telles que montrées dans cette capture d’écran :

../../../_images/setup-collateral-dmt-steps.png

Étapes de configuration de DashMasternodeTool#

  1. Cliquez sur le bouton Nouveau.

  2. Tapez un nom pour votre masternode. Le nom d’hôte que vous avez indiqué précédemment pour votre VPS est un bon choix.

  3. Tapez l’adresse IP de votre masternode. Elle vous a été donnée par l’hébergeur de VPS, à la mise en place de votre serveur. Puis entrez le numéro du port TCP, qui devrait être 9999.

  4. Cliquez sur Locate collateral (Trouver la caution) pour afficher les transactions de caution inutilisées qui sont disponibles sur le portefeuille matériel. Choisissez l’adresse à laquelle vous avez envoyé les 1000 dashs puis cliquer sur Apply (Appliquer). Les champs Collateral address (Adresse de caution), index et Collateral TX hash (Empreinte de la transaction de caution) devraient être remplis automatiquement.

../../../_images/setup-collateral-dmt-ready.png

DashMasternodeTool avec une configuration de masternode#

Laissez DMT ouvert puis passez à l’étape suivante : installer Dash Core sur votre VPS.

Option 2 : Envoi depuis le portefeuille logiciel Dash Core#

Lancez le portefeuille logiciel Dash Core et attendez qu’il se synchronise avec le réseau. Il devrait ressembler à ça, une fois prêt :

../../../_images/setup-collateral-dashcore.png

Portefeuille logiciel Dash Core entièrement synchronisé#

Click Window > Console to open the console. Type the following command into the console to generate a new Dash address for the collateral:

getnewaddress
yiFfzbwiN9oneftd7cEfr3kQLRwQ4kp7ue

Prenez bonne note de l’adresse de la caution, car vous en aurez besoin plus tard. La prochaine étape est de sécuriser votre portefeuille (si vous ne l’avez pas déjà fait). Tout d’abord, chiffrez votre portefeuille en allant sur le menu Réglages > Chiffrer le portefeuille. Il vous est conseillé d’utiliser un mot de passe fort, nouveau, que vous n’avez jamais utilisé ailleurs. Prenez note de votre mot de passe et conservez-le dans un endroit sûr, sinon votre portefeuille vous sera inaccessible de manière définitive et vous perdrez tout accès à vos fonds. Ensuite, sauvegardez le fichier de votre portefeuille en allant dans le menu Fichier > Sauvegarder le portefeuille. Enregistrez le fichier dans un endroit sûr et physiquement séparé de votre ordinateur, car il sera le seul moyen d’accéder à vos fonds si quoi que ce soit arrive à votre ordinateur. Pour en savoir plus sur ces étapes, voir ici.

À présent, envoyez exactement 1000 dashs, en une seule transaction, à l’adresse que vous avez générée à l’étape précédente. Cette somme peut être envoyée depuis un autre portefeuille, ou depuis des fonds déjà présents dans ce portefeuille-ci. Une fois la transaction achevée, affichez la transaction dans un explorateur de blocs en recherchant l’adresse. Vous aurez besoin de 15 confirmations avant de pouvoir enregistrer le masternode, mais vous pouvez passer sans attendre à l’étape suivante : générer la clé d’opérateur de votre masternode.

../../../_images/setup-collateral-blocks.png

Explorateur de blocs de Trezor montrant 15 confirmations pour le transfert de la caution#

Installation de Dash Core sur votre VPS#

Dash Core est le logiciel formant le socle, à la fois, du portefeuille logiciel Dash Core à interface graphique et des masternodes Dash. Lorsqu’il tourne sans interface graphique, il fonctionne en tant que daemon sur votre VPS (dashd) et il peut être contrôlé par une ligne de commande (dash-cli).

Lancez une nouvelle fois PuTTY ou une console de terminal, et connectez-vous à votre VPS avec le nom d’utilisateur et le mot de passe que vous venez de créer pour votre nouvel utilisateur non-root. Les méthodes suivantes sont disponibles pour installer un masternode Dash :

Installation manuelle#

Pour télécharger et installer manuellement les composants de votre masternode Dash, allez sur la page GitHub des publications et copiez le lien vers la version x86_64-linux-gnu la plus récente. Revenez à votre fenêtre de terminal et saisissez la commande suivante, en y collant l’adresse de la plus récente version de Dash Core par un clic-droit, ou par la combinaison de touches Ctrl-V :

cd /tmp
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 et copiez les fichiers nécessaires dans le répertoire :

mkdir ~/.dashcore
tar xfv dashcore-18.2.2-x86_64-linux-gnu.tar.gz
cp -f dashcore-18.2.2/bin/dashd ~/.dashcore/
cp -f dashcore-18.2.2/bin/dash-cli ~/.dashcore/

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
#----
#masternodeblsprivkey=
externalip=XXX.XXX.XXX.XXX
#----

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

  • externalip : il s’agit de l’adresse IP de votre VPS

Laissez le champ masternodeblsprivkey commenté pour l’instant. Le résultat devrait ressembler à ça :

../../../_images/setup-manual-conf.png

Saisie de données clés dans le fichier « dash.conf » sur le VPS du masternode#

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

Un message Démarrage du serveur Dash Core vous sera affiché. Nous allons maintenant installer Sentinel, un logiciel de surveillance qui renseigne le réseau sur le bon fonctionnement de votre nœud

cd ~/.dashcore
git clone https://github.com/dashpay/sentinel.git
cd sentinel
virtualenv venv
venv/bin/pip install -r requirements.txt
venv/bin/python bin/sentinel.py

Un message vous sera affiché, disant dashd non synchronisé avec le réseau ! En attente de la synchronisation complète avant de lancer Sentinel. Ajoutez dashd et Sentinel au fichier crontab pour vous assurer qu’il soit lancé chaque minute pour surveiller votre masternode

crontab -e

Choisissez Nano comme éditeur de texte puis saisissez les lignes suivantes à la fin du fichier

* * * * * cd ~/.dashcore/sentinel && ./venv/bin/python bin/sentinel.py 2>&1 >> sentinel-cron.log
* * * * * pidof dashd || ~/.dashcore/dashd

Appuyez sur Entrée pour vous assurer qu’il y ait une ligne vide à la fin du fichier, puis faites la combinaison de touches Ctrl-X pour fermer l’éditeur de texte et O et Entrée pour enregistrer le fichier. Nous devons maintenant attendre les 15 confirmations de la transaction de caution, ainsi que la fin de la synchronisation du masternode avec la blockchain. Vous pouvez vous servir des commandes suivantes pour suivre la progression

~/.dashcore/dash-cli mnsync status

Quand la synchronisation est terminée, vous devriez voir le message suivant

{
  "AssetID": 999,
  "AssetName": "MASTERNODE_SYNC_FINISHED",
  "AssetStartTime": 1558596597,
  "Attempt": 0,
  "IsBlockchainSynced": true,
  "IsSynced": true,
  "IsFailed": false
}

Passez à l’étape suivante pour composer la transaction ProTx requise pour activer votre masternode.

Enregistrer votre masternode#

La DIP003 a inauguré plusieurs changements sur la façon de mettre en place et d’opérer un masternode. Ces changements et les trois clés requises pour les différents rôles de masternode sont décrits brièvement dans la section Nouveautés des masternodes DIP003 de la présente documentation.

Option 1 : Enregistrement depuis un portefeuille matériel#

Revenez à DashMasternodeTool et assurez-vous que tous les champs de l’étape précédente sont encore remplis correctement. Cliquez sur Generate new (Générer nouveau) pour les trois clés privées requises pour un masternode déterministe DIP003 :

  • Clé privée du propriétaire

  • Clé privée de l’opérateur

  • Clé privée de vote

../../../_images/setup-dmt-full.png

DashMasternodeTool prêt à enregistrer un nouveau masternode#

Puis cliquez sur Register masternode (Enregistrer le masternode). Vous pouvez, facultativement, indiquer une Payout address (Adresse de paiement) différente et/ou une Operator reward (Récompense d’opérateur) différente, puis cliquez sur Continue. Choisissez Remote Dash RPC Node (automatic method) (Nœud Dash RPC distant (méthode automatique)). (Voir ici une documentation sur l’utilisation de votre propre nœud RPC local.) Confirmez les deux messages suivants :

../../../_images/setup-dmt-send.png
../../../_images/setup-dmt-sent.png

Dialogues de confirmation de DashMasternodeTool pour enregistrer un masternode#

La clé privée BLS doit être saisie dans le fichier dash.conf sur le masternode. Cela permet au masternode de surveiller sur la blockchain les transactions Pro*Tx correspondantes, et cela le démarrera en tant que masternode quand la transaction signée ProRegTx sera diffusée par le propriétaire, comme nous venons de le faire ci-dessus. Connectez-vous à votre masternode avec ssh ou PuTTY, puis modifiez le fichier de configuration sur votre masternode, comme suit :

nano ~/.dashcore/dash.conf

L’éditeur s’affiche avec la configuration existante du masternode. Ajoutez ou décommentez cette ligne dans le fichier, en remplaçant la clé avec votre clé privée BLS générée plus tôt :

masternodeblsprivkey=24c1fa3c22c6ea6b1cc68a37be18acb51042b19465fe0a26301c8717bf939805

Appuyez sur Entrée pour vous assurer qu’il y ait une ligne vide à la fin du fichier, puis faites la combinaison de touches Ctrl-X pour fermer l’éditeur de texte et O et Entrée pour enregistrer le fichier. Veuillez noter qu’indiquer une masternodeblsprivkey active le mode masternode, ce qui forcera automatiquement les variables txindex=1, peerbloomfilters=1 et prune=0 nécessaires pour fournir le service de masternode. Nous devons maintenant redémarrer le masternode pour que ce changement prenne effet. Saisissez les commandes suivantes en laissant passer quelques secondes après chacune, pour laisser à Dash Core le temps de se fermer :

~/.dashcore/dash-cli stop
sleep 15
~/.dashcore/dashd

Arrivé à cette étape, vous pouvez surveiller votre masternode avec la commande ~/.dashcore/dash-cli masternode status, ou bien en utilisant la fonction Get status (Voir l’état) dans DMT. Le résultat final devrait ressembler à ceci :

../../../_images/setup-dash-cli-start.png

Message d’état de dash-cli pour un masternode enregistré avec succès#

À cette étape, vous pouvez vous déconnecter de votre serveur en tapant exit. Félicitations ! Votre masternode est désormais fonctionnel.

Option 2 : Enregistrement depuis le portefeuille logiciel Dash Core#

Identifier la transaction de financement#

If you used an address in Dash Core wallet for your collateral transaction, you now need to find the txid of the transaction. Click Window > Console and enter the following command:

masternode outputs

Cela devrait vous renvoyer une chaîne de caractères analogue à celle-ci

{
"16347a28f4e5edf39f4dceac60e2327931a25fdee1fb4b94b63eeacf0d5879e3" : "1",
}

La première chaîne, longue, est votre collateralHash, et le nombre à la fin est le collateralIndex.

Générer une paire de clés BLS#

Une paire de clés BLS publique/privée est obligatoire pour opérer un masternode. La clé privée est spécifiée sur le masternode lui-même, et lui permet d’être inclus dans la liste déterministe des masternodes une fois qu’une transaction d’enregistrement avec la clé publique correspondante a été créée.

If you are using a hosting service, they may provide you with their public key, and you can skip this step. If you are hosting your own masternode or have agreed to provide your host with the BLS private key, generate a BLS public/private keypair in Dash Core by clicking Tools > Console and entering the following command:

bls generate

{
  "secret": "395555d67d884364f9e37e7e1b29536519b74af2e5ff7b62122e62c2fffab35e",
  "public": "99f20ed1538e28259ff80044982372519a2e6e4cdedb01c96f8f22e755b2b3124fbeebdf6de3587189cf44b3c6e7670e"
}

Ces clés ne sont PAS stockées par le portefeuille et doivent être conservées dans un lieu sûr, à l’image de la valeur que retournait, par le passé, la commande masternode genkey.

Ajouter la clé privée à la configuration de votre masternode#

La clé publique sera utilisée lors des étapes suivantes. La clé privée doit être saisie dans le fichier dash.conf sur le masternode. Cela permet au masternode de surveiller sur la blockchain les transactions Pro*Tx correspondantes, et cela le démarrera en tant que masternode quand la transaction signée ProRegTx sera diffusée par le propriétaire (dernière étape ci-dessous). Connectez-vous à votre masternode avec ssh ou PuTTY, puis modifiez le fichier de configuration sur votre masternode, comme suit :

nano ~/.dashcore/dash.conf

L’éditeur s’affiche avec la configuration existante du masternode. Ajoutez ou décommentez cette ligne dans le fichier, en remplaçant la clé avec votre clé privée BLS générée plus tôt :

masternodeblsprivkey=395555d67d884364f9e37e7e1b29536519b74af2e5ff7b62122e62c2fffab35e

Appuyez sur Entrée pour vous assurer qu’il y ait une ligne vide à la fin du fichier, puis faites la combinaison de touches Ctrl-X pour fermer l’éditeur de texte et O et Entrée pour enregistrer le fichier. Veuillez noter qu’indiquer une masternodeblsprivkey active le mode masternode, ce qui forcera automatiquement les variables txindex=1, peerbloomfilters=1 et prune=0 nécessaires pour fournir le service de masternode. Nous devons maintenant redémarrer le masternode pour que ce changement prenne effet. Saisissez les commandes suivantes en laissant passer quelques secondes après chacune, pour laisser à Dash Core le temps de se fermer :

~/.dashcore/dash-cli stop
sleep 15
~/.dashcore/dashd

Nous allons maintenant préparer la transaction qui sera utilisée pour enregistrer le masternode sur le réseau.

Préparer une transaction ProRegTx#

Une paire de clés BLS pour l’opérateur a déjà été générée ci-dessus, et la clé privée a été entrée sur le masternode. La clé publique est utilisée dans cette transaction en tant que operatorPubKey.

D’abord, nous devons obtenir du portefeuille une adresse neuve et inutilisée, qui servira comme adresse de clé du propriétaire (ownerKeyAddr). Elle est différente de l’adresse de la caution de 1000 dashs. Générez une nouvelle adresse comme suit :

getnewaddress

yfgxFhqrdDG15ZWKJAN6dQvn6dZdgBPAip

Cette adresse peut aussi être utilisée comme adresse de clé de vote (votingKeyAddr). Alternativement, vous pouvez indiquer une adresse fournie par votre délégataire de vote, ou bien simplement générer une nouvelle adresse de clé de vote, comme suit :

getnewaddress

yfRaZN8c3Erpqj9iKnmQ9QDBeUuRhWV3Mg

Ensuite, générez une seconde adresse ou choisissez une adresse déjà existante, qui servira au propriétaire pour recevoir les paiements du propriétaire du masternode (payoutAddress). Il est également possible d’utiliser une adresse externe au portefeuille :

getnewaddress

yjZVt49WsQd6XSrPVAUGXtJccxviH9ZQpN

Vous pouvez aussi, facultativement, générer et alimenter une troisième adresse comme source des frais de transaction (feeSourceAddress). Si vous avez choisi une adresse de paiement externe, vous devez indiquer une adresse source pour les frais.

L’une de ces deux adresses, de paiement ou de frais, doit avoir un solde suffisant pour régler les frais de transaction, faute de quoi la transaction register_prepare échouera.

Les clés privées des adresses du propriétaire et des frais doivent être accessibles par le portefeuille qui soumettra la transaction au réseau. Si votre portefeuille est protégé par mot de passe, il doit à présent être déverrouillé pour exécuter les commandes suivantes. Déverrouillez votre portefeuille pendant 5 minutes :

walletpassphrase yourSecretPassword 300

Nous allons maintenant préparer une transaction spéciale ProRegTx non signée, en utilisant la commande protx register_prepare. Cette commande a la syntaxe suivante :

protx register_prepare collateralHash collateralIndex ipAndPort ownerKeyAddr
  operatorPubKey votingKeyAddr operatorReward payoutAddress (feeSourceAddress)

Ouvrez un éditeur de texte, tel que Notepad, pour préparer cette commande. Remplacez chaque argument de la commande comme suit :

  • collateralHash : l’identifiant de la transaction (txid) de la caution de 1000 dashs

  • collateralIndex : l’index de sortie de la transaction de la caution de 1000 dashs

  • ipAndPort : l’adresse IP et le port du masternode, suivant le format x.x.x.x:yyyy

  • ownerKeyAddr : l’adresse Dash nouvellement générée ci-dessus, pour l’adresse du propriétaire et de vote

  • operatorPubKey : la clé publique BLS générée ci-dessus (ou fournie par votre service d’hébergement de masternode)

  • votingKeyAddr : l’adresse Dash nouvellement générée ci-dessus, ou bien l’adresse d’un délégué, utilisée pour le vote des propositions budgétaires

  • operatorReward : le pourcentage de la récompense de bloc à allouer à l’opérateur en tant que paiement

  • payoutAddress : une adresse Dash nouvelle ou déjà existante, où le propriétaire recevra les paiements de masternode

  • feeSourceAddress : une adresse (facultative) d’où seront prélevés les frais de la transaction ProTx. Si elle n’est pas spécifiée, c’est l’adresse payoutAddress qui sera utilisée.

Veuillez noter qu’il revient à l’opérateur de spécifier sa propre adresse de paiement avec une transaction update_service distincte, dans le cas où vous définissez une operatorReward différente de zéro. Le propriétaire de la caution du masternode ne spécifie pas lui-même l’adresse de paiement de l’opérateur.

Exemple (effacez les sauts de ligne si vous le copiez) :

protx register_prepare
  16347a28f4e5edf39f4dceac60e2327931a25fdee1fb4b94b63eeacf0d5879e3
  1
  45.76.230.239:19999
  yfgxFhqrdDG15ZWKJAN6dQvn6dZdgBPAip
  99f20ed1538e28259ff80044982372519a2e6e4cdedb01c96f8f22e755b2b3124fbeebdf6de3587189cf44b3c6e7670e
  yfRaZN8c3Erpqj9iKnmQ9QDBeUuRhWV3Mg
  0
  yjZVt49WsQd6XSrPVAUGXtJccxviH9ZQpN
  yR83WsikBaBaNusTnHZf28kAcL8oVmp1TE

Sortie :

{
  "tx": "030001000175c9d23c2710798ef0788e6a4d609460586a20e91a15f2097f56fc6e007c4f8e0000000000feffffff01a1949800000000001976a91434b09363474b14d02739a327fe76e6ea12deecad88ac00000000d1010000000000e379580dcfea3eb6944bfbe1de5fa2317932e260acce4d9ff3ede5f4287a34160100000000000000000000000000ffff2d4ce6ef4e1fd47babdb9092489c82426623299dde76b9c72d9799f20ed1538e28259ff80044982372519a2e6e4cdedb01c96f8f22e755b2b3124fbeebdf6de3587189cf44b3c6e7670ed1935246865dce1accce6c8691c8466bd67ebf1200001976a914fef33f56f709ba6b08d073932f925afedaa3700488acfdb281e134504145b5f8c7bd7b47fd241f3b7ea1f97ebf382249f601a0187f5300",
  "collateralAddress": "yjSPYvgUiAQ9AFj5tKFA8thFLoLBUxQERb",
  "signMessage": "yjZVt49WsQd6XSrPVAUGXtJccxviH9ZQpN|0|yfgxFhqrdDG15ZWKJAN6dQvn6dZdgBPAip|yfRaZN8c3Erpqj9iKnmQ9QDBeUuRhWV3Mg|ad5f82257bd00a5a1cb5da1a44a6eb8899cf096d3748d68b8ea6d6b10046a28e"
}

Ensuite, nous allons utiliser les champs collateralAddress et signMessage pour signer la transaction, et la sortie du champ tx pour soumettre la transaction au réseau.

Signer la transaction ProRegTx#

Nous allons maintenant signer le contenu du champ signMessage au moyen de la clé privée de l’adresse de la caution telle que spécifiée dans collateralAddress. Veuillez noter qu’aucune connexion à Internet n’est obligatoire pour cette étape, ce qui signifie que le portefeuille peut être déconnecté de l’Internet (en « chambre froide ») pour signer le message. Dans cet exemple nous allons à nouveau utiliser le portefeuille logiciel Dash Core, mais il est également possible d’utiliser la fonction de signature d’un portefeuille matériel. La commande a la syntaxe suivante :

signmessage collateralAddress signMessage

Exemple :

signmessage yjSPYvgUiAQ9AFj5tKFA8thFLoLBUxQERb yjZVt49WsQd6XSrPVAUGXtJccxviH9ZQpN|0|yfgxFhqrdDG15ZWKJAN6dQvn6dZdgBPAip|yfRaZN8c3Erpqj9iKnmQ9QDBeUuRhWV3Mg|ad5f82257bd00a5a1cb5da1a44a6eb8899cf096d3748d68b8ea6d6b10046a28e

Sortie :

II8JvEBMj6I3Ws8wqxh0bXVds6Ny+7h5HAQhqmd5r/0lWBCpsxMJHJT3KBcZ23oUZtsa6gjgISf+a8GzJg1BfEg=

Soumettre le message signé#

Nous allons maintenant créer la transaction spéciale ProRegTx pour enregistrer le masternode sur la blockchain. Cette commande doit être envoyée depuis un portefeuille Dash Core contenant des fonds à l’adresse feeSourceAddress ou à l’adresse payoutAddress, car des frais de transaction standard seront prélevés. La commande a la syntaxe suivante :

protx register_submit tx sig

Où :

  • tx : la transaction sérialisée précédemment renvoyée dans le champ de sortie tx par la commande protx register_prepare

  • sig : le message signé avec la clé de la caution par la commande signmessage

Exemple :

protx register_submit 030001000175c9d23c2710798ef0788e6a4d609460586a20e91a15f2097f56fc6e007c4f8e0000000000feffffff01a1949800000000001976a91434b09363474b14d02739a327fe76e6ea12deecad88ac00000000d1010000000000e379580dcfea3eb6944bfbe1de5fa2317932e260acce4d9ff3ede5f4287a34160100000000000000000000000000ffff2d4ce6ef4e1fd47babdb9092489c82426623299dde76b9c72d9799f20ed1538e28259ff80044982372519a2e6e4cdedb01c96f8f22e755b2b3124fbeebdf6de3587189cf44b3c6e7670ed1935246865dce1accce6c8691c8466bd67ebf1200001976a914fef33f56f709ba6b08d073932f925afedaa3700488acfdb281e134504145b5f8c7bd7b47fd241f3b7ea1f97ebf382249f601a0187f5300 II8JvEBMj6I3Ws8wqxh0bXVds6Ny+7h5HAQhqmd5r/0lWBCpsxMJHJT3KBcZ23oUZtsa6gjgISf+a8GzJg1BfEg=

Sortie :

aba8c22f8992d78fd4ff0c94cb19a5c30e62e7587ee43d5285296a4e6e5af062

Votre masternode est à présent enregistré et il apparaîtra dans la liste des masternodes déterministes dès que la transaction sera minée dans un bloc. Vous pouvez afficher cette liste dans l’onglet Masternodes > Masternodes DIP3 du portefeuille logiciel Dash Core, ou dans la console en utilisant la commande protx list valid, où l’identifiant (txid) de la transaction finale protx register_submit identifie votre masternode.

Arrivé à cette étape, vous pouvez revenir à votre fenêtre de terminal et surveiller votre masternode avec la commande ~/.dashcore/dash-cli masternode status, ou bien en utilisant la fonction Get status (Voir l’état) dans DMT.

À cette étape, vous pouvez vous déconnecter de votre serveur en tapant exit. Félicitations ! Votre masternode est désormais fonctionnel.

Option 3 : Enregistrement depuis le portefeuille logiciel Dash Electrum#

Dash Electrum est compatible avec l’enregistrement et la gestion de masternodes. Des détails peuvent être trouvés sur la page des fonctionnalités avancées de Dash Electrum. Si combinée avec les fonctionnalités multisignature de Dash Electrum, la caution de masternode peut être stockée dans un portefeuille multisignature pour une sécurité encore plus grande.

Avertissement

Always exercise caution when using multisig accounts and verify that each mnemonic is backed up appropriately. See this page for the Dash Electrum documentation demonstrating how to configure a masternode using a multisig collateral.