Что такое форк блокчейна? Жесткие и мягкие форки
Форк блокчейна возникает, когда меняются правила сети или узлы временно расходятся во мнениях о последнем блоке. Разбираем мягкие и жесткие форки, их различия и примеры.
Форк блокчейна происходит, когда меняются правила сети или когда узлы временно расходятся во мнениях о последнем блоке. Мягкий форк ужесточает правила так, что старые узлы продолжают их принимать. Жесткий форк меняет правила так, что старые узлы их отвергают, поэтому всем приходится обновляться, а если часть участников отказывается, цепочка может расколоться на две отдельные сети.
Три явления, которые называют «форком»
Этим словом называют разные события, что порождает путаницу.
Временные форки. Два майнера или валидатора создают корректные блоки почти одновременно. На мгновение в сети существуют две версии последнего блока, затем сеть приходит к одной из них, а другой блок отбрасывается. Это происходит регулярно и не требует действий от пользователей. Наше руководство о том, почему важны подтверждения в сети, объясняет, почему платформы ждут несколько блоков.
Мягкие форки. Изменение правил, совместимое с предыдущими версиями.
Жесткие форки. Изменение правил, несовместимое с предыдущими версиями, которое может привести к постоянному расколу, а может и не привести.
Мягкие форки: ужесточение правил
Мягкий форк делает правила строже. Блоки, созданные по новым правилам, по-прежнему выглядят корректными для узлов со старым ПО, поэтому неообновленные узлы продолжают следовать за цепочкой, даже если не полностью понимают каждую новую функцию.
Пример: SegWit в Bitcoin. Segregated Witness изменил способ хранения и учета данных подписей и был активирован в 2017 году на блоке 481 824. Он был развернут как мягкий форк, поэтому пользователи, которые не обновились, не были отрезаны от сети. Наше руководство по типам адресов Bitcoin показывает новый формат адресов, который он ввел.
Мягкие форки по-прежнему требуют широкой поддержки. Если майнеры или валидаторы, создающие блоки, не применяют новые правила, изменение не приживается.
Жесткие форки: изменение правил
Жесткий форк ослабляет или меняет правила так, что блоки, корректные по новым правилам, становятся некорректными по старым. Каждый узел должен обновиться, чтобы оставаться в той же цепочке.
Рисунок: мягкий форк в сравнении со спорным жестким форком. При расколе обе цепочки разделяют общую историю до блока форка.
Возможны два очень разных исхода:
Плановое обновление. Если практически все обновляются, сеть продолжает работать как единая цепочка с новыми правилами. Ethereum использовал запланированные жесткие форки для большинства своих крупных обновлений, включая переход на proof of stake в сентябре 2022 года. Наше руководство по proof of stake рассказывает об этом переходе.
Спорный раскол. Если значительная группа отказывается обновляться или намеренно работает с несовместимыми правилами, две цепочки продолжаются из одной и той же истории. 1 августа 2017 года группа, которая хотела более крупных блоков, отделилась от Bitcoin и запустила Bitcoin Cash как отдельную сеть. Наше руководство по войне за размер блока Bitcoin рассказывает всю историю.
Жесткий и мягкий форк: краткое сравнение
| Мягкий форк | Жесткий форк | |
|---|---|---|
| Изменение правил | Ужесточение | Иные или ослабленные |
| Старые узлы | Продолжают следовать за цепочкой | Отвергают новые блоки |
| Нужно обновление | Рекомендуется | Обязательно, чтобы остаться в новой цепочке |
| Риск постоянного раскола | Низкий | Возможен, если поддержка разделена |
| Пример в Bitcoin | SegWit (2017) | Раскол Bitcoin Cash (2017) |
Как включается форк
Изменение правил не вступает в силу в момент публикации разработчиками. Сети используют механизмы активации, чтобы все переключились в одной и той же точке:
- Сигнализация майнеров или валидаторов. Производители блоков помечают свои блоки, показывая готовность, и изменение активируется, когда установленная доля недавних блоков сигнализирует о поддержке. Bitcoin использовал этот подход для SegWit, хотя процесс затянулся на несколько месяцев до активации.
- Фиксированные даты (flag days). Изменение активируется на определенной высоте блока или в определенное время, независимо от того, сигнализировали ли все участники. Запланированные обновления Ethereum работают именно так: клиентское ПО выпускается заранее со встроенным блоком активации.
- Мягкие форки, активируемые пользователями. Операторы узлов устанавливают дату, после которой их узлы будут отклонять блоки, не соблюдающие новые правила, что создает давление на производителей блоков с целью соблюдения этих правил. Наиболее известным примером стал BIP 148 в Bitcoin в 2017 году. См. войну за размер блока в Bitcoin.
Выбор механизма многое говорит о том, кто обладает властью в сети. Сигнализация дает производителям блоков право вето; флаговые дни и форки, активируемые пользователями, придают больше веса тем, кто управляет узлами.
Форки как плановые обновления
В некоторых сетях жесткие форки вовсе не являются драматическими событиями. Ethereum использовал длинную серию запланированных жестких форков для добавления функций и изменения экономической модели, включая обновление London в августе 2021 года, которое ввело сжигание части каждой комиссии за транзакцию, и The Merge в сентябре 2022 года, которое заменило майнинг стейкингом. Поскольку команды разработчиков клиентов, биржи и операторы узлов заранее координировали действия, сеть каждый раз продолжала работать как единая цепь. Разница между обновлением и расколом определяется не типом форка, а тем, согласны ли почти все следовать ему. Пользователям, державшим эфир через эти обновления, не нужно было ничего делать.
Что форк означает для ваших монет
После планового обновления: ничего, если ваш кошелек или биржа поддерживает новые правила. Большинство пользователей этого даже не замечает.
После спорного раскола: любой, кто владел монетами до раскола, обычно имеет такой же баланс в обеих цепях, поскольку они разделяют историю вплоть до этого блока. Например, держатели BTC на момент раскола Bitcoin Cash получили равное количество новой монеты.
Это влечет практические риски:
- Риск повтора (replay). При некоторых расколах транзакция в одной цепи может быть скопирована в другую, если новая цепь не добавит защиту. Многие биржи приостанавливают депозиты и выводы вокруг раскола по этой причине.
- Поддержка платформами различается. Возможность получить доступ к новой монете зависит от того, решит ли ваш кошелек или биржа ее поддерживать.
- Рост мошенничества. Поддельные сайты с предложением «получить ваши форкнутые монеты» запрашивают сид-фразы. Ни один легитимный процесс не требует их ввода.
Подготовка к спорному расколу
Если сеть, в которой у вас есть монеты, движется к спорному жесткому форку, несколько мер предосторожности снизят риск:
- Храните собственные ключи до раскола, если хотите иметь гарантированный доступ к обеим получившимся монетам; на бирже доступ зависит от политики платформы.
- Не переводите монеты в момент самого раскола. Дождитесь, пока кошельки и биржи подтвердят, что защита от повтора введена.
- Используйте известные кошельки и официальные инструкции, чтобы разделить монеты в двух цепях, и никогда не вводите сид-фразу на сайте, который предлагает «получить» форкнутые монеты.
- Ожидайте волатильности и приостановки сервисов. Биржи часто на некоторое время останавливают депозиты и выводы по затронутой монете.
Кто решает, произойдет ли форк
Разработчики предлагают изменения, но не могут заставить никого запускать новое ПО. Майнеры или валидаторы создают блоки, но узлы решают, какие блоки считать действительными. Биржи и пользователи решают, какую цепь считать настоящей. Форк успешно состоялся, когда на его стороне согласна достаточная часть этих групп. Наше руководство по узлам блокчейна объясняет, почему последняя проверка имеет такое большое значение.
Эта статья носит образовательный характер и не является финансовой, инвестиционной, юридической или налоговой консультацией. Цифровые активы подвержены высокой волатильности, и вы можете потерять вложенные средства.
О том, как форки вписываются в более широкую систему сетей, приложений и токенов, см. что такое Web3.
Источники
- BIP 141: Segregated Witness (внедрен как мягкий форк) — Bitcoin Improvement Proposals, GitHub
- Исходный код Bitcoin Core, chainparams.cpp (высота активации SegWit 481 824) — Bitcoin Core, GitHub
- Bad News Bears: Cryptocurrency Stories of 2017 (раскол Bitcoin Cash, 1 августа 2017) — Bitcoin Magazine
- The Merge — ethereum.org
- Хронология Ethereum (обновление London 5 августа 2021) — Blockchain.com Explorer
- BIP 148: Обязательная активация внедрения SegWit (пользовательски активируемый софт-форк, 1 августа 2017 года) — Bitcoin Improvement Proposals, GitHub