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éciauxrpcpassword
: 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