42 / 736FORK↑

Hard Fork

Изменение правил, которое старое ПО может отвергнуть

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

Hard Fork меняет правила допустимости блоков или транзакций без обратной совместимости со старыми узлами. Чтобы следовать новой несовместимой цепи, узел должен принять новые правила. Одного объявления или большей мощности майнинга недостаточно, чтобы его заставить.

Анна и Павел запускают Full Node — компьютер, самостоятельно проверяющий правила Bitcoin. Анна устанавливает программу, разрешающую более крупные блоки, а Павел оставляет прежний лимит. Приходит блок, который соответствует новым условиям, но превышает старое ограничение. Анна его принимает, Павел отвергает. Соединение не сломалось: программы расходятся в том, что допустимо включить в общую историю. Таков практический смысл Hard Fork. Название «обновление» не заставит компьютер Павла игнорировать собственное правило. Две ветви могут продолжаться, если для каждой создают блоки и люди ими пользуются. Если участники перейдут на одну систему правил, двух работающих сетей может и не остаться. [1]

Старый узел отвергает несовместимый блок и построенную на нём ветвь. Это не значит, что он остановится навсегда. Если майнеры продолжают другую ветвь по прежним правилам, узел может принимать её блоки. Без такого продолжения он остаётся на последнем допустимом для него блоке. Определяющими являются правила программы, а не число сторонников изменения. Чтобы следовать несовместимой ветви, оператор должен осознанно изменить эти правила. [1]

Bitcoin Cash отделился от Bitcoin на высоте блока 478559 1 августа 2017 года. Его правила разрешили блоки большего размера, чем тогда принимали узлы Bitcoin, и создали собственную продолжающуюся цепь. Узлы Bitcoin отвергали блоки, допустимые только для BCH, а узлы BCH следовали собственной действительной истории. Этот Hard Fork создал отдельную сеть, а не заменил Bitcoin обновлением в той же сети. [3] [4]

Представьте полученный кошельком платёж, который ещё не потрачен: Bitcoin записывает такой неизрасходованный выход как UTXO. Ветви с общим прошлым наследуют запись, а затем ведут её независимо. Если вы контролируете нужные ключи и обе сети продолжают признавать выход, обычно можно тратить соответствующие монеты в обеих. Это не удваивает стоимость: перед вами разные активы со своим спросом. Для средств на бирже получение монет другой сети зависит также от политики их зачисления самой биржей. [4] [6]

Имея монеты в обеих ветвях, можно хотеть заплатить лишь в одной. Без защиты кто-то может скопировать подписанную транзакцию и передать её в другую сеть, где она тоже может оказаться допустимой. Это риск replay. Проверяйте защиту конкретной сети и поддержку кошелька. Например, изменение sighash — правил о том, какие данные охватывает подпись, — может привязать транзакцию к определённой цепи. Другой внешний вид адресов помогает различать сети, но сам по себе не обеспечивает криптографической защиты от replay. [3]

Активация — назначенный момент начала применения новых правил. Высота блока обозначает его место в цепочке. Фиксированная дата, высота блока или сигнал майнеров могут координировать принявших обновление, но не изменяют ПО узла, который его не принял. Если у каждой из двух систем правил остаются экономически значимые участники, обе цепи могут продолжаться. Поэтому план активации Hard Fork является планом перехода с риском разделения. [1]

Управление здесь означает, как участники принимают решения об изменениях. Тикер — торговое обозначение актива, например BTC или BCH. Разработчики могут выпускать код, майнеры — перенаправлять hashrate, компании — выбирать торговые обозначения и правила депозитов, пользователи — программное обеспечение. Ни одно из этих действий само по себе не меняет правила, по которым другие узлы проверяют блоки. Разделение может сохраняться, если достаточно независимых участников добровольно поддерживают и ценят обе системы правил; не всякое несовместимое изменение обязано создавать две постоянно действующие сети. Назвать одну ветвь «обновлением» — общественная договорённость, а не правило консенсуса. [1]

Сеть может разделиться, даже если никто не собирается создавать новую валюту. В марте 2013 года некоторые старые узлы не смогли обработать блок с необычно большим числом входов транзакций. Они достигли лимита блокировок базы данных, которые не позволяют одновременным операциям менять одни и те же данные. Более новая версия 0.8 использовала другую базу и приняла блок. Майнинговые пулы BTC Guild и Slush вернулись к версии 0.7 и начали добывать блоки в ветви, которую принимали и старые узлы. Когда эта ветвь накопила больше работы, новые узлы тоже перешли на неё. Так устранили непреднамеренное расхождение в работе программ, а не создали отдельную сеть для долгосрочной поддержки, как в случае Bitcoin Cash. [2]

Soft Fork ужесточает существующие правила. Поэтому блок, который соответствует новым ограничениям, соответствует и старым правилам. Старый узел может принять его, даже не проверяя дополнительные ограничения. Hard Fork такой совместимости не даёт: блок, принятый новой программой, может нарушать старые правила. Чтобы принять его, оператор старого узла должен изменить правила своей программы. Soft Fork тоже не гарантирует, что сеть останется единой: если майнеры создадут блок с нарушением нового ограничения, старые и новые узлы могут оценить его по-разному. [1]

Обозначим через V(old) все блоки, принимаемые исходными правилами. Изменение является Hard Fork, если новое ПО принимает хотя бы один блок вне этого множества. Часто множество допустимых блоков расширяется, но решающим критерием остаётся совместимость: если блок может быть действительным для нового узла и недействительным для старого, старый валидатор не может следовать новой цепи, сохраняя прежние правила. [1]

Chainwork — это совокупная работа, подтверждённая майнингом блоков всей ветви. Hashrate, напротив, означает скорость майнинговых вычислений. Узел выбирает ветвь с наибольшей накопленной работой только среди цепей, соответствующих его правилам. Если блок нарушает эти правила, дополнительная работа не сделает его приемлемым. Поэтому Павел из начального примера не примет слишком большой блок только потому, что большинство майнеров строит на нём следующие блоки. Proof of Work может определить выбор между допустимыми ветвями, но не выбрать правила за оператора узла. [1]

Сначала проверьте сеть, поддерживаемый кошелёк и защиту от replay. Знакомого названия монеты или похожего адреса недостаточно. Не вводите Seed Phrase, слова восстановления кошелька, в неизвестный сервис, обещающий получить монеты форка. На собственном узле можно также проверить версию программы, подключённые узлы, последний принятый блок и отпечаток блока в месте разделения. Этот отпечаток называется хешем. Сравните сведения с документацией сети; веб-обозреватель блоков не заменяет самостоятельную проверку правил. [5] [6]

Для полной картины прочитайте эту статью вместе с Soft Fork, Правила консенсуса, Full Node, Reorg, Война за размер блока, UTXO. На эту статью также ссылаются Soft Fork, BIP (Bitcoin Improvement Proposal), Reorg, Война за размер блока.

DOC · 001Bitcoin Developer Guide — Consensus rule changesДокументация DOC · 002BIP 50 — March 2013 chain fork post-mortemСпецификация DOC · 003Bitcoin Cash upgrade specification — 2017 hard forkСпецификация DOC · 004BCHN Technical Bulletin — shared history and 2017 splitПервичный источник DOC · 005Bitcoin Core v29.0: getblockchaininfoДокументация DOC · 006Bitcoin.org — Securing your walletДокументация
Обновлено: Сначала источники · Не является инвестиционной рекомендацией