** TODO: implement in Swift? **
This is minexmr2.com Monero mining pool implementation based on jtgrassie's monero-pool. Just nearly 10% of code is added/rewritten, because jtgrassie's monero-pool offers a robust base to develop minexmr2.com pool as a proxy to decentralized p2pool. See build instructions below.
The name MINEXMR2 is inspired by departed old-school MINEXMR pool and conceptual decentralized p2pool. In no way this pool is related to original MINEXMR.
- ๐ญ FULL support of SChernykh p2pool has been implemented! Now minexmr2.com pool uses decentralized p2pool as a hashrate-liquidity provider. You have nothing to build, deploy, upgrade and maintain like in your own p2pool instance. If you mine with us, you get your pending balance update as regular as p2pool finds new block. Each time your pending balance reaches 0.01XMR you receive automatic payment.
โก Nov 01 2022: minexmr2.com site has new section: Useful Resources (Some Monero-related 3rd party resources we found useful).
โก Oct 27-28 2022: minexmr2.com site and this README texts have been fixed against further discussion in reddit post. Wrong text about resistance to 51% attack has been completely removed.
โก Oct 23 2022: minexmr2.com site and this README texts have been fixed against discussion in reddit post.
โก Oct 18 2022: minexmr2.com pool is rebuilt against Monero Fluorine Fermi, Point Release 1.2 and p2pool v2.4.
โก Sep 22 2022: minexmr2.com status online and fully operational; blocks are being found by local p2pool instance, approx. 1.62 blocks/hour. Detailed info at minexmr2.com.
The build system requires the Monero source tree to be cloned and compiled. Follow the instructions for compiling Monero, then export the following variable:
export MONERO_ROOT=/path/to/cloned/monero
Replacing the path appropriately.
Beyond the Monero dependencies, the following extra libraries are also required to build the pool:
- liblmdb
- libevent
- json-c
- uuid
As an example, on Ubuntu, these dependencies can be installed with the following command:
sudo apt-get install liblmdb-dev libevent-dev libjson-c-dev uuid-dev
P2pool should be compiled too, of course! Follow the instructions.
After installing all the dependencies as described above, to compile the pool as a release build, run:
make release_p2pool
The application will be built in build/release_p2pool/
.
Optionally you can compile a debug build by simply running:
make debug_p2pool
Debug builds are output in build/debug_p2pool/
.
During compilation, a copy of pool.conf is placed in the output build directory. Edit this file as you see fit. When running, the pool will first look for this file in the same directory as the pool binary, then in the current users home directory. The configuration options should all be self explanatory.
It is highly recommended if you run separate UPSTREAM and TRUSTED instances of minexmr2 pool under different user accounts of your Linux OS or even different hardware Linux servers to maintain good security.
Note, all the networking between instances or servers is performed via OpenVPN tunnel!
UPSTREAM instance communicates with monerod and p2pool servers, while TRUSTED instance communicates with monerod and monero-wallet-rpc servers. UPSTREAM instance's purpose is to listen for miner connections and redirect them to p2pool server, while recording billing info. Billing info recorded is being sent to TRUSTED instance that performs all the payment processing via calls to monero-wallet-rpc server.
pool-edge.conf is a typical configuration file for UPSTREAM instance. Don't forget to rename it to pool.conf in your instance's folder.
pool-trusted.conf is a typical configuration file for TRUSTED instance. Don't forget to rename it to pool.conf in your pool instance's folder.
Important! Your pool's wallet must contain some XMR balance, for example 0.05XMR, and the whole line in configuration file is dedicated to that:
p2pool-safe-balance = 0.05
If something goes wrong, a built-in watchdog routine preserves wallet balance from decrease below 0.05XMR (in this example).
UPSTREAM
- monerod
- p2pool
- monero-pool as Linux user/server named "monero-pool-upstream"
TRUSTED
- monero-wallet-rpc
- monero-pool as Linux user/server named "monero-pool-trusted"
Shutdown should be performed in reversed order.
Note, you can use several UPSTREAM bundles configured to communicate with the same TRUSTED bundle. If even TRUSTED bundle is temporarily offline, UPSTREAM bundle does record all the shares/billing info that will be transferred to TRUSTED bundle when it comes back online.
You donations help to evacuate my family from danger near-war zone of Ukraine.
Donate XMR: 4AoKL73JHbJWSws7exQyxMYwgEvqkrpxX6hiLwLA8YXyESLHVCk7r9djR8fmeaDMSABCryvu1PjUGDYmQnkBNHum9NhDpbW
Donate BTC: bc1qmg0jc8lnsqx82096cknfn9a8q6e723gm3kw23t