Configuración del nodo de P2Pool de Dash

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.

La siguiente sección describe los pasos para configurar un servidor Ubuntu que ejecute P2Pool para Dash. Ha sido probado con Ubuntu 16.04 LTS y 18.04 LTS y Dash 0.12.2.3. Si bien se hará un esfuerzo razonable para mantenerlo actualizado, debería ser posible modificar las instrucciones ligeramente para admitir diferentes versiones o sistemas operativos según sea necesario.

Configurar servidor de alojamiento

Descarga una copia de Ubuntu Server LTS desde https://www.ubuntu.com/download/server e instálalo en tu sistema de acuerdo con los pasos descritos aquí. Si está utilizando un VPS como Vultr o AWS, lo más probable es que tu proveedor proporcione una opción para instalar este sistema durante el aprovisionamiento. Asegúrate de habilitar el servidor OpenSSH durante la configuración para que puedas controlar tu servidor desde una consola remota. Una vez que tengas acceso a tu servidor, cre< un nuevo usuario que no sea root si aún no lo has hecho utilizando el siguiente comando, reemplazando <username> con el nombre de usuario de tu elección:

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

Si te encuentras en una red privada detrás de un router, deberás configurar el reenvío de puertos para al menos el puerto 8999 (UDP/TCP) para acceder a sharechain, así como también el puerto 7903 (UDP/TCP) si deseas que tu nodo sea accesible al público. Cómo se hace esto depende de su router de red particular y, por lo tanto, está fuera del alcance de esta documentación. A continuación, se muestra un ejemplo de la distribución popular de routers de fuente abierta DD-WRT. Las guías para configurar el reenvío de puertos se pueden encontrar “aquí <https://www.wikihow.com/Set-Up-Port-Forwarding-on-a-Router>`__ 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

Opción 1: configuración automática de scripts

El miembro de la comunidad Dash dracocephalum ha donado generosamente script para implementar automáticamente todo lo requerido para ejecutar un nodo p2pool-dash en Ubuntu Server 16.04 y versiones posteriores. Para más detalles, consulta esta publicación del foro, o simplemente sigue estas instrucciones para obtener el script. Para obtener el script y comenzar, escribe:

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

Los archivos se crearán en la carpeta p2pool-dash-deploy. Ahora necesitamos configurar algunas variables específicas para tu sistema:

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

Desplázate hacia abajo a la sección etiquetada #Variables e ingresamarcadores de posición después del signo `` = .  la siguiente información, reemplazando los ``<xxx> marcadores de posición después del signo =. Ten en cuenta que también puede ser necesario actualizar los valores DASH_WALLET_URL, DASH_WALLET_ZIP y DASH_WALLET_LOCAL si no coinciden con la versión actual de Dash:

  • PUBLIC_IP = <your public IP address from the previous step>
  • EMAIL = <your email address>
  • PAYOUT_ADDRESS = <your DASH wallet address to receive fees>
  • USER_NAME = <linux user name>
  • RPCUSER = <enter a random alphanumeric rpc user name>
  • RPCPASSWORD = <enter a random alphanumeric rpc password>

Presiona Ctrl + X para cerrar el editor y Y y Enter para guardar el archivo. Luego ejecuta el script:

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

El script llevará a cabo todos los pasos necesarios para configurar P2pool en Ubuntu Server e iniciar la sincronización de dashd. Cuando finaliza la configuración, deberías ver un mensaje que dice Instalación finalizada. Ahora puede ejecutar un segundo script para iniciar p2pool-dash:

bash ~/p2pool.start.sh

Tu nodo P2Pool ahora se está ejecutando. Si ves errores similares a Error al obtener trabajo de dashd o -10 Dash Core está descargando bloques … entonces debes esperar hasta que Dash termine la sincronización. Una vez hecho esto, puedes indicar a tus mineros <ip_address>:7903 para que empiecen a minar.

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

Opción 2: Configuración manual

Primero actualiza tu sistema operativo de la siguiente manera:

sudo apt update
sudo apt upgrade

Configurar dashd

P2Pool requiere que se ejecute un nodo completo de Dash para obtener los datos de bloque y transacción. Para descargar e instalar Dash, visita https://www.dash.org/wallets/ en tu computadora para encontrar el enlace a la última billetera Dash Core. Haz click en Linu, luego haz click derecho en Descargar TGZ para Dash Core Linux 64 Bit y selecciona Copiar dirección de enlace. Regresa a la ventana de tu terminal e ingresa el siguiente comando, pegando la dirección en la última versión de Dash Core haciendo click derecho o presionando Ctrl + V:

cd ~
wget https://github.com/dashpay/dash/releases/download/v0.12.2.3/dashcore-0.12.2.3-linux64.tar.gz

Verifica la integridad de tu descarga ejecutando el siguiente comando y comparando la salida con el valor del archivo como se muestra en el sitio web de Dash en Hash File:

sha256sum dashcore-0.12.2.3-linux64.tar.gz
../_images/setup-manual-download1.png

Enlaza el archivo hash para verificar la integridad de la descarga

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.12.2.3-linux64.tar.gz
cp dashcore-0.12.2/bin/dashd .dashcore/
cp dashcore-0.12.2/bin/dash-cli .dashcore/
chmod 777 .dashcore/dash*

Elimina los archivos innecesarios:

rm dashcore-0.12.2.3-linux64.tar.gz
rm -r dashcore-0.12.2/

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 python-zope.interface python-twisted python-twisted-web python-dev
sudo apt install gcc g++ git

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

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/johndoe75/p2pool-node-status status
git clone https://github.com/hardcpp/P2PoolExtendedFrontEnd ext

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:

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

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

  • Interfaz Punchy: http://<ip_address>:7903/static/
  • Interfaz heredada: http://<ip_address>:7903/static/legacy/
  • Interfaz de estado: http://<ip_address>:7903/static/status/
  • Interfaz extendida: http://<ip_address>:7903/static/ext/
../_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