Блокчейн/Уровень III · Сеть/3.2 Майнинг/Урок 5
Шаблоны блоков и Stratum V2
Задание по заголовку, выбор шаблона и то, у кого в руках перо
МатериалыСпецификация Stratum V2 (stratumprotocol.org)BIP22 и BIP23
Любопытство
- Почему майнер со специализированным оборудованием по-прежнему полагается на оператора пула в решении о том, какие транзакции попадут в блок?
- Что позволяет майнеру, входящему в пул, выбирать транзакции для своих собственных блоков, при этом продолжая получать долю наград от всего пула?
- Как переход с JSON на бинарные протоколы одновременно решает задачи безопасности и эффективности в высокоскоростном майнинге?
Исследование
- С момента появления протокола каждый действительный блок требует выбора транзакций. В первые годы майнеры, запускавшие полные ноды, выбирали их сами. К 2012 году, когда оборудование стало специализированным и дорогим, большинство из них присоединились к пулам. Протокол Stratum, представленный Slush в том же году, стандартизировал то, как серверы пулов раздают работу участникам. Пулы собирали блоки еще с 2010 года; Stratum сделал эту схему гораздо эффективнее и унаследовал присущую ей централизацию построения блоков.
- В Stratum V1 оператор пула выступает единственным архитектором каждого блока-кандидата. Сервер собирает транзакции из собственного мемпула и отправляет майнерам составные части задания: две половины coinbase-транзакции, ветвь Меркла, хеш предыдущего блока, цель и время. Майнер подставляет свой extra-nonce, вычисляет корень Меркла и ищет подходящий хеш, но не может влиять на то, какие транзакции будут включены.
- Такая архитектура дает операторам пулов значительную власть над выбором транзакций. Пул, контролирующий существенную долю хешрейта сети, может фактически цензурировать транзакции, просто исключая их из своих шаблонов. Хотя этим пользуются редко, структурная возможность для этого существует. Кроме того, если сервер пула выходит из строя или подвергается DoS-атаке, все подключенные к нему майнеры простаивают, что создает единую точку отказа для их дохода.
- В 2012 году BIP22 и BIP23 ввели `getblocktemplate` — вызов, позволяющий майнинговому ПО запрашивать у ноды полный шаблон блока; он задумывался для того, чтобы участники пулов могли сами строить блоки. Пулы используют getblocktemplate внутри себя, чтобы получать шаблоны от собственных нод, но возможность участникам строить собственные блоки усложняла проверку и учет шар, и лишь немногие пулы ее предлагали (исключением был Eligius).
- Stratum V2, который с 2019 года разрабатывали, среди прочих, Braiins и Мэтт Коралло, переработал протокол для решения этих проблем. Он вводит бинарный формат для снижения накладных расходов и шифрование для безопасности. Ключевое нововведение — протокол Job Declaration (объявления заданий). Он позволяет майнеру, запускающему собственную полную ноду, объявлять серверу пула собственный шаблон блока. Пул принимает шары по такому заданию и распределяет награды по своей стандартной схеме, а майнер сохраняет контроль над включением транзакций.
- Альтернативные инициативы, такие как протокол DATUM от Ocean (2024), преследуют похожую цель — децентрализовать построение шаблонов. Прочитайте раздел Job Declaration в спецификации Stratum V2 и сравните его с тем, как строит шаблоны знакомый вам пул. Там, где эти протоколы внедрены, выбор транзакций возвращается к владельцам оборудования.
Ключевые факты
- Stratum V1, представленный Slush в 2012 году, централизует создание шаблонов блоков в руках операторов пулов.
- В Stratum V1 майнеры получают только задания по заголовку блока и никак не влияют на выбор транзакций.
- BIP22/BIP23 (2012) определили getblocktemplate; лишь немногие пулы позволяли участникам использовать его для построения собственных блоков.
- Stratum V2 (с 2019 года) использует бинарный протокол с шифрованием для повышения безопасности и эффективности.
- Протокол Job Declaration в Stratum V2 позволяет майнерам отправлять пулу собственные шаблоны блоков.
- Протокол DATUM от Ocean (2024) — еще одна попытка децентрализовать выбор транзакций среди майнеров, работающих в пулах.
Упражнение девять, шесть, три, один
9СобратьПеречислите 9 решений, связанных с созданием блока (например, какие транзакции включить, сообщение в coinbase, временную метку, nonce), и укажите, кто принимает каждое из них в Stratum V1.
6СгруппироватьСгруппируйте 9 решений в 6 категорий в зависимости от того, кто ими управляет: пул, майнер, программное обеспечение ноды, правила консенсуса, случайность или другое.
3Выделить главноеСведите 6 категорий к 3 основным причинам, по которым право выбирать транзакции имеет экономическое и политическое значение для производителей блоков.
1КристаллизоватьНапишите одно предложение о том, как механизм Job Declaration в Stratum V2 меняет баланс сил между операторами пулов и отдельными майнерами.
Проверка фактов
Даты, цифры и утверждения были проверены по приведенным ниже опубликованным источникам.