Difference between revisions of "Pooled mining"

From Bitcoin Wiki
Jump to: navigation, search
(add some talk about subcent loss)
(Undo revision 65499 by RunCPA (talk))
 
(105 intermediate revisions by 44 users not shown)
Line 1: Line 1:
'''Pooled mining''' is an approach where multiple generating clients contribute to the generation of a block, and then split the block reward according the contributed processing power. Pooled mining effectively reduces the granularity of the block generation reward, spreading it out more smoothly over time.
+
'''Pooled mining''' is a [[Mining|mining]] approach where multiple generating clients contribute to the generation of a block, and then split the block reward according the contributed processing power. Pooled mining effectively reduces the granularity of the block generation reward, spreading it out more smoothly over time.
  
 
==Introduction==
 
==Introduction==
Line 5: Line 5:
 
With increasing generation difficulty, mining with lower-performance devices can take a very long time before block generation, on average. For example, with a mining speed of 1000 Khps, at a difficulty of 14484 (which was in effect at the end of December, 2010), the average time to generate a block is almost 2 years.  
 
With increasing generation difficulty, mining with lower-performance devices can take a very long time before block generation, on average. For example, with a mining speed of 1000 Khps, at a difficulty of 14484 (which was in effect at the end of December, 2010), the average time to generate a block is almost 2 years.  
  
To provide a more smooth incentive to lower-performance miners, several pooled miners, using different approaches, have been created. With a mining pool, a lot of different people contribute to generating a block, and the reward is then split among them according to their processing contribution. This way, instead of waiting for years to generate 50btc in a block, a smaller miner may get a fraction of a bitcoin on a more regular basis.
+
To provide a more smooth incentive to lower-performance miners, several pooled miners, using different approaches, have been created. With a mining pool, a lot of different people contribute to generating a block, and the reward is then split among them according to their processing contribution. This way, instead of waiting for years to generate 50btc{{Citation needed}} in a block, a smaller miner may get a fraction of a Bitcoin on a more regular basis.
 +
 
 +
A '''share''' is awarded by the mining pool to the clients who present a valid [[proof of work]] of the same type as the proof of work that is used for creating [[block|blocks]], but of lesser difficulty, so that it requires less time on average to generate.
  
 
==Pooled mining approaches==
 
==Pooled mining approaches==
  
The problem with pooled mining is that steps must be taken to prevent cheating by the clients and the server. Currently there are two different approaches used.
+
The problem with pooled mining is that steps must be taken to prevent cheating by the clients and the server. Currently there are several different approaches used.
  
 
===The slush approach===
 
===The slush approach===
  
[http://mining.bitcoin.cz slush's pooled miner] sets an artificially low mining difficulty, and collects generated blocks at the lower difficulty from the miners as "shares" in a block generation. eventually, one of the generated blocks also happens to match the actual network difficulty, and then the 50 btc reward is distributed among the pooled clients, based on how many shares have been contributed by each. Client cheating is prevented, since in order to generate a lower-difficulty block, actual hashing must occur. It is not possible for a client to merely 'claim' that he has mined. Further, a client cannot benefit by withholding any block that actually generates the reward, since the private key necessary to redeem the reward is stored on the server, and is not accessible by the client.
+
[[Bitcoin Pooled Mining]] (BPM), sometimes referred to as "slush's pool", follows a score-based method. Older shares (from beginning of the round) have lower weight than more recent shares, which reduces the motivation to cheat by switching between pools within a round.
  
Server cheating, by way of the pool operator fraudulently granting himself extra 'shares', is not addressed. Thus the clients have to trust the pool operator to fairly distribute the proceeds.
+
===The Pay-per-Share approach===
  
Balances accumulate on the server, and are sent out when a user-set threshold balance is reached.  
+
The Pay-per-Share (PPS) approach, first described by [[BitPenny]], is to offer an instant flat payout for each share that is solved.  The payout is offered from the pool's existing balance and can therefore be withdrawn immediately, without waiting for a block to be solved or confirmed.  The possibility of cheating the miners by the pool operator and by timing attacks is thus completely eliminated.  
  
===The puddinpop approach===
+
This method results in the least possible variance for miners while transferring all risk to the pool operator.  The resulting possibility of loss for the server is offset by setting a payout lower than the full expected value.
  
Another approach is the 'metahash' technique, used by [http://www.bitcoin.org/smf/index.php?topic=1458.0 puddinpop's miner]. Clients generate hashes, and also submit 'metahashes', which are hashes of a large chunk of generated hashes. The server checks that the metahashes are correct (in a round-robin fashion, picking up a metahash from a client that hasn't been checked on the longest), thus preventing clients from simply claiming that they have done work without actually doing the work. The withholding of good blocks by the clients is prevented via the server being in possession of the private key, just as in the previous approach. Rewards are distributed based on the number of metahashes submitted by the clients.
+
===The Full Pay-per-Share approach===
  
Cheating by the server, by way of the pool operator fraudulently granting himself extra shares, is also not addressed, requiring the clients to trust the operator.
+
The Full Pay-per-Share (FPPS) approach, created by [[BTC.com]] team, aims to benefit miners from the high transaction fee. It will calculate a standard transaction fee within a certain period,add it into the block rewards (12.5 BTC every block for now) and then distribute the whole to miners according to PPS mode.  
  
The generated blocks contain multiple keys in the generation transaction, giving fractional bitcoin amounts to each key, in proportion to their hashing contribution for that block.  
+
This method keeps advantages of PPS and pay more to miners by sharing some of the transaction fees.
 +
 
 +
===Luke-Jr's approach ("[[Eligius]]")===
 +
[[User:Luke-Jr|Luke]] came up with a third approach borrowing strengths from the earlier two.
 +
Like slush's approach, miners submit proofs-of-work to earn shares.
 +
Like puddinpop's approach, the pool pays out immediately via block generation.
 +
When distributing block rewards, it is divided equally among all shares since the last valid block.
 +
Unlike any preexisting pool approach, this means that the shares contributed toward stale blocks are recycled into the next block's shares.
 +
In order to spare participating miners from transaction fees, rewards are only paid out if a miner has earned at least 0.67108864 BTC (400 [[Tonal Bitcoin|TBC]]). If the amount owed is less, it will be added to the earnings of a later block (which may then total over the threshold amount).
 +
If a miner does not submit a share for over a week, the pool sends any balance remaining, regardless of its size.
 +
 
 +
===P2Pool approach===
 +
 
 +
[[P2Pool]] mining nodes work on a chain of shares similar to Bitcoin’s blockchain. When a block is found, the reward is divided among the most recent shares in this share-blockchain. Like the puddinpop and Luke-Jr approaches, p2pool pays via generation.
  
 
===Comparison===
 
===Comparison===
  
The slush approach uses a lot fewer resources on the pool server, since rather than continuously checking metahashes, all that has to be checked is the validity of submitted shares. The number of shares sent can be adjusted by adjusting the artificial difficulty level.
+
The cooperative mining approach (slush and Luke-Jr) uses a lot less resources on the pool server, since rather than continuously checking metahashes, all that has to be checked is the validity of submitted shares. The number of shares sent can be adjusted by adjusting the artificial difficulty level.
 +
 
 +
Further, the cooperative mining approach allows the clients to use existing miners without any modification, while the puddinpop approach requires the custom pool miner, which are as of now not as efficient on GPU mining as the existing GPU miners.
 +
[[File:Smallgeneration.png|thumb|Puddinpop miners receive coins directly.]]
 +
 
 +
Additionally, the puddinpop and Luke-Jr approaches of distributing the earnings by way of including precise sub-cent amounts in the generation transaction for the participants, results in the presence of sub-cent bitcoin amounts in your wallet, which are liable to disappear (as unnecessary fees) later due to a bug in old (before 0.3.21) bitcoin nodes. (E.g., if you have a transaction with 0.052 in your wallet, and you later send .05 to someone, your .002 will disappear.).
 +
 
 +
Puddinpop and Luke-Jr miners receive coins directly, which eliminates the delay in receiving earnings that is required on slush-based mining servers. However, using some [[eWallet]] services for generated coin will cause those coins to be lost.
 +
 
 +
==See Also==
 +
 
 +
* [[:Category:Miners|Miners]]
 +
* [[Poolservers]]
 +
* [[Comparison of mining pools]]
 +
* [[:Category:Pool Operators|Pool Operators]]
 +
* [[Why a GPU mines faster than a CPU]]
 +
* [[Why pooled mining]]
 +
* [[Mining pool reward FAQ]]
 +
 
 +
==External links==
  
Further, the slush approach allows the clients to use existing miners without any modification, while the puddinpop approach requires the custom pool miner, which are as of now not as efficient on GPU mining as the existing GPU miners.
+
* [https://bitcointalk.org/index.php?topic=1458.0 puddinpop's mining pool thread]
 +
* [http://blockexplorer.com/block/00000000000233334b157d901714baf59e5b9236227b2878844e52244da4195e example puddinpop block]
 +
* [https://www.bitpal.co.uk/bitcoin-mining-pool/ What is a Bitcoin Mining Pool?]
  
Additionally, the puddinpop approach of distributing the earnings by way of including precise sub-cent amounts in the generation transaction for the participants, results in the presence of sub-cent bitcoin amounts in your wallet, which are likely to disappear later due to [[transaction fees]]. (E.g., if you have a transaction with 0.055 in your wallet, and you later send .05 to someone, your .005 will disappear. This is because the current schedule of fees requires a fee of .01 if any transaction output is less than .01. The client thus decides, correctly, that it would be cheaper to just throw away the .005 to tx fee, than it would to contribute an extra .01 as a fee, to keep the .005).
+
==References==
 +
<references />
  
This all seems to point to the slush approach being the better one. Its only downside is that the server software is not open source, while the puddinpop software is.  
+
* [https://www.zpool.ca/ Bitcoin Multipool]
 +
* [https://www.bitcoinmining.com/ Bitcoin Mining]
 +
* [https://www.youtube.com/watch?v=GmOzih6I1zs Video: What is Bitcoin Mining]
 +
* [http://bitcoinminer.com Bitcoin Miner]
  
 +
[[ru:майнинг в пулах]]
 
[[Category:Mining]]
 
[[Category:Mining]]
 +
{{Pools}}

Latest revision as of 21:49, 25 June 2018

Pooled mining is a mining approach where multiple generating clients contribute to the generation of a block, and then split the block reward according the contributed processing power. Pooled mining effectively reduces the granularity of the block generation reward, spreading it out more smoothly over time.

Introduction

With increasing generation difficulty, mining with lower-performance devices can take a very long time before block generation, on average. For example, with a mining speed of 1000 Khps, at a difficulty of 14484 (which was in effect at the end of December, 2010), the average time to generate a block is almost 2 years.

To provide a more smooth incentive to lower-performance miners, several pooled miners, using different approaches, have been created. With a mining pool, a lot of different people contribute to generating a block, and the reward is then split among them according to their processing contribution. This way, instead of waiting for years to generate 50btc[citation needed] in a block, a smaller miner may get a fraction of a Bitcoin on a more regular basis.

A share is awarded by the mining pool to the clients who present a valid proof of work of the same type as the proof of work that is used for creating blocks, but of lesser difficulty, so that it requires less time on average to generate.

Pooled mining approaches

The problem with pooled mining is that steps must be taken to prevent cheating by the clients and the server. Currently there are several different approaches used.

The slush approach

Bitcoin Pooled Mining (BPM), sometimes referred to as "slush's pool", follows a score-based method. Older shares (from beginning of the round) have lower weight than more recent shares, which reduces the motivation to cheat by switching between pools within a round.

The Pay-per-Share approach

The Pay-per-Share (PPS) approach, first described by BitPenny, is to offer an instant flat payout for each share that is solved. The payout is offered from the pool's existing balance and can therefore be withdrawn immediately, without waiting for a block to be solved or confirmed. The possibility of cheating the miners by the pool operator and by timing attacks is thus completely eliminated.

This method results in the least possible variance for miners while transferring all risk to the pool operator. The resulting possibility of loss for the server is offset by setting a payout lower than the full expected value.

The Full Pay-per-Share approach

The Full Pay-per-Share (FPPS) approach, created by BTC.com team, aims to benefit miners from the high transaction fee. It will calculate a standard transaction fee within a certain period,add it into the block rewards (12.5 BTC every block for now) and then distribute the whole to miners according to PPS mode.

This method keeps advantages of PPS and pay more to miners by sharing some of the transaction fees.

Luke-Jr's approach ("Eligius")

Luke came up with a third approach borrowing strengths from the earlier two. Like slush's approach, miners submit proofs-of-work to earn shares. Like puddinpop's approach, the pool pays out immediately via block generation. When distributing block rewards, it is divided equally among all shares since the last valid block. Unlike any preexisting pool approach, this means that the shares contributed toward stale blocks are recycled into the next block's shares. In order to spare participating miners from transaction fees, rewards are only paid out if a miner has earned at least 0.67108864 BTC (400 TBC). If the amount owed is less, it will be added to the earnings of a later block (which may then total over the threshold amount). If a miner does not submit a share for over a week, the pool sends any balance remaining, regardless of its size.

P2Pool approach

P2Pool mining nodes work on a chain of shares similar to Bitcoin’s blockchain. When a block is found, the reward is divided among the most recent shares in this share-blockchain. Like the puddinpop and Luke-Jr approaches, p2pool pays via generation.

Comparison

The cooperative mining approach (slush and Luke-Jr) uses a lot less resources on the pool server, since rather than continuously checking metahashes, all that has to be checked is the validity of submitted shares. The number of shares sent can be adjusted by adjusting the artificial difficulty level.

Further, the cooperative mining approach allows the clients to use existing miners without any modification, while the puddinpop approach requires the custom pool miner, which are as of now not as efficient on GPU mining as the existing GPU miners.

Puddinpop miners receive coins directly.

Additionally, the puddinpop and Luke-Jr approaches of distributing the earnings by way of including precise sub-cent amounts in the generation transaction for the participants, results in the presence of sub-cent bitcoin amounts in your wallet, which are liable to disappear (as unnecessary fees) later due to a bug in old (before 0.3.21) bitcoin nodes. (E.g., if you have a transaction with 0.052 in your wallet, and you later send .05 to someone, your .002 will disappear.).

Puddinpop and Luke-Jr miners receive coins directly, which eliminates the delay in receiving earnings that is required on slush-based mining servers. However, using some eWallet services for generated coin will cause those coins to be lost.

See Also

External links

References