Skip to content
Binary file removed docs/user/mining/img/p2pool-antminer.png
Binary file not shown.
Binary file removed docs/user/mining/img/p2pool-dash-conf.png
Binary file not shown.
Binary file removed docs/user/mining/img/p2pool-ddwrt.png
Binary file not shown.
Binary file removed docs/user/mining/img/p2pool-running.png
Binary file not shown.
31 changes: 16 additions & 15 deletions docs/user/mining/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -72,13 +72,12 @@ Mining Pools
============

Mining Dash in pools is more likely to generate rewards than solo mining
directly on the blockchain. Mining dash using P2Pool is strongly
encouraged, since it is a good way to distribute, rather than
centralize, the hashing power.
directly on the blockchain. Mining Dash using P2Pool is a good way to
distribute, rather than centralize, the hashing power, but the
``dashpay/p2pool-dash`` software is no longer maintained. See the
:ref:`P2Pool documentation <p2pool>` for details and for community forks
that continue the project.

If you would like to set up your own P2Pool, documentation of the
process is available :ref:`here <p2pool>` and the code for p2pool-dash
is available on `GitHub <https://github.com/dashpay/p2pool-dash>`_.
Other mining pools are listed below and may be advantageous for
different reasons such as ping latency, uptime, fee, users, etc. A guide
to using a typical mining pool can be found :ref:`here <mining-pools>`.
Expand Down Expand Up @@ -129,15 +128,17 @@ section of the Dash Forums <https://www.dash.org/forum/index.php?forums/hardware

The following X11 ASIC miners are available on the market today:

+----------------------------------------------------------------------------------------------------------+---------------+---------+---------+-----------------+
| Name | Hash rate | Power | Weight | Dimensions (mm) |
+==========================================================================================================+===============+=========+=========+=================+
| `Bitmain Antminer D5 <https://shop.bitmain.com.cn/product/detail?pid=000201811150956053407f2Bhw2x068D>`_ | 119 GH/s ±5% | 1566 W | 7.5 kg | 486 x 265 x 388 |
+----------------------------------------------------------------------------------------------------------+---------------+---------+---------+-----------------+
| Spondoolies SPx36 | 540 GH/s ±10% | 4400 W | 19.5 kg | 640 x 525 x 185 |
+----------------------------------------------------------------------------------------------------------+---------------+---------+---------+-----------------+
| StrongU STU-U6 | 420 GH/s ±8% | 2100 W | 8.5 kg | 370 x 135 x 208 |
+----------------------------------------------------------------------------------------------------------+---------------+---------+---------+-----------------+
+----------------------------------------------------------------------------------------------------------+---------------+---------+---------+-------------------+
| Name | Hash rate | Power | Weight | Dimensions (mm) |
+==========================================================================================================+===============+=========+=========+===================+
| Bitmain Antminer D9 | 1770 GH/s | 2839 W | 16.1 kg | 430 x 195.5 x 290 |
+----------------------------------------------------------------------------------------------------------+---------------+---------+---------+-------------------+
| `Bitmain Antminer D5 <https://shop.bitmain.com.cn/product/detail?pid=000201811150956053407f2Bhw2x068D>`_ | 119 GH/s ±5% | 1566 W | 7.5 kg | 486 x 265 x 388 |
+----------------------------------------------------------------------------------------------------------+---------------+---------+---------+-------------------+
| Spondoolies SPx36 | 540 GH/s ±10% | 4400 W | 19.5 kg | 640 x 525 x 185 |
+----------------------------------------------------------------------------------------------------------+---------------+---------+---------+-------------------+
| StrongU STU-U6 | 420 GH/s ±8% | 2100 W | 8.5 kg | 370 x 135 x 208 |
+----------------------------------------------------------------------------------------------------------+---------------+---------+---------+-------------------+

ASIC resellers may also have miners available:

Expand Down
246 changes: 36 additions & 210 deletions docs/user/mining/p2pool.rst
Original file line number Diff line number Diff line change
@@ -1,15 +1,27 @@
.. meta::
:description: Guide to setting up a Dash P2Pool node
:description: Information on Dash P2Pool, its maintenance status and community forks
:keywords: dash, mining, X11, p2pool, node, pool, software, ASIC, mining pool

.. _p2pool:

=================
P2Pool Node Setup
P2Pool Node Setup
=================

This guide describes how to set up a Dash P2Pool node to manage a pool
of miners. Unlike centralized mining pools, P2Pool is based on the same
.. warning::
The `dashpay/p2pool-dash
<https://github.com/dashpay/p2pool-dash>`_ repository is no longer
maintained. Its last update was in May 2023, during the Dash Core
v18 release cycle, and its installation procedure depends on Python
2, which is not available on current Ubuntu and Debian releases.

The step-by-step setup instructions that previously appeared on this
page have been removed because they can no longer be completed
successfully. See :ref:`p2pool-forks` below for projects that
continue development.

This page describes what P2Pool is and what to consider before running
a node. Unlike centralized mining pools, P2Pool is based on the same
peer-2-peer (P2P) model as Dash, making the pool as a whole highly
resistant to malicious attacks, and preserving and protecting the
decentralized nature of Dash. When you launch a P2Pool node, it seeks
Expand All @@ -18,10 +30,9 @@ other P2Pool nodes (also known as peers). P2Pool nodes share a
cryptographic chain of data representing value, similar to Dash's
blockchain. The P2Pool version is called the sharechain. The
decentralized and fair nature of this mining model means mining with
P2Pool is strongly encouraged. P2Pool for Dash uses the `p2pool-dash
<https://github.com/dashpay/p2pool-dash>`_ software on GitHub, which is
a fork of p2pool for Bitcoin. For more information, see `here
<https://en.bitcoin.it/wiki/P2Pool>`__.
P2Pool is strongly encouraged. P2Pool for Dash uses the p2pool-dash
software, which is a fork of p2pool for Bitcoin. For more information,
see `here <https://en.bitcoin.it/wiki/P2Pool>`__.

Because of the way P2Pool manages difficulty adjustments on the
sharechain, it is important to maintain low latency between the miners
Expand All @@ -35,209 +46,24 @@ your P2Pool node as a virtual machine in a data center with a high speed
connection so geographically close miners can mine to your pool with
relatively low latency.

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.

Setting up the host server
==========================

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
<https://ubuntu.com/tutorials/install-ubuntu-server>`__. 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>

You will be prompted for a password. Enter and confirm using a new
password (different to your root password) and store it in a safe place.
You will also see prompts for user information, but this can be left
blank. Once the user has been created, we will add them to the sudo
group so they can perform commands as root::

usermod -aG sudo <username>

Reboot your server and log in as the new user. At this point it is
recommended to connect remotely using `PuTTY
<https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html>`_ (for
Windows) or ssh (for Linux and macOS) if you have not already done so.

Setting up port forwarding
==========================

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
<https://www.wikihow.com/Set-Up-Port-Forwarding-on-a-Router>`__ and `here
<https://www.noip.com/support/knowledgebase/general-port-forwarding-guide/>`__.

Take note of your IP address either from your router management
interface or by visiting https://www.whatismyip.com

.. figure:: img/p2pool-ddwrt.png
:width: 400px

Setting up port forwarding under DD-WRT

Manual setup
============

First update your operating system as follows::

sudo apt update
sudo apt upgrade

Setting up 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/v23.1.8/dashcore-23.1.8-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 since 0.16.0 are signed using GPG with the
following key:

- Pasta (pasta) with the key ``5252 7BED ABE8 7984``, `verifiable on Keybase
<https://keybase.io/pasta>`__ (`download <https://keybase.io/pasta/pgp_keys.asc>`__)

::

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

Create a working directory for Dash, extract the compressed archive,
copy the necessary files to the directory and set them as executable::

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

Clean up unneeded files::

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

Create a configuration file using the following command::

nano ~/.dashcore/dash.conf

An editor window will appear. We now need to create a configuration file
specifying several variables. Copy and paste the following text to get
started, then replace the variables specific to your configuration as
follows::

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


Replace the fields marked with ``XXXXXXX`` as follows:

- ``rpcuser``: enter any string of numbers or letters, no special
characters allowed
- ``rpcpassword``: enter any string of numbers or letters, no special
characters allowed

The result should look something like this:

.. figure:: img/p2pool-dash-conf.png
:width: 400px

Entering key data in dash.conf on the P2Pool node

Press **Ctrl + X** to close the editor and **Y** and **Enter** save the
file. You can now start running Dash on the masternode to begin
synchronization with the blockchain::

~/.dashcore/dashd

You will see a message reading **Dash Core server starting**. You can
continue with the following steps and check synchronization periodically
using the following command. Synchronization is complete when the number
of ``blocks`` is equal to the current number of blocks in the Dash
blockchain, as can be seen from any synchronized Dash wallet or `block
explorer <https://insight.dash.org/insight/>`_::

~/.dashcore/dash-cli getblockcount

Setting up P2Pool
-----------------

We will now set up the P2Pool software and its dependencies. Begin with
the dependencies::

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

Create working directories and set up 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

We will add some optional extra interfaces to the control panel::

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

You can now start p2pool and optionally specify the payout address,
external IP (if necessary), fee and donation as follows::

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

You can then monitor your node by browsing to the following addresses,
replacing ``<ip_address>`` with the IP address of your P2Pool node:
.. _p2pool-forks:

- Punchy interface: http://ip_address:7903/static
- Legacy interface: http://ip_address:7903/static/legacy
- Status interface: http://ip_address:7903/static/status
- Extended interface: http://ip_address:7903/static/ext
Community forks
===============

.. figure:: img/p2pool-antminer.png
:width: 400px
Development of p2pool-dash continues in forks maintained by individual
community members. One example is `frstrtr/p2pool-dash
<https://github.com/frstrtr/p2pool-dash>`_, which supports current Dash
Core releases and provides its own installation guide. A separate
from-scratch C++ reimplementation, `c2pool
<https://github.com/frstrtr/c2pool>`_, is also under development.

.. figure:: img/p2pool-running.png
:width: 400px
These forks are not maintained, reviewed or endorsed by the Dash
project, and this documentation does not describe how to install or
operate them. Refer to each project's own documentation for setup
instructions.

Example configuration showing a single Bitmain Antminer D3 connected
to a p2pool-dash node on the local network
Note that P2Pool software takes a payout address and requires RPC
credentials for a synchronized Dash Core node on the same host.
Evaluate any fork carefully before running it, as you would with any
other third-party software that handles mining rewards.
9 changes: 4 additions & 5 deletions docs/user/mining/pools.rst
Original file line number Diff line number Diff line change
Expand Up @@ -89,11 +89,10 @@ To finish the configuration, you will need to choose a mining pool. A
deep dive into the mining pool landscape is available `here
<https://blog.dash.org/luxor-launches-dash-pps-mining-pool-daf493bce9d2>`__.

To help with the security of the network and decentralization we
recommend using P2Pool. To set up your own P2Pool server, follow the
setup documentation available :ref:`here <p2pool>`. The code for
p2pool-dash is `available on GitHub
<https://github.com/dashpay/p2pool-dash>`__.
P2Pool has historically been recommended to help with the security of
the network and decentralization, but the ``dashpay/p2pool-dash``
software is no longer maintained. See the :ref:`P2Pool documentation
<p2pool>` for details and for community forks that continue the project.

If you do not want to set up your own pool, you can check out a list of
pools `here <https://chainz.cryptoid.info/dash/#!extraction>`__. In this
Expand Down