Перейти к содержанию

Протокол майнинга Stratum

Материал из BitcoinWiki
Протокол майнинга Stratum
Протокол майнинга Stratum.

Протокол майнинга Stratum — семейство протоколов для обмена заданиями и результатами proof-of-work между майнерами, прокси и инфраструктурой пулов. Исходный протокол теперь называется Stratum V1 (SV1); Stratum V2 (SV2) — отдельно специфицированный преемник с другим форматом сообщений и моделью безопасности.[1]

Stratum V1

Stratum V1 появился в 2012 году и получил широкое распространение в оборудовании и пулах Bitcoin. Вместо повторных запросов getwork используется постоянное TCP-соединение, по которому пул отправляет новые задания.[1][2] Обычно V1 использует разделённые переводом строки сообщения в стиле JSON-RPC. Исходный интерфейс не был полностью стандартизован, поэтому возникли разные диалекты и расширения.[3]

Основной обмен сообщениями

Типичный сеанс использует следующие сообщения; точные параметры и необязательное поведение зависят от реализации.[4]

Направление Метод Назначение
Майнер → сервер mining.subscribe Начинает или возобновляет сеанс. Ответ обычно содержит идентификаторы, extranonce1 и размер extranonce2.
Майнер → сервер mining.authorize Связывает соединение с именем воркера и, если применяется, паролем.
Сервер → майнер mining.set_difficulty Задаёт сложность шар; изменение применяется последующим заданием.
Сервер → майнер mining.notify Передаёт идентификатор, хеш прошлого блока, части coinbase, ветви Merkle, версию, цель, время и признак сброса старых заданий.
Майнер → сервер mining.submit Отправляет воркер, задание, extranonce2, время и nonce для проверки и принятия либо отклонения.

К распространённым необязательным сообщениям относятся client.reconnect, client.show_message и mining.set_extranonce. BIP 310 определяет mining.configure для согласования version rolling, минимальной сложности и подписки extranonce.[5] Более ранние проекты вроде mining.capabilities не входят в этот механизм, и их поддержку нельзя предполагать.

Ограничения

Базовый V1 передаёт трафик открытым текстом. Исследование 2017 года показало, что пассивный наблюдатель мог оценить хешрейт и доходы, а перехвативший соединение злоумышленник — изменять сообщения.[4] Собственный TLS-туннель пула может уменьшить риск, но не является свойством базового протокола.

В V1 пул обычно создаёт задания и выбирает транзакции. Выплаты, кошельки, базы данных и ротация журналов относятся к программе пула, а не к протоколу.

Stratum V2

Stratum V2 использует точно определённые бинарные сообщения. Спецификация описывает каналы, встроенный version rolling, агрегацию соединений и роли устройств, прокси, пулов, деклараторов заданий и поставщиков шаблонов.[3][6]

Набор включает три подпротокола:[6]

  • обязательный Mining Protocol для выдачи заданий и отправки шар;
  • необязательный Job Declaration Protocol, позволяющий стороне майнера предложить набор транзакций; и
  • Template Distribution Protocol для передачи данных шаблона от узла Bitcoin.

Объявление заданий необязательно. Пул может применять V2 с выбранными им заданиями; при объявлении сторона майнера создаёт шаблон и предлагает его пулу.[6] Это меняет выбор транзакций, но не определяет выплаты и не устраняет доверие к учёту пула.

V2 защищает удалённые соединения аутентифицированным шифрованием. Используются AEAD и рукопожатие на основе Noise; оно обязательно для удалённых восходящих соединений и необязательно в локальной сети между устройством и прокси.[7]

Совместимость и реализации

Прокси-переводчик может принимать соединения V1 от устройств и использовать V2 к пулу. Это мост протоколов, а не нативная поддержка V2 устройством. Нужные расширения и подпротоколы следует проверять у майнера, прокси и пула.

См. также

Ссылки

  1. ↑ 1,0 1,1 Проект Stratum V2, «Open Bitcoin mining standard», проверено 14 сентября 2026 года.
  2. ↑ Bitcoin Wiki, «Stratum mining protocol», проверено 14 сентября 2026 года.
  3. ↑ 3,0 3,1 Спецификация Stratum V2, «Design Goals», проверено 14 сентября 2026 года.
  4. ↑ 4,0 4,1 Maria Apostolaki et al., «Hardening Stratum, the Bitcoin Pool Mining Protocol», Proceedings on Privacy Enhancing Technologies, 2017.
  5. ↑ BIP 310, «Stratum protocol extensions», проверено 14 сентября 2026 года.
  6. ↑ 6,0 6,1 6,2 Спецификация Stratum V2, «Protocol Overview», проверено 14 сентября 2026 года.
  7. ↑ Спецификация Stratum V2, «Protocol Security», проверено 14 сентября 2026 года.