Serveur ElectrumX#

ElectrumX est un serveur léger Electrum, écrit en Python et qui est compatible avec une série de cryptomonnaies, dont Dash. Il fournit les services d’arrière-plan nécessaires pour soutenir le portefeuille Dash Electrum.

Un serveur ElectrumX nécessite de faire tourner un nœud complet en complément du logiciel ElectrumX. Les étapes suivantes supposent qu’un nœud complet Dash Core a déjà été installé sur le serveur, et qu’il est configuré de façon à ce que l’indexation des transactions soit active (txindex=1 dans dash.conf).

Note

Veuillez consulter cette page (mise en place d’un VPS) et cette page (mise en place d’un OS) pour des détails sur la configuration de serveur. Quand vous créez le nouvel utilisateur, veuillez utiliser electrumx comme nom d’utilisateur.

Vérifier la configuration Dash Core#

Avant de commencer l’installation d’ElectrumX, assurez-vous que votre nœud Dash Core est configuré pour permettre l’accès RPC et exécuter l’indexation des transactions. Ces réglages peuvent être vérifiés en consultant le fichier de configuration dash.conf (lieu par défaut).

Accès RPC#

Le fichier dash.conf doit comporter des valeurs pour rpcuser, rpcpassword et rpcallowip (il peut aussi comporter rpcport). Elles seront utilisées lors de l’étape Définir des valeurs de réseau de Installer et configurer ElectrumX . Si ces valeurs sont absentes, ajoutez-les comme montré ci-dessous.

rpcuser=XXXXXXXXXXXXX
rpcpassword=XXXXXXXXXXXXXXXXXXXXXXXXXXXX
rpcallowip=127.0.0.1

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

Indexation de transactions#

Assurez-vous que la ligne ci-dessous soit présente dans dash.conf. Si elle est absente, ajoutez-la et redémarrez le nœud avec l’option -reindex. Veuillez noter que la réindexation peut être longue.

txindex=1

Installation de dépendances#

Python 3.7 est obligatoire pour ElectrumX, la version build-essential et -dev de Python est requise pour x11_hash, et daemontools est nécessaire pour gérer le service ElectrumX.

Installez Python 3.7 et les outils de compilation nécessaires, grâce au système de paquets :

sudo add-apt-repository ppa:deadsnakes/ppa # the repo with python3.7
sudo apt update
sudo apt install -y software-properties-common build-essential daemontools python3.7-dev python3-pip

Maintenant que Python 3.7 est installé, faites-en la version par défaut :

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 1

Comme la version par défaut de Python a peut-être été changée, réinstallez setuptools puis installez la bibliothèque X11 :

pip3 install --upgrade --force-reinstall setuptools
pip3 install x11_hash

Générez une clé SSL et un fichier certificat associé pour le serveur :

openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 1825 -in server.csr -signkey server.key -out server.crt

Installation et configuration d’ElectrumX#

Installer ElectrumX#

Clonez ElectrumX depuis GitHub avec git :

git clone https://github.com/spesmilo/electrumx.git

Compilez et installez le projet :

cd electrumx && sudo python3 setup.py install && pip3 install . --upgrade && cd

Configurer ElectrumX#

Créez les répertoires ElectrumX et copiez les fichiers à l’intérieur. Ces répertoires seront trouvables dans le répertoire de l’utilisateur electrumx :

mkdir -p scripts service data/electrumx-server var/log/electrumx
cp -R /home/electrumx/electrumx/contrib/daemontools scripts/electrumx

Définissez le message-bannière du serveur et le type de monnaie que le serveur hébergera :

echo '$SERVER_SUBVERSION running on $DAEMON_SUBVERSION' > /home/electrumx/electrumx/banner
echo "/home/electrumx/electrumx/banner" > scripts/electrumx/env/BANNER_FILE
echo "Dash" > scripts/electrumx/env/COIN

Définissez les valeurs de réseau :

ElectrumX a besoin des détails RPC Dash Core pour se connecter correctement. Définissez les variables RPC_USER, RPC_PASS, RPC_IP et RPC_PORT selon les valeurs trouvées dans votre fichier dash.conf. Ces valeurs ont été précédemment vérifiées dans la section Accès RPC.

Utilisez les valeurs fournies ci-dessous pour les réglages réseau ElectrumX si vous configurez un serveur sur réseau de test. Si vous configurez un serveur sur réseau principal, utilisez les valeurs alternatives affichées dans les commentaires.

# Values from dash.conf
RPC_USER=user
RPC_PASS=pass
RPC_IP=127.0.0.1
RPC_PORT=19998  # 9998 for mainnet

# ElectrumX network settings
NETWORK=testnet # or "mainnet"
PORT_01=51001   # or 50001 for mainnet
PORT_02=51002   # or 50002 for mainnet
EXTERNAL_IP=$(curl ifconfig.me)

# Write configuration details to ElectrumX script files
echo "http://$RPC_USER:$RPC_PASS@$RPC_IP:$RPC_PORT/" > scripts/electrumx/env/DAEMON_URL
echo "/home/electrumx/data/electrumx-server/" > scripts/electrumx/env/DB_DIRECTORY
echo "/home/electrumx/electrumx/electrumx_server" > scripts/electrumx/env/ELECTRUMX
echo "%(asctime)s %(levelname)s:%(name)s:%(message)s" > scripts/electrumx/env/LOG_FORMAT
echo "128" > scripts/electrumx/env/MAX_SESSIONS # might want less on testnet, something like 32
echo "$NETWORK" > scripts/electrumx/env/NET
echo "tcp://$EXTERNAL_IP:$PORT_01,ssl://$EXTERNAL_IP:$PORT_02" > scripts/electrumx/env/REPORT_SERVICES
echo "tcp://:$PORT_01,ssl://:$PORT_02,rpc://" > scripts/electrumx/env/SERVICES

# Enable firewall access for ElectrumX ports and reload ufw
sudo ufw allow $PORT_01 # ElectrumX
sudo ufw allow $PORT_02 # ElectrumX
sudo ufw reload

Définissez les valeurs SSL :

echo "/home/electrumx/server.crt" > scripts/electrumx/env/SSL_CERTFILE
echo "/home/electrumx/server.key" > scripts/electrumx/env/SSL_KEYFILE

Définissez le nom d’utilisateur ElectrumX pour le faire coïncider avec l’utilisateur actuel :

echo "electrumx" > scripts/electrumx/env/USERNAME

Définissez le répertoire de journaux ElectrumX :

Le chemin du répertoire de journaux est défini dans le fichier scripts/electrumx/log/run. Remplacez la ligne /path/to/log/ dans ce fichier avec /home/electrumx/var/log/electrumx :

sed -i scripts/electrumx/log/run -e "s/\/path\/to\/log\/dir/\/home\/electrumx\/var\/log\/electrumx/"

Gestion d’ElectrumX en tant que service#

Ajouter le service#

svscan /home/electrumx/service & disown
ln -s /home/electrumx/scripts/electrumx/ /home/electrumx/service/electrumx

Démarrer le service#

svc -u /home/electrumx/service/electrumx

Arrêter le service#

svc -d /home/electrumx/service/electrumx

Voir les journaux#

tail -100f ~/var/log/electrumx/current