3

The stratum protocol supports authorizing multiple workers in a single connection. Unfortunately, I didn't find any documentation about how this should be handled by pool server software.

If multiple workers share the same extranonce1 (which is a per-connection unique string), wouldn't the workers duplicate work? Is this to be handled by the client?

Do all the workers use the same job_id for share submission?

Should a server send a job notify when the second, third etc. worker successfully passes authorization?

And finally, does anyone actually use this (multiple workers per connection) and for what purpose?

1
  • Regarding the second question, I may have misunderstood the purpose of job_id. Is it common for all clients currently working on the block solving and does it change only if a new block template comes in? So share submission is identified by worker name, nonce etc. but not by job_id, it's there only for stale shares check?
    – thankyou
    Jul 10, 2014 at 19:42

1 Answer 1

1

The client needs to handle dividing up the extranonce2 across all workers. Proxies can do this by moving part of the extranonce2 into the extranonce1.

Generally, the entire pool uses the same job_id for any given template, though it's only guaranteed to be valid across a single connection.

There is no reason for a server to send a new mining.notify when additional workers authenticate, though there is no reason they couldn't choose to either. You'll notice that most servers send the first mining.notify before any workers authenticate.

The practical problem with multiple workers on a single connection is that share difficulty is also set per-connection, and it is common that servers would want to give different workers their own difficulty levels.

While multiple workers is not especially common, it is helpful to reduce bandwidth on a large network where you may want to track pool statistics per-worker - or even conceivably per-chip (though no software supports that as of this time).

3
  • Thanks a lot for your answer. I've some additional questions if you don't mind. 1) I didn't quite understand what does "job_id is only guaranteed to be valid across a single connection" exactly mean? If the entire pool uses the same job_id for any given template, in what situation would 2 miners on 2 different connections have 2 different job_ids? 2) "It is common that servers would want to give different workers their own difficulty levels" - could vardiff be a solution for this problem? Thank you again.
    – thankyou
    Jul 11, 2014 at 17:24
  • The entire pool may use the same job_id for any given template, but it isn't required to outside the scope of a single connection.
    – Luke-Jr
    Jul 12, 2014 at 18:17
  • Vardiff doesn't help because the pool can only adjust the entire connection at the same time. It cannot adjust only a specific worker.
    – Luke-Jr
    Jul 12, 2014 at 18:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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