P2Pool for Monero: How It Works, Why It Matters, and Who Should Use It
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.
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
-
Update packages and install basic tools.
This ensures you have
wgetand extraction tools available.sudo apt update && sudo apt upgrade -y sudo apt install -y wget tar bzip2 -
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. -
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).
-
Wait until the node is synchronized.
You can type
statusin 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.
-
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
-
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.targetPlaceholder note: replace
YOUR_MONERO_ADDRESSwith your public Monero address before enabling the service. Do not use a seed phrase here (a seed is never needed for mining payouts). -
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
--minioption documented here: P2Pool command-line options. -
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.jsoninside 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_ADDRESSwith your public address. Theurlpoints to your local P2Pool stratum port. You are not “joining a website”; you are connecting to your own machine. -
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:3333and 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
- Download Monero CLI from the official Monero downloads page. Use: Monero Downloads and choose the Monero CLI for Windows.
-
Extract the Monero CLI ZIP to a simple folder.
Example:
C:\Monero\. Keeping paths short reduces common Windows quoting/path errors. -
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
statusin the monerod window. - Wait until monerod is synced (or very close). P2Pool depends on current chain data. Starting P2Pool too early often creates confusing symptoms for beginners.
-
Download P2Pool for Windows from the official repository releases.
Use:
P2Pool official repository.
Extract it to a folder like
C:\P2Pool\. -
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 pausePlaceholder note: replace
YOUR_MONERO_ADDRESSwith your public address. This file is safe to keep because it does not contain secrets. -
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. -
Download and extract XMRig from official releases.
Use:
XMRig releases.
Extract to something like
C:\XMRig\. -
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_ADDRESSwith your public address. Theurlpoints to your own P2Pool. -
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.

monero.how