On Thu, Jun 19, 2014 at 7:35 PM, Mike Hearn <mike@plan99.net> wrote:
My (fresh!) understanding is that the reason we don't see people using getblocktemplate to decentralise pools is because libblkmaker and other implementations don't actually support connecting your own node to the miners and choosing your own blocks, even though the protocol does.


Well, I don't want to start flamewar (and this topic has potential!), but the *real* reason why there isn't such infrastructure is that although GBT as a protocol *does* support of decentralized building of blocks, it is *extremely* resource consuming to validate these shares on pool side.

With GBT, simply hashing the block header is not enough, because pool cannot rely on anything provided by the client. Its not only about things like withdrawal attacks, but more about hidden bugs in various miners. It is extremely hard to do full validation for *every* of submitted shares.

Although I see benefits of GBT and I see limits of Stratum, I don't think that supporting full GBT validation have economic sense for any medium sized pool, because such pool would need multiply his running costs on servers many times.

It's part of a general trend wherein people look at all the things
that can be accomplished in an economy that has a division of labor*,
and see some misbehavior at the edges, and decide that rather than
fixing the misbehavior we should throw out the entire concept of labor
specialization.

Well written! This reminds me - what about Stratum + SPV validation on miner side?

With SPV, miner cannot choose his own transactions, so it is not fully decentralized, but at least miner can detect (in real time) two major pool misbehaviours - selfish mining (building private blockchain) and chain forking (not working on longest known blockchain).

I read such proposal about Stratum + SPV on reddit and I actually like it; It removes major drawbacks of "centralized" Stratum mining, yet is gives tools to miners to instantly switch to fallback pool when something wrong is happening.

slush