Author

Topic: What keeps pool miners from simply stealing the blocks they generate? (Read 2595 times)

legendary
Activity: 1750
Merit: 1007
My question is: How does the pool prevent the miner from screening the shares they generate for a large number of trailing zeroes that would afford them the whole block at the current difficulty?  If a miner could do this, they could just steal blocks from the pool.
In addition to the other answer (which is the 100% slam dunk way we're guaranteed this can never happen), there's another practical problem. The miner can't steal the block because it doesn't *know* the block. All it gets from the pool is just enough information to find a nonce. The pool generates the block when the miner submits a nonce that meets the difficulty. (It might be possible to figure out the block by guessing though.)


I had this at first but edited it quickly, since in some scenarios the miner could do this.  0-tx stratum blocks come from some pools at LP time, so the stratum pool would only forward the single coinbase tx.  This could be modified and submitted to a local bitcoind as a "full block".  They could also just ignore the other transactions and rebuild the block as a coinbase-only block. 

GBT sends the full raw txdata (I think it's raw data at least), so the miner could also pull that off with GBT by editing the coinbase then feeding the raw block to a local bitcoind if they solve it.


But still, this causes the problem of the pool rejecting the shares, so your income would be the same as if you were just solo mining on a local bitcoind.
legendary
Activity: 1596
Merit: 1012
Democracy is vulnerable to a 51% attack.
My question is: How does the pool prevent the miner from screening the shares they generate for a large number of trailing zeroes that would afford them the whole block at the current difficulty?  If a miner could do this, they could just steal blocks from the pool.
In addition to the other answer (which is the 100% slam dunk way we're guaranteed this can never happen), there's another practical problem. The miner can't steal the block because it doesn't *know* the block. All it gets from the pool is just enough information to find a nonce. The pool generates the block when the miner submits a nonce that meets the difficulty. (It might be possible to figure out the block by guessing though.)
legendary
Activity: 1484
Merit: 1005
Oh, that makes sense.  Thanks!
legendary
Activity: 1750
Merit: 1007
When mining for a pool, the coinbase of the block your hashing specifically identifies what wallet address will receive the funds.  The hash would change drastically if you modified the coinbase, and the pool would reject any shares you send.

Essentially you'd be solo mining, since every share you create would be invalid when submitted to the pool.
legendary
Activity: 1484
Merit: 1005
This might be a stupid question.  As I understand it, pools work on a PoW principle similar to that of bitcoin in that they hash the block header in an effort to produce a result with a number of trailing zeroes.  This number of trailing zeroes is far less than required to actually claim a block on the network.  This lower difficulty result is sent to the pool and the pool confirms the validity of the lower difficulty share, which results in a fractional payment.

My question is: How does the pool prevent the miner from screening the shares they generate for a large number of trailing zeroes that would afford them the whole block at the current difficulty?  If a miner could do this, they could just steal blocks from the pool.

Obviously it doesn't work this way, so what was the solution?
Jump to: