Bitcoin Forum

Bitcoin => Development & Technical Discussion => Topic started by: relmeas on June 21, 2011, 09:53:02 AM



Title: getwork: give out full blocks?
Post by: relmeas on June 21, 2011, 09:53:02 AM
I wonder if it's possible to force all the mining pools to abide a new rule that getwork (or an alternative replacement command) should report full blocks to the clients on request?

The problem is that when a miner works on a block header he can't be certain that the header is of a block that generates 50 btc to the address of a pool rather than to some completely different address.

So miners can't be entirely sure in pool's honesty.

If the getwork would transfer full blocks however, the miner could check of the header is correct for this block and that the block contains correct generated coins for the pool.

It could be different command, for example "getfullwork" that can be used instead of "getwork" so it would not be neccessary to get full blocks all the time (for example random 5% of getworks would be getfullworks), but the possibility of such verification would make it impossible to cheat for the pool.

This can also be used by the miners to check if they are being used for some bitcoin network breach attempts like rewriting blocks...


Title: Re: getwork: give out full blocks?
Post by: kjj on June 21, 2011, 01:40:57 PM
No pool would be able to do that twice.


Title: Re: getwork: give out full blocks?
Post by: relmeas on June 21, 2011, 02:13:13 PM
yeah it would be ddosed to death.


Title: Re: getwork: give out full blocks?
Post by: theymos on June 22, 2011, 03:29:26 AM
Puddinpop's pool used to do something like that. It would give you the full block from time to time, which allowed you to verify that you were scheduled for payout (since it paid out directly like Eligius).


Title: Re: getwork: give out full blocks?
Post by: BeeCee1 on June 23, 2011, 12:47:04 AM
It could be different command, for example "getfullwork" that can be used instead of "getwork" so it would not be neccessary to get full blocks all the time (for example random 5% of getworks would be getfullworks), but the possibility of such verification would make it impossible to cheat for the pool.

The pool owner could return a block with a pool address when getfullwork was called and a private address when getwork was called, you'd be none the wiser.  You'd have to call getwork then be able to pass that block header back to the server and request the full block that matches it.