P2Pool: mining RandomX without a pool operator

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

Which coins use RandomX?
Monero is the coin RandomX was built for, but not the only one: XMRig's own coin table lists Monero, Zephyr and Townforge on standard RandomX, and Wownero, ArQmA, Graft and YadaCoin on variants of it. What each runs, and what such a list does not tell you.

XMRig: the RandomX miner, set up and explained
XMRig is the open-source miner most RandomX mining runs on: CPU first, with OpenCL for AMD and a plugin for NVIDIA, and official builds for Windows, Linux, macOS and FreeBSD. Its RandomX algorithm names, the settings that matter, and the 1% donation.

What is RandomX? The CPU proof of work, explained
RandomX is the proof of work Monero has run since 30 November 2019: random programs executed in a virtual machine over a 2080 MiB dataset, built so that an ordinary CPU stays the efficient way to mine. How one hash is made, and why it needs that much memory.