Money no one can freezeCash for the internet, private by default
Mining

P2Pool Monero: How the Decentralized Mining Pool Works

P2Pool Monero explained: a decentralized mining pool with no operator that pays you straight from the block. Main, mini and nano, setup and privacy.

By the MonkStash teamReviewed 10 min read
On this page

P2Pool is a decentralized mining pool for Monero. There is no pool operator, no central server and no pool wallet: miners work together on a small side chain, and when it finds a real Monero block, the reward goes straight to each miner's own wallet. This guide explains how P2Pool works, which of its three chains to choose, what you need to run it, and one privacy point you should know before you point your wallet address at it.

Key points
  • P2Pool has no operator, no pool wallet and no fee. The block itself pays your wallet.
  • Pick main, mini or nano by how often your hardware would find a share. Smaller machines belong on mini or nano.
  • You need your own synced monerod with ZMQ publishing turned on.
  • Payout addresses are public on the P2Pool side chain, so use a dedicated mining wallet.

What P2Pool is

In a normal mining pool, a company runs a server. Miners send their work to it, it receives the block reward, and later it sends each miner a payout. You have to trust the operator to count your work honestly and to pay you.

The P2Pool project removes that middle step. It describes itself as a decentralized pool with no central server and no pool wallet, where every pool block pays miners directly. Each miner runs P2Pool software next to their own Monero node. P2Pool keeps its own small blockchain, called a side chain, where miners record shares: smaller pieces of proof that they did real mining work.

P2Pool side chain (many small blocks, called shares)shareshareshareshareshareshareluckythis one also meetsMonero's difficultyA real Monero blockreward split inside the blockYour walletAnother minerAnd another
Shares build up on the side chain. When one is lucky enough to be a real Monero block, the reward is split inside that block and paid to each miner.

When a share also meets the difficulty of the main Monero network, it becomes a real Monero block. The reward in that block is already divided between the miners whose shares are in a recent window, so every winner is paid from the same block, with no one holding the money first.

Why it matters for Monero

Monero stays safe from attacks when mining power is spread across many independent people. If a few large pools control most of the power, they could in theory work together against the network, and a pool operator also becomes a place where mistakes, outages or pressure can hit everyone at once. The Monero project's own mining guide encourages smaller pools for this reason.

P2Pool goes further than a small pool. There is no operator to shut down or lean on, and every miner builds their own block template from their own node. That keeps decisions about which transactions go into a block in the hands of many people, which is closer to what Monero is meant to be. For the basics of mining, see how to mine Monero.

Main, mini and nano

P2Pool runs three separate side chains. They work the same way but have different share difficulties, which changes how often a small miner finds a share. The project's readme lists them:

ChainHow to select itBest for
MainDefault, no flagBigger setups that find shares often enough
Mini--miniSmaller machines that would find shares too rarely on main
Nano--nanoThe smallest miners

You can run only one chain at a time. The readme notes that mini and nano cannot be combined.

smaller minerbigger minernanofor the smallest minersflag: --nanominifor modest minersflag: --minimainfor big setupsdefault, no flagRule of thumb from P2Pool: if a share takes you over a day, move down a chain.
Smaller miners should pick a smaller chain, so they find shares often enough to be counted.

How to choose

The project does not give a fixed hash rate cut-off. Its advice is to use the average share time calculator linked from the P2Pool site: enter your hash rate and see how long it takes to find a share on the main chain. If that is more than a day, switch to mini or nano. Use the calculator with your real benchmark number, not a guess.

Why it matters

If your shares are too rare, they may drop out of the payout window before the pool finds a Monero block, and you receive nothing for that work.

What you need

  • Your own synced Monero node. P2Pool needs monerod 0.18.0.0 or newer, fully synced. See how to run a Monero node. If disk space is tight, read about pruned nodes and check the P2Pool readme for whether one is supported.
  • ZMQ publishing on. Start monerod with --zmq-pub tcp://127.0.0.1:18083, which P2Pool requires.
  • A miner. Commonly XMRig, as covered in the mining guide.
  • A wallet address. A fresh address in a wallet you control, discussed below.
  • Open ports. For good peer connections, forward the Monero port (18080) and the port of your chosen P2Pool chain. Main uses 37889, mini 37888 and nano 37890.

The readme also recommends flags such as --enforce-dns-checkpointing and --enable-dns-blocklist for monerod, plus --out-peers 32 --in-peers 64 if you have enough upload bandwidth (lower numbers for slow connections). Check the current readme before you copy any flags, because recommendations change.

Setup, step by step

This is the high-level order of operations. Follow the readme for exact commands on your system.

  1. Make a fresh mining wallet
    Create a wallet only for mining so your main funds are not linked to it. See the address note below and how to create a Monero wallet.
  2. Start monerod with ZMQ
    Run your node with --zmq-pub tcp://127.0.0.1:18083 plus the other flags you chose. Wait for it to fully sync before anything else.
  3. Start P2Pool
    Run ./p2pool --host 127.0.0.1 --wallet YOUR_ADDRESS, adding --mini or --nano if you picked a smaller chain. The first sync of the side chain takes a few minutes.
  4. Point XMRig at P2Pool
    Once P2Pool has synced, set your miner to connect to 127.0.0.1:3333. P2Pool acts as a local pool that your miner talks to.
  5. Watch for your first share
    Look at the P2Pool console for accepted shares. You can also check progress on a P2Pool observer site by entering your address, though your stats appear only after you have mined at least one share.

As in the main mining guide: only mine on hardware you own or may use, and download P2Pool and XMRig only from their official projects.

How payouts work

P2Pool pays by a scheme called PPLNS, pay per last N shares. When the pool finds a Monero block, the reward is divided among the miners who have shares in a recent window, in proportion to the difficulty of their shares. The readme says that window holds up to 2160 side chain blocks, about 6 hours, and adjusts automatically.

  • No pending balance. There is nothing waiting in an account. You are paid only when a block is found and your share is still in the window.
  • A minimum payout. The readme gives the smallest possible payout as the block reward divided by 2160, which is about 0.00027 XMR at the current reward. Smaller shares simply do not appear in that block.
  • Variance. Small miners can wait days to a week between payouts, according to the project's site. That is luck, not a fault.
  • Maturity. A found block needs about 60 blocks (roughly 2 hours) to mature before you can spend the reward.

P2Pool states a 0% fee. You still pay your own electricity, and the usual transaction fee when you later spend the coins.

Your payout address is public

This is the one thing many guides skip. Because P2Pool's side chain is public, the address you mine to is publicthere too. Anyone can look up that address on a P2Pool observer site and see your shares and the blocks that paid you. P2Pool's own start guide tells you to create a new wallet for mining for this reason.

Primary address or subaddress

By default P2Pool mines to a primary address, which starts with 4. According to the readme, you can also use a subaddress (which starts with 8): pass your main address with --wallet and the subaddress with --subaddress. See what a subaddress is. A subaddress helps keep payouts separate within a wallet, but the wallet itself is still the one you are tied to.

You can create that wallet in MonkStash. Validate the address you paste with the address validator before starting, since a typo sends rewards to the wrong place.

Common problems

SymptomLikely cause
P2Pool cannot connect to monerodNode not fully synced, wrong --host, or ZMQ not enabled
No shares for a long timeHash rate too low for the chain; try mini or nano
Miner is slowHuge pages not enabled, or too many threads for your cooling
Payout not visible in a walletThe wallet is not yet synced past the block, or does not support P2Pool payouts
Few peersPorts are not open or forwarded

What to do next

If you have not started yet, read how to mine Monero for the costs and the safety notes, and decide whether the numbers make sense for you. If you want to learn more about nodes, what a Monero node is is a gentle start. When you are ready, open a wallet for your payouts. More questions? See the FAQ.

Frequently asked questions

What is P2Pool for Monero?

P2Pool is a decentralized mining pool for Monero. It has no central server and no pool wallet. Miners work together on a separate side chain, and when the pool finds a real Monero block, the reward is split inside that block and paid directly to each miner's wallet.

What is the difference between P2Pool main, mini and nano?

They are three separate side chains. Main is the default. Mini and nano are for smaller miners, because they help you find shares more often. You pick one with a flag when starting P2Pool: --mini or --nano. You cannot use both at once.

Which P2Pool chain should I use?

Use P2Pool's own share time calculator. If your expected time to find a share is more than a day on main, its authors recommend switching to mini or nano.

Do I need to run my own Monero node for P2Pool?

Yes. P2Pool connects to your own synced monerod, with ZMQ publishing turned on. This is part of why it is more decentralized than a normal pool.

Can I use a subaddress with P2Pool?

Yes, with an extra flag. Give your main address with --wallet and the subaddress with --subaddress. A plain address starting with 4 works without it.

Does P2Pool charge a fee?

The project states 0% fee and no payout fee. You still pay the electricity to mine and the normal network fee when you later spend your XMR.

Is P2Pool private?

Not for the payout address. Your wallet address and your mining activity are visible on the P2Pool side chain, and public sites show stats for it. Use a dedicated wallet for mining.

How long until I get paid?

It depends on your hash rate and luck. You need to find a share and then the pool needs to find a Monero block while your share is still in the payout window. For small miners that can take days.

Next up

Keep reading

Mining

How to Mine Monero: A Plain Guide to RandomX and XMRig

11 min read
Run your own

How to Run a Monero Node (Full or Pruned), Step by Step

12 min read
Receiving privately

Monero Subaddresses: What They Are and When to Use One

9 min read
Smaller node, same job

Monero Pruned Node: What It Is and When to Use One

9 min read
The complete guide

Monero Node: Full, Pruned or Remote? The Complete Guide for 2026

21 min read