<p>Miners submit shares to the pool to prove that work has been done. Shares are easier hashes than blocks (by default, one in 2^32 hashes will be a share), and there is no way to find shares without doing the work needed to find blocks. See also <a href="https://bitcoin.stackexchange.com/questions/1505/what-is-a-share-can-i-find-it-while-mining-solo-or-only-when-pool-mining">What is a share? Can I find it while mining solo, or only when pool mining?</a></p>

<p>However, a miner can do the work but still refuse to send valid blocks if he finds them. This is called block withholding and can be used in several attacks.</p>

CC BY-SA 3.0
2013-06-13T02:30:37.433Z
When you say "submit shares" what data is sent to the pool and how is it validated to be genuine "work done"
David
CC BY-SA 3.0
2013-06-13T02:33:15.133Z
@David: It's precisely the same data as would be sent if you actually found a block and it's validated precisely the same way. Shares are just made easier to find than blocks by having a lower difficulty.
David Schwartz
CC BY-SA 3.0
2013-06-13T02:38:12.007Z
@DavidSchwartz I don't mean when a solution is found I mean on the shares that didn't have the solution.
David
CC BY-SA 3.0
2013-06-13T02:56:42.120Z
@David: I know. It makes no difference. The miner doesn't care if they found a block or not, they only care if they found a share. The pool cares if they found a block, of course.
David Schwartz
CC BY-SA 3.0
2013-06-13T12:29:23.323Z
@David: There are some variants. Typically, the miner will submit a block header. The Merkle root and other data should match the work that the pool gave the miner. Also, the nonce should be such that the hash of the block header is lower than 2^224.
Meni Rosenfeld
CC BY-SA 3.0
2013-06-13T12:36:06.240Z
@David: Only one in 2^32 hashes will lead to such a nonce, so Without actually doing work, you have no chance to find a share.
Meni Rosenfeld
CC BY-SA 3.0
2013-06-12T15:29:38.320Z
2013-06-12T15:29:38.320Z
2017-04-13T12:47:36.647Z
Meni Rosenfeld
<p>Well, first of all when you submit a share, it gets validated through the BTC/LTC client/daemon. If it is the correct solution to a block, then poof, an incoming transaction of 25BTC / 50LTC appears in the pools transaction history. This is called an "immature" transaction.</p>

<p>Most of the pools run PPS / PPLNS as a reward system. Meaning the more shares you submit, the more payout you get in proportion to the total number of shares during a round. Most pool software use some kind of database to insert the valid shares into to keep track of the work done for each worker/miner.</p>

<p>As far as I know, you get no "special" reward for finding a block... If you do, that's some pool-sided setting. Some pools use PC games as rewards for finding blocks, etc etc. But you don't get some kind of increased LTC/BTC.</p>

<p>If you mean that you withhold the valid share, and then submit it locally so only you get the full rewards? That won't work either, since you need your local bitcoin/litecoin daemon to run, and fetch work from. If you submit a share you haven't got work for, to another litecoin/bitcoin daemon, it won't get accepted, since the server knows that they haven't issued this work to you.</p>

<p>Hope this answers some questions.</p>

CC BY-SA 3.0
2013-06-13T02:24:53.790Z
What I meant was is it possible to lie to the pool and say I'm doing lots of work while doing nothing and hoping that my shares don't contain the solution but if it did oh well (in a PPS)
David
CC BY-SA 3.0
2013-06-13T12:11:40.287Z
@David It was actually possible just a week or two ago. There was a bug in the stratum software that allowed mining clients to alter the difficulty of the shares. Meaning they submitted a ton of useless low diff shares (if you had a modified mining client), and got PPS for it. This security hole was detected and patched as soon as everyone heard about it. You can read about it here: https://forum.litecoin.net/index.php/topic,4002.0.html
Robin Jonsson
CC BY-SA 3.0
2013-06-12T19:01:29.333Z
2013-06-12T19:01:29.333Z
Robin Jonsson
<p>A solution withholding attack is when you don't send anything to the pool. You won't get any coins at all. Pools verify you've done work by having you submit the results of your work to them -- these are called "shares".</p>

CC BY-SA 3.0
2013-06-12T11:58:59.553Z
I thought a solution withholding attack is when you do send your results to the pool *except* when you find a solution. The solution is "solo mined" and the pool just thinks you're not lucky but still doing work.
Tomas
CC BY-SA 3.0
2013-06-12T17:24:22.417Z
@Tomas: Correct. It's the same as if you didn't find the block at all. You won't get any coins for finding the block.
David Schwartz
CC BY-SA 3.0
2013-06-13T02:31:38.547Z
What I meant was is it possible to lie to the pool and say I'm doing lots of work while doing nothing and hoping that my shares don't contain the solution but if it did oh well (in a PPS)
David
CC BY-SA 3.0
2013-06-13T02:32:39.740Z
@David: No, pools verify you've done work by having you submit the results of your work to them. If you don't do the work, you won't have the results to send to them.
David Schwartz
CC BY-SA 3.0
2013-06-13T02:36:43.207Z
I have a limited knowledge of bitcoins let alone pooled mining. I kind of understand what a share is but not what the share result is. Would that be all the hashes of the shares range. That seems like it would take a LOT of bandwidth to send every share and also what mechanism  verifies that what I send in is authentic.
David
CC BY-SA 3.0
2013-06-13T02:58:02.360Z
@David: No. The share is the minimum necessary to prove the work was done. It's tunable based on how fast the miner is. If we imagine a hypothetical ridiculously slow miner, we could send every hash. But for practical miners, it makes sense to send only, say, the best four billionth of the resulting hashes. By seeing how many hashes are sent and how low they are, the pool can infer how many hash operations were performed. Pools can tune this so the rate of shares submitted is approximately constant regardless of the miner's hash rate.
David Schwartz
CC BY-SA 3.0
2013-06-13T03:06:14.857Z
Are there any standards documents on pooled mining. When I read things about bitcoins often I have to infer a few things based on my computer science experience. So much of what you've said satisfies my question but has also created several more.
David
CC BY-SA 3.0
2013-06-12T09:12:52.133Z
2013-06-12T09:12:52.133Z
David Schwartz
<p>I have not been able to find any method that pools use to verify you've done the work you say you did. So if someone does a solution withholding attack but without actually knowing what the solution is in a PPS pool then can't this attack just get free coins?</p>

<block-withholding>
How does a pool know work has been done
David
# How does a pool know work has been done

(Asked by: username_0 on 2013-06-12)

I have not been able to find any method that pools use to verify you've done the work you say you did. So if someone does a solution withholding attack but without actually knowing what the solution is in a PPS pool then can't this attack just get free coins?

**Tags:** block-withholding


---

## 3 answers

### Answer by username_1 on 2013-06-12. Score: 2

Miners submit shares to the pool to prove that work has been done. Shares are easier hashes than blocks (by default, one in 2^32 hashes will be a share), and there is no way to find shares without doing the work needed to find blocks. See also [What is a share? Can I find it while mining solo, or only when pool mining?](https://bitcoin.stackexchange.com/questions/1505/what-is-a-share-can-i-find-it-while-mining-solo-or-only-when-pool-mining)

However, a miner can do the work but still refuse to send valid blocks if he finds them. This is called block withholding and can be used in several attacks.

> **Comments:**
> **username_0**: When you say "submit shares" what data is sent to the pool and how is it validated to be genuine "work done"  
> **username_2**: @username_0: It's precisely the same data as would be sent if you actually found a block and it's validated precisely the same way. Shares are just made easier to find than blocks by having a lower difficulty.  
> **username_0**: @username_2 I don't mean when a solution is found I mean on the shares that didn't have the solution.  
> **username_2**: @username_0: I know. It makes no difference. The miner doesn't care if they found a block or not, they only care if they found a share. The pool cares if they found a block, of course.  
> **username_1**: @username_0: There are some variants. Typically, the miner will submit a block header. The Merkle root and other data should match the work that the pool gave the miner. Also, the nonce should be such that the hash of the block header is lower than 2^224.  
> **username_1**: @username_0: Only one in 2^32 hashes will lead to such a nonce, so Without actually doing work, you have no chance to find a share.  

---

### Answer by username_3 on 2013-06-12. Score: 2

Well, first of all when you submit a share, it gets validated through the BTC/LTC client/daemon. If it is the correct solution to a block, then poof, an incoming transaction of 25BTC / 50LTC appears in the pools transaction history. This is called an "immature" transaction.

Most of the pools run PPS / PPLNS as a reward system. Meaning the more shares you submit, the more payout you get in proportion to the total number of shares during a round. Most pool software use some kind of database to insert the valid shares into to keep track of the work done for each worker/miner.

As far as I know, you get no "special" reward for finding a block... If you do, that's some pool-sided setting. Some pools use PC games as rewards for finding blocks, etc etc. But you don't get some kind of increased LTC/BTC.

If you mean that you withhold the valid share, and then submit it locally so only you get the full rewards? That won't work either, since you need your local bitcoin/litecoin daemon to run, and fetch work from. If you submit a share you haven't got work for, to another litecoin/bitcoin daemon, it won't get accepted, since the server knows that they haven't issued this work to you.

Hope this answers some questions.

> **Comments:**
> **username_0**: What I meant was is it possible to lie to the pool and say I'm doing lots of work while doing nothing and hoping that my shares don't contain the solution but if it did oh well (in a PPS)  
> **username_3**: @username_0 It was actually possible just a week or two ago. There was a bug in the stratum software that allowed mining clients to alter the difficulty of the shares. Meaning they submitted a ton of useless low diff shares (if you had a modified mining client), and got PPS for it. This security hole was detected and patched as soon as everyone heard about it. You can read about it here: https://forum.litecoin.net/index.php/topic,4002.0.html  

---

### Answer by username_2 on 2013-06-12. Score: 0

A solution withholding attack is when you don't send anything to the pool. You won't get any coins at all. Pools verify you've done work by having you submit the results of your work to them -- these are called "shares".

> **Comments:**
> **username_4**: I thought a solution withholding attack is when you do send your results to the pool *except* when you find a solution. The solution is "solo mined" and the pool just thinks you're not lucky but still doing work.  
> **username_2**: @username_4: Correct. It's the same as if you didn't find the block at all. You won't get any coins for finding the block.  
> **username_0**: What I meant was is it possible to lie to the pool and say I'm doing lots of work while doing nothing and hoping that my shares don't contain the solution but if it did oh well (in a PPS)  
> **username_2**: @username_0: No, pools verify you've done work by having you submit the results of your work to them. If you don't do the work, you won't have the results to send to them.  
> **username_0**: I have a limited knowledge of bitcoins let alone pooled mining. I kind of understand what a share is but not what the share result is. Would that be all the hashes of the shares range. That seems like it would take a LOT of bandwidth to send every share and also what mechanism  verifies that what I send in is authentic.  
> **username_2**: @username_0: No. The share is the minimum necessary to prove the work was done. It's tunable based on how fast the miner is. If we imagine a hypothetical ridiculously slow miner, we could send every hash. But for practical miners, it makes sense to send only, say, the best four billionth of the resulting hashes. By seeing how many hashes are sent and how low they are, the pool can infer how many hash operations were performed. Pools can tune this so the rate of shares submitted is approximately constant regardless of the miner's hash rate.  
> **username_0**: Are there any standards documents on pooled mining. When I read things about bitcoins often I have to infer a few things based on my computer science experience. So much of what you've said satisfies my question but has also created several more.  

---

