Введение
Если на смартфоне всплывает окно с обновлением приложения, мы активируем его без раздумий. Телефоны могут обновляться даже без уведомления пользователя. В конце концов, обновления необходимы — без установки последней версии программного обеспечения существует риск сбоев в работе сервисов на устройстве.
В криптовалютах с открытым исходным кодом все обстоит по-другому. Для работы с Биткоином не нужно подробно изучать строки кода, однако такая возможность все равно должна быть. Так как здесь нет единого органа управления, который осуществлял бы обновления и вносил изменения по своему усмотрению, добавление новых функций в блокчейн может быть довольно затруднительным.
В этой статье мы рассмотрим, каким образом модернизируются криптовалютные сети без участия центрального органа управления. Для этого и используются хардфорки и софтфорки.
Кто принимает решения в сети блокчейна
Чтобы разобраться в работе форков, необходимо понять, кто принимает решения (или осуществляет управление) в сети.
В сети Биткоина можно выделить три группы участников — разработчики, майнеры и пользователи полных нод, которые вносят основной вклад в сеть. Упрощенные ноды (т. е. кошельки на телефонах, ноутбуках и т. д.) широко используются, но не являются «участниками» сети.
Разработчики
Разработчики создают и обновляют код. Любой пользователь с монетами может вносить в него изменения, так как код общедоступен и дает возможность отправлять любые предложения разработчикам.
Майнеры
Майнеры осуществляют защиту сети. Они запускают код криптовалюты и предоставляют ресурсы для добавления блоков в блокчейн. Например, в сети Биткоина для этих целей используется алгоритм Proof of Work. За свою работу майнеры получают вознаграждения за блок.
Пользователи полных нод
Полные ноды — это основа криптовалютной сети. Они проверяют, отправляют и принимают блоки и транзакции, а также хранят у себя копию блокчейна.
Перечисленные категории участников зачастую могут совпадать. Например, разработчик может быть одновременно и полной нодой или же полная нода может быть в то же время майнером. Любой человек может выступать в роли всех троих или ни одного из них. На самом деле, под пользователями криптовалюты обычно понимаются те, кто не выполняет ни одной из этих ролей. Вместо этого они используют упрощенные ноды или централизованные сервисы.
С учетом вышеописанного можно согласиться, что решения в сети должны принимать разработчики и майнеры. Разработчики создают код: без них не было бы программного обеспечения и некому было бы исправлять ошибки или добавлять новые функции. Майнеры осуществляют защиту сети: без здоровой конкуренции в майнинге контроль над чейном может быть захвачен злоумышленниками.
Однако, если бы майнеры и разработчики попытались навязать другим участникам сети свои желания, ничего бы не вышло. Многие считают, что реальный контроль принадлежит полным нодам. Однако все дело заключается в функции бесшовного обновления сети — пользователи могут выбирать, какое программное обеспечение они хотят использовать.
Разработчики не заставляют пользователей загружать бинарные файлы Bitcoin Core под дулом пистолета, также и майнеры не в состоянии ставить ультиматум и вносить свои изменения.
Эти участники не являются всемогущими управленцами — они лишь поддерживают работу сервисов. Если пользователи потеряют интерес к сети, то и ценность монет упадет, что напрямую повлияет на доход майнеров (их вознаграждение в долларах уменьшится). Что касается разработчиков, то пользователи могут просто игнорировать их.
Дело в том, что программное обеспечение не является ничьей собственностью. Пользователи могут вносить любые изменения и взаимодействовать с теми, кто использует измененное программное обеспечение. Это осуществляется посредством форка программного обеспечения и создания новой сети.
Что такое форк
Форк — это создание копии программного обеспечения и его модификация. При этом первоначальный проект продолжает функционировать, но форк развивается отдельно в своем направлении. Предположим, что внутри команды некого сайта с криптовалютой возникли серьезные разногласия по поводу дальнейшего развития. Тогда одна часть команды может воссоздать сайт в другом домене, где они будут размещать другой контент.
Оба этих проекта построены на одной основе и имеют общую историю подобно тому, как одна дорога разделяется на два разных направления.
Обратите внимание, что форки могут осуществляться только в проектах с открытым исходным кодом, и подобные случаи происходили еще задолго до появления Биткоина или Ethereum. Однако хардфорки и софтфорки могут производиться только в сетях блокчейна . Давайте рассмотрим их подробнее.
Хардфорки и софтфорки
Несмотря на похожие названия и задачи, хардфорки и софтфорки существенно различаются. Рассмотрим каждый из них подробнее.
Хардфорки и софтфорки
Хардфорки — это обновление программного обеспечения, несовместимое с предыдущими версиями. Обычно это происходит, когда ноды добавляют изменения, противоречащие существующим правилам старых нод. Новые ноды могут взаимодействовать только с нодами, использующими новую версию. В результате блокчейн разделяется на две отдельные сети: одну со старыми правилами и другую — с новыми.
После обновления ноды становятся синими. Старые желтые ноды отвергают их, а синие соединяются друг с другом.
Итак, теперь две сети работают параллельно. Они обе продолжат работать с блоками и транзакциями, но не в одном блокчейне. Все ноды работали в одном блокчейне до создания форка (у этого форка будет такая же история, как и у оригинального блокчейна), но в будущем их блоки и транзакции будут отличаться.
Поскольку сети имеют общую историю, средства пользователей дублируются в новой сети, если у них были монеты до форка. Предположим, во время форка у вас было 5 BTC на блоке 600 000. Даже если вы потратите эти 5 BTC в старом чейне в блоке 600 001, они останутся в блоке 600 001 нового блокчейна. Если в форке будет использоваться прежняя валюта, ваши приватные ключи также будут содержать средства из оригинального форка.
В качестве примера хардфорка можно привести форк 2017 года, в результате которого Биткоин был разделен на два чейна — оригинальный Биткоин (BTC) и новый Bitcoin Cash (BCH). Форк появился в результате долгих споров о наилучшем подходе к масштабированию. Сторонники Bitcoin Cash хотели увеличить размер блока, а сторонники Биткоина выступили против этого изменения.
Увеличить размер блока можно только с изменением правил. Это происходило до софтфорка SegWit (подробнее об этом далее), поэтому ноды принимали только блоки размером менее 1 Мб. Даже блок на 2 Мб, соответствующий всем прочим требованиям, все равно был бы отклонен.
В форке только ноды с новым программным обеспечением смогли одобрять блоки крупнее 1 Мб. Конечно, это означало полную несовместимость с оригинальной версией, так что взаимодействовать могли только ноды с одинаковыми модификациями.
Что такое софтфорк
Софтфорк — это обновление с обратной совместимостью, то есть обновленные ноды могут взаимодействовать со старыми нодами. Обычно софтфорк происходит при добавлении новых правил, которые не противоречат старым.
Например, с помощью софтфорка можно уменьшить размера блока. Проиллюстрируем это на примере Биткоина: хотя существует максимально допустимое значение размера блока, минимального размера нет. То есть для одобрения блоков меньше определенного размера нужно просто отклонять более крупные блоки.
Это не приведет к автоматическому отключению от сети. Ноды софтфорка по-прежнему смогут взаимодействовать с нодами из оригинального блокчейна — они просто будут фильтровать получаемую информацию.
Хороший пример софтфорка — это вышеупомянутый форк Segregated Witness (SegWit), который произошел вскоре после разделения Bitcoin/Bitcoin Cash. Обновление SegWit было тщательно продумано и изменило формат блоков и транзакций. Старые ноды все еще могли проверять блоки и транзакции (изменение формата не противоречило правилам), но просто не понимали их. Для прочтения определенных полей и анализа дополнительных данных необходимо переключение на новое программное обеспечение.
Даже через два года после активации SegWit не все ноды были обновлены. Обновление имеет свои преимущества, но никакой срочности в этом нет, посколько изменения не оказывают деструктивного влияния на сеть.
Хардфорки и софтфорки — что лучше?
По сути, каждый вид форков служит своим целям. Рожденные в результате разногласий хардфорки могут разделить сообщество, но запланированные форки позволяют свободно модифицировать программное обеспечение по обоюдному согласию.
Софтфорк — это более мягкий вариант. Он подразумевает изменения с определенными ограничениями, которые не противоречат старым правилам. В любом случае, если обновление может оставаться совместимым, то беспокоиться о фрагментации сети не стоит.
Резюме
Хардфорки и софтфорки имеют решающее значение для успеха сетей блокчейна в долгосрочной перспективе. Они позволяют вносить изменения и обновления в децентрализованные системы, несмотря на отсутствие единого органа управления.
Форки — это возможность для блокчейнов и криптовалют интегрировать новые функции по мере их разработки. Благодаря этим механизмам исчезает необходимость в централизованной системе с вертикальным управлением. Без них развитие блокчейнов тормозилось бы одними и теми же правилами.