Перевод статьи Ааарона ван Видрума для Bitcoin Magazine.
Taproot, предлагаемое обновление протокола, находится на поздних стадиях разработки. Разработчики Bitcoin Core согласны с тем, что это обновление принесет пользу биткоину; большая часть более широкого биткоин-сообщества также приветствует обновление. Поэтому очень вероятно то, что Taproot войдет в релиз Bitcoin Core, а позже появится и в других реализациях клиентов биткоина.
Но возникает один вопрос: как активировать обновления в самой сети биткоина? Taproot ― это консенсусное изменение протокола. Это значит, что ноды должны каким-то образом переключиться со старых правил на новые, не разделяя сеть биткоина.
Предыдущие софтфорки и BIP 9
Обновление Taproot будет активировано через софтфорк. Этот тип обновления добавляет или ужесточает правила ― в отличие от хардфорка, который удаляет или ослабляет правила. Суть добавления или ужесточения правил заключается в следующем: всё, что обновленная нода считает действительным, необновленная нода также считает действительным. Если старая нода принимает оба типа транзакции (A и B), а новые правила допускают только транзакции A, то старая нода останется совместимой с остальными.
Активация самых ранних софтфорков планировалась на определенный день (flag day). Разработчики (в частности, Сатоши Накамото) указывали в коде нового клиента биткоина время, когда обновленные узлы будут применять новые правила. Рекомендовалось обновить систему до этой даты, чтобы избежать разделения сети (в те дни майнеры и пользователи биткоина часто были одними и теми же людьми).
Поскольку необновленные ноды остаются совместимыми, это означает, что нет срочной необходимости в немедленном обновлении всех нод при применении новых правил протокола, что дает большую гибкость (хотя пользователям все же рекомендуется принимать обновления, так как именно они обеспечивают соблюдение новых правил, отклоняя транзакции и блоки, которые их нарушают).
Примерно с 2012 года софтфорки все чаще начали использовать хешрейт в качестве координационного механизма перехода на новые правила. Добавляя определенные данные в свои блоки, майнеры могут сообщать остальной части сети о том, что они обновили свое ПО и готовы применять новые правила. При достаточной поддержке хешрейтом все обновленные ноды запускаются для применения новых правил.
Эта стратегия описана в BIP 9, предложении по улучшению биткоина (Bitcoin Improvement Proposal, BIP). BIP 9 использовался для активации последнего обновления биткоина под названием Segregated Witness (SegWit). У майнеров был год для активации обновления; требовалось, чтобы 95% блоков на протяжении любого интервала сложности включали сигнал о готовности к обновлению. Если бы через год этого не произошло, то период активации обновления бы истек.
Тем не менее, BIP 9 нельзя назвать беспроблемным. Как и в некоторых предыдущих обновлениях, часть майнеров не провела обновление, поскольку у них нет существенных стимулов проводить его быстро. Но большая проблема заключалась в том, что некоторые майнеры стали рассматривать этот процесс как своего рода голосование по обновлению, где вместо того, чтобы сигнализировать о готовности, они будут (или не будут) сигнализировать о его поддержке. Хуже того, некоторые майнеры решили использовать это «голосование», чтобы попытаться получить политические рычаги влияния на процесс разработки биткоина.
После долгих дискуссий SegWit активировали, но только после того, как альтернативные клиенты биткоина включили новые схемы активации. BIP 148, включенное в клиент BIP 148, запускаемый некоторыми пользователями, был запрограммирован на прием только тех блоков, которые сигнализируют о поддержке обновления протокола. В это же время BIP 91, включенное в клиент btc1, фактически снизило требования к хешрейту с 95% до 75%. Большинство разработчиков Bitcoin Core признали BIP 9 не самым оптимальным решением и начали думать об альтернативах.
BIP 8
BIP 8 стало первой альтернативым решением BIP 9, которое было предложено автором BIP 148 Shaolinfry и разработчиком Bitcoin Core Люком Даширом. Оно отличалось от BIP 9 тем, что вместо отмены обновления через год из-за недостаточного хешрейта будет сделано прямо противоположное ― софтфорк будет активирован принудительно в определенный день. Все обновленные ноды с этого момента начнут применять новые правила.
Основным преимуществом BIP 8 было то, что майнеры не могут заблокировать софтфорк (при условии, что его поддержат пользователи) и, следовательно, не могут использовать это влияние в своих интересах. Они могут ускорить активацию и помочь скоординировать обновление протокола, но обновление в конечном итоге произойдет даже в том случае, если они не активируют его сами.
Аргумент против BIP 8 и его принудительной (или автоматической) активации заключается в том, что такое обновление может быть очень рискованным на коротких периодах времени. Если большинство хешрейта и какая-то часть пользователей не обновятся, то эта схема может разделить сеть между обновленным и необновленными нодами. Разработчики предполагали, что большинство пользователей поддержат обновление и это, в конечном итоге, решит проблему в пользу обновленной части сети. Однако необновленные пользователи рисковали потерять средства, в то время как необновленные майнеры тратили бы хешрейт впустую в ущерб безопасности сети.
Modern Soft Fork Activation
Хотя разработчики Bitcoin Core стремятся учесть интересы пользователей и стараются избегать спорных решений, у них не может быть абсолютной уверенности в правильности обновления.
В связи с этим разработчик Bitcoin Core Мэтт Коралло предложил решение под названием Modern Soft Fork Activation («Современная активация софтфорка»). Эта активация состоит из нескольких этапов, которые по сути представляет собой последовательную реализацию BIP 9 и BIP 8.
На первом этапе (BIP 9) майнеры могут активировать софтфорк хешрейтом. Если майнеры не активируют его (условно) через год, то срок действия первого окна активации истекает. Затем разработчикам требуется некоторое время, чтобы проанализировать, почему активация не удалась, и пересмотреть предложение.