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

This guide assumes you are setting up a single mainnet masternode for the first time. If you are updating a masternode, see here instead. You will need:

  • 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 0.13.0 and later implement DIP003, which introduces several changes to how a Dash masternode is set up and operated. While this network upgrade was completed in early 2019, a list of available documentation appears below:

This documentation describes the commands as if they were entered in the Dash Core GUI by opening the console from Tools > Debug 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 18.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.

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 or the official Dash Core 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.

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

We will now use DMT to enter some basic information about the masternode and extract the transaction ID. Carry out the following sequence of steps as shown in this screenshot:

../_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. Enter the IP address of your masternode. This was given to you by the VPS provider when you set up the server. Then enter the TCP port number. This should be 9999.
  4. Click Locate collateral to view unused collateral funding transactions available on the connected hardware wallet. Select the address to which you sent 1000 Dash and click Apply. The Collateral address, path, Collateral TX hash and index fields should be filled automatically.
../_images/setup-collateral-dmt-ready.png

Dash Masternode Tool with masternode configuration

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 Tools > Debug console to open the console. Type the following command into the console to generate a new Dash address for the collateral:

getnewaddress
yiFfzbwiN9oneftd7cEfr3kQLRwQ4kp7ue

Take note of the collateral address, since we will need it later. The next step is to secure your wallet (if you have not already done so). First, encrypt the wallet by selecting Settings > Encrypt wallet. You should use a strong, new password that you have never used somewhere else. Take note of your password and store it somewhere safe or you will be permanently locked out of your wallet and lose access to your funds. Next, back up your wallet file by selecting File > Backup Wallet. Save the file to a secure location physically separate to your computer, since this will be the only way you can access our funds if anything happens to your computer. For more details on these steps, see here.

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. Il existe deux manières d’installer Dash Core sur votre VPS : une option automatisée qui utilise un utilitaire nommé Dashman, créé par Moocowmoo, membre de l’équipe de développement, et une option plus compliquée qui vous permettra de comprendre toutes les étapes clés de la préparation d’un masternode.

Option 1 : Installation automatisée avec Dashman

Pour installer Dash Core avec Dashman, saisissez les commandes suivantes après vous être connecté

cd ~
git clone https://github.com/moocowmoo/dashman
~/dashman/dashman install

(appuyez sur O et Entrée pour confirmer)

Dashman téléchargera la version la plus récente de Dash Core pour votre système d’exploitation, ainsi qu’une amorce de la blockchain pour accélérer le processus de démarrage. Ensuite, téléchargez et installez Sentinel, qui est indispensable pour les masternodes de version 0.12.1 ou ultérieure :

~/dashman/dashman install sentinel

Votre système tourne maintenant en tant que nœud Dash standard, et s’occupe d’achever la synchronisation avec la blockchain. Comme Dashman ne redémarre pas automatiquement votre masternode en cas d’erreur système, ajoutez au fichier crontab une fonction de surveillance pour vous assurer qu’il soit vérifié toutes les minutes que votre masternode tourne toujours :

crontab -e

Choisissez Nano comme éditeur de texte puis saisissez la ligne suivante à la fin du fichier, après la ligne concernant Sentinel

* * * * * 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 appuyez sur O puis Entrée pour confirmer. Ensuite, vérifiez l’état de la synchronisation et patientez jusqu’à l’achèvement de la synchronisation de la blockchain et l’apparition de 15 confirmations pour la transaction de caution :

~/dashman/dashman status
../_images/setup-dashman-done.png

dashman status output showing masternode ready to be registered

Passez à l’étape suivante pour enregistrer votre masternode.

Option 2 : 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.14.0.0/dashcore-0.14.0.0-x86_64-linux-gnu.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 donnée par le fichier SHA256SUMS.asc

wget https://github.com/dashpay/dash/releases/download/v0.14.0.0/SHA256SUMS.asc
sha256sum dashcore-0.14.0.0-x86_64-linux-gnu.tar.gz
cat SHA256SUMS.asc

Vous pouvez aussi, de manière facultative mais conseillée, vérifier l’authenticité de votre téléchargement et son caractère officiel de logiciel de l’équipe Dash Core. Tous les logiciels Dash ont une signature GPG émise par Alexander Block (codablock) avec la clé 63A9 6B40 6102 E091, qu’on peut vérifier ici sur Keybase. Importez la clé, téléchargez le fichier ASC pour la version la plus récente de Dash et vérifiez la signature comme ceci :

curl https://keybase.io/codablock/pgp_keys.asc | gpg --import
gpg --verify SHA256SUMS.asc
../_images/setup-manual-gpg.png

Téléchargement de la clé PGP et vérification de l’exécutable signé

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.14.0.0-x86_64-linux-gnu.tar.gz
cp -f dashcore-0.14.0/bin/dashd ~/.dashcore/
cp -f dashcore-0.14.0/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
maxconnections=64
#----
#masternode=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

Leave the masternode and masternodeblsprivkey fields commented out for now. The result should look something like this:

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

DIP003 introduced several changes to how a masternode is set up and operated. These changes and the three keys required for the different masternode roles are described briefly under Nouveautés des masternodes DIP003 in this 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

Then click Register masternode. Optionally specify a different Payout address and/or Operator reward, then click Continue. Select Remote Dash RPC Node (automatic method). (See here for documentation on using your own local RPC node.) and confirm the following two messages:

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

Dialogues de confirmation de DashMasternodeTool pour enregistrer un masternode

The BLS private key must be entered in the dash.conf file on the masternode. This allows the masternode to watch the blockchain for relevant Pro*Tx transactions, and will cause it to start serving as a masternode when the signed ProRegTx is broadcast by the owner, as we just did above. Log in to your masternode using ssh or PuTTY and edit the configuration file as follows:

nano ~/.dashcore/dash.conf

The editor appears with the existing masternode configuration. Add or uncomment these lines in the file, replacing the key with your BLS private key generated above:

masternode=1
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. 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

At this point you can monitor your masternode using ~/dashman/dashman status, by entering ~/.dashcore/dash-cli masternode status or using the Get status function in DMT. The final result should appear as follows:

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

dash-cli masternode status output showing successfully registered masternode

À 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

This should return a string of characters similar to the following:

{
"16347a28f4e5edf39f4dceac60e2327931a25fdee1fb4b94b63eeacf0d5879e3" : "1",
}

The first long string is your collateralHash, while the last number is the collateralIndex.

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

A public/private BLS key pair is required to operate a masternode. The private key is specified on the masternode itself, and allows it to be included in the deterministic masternode list once a provider registration transaction with the corresponding public key has been created.

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 > Debug 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

The public key will be used in following steps. The private key must be entered in the dash.conf file on the masternode. This allows the masternode to watch the blockchain for relevant Pro*Tx transactions, and will cause it to start serving as a masternode when the signed ProRegTx is broadcast by the owner (final step below). Log in to your masternode using ssh or PuTTY and edit the configuration file as follows:

nano ~/.dashcore/dash.conf

The editor appears with the existing masternode configuration. Add or uncomment these lines in the file, replacing the key with your BLS private key generated above:

masternode=1
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. 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

We will now prepare the transaction used to register the masternode on the network.

Préparer une transaction ProRegTx

A pair of BLS keys for the operator were already generated above, and the private key was entered on the masternode. The public key is used in this transaction as the operatorPubKey.

First, we need to get a new, unused address from the wallet to serve as the owner key address (ownerKeyAddr). This is not the same as the collateral address holding 1000 Dash. Generate a new address as follows:

getnewaddress

yfgxFhqrdDG15ZWKJAN6dQvn6dZdgBPAip

This address can also be used as the voting key address (votingKeyAddr). Alternatively, you can specify an address provided to you by your chosen voting delegate, or simply generate a new voting key address as follows:

getnewaddress

yfRaZN8c3Erpqj9iKnmQ9QDBeUuRhWV3Mg

Then either generate or choose an existing address to receive the owner’s masternode payouts (payoutAddress). It is also possible to use an address external to the wallet:

getnewaddress

yjZVt49WsQd6XSrPVAUGXtJccxviH9ZQpN

You can also optionally generate and fund another address as the transaction fee source (feeSourceAddress). If you selected an external payout address, you must specify a fee source address. Either the payout address or fee source address must have enough balance to pay the transaction fee, or the final register_submit transaction will fail.

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é

We will now submit the ProRegTx special transaction to the blockchain to register the masternode. This command must be sent from a Dash Core wallet holding a balance on either the feeSourceAddress or payoutAddress, since a standard transaction fee is involved. The command takes the following syntax:

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

Your masternode is now registered and will appear on the Deterministic Masternode List after the transaction is mined to a block. You can view this list on the Masternodes -> DIP3 Masternodes tab of the Dash Core wallet, or in the console using the command protx list valid, where the txid of the final protx register_submit transaction identifies your masternode.

At this point you can go back to your terminal window and monitor your masternode using ~/dashman/dashman status, by entering ~/.dashcore/dash-cli masternode status or using the Get status function in DMT. The final result should appear as follows:

../_images/setup-dashman-started.png

dashman status output showing successfully registered masternode

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