Перевод статьи Ааарона ван Видрума для 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) майнеры могут активировать софтфорк хешрейтом. Если майнеры не активируют его (условно) через год, то срок действия первого окна активации истекает. Затем разработчикам требуется некоторое время, чтобы проанализировать, почему активация не удалась, и пересмотреть предложение.
Затем наступает третий этап ― повторное развертывание софтфорка, на этот раз с использованием активации по BIP 8: майнеры получают еще один шанс активировать предложение хешрейтом, но если им это не удается, софтфорк активируется автоматически (в течение второго периода порог активации хешрейтом также может постепенно снижаться).
Основной аргумент против Modern Soft Fork Activation заключается в том, что без сотрудничества майнеров этот процесс занял бы относительно много времени, а некоторые считают, что этап с BIP 9 ― это пустая трата времени. Оригинальное предложение Коралло включает один год BIP 9, затем шесть месяцев на пересмотр обновления, и, наконец, два года на BIP 8 с автоматической активацией. Таким образом, на принятие обновления может уйти три с половиной года. По мнению некоторых разработчиков, из-за того, что до потенциальной автоматической активации остается так много времени, майнеры могут изпользовать это как своего рода политический рычаг, так как они попросту могут откладывать обновление.
BIP 8 + BIP 91
Это (пока неназванное) предложение лучше всего описать как вариант общей реализации BIP 8 и BIP 91. Оно предусматривает долгий период BIP 8. Если, к примеру, после одного года обновление не активируется, то разработчикам потребуется некоторое время, чтобы пересмотреть предложение (как в Modern Soft Fork Activation).
Если разработчики не обнаружат проблем с предложением (выяснится, что оно не активировалось из-за пассивности майнеров), они могут выбрать развертывание нового софтфорка по BIP 91, который использовался для активации SegWit. Оно позволит снизить порог хешрейта, что должно ускорить процесс активации.
С другой стороны, если разработчики обнаружат проблему в предложении, они могут развернуть новый софтфорк, который решит проблему, или даже полностью отменить исходный софтфорк (в данном случае Taproot).
Основной аргумент против этого предложения заключается в том, что не очень целесообразно развертывать софтфорк, который при необходимости может отменить другой софтфорк.
Sporks
Разработчик Bitcoin Core Джереми Рубин предложил концепцию «вероятностного софтфорка биткоина» под названием Sporks, которая предлагает больше стимулов по сравнению с типичными софтфорками с использованием хешрейта.
По словам Рубина, проблемой BIP 9 является то, что майнеры могут откладывать обновления без каких-либо затрат. Они могут просто отказываться сигнализировать о готовности к обновлению, что потенциально может дать им политическое влияние.
В Sporks сигнал о готовности больше не берется из данных, которые майнеры включают в блоки, которые они добывают. Он извлекается из хеша заголовка блока ― случайно сгенерированного доказательство работы, которое они создали, потратив свое время и ресурсы. Обновленные ноды согласились бы, что определенное подмножество действительных хешей заголовка блока активирует обновление.
Из-за случайности хешей майнер не может контролировать, какие именно хеши он генерирует ― обычные или хэши, которые активируют обновление; статистически он может случайно сгенерировать последний. Если майнер сгенерирует хеш, который активирует обновление, у него будет два варианта: либо транслировать его в сеть биткоина, заработать вознаграждение за блок и активировать софтфорк, либо отказаться от трансляции хеша, активации софтфорка и вознаграждения за блок. Таким образом, задержка обновления может дорого обойтись майнерам.
Основная проблема со Sporks заключается в том, что это относительно новая идея и она мало изучена. Хотя некоторые разработчики считают эту концепцию интересной, на данный момент она не является наиболее вероятным претендентом на активацию Taproot.
Дополнение
Ещё одна идея, которую начали активно обсуждать после подготовки этой статьи, заключалась в том, чтобы сначала развернуть BIP 8 с относительно длинным периодом (например, два года) без принудительной активации в конце. Это позволяет майнерам активировать софтфорк так, как они это делали уже несколько раз в прошлом. Однако, если через некоторое время (скажем, через шесть месяцев) софтфорк не будет активирован, и не будет веских причин для задержки, в новом клиенте может быть выпущен BIP 8 с принудительной активацией. Предполагается, что большинство майнеров активируют софтфорк либо до, либо во время этого периода с принудительной активацией, а все ноды с BIP 8 (с принудительной активацией и без неё) будут поддерживать софтфорк.
Примечание автора: дебаты по активации софтфорка (по активации Taproot в частности) продолжаются; в обзоре представлены не все предложения по обновлению.
Новости о биткоин, блокчейне и криптовалютах
Автор: Саша Косован