Сервер 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