Monero is a secure, untraceable and resilient digital currency. We believe it is the successor to Bitcoin. Read why.

P2Pool for Monero: How It Works, Why It Matters, and Who Should Use It

Last updated on

Introduction

P2Pool is a decentralized, peer-to-peer mining pool protocol used by Monero miners who want pool-like payouts without trusting a central pool operator. Instead of sending work to a pool server that tracks “your balance,” P2Pool miners collectively maintain a small sidechain (“sharechain”) that records recent contributions and pays miners directly in the coinbase transaction when a Monero block is found.

This guide explains P2Pool’s payout mechanics (shares and the PPLNS window), what P2Pool mini is and when it’s appropriate, and how home users can run a P2Pool mini node with minimal resources. It also covers what is different about running P2Pool compared to running a regular Monero node and where the trade-offs are.

If you are brand new to mining, you may want a general overview first: How to Mine Monero on Windows, How to Mine Monero in 2026 and the Monero mining calculator are useful context.

Core explanation

What P2Pool is (and what it is not)

P2Pool is software and a network protocol (not a company) implemented in the official P2Pool repository. It forms a peer-to-peer layer where participants share recent mining contributions and collectively build block templates that pay everyone currently eligible.

P2Pool is not the same as solo mining. In solo mining, you only get paid if you find a Monero block. In P2Pool, you are still “mining your own block template,” but that template includes payouts to all miners who have shares in the active window. That’s why payouts can be more frequent than solo mining without relying on a pool operator.

Diagram showing miner connecting to a local P2Pool node and Monero daemon
Why this matters: P2Pool is a local service you run that sits between your miner and the Monero network. What to do: the miner connects to P2Pool on your machine, and P2Pool connects to your Monero daemon. Common misunderstanding: thinking you point your miner directly at the Monero network without a daemon. Steps may differ slightly by version, but the workflow remains the same.

Why P2Pool exists

  • Trust model: no pool operator can withhold payouts, censor miners, or misreport balances.
  • Decentralization: reduces hashrate concentration in a few pool servers.
  • Direct payout: rewards go directly to your wallet address via the coinbase output.

When to use it (and when not to)

Use P2Pool if you value decentralization and are comfortable running a Monero daemon (or connecting to one) and tolerating payout variance. Avoid P2Pool if you need maximum simplicity, cannot run a daemon reliably, or require smoother short-term payout behavior than a PPLNS window naturally provides.

P2Pool payout mechanics (shares, window, variance)

Shares: proof you contributed recent work

In P2Pool, your miner submits “shares” to your local P2Pool node. A share is a valid proof of work at a lower difficulty than a full Monero block. Shares become blocks on the P2Pool sharechain, and the sharechain is what P2Pool peers use to agree on who contributed recently. The Monero project’s P2Pool explanation describes this sharechain model and how it becomes “potentially Monero blocks.” See Moneropedia: P2Pool.

PPLNS window: a sliding eligibility period

P2Pool uses a Pay-Per-Last-N-Shares (PPLNS) window: only shares inside the recent window are eligible for payouts. The P2Pool README describes this as a window of up to 2160 P2Pool blocks (about 6 hours, auto-adjusted). See P2Pool README (PPLNS window).

Imagine a conveyor belt of recent shares. While your shares are still on the belt, you earn a proportional slice of any Monero block P2Pool finds. If you stop mining, your shares eventually slide off the belt and you stop earning from new blocks.

Payout variance: what “normal” looks like

P2Pool variance has two layers: (1) how often you find shares (depends on your hashrate and the share difficulty), and (2) how often the P2Pool network finds Monero blocks during the time your shares are in the window. This means short “dry spells” are expected, especially at low hashrate, and do not automatically indicate misconfiguration.

Practical expectation: evaluate P2Pool performance over days and weeks, not hours. If you need faster feedback at low hashrate, that is the reason P2Pool mini exists.

P2Pool main vs P2Pool mini (and what “mini nodes” mean)

What “mini” is

P2Pool mini is a separate sharechain designed to lower the barrier for smaller miners. The P2Pool documentation describes the --mini option and notes it changes defaults like the P2P port. See P2Pool command-line options.

Why mini matters for home miners

With low hashrate, finding a valid share on the main sharechain can be infrequent, which makes learning and troubleshooting frustrating. Mini lowers share difficulty so your miner can submit shares more regularly, giving you more consistent evidence the system is working and typically more frequent (but smaller) payouts.

Expert default recommendation

Default: if you are a typical home miner (CPU mining on one or a few machines), start with P2Pool mini. Consider main P2Pool only when your hashrate is high enough that you find shares regularly on main.

P2Pool mini nodes: what they do (and what they don’t)

A “P2Pool mini node” is just your P2Pool instance running in mini mode and participating in the mini sharechain. It is still a full P2Pool participant: validating shares, connecting to peers, and building templates that include correct payouts. It does not remove the need for a Monero daemon; it still requires access to a synced daemon.

Choosing between a normal pool, P2Pool, and solo mining

There are multiple valid options. The right default depends on your goals (simplicity vs decentralization vs variance tolerance). Here is a structured comparison with an expert default.

Option Trust model Payout variance Operational complexity Decentralization impact
Centralized pool Trust the operator Lower short-term variance Low Can concentrate hashrate
P2Pool (mini) No operator trust Moderate (lower than solo, higher than big pools) Medium Supports decentralization
Solo mining No operator trust Very high Medium Supports decentralization

Who should choose what?

  • Choose P2Pool mini if you want decentralization and direct payouts, and you can run a daemon reliably.
  • Choose a centralized pool if you want the simplest setup and smoother short-term payouts (at the cost of trust and centralization).
  • Choose solo only if you understand the variance and are comfortable waiting potentially a long time between rewards.

Running P2Pool at home: nodes, resources, and safety trade-offs

Do you need a Monero node?

Yes. P2Pool needs access to a Monero daemon (monerod) to get chain data and to submit found blocks. You can run monerod locally (best for trust) or connect to a remote daemon (more convenient, but you are trusting that node’s view of the network).

If you want a deeper node primer, monero.how already has: How to Run a Monero Node.

Can you use a pruned node?

Often, yes, and it can reduce disk usage. P2Pool’s own FAQ notes that a pruned Monero node can be used with P2Pool. See P2Pool FAQ. The practical trade-off is that troubleshooting can be more complex if you are new; full nodes provide the most predictable baseline.

Network ports and connectivity

P2Pool can work with only outbound connections, but better connectivity helps the network and reduces “weird” edge cases. The P2Pool FAQ recommends opening Monero’s P2P port (commonly 18080) and P2Pool ports (main/mini) for better connectivity. See P2Pool FAQ (ports).

Practical guidance: run P2Pool mini at home

The two procedures below are fully standalone. Each sets up: (1) Monero daemon, (2) P2Pool mini, (3) a miner pointed at your local P2Pool. This guide uses XMRig official releases for the miner because it is widely used and well-documented.

Procedure 1: Debian/Ubuntu (P2Pool mini + local monerod + XMRig)

You are about to run a local Monero daemon, run P2Pool mini against it, and then point XMRig at your local P2Pool node. This keeps the trust model strong (you validate your own chain data) while keeping the setup realistic for home users.

Prerequisites

  • A 64-bit Debian/Ubuntu machine with a stable internet connection
  • Enough disk space for a Monero node (full node requires significant space; pruned reduces it)
  • A Monero wallet address (only the public address is needed)
  • Basic comfort using a terminal

Step-by-step

  1. Update packages and install basic tools. This ensures you have wget and extraction tools available.
    sudo apt update && sudo apt upgrade -y sudo apt install -y wget tar bzip2
  2. Download the Monero CLI from official sources. The Monero downloads page is the canonical entry point: Monero Downloads.
    mkdir -p ~/monero && cd ~/monero wget https://downloads.getmonero.org/cli/linux64 -O monero-linux64.tar.bz2 tar -xjvf monero-linux64.tar.bz2

    Example note: the archive extracts into a versioned directory (for example, monero-x.y.z). In the next steps, replace the directory name with the one you actually extracted.

  3. Start monerod and begin syncing. For a first-time setup, start simple. Advanced flags can come later.
    cd ~/monero/monero-* ./monerod

    Optional: if you want to verify binaries before running them, Monero provides a verification guide: Verify Monero binaries (advanced).

  4. Wait until the node is synchronized. You can type status in the monerod console to see sync progress.

    Success indicator: the daemon reports it is synchronized (or very close) and stays connected to peers. If this step is skipped, P2Pool will behave unpredictably because it depends on current chain data.

  5. Download and extract P2Pool. Use the official P2Pool repository for releases: P2Pool official repository.
    mkdir -p ~/p2pool && cd ~/p2pool wget https://github.com/SChernykh/p2pool/releases/latest/download/p2pool-linux-x64.tar.gz tar -xvf p2pool-linux-x64.tar.gz
  6. Create a small systemd service (optional but recommended). This makes P2Pool easier to start on boot and reduces “I forgot to run it” mistakes. Save this as /etc/systemd/system/p2pool-mini.service.
    [Unit]
    Description=P2Pool mini
    After=network-online.target
    
    [Service]
    User=%i
    WorkingDirectory=/home/%i/p2pool
    ExecStart=/home/%i/p2pool/p2pool --mini --host 127.0.0.1 --wallet YOUR_MONERO_ADDRESS
    Restart=on-failure
    RestartSec=5
    
    [Install]
    WantedBy=multi-user.target
          

    Placeholder note: replace YOUR_MONERO_ADDRESS with your public Monero address before enabling the service. Do not use a seed phrase here (a seed is never needed for mining payouts).

  7. Start P2Pool mini (foreground first, to confirm it works). Run it manually at least once before using the service so you can see errors clearly.
    cd ~/p2pool ./p2pool --mini --host 127.0.0.1 --wallet YOUR_MONERO_ADDRESS

    Success indicators: P2Pool connects to peers, synchronizes the sharechain, and shows no repeated “cannot connect to monerod” errors. Mini mode uses the --mini option documented here: P2Pool command-line options.

  8. Download XMRig and create a config file that points to your local P2Pool. Download from the official releases: XMRig releases.
    mkdir -p ~/xmrig && cd ~/xmrig wget https://github.com/xmrig/xmrig/releases/latest/download/xmrig-*-linux-static-x64.tar.gz -O xmrig-linux.tar.gz tar -xvf xmrig-linux.tar.gz

    Create config.json inside the extracted XMRig folder (replace the folder name as needed):

    {
      "autosave": true,
      "cpu": { "enabled": true },
      "pools": [
        {
          "url": "127.0.0.1:3333",
          "user": "YOUR_MONERO_ADDRESS",
          "pass": "x",
          "keepalive": true,
          "tls": false
        }
      ]
    }
          

    Placeholder note: replace YOUR_MONERO_ADDRESS with your public address. The url points to your local P2Pool stratum port. You are not “joining a website”; you are connecting to your own machine.

  9. Run XMRig using the config, then tune threads if needed.
    cd ~/xmrig/xmrig-* ./xmrig -c config.json

    Success indicators: the console shows “accepted” shares and a running hashrate. Hashrate is the speed of your miner (hashes per second); XMRig prints it in the console, usually as short averages (e.g., 10s/60s/15m).

What to expect

  • P2Pool will show peer connections and sharechain sync messages.
  • XMRig will show a hashrate line and “accepted” shares once it is working.
  • Payouts (when they happen) appear directly in your wallet as incoming outputs, not as a “pending pool balance.”

Common problems (and fixes)

  • P2Pool says it can’t connect to monerod: confirm monerod is running and fully synced; keep monerod open and re-run P2Pool.
  • No shares accepted in XMRig: confirm the pool URL is 127.0.0.1:3333 and that P2Pool is running; check that the firewall is not blocking local connections.
  • Very low hashrate: reduce background workload; ensure CPU governor/power settings are not throttling; try adjusting XMRig threads in config.

Safety notes

  • Only download Monero software from getmonero.org downloads and verify binaries when feasible.
  • Never enter or store your seed phrase in mining configs; mining needs only a public address.
  • Do not expose RPC ports to the internet unless you fully understand authentication and firewalling.

Next step: keep mining through multiple PPLNS windows (days, not hours) to build an accurate expectation of variance.

For further details about Monero mining with XMRig on Debian/Ubuntu visit our How to Mine Monero in 2026 guide.

Procedure 2: Windows (P2Pool mini + local monerod + XMRig)

You are about to run monerod and P2Pool mini on Windows and point XMRig at your local P2Pool node. This keeps payouts direct-to-wallet while avoiding reliance on a centralized pool operator.

Prerequisites

  • Windows 10 or newer (64-bit)
  • Enough disk space for monerod data
  • A Monero wallet public address
  • Ability to extract ZIP files

Step-by-step

  1. Download Monero CLI from the official Monero downloads page. Use: Monero Downloads and choose the Monero CLI for Windows.
  2. Extract the Monero CLI ZIP to a simple folder. Example: C:\Monero\. Keeping paths short reduces common Windows quoting/path errors.
  3. Start monerod and begin syncing. Open Command Prompt in the Monero folder and run:
    monerod.exe

    Success indicator: monerod stays connected to peers and shows sync progress. You can type status in the monerod window.

  4. Wait until monerod is synced (or very close). P2Pool depends on current chain data. Starting P2Pool too early often creates confusing symptoms for beginners.
  5. Download P2Pool for Windows from the official repository releases. Use: P2Pool official repository. Extract it to a folder like C:\P2Pool\.
  6. Create a P2Pool mini start script. Save the following as C:\P2Pool\run-p2pool-mini.bat:
    @echo off
    cd /d C:\P2Pool
    p2pool.exe --mini --host 127.0.0.1 --wallet YOUR_MONERO_ADDRESS
    pause
          

    Placeholder note: replace YOUR_MONERO_ADDRESS with your public address. This file is safe to keep because it does not contain secrets.

  7. Run P2Pool mini and confirm it connects. Double-click run-p2pool-mini.bat. Success indicators: sharechain synchronization completes and peer connections appear. Mini mode behavior and defaults are documented here: P2Pool command-line options.
  8. Download and extract XMRig from official releases. Use: XMRig releases. Extract to something like C:\XMRig\.
  9. Create an XMRig config that points to your local P2Pool node. In the XMRig folder, create config.json:
    {
      "autosave": true,
      "cpu": { "enabled": true },
      "pools": [
        {
          "url": "127.0.0.1:3333",
          "user": "YOUR_MONERO_ADDRESS",
          "pass": "x",
          "keepalive": true,
          "tls": false
        }
      ]
    }
          

    Placeholder note: replace YOUR_MONERO_ADDRESS with your public address. The url points to your own P2Pool.

  10. Run XMRig using the config file. Open Command Prompt in the XMRig folder and run:
    xmrig.exe -c config.json

    Success indicators: XMRig prints a hashrate line and shows “accepted” shares. Hashrate is your mining speed; XMRig prints it continuously in the console.

What to expect

  • monerod sync may take a long time on first run; don’t treat that as a P2Pool problem.
  • P2Pool mini sync is usually much faster than monerod and then stabilizes with peers.
  • XMRig will show accepted shares once everything is connected; payouts land directly in your wallet when P2Pool finds Monero blocks while you have shares in-window.

Common problems (and fixes)

  • Windows Defender/AV flags XMRig: verify you downloaded from official releases, then add a folder exclusion if you choose to run it.
  • XMRig shows “connection refused”: confirm P2Pool is running and listening; confirm you used 127.0.0.1:3333.
  • P2Pool shows no peers: allow it through Windows Firewall; connectivity improves if recommended ports are open per P2Pool FAQ.

Safety notes

  • Do not download mining software from random “repack” sites. Use official sources only.
  • Never store your seed phrase on a mining machine; mining needs only a public address.
  • Keep your system updated; miners and nodes are network-facing software.

Next step: once stable, consider running P2Pool/monerod at startup and tracking expected variance over multiple days.

For further details about Monero mining with XMRig on Windows visit our How to Mine Monero on Windows guide.

Frequently Asked Questions

Is P2Pool the same as solo mining?

No. Solo mining pays only when your miner finds a full Monero block; P2Pool pays you when the P2Pool network finds blocks while your shares are inside the PPLNS window. Why: P2Pool is cooperative—your payout is proportional to your recent share difficulty compared to the window total, not based on “your own block.” Practical implication: evaluate results over days/weeks and expect more variance than large centralized pools but far less than solo mining. Common misunderstanding: “direct-to-wallet payouts” does not mean you are mining alone.

Why does P2Pool mini exist, and should most home users use it?

P2Pool mini exists to lower share difficulty so smaller miners can submit shares more regularly and see predictable “accepted share” feedback. Why: on the main sharechain, low-hashrate miners may wait a long time to find even one share, making payouts and troubleshooting frustrating. Practical implication: most home CPU miners should start on mini and only switch to main when they consistently find shares on main. Common misunderstanding: mini is not “less legitimate”; it is a separate sharechain tuned for smaller miners.

Why do P2Pool payouts feel “random” even when everything is configured correctly?

P2Pool variance comes from both share-finding (your hashrate vs share difficulty) and block-finding (how often the P2Pool network finds Monero blocks while you are in-window). Why: PPLNS is designed to discourage hopping and reward consistent participation, but it cannot remove probability from mining. Practical implication: avoid judging performance over short windows; keep mining through multiple PPLNS windows and compare long-term averages to expectations. Common misunderstanding: “no payout today” is not proof that P2Pool is broken.

Do I need to open ports to use P2Pool?

P2Pool can work with only outbound connections, but connectivity and network health improve when nodes accept inbound connections. Why: more reachable peers reduces reliance on a few well-connected nodes and helps share propagation. Practical implication: if you can safely do so, follow the port guidance in the P2Pool FAQ, but do not expose RPC services without proper security controls. Common misunderstanding: opening random ports is not required “to get paid,” but it can reduce edge-case connectivity issues.

Conclusion

P2Pool is a practical way to mine Monero with pool-like cooperation while preserving decentralization and avoiding a trusted operator. For most home miners, P2Pool mini is the best starting point: it lowers the share difficulty barrier and makes the system easier to validate and learn. If your priority is a simpler experience with smoother short-term payouts, a centralized pool may be easier—but it changes the trust model.


If you have feedback, corrections or suggestions for improving this guide, please send them to hello@monero.how. Information on this site is provided for educational purposes only and does not constitute investment advice. Use at your own risk.

Follow us
Exchange instantly
Sponsor
Latest Price
Sponsor
Monero.how Tutorials
Why Monero vs Bitcoin
Monero ELI5 (Explain like I'm five) - a super simple explanation of how Monero works
How Monero's privacy works
Monero Infographic
How long transactions take
Transaction fees
Glossary of the most important Monero terms
A low-level explanation of the mechanics of Monero vs Bitcoin in plain English
How to use the Monero GUI wallet
How to create a Monero command line wallet
How to speed up initial blockchain sync
How to send and receive Monero on the command line
How to prove you've made a payment
How to restore a command line wallet from your 25 word seed
How to verify your funds with a private view key
How to buy Monero
How to buy Monero via Coinbase
How to Buy Monero Using LocalMonero
How to Buy Monero Using Binance
Set up a Monero wallet on a USB pendrive linux computer using a remote daemon
How to Mine Monero in 2026 – CPU Mining & the GPU Reality
How to Mine Monero on Windows (2026): XMRig (CLI) + P2Pool + GUI Options
Monero mining calculator
P2Pool for Monero: How It Works, Mini, and Payouts
How to run a Monero Node
Configure OpenAlias to more easily share your Monero address
How to Safely Hold Monero in Cold Storage
Create a paper wallet for secure offline storage
Display a Monero ticker on your Mac menu bar
Avoiding Google ad attacks
Trusted and untrusted sites
Send feedback, corrections or suggestions to hellomonero.how
Donations for running costs appreciated at 86oPE889B4qeJn14jkhQkPFnwRUV3Upd8TZjbU89JdWpH7NbECNHXMG67vSLCKZt1nTWK4v445cndXLNtw24WzmNGYs7WeH
Thanks to Monero developers and community members that answered questions that contributed to the content in this site: jollymort, hyc, moneromoo, smooth, jwinterm, debruyne, fluffypony, pero, needmoney90, ferretinjapan, idunk, saddam, wolf0, daveyjones, snipa, gingeropolous, markos, othe, m5m400, luigi1111, kenshi84
Disclaimer: This site contains opinion for informational purposes only and does not consitute investment advice. Information may contain errors and omissions. Use solely at your own risk. Services listed here are run by third parties and are not vetted by this site. The authors of this site and/or the authors of articles linked to from this site may have financial investments that may bias their opinions, including ownership of Monero currency. Always do your own research, form your own opinions, and never take risks with money or trust third parties without verifying their credibility. Remember to take your computer security seriously and never use a computer or phone that is at risk of infection by untrusted software that may contain malware or viruses. © Copyright 2025.