Глоссарий / Протокол и обновления
Хардфорк
- Что такое Хардфорк?
- Хардфорк ослабляет или меняет правила биткоина так, что блоки, которые старое программное обеспечение отвергает, становятся действительными, а значит, каждый узел должен обновиться или остаться позади в другой цепочке.
Обратная совместимость работает только в одну сторону, и хард форк направлен в противоположную. Старое программное обеспечение считает новые блоки недействительными и продолжает строить собственную цепочку, поэтому, если только принятие не будет почти единодушным, результат представляет собой две монеты там, где была одна. Именно так появился Bitcoin Cash на блоке 478 558 1 августа 2017 года.
Как это работает
Хард форк расширяет набор блоков, которые узел принимает, а расширение идет в ту сторону, которую скрыть невозможно.
Рассмотрите изменение, которое разрешает блок размером восемь мегабайт. Обновленные узлы принимают и маленькие, и большие блоки. Необновленные узлы принимают только маленькие. Пока никто не намайнит большой блок, две группы неразличимы, и раскол существует только на бумаге. Как только майнер публикует такой блок, у групп оказываются разные концы цепочки, и ничто в протоколе уже никогда не вернет их в одно целое, потому что ни одна из сторон не согласна отменить блок, который считает совершенно действительным.
Поэтому хард форки требуют координации, какой не требуют софт форки. Изменение назначается на определенную высоту блока или на календарную дату, объявляется заранее, и предполагается, что все обновятся до этого момента. Пропустите срок, и ваш узел не просто работает на старом программном обеспечении, он следует за цепочкой, которую бросили те, с кем вы совершаете сделки.
Хард форк, который должен породить долговечную вторую цепочку, нуждается еще и в защите от повторного воспроизведения. Без нее подписанная транзакция действительна в обеих цепочках, поэтому трата в одной может быть повторно разослана в другой и потратить там соответствующие средства. Bitcoin Cash решил это, потребовав новый тип хеша подписи, SIGHASH_FORKID, который делает его транзакции структурно недействительными в биткоине, а транзакции биткоина недействительными в нем. Расколы, пропустившие этот шаг, приводили к тому, что пользователи теряли средства из-за случайных повторов.
Сам биткоин менял свои правила таким образом только в первые годы, под давлением. Инцидент переполнения значения 15 августа 2010 года породил блок, создавший 184 млрд монет из-за арифметической ошибки, и для исправления потребовались пропатченный клиент и намеренная реорганизация цепочки с откатом до этого блока. Раскол цепочки в марте 2013 года был урегулирован запланированным переходом, описанным в BIP-50. С тех пор ничего близкого не происходило, и механизма принудительно вызвать хард форк не существует: хард форк в биткоине представляет собой предложение, которое удается только в том случае, если вся экономика решит за ним последовать.
Почему это важно при покупке биткоина
Всякий раз, когда объявляется хард форк, возникают два практических вопроса, и только один из них касается ваших биткоинов.
Первый вопрос касается хранения. Биткоины в кошельке, ключи от которого есть у вас, автоматически существуют по обе стороны любого раскола, потому что обе цепочки наследуют один и тот же реестр до блока форка. Вы их не заявляете, не регистрируете и ничего не подключаете к сайту. Если вы хотите получить доступ ко второму активу, вы импортируете ту же сид-фразу в программное обеспечение, которое следует за второй цепочкой, и делаете это на устройстве, где больше ничего нет, потому что это программное обеспечение написано людьми, которым у вас нет причин доверять.
Второй вопрос касается вашей биржи. Биткоины, хранящиеся на платформе, являются решением платформы, а не вашим. В 2017 году одни из бирж, которые рассматривает этот сайт, зачислили Bitcoin Cash на балансы клиентов, другие включили торговлю неделями позже, а третьи вовсе его не разместили, и все это при приостановленных пополнениях и выводах. Ничего из этого нигде не закреплено договором. Если раскол для вас важен, биткоины должны оказаться вне платформы заранее.
Слой мошенничества хуже риска протокола. Фальшивые аирдропы форков являются одним из старейших шаблонов в нашем руководстве по мошенничеству: сайт объявляет новую цепочку, форму для заявки и поле для слов вашей фразы восстановления. Ни один раскол никогда их не требовал. Все, что просит сид-фразу, чтобы выдать активы форка, крадет ваши исходные биткоины.
Bitcoin Cash, хард форк, который действительно произошел
Bitcoin Cash представляет собой наглядный пример, потому что все, что он сделал, было опубликовано заранее, а все, что ему требовалось, где-то еще сначала пошло не так.
Спецификация устанавливала время активации 1 августа 2017 года и правило, по которому первый блок после него должен превышать один мегабайт, что гарантировало раскол, а не оставляло его на волю случая. Блок 478 558 и был этим блоком. Новые правила подняли базовый лимит до восьми мегабайт, отказались от SegWit и добавили SIGHASH_FORKID, чтобы две цепочки никогда не могли повторить транзакции друг друга.
Урок, который остается, в том, что произошло дальше. Установив, что группа может уйти с копией реестра, Bitcoin Cash сам подвергся новому хард форку со стороны фракции, не согласной с его курсом, и цепочки-преемники продолжают разделяться с тех пор. Хард форк не является разовым событием в жизни проекта; он представляет собой прецедент, на который может сослаться следующее разногласие.
Хард форк vs альткоин
Хард форк наследует реестр; альткоин начинает с пустого. Litecoin запустился как собственная цепочка вообще без балансов, поэтому никто не проснулся владельцем чего-либо. Bitcoin Cash запустился со всеми балансами биткоина на момент блока 478 558, уже зачисленными в его цепочке, поэтому держателям внезапно сообщили, что они чем-то владеют. После раскола это различие перестает иметь техническое значение, поскольку оба представляют собой отдельные активы с отдельными правилами и отдельными ценами, но для способа распределения монет оно имеет определяющее значение.
Хард форк vs софт форк
Различие в направлении, и направление решает, кто вынужден действовать. Хард форк делает ранее недействительные блоки действительными, поэтому каждый узел должен обновиться или выпасть из цепочки, в которой находится остальная экономика. Софт форк делает ранее действительные блоки недействительными, поэтому необновленный узел продолжает следовать той же цепочке, не замечая, что что-то изменилось. Один требует всеобщих действий к сроку; другой ничего не требует от того, кто не занимается майнингом.