Let’s start with the definition of pool mining:
A Mining Pool is a protocol for a group of miners to work together, in order to smooth out their mined coins.
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.
So, bitcoin mining pools are a way for Bitcoin miners to pool their resources together and share their hashing power while splitting the reward equally according to the amount of shares they contributed to solving a block.
The mining pool coordinates the workers. It’s just like a lottery pool. Your odds of winning a lottery are very low, so you team up with a bunch of other people and agree to split the winning. This makes your odds of winning much higher, but the amount you win much lower.
What a mining pool does is function as a coordinator for all the pool participants doing:
- Taking the pool members hashes
- Looking for block rewards
- Recording how much work all the participants are doing
- Assigning block rewards proportionally to participants
Miners mine differently by running pool software instead of the bitcoin client and just performing hashes for the pool.
The pool operator randomly verifies a small portion of the work submitted by each member of the pool. The member miners don’t know which of their submissions will get verified so they can’t cheat. If they cheat once in a while they might get away with it but not for long enough to matter.
Traditionally, pools gave miners work units covering the entire nonce range 0-4,294,967,295. When the miner finishes work, he requests a new work unit with a different extraNonce (or payout address). Different miners also get work units with different details.
To reduce load, pools are now moving on to a setting where the miner can himself change details of the generation transaction and compute the Merkle root, so he can do as much work as he pleases without needing new assignment from the pool.
How do I get paid in Pool?
Broadly speaking, there are two ways of paying pool miners. The first way is to have a wallet and send payments to miners through that when they ask for them.
The second way, which both eligius.st and p2pool use, is to keep track of how many shares people get, and set the coinbase transaction to pay the block reward directly to them once a block is found. This has the advantage that you never have any Bitcoins to steal on your pool server.
Common payout schemes include:
- PPS – Pay Per Share. Each submitted share is worth certain amount of BTC. Since finding a block requires shares on average, a PPS method with 0% fee would be 50 BTC divided by . It is risky for pool operators, hence the fee is highest.
- SMPPS – Shared Maximum Pay Per Share. Like Pay Per Share, but never pays more than the pool earns.
- ESMPPS – Equalized Shared Maximum Pay Per Share. Like SMPPS, but equalizes payments fairly among all those who are owed.
- CPPSRB – Capped Pay Per Share with Recent Backpay.
- Prop. – Proportional. When block is found, the reward is distributed among all workers proportionally to how much shares each of them has found.
- PPLNS – Pay Per Last N Shares. Similar to proportional, but instead of looking at the number of shares in the round, instead looks at the last N shares, regardless of round boundaries.
- Score – Score based system: a proportional reward, but weighed by time submitted. Each submitted share is worth more in the function of time t since start of current round. For each share score is updated by: score += exp(t/C). This makes later shares worth much more than earlier shares, thus the miner’s score quickly diminishes when they stop mining on the pool. Rewards are calculated proportionally to scores (and not to shares). (at slush’s pool C=300 seconds, and every hour scores are normalized)
What is a Share?
A share is a hash smaller than the target for difficulty of 1* (see clarification at end). Every hash created has a 1 in ~4 billion (2^32) chance of being a valid share. In comparison if the difficulty of network is 2,000,000 then a share is 2 million times “easier” to find than a valid hash for the block, and on average it will take 2 million shares (8 quadrillion hashes) to find a valid hash for the block.
Shares have no actual “value”. To the bitcoin network they are worthless. The only hash with any value is the one that is smaller than the target (determined by difficulty).
Want to know what are best asic miners?
Why do pools use a different difficulty than the blockchain difficulty?
Because the goal is to track work attempted in a verifable manner. If a pool used a difficulty equal to the block difficulty then only one share would be found per block and it would be found by the miner who solves the block. All rewards would go to the single share holder and essentially you invented a long complex round about way of solo mining.
Contrary to popular belief, mining is not something where there is progress. Each hash has the same probability of being a valid block hash. You could get lucky and find a valid hash with your next hash, or you could not. There is no progress that is made. When you mine on a lower difficulty, the target that your hash must be under is much higher than that of the networks. With enough hashes, someone will eventually find a hash that is lower than the network target, and that hash would also be lower than their pool target. The higher target (thus lower difficulty) is only for tracking who is actually doing work and how much work they are doing so that they can be paid appropriately.
What is stopping miners from cheating in Pool Mining?
The pool sends you the template of the block that you ought to be working on. Should you really find a block it is bound to the block template you received from the pool, i.e., the
nonce that satisfies the proof-of-work difficulty is only valid because it is valid in combination with the template. Since the block template also includes the coinbase transaction, transferring the reward to the pool operator, you cannot steal the reward.
Solo Mining vs Pool Mining
It completely depends on the “pool fee”. If you mine solo, with an expected 5 BTC/day take, that will mean on average you’ll mine a 50 BTC block every ten days. It will be completely random though. You could mine two blocks in a day. You could go three weeks without a block.
If you mine in a pool, you take the pool fee right off the top. A 3% pool fee means you make 3% less. Also, most pools don’t pay transaction fees. But your revenue is more predictable. You’ll get paid on a regular basis and your payments won’t vary much.
One disadvantage of a mining pool is its centralicity – most pools today have central nodes that can be DDOSed, and if not configured accordingly when a DDOS happens the miner will just sit idly instead of reverting to a different pool or to solo mining.
Unless you have a lot of computing power (several ASICs), you should probably mine at a pool.
How can I start my own mining pool?
There is P2Pool and Pushpool being the two options to get your own pool running.
These provide the backend services, the GUI must be built by yourself with any features you may wish to include.
The former is almost unused at this time, although considered to be more resilent to attacks (such as DDOS)
If you were to consider running a pool the requirement of a very high bandwidth server is needed as it consists of using a LOT of traffic (depending where your located this may be VERY difficult to find)
Building a user base may be difficult but with merged mining it may increase profit for running such an enterprise.
Join Our Telegram Channel or Follow @CaptainAltcoin