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