TL;DR - Comparison of payouts of NastyPoP and NastyP2P. Here's the current chart showing payouts over time:
Expected Payouts vs Actuals
Raw spreadsheet:
https://www.dropbox.com/s/vv7r7ejq2pquynl/pop_vs_p2p.xlsx?dl=0A couple weeks ago I wrote a post comparing p2pool's payouts to those of BAN, clearly showing that p2pool has paid out an average of 112.63% of expectations over the lifetime of the BAN pool. BAN pays 110% PPS, so p2pool has beaten it by 2.63%. You can see my post here:
https://bitcointalk.org/index.php?topic=875644.0.
After reading my thread, OgNasty asked if I would do a similar comparison between p2pool and his newly created NastyPoP pool. For those of you who do not know what that is, let me briefly describe it. OgNasty has been running his own p2pool node for a long time at nastyfans.org. During the existence of his pool, he's offered some pretty interesting additions to standard mining, including the ability to purchase "seats", which effectively give the owner of a seat a membership to the nasty fan club. The seats themselves are special 1 ounce silver coins that are actually pretty cool. You can check them out here:
https://nastyfans.org/mint.
As anyone who has been involved with p2pool is aware, one of the biggest problems with the pool is variance. Specifically, as the pool grows, individual miners suffer greater and greater variance. This is precisely the opposite of what happens in a more traditional pool like BTCGuild, where the larger the pool gets, the steadier the payouts become.
OgNasty and Nonnakip decided to do something about it and introduced NastyPoP. Effectively, this is the first real attempt by anyone to try and tackle the p2pool variance problem. Bitmain's p2p AntPool is also out there, but it seems to be stuck in limbo, so who knows. So how does it work? Well, with a regular p2pool node you connect your miner by providing a bitcoin wallet address as the username and anything as a password. If and when your miner finds a share with a difficulty greater than the target share chain difficulty, your share gets added to the chain. When the pool finds a block, you get paid for the shares you have in the current payout list of the chain.
NastyPoP is a bit different. When you connect, you still provide your bitcoin wallet address, but you append -PoP to the end of it. This signifies to the nasty pool that you are going to use their proprietary payout system. Underneath the scenes, OgNasty and Nonnakip have created a sort of "pool on top of a pool". Everybody who is connected using the -PoP suffix is in reality mining to the node's payout address. You can try this on your own node. Simply provide something that isn't a valid wallet address as the user name, and if you find a share, it is the node's default payout address that gets the credit for the share.
Well, here's where the custom code comes into play. OgNasty and Nonnakip have devised a way to put a PPLNS payout system very similar to a traditional pool in place on top of p2pool's backbone. They are tracking shares for your miner just like a traditional pool would. Every miner who has the -PoP suffix shares in the block reward when p2pool finds a block, based upon how many valid shares that miner has contributed during the payout shifts. I don't have the exact details on how long shifts are, or what the share clip length is, and as I wrote, the code is proprietary and not yet open-sourced. Payouts from NastyPoP are on Fridays at 19:00 UTC. They are sent just like any other transfer and require only 6 confirmations. P2Pool payouts happen as soon as the block is found and require 101 confirmations.
How does this reduce your variance? Simply put, your miner is paid out in small increments based upon your contributions, rather than being dependent on finding a share to add to the share chain. That job is left to the node's payout address. All in all it's quite a clever implementation of reducing p2pool's variance for smaller miners.
One thing that's very important to note here about NastyPoP: you can't take your work with you if you move to a traditional p2pool node. No other node out there has any clue whatsoever of the work you've been doing on NastyPoP. In this fashion, NastyPoP behaves much more like a centralized pool the likes of BTCGuild than a p2pool node. I think it's great that OgNasty and Nonnakip have taken the initiative and are trying to help solve the variance problem. Unfortunately, the solution they've come up with defeats the very nature of the decentralized p2pool. Yes, it helps eliminate variance, but at the cost of forcing you to remain tied to the NastyPoP node.
That's all fine and dandy, but how does it compare? To test this out, I pointed an Antminer S3 at the NastyPoP node, and another S3 at my own standard p2pool node. Each S3 is configured to run at stock speeds (440GH/s), and I set a static pseudo share difficulty of 500 on both. Both are powered by an EVGA 1300 G2 and hardwired into an always-on gigabit home network with more than enough up and down bandwidth.
Let's take a look at the ping times from my miner to the pool:
--- nastyfans.org ping statistics ---
57 packets transmitted, 57 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 115.153/144.510/277.534/45.255 ms
An average of 144.51 would stop me from pointing a miner there if it were a standard p2pool node. Let's see where the server is. Running a traceroute shows the last hop in Germany. Well, that explains the ping time - I had to go to Europe
. Our friends on that side of the pond would probably be better served.
Another thing I noticed was a much higher reject rate from the NastyPoP pool than I do on my own nodes. This could be due to the latency, but it turned into about 12-14% rejects, whereas I typically see less than 1% on my own nodes.
Alright, so how did the payouts work? Here are the results:
11/28 - 12/5
NastyPoP -
0.03379787BTCP2Pool -
0.03589959BTCExpected -
0.0385BTC12/5 - 12/12
NastyPoP -
0.03238691BTCP2Pool -
0.03937531BTCExpected -
0.0387BTC12/12 - 12/19
NastyPoP -
0.03382075BTCp2pool -
0.07363736BTCExpected -
0.0389BTC12/19 - 12/26
My p2pool node -
0.05615571BTCNastyPoP -
0.05015601BTCExpected -
0.0393BTC12/26 - 1/2
My p2pool node -
0.03205607BTCNastyP2P -
0.03861873BTCNastyPoP -
0.02812263BTCExpected -
0.0388BTC1/2 - 1/9
My p2pool node -
0.024337627BTCNastyP2P -
0.06870469BTCNastyPoP -
0.04531921BTCExpected -
0.0381BTC1/9 - 1/16
My p2pool node -
0.00419189BTCNastyP2P -
0.01805329BTCNastyPoP -
0.02152612BTCExpected -
0.0367BTCP2Pool 7 day luck - 62.25%
1/16 - 1/23
My p2pool node - test discontinued due to hardware failure
NastyP2P -
0.03989456BTCNastyPoP -
0.02833329BTCExpected -
0.0352BTC1/23 - 1/30
NastyPoP -
0.01963295BTCNastyP2P -
0.02061486BTCExpected -
0.0361BTCLuck - 81.85%
1/30 - 2/6
NastyPoP -
0.05905592BTCNastyP2P -
0.02003162BTCExpected -
0.0375BTCLuck - 93.32%
2/6 - 2/13
NastyPoP -
0.00435959BTCNastyP2P -
0.00938869BTCExpected -
0.0361BTCLuck - 14.3%
2/13 - 2/20
NastyPoP -
0.00698833BTCNastyP2P -
0.01822003BTCExpected -
0.0348BTCLuck - awful
2/20 - 2/27
NastyPoP -
0.03798674BTCNastyP2P -
0.04202049BTCExpected -
0.0338BTCLuck - 100.64%
2/27 - 3/6
NastyPoP -
0.02048889BTCNastyP2P -
0.00942830BTCExpected -
0.0332BTCLuck - 51.98%
3/6 - 3/13
NastyPoP -
0.05138458BTCNastyP2P -
0.05908961BTCExpected -
0.0328BTCLuck - 131.5%
3/13 - 3/20
NastyPoP -
0.03402797BTCNastyP2P -
0.05156673BTCExpected -
0.0327BTCLuck - 101.66%
3/20 - 3/27
NastyPoP -
0.02843568BTCNastyP2P -
0.01970915BTCExpected -
0.033BTCLuck - 90.54%
3/27 - 4/3
NastyPoP -
0.03301631BTCNastyP2P -
0.05550941BTCExpected -
0.0332BTCLuck - 97.55%
4/3 - 4/10
NastyPoP -
0.02866930BTCNastyP2P -
0.03528256BTCExpected -
0.0318BTCLuck - 113.4%
4/10 - 4/17
NastyPoP -
0.00028594BTCNastyP2P -
0BTCExpected -
0.0313BTCLuck - 0%
4/17 - 4/24
NastyPoP -
0.05554895BTCNastyP2P -
0.05281205BTCExpected -
0.0321BTCLuck - 165.47%
4/24 - 5/1
NastyPoP -
0.02111442BTCNastyP2P -
0.02415729BTCExpected -
0.0325BTCLuck - 59.99%
5/1 - 5/8
NastyPoP -
0.03294026BTCNastyP2P -
0.05447989BTCExpected -
0.0325BTCLuck - 127.84%
5/8 - 5/15
NastyPoP -
0.03472755BTCNastyP2P -
0.02216391BTCExpected -
0.0325BTCLuck - 84.97%
5/15 - 5/22
NastyPoP -
0.05258228BTCNastyP2P -
0.03171723BTCExpected -
0.032BTCLuck - 182.64%
5/22 - 5/29
NastyPoP -
0.04249927BTCNastyP2P -
0.03263267BTCExpected -
0.0307BTC5/29 - 6/5
NastyPoP -
0.03711295BTCNastyP2P -
0.03414086BTCExpected -
0.0312BTC6/5 - 6/12
NastyPoP -
0.04351160BTCNastyP2P -
0.04518917BTCExpected -
0.03144BTCLuck - 122.76%
6/12 - 6/19
NastyPoP -
0.01964088BTCNastyP2P -
0.02788807BTCExpected -
0.030107BTCLuck - 65.12%
6/19 - 6/26
NastyPoP -
0.02159208BTCNastyP2P -
0.0193531BTCExpected -
0.030107BTCLuck - 60.76%
6/26 - 7/3
NastyPoP -
0.02828584BTCNastyP2P -
0.01623161BTCExpected -
0.030263BTCLuck - 81.3%
7/3 - 7/10
NastyPoP -
0.02039533BTCNastyP2P -
0.02521461BTCExpected -
0.030289BTCLuck - 71.40%
7/10 - 7/17
NastyPoP -
0.02054230BTCNastyP2P -
0.02884854BTCExpected -
0.03493028BTCLuck - 71.40%
7/17 - 7/24
NastyPoP -
0.04771791BTCNastyP2P -
0.04040042BTCExpected -
0.03465856BTCLuck - 162.79%
7/24 - 7/31
NastyPoP:
0.04298881BTCNastyP2P:
0.03145364BTCExpected:
0.03401418BTCLuck - 134.83%
7/31 - 8/7
NastyPoP:
0.01487946BTCNastyP2P:
0.01145337BTCExpected:
0.02962897BTCLuck - 55.38%
8/7 - 8/14
NastyPoP:
0.03914884BTCNastyP2P:
0.07990332BTCExpected:
0.02941349BTCLuck - 241.06%
8/14 - 8/21
NastyPoP:
0.03640067BTCNastyP2P:
0.04331323BTCExpected:
0.02939197BTCLuck - 138.27%
8/21 - 8/28
NastyPoP:
0.01170063BTCNastyP2P:
0.02753223BTCExpected:
0.02857788BTCLuck - 54.07%
8/28 - 9/4
NastyPoP:
0.0455039BTCNastyP2P:
0.04888988BTCExpected:
0.02846873BTCLuck - 180.68%
9/4 - 9/11
NastyPoP:
0.01466154BTCNastyP2P:
0.00815205BTCExpected:
0.02719480BTCLuck - 63.24%
Running totalsNastyPoP:
1.54926483BTCNastyPoP from 12/26:
1.39910329BTCNastyP2P:
1.48230244BTC (test started 12/26)
Expected earnings:
1.69383675BTCExpected earnings from 12/26:
1.53839914BTCMy P2Pool Node: 0.265653547BTC - discontinued 1/16NastyPoP vs Expected Earnings from 11/28: 91.46%
NastyPoP vs Expected Earnings from 12/26: 90.95%
NastyP2P vs Expected Earnings from 12/26: 96.35%My P2Pool Node vs Expected Earnings from 11/28 - 1/16: 98.76% - discontinued