P2Pool Node Setup

В этой инструкции описано, как установить P2Pool ноду Dash, чтобы управлять пулом майнеров. В отличие от централизованных майнинговых пулов, P2Pool работает по той же peer-2-peer (P2P) модели, что и Dash, что делает пул в целом высокоусточивым к атакам злоумышленников, а также сохраняет и защищает децентрализованную природу Dash. Когда вы запускаете P2Pool ноду, она ищет, соединяется и обменивается данными с децентрализованной сетью других P2Pool нод (которые также известны как пиры). Подобно блокчейну Dash, P2Pool ноды обменивается криптографической цепочкой ценных данных. P2Pool версия называется шэрчейн. Майнинг с P2Pool настоятельно рекомендуется из-за его децентрализованной и честной модели. P2Pool для Dash использует p2pool-dash софт с GitHub, который является форком p2pool для Биткойна. Больше информации здесь.

Из-за того, каким образом P2Pool управляет сложностью подстройки к шэрчейну, важно поддерживать низкую степень задержки между майнерами и P2Pool нодой, чтобы избежать ситуаций, когда майнеры подписывают шэры слишком поздно для входа в шэрчейн. Когда вы устанавливаете вашу ноду, нужно учитывать её физическое расположение и расположение в сети по отношению к майнерам, которых вы планируете подключать к ноде. Если вы управляете майнинговой фермой, возможно вам стоить установить P2Pool ноду на физическую машину в той же локальной сети, где находятся ваши майнеры. Если вы планируете управлять публичной нодой, возможно, налучшим вариантом будет установить вашу P2Pool ноду в виде виртуальной машины в дата центре с высокой скоростью соединения, чтобы недалеко живущие майнеры могли подсоединяться к ноде с относительно небольшой задержкой.

В следующем разделе пошагово описывается установка Ubuntu Server, на котором будет работать P2Pool для Dash. Всё это было протестировано на Ubuntu 18.04 LTS и Dash 0.13.1.0. Хотя нужно будет приложить некоторые усилия, чтобы использовать инструкцию с обновлённым ПО, эту инструкцию вполне можно использовать с разными версиями ПО или операционными системами, если это потребуется.

Настройка хостинг-сервера

Скачайте копию Ubuntu Server LTS с https://www.ubuntu.com/download/server и установите её на вашу систему по инструкции, приведённой здесь. Если вы используете VPS, например, Vultr или AWS, скорее всего ваш провайдер предоставляет функцию установки этой системы. Убедитесь, что вы отметили опцию «OpenSSH server» в процессе установки - с ней вы сможете управлять вашим сервером с удалённой консоли. Когда вы получите доступ к серверу, создайте нового пользователя без рут-прав, если вы ещё этого не сделали, через приведённую ниже команду, заменив <username> на выбранное вами имя пользователя:

adduser <username>

Тут же вам предложат выбрать пароль. Введите его и подтвердите, используя новый пароль (который отличается от вашего рут-пароля) и сохраните его в безопасном месте. Также тут вы можете ввести информацию о пользователе, но эти поля можно не заполнять. После создания пользователя, мы добавим их в sudo группу, таким образом, они смогу выполнять те же команды, что и рут-пользователи:

usermod -aG sudo <username>

Перезапустите ваш сервер и войдите от имени нового пользователя. Здесь рекомендуется подключаться удалённо через PuTTY (для Windows) или ssh (для Linux или macOS), если вы ещё этого не сделали.

Настройка переадресации портов

Если у вас роутер и приватная сеть, вам нужно будет настроить переадресацию портов как минимум для 8999 порта (UDP/TCP) для доступа к шэрчейну, а также для 7903 порта (UDP/TCP), если вы хотите, чтобы к вашей ноде был публичный доступ. Как это сделать - зависит от вашего сетевого роутера, и потому за рамками охвата этой инструкции. Ниже описывается настройка переадресации на примере роутера DD-WRT с открытым кодом. Инструкции по настройке переадресации порта можно найти здесь и здесь.

Узнайте свой IP адрес - либо из панели управления роутера, либо на сайте https://www.whatismyip.com

../_images/p2pool-ddwrt.png

Настройка переадресации порта под DD-WRT

Вариант 1: Автоматическая настройка с помощью скрипта

Участник сообщества Dash dracocephalum щедро поделился скриптом для автоматической настройки всего, что требуется для работы p2pool-dash ноды под Ubuntu Server 16.04 и выше. Чтобы узнать больше, смотрите этот пост на форуме - или просто следуйте инструкции. Чтобы получить скрипт и начать, напечатайте:

sudo apt install git
git clone https://github.com/strophy/p2pool-dash-deploy

В папке p2pool-dash-deploy будут созданы файлы. Теперь нам нужно настроить некоторые параметры, касающиеся вашей системы:

nano ./p2pool-dash-deploy/p2pool.deploy.sh

Прокрутите вниз до раздела под названием #Variables и введите следующую информацию, заменяя шаблоны <xxx> после знака =. Обратите внимание, что возможно нужно будет обновить значения DASH_WALLET_URL, DASH_WALLET_ZIP и DASH_WALLET_LOCAL, если они не соответствуют текущей версии Dash:

  • PUBLIC_IP = ваш публичный IP-адрес из предыдущего шага
  • EMAIL = ваш электронный адрес
  • PAYOUT_ADDRESS = адрес вашего кошелька DASH для получения выплат
  • USER_NAME = имя пользователя Linux
  • RPCUSER = введите случайное буквенно-цифровое имя пользователя для сервера RPC
  • RPCPASSWORD = введите случайный буквенно-цифровой пароль для сервера RPC

Нажмите Ctrl + X и закройте редактор, а затем нажмите Y и Enter, чтобы сохранить файл. Затем запустите скрипт:

bash ./p2pool-dash-deploy/p2pool.deploy.sh

Этот скрипт выполнит все необходимые шаги для установки P2pool на Ubuntu Server и запуска dashd синхронизации. После завершения установки вы увидите сообщение с надписью Installation Completed. Теперь вы можете запустить второй скрипт, чтобы установить p2pool-dash:

bash ~/p2pool.start.sh

Теперь ваша P2Pool  нода работает. Если вы видите ошибки, например, Error getting work from dashd или -10 Dash Core is downloading blocks…, вам нужно подождать, пока Dash завершит синхронизацию. Когда она завершится, вы можете направить ваших майнеров через <ip_address>:7903, чтобы начать майнить.

../_images/p2pool-antminer.png
../_images/p2pool-running.png

Пример настроек с Bitmain Antminer D3, подключённым к p2pool-dash ноде в локальной сети.

Вариант 2: Установка вручную

Сначала обновите вашу оперативную систему:

sudo apt update
sudo apt upgrade

Установка dashd

Для того, чтобы получать блок и данные по транзакции, P2Pool требуется полноценная нода Dash. Чтобы скачать и установить Dash, зайдите на https://www.dash.org/ru/downloads с вашего компьютера и найдите там ссылку на последнюю версию кошелька Dash Core. Нажмите Linux, затем правой кнопкой мыши кликните на Скачать TGZ под Dash Core x64 и выберите Скопировать адрес ссылки. Затем вернитесь в консоль и введите следующую команду, вставив туда адрес последней версии Dash Core через клик правой кнопкой мыши или Ctrl + V:

cd ~
wget https://github.com/dashpay/dash/releases/download/v0.16.0.1/dashcore-0.16.0.1-x86_64-linux-gnu.tar.gz

Проверьте целостность скачанного, запустив следующую команду и сравнив выходное значение со значением файла, указанным на сайте Dash под Hash File:

sha256sum dashcore-0.16.0.1-x86_64-linux-gnu.tar.gz
../_images/setup-manual-download.png

Ссылка на хеш файл для проверки целостности скачанного

Создайте рабочую папку для Dash, извлеките туда архив, скопируйте необходимые файлы в эту папку и сделайте их исполняемыми файлами:

mkdir .dashcore
tar xfvz dashcore-0.16.0.1-x86_64-linux-gnu.tar.gz
cp dashcore-0.16.0/bin/dashd .dashcore/
cp dashcore-0.16.0/bin/dash-cli .dashcore/

Очистка от ненужных файлов:

rm dashcore-0.16.0.1-x86_64-linux-gnu.tar.gz
rm -r dashcore-0.16.0/

С помощью следующей команды создайте файл настроек:

nano ~/.dashcore/dash.conf

Появится окно редактора. Теперь нам нужно создать файл настроек, в котором будут описаны некоторые параметры. Для начала, скопируйте и вставьте туда следующий текст, а затем замените параметры на те, которые вам подходят:

#----
rpcuser=XXXXXXXXXXXXX
rpcpassword=XXXXXXXXXXXXXXXXXXXXXXXXXXXX
rpcallowip=127.0.0.1
#----
listen=1
server=1
daemon=1
maxconnections=64
#----

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

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

В результате должно получиться что-то похожее:

../_images/p2pool-dash-conf.png

Ввод ключевых данных в dash.conf для P2Pool ноды

Нажмите Ctrl + X и закройте редактор, а затем нажмите Y и Enter, чтобы сохранить файл. Теперь вы можете запустить Dash на мастерноде, чтобы синхронизироваться с блокчейном:

~/.dashcore/dashd

Вы увидите сообщение Dash Core server starting. Сейчас можно продолжить работать по инструкции и периодически проверять синхронизацию, используя следующую команду. Синхронизация завершится, когда число blocks будет равно текущему числу блоков в блокчейне Dash - то же самое можно увидеть в любом синхронизированном кошельке Dash или обозревателе блоков:

~/.dashcore/dash-cli getblockcount

Установка P2Pool

Сейчас мы настроим ПО для P2Pool и всего, что с ним связано. Начнём со связанных с ним настроек:

sudo apt install python-zope.interface python-twisted python-twisted-web python-dev gcc g++ git

Создайте рабочие папки и установите p2pool-dash:

mkdir git
cd git
git clone https://github.com/dashpay/p2pool-dash
cd p2pool-dash
git submodule init
git submodule update
cd dash_hash
python setup.py install --user

Теперь мы добавим несколько дополнительных интерфейсов в панель управления:

cd ..
mv web-static web-static.old
git clone https://github.com/justino/p2pool-ui-punchy web-static
mv web-static.old web-static/legacy
cd web-static
git clone https://github.com/hardcpp/P2PoolExtendedFrontEnd ext

Теперь вы можете запустить p2pool и по желанию настроить адрес для выплат, внешний IP (если необходимо), комиссию и пожертвования, как это описано ниже:

python ~/git/p2pool-dash/run_p2pool.py --external-ip <public_ip> -f <fee> --give-author <donation> -a <payout_address>

Затем вы можете отслеживать активность вашей ноды через следующий адрес, заменив <ip_address> на IP-адрес вашей P2Pool ноды:

../_images/p2pool-antminer.png
../_images/p2pool-running.png

Пример настроек с Bitmain Antminer D3, подключённым к p2pool-dash ноде в локальной сети.