<p>If I understand multi-PPS correctly, it's really simple.</p>

<ol>
<li><p><strong>How does multi-PPS work:</strong> Miner Alice registers with Bob's pool: she gives Bob one of her addresses (to use for payouts) and Bob gives her one of his addresses (to use in coinbase transactions). Bob will give Alice credit for mining shares which pay that coinbase address, and at defined intervals or compensation levels, he'll send payment to her payout address. Alice also registers with Charlie's pool, which gives her a different coinbase address that does the same thing.</p>

<p>Using a protocol like GetBlockTemplate, Alice gets a block template from any full node and inserts a custom coinbase transaction with two outputs: one that pays 50% of reward+fees to the coinbase address from Bob's pool, and one that pays 50% to the coinbase address from Charlie's pool. When Alice finds a share, she submits a <a href="https://bitcoin.org/en/developer-reference#merkleblock" rel="nofollow">merkleblock</a> for its coinbase transaction, plus the coinbase transaction itself, to both pools. Both pools give her 50% credit for that share based on difficulty, pool fees, and other pool rules. The same thing happens for a block, except that Alice only has to submit the full block once so it gets on the block chain---the pools will still give her credit for it as a share once they see it on the block chain. At the defined reward interval, which is up to pool policy, each pool pays Alice's payout address based on the number of shares she submitted and the percentage each credited towards the pool.</p>

<p>Two pools each with 50% is the example here, but in reality Alice will be able to distribute her 100% among as many pools in whatever proportion she wants, provided it's technically possible and allowed by pool policy.  Because this is Pay-Per-Share (PPS), Alice's variance is fully determined by share difficulty---so Alice makes the same amount of money mining for a tiny pool as a giant pool as long as the share difficulty is the same.</p>

<p>The kicker---if I understand correctly---is that multi-PPS also reduces variance of pools to the average of all the pools their miners mine in.  For example, if all mining was done in pools and every miner mined in every pool (no matter how little of their reward they dedicated to any particular pool), every pool would have variance exactly equal to that of regular block creation (e.g. 99.8% chance a block will be mined within 60 minutes: <code>1-exp(-1/10.*60)</code>).</p></li>
<li><p><strong>Can multi-PPS prevent mining centralization:</strong> You can't prevent what has already happened. :-)  Seriously, multi-PPS isn't a cure-all (and Mr. Rosenfeld doesn't claim it is), and there are still economies of scale that benefit large pools---including things that no Bitcoin technology can fix, like marketing advantages.  What multi-PPS offers is the ability of small pools to have the same variance as large pools, equalizing one significant competitive advantage large pools currently enjoy.</p>

<p>Multi-PPS has the additional highly-beneficial advantage that, in order to implement it, block-creation policy must be separated to a certain degree from pool payouts---in other words, if Alice mines in both Bob and Charlie's pools at the same time, neither Bob nor Charlie will have as much centralized control over what transactions Alice creates, further decentralizing mining.</p>

<p>However, this is also multi-PPS's primary weakness and likely the reason nobody has implemented it in the 15 months since Mr.  Rosenfeld first described it: current mining and pool software isn't fully compatible with decentralized mining. And, except for Bitcoin Core developer Luke-Jr, I don't know of anyone focusing on making decentralized pooled mining possible. (Perhaps everyone else who really cares about decentralized pooled mining has already switched to P2Pool.)</p>

<p>An additional weakness is that most people may not care enough to use multiple pools, or that they have come to trust certain pool operators. Because multi-PPS makes small pools more competetive, hopefully they'll be able to innovate to make themselves more desirable to miners. For example, they can make immediate payouts for each share received using a <a href="https://bitcoin.org/en/developer-guide#micropayment-channel" rel="nofollow">micropayment channel</a>, significantly reducing the trust miners need to place in the pool operator.</p></li>
</ol>

CC BY-SA 3.0
2015-01-05T03:30:56.443Z
2015-01-05T15:06:49.270Z
2015-01-05T15:06:49.270Z
David A. Harding
<p>I know the original proposal on bitcointalk is <a href="https://bitcointalk.org/index.php?topic=281180.0" rel="nofollow">here</a>, but can someone explain it more succinctly?</p>

<ol>
<li>How does Multi-PPS work?</li>
<li>Can it actually prevent mining centralization?</li>
</ol>

<mining-pool-shares><decentralization><pool-payout-methods>
What is Multi-PPS (Pay Per Share)?
morsecoder
# What is Multi-PPS (Pay Per Share)?

(Asked by: username_0 on 2015-01-05)

I know the original proposal on bitcointalk is [here](https://bitcointalk.org/index.php?topic=281180.0), but can someone explain it more succinctly?

1. How does Multi-PPS work?
2. Can it actually prevent mining centralization?

**Tags:** mining-pool-shares, decentralization, pool-payout-methods


---

## 1 answers

### Answer by username_1 on 2015-01-05. Score: 2 | Accepted answer

If I understand multi-PPS correctly, it's really simple.

1. **How does multi-PPS work:** Miner Alice registers with Bob's pool: she gives Bob one of her addresses (to use for payouts) and Bob gives her one of his addresses (to use in coinbase transactions). Bob will give Alice credit for mining shares which pay that coinbase address, and at defined intervals or compensation levels, he'll send payment to her payout address. Alice also registers with Charlie's pool, which gives her a different coinbase address that does the same thing.

   Using a protocol like GetBlockTemplate, Alice gets a block template from any full node and inserts a custom coinbase transaction with two outputs: one that pays 50% of reward+fees to the coinbase address from Bob's pool, and one that pays 50% to the coinbase address from Charlie's pool. When Alice finds a share, she submits a [merkleblock](https://bitcoin.org/en/developer-reference#merkleblock) for its coinbase transaction, plus the coinbase transaction itself, to both pools. Both pools give her 50% credit for that share based on difficulty, pool fees, and other pool rules. The same thing happens for a block, except that Alice only has to submit the full block once so it gets on the block chain---the pools will still give her credit for it as a share once they see it on the block chain. At the defined reward interval, which is up to pool policy, each pool pays Alice's payout address based on the number of shares she submitted and the percentage each credited towards the pool.

   Two pools each with 50% is the example here, but in reality Alice will be able to distribute her 100% among as many pools in whatever proportion she wants, provided it's technically possible and allowed by pool policy. Because this is Pay-Per-Share (PPS), Alice's variance is fully determined by share difficulty---so Alice makes the same amount of money mining for a tiny pool as a giant pool as long as the share difficulty is the same.

   The kicker---if I understand correctly---is that multi-PPS also reduces variance of pools to the average of all the pools their miners mine in. For example, if all mining was done in pools and every miner mined in every pool (no matter how little of their reward they dedicated to any particular pool), every pool would have variance exactly equal to that of regular block creation (e.g. 99.8% chance a block will be mined within 60 minutes: `1-exp(-1/10.*60)`).
2. **Can multi-PPS prevent mining centralization:** You can't prevent what has already happened. :-) Seriously, multi-PPS isn't a cure-all (and Mr. Rosenfeld doesn't claim it is), and there are still economies of scale that benefit large pools---including things that no Bitcoin technology can fix, like marketing advantages. What multi-PPS offers is the ability of small pools to have the same variance as large pools, equalizing one significant competitive advantage large pools currently enjoy.

   Multi-PPS has the additional highly-beneficial advantage that, in order to implement it, block-creation policy must be separated to a certain degree from pool payouts---in other words, if Alice mines in both Bob and Charlie's pools at the same time, neither Bob nor Charlie will have as much centralized control over what transactions Alice creates, further decentralizing mining.

   However, this is also multi-PPS's primary weakness and likely the reason nobody has implemented it in the 15 months since Mr. Rosenfeld first described it: current mining and pool software isn't fully compatible with decentralized mining. And, except for Bitcoin Core developer Luke-Jr, I don't know of anyone focusing on making decentralized pooled mining possible. (Perhaps everyone else who really cares about decentralized pooled mining has already switched to P2Pool.)

   An additional weakness is that most people may not care enough to use multiple pools, or that they have come to trust certain pool operators. Because multi-PPS makes small pools more competetive, hopefully they'll be able to innovate to make themselves more desirable to miners. For example, they can make immediate payouts for each share received using a [micropayment channel](https://bitcoin.org/en/developer-guide#micropayment-channel), significantly reducing the trust miners need to place in the pool operator.


---

