Софтфорк (soft fork) и хардфорк (hard fork) — это англицизмы образованные от трех английских слов: Soft (мягкий), Hard (жесткий) и Fork (вилка).
Криптовалюты, такие как Bitcoin (BTC) и Ethereum (ETH), работают на основе децентрализованного программного обеспечения с открытым исходным кодом, называемого блокчейном. Форк — это изменение базового протокола блокчейна. Форк блокчейна — это важное обновление сети, которое может представлять собой как радикальное изменение, так и незначительное, и может быть инициировано разработчиками или участниками сообщества.
Форк требует, чтобы операторы нод (узлов) — машины, подключенные к блокчейну и помогающие подтверждать транзакции на нем, обновили протокол и программное обеспечение до последней версии. Каждый узел имеет копию блокчейна и следит за тем, чтобы новые транзакции не противоречили его истории.
- Хардфорк или жесткий форк — это радикальное обновление, которое может оставить предыдущие транзакции и блоки действительными, либо сделать недействительными и требует, чтобы все валидаторы сети перешли на новую версию ПО. Обновление не имеет обратной совместимости.
- Софтфорк или мягкий форк — это обновление программного обеспечения, которое является обратно совместимым и заставляет валидаторов в более старой версии цепи воспринимать новую версию как действительную.
Обратная совместимость — наличие в новой версии ПО элементов, присутствующих в старой версии, в результате чего узлы могут продолжать работать с новой версией без значительных обновлений. Полная обратная совместимость означает, что при замене старой версии ПО на новую функционирование всей системы в целом не нарушается
По сути, хардфорк чаще всего приводит к разветвлению блокчейна, которое образует 2 цепи несовместимые друг с другом. Те, у кого есть монеты в старом блокчейне, получают монеты и на новой, поскольку у обоих цепочек одна и та же история до разветвления. Хардфорки могут происходить по ряду причин.
Суть хардфорков
Чтобы понять, что такое хардфорк, необходимо сначала разобраться в технологии блокчейн. Блокчейн — это цепочка, состоящая из блоков данных, которые работают как цифровая бухгалтерская книга, в которой каждый новый блок действителен только после того, как предыдущий блок был подтвержден сетевыми валидаторами. Данные в блокчейне можно отследить вплоть до первой транзакции в сети. Именно поэтому мы до сих пор можем видеть первый блок в блокчейне Биткоина.
Хардфорк — это, по сути, постоянное отклонение от последней версии блокчейна, приводящее к его разделению, поскольку некоторые узлы больше не достигают консенсуса, и две разные версии сети работают отдельно. Это означает, что в блокчейне создается развилка, где один путь продолжает следовать своему текущему набору правил, а второй путь следует новому набору правил. Хардфорк не имеет обратной совместимости, поэтому старая версия больше не воспринимает новую как действительную.
Хардфорки часто считаются опасными из-за возникающего раскола цепи. Если происходят разногласия между майнерами, которые обеспечивают безопасность сети, и узлами, которые помогают подтверждать транзакции, сама сеть становится менее безопасной и более уязвимой для атак.
Распространенным способом злонамеренных действий против блокчейна является Атака 51% (51% Attack), когда группе майнеров удается завладеть 51% вычислительной мощности, обеспечивающей безопасность сети, и использовать ее для изменения истории блокчейна.
Некоторые сети, созданные в результате хард форков, подверглись многочисленным атакам 51%, когда плохие участники дважды расходовали одни и те же средства. В этих атаках недобросовестные участники использовали свои превосходящие вычислительные мощности в сети для реорганизации блоков, что позволяло им совершать двойные траты.
Еще одна уязвимость, возможная при использовании хардфорков, — это Атаки Повторного Воспроизведения (Repeat attack или Playback attack). Атаки повторного воспроизведения происходят, когда злоумышленник перехватывает транзакцию в одной из разветвленных сетей и повторяет её в другой сети. При хардфорках без защиты от атак повтора обе транзакции становятся действительными, то есть кто-то может перемещать средства других пользователей, не имея контроля над ними.
Почему происходят хардфорки
Если хардфорки могут резко снизить безопасность блокчейна, то почему они вообще происходят? Ответ прост: Хардфорки — это обновления, которые необходимы для улучшения сети по мере развития технологии блокчейн. За хардфорком может стоять несколько причин, и не все они негативные, к примеру:
- Добавление функциональности,
- Исправление рисков безопасности,
- Урегулирование разногласий в криптовалютном сообществе,
- Отмена (!!) транзакции в блокчейне.
Хардфорки, также, могут произойти случайно. Часто такие инциденты быстро разрешаются, и те, кто больше не был в консенсусе с основным блокчейном, возвращаются и присоединяются к нему после осознания произошедшего. Аналогичным образом, хардфорки, добавляющие функциональные возможности и модернизирующие сеть, обычно позволяют тем, кто вышел из консенсуса, вновь присоединиться к основной цепи.
Случайные хардфорки
Внимание! Это самый важный блок информации о блокчейне Биткоина
За свою историю блокчейн Биткоина пережил множество случайных хард-форков. Они встречаются чаще, чем принято думать, и часто решаются так быстро, что практически не привлекают внимания.
Большинство случайных хардфорков происходит, когда два майнера находят один и тот же блок практически одновременно. Поскольку консенсус в сети распределен, оба майнера изначально считают блок действительным и продолжают добычу на разных цепочках, пока они или другой майнер не добавляют последующий блок.
Этот последующий блок определяет, какая цепочка становится самой длинной, а значит, другая "разваливается" для поддержания консенсуса. Все майнеры переходят к самой длинной цепи, поскольку короткая цепь уже не может быть выгодной для добычи Биткоина, так как это будет уже другой блокчейн.
7 мая 2023 года, по сведениям ForkMonitor, в сети Bitcoin произошло разделение блокчейна на блоке #788686. Это очень редкое событие и в последний раз подобное фиксировалось в ноябре 2020 года.
Когда происходят такие развилки, майнер, нашедший блок, который в последствии будет развален, теряет coinbase-вознаграждение (награду за блок) и комиссию за транзакции в этом блоке. Однако, ни одна транзакция не будет отменена, поскольку оба одновременно найденных блока были идентичны и содержали одни и те же транзакции. Но не всегда :)
По этой причине, а вернее чтобы избежать ее, некоторые биржи и обменники требуют 2 подтверждения сети (блока) для транзакций Биткоина, а самые "древние" или с не очень умными технарями - вообще 5 или 6 подтверждений.
Другие случайные хардфорки были частью проблем с кодом, которые привели к ответвлению короткой цепи. В 2013 году, например, блок с большим количеством общих транзакционных входов, чем было ранее, был добыт и ретранслирован в сеть, несмотря на то, что некоторые узлы не обработали его. Это привело к разделению блокчейна. Проблема была решена после того, как транслировавшие блок ноды понизили версию своего программного обеспечения, чтобы достичь консенсуса и отклонить этот более крупный блок.
Разница между жесткими и мягкими форками
Хардфорки — не единственный способ обновления программного обеспечения протокола криптовалюты. Софтфорки считаются более безопасной альтернативой, обладающей обратной совместимостью, что означает, что ноды, которые не обновились до новых версий, по-прежнему будут воспринимать цепочку как действующую и не будут приводить к разветвлениям.
Софтфорк можно использовать для добавления новых возможностей и функций, которые не меняют правил, которым должен следовать блокчейн. Мягкие форки часто используются для реализации новых функций на программном уровне.
Чтобы лучше понять разницу между жесткими и мягкими форками, можно представить их как обновление базовой операционной системы на мобильном устройстве или компьютере. После обновления все приложения на устройстве будут по-прежнему работать с новой версией операционной системы. Жесткий форк, в данном примере, представляет собой полный перенос приложений на новую операционную систему.
Известные примеры хардфорков
В криптовалютном мире существует множество исторических примеров хардфорков, и не все они произошли с блокчейном Bitcoin.
Некоторые из самых популярных хард форков в истории и их влияние на индустрию:
SegWit2x и Bitcoin Cash
SegWit2x был предложением по улучшению, призванным масштабировать блокчейн Биткоина. Оно должно было внедрить Segregated Witness (SegWit) и увеличить в сети криптовалюты размер блока с 1 МБ до 2 МБ.
Решение о внедрении SegWit2x было принято в рамках спорного Нью-Йоркского соглашения, достигнутого 23 мая 2017 года. По соглашению, ряд владельцев криптобизнеса, участников сети и майнеров, представляющих более 85% хэшрейта сети, за закрытыми дверями решали будущее BTC:
SegWit будет реализован через софтфорк, а увеличение размера блока будет реализовано позже через хардфорк.
Предложение вызвало споры, поскольку в нем не участвовал ни один разработчик, стоящий за основной кодовой базой Bitcoin и Bitcoin Core
Сторонники мелких блоков утверждали, что более крупные блоки затруднят размещение полноценного узла, что потенциально приведет к централизации криптовалюты. Сторонники увеличения размера блоков утверждали, что растущие транзакционные сборы BTC повредят его росту и вытеснят некоторых пользователей из сети.
В сети Биткоина возможны мягкие форки, активируемые пользователями. В этом сценарии операторы кошельков, биржи и другие участники, работающие на полных узлах, могут перейти на новую версию блокчейна, которая будет иметь точку активации в будущем, заставляя майнеров в сети "встать в строй" и активировать новые правила. Если они этого не сделают, сеть может расколоться.
В то время пользователи Биткоина выступали за активируемый пользователями софтфорк в ответ на закрытую встречу, на которой диктовалось будущее Биткоина, и чтобы не допустить создания прецедента. Они призвали к реализации Bitcoin Improvement Proposal (BIP) 148 — внедрение SegWit в сеть Биткоина и утверждали, что SegWit2x — это спорный хардфорк, который делает сеть уязвимой для атаки повторного воспроизведения. Он был выпущен в марте 2017 года и должен был быть внедрен 1 августа 2017 года.
Опасаясь, что план SegWit2x не будет выполнен, и видя, что сообщество поддерживает SegWit, некоторые сторонники увеличения размера блока решили форкнуть блокчейн Биткоина 1 августа 2017 года. В результате был создан Bitcoin Cash (BCH). Его сторонники не рассматривали раскол как создание конкурирующей сети, а скорее как продолжение первоначального замысла Сатоши Накамото.
Блокчейн Bitcoin Cash был создан с размером блока 8 МБ, который впоследствии был увеличен до 32 МБ. По сей день сторонники Bitcoin Cash утверждают, что низкие комиссии за транзакции помогут ему масштабироваться и обслуживать небанковские организации, считая, что BTC останется позади из-за более высоких комиссий за транзакции.
После появления Bitcoin Cash возможность хард-форка оказалась в центре внимания, и вскоре после этого было создано множество других форков Bitcoin. К ним относятся Bitcoin Gold (BTG), Bitcoin Diamond (BTCD) и другие.
Взлом The DAO
Другой крупный исторический хардфорк был связан с децентрализованной автономной организацией (DAO), которая была запущена в 2016 году в сети Ethereum. В Ethereum работает набор смарт-контрактов, которые по сути представляют собой куски кода, автоматически выполняющиеся при соблюдении ряда критериев. Эти контракты делают деньги программируемыми и лежат в основе децентрализованных финансовых приложений (DApps).
В то время The DAO собрала $150 млн в ETH в рамках одного из самых ранних краудфандинговых мероприятий в криптовалюте, еще до того, как в 2017 году начался бум первичные предложения монет (ICO). По сути, это была ранняя итерация децентрализованной модели управления, которую используют протоколы DeFi, где держатели токенов голосуют за будущее протокола.
После запуска The DAO была взломана с целью вывода ETH на сумму $60 млн от 11000 инвесторов. В то время Ethereum торговался ниже $10, поэтому в The DAO было вложено около 14% всего циркулирующего Эфира, и взлом нанес серьезный удар по доверию к сети.
В сообществе Ethereum начались дебаты, поскольку все пытались понять, как реагировать на атаку. Первоначально, основатель Ethereum Виталик Бутерин предложил софтфорк, который внесет адрес злоумышленника в черный список и не позволит ему перевести средства.
Злоумышленник или кто-то, выдающий себя за него, ответил сообществу, заявив, что средства были получены "законным" путем и в соответствии с правилами смарт-контракта и заявил, что готов принять судебные меры против любого, кто попытается завладеть средствами. Напряженность возросла, когда злоумышленник заявил, что они будут препятствовать попыткам мягкого форка, подкупая майнеров ETH средствами из The DAO.
Снова начались дебаты, пока не было предложено провести жесткий форк. В итоге хардфорк был реализован, и откатил историю сети Ethereum к периоду до атаки на The DAO, а украденные средства в смарт-контракт, откуда инвесторы могли их вывести.
Этот шаг был крайне противоречивым и, по мнению некоторых, подорвал самую первую и основную идею криптовалюты: "Код — это закон", повлиял на устойчивость блокчейна к цензуре и его неизменность ради спасения денег инвесторов. Те, кто видел ситуацию именно так, отвергли хардфорк и стали поддерживать прежнюю версию сети, известную сейчас как Ethereum Classic (ETC). Фактически, тот Эфир, который был задуман Бутериным — это Ethereum Classic (ETC) — настоящий Эфир. А то, что сейчас — это полностью централизованное и подконтрольное Бутерину нечто.
Войны хэшрейтов: ABC против SV
Bitcoin Cash был создан в результате хардфорка блокчейна Биткоина в августе 2017 года и впоследствии сам разделился на две сети, из-за междоусобиц разработчиков. С одной стороны была команда разработчиков Bitcoin Cash ABC (BCHA), пытавшаяся улучшить технологию, лежащую в основе сети. С другой стороны была команда Bitcoin Cash SV (BSV), поддерживаемая лжесатоши Крейгом Райтом, которая пыталась увеличить размер блока с 32 МБ до 128 МБ.
В блоке #556767 блокчейн Bitcoin Cash разделился на две части, и началась битва за тикерный символ BCH. Майнеры с обеих сторон задействовали все возможные ресурсы, чтобы получить преимущество в хэшрейте над другой стороной. Многие призывали к Атаке 51% другой сети для реорганизации ее блоков, чтобы ее сторонники были вынуждены перейти на их сторону.
Криптовалютные биржи и другие предприятия заявили, что присвоят тикер BCH тому блокчейну, который выйдет на первое место. Некоторые майнинговые пулы перенаправили все свои ресурсы на хэш-войны, при этом Bitcoin Cash ABC в конечном итоге получил большинство хэшрейта и отбил все попытки Атаки 51%. Позже ветка ABC заявила о своем праве на тикер BCH на биржах и других сервисах, а другая сеть выбрала BSV в качестве собственного тикера.
Обе сети — жизнеспособны, но недееспособны