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

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

Мягкий форк

Что такое мягкий форк?
Мягкий форк ужесточает правила биткоина так, что блоки, действительные по новому программному обеспечению, остаются действительными и по старому, благодаря чему сеть может обновляться, никого не вытесняя из цепочки.

Каждое обновление, которое биткоин действительно получил, работает именно так. Ужесточение правил означает, что старый узел по-прежнему принимает новые блоки, потому что они не нарушают ни одного из известных ему правил. Мягкие форки в период с апреля 2012 года по ноябрь 2021 года дали биткоину адреса хеша скрипта, таймлоки, SegWit и Taproot, и ни один из них не оставил кошелек без доступа к средствам.

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

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

Хитрость, которая делает это возможным, в том, что язык скриптов биткоина намеренно оставлял двери открытыми. Десять опкодов были определены как no-op, которые выполняются успешно, ничего не делая, а выходы типа, который еще никто не определил, считались доступными для траты любому, кто мог их удовлетворить. Мягкий форк проходит через одну из таких дверей: он берет то, что старые узлы пропускают без возражений, и прикрепляет к этому реальное требование. OP_NOP2 стал OP_CHECKLOCKTIMEVERIFY в декабре 2015 года, а OP_NOP3 стал OP_CHECKSEQUENCEVERIFY в июле 2016 года, и для узла 2014 года оба по-прежнему являются no-op в скрипте, который по-прежнему проходит.

Следствие в том, что роли распределяются по-разному. Необновленные узлы продолжают проверять все известные им правила и остаются в той же цепочке, что и все остальные. Обновленные узлы проверяют больше. Майнеры являются той группой, которой действительно нужно двигаться, потому что майнер, не обновившийся, может собрать блок, который обновленные узлы отвергнут, потерять вознаграждение и увлечь всех, кто за ним следует, на обреченную ветвь.

Именно поэтому сложной частью является активация, а не код. Если большая часть хешрейта обеспечивает соблюдение нового правила, блоки, которые его нарушают, становятся сиротскими, и ужесточение закрепляется. Если нет, сеть раскалывается по линии разлома, которую мягкий форк как раз и был призван избежать. Биткоин испробовал несколько способов установления такого большинства: подсчет сверхбольшинства версий блоков, схему битов версии из BIP-9, варианты тайм-аута из BIP-8 и трехмесячное окно Speedy Trial, использованное для Taproot.

Мягкий форк можно также отменить так, как нельзя отменить хардфорк. Поскольку новое правило является ограничением, которого старое программное обеспечение никогда не требовало, отказ от него возвращает всех в цепочку, которую все версии по-прежнему считают действительной.

Почему это важно, когда вы покупаете биткоин

Честная главная мысль состоит в том, что мягкие форки являются причиной, по которой обновления биткоина никогда ничего не стоили обычным держателям.

Здесь нет миграции, нет крайнего срока, нет объявления, которое можно пропустить. Монеты, лежащие на адресе P2PKH, созданном в 2013 году, можно потратить сегодня тем же ключом и тем же программным обеспечением, и каждый мягкий форк с тех пор старательно сохранял это положение. Сравните это с любой другой финансовой платформой, которой вы пользуетесь, и это самое недооцененное свойство системы.

Что вы действительно замечаете, так это задержку, и она проявляется на периферии. Протокол активирует новый тип выхода; кошелькам нужен год, чтобы сделать его типом по умолчанию; биржам нужно больше времени, чтобы разрешить вам вывод на него; некоторые не разрешают никогда. Среди бирж, которые рассматривает этот сайт, поддержка отправки на адреса bech32 сейчас обычна, а поддержка адресов назначения Taproot bech32m по-прежнему неравномерна, что представляет собой задержку в четыре года для изменения, которое было консенсусным законом с первого дня. Именно этот разрыв, а не протокол, решает, можете ли вы на самом деле пользоваться новой возможностью.

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

Pay to script hash, мягкий форк, сделавший мультиподпись пригодной к использованию

P2SH является самым ранним мягким форком, который стоит изучить, потому что он показывает схему в миниатюре.

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

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

Активация прошла неаккуратно, и это повторялось с тех пор. Конкурирующее предложение, BIP-17, раскололо мнения разработчиков; крайний срок сдвинулся с 1 февраля на 1 апреля 2012 года; а майнеры сигнализировали о поддержке, записывая строку "/P2SH/" в блоки, которые они добывали. Почти каждый адрес, начинающийся с 3, который существует, включая те, что биржи выдают для пополнения, происходит из того спора.

Мягкий форк vs BIP

BIP является документом; мягкий форк представляет собой правило, которое обеспечивают узлы. BIP-341 представляет собой текстовый файл в репозитории GitHub, который мог бы написать любой, тогда как Taproot стал консенсусным законом в блоке 709 632, 14 ноября 2021 года. Различие важно потому, что большинство BIP так и не активируются, включая BIP-17 и предложения о ковенантах, и потому, что один мягкий форк часто охватывает сразу несколько документов, как это сделал SegWit через BIP-141, BIP-143, BIP-144 и BIP-147. Назвать номер BIP, когда вы имеете в виду активированное правило, безвредно в разговоре и вводит в заблуждение, когда вы пытаетесь понять, что на самом деле обеспечивает ваш узел.

Не путать с

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

Нужно ли обновлять кошелек при активации мягкого форка?

Нет. Необновленный кошелек продолжает следовать той же цепочке и продолжает тратить биткоины, которые у него уже есть. Обновление важно только тогда, когда вы хотите использовать новую функцию, например более дешевый тип адреса.

Может ли мягкий форк отнять биткоины, которые у меня уже есть?

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

Чем мягкий форк отличается от хардфорка?

Направлением. Мягкий форк сужает набор действительных блоков, поэтому старое программное обеспечение остается в той же цепочке, не замечая этого. Хардфорк расширяет его, поэтому старое программное обеспечение отклоняет новые блоки и следует другой цепочке, если не обновится.

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

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

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

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