P2Pool: mining RandomX without a pool operator

A flat illustration of a ring of small houses around a round blue pool, each house joined to the next by a thin line

Most Monero mining goes through pools, and a pool is a server somebody runs: it decides which transactions go into the blocks its miners find, holds their earnings until it pays them, and can be shut down. Solo mining avoids all of that, but a small miner may wait a very long time for a block. P2Pool is the third way. It is a pool with no operator — a chain of its own, run by the miners' own nodes, that pays every miner directly from each Monero block the pool finds.

How it works

P2Pool keeps a sidechain of its own, merge-mined with Monero. Miners find shares on the sidechain, which is far easier than finding a Monero block, and each share stays in the payout window for up to 2160 sidechain blocks, about six hours. When anyone in the pool finds a Monero block, its reward is split between every wallet with a share in the window, in proportion to the difficulty of their shares — and paid out in that same block. There is no pool wallet; nobody holds anyone's money.

From its own comparison: 0% fee, no payout fee, and a minimum payout of about 0.00027 XMR, the Monero block reward divided by 2160. A centralised pool's minimum is typically 0.001 to 0.01 XMR, and solo mining pays only in whole blocks of 0.6 XMR or more. The sidechain makes a block every 10 seconds by default.

One caveat is in the README itself: if the pool as a whole finds Monero blocks less often than once every six hours — below about 15 MH/s — not every share is paid. Over time, it says, payouts average out to what a regular pool would pay.

Main, mini and nano

There are three public sidechains. Main is the default; mini and nano are separate sidechains, joined by starting P2Pool with --mini or --nano — never both. A share counts only on the chain it was found on. The README does not rank them, but its own example starts P2Pool with --mini, and each chain has a status page of its own. Each has its own peer-to-peer port: 37889 for main, 37888 for mini, 37890 for nano.

What it needs

A synced Monero node. monerod v0.18.0.0 or newer, started with --zmq-pub tcp://127.0.0.1:18083, which P2Pool cannot work without. The README recommends v0.18.4.6 or newer; the newest Monero release on 25 October 2026 was v0.18.5.4, of 17 October.

P2Pool itself, given the wallet address: ./p2pool --host 127.0.0.1 --wallet YOUR_ADDRESS --mini. The first sync takes five to ten minutes. The address can be a primary one, starting with 4, or a subaddress given with --subaddress alongside the primary. Wallet addresses are public on P2Pool, so the README recommends a new wallet just for it.

A miner, pointed at P2Pool rather than at a pool: ./xmrig -o 127.0.0.1:3333. The wallet address goes to P2Pool, not to the miner; any address set in XMRig is ignored. One P2Pool node can serve many miners. The XMRig guide has the miner's side.

Open ports help: 18080 for Monero and the sidechain's port for P2Pool. And on Linux, huge pages for all three programs — the README reserves 3072 of them with sudo sysctl vm.nr_hugepages=3072. It also advises running the lot under a separate, restricted user account.

Versions

The newest stable release on 25 October 2026 was P2Pool v4.18.1, of 22 September 2026. A v5.0 beta followed on 1 October with support for RandomX v2 and Monero's coming FCMP++ upgrade, but it runs only on the beta stress network and refuses the main, mini and nano chains. It also drops subaddress support, because of changes in Monero's consensus rules. When Monero forks, both Monero and P2Pool have to be updated as soon as the new versions are out.

P2Pool: mining RandomX without a pool operator: questions

Does P2Pool charge a fee?

No. P2Pool has a 0% pool fee and no payout fee. Rewards are paid directly from each Monero block the pool finds to the wallets with shares in the payout window.

Should I use P2Pool main, mini or nano?

They are three separate sidechains, joined with no flag, --mini or --nano, and a share counts only on the chain it was found on. The P2Pool README does not rank them, but its own example command uses --mini. All three have the same 0% fee.

Where does the wallet address go when mining on P2Pool?

To P2Pool, with --wallet. The miner, such as XMRig, connects to P2Pool at 127.0.0.1:3333 and any wallet address set in the miner is ignored.

Source: P2Pool README and releases (SChernykh/p2pool on GitHub) checked against the source

More RandomX guides