Настройки P2Pool ноды#

В этой инструкции описано, как установить 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 20.04 LTS и Dash 0.16.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#

Ручная настройка#

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

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/v20.0.4/dashcore-20.0.4-x86_64-linux-gnu.tar.gz

Убедитесь в подлинности загруженного файла, сверив его подпись с открытым ключом, опубликованным командой разработчиков Dash Core. Все выпуски Dash подписываются с помощью GPG одним из следующих ключей:

  • Александр Блок (codablock) с ключом 63A9 6B40 6102 E091, ``верифицируемый здесь на Keybase <https://keybase.io/codablock>`__

  • Pasta с ключом 5252 7BED ABE8 7984, ``верифицируемым здесь на Keybase <https://keybase.io/pasta>`__

curl https://keybase.io/codablock/pgp_keys.asc | gpg --import
curl https://keybase.io/pasta/pgp_keys.asc | gpg --import
wget https://github.com/dashpay/dash/releases/download/v20.0.4/dashcore-20.0.4-x86_64-linux-gnu.tar.gz.asc
gpg --verify dashcore-20.0.4-x86_64-linux-gnu.tar.gz.asc

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

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

Удалите ненужные файлы:

rm dashcore-20.0.4-x86_64-linux-gnu.tar.gz
rm -r dashcore-20.0.4/

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

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 python2 python2-dev gcc g++ git
curl https://bootstrap.pypa.io/get-pip.py --output get-pip.py
sudo python2 get-pip.py
pip install twisted

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

git clone https://github.com/dashpay/p2pool-dash
cd p2pool-dash
git submodule update --init
cd dash_hash
python2 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
cd ..

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

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

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

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

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