ElectrumX Server#
ElectrumX è un server Electrum leggero scritto in Python che supporta una varietà di criptovalute tra cui Dash. Fornisce i servizi di backend necessari per supportare il Dash Electrum wallet.
Un server ElectrumX richiede l’esecuzione di un nodo completo oltre al software ElectrumX. I passaggi seguenti presuppongono che un nodo completo Dash Core sia già stato installato sul server e sia configurato con l’indicizzazione delle transazioni abilitata (txindex=1 in dash.conf).
Nota
Consulta questa pagina (configurazione VPS) e questa pagina (configurazione sistema operativo) per i dettagli relativi alla configurazione del server. Quando crei il nuovo utente, utilizza electrumx come nome utente.
Controlla la configurazione di Dash Core#
Prima di iniziare la configurazione di ElectrumX, assicurati che il tuo nodo Dash Core sia configurato per consentire l’accesso RPC ed eseguire l’indicizzazione delle transazioni. Queste impostazioni possono essere verificate visualizzando il file di configurazione dash.conf (default location).
Accesso RPC#
Il file dash.conf deve includere valori per rpcuser, rpcpassword e rpcallowip (può anche includere rpcport). Verranno utilizzati nel passaggio Imposta valori di rete di Installa e configura ElectrumX. Se i valori non sono presenti, aggiungerli come mostrato di seguito.
rpcuser=XXXXXXXXXXXXX
rpcpassword=XXXXXXXXXXXXXXXXXXXXXXXXXXXX
rpcallowip=127.0.0.1
Sostituisci i campi contrassegnati con XXXXXXX come segue:
rpcuser: inserisci qualsiasi stringa di numeri o lettere, non sono ammessi caratteri specialirpcpassword: inserisci qualsiasi stringa di numeri o lettere, non sono ammessi caratteri speciali
Indicizzazione delle transazioni#
Assicurati che la seguente riga sia presente in dash.conf. Se non è presente, aggiungilo e riavvia il nodo utilizzando l’opzione -reindex. Tieni presente che la reindicizzazione può richiedere molto tempo.
txindex=1
Installa le Dipendenze#
Python 3.7 è richiesto per ElectrumX, le versioni build-essential e -dev di Python sono richieste per x11_hash e daemontools è richiesto per gestire il servizio ElectrumX.
Installa Python 3.7 e gli strumenti di compilazione richiesti tramite il sistema di pacchetti:
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
Ora che Python 3.7 è installato, rendilo la versione predefinita:
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 1
Poiché la versione predefinita di Python è potenzialmente cambiata, reinstallare setuptools e quindi installare la libreria X11:
pip3 install --upgrade --force-reinstall setuptools
pip3 install x11_hash
Genera una chiave SSL e un file di certificato associato per il server:
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
Installa e configura ElectrumX#
Installa ElectrumX#
Clonare ElectrumX da GitHub tramite git:
git clone https://github.com/spesmilo/electrumx.git
Compila e installa il progetto:
cd electrumx && sudo python3 setup.py install && pip3 install . --upgrade && cd
Configura ElectrumX#
Crea le directory ElectrumX e copia i file al loro interno. Queste directory si troveranno nella directory home dell’utente electrumx:
mkdir -p scripts service data/electrumx-server var/log/electrumx
cp -R /home/electrumx/electrumx/contrib/daemontools scripts/electrumx
Imposta il messaggio banner del server e il tipo di moneta che il server ospiterà:
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
Imposta i valori di rete:
ElectrumX richiede i dettagli Dash Core RPC per potersi connettere correttamente. Imposta le variabili RPC_USER, RPC_PASS, RPC_IP e RPC_PORT sui valori trovati nel tuo file dash.conf. Questi valori sono stati precedentemente controllati nella sezione «Accesso RPC»_.
Utilizzare i valori forniti di seguito per l’impostazione di rete ElectrumX se si configura un server Testnet. Se si configura un server Mainnet, utilizzare i valori alternativi mostrati nei commenti.
# 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
Imposta i valori SSL:
echo "/home/electrumx/server.crt" > scripts/electrumx/env/SSL_CERTFILE
echo "/home/electrumx/server.key" > scripts/electrumx/env/SSL_KEYFILE
Imposta il nome utente ElectrumX in modo che corrisponda al nostro utente corrente:
echo "electrumx" > scripts/electrumx/env/USERNAME
Imposta la directory del registro ElectrumX:
Il percorso della directory di registro è impostato nel file «scripts/electrumx/log/run». Sostituisci la riga /path/to/log/ in quel file con /home/electrumx/var/log/electrumx:
sed -i scripts/electrumx/log/run -e "s/\/path\/to\/log\/dir/\/home\/electrumx\/var\/log\/electrumx/"
Gestisci ElectrumX come servizio#
Aggiungi il servizio#
svscan /home/electrumx/service & disown
ln -s /home/electrumx/scripts/electrumx/ /home/electrumx/service/electrumx
Avvia il servizio#
svc -u /home/electrumx/service/electrumx
Interrompi il servizio#
svc -d /home/electrumx/service/electrumx
Visualizza registri#
tail -100f ~/var/log/electrumx/current