This guide will show you how to install the P2Pool software, create your own P2Pool node, and join it to the P2Pool network.
We will be using a fork of the original Bitcoin p2pool software, called zen2pool, that has been optimized for scrypt- and progressive-N scrypt-based altcoins. If you would like to install the Bitcoin specific node software, then use forrestv's version (instead of zen2pool) and substitute references to 'zen2pool' with p2pool throughout the rest of this guide.
If you want try P2Pool by just mining at an existing pool, rather than installing and configuring your own node, the see the Test Drive P2Pool guide.
This installation process is illustrated with Ubuntu Linux and Execoin, although the latter can be substituted with any other coin such as Anoncoin or Litecoin. It is assumed that you already have a local instance of the coin daemon running with the following parameters:
$ ./execoind -daemon -server -rpcallowip=127.0.0.1
The P2Pool software will later connect to execoind in server mode and will relay mining software RPC communication via the localhost.
If you don't have the execoind daemon, then you can fetch it from GitHub, compile and start with the command above. Execoin source code is available from GitHub with:
$ git clone https://github.com/execoin/execoin.git
Install Linux package dependencies:
$ sudo apt-get install git python-zope.interface python-twisted python-twisted-web
Now clone the zen2pool source code from GitHub to a local directory (git will automatically create the source directory):
$ git clone https://github.com/venzen/zen2pool.git
Change into the directory and have a look around:
$ cd ./zen2pool $ ls -l
Build the Scrypt modules
Both the generic and progressive-N scrypt modules are included in the py_modules directory. Let's build both while we're at it:
cd py_modules cd litecoin_scrypt sudo python setup.py install cd ../vertcoin_scrypt sudo python setup.py install
Start the node
Ensure execoind is running as described above and that a RPC username and password are set in the execoin.conf file that execoind would have prompted you to create upon the first run:
$ cat ~/.execoin/execoin.conf rpcuser=execoinrpc rpcpassword=<longrandomcharacterpassword>
Make sure you're in the zen2pool application root directory. We're going to start zen2pool with the following parameter:
--net tells zen2pool to use the 'execoin_zen' definition listed in the file p2pool/networks.py
Execute the complete command:
$ python run_zen2pool.py --net execoin_zen
If zen2pool complains about "bitcoind taking a long time" - this is a generic message warning that zen2pool cannot make a connection to the coind daemon. Make sure execoind is running and that you are not passing it a -maxconnections= parameter. Stop and restart zen2pool.
If you see the message "Success" and lots of messages with "???" declarations, don't worry, this is normal - zen2pool is bootstrapping the sharechain, and we have yet to point a miner at this node. Bootstrapping can take anywhere from a few minutes to an hour.
Test your zen2pool web interface by pointing your browser at
Alternatively, if you're running zen2pool on a remote server/VPS, substitute 127.0.0.1 with the remote IP address.
Once the sharechain has finished downloading, stop and restart zen2pool. At startup, it will display its progress loading the sharechain from its local disk cache and then indicate that it's ready for mining by displaying empty local P2Pool stats but a non-zero global hash rate. Startup your mining software and once it has submitted work for about an hour, the statics will be meaningfully populated, and you can monitor your mining in relation to the wider P2Pool network as well as other useful metrics.
Mining your P2Pool Node
You now have the option to point your mining software at your P2Pool node, as well as invite other people to mine the pool.
See the Mining P2Pool article for mining instructions and configuration settings.