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 :

Les commandes indiquées ci-dessous peuvent être saisies dans la console Dash Core ouverte par le menu Outils > Console de débogage, mais le même résultat peut être obtenu sur un masternode en entrant les mêmes commandes, chacune précédée par ``~/.dashcore/dash-cli ``.

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.

We will use Vultr hosting as an example of a VPS, although DigitalOcean, Amazon EC2, Google Cloud, Choopa and OVH are also popular choices. First create an account and add credit. Then go to the Servers menu item on the left and click + to add a new server. Select a location for your new server on the following screen:

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

Page Vultr de choix d’emplacement de serveur

Select Ubuntu 20.04 x64 as the server type. We use this LTS release of Ubuntu instead of the latest version because LTS releases are supported with security updates for 5 years, instead of the usual 9 months.

../_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.

Ce guide comprend les étapes de base pour protéger votre serveur des attaques, mais on peut faire beaucoup plus. En particulier, on peut s’authentifier avec une clé publique plutôt qu’avec une combinaison nom d’utilisateur/mot de passe et activer les mises à jour automatiques de sécurité. Plus d’astuces sont disponibles ici. Cependant, puisque le masternode ne stocke pas les clés de fonds Dash, ces étapes sont considérées comme en dehors de la portée de ce guide.

Envoi de la caution

A Dash address with a single unspent transaction output (UTXO) of exactly 1000 DASH is required to operate a masternode. Once it has been sent, various keys regarding the transaction must be extracted for later entry in a configuration file and registration transaction as proof to write the configuration to the blockchain so the masternode can be included in the deterministic list.

A masternode can be registered from a hardware wallet, the official Dash Core wallet, or a Dash Electrum wallet, although a hardware wallet is highly recommended to enhance security and protect yourself against hacking. This guide will describe the steps for both hardware wallets and Dash Core.

Note

Details of registering a masternode with Dash Electrum can be found on the Electrum - Advanced Functions page.

Option 1 : Envoi depuis un portefeuille matériel

Set up your Trezor using the Trezor wallet at https://wallet.trezor.io/ and send a test transaction to verify that it is working properly. For help on this, see this guide - you may also choose to (carefully!) add a passphrase to your Trezor to further protect your collateral. Create a new account in your Trezor wallet by clicking Add account. Then click the Receive tab and send exactly 1000 DASH to the address displayed. If you are setting up multiple masternodes, send 1000 DASH to consecutive addresses within the same new account. You should see the transaction as soon as the first confirmation arrives, usually within a few 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é

Cliquez sur Outils > Console de débogage pour ouvrir la console. Tapez la commande suivante dans la console pour générer une adresse neuve pour la caution

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.

Now send exactly 1000 DASH in a single transaction to the new address you generated in the previous step. This may be sent from another wallet, or from funds already held in your current wallet. Once the transaction is complete, view the transaction in a blockchain explorer by searching for the address. You will need 15 confirmations before you can register the masternode, but you can continue with the next step at this point already: generating your masternode operator key.

../_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/v0.16.1.1/dashcore-0.16.1.1-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/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 et copiez les fichiers nécessaires dans le répertoire :

mkdir ~/.dashcore
tar xfv dashcore-0.16.1.1-x86_64-linux-gnu.tar.gz
cp -f dashcore-0.16.1/bin/dashd ~/.dashcore/
cp -f dashcore-0.16.1/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

Si vous avez utilisé une adresse de votre portefeuille logiciel Dash Core pour votre transaction de caution, vous devez à présent trouver l’identifiant de la transaction. Cliquez sur Outils > Console de débogage et tapez la commande suivante

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.

Si vous utilisez un service d’hébergement de masternode, il vous fournira sa clé publique, et vous pouvez sauter cette étape. Si vous hébergez vous-même votre masternode ou avez convenu avec votre hébergeur que vous lui fournirez votre clé privée BLS, générez une paire de clés BLS publique et privée dans le portefeuille logiciel Dash Core en choisissant le menu Outils > Console de débogage et en saisissant la commande suivante :

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: Registering from Dash Electrum wallet

Dash Electrum supports registering and managing masternodes. Details can be found on the Electrum - Advanced Functions page. If combined with Electrum’s multisig features the masternode collateral can be stored in a multisig wallet for increased security flexibility.

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.