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

Глоссарий / Протокол и обновления

Speedy Trial

Что такое Speedy Trial?
Speedy Trial представляет собой схему активации, примененную для Taproot: короткое окно сигнализации майнеров с пониженным порогом 90 процентов и вступлением в силу, отложенным до фиксированной более поздней высоты блока.

Определено в BIP-341.

Speedy Trial представляет собой измененную схему развертывания версийных битов BIP-9, записанную в сам BIP-341, а не в отдельный BIP. У майнеров было 109 дней, с 24 апреля по 11 августа 2021 года, чтобы выставить бит 2 в 1815 из 2016 блоков, а вступление в силу было привязано к блоку 709 632. Эта высота вступления в силу была зафиксирована до открытия сигнализации, поэтому держатели знали точный блок, на котором изменятся правила.

Как это работает

Speedy Trial сохраняет метод подсчета BIP-9, меняет два его числа и добавляет один параметр, которого у BIP-9 никогда не было.

BIP-9 подсчитывает сигнализирующие блоки в каждом периоде пересчета из 2016 блоков и переводит развертывание из STARTED в LOCKED_IN, как только в одном периоде их оказывается достаточно. Порог составляет 1916 блоков, 95 процентов периода, а собственный ориентир для окна равен одному году, 31 536 000 секунд после времени начала. И начало, и окончание срока читаются из медианного времени прошлого, медианы отметок времени блока и десяти его предшественников, поэтому часы принадлежат цепи, а не чьим-либо наручным часам.

Развертывание Taproot снизило порог до 1815 блоков, 90 процентов, и дало окну 9 417 600 секунд, от отметки времени эпохи 1619222400 до 1628640000. Добавлен был параметр min_activation_height. При обычном BIP-9 развертывание, зафиксированное в LOCKED_IN, становится ACTIVE на следующей границе пересчета, поэтому фиксация привязывает высоту вступления в силу лишь к 2016 блокам, которые за ней следуют. При Speedy Trial состояние LOCKED_IN повторяется, пока цепь не достигнет указанной высоты, и только тогда переходит в ACTIVE. Высота в основной сети составила 709 632, что равно ровно 352 периодам пересчета и потому является границей периода. Развертывание действительно активировалось на этой высоте.

Весь замысел состоит в разделении. Сигнализация быстро отвечает на один вопрос, а долгий промежуток после нее нужен для того, чтобы все остальные успели обновиться, а не для споров.

Где это видно

Параметры Speedy Trial читаются в поле версии каждого блока, добытого в окне сигнализации 2021 года.

Сигнализирующий блок несет старшие биты 001 плюс собственный бит развертывания, поэтому сигнал Taproot на бите 2 читается как версия 0x20000004. Майнеры, запрашивающие работу, встречают то же развертывание через getblocktemplate, чей ключ "rules" называет уже активные мягкие форки, а ключ "vbavailable" сопоставляет каждому ожидающему свой бит. Имя, которое BIP-341 дает этому развертыванию, а значит и строка, которую читает майнер, является просто "taproot".

Запуск того же развертывания в testnet3 показывает, для чего была нужна задержка. Там использовались те же отметки времени начала и окончания, порог в 1512 блоков при 75 процентах и min_activation_height 0, поэтому ничего не откладывалось сверх собственного промежутка BIP-9 в один период, и развертывание стало активным на высоте 2 011 968. Основная сеть получила дополнительное ожидание; у тестовой сети не было экономики, которую нужно защищать. В signet правила были активны всегда, поэтому испытания там не было.

Speedy Trial vs UASF

Мягкий форк, активированный пользователями, навязывает результат со стороны узлов, и Speedy Trial намеренно отказался от такой власти.

Механизм принуждения записан в BIP-8 как lockinontimeout. Если установить его в true, развертывание получает период MUST_SIGNAL перед окончанием срока, в котором блоки без сигнала становятся недействительными, как только исчерпан допуск периода на несигнализирующие блоки, что гарантирует фиксацию независимо от того, сотрудничают майнеры или нет. BIP-8 рекомендует этот флаг для любого мягкого форка, который, как ожидается, встретит политическую оппозицию со стороны заметной доли майнеров, и в том же документе предупреждает, что узлы, запустившие его, могут в течение длительного времени следовать за цепью с меньшей работой и могут нуждаться в том, чтобы предпочтительно соединяться друг с другом.

В Speedy Trial такого флага не было. Недостижение порога до окончания срока переводило развертывание в FAILED и больше ничего не делало, и на такой компромисс он пошел: никакой гарантии активации, никакого риска разделения цепи и дешевый ответ в любом случае.

Не путать с

Часто задаваемые вопросы

Есть ли отдельный BIP для Speedy Trial?

Нет. У Speedy Trial нет собственного номера BIP. Его параметры и его измененная машина состояний записаны в раздел Deployment документа BIP-341, спецификации Taproot, где они описаны как BIP-9, измененный для использования более низкого порога, с дополнительным параметром min_activation_height.

Что произошло бы, если бы майнеры не просигнализировали вовремя?

Развертывание перешло бы в FAILED по истечении срока 11 августа 2021 года, и в сети ничего бы не изменилось. Машина состояний Speedy Trial не содержала флага принудительной активации того рода, который BIP-8 предоставляет через lockinontimeout, поэтому если бы майнеры так и не достигли порога, попытка просто закончилась бы.

Влияет ли способ активации на биткоины, которые у меня уже есть?

Только через то, что он активировал. Taproot стал обязательным к исполнению на блоке 709 632, и как мягкий форк он оставил старое программное обеспечение работать без изменений, поэтому выходы, созданные до него, остались доступными для расходования. Способ определил сроки и риск разделения, а не сами правила.

Читайте далее

Связанные термины

Еще в разделе «Протокол и обновления»

Читать эту страницу на английском