P2Pool Node Setup

Esta guía describe cómo configurar un nodo Dash P2Pool para administrar un grupo de mineros. A diferencia de las agrupaciones de minería centralizadas, P2Pool se basa en el mismo modelo de pares iguales 2-2 (P2P) que Dash, lo que hace que la agrupación como un todo sea altamente resistente a los ataques maliciosos, y preserva y protege la naturaleza descentralizada de Dash. Cuando inicias un nodo P2Pool, este busca, se conecta y comparte datos con una red descentralizada de otros nodos P2Pool (también conocidos como pares). Los nodos P2Pool comparten una cadena criptográfica de datos que representan el valor, similar a la cadena de bloques de Dash. La versión de P2Pool se llama sharechain. La naturaleza descentralizada y justa de este modelo de minería significa que se recomienda enfáticamente la minería con P2Pool. P2Pool para Dash utiliza el software p2pool-dash en GitHub, que es una bifurcación de p2pool para Bitcoin. Para obtener más información, consulta aquí.

Debido a la manera en que P2Pool maneja los ajustes de dificultad en la sharechain, es importante mantener una baja latencia entre los mineros y el nodo P2Pool para evitar que los mineros envíen acciones demasiado tarde para ingresar a la sharechain. Al configurar tu nodo, debes tener en cuenta su ubicación física y de red en relación con los mineros con los que tienes la intención de conectar a tu nodo. Si operas una granja de minería, tu nodo P2Pool probablemente sea una máquina física en la misma red local que tus mineros. Si planeas operar un nodo público, puede ser mejor configurar tu nodo P2Pool como una máquina virtual en un centro de datos con una conexión de alta velocidad para que los mineros geográficamente cercanos puedan minar en tu grupo con una latencia relativamente baja.

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.0.1. 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.

Configurar servidor de alojamiento

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>

Se te solicitará una contraseña. Ingresa y confirma usando una nueva contraseña (diferente a tu contraseña de raíz) y guárdala en un lugar seguro. También verás solicitudes de información del usuario, pero esto puede dejarse en blanco. Una vez que el usuario ha sido creado, los agregaremos al grupo sudo para que puedan ejecutar comandos como root:

usermod -aG sudo <username>

Reinicia tu servidor e inicia sesión como el nuevo usuario. En este punto, se recomienda conectarse remotamente usando PuTTY (para Windows) o ssh (para Linux y macOS) si aún no lo has hecho.

Configurar el reenvío de puertos

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.

Toma nota de tu dirección IP ya sea desde la interfaz de administración del router o visitando https://www.whatismyip.com

../_images/p2pool-ddwrt.png

Configurar el reenvío de puertos en DD-WRT

Manual setup

Primero actualiza tu sistema operativo de la siguiente manera:

sudo apt update
sudo apt upgrade

Configurar 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.0.1/dashcore-0.16.0.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.0.1/dashcore-0.16.0.1-x86_64-linux-gnu.tar.gz.asc
gpg --verify dashcore-0.16.0.1-x86_64-linux-gnu.tar.gz.asc

Crea un directorio de trabajo para Dash, extrae el archivo comprimido, copia los archivos necesarios en el directorio y configúralos como ejecutables:

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/

Elimina los archivos innecesarios:

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

Crea un archivo de configuración usando el siguiente comando:

nano ~/.dashcore/dash.conf

Aparecerá una ventana del editor. Ahora necesitamos crear un archivo de configuración que especifique varias variables. Copia y pega el siguiente texto para comenzar, luego reemplaza las variables específicas a tu configuración de la siguiente manera:

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

Reemplaza los campos marcados con XXXXXXX de la siguiente manera:

  • rpcuser: ingresa cualquier cadena de números o letras, no se permiten caracteres especiales
  • rpcpassword: ingresa cualquier cadena de números o letras, no se permiten caracteres especiales

El resultado debería verse más o menos así:

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

Introducción de datos clave en dash.conf en el nodo P2Pool

Presiona Ctrl + X para cerrar el editor y Y y Entrar para guardar el archivo. Ahora puedes comenzar a ejecutar Dash en el masternode para comenzar la sincronización con la cadena de bloques:

~/.dashcore/dashd

Verás un mensaje que dice Servidor de Dash Core comenzando. Puede continuar con los siguientes pasos y verificar la sincronización periódicamente con el siguiente comando. La sincronización se completa cuando el número de bloques es igual al número actual de bloques en la cadena de bloques de Dash, como se puede ver desde cualquier billetera Dash sincronizada o explorador de bloques:

~/.dashcore/dash-cli getblockcount

Configurar P2Pool

Ahora configuraremos el software P2Pool y sus dependencias. Comienza con las dependencias:

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

Crea directorios de trabajo y configura 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

Añadiremos algunas interfaces extra opcionales al panel de control:

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 ..

Ahora puedes iniciar p2pool y, opcionalmente, especificar la dirección de pago, IP externa (si es necesario), comisión y donación de la siguiente manera:

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

Luego puedes monitorear tu nodo navegando a las siguientes direcciones, reemplazando <ip_address> con la dirección IP de tu nodo P2Pool:

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

Ejemplo de configuración que muestra un solo Bitmain Antminer D3 conectado a un nodo p2pool-dash en la red local