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 ноду в виде виртуальной машины в дата центре с высокой скоростью соединения, чтобы недалеко живущие майнеры могли подсоединяться к ноде с относительно небольшой задержкой.

This following section describes the steps to setup an Ubuntu Server running P2Pool for Dash. It has been tested with Ubuntu 20.04 LTS and Dash 0.16. While a reasonable effort will be made to keep it up to date, it should be possible to modify the instructions slightly to support different versions or operating systems as necessary.

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

Download a copy of Ubuntu Server LTS from https://ubuntu.com/download/server and install it on your system according to the steps described here. If you are using a VPS such as Vultr or AWS, your provider will most likely provide an option to install this system during provisioning. Ensure you enable OpenSSH server during setup so you can control your server from a remote console. Once you have access to your server, create a new non-root user if you have not already done so using the following command, replacing <username> with a username of your choice:

adduser <username>

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

usermod -aG sudo <username>

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

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

If you are on a private network behind a router, you will need to set up port forwarding for at least port 8999 (UDP/TCP) for access to the sharechain, as well as port 7903 (UDP/TCP) if you want your node to be accessible to the public. How this is done depends on your particular network router and is therefore beyond the scope of this documentation. An example from the popular DD-WRT open source router distribution is shown below. Guides to setting up port forwarding can be found here and here.

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

../_images/p2pool-ddwrt.png

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

Manual setup

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

sudo apt update
sudo apt upgrade

Установка dashd

P2Pool requires a full Dash node to be running to get block and transaction data. To download and install Dash, visit https://www.dash.org/downloads/ on your computer to find the link to the latest Dash Core wallet. Click Linux, then right-click on Download TGZ for Dash Core x64 and select Copy link address. Go back to your terminal window and enter the following command, pasting in the address to the latest version of Dash Core by right clicking or pressing Ctrl + V:

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

Verify the authenticity of your download by checking its detached signature against the public key published by the Dash Core development team. All releases of Dash are signed using GPG with one of the following keys:

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/v0.16.1.1/dashcore-0.16.1.1-x86_64-linux-gnu.tar.gz.asc
gpg --verify dashcore-0.16.1.1-x86_64-linux-gnu.tar.gz.asc

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

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

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

rm dashcore-0.16.1.1-x86_64-linux-gnu.tar.gz
rm -r dashcore-0.16.1/

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

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 ноде в локальной сети.