94 / 736SV2

Stratum V2

Как майнер общается с пулом — и кто выбирает транзакции

Stratum V2 определяет, как устройства для майнинга и пул обмениваются работой. Он защищает связь и при нужной настройке позволяет майнеру выбирать транзакции для блока.

Это открытый набор протоколов, то есть правил обмена сообщениями. Основной Mining Protocol передаёт задания и результаты; необязательные Template Distribution и Job Declaration позволяют использовать свой шаблон блока. Само подключение по V2 этой возможности не гарантирует.

У Евы есть ASIC — устройство, специализированное для майнинга Bitcoin. Она подключила его к пулу, который координирует нескольких майнеров и распределяет вознаграждения. Устройства ищут результат вычислений, позволяющий добавить в историю Bitcoin новый блок — пакет транзакций. Ей нужно, чтобы устройство получало правильные задания, а результаты приходили именно выбранному пулу. В дальнейшем она хочет решать и то, какие транзакции попытается включить в блок. Stratum V2 организует связь между этими участниками. Mining Protocol — основа; Template Distribution и Job Declaration — необязательные части для передачи данных блока и согласования собственных заданий. Поэтому два пула с обозначением V2 могут предлагать разные возможности. [1] [3]

Stratum V1 упростил сотрудничество майнеров, но при обычном незашифрованном соединении сообщения оставались доступными для чтения по пути. Транзакции тоже обычно выбирал пул. В 2019 году Jan Čapek и Pavel Moravec из Braiins представили Stratum V2 совместно с Matt Corallo и другими разработчиками. Целью были защищённая, более эффективная связь и большая самостоятельность майнеров. Спецификация публична, разработка продолжается в открытом проекте. Это не новые правила проверки блоков Bitcoin и не автоматическое обещание более высокого дохода. [8] [6]

Посторонний на интернет-маршруте между Евой и пулом не должен незаметно читать или менять сообщения майнинга. Поэтому V2 использует шифрование с проверкой целостности сообщений, называемой AEAD. По спецификации начальное криптографическое согласование Noise обязательно для удалённых соединений; в локальной сети его использование может быть необязательным. Клиент проверяет сервер по открытому ключу удостоверяющей стороны пула, полученному надёжным путём. Этим ключом проверяют цифровую подпись, которой сервер подтверждает свою подлинность. Это защищает передачу, а не всё вокруг: пул по-прежнему видит переданные ему данные. Шифрование не доказывает безопасность прошивки, правильность учёта или способность пула выплатить вознаграждения. [2] [10]

Еве не всегда нужно менять оборудование. Translation Proxy — посредник, который может принимать Stratum V1 от старого устройства и использовать V2 в сторону пула. Защита второго участка не меняет исходную связь между ASIC и прокси: она остаётся V1 и требует отдельной защиты. Прокси также может совместно обслуживать несколько устройств и сокращать повторную отправку одинаковых данных. Само преобразование протоколов ещё не означает, что Ева выбирает транзакции. Для этого нужны дополнительные функции и поддержка пула. [7] [8]

Чтобы выбирать транзакции, Еве сначала нужно знать, какие из них действительны и на каком блоке строить следующий. Эти данные может предоставить её полный узел, самостоятельно проверяющий правила Bitcoin. Template Provider — программа, выдающая шаблон блока: проект будущего блока, а не готовый блок. Она может использовать Bitcoin Core или другой узел с необходимой поддержкой. Template Distribution передаёт обновления напрямую, без повторных запросов getblocktemplate. NewTemplate и SetNewPrevHash сообщают шаблон и связь с предыдущим блоком; RequestTransactionData запрашивает данные транзакций, а SubmitSolution возвращает найденное решение. [5]

Ева использует Job Declarator Client — программу, принимающую её шаблоны и согласующую их применение с пулом, поддерживающим Job Declaration. В режиме Full-Template она получает идентификатор работы через AllocateMiningJobToken, перечисляет транзакции в DeclareMiningJob и при необходимости отвечает на ProvideMissingTransactions. Затем отправляет SetCustomMiningJob серверу майнинга. Режим Coinbase-only не раскрывает список транзакций заранее и не использует DeclareMiningJob; он работает с выделенным идентификатором и данными coinbase — особой транзакции с вознаграждением за блок. Пул может отклонить предложение, поэтому важны и резервные подключения. Собственный выбор транзакций может распределить решения между большим числом майнеров, но не снимает с пула обязанности выплачивать вознаграждения. [4]

Предыдущий пример понятен и без названий сообщений. Однако при настройке или разработке важен точный формат. V2 передаёт данные в двоичном виде, в согласованном машинном представлении. Заголовок сообщения занимает 6 байтов; extension_type, msg_type и msg_length определяют расширение, тип сообщения и длину содержимого. После установки криптографической связи первым сообщением протокола становится SetupConnection: оно согласует протокол, версию и требования к функциям. Успех подтверждает SetupConnection.Success. Обозначение V2 у сервиса не заменяет реальной договорённости между конкретными программами. [1]

Канал — отдельный сеанс майнинга внутри соединения, а не другой блокчейн и не платёжный канал. Standard Channel выдаёт работу над заголовком блока, краткой сводкой его данных. Extended Channel позволяет посреднику делить большее пространство попыток с помощью extranonce — изменяемой части транзакции coinbase. Group Channel облегчает общую рассылку заданий нескольким каналам. OpenStandardMiningChannel и OpenExtendedMiningChannel открывают соответствующие сеансы. Практическая причина проста: если два устройства проверяют одинаковые варианты, они тратят электричество на одну и ту же работу. [3]

Пул должен постоянно измерять вклад Евы. Mining share — результат, который соответствует назначенному порогу сложности. Большинство shares не достигает более строгого сетевого порога для блока, хотя некоторые могут его достичь. NewMiningJob или NewExtendedMiningJob передаёт задание, SetNewPrevHash активирует связь с предыдущим блоком, а SetTarget устанавливает порог канала. SubmitSharesStandard или SubmitSharesExtended отправляет результаты с идентификатором задания, порядковым номером и изменяемыми данными заголовка. Принятый результат ещё не является выплатой на кошелёк. Вознаграждение пула и соответствие блока правилам Bitcoin остаются отдельными вопросами. [3]

Сначала она проверяет поддержку своим устройством, программой и выбранным пулом. Затем выясняет, какой участок защищён, откуда получен ключ проверки и нужен ли ей только более безопасный обмен или ещё и возможность самостоятельно выбирать транзакции для блока. Для второго варианта нужны работающие Template Provider, Job Declarator Client и соответствующая поддержка пула. Ева следит за задержками, отклонёнными и устаревшими shares, журналами ошибок и поведением при сбое. Инструкция должна соответствовать используемой версии. Stratum V2 может улучшить организацию майнинга; он не заменяет безопасное управление устройствами и не меняет правила проверки Bitcoin полными узлами. [6] [7]

Для полной картины прочитайте эту статью вместе с Bitcoin, Майнинг, Mining Pool, Braiins, Braiins Pool, ASIC Miner. На эту статью также ссылаются ASIC Miner, Mining Pool, Nonce, Марек «Slush» Палатинус.

DOC · 001Stratum V2 — Protocol OverviewПервичный источник DOC · 002Stratum V2 — Protocol SecurityПервичный источник DOC · 003Stratum V2 — Mining ProtocolПервичный источник DOC · 004Stratum V2 — Job Declaration ProtocolПервичный источник DOC · 005Stratum V2 — Template Distribution ProtocolПервичный источник DOC · 006Stratum V2 specification repositoryПервичный источник DOC · 007Stratum Reference Implementation librariesДокументация DOC · 008Braiins — Past and future of mining protocolsПервичный источник DOC · 009Bitcoin Optech — Stratum V2 topicДокументация DOC · 010Noise Protocol FrameworkДокументация DOC · 011Galaxy Research — Future of Bitcoin mining protocolsДокументация
Обновлено: Сначала источники · Не является инвестиционной рекомендацией