Какой смысл в параметре «чистые задания» в протоколе Stratum «mining.notify»?

Когда я узнал о протоколе Stratum, позволяющем майнинг-пулу координировать работу своих воркеров, мне стало любопытно, что означает параметр «чистые задания» в методе mining.notify. Согласно спецификации — https://en.bitcoin.it/wiki/Stratum_mining_protocol , это может быть либо истинным, либо ложным. Чего я не понимаю, так это почему это должно быть ложным. Вики говорит, что если это ложь: «Если ложь, они все еще могут использовать текущую работу, но должны перейти к новой после исчерпания текущего диапазона одноразовых номеров». Мой вопрос заключается в том, по какой логической причине пул может дать майнеру сделать это? Я предполагаю, что если появляется новая работа, это означает, что кто-то в сети хешировал блок, и поэтому возможности для вознаграждения больше нет. Так зачем работнику тратить свое время на то, чтобы продолжать работу, которую уже выполнил кто-то другой?

Ответы (1)

Мой вопрос заключается в том, по какой логической причине пул может дать майнеру сделать это?

Ставить задачи в очередь майнеру. Сервер может сказать майнеру: «Вот тебе работа, которую ты должен сделать, когда закончишь то, над чем сейчас работаешь». Поскольку задания не имеют состояния и индивидуализированы (т. е. над каждым заданием работает только один пользователь/работник), сервер может поставить задания для майнера в очередь до того, как он завершит свою текущую работу, чтобы избежать простоев. Пока новый блок не найден, это происходит быстрее, чем рабочий процесс, запрашивающий другую работу, когда он заканчивает свою текущую.

Я предполагаю, что если появляется новая работа, это означает, что кто-то в сети хешировал блок, и поэтому возможности для вознаграждения больше нет.

Это плохое предположение. Для данного блока может быть много новой работы. Могут быть сгенерированы новые транзакции, ExtraNonce1 может быть увеличен для обеспечения новой работы и т. д.

Так зачем работнику тратить свое время на то, чтобы продолжать работу, которую уже выполнил кто-то другой?

Задания IIRC индивидуальны, поэтому майнер не выполняет работу, которую выполняет другой майнер.

Что касается «для данного блока может быть много новой работы», но если кто-то уже добыл блок, почему пул майнинга продолжает добывать этот блок? Должен ли пул переходить к блокам, которые еще не были добыты?
Новый блок не обязательно был добыт при выпуске новой работы.