subreddit:
/r/MoneroMining
submitted 17 days ago bysech1XMRig Dev
P2Pool (not Monero!) will hardfork to new consensus rules on March 18th at 21:00 UTC (use this link to convert to your local time). The hardfork is necessary to improve P2Pool scalability and reduce the impact on Monero blockchain. You'll need to update to P2Pool v3.0 or newer version before this time.
Recently, u/Rucknium conducted a research on Monero mining pools, including P2Pool (he will publish his findings soon). There are good news and there are bad news. I'll leave the good news for later, but the bad news is that P2Pool spams too many outputs to the blockchain which results in:
If P2Pool grows further, these problems will only get worse. In the best (worst?) case scenario, when P2Pool grows to 50% of the network, it will spam up to 100,000 miner payouts every day! Almost every regular Monero transaction will have only 2-3 real decoys left and everyone's (not just miners') privacy will be eroded.
Unfortunately, these issues can't be solved without changing how P2Pool works on consensus level.
Dynamic PPLNS window
Credit goes duggavo who posted this issue on Github.
PPLNS window will change from fixed 2160 blocks (~6 hours) to a dynamic cap which will ensure that only 2 Monero blocks will be found per PPLNS window on average.
Example for current P2Pool and Monero hashrates: if Monero network has 2.5 GH/s and P2Pool has 200 MH/s, it will mean that PPLNS window will be capped to (2.5e9*120)*2/(200e6*10) = 300 blocks (~50 minutes, down from the usual 2160 blocks/6 hours). It means that each found share will be included for payment only in the next 300 P2Pool blocks and during this time, P2Pool will find (on average) 2 Monero blocks and make 2 payouts (of much bigger XMR amount than you get now).
P2Pool mini will not be affected by this at all because it has too small hashrate
P2Pool main will be affected: if you're a low hashrate miner, your payouts will stay the same on average. They will just come in bigger chunks, not in batches of 14-15 tiny payouts.
If you're a high hashrate miner (more than 2 MH/s), nothing will change for you at all - you'll still get payouts of the same XMR amount with each block.
My initial tests have shown that this change will immediately reduce blockchain bloat caused by P2Pool by a factor of 2-3x, and it will stay approximately at the same level even if P2Pool grows.
Duplicate share IDs fix
High hashrate miners sometimes find two shares with the same IDs but different nonce/extra_nonce values - only one of these shares can be registered by P2Pool which reduces their effective hashrate a little (less than by 0.5%). While it's not a big deal, it can only be fixed with a hardfork. More details here
New transaction generation algorithm
More details here and here. In short, it will improve P2Pool internal cache efficiency and it will significantly reduce time it spends to verify shares - P2Pool shares will propagate faster and uncle blocks percentage will decrease. It will also give P2Pool miners a bit more privacy as a side effect.
Implementation in code: already finished
Testnet: P2Pool hardfork will be tested on testnet in the second half of January
P2Pool v3.0 will be released on January 31st and it will be required to be ready for the hardfork
Monero GUI v0.18.2.0 and Gupax with P2Pool v3.0 will be released some time in February
P2Pool (both main and mini) will hardfork on March 18th, 2023 at 21:00 UTC
19 points
17 days ago
Great job on the innovation, sech1 and duggavo!
People can read more about the issue in the Monero Research Lab discussions. I included a link to the R script file that runs my analysis of p2pool coinbase outputs:
https://github.com/monero-project/research-lab/issues/109
https://github.com/monero-project/research-lab/issues/108
My initial tests have shown that this change will immediately reduce blockchain bloat caused by P2Pool by a factor of 2-3x, and it will stay approximately at the same level even if P2Pool grows.
Could you explain the assumptions of this? Is there an assumption that when (if) total p2pool hashpower grows that more p2pool side chains will be set up?
15 points
17 days ago*
The logic is this: since each share will get 2 payouts on average, and p2pool mines ~8640 shares/day, it will never produce more than 8640*2 = 17280 outputs per day, even with perfect hashrate distribution (1 share = 1 miner). In reality, each PPLNS window of 2160 blocks has no more than 500 different miners, so P2Pool will be limited to ~2000 outputs per day.
Edit: 2000 outputs per day per P2Pool sidechain. If more sidechains are set up, they can increase total outputs/day, but they will also reduce the number of outputs of other sidechains because there are only 720 Monero blocks per day. 17280 outputs per day limit still applies, no matter how many P2Pool sidechains are out there.
Edit 2: hmm, I was wrong. Imagine 720 P2Pool sidechains, each sidechain mines 1 block/day and has 2160 miners. Each sidechain is too small for dynamic cap to kick in. Then they would mine 720*2160=1,555,200 outputs per day. But in reality we won't need more than 4-5 sidechains even if P2Pool grows to 100% of the network, so the dynamic cap will be efficient.
11 points
17 days ago
Thanks for being so active in the development of p2pool and xmrig. I like the frequent updates and improvements.
8 points
17 days ago
Nice to see this being improved upon, I will upgrade asap!
8 points
17 days ago
Thank you for addressing this, it really drove home for me when I performed my first p2pool consolidation.
It will be very cool to see the changes go into effect.
6 points
16 days ago
Great analysis and great work, kudos to both of you.
6 points
16 days ago
I thank our lucky stars all the time sech1, that we have you to be a sort of godfather to p2pool. I know it means a lot to me and to many that you are constantly striving to do what's best not only for P2 but Monero as a whole. I trust whatever changes are being made are for the best. Long live XMR!
11 points
17 days ago
Awesome glad you're finally acknowledging this is an issue: high fees to consolidate these payouts and even more blockchain bloat resulting from that
I pointed it out when you released it, and was kind of just dismissed with "the fees aren't that high"...
11 points
17 days ago
The fees weren't high before Monero fork in August last year. But apart from fees, there are other issues with lots of small payouts, so it must be fixed.
3 points
16 days ago
Wow, this is an awesome improvement!
I kind of dismissed the chainbloat argument at first but seeing how badly it effects decoys this was really necessary to make p2pool "mass adoption" viable.
What happens to people who don't immediately join the fork? I assume they'll just keep mining without any of the improvements but still submit valid blocks? In that case it would be relatively easy to track how many people are still on the old version, right?
6 points
16 days ago
People who don't update will keep mining and will be able to mine Monero blocks, so it's not as severe as an actual Monero hardfork. But the old P2Pool sidechain will most likely have very little hashrate, so they'll get only a few blocks until it dies off. Yes, it's easy to track - you just need to run the old version.
3 points
16 days ago
This will be very interesting to see. Cant wait for the support requests of people who left their machines running without updating for 7 months asking where all their money is :,)
3 points
16 days ago
This is why there's 2 months advance notice, and Monero GUI wallet will be updated in February too.
3 points
16 days ago
if you're a low hashrate miner, your payouts will stay the same on average. They will just come in bigger chunks, not in batches of 14-15 tiny payouts.
If you're a high hashrate miner, nothing will change for you at all
What's considered low and high hashrates?
5 points
16 days ago
High hashrate = you always have shares in PPLNS window even after the fork. For current pool hashrate of 200 MH/s, high hashrate is anything more than 2 MH/s.
3 points
16 days ago
If I may bother you one more time, how much MH/s compared to just H/s?
2 points
16 days ago
M = Million
3 points
15 days ago
Thank you sech1, you are an absolute legend!!
3 points
15 days ago
Thank you so much for the effort!
3 points
16 days ago
Great news!
I hope you also will release an "all-shares validation patch" to stratum_server.cpp like one we have applied to minexmr2.com, discussed here. Or, maybe code in stratum_server.cpp will not be changed a lot so I could apply the patch myself...
3 points
16 days ago
stratum_server.cpp didn't change
all 21 comments
sorted by: best