Перейти к содержимому

Stratum V2: Протокол нового поколения

Stratum V1 служит индустрии майнинга с 2012 года. Он работает, он прост, и его понимает каждый майнер и каждый пул. Но он проектировался в эпоху, когда весь хешрейт сети измерялся в терахешах. С тех пор масштабы выросли на порядки, и трещины стали заметны.

Stratum V2 — это переработка с нуля, устраняющая три главные проблемы V1: отсутствие шифрования, расточительный трафик и неудобную централизацию, при которой пулы единолично решают, что попадает в блоки.

V1 передаёт всё открытым текстом. Любой, кто видит трафик между вашим майнером и пулом, может узнать:

  • Имя воркера и учётные данные
  • Каждую отправленную шару
  • Ваш хешрейт

Хуже того, атакующий может перенаправить ваш хешрейт на свой пул — hashrate hijacking.

Каждое сообщение обёрнуто в JSON: кавычки, скобки, имена полей. Типичный mining.notify занимает 300-500 байт. Полезных данных там — около 150. Более 50% — это накладные расходы формата.

В V1 пул строит весь шаблон блока. Пул решает, какие транзакции включить. Майнер — просто машина для хеширования, без права голоса. Это значит, что несколько крупных пулов являются фактическими привратниками: они могут цензурировать транзакции, и отдельные майнеры ничего не могут с этим сделать.

V2 заменяет JSON компактным бинарным форматом. Каждое сообщение имеет фиксированный заголовок и бинарную полезную нагрузку. Никаких кавычек, никаких имён полей.

Результат: сообщения на 50-70% меньше. Для крупных ферм с тысячами майнеров это ощутимая экономия трафика.

V2 использует Noise Protocol Framework для установления зашифрованного, аутентифицированного канала:

  • Конфиденциальность — трафик нельзя прочитать
  • Аутентификация — майнер может убедиться, что общается с настоящим пулом
  • Целостность — сообщения нельзя подменить

V1 использует одно соединение для всего. V2 разделяет коммуникацию на три канала:

1. Mining Channel — аналог основного цикла V1: получение заданий, отправка шар. Но в бинарном формате и зашифрованный.

2. Job Negotiation Channel — революционная часть. Майнеры могут согласовывать с пулом, какие транзакции включить в блок.

3. Template Distribution Channel — прямое подключение к Bitcoin-узлу для получения шаблонов блоков.

Согласование заданий: прорыв в децентрализации

Заголовок раздела «Согласование заданий: прорыв в децентрализации»

Это главная фича для здоровья Bitcoin. С V2:

  1. Майнер запускает свой Bitcoin-узел
  2. Узел строит шаблон блока с выбранными транзакциями
  3. Майнер предлагает этот шаблон пулу
  4. Пул может принять или отклонить (но отклонение = потеря хешрейта)
  5. Если принято, майнер работает над своим шаблоном

Индивидуальные майнеры получают право выбирать транзакции. Пулы становятся координаторами хешрейта, а не привратниками. Если пул начнёт цензурировать транзакции, майнеры могут это обойти.

ПараметрStratum V1Stratum V2
ФорматJSON (текст)Бинарный
ШифрованиеНетAEAD (Noise framework)
Размер сообщений300-500 байт100-150 байт
АутентификацияНет (пароли открытым текстом)На основе сертификатов
Контроль шаблона блокаТолько пулМайнер может предлагать
КаналыОдин3 (mining, job negotiation, template distribution)
Защита от hijackingНетШифрование предотвращает MITM
Свой Bitcoin-узелНе поддерживаетсяПоддерживается

Поддержка пулов: Braiins Pool (разработчики V2) — полная поддержка. Другие пулы постепенно добавляют.

Прошивки: Braiins OS — нативная поддержка V2. Стоковые прошивки Antminer/Whatsminer — только V1.

Прокси-подход: Не нужно ждать новой прошивки. Translation proxy конвертирует V1-трафик от майнера в V2 для пула:

[V1 Майнер] <-> [Translation Proxy] <-> [V2 Пул]
V1 трафик V2 зашифрованный трафик

Stratum Reference Implementation (SRI) — открытый проект с компонентами V2: прокси, пул, согласователь заданий, поставщик шаблонов.