Bitcoin Forum

Bitcoin => Pools => Topic started by: hugeblack on November 01, 2017, 01:35:37 PM



Title: stealing the block
Post by: hugeblack on November 01, 2017, 01:35:37 PM
i just start learning about Bitcoin & mining and learn about how a pool delegates shares based on work .

So my ask is why a miner doesn't cheat (take all block to themselves )without need to pay anything to you (take full it )


Title: Re: stealing the block
Post by: greyworld on November 01, 2017, 02:02:37 PM
If they were to do that, they would lose their entire pool of miners instantly.  Long run they're better off with a large and active mining pool than a one time block reward.  Also their reputation would instantly be trashed with the bitcoin community, life in general would become very difficult for them in bitcoin world.


Title: Re: stealing the block
Post by: kano on November 01, 2017, 02:16:42 PM
i just start learning about Bitcoin & mining and learn about how a pool delegates shares based on work .

So my ask is why a miner doesn't cheat (take all block to themselves )without need to pay anything to you (take full it )
The actual answer related to your question is:

For pooled mining, a miner gets work from a pool, hashes it and then returns shares to the pool to represent the work they have done to account for their reward.
The work you are hashing pays the block to addresses defined by the pool.
You don't know which hash will find a block, so you can't change that work to yourself unless you want to generate shares that the pool wont accept and thus you wont be rewarded for your work.

You can't redirect a block to another set of payout addresses, since then the hash would be different and it would only be a 1 in ~6.23x10^21 chance of that also being a block.

So basically the answer is: either you process the work the pool provided and get shares that the pool will accept and if you find a block, it goes to the pool
or you hash work for yourself and the pool wont accept your shares or blocks.
i.e. pooled mining or solo mining.

Some pools use the work to payout directly to all the miners, but that's a real bad idea coz it means the one transaction in your block, that is guaranteed to be unknown on the network when you find a block, is the larger than usual coinbase transaction of the block, that includes all those payouts and thus it dramatically slows down the block's distribution around the network.

A good example of this is the old pool Eligius that used coinbase payout transactions and had VERY high orphan rates.

Edit: Of course there's the opposite of your question, pools stealing blocks.
That has of course happened in the (distant) past where pools haven't shown blocks that they found, or worse sent work to miners that didn't have a coinbase that would be recognised as the pool.

One way to avoid this happening to you, is you'd have to look at the work sent to you by the pool.
Not really that hard to do, but you'd have to intercept each work item each 30 seconds that pool sends you, check that it has the recognisable coinbase features and check that the coinbase transaction pays to the expected pool addresses.

The addresses check isn't really all that necessary, since as long as the pool reports a block as their own, it doesn't really matter where the BTC actually goes, as long as they reward you the correct amount for your work done.
However, most pools put one or more words in the coinbase that identify the block as belonging to the pool, so as long as that is there, you will know which blocks the pool found and can verify that against what they say they found.

Any block web site like btc.com shows who the blocks say they were found by.

Of course there is a way you can tell right now, without doing that, if you have a miner that correctly identifies when it finds blocks.
If one of your miners, that only mines on bitcoin, said it found a block, and the "Best Share" in the miner is above the network difficulty, then you know your miner found a block and it should also be reported by the pool.
You can also convert the "Best Share" to a block with a reasonably simple calculation as I listed here hecently:
https://bitcointalk.org/index.php?topic=789369.msg23596133;topicseen#msg23596133