I love p2pool (obviously), and the problem with the p2pool PPLNS system is that it imposes a minimum hash rate to have an expected payout that directly coincides with the overall pool speed.
As the pool speed increases it takes more hashing power to keep a share in the chain, and more and more smaller miners are excluded from the payout.
Eleuthria, if you can come up with a trust-less, decentralized payout structure that supports non-dust size payouts for smaller miners PLEASE fork p2pool.
This has been our #1 obstacle for quite some time and I can not think of anyone better to take on the challenge...
(sorry if this is considered way off-topic here, but what better way for Eleuthria to step down gracefully and protect his legacy then by decentralizing BTCGuild, combining it's hash power with p2pool, and solving a major problem with the p2pool payout system all in 1 foul swoop
)
Unfortunately, there is no real solution to p2pool's payment system. You either need to require very high difficulty shares from miners so that any accepted share in the payment chain is a reasonably sized payout, or a very short 'N' factor, so that only the most recent shares get paid. In either case, the problem is you can only split up the payment of a block so many ways before you end up with people receiving dust.
For example, if you want the minimum payment amount to be 0.005, that means you can only have 5,000 shares in your "to be paid" shares list, give or take a little due to tx fees in the block. At the next difficulty, we'll round it to 40 billion just for easy math, that would mean the minimum share difficulty allowed would be 8,000,000.
One advantage a centralized pool has is that you can still use this type of system, but you could make it so instead of having to solve a single 8m diff share, you can solve a million diff-8 shares, at which point the pool pushes your account into the list shares that will get paid in the next block. That list would function as a PPLNS chain, where every time a new share is put onto the list, the oldest one is pushed off, and a block solve would pay the current list.
There are a few issues with this system though, specifically as it comes to "stale" work. If somebody has a share being paid in the current coinbase, and a new piece of work comes out where their work has been pushed off the payment list, they could purposely remain mining the old work (as long as the block itself isn't stale). While this can be prevented by making it so their new submissions are considered stale as far as the pool is concerned, they would still get their reward if they solved a block.
EDIT: Now that I think about it...that flaw should work on p2pool as well... I'm going to bet the math probably works out that somebody attempting to do that doesn't actually gain anything since they're losing out on any credit that would put them back at the front of the payment list again. Will look into that when I'm a bit more awake.