Do pool servers communicate with bitcoind, and in what capacity?

3

1

I'm trying to understand how the whole process flows. Here's how I currently understand it working.

Mining client -> Pool server -> Bitcoind

getwork:

  • Mining client calls getwork from Pool server, and it in turn calls getwork (or something else?) from Bitcoind.

stratum:

  • Mining client ingages the Pool server using the stratum protocol, and the Pool server calls getwork (or something else?) from Bitcoind.

getblocktemplate:

  • Mining client calls getblocktemplate, and the Pool server calls getblocktemplate from Bitcoind.

And I understand that the pool server does more than just relay information, but I wanted to keep it simple. I just want to get a grasp of how it all flows together, and what calls it makes.

Any help is greatly appreciated!

xil3

Posted 2013-09-21T18:00:05.913

Reputation: 265

Answers

6

getwork is for all intents, completely deprecated due to it's inefficiency. At this point a single ASIC device can completely swamp a bitcoind with requests as they're able to exhaust the 32bit nonce in a fraction of a second. The situation is severe enough that pools like BTC Guild have extraordinary large (6%+) fees on clients using getwork in order to get them to switch to more efficient methods.

Internally, pools like Eloipool use getblocktemplate to generate work for the clients, and then use stratum or getblocktemplate to communicate with the workers depending on the request type they make. getwork is not involved at any stage. In fact, it's currently pegged for complete removal at some point.

Anonymous

Posted 2013-09-21T18:00:05.913

Reputation: 891

So, Eloipool is pretty much relaying the same getblocktemplate they receive from bitcoind?xil3 2013-09-21T22:38:38.200

From looking at jsonrpc_getblocktemplate.py, I would say so.Anonymous 2013-09-21T23:28:33.110

Thanks again. I would up-vote you, but I don't have enough points.xil3 2013-09-22T05:13:21.920