3

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!

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.

  • So, Eloipool is pretty much relaying the same getblocktemplate they receive from bitcoind? – xil3 Sep 21 '13 at 22:38
  • From looking at jsonrpc_getblocktemplate.py, I would say so. – Anonymous Sep 21 '13 at 23:28
  • Thanks again. I would up-vote you, but I don't have enough points. – xil3 Sep 22 '13 at 5:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.