Оповещение и активация по стандарту BIP-9

Механизм, использованный в стандартах BIP-34, BIP-66 и BIP-65, был успешно применен при активации трех неустойчивых разветвлений. Тем не менее он был заменен из-за присущих ему следующих ограничений:

использование целого числа в качестве номера версии блока, вследствие чего за один раз возможна только одна процедура активации неустойчивого разветвления, так как требуется приведение в полное соответствие предложений и окончательного соглашения по их приоритетам и последовательности введения;

поскольку номер версии блока увеличивается на 1, механизм не мог обеспечить реализацию четко определенного способа отмены изменения и последующего предложения другого варианта изменения. Если продолжают работать старые клиенты, то они могут ошибаться при оповещении о новом изменении, которое в действительности представляет собой ранее отмененное изменение;

каждое новое изменение необратимо сокращает диапазон доступных номеров версий блоков для будущих изменений.

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

Стандарт BIP-9 интерпретирует номер версии блока как битовое поле, а не целое число. Так как изначально номер версии блока использовался как целое число от 1 до 4, только 29 битов остались доступными для работы с ними как с битовым полем. Таким образом, 29 битами можно воспользоваться для независимых и одновременных оповещений о готовности принять 29 различных предложений.

Стандарт BIP-9 также устанавливает максимальное время для оповещения и активации. Благодаря этому майнерам не нужно постоянно генерировать оповещения. Если предложение не активировано за интервал TIMEOUT (определенный в самом предложении), то такое предложение считается отвергнутым. Предложение может быть повторно выдвинуто для оповещения с установкой другого бита и с восстановлением периода активации.

Более того, по истечении интервала TIMEOUT, если предложение было активировано или отвергнуто, бит оповещения может быть повторно использован для очередного предложения без каких-либо затруднений. Таким образом, одновременно можно создавать до 29 оповещений об изменениях, а после завершения интервала TIMEOUT освободившиеся биты можно повторно использовать для предложения новых изменений.