Сервер ElectrumX#

ElectrumX - это легкий сервер Electrum, написанный на языке Python и поддерживающий различные криптовалюты, включая Dash. Он предоставляет бэкэнд-сервисы, необходимые для поддержки кошелёка Dash Electrum.

Для работы сервера ElectrumX помимо программного обеспечения ElectrumX требуется запуск полной ноды. Следующие шаги предполагают, что на сервере уже установлена полная нода Dash Core и настроена индексация транзакций (txindex=1 в файле dash.conf).

Примечание

Подробнее о настройке сервера см. на этой странице (настройка VPS) и этой странице (настройка ОС). При создании нового пользователя используйте electrumx для имени пользователя.

Проверка конфигурации Dash Core#

Перед началом настройки ElectrumX убедитесь, что ваша нода Dash Core настроена на разрешение доступа по протоколу RPC и выполнение индексации транзакций. Эти настройки можно проверить, просмотрев файл конфигурации dash.conf (default location1).

RPC Доступ#

Файл dash.conf должен содержать значения rpcuser, rpcpassword и rpcallowip (также может содержать rpcport). Они будут использоваться на шаге Установка сетевых значений команды Установка и настройка ElectrumX . Если эти значения отсутствуют, добавьте их, как показано ниже.

rpcuser=XXXXXXXXXXXXX
rpcpassword=XXXXXXXXXXXXXXXXXXXXXXXXXXXX
rpcallowip=127.0.0.1

Замените все поля с XXXXXXX следующим образом:

  • rpcuser: введите любой набор цифр или букв, без специальных символов

  • rpcpassword: введите любой набор цифр или букв, без специальных символов

Индексирование транзакции#

Убедитесь, что в файле dash.conf присутствует следующая строка. Если ее нет, добавьте ее и перезапустите ноду, используя опцию -reindex. Обратите внимание, что переиндексация может занять длительное время.

txindex=1

Установочные зависимости#

Для ElectrumX требуется Python 3.7, для x11_hash - build-essential и -dev версии Python, а для управления сервисом ElectrumX - daemontools.

Установите Python 3.7 и необходимые инструменты сборки через систему пакетов:

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

Теперь, когда Python 3.7 установлен, сделайте его версией по умолчанию:

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

Поскольку версия Python по умолчанию потенциально изменилась, переустановите setuptools, а затем установите библиотеку X11:

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

Сгенерируйте SSL-ключ и соответствующий файл сертификата для сервера:

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

Установка и конфигурирование ElectrumX#

Установка ElectrumX#

Клонируйте ElectrumX с GitHub через git:

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

Соберите и установите проект:

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

Конфигурируйте ElectrumX#

Создайте каталоги ElectrumX и скопируйте в них файлы. Эти каталоги будут располагаться в домашнем каталоге пользователя ``electrumx““:

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

Установите баннерное сообщение сервера и тип монет, которые будут размещены на сервере:

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

Установите значения сети:

Для корректного подключения ElectrumX необходимы данные Dash Core RPC. Установите для переменных RPC_USER, RPC_PASS, RPC_IP и RPC_PORT значения, содержащиеся в файле dash.conf. Эти значения были проверены ранее в разделе RPC Access.

При конфигурировании сервера тестовой сети используйте приведенные ниже значения сетевых настроек ElectrumX. При настройке сервера для основной сети используйте альтернативные значения, указанные в комментариях.

# 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

Установите значения SSL:

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

Установите имя пользователя ElectrumX, соответствующее нашему текущему пользователю:

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

Задайте директорию логов ElectrumX:

Путь к директории журнала задается в файле scripts/electrumx/log/run. Замените строку /path/to/log/ в этом файле на /home/electrumx/var/log/electrumx:

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

Управление ElectrumX как сервисом#

Добавить сервис#

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

Запустить сервис#

svc -u /home/electrumx/service/electrumx

Остановить сервис#

svc -d /home/electrumx/service/electrumx

Посмотреть логи#

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