<p>I think you may be confused about what block withholding means.</p>

<p>Pools already assign unique work to miners which credits the pool, not the miner. A miner cannot take the block reward for himself.</p>

<p>"Block withholding" means the miner submits shares normally, unless the share happens to be a block. Then he withholds it for either sabotage or lie-in-wait. Since block finding is random, no "marking" by the pool can help it determine if the miner found a block or not.</p>

CC BY-SA 3.0
2013-02-28T07:45:55.380Z
2013-02-28T07:45:55.380Z
Meni Rosenfeld
<p>Update: This is a bad idea because it simply won't work, but it did help me understand what happens between a Miner and a Pool.</p>

<p>And if you missed it in the comments, <a href="https://bitcoil.co.il/pool_analysis.pdf" rel="nofollow">read @Meni's PDF for a threat and profitability analysis of pools.</a>  </p>

<hr>

<p>Is it feasible for a pool operator to include a "signature transaction" sending a small amount of BTC from and to themselves... and then monitor the public block chain for these addresses if share withholding (and subsequent solo broadcast) is attempted?</p>

<p>In other words, if a pool has 10,000 workers, then generate 10,000 addresses.   Then create a transaction with an output corresponding with the worker address.  Of course this money won't go to the worker (unless the operator desires it), but it can be used as virtual stamp on the entire block.</p>

<ul>
<li>Is this a viable strategy?  If so, what scope is best for this check: per miner, per x miners, or per pool?</li>
</ul>

<p>(I think the per pool scope may be a good way to get a measurement on % of cheaters)</p>

CC BY-SA 3.0
2013-02-28T08:00:23.027Z
Honestly, 7 hours ago you didn't know what shares are. It's presumptuous to try to offer solutions to attacks against pools.
Meni Rosenfeld
CC BY-SA 3.0
2013-02-28T13:01:18.553Z
@MeniRosenfeld No disrespect or arrogance is intended.  I want to learn this system but don't see a clear path of educating myself.  I'm using the Q&A format to attempt to get there.  Can you suggest a better way to learn that won't come off like that?
makerofthings7
CC BY-SA 3.0
2013-02-28T14:34:36.763Z
There's a lot of information online, I agree it's not always easy to find. Some questions are ok here but if you want to bounce ideas to see where they fail I think the forum is better. (FWIW the downvote isn't mine)
Meni Rosenfeld
CC BY-SA 3.0
2013-02-28T14:35:19.650Z
For withholding attacks specifically, there is some information in one of the sections in my https://bitcoil.co.il/pool_analysis.pdf.
Meni Rosenfeld
CC BY-SA 3.0
2013-02-28T14:44:35.900Z
@MeniRosenfeld - Thank you, I found that PDF last night and recognized your name immediately after you answered this Q.  I honestly don't know what some of those symbols mean (I never took statistics and assume this is where it's from).  I'm reading it in hopes it will explain the technical "data that is being hashed in a share" vs "data being hashed for a block".
makerofthings7
CC BY-SA 3.0
2013-02-28T15:14:35.760Z
A block is a special case of share. If the hash of the share happens to have a low enough value the share is a block.
Meni Rosenfeld
CC BY-SA 3.0
2013-02-28T15:31:58.447Z
@MeniRosenfeld If the share happens to be a block, can the block can be published on the network by that miner? (instead of published to the pool so the miner gets the full reward)  What is this attack called?
makerofthings7
CC BY-SA 3.0
2013-02-28T15:36:44.410Z
That's not possible. The transaction list - including the generation transaction which credits the pool - is determined before the hashing is done. The miner can't take the block reward for himself. The forum is better for this kind of discussions.
Meni Rosenfeld
CC BY-SA 3.0
2013-02-28T20:01:45.380Z
@makerofthings7: Either the miner publishes the block or he doesn't. If he modifies the block, it's now a different block.
David Schwartz
CC BY-SA 3.0
2013-02-28T20:03:42.547Z
@DavidSchwartz This made complete sense to me a few hours ago.  Thank you for your follow up.
makerofthings7
<mining-pools><security><block-withholding><transaction-propagation>
Possible to include a per miner transaction to prevent withholding and independent rebroadcast of a solved block?
makerofthings7
# Possible to include a per miner transaction to prevent withholding and independent rebroadcast of a solved block?

(Asked by: username_0 on 2013-02-28)

Update: This is a bad idea because it simply won't work, but it did help me understand what happens between a Miner and a Pool.

And if you missed it in the comments, [read @username_1's PDF for a threat and profitability analysis of pools.](https://bitcoil.co.il/pool_analysis.pdf)

---

Is it feasible for a pool operator to include a "signature transaction" sending a small amount of BTC from and to themselves... and then monitor the public block chain for these addresses if share withholding (and subsequent solo broadcast) is attempted?

In other words, if a pool has 10,000 workers, then generate 10,000 addresses. Then create a transaction with an output corresponding with the worker address. Of course this money won't go to the worker (unless the operator desires it), but it can be used as virtual stamp on the entire block.

* Is this a viable strategy? If so, what scope is best for this check: per miner, per x miners, or per pool?

(I think the per pool scope may be a good way to get a measurement on % of cheaters)

**Tags:** mining-pools, security, block-withholding, transaction-propagation

> **Comments:**
> **username_1**: Honestly, 7 hours ago you didn't know what shares are. It's presumptuous to try to offer solutions to attacks against pools.  
> **username_0**: @username_1 No disrespect or arrogance is intended.  I want to learn this system but don't see a clear path of educating myself.  I'm using the Q&A format to attempt to get there.  Can you suggest a better way to learn that won't come off like that?  
> **username_1**: There's a lot of information online, I agree it's not always easy to find. Some questions are ok here but if you want to bounce ideas to see where they fail I think the forum is better. (FWIW the downvote isn't mine)  
> **username_1**: For withholding attacks specifically, there is some information in one of the sections in my https://bitcoil.co.il/pool_analysis.pdf.  
> **username_0**: @username_1 - Thank you, I found that PDF last night and recognized your name immediately after you answered this Q.  I honestly don't know what some of those symbols mean (I never took statistics and assume this is where it's from).  I'm reading it in hopes it will explain the technical "data that is being hashed in a share" vs "data being hashed for a block".  
> **username_1**: A block is a special case of share. If the hash of the share happens to have a low enough value the share is a block.  
> **username_0**: @username_1 If the share happens to be a block, can the block can be published on the network by that miner? (instead of published to the pool so the miner gets the full reward)  What is this attack called?  
> **username_1**: That's not possible. The transaction list - including the generation transaction which credits the pool - is determined before the hashing is done. The miner can't take the block reward for himself. The forum is better for this kind of discussions.  
> **username_2**: @username_0: Either the miner publishes the block or he doesn't. If he modifies the block, it's now a different block.  
> **username_0**: @username_2 This made complete sense to me a few hours ago.  Thank you for your follow up.  

---

## 1 answers

### Answer by username_1 on 2013-02-28. Score: 5 | Accepted answer

I think you may be confused about what block withholding means.

Pools already assign unique work to miners which credits the pool, not the miner. A miner cannot take the block reward for himself.

"Block withholding" means the miner submits shares normally, unless the share happens to be a block. Then he withholds it for either sabotage or lie-in-wait. Since block finding is random, no "marking" by the pool can help it determine if the miner found a block or not.


---

