<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, Jun 19, 2014 at 7:35 PM, Mike Hearn <span dir="ltr">&lt;<a href="mailto:mike@plan99.net" target="_blank">mike@plan99.net</a>&gt;</span> wrote:<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>My (fresh!) understanding is that the reason we don&#39;t see people using getblocktemplate to decentralise pools is because libblkmaker and other implementations don&#39;t actually support connecting your own node to the miners and choosing your own blocks, even though the protocol does.</div>


<div><br></div></div></div></div></blockquote><div><br></div><div>Well, I don&#39;t want to start flamewar (and this topic has potential!), but the *real* reason why there isn&#39;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.</div>

<div><br></div><div>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.</div>

<div><br></div><div>Although I see benefits of GBT and I see limits of Stratum, I don&#39;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.</div>

<div><br></div><div>&gt; <span style="font-family:arial,sans-serif;font-size:13px">It&#39;s part of a general trend wherein people look at all the things</span></div><span style="font-family:arial,sans-serif;font-size:13px">that can be accomplished in an economy that has a division of labor*,</span><br style="font-family:arial,sans-serif;font-size:13px">

<span style="font-family:arial,sans-serif;font-size:13px">and see some misbehavior at the edges, and decide that rather than</span><br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">fixing the misbehavior we should throw out the entire concept of labor</span><br style="font-family:arial,sans-serif;font-size:13px">

<span style="font-family:arial,sans-serif;font-size:13px">specialization.</span></div><div class="gmail_quote"><font face="arial, sans-serif"><br></font></div><div class="gmail_quote"><font face="arial, sans-serif">Well written! This reminds me - what about Stratum + SPV validation on miner side?</font></div>

<div class="gmail_quote"><font face="arial, sans-serif"><br></font></div><div class="gmail_quote"><font face="arial, sans-serif">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).</font></div>

<div class="gmail_quote"><font face="arial, sans-serif"><br></font></div><div class="gmail_quote"><font face="arial, sans-serif">I read such proposal about Stratum + SPV on reddit and I actually like it; It removes major drawbacks of &quot;centralized&quot; Stratum mining, yet is gives tools to miners to instantly switch to fallback pool when something wrong is happening.</font></div>

<div class="gmail_quote"><font face="arial, sans-serif"><br></font></div><div class="gmail_quote"><div>slush</div></div></div></div>