Глоссарий / Протокол и обновления
Мягкий форк, активируемый майнерами
Другие названия: MASF.
- Что такое мягкий форк, активируемый майнерами?
- Мягкий форк, активируемый майнерами, включается, когда сверхбольшинство добытых блоков подает за него сигнал, используя поле версии блока как голос, который каждый узел подсчитывает автоматически.
Определено в BIP-9.
Майнеры не решают, хорошо ли правило. Они объявляют, когда их достаточно много готовы его применять, чтобы ужесточение не оставило без вознаграждения честную работу. Согласно BIP-9 порог составляет 1916 из 2016 блоков в одном периоде пересчета сложности, то есть 95 %, и в каждом периоде подсчет начинается заново с нуля, пока порог не будет достигнут.
Как это работает
Сигнализация задействует поле, которое уже есть в каждом заголовке блока, поэтому новый тип сообщения или реестр не требуется.
Исходный метод, введенный вместе с BIP-34 в 2013 году, просто повышал номер версии блока и вел подсчет назад: правило становилось обязательным, когда 950 из последних 1000 блоков несли более высокую версию, после этапа в 750 из 1000, в течение которого оно обязывало только те блоки, которые его заявляли. Это работало, но версии приходилось развертывать строго по очереди, поэтому два предложения никогда не могли быть в работе одновременно.
BIP-9 заменил счетчик на 29 независимых битов. Каждое предложение резервирует один бит и время начала, майнеры устанавливают этот бит в добываемых блоках, а каждый узел подсчитывает бит на протяжении всего периода пересчета сложности в 2016 блоков. Достижение порога переводит развертывание в состояние locked in, а применение начинается на один полный период позже, давая тем, кто не обновился, еще примерно две недели. Развертывание, которое так и не достигает порога, истекает по своему таймауту, и бит освобождается для повторного использования.
Два варианта важны исторически. BIP-91 сжал весь процесс до 80 % от 336 блоков, чтобы сигнализацию SegWit можно было быстро сделать обязательной; он зафиксировался на блоке 476 768 20 июля 2017 года и начал применяться с блока 477 120 23 июля 2017 года. Speedy Trial, выпущенный в Bitcoin Core 0.21.1 1 мая 2021 года, сохранил подсчет по BIP-9, но снизил порог до 1815 блоков из 2016, ограничил попытку примерно тремя месяцами и отделил фиксацию от активации, заранее установив минимальную высоту активации.
Где это видно
Обозреватели блоков показывают поле версии, обычно в виде восьмисимвольного шестнадцатеричного значения, и во время активного развертывания они показывают, какой бит установлен. Версия, начинающаяся с 0x20, означает, что блок вообще использует биты версии; младшие биты представляют собой отдельные сигналы.
Сигнализация также оставляет более простой след в транзакции coinbase, где пулы пишут свободный текст. Строка "/P2SH/" обозначала поддержку pay to script hash в 2012 году, а "NYA" обозначала New York Agreement в 2017 году. Это поле является украшением, а не протоколом, но часто именно там спор становится видимым в первую очередь.
Для всех, кто держит биткоин, из процента сигнализации следует понимать прежде всего то, чем он не является. Это не референдум, он не взвешен по объему владения, и пул, сигнализирующий за бит, говорит от имени хеш-мощности, которую ему сдали в аренду другие люди. Правило может набрать 95 % и при этом оставаться непопулярным, а правило может применяться пользователями вообще без поддержки майнеров.
Мягкий форк, активируемый майнерами, vs мягкий форк, активируемый пользователями
Эти два подхода отвечают на разные вопросы. Мягкий форк, активируемый майнерами, спрашивает, когда должно начаться применение, и позволяет хеш-мощности назначить дату. Мягкий форк, активируемый пользователями, сначала утверждает дату и оставляет майнерам либо подчиниться, либо увидеть отклонение своих блоков. В 2017 году оба варианта были на столе одновременно, и важен именно порядок событий: путь через майнеров застопорился на месяцы, был назначен срок, который применяли бы пользователи, и путь через майнеров завершился в течение нескольких недель после того, как этот срок стал правдоподобным.