Введение

Когда вам предложат обновить приложение цифрового банкинга на смартфоне, вы, вероятно, даже не подумаете дважды. Возможно, ваш телефон автоматически обновится, даже не заметив этого. В конце концов, это необходимый процесс: если вы не установите последнюю версию программного обеспечения, вы рискуете получить отказ в доступе к его сервисам.

В криптовалютах с открытым исходным кодом дела обстоят совсем иначе. Вам не нужно читать каждую строку кода, лежащую в основе Биткойна, чтобы использовать его, но важно иметь возможность сделать это. Видите ли, здесь нет никакой иерархии и нет банка, который мог бы просто выпускать обновления и менять вещи по своему усмотрению. В результате реализация новых функций в сетях блокчейна может стать проблемой.

В этой статье мы рассмотрим, как можно модернизировать криптовалютные сети, несмотря на отсутствие центрального органа. Для этого они используют два разных механизма: хардфорк и софтфорк.


Кто принимает решения в сети блокчейн?

Чтобы понять, как работают форки, важно сначала понять участников, участвующих в процессе принятия решений (или управления) сетью.

В Биткойне вы можете провести широкое различие между тремя подгруппами участников — разработчиками, майнерами и пользователями полных узлов. Это стороны, которые действительно вносят свой вклад в сеть. Легкие узлы (то есть кошельки на ваших телефонах, ноутбуках и т. д.) широко используются, но на самом деле они не являются «участниками» сети.


Разработчики

Разработчики несут ответственность за создание и обновление кода. Что касается вашей типичной монеты, любой может внести свой вклад в этот процесс. Код доступен публично, поэтому они могут отправлять изменения на рассмотрение другим разработчикам.


Шахтеры

Майнеры — это те, кто защищает сеть. Они запускают код криптовалюты и выделяют ресурсы для добавления новых блоков в блокчейн. Например, в сети Биткойн это делается с помощью Proof of Work. За свои усилия они получают вознаграждение в виде вознаграждения за блок.


Пользователи полных узлов

Полные узлы являются основой криптовалютной сети. Они проверяют, отправляют и получают блоки и транзакции, а также поддерживают копию блокчейна.


Вы часто встретите совпадения в этих категориях. Например, вы можете быть разработчиком и пользователем полного узла или майнером и пользователем полного узла. Вы можете быть всеми тремя или ни одним. Фактически, многие из тех, кого мы считаем пользователями криптовалюты, не берут на себя ни одну из этих ролей. Вместо этого они предпочитают использовать легкие узлы или централизованные сервисы.

Глядя на приведенные выше описания, вы можете привести веские аргументы в пользу разработчиков и майнеров, принимающих решения для сети. Разработчики создают код — без них у вас не было бы программного обеспечения, которое можно было бы запускать, и некому было бы исправлять ошибки или добавлять новые функции. Майнеры защищают сеть – без здоровой конкуренции в майнинге цепочка может быть взломана или полностью остановлена.

Однако если эти две категории попытаются заставить остальную часть сети следовать своей воле, это закончится не слишком хорошо. Для многих реальная власть сосредоточена в полных узлах. Во многом это зависит от согласия сети, а это означает, что пользователи могут выбирать, какое программное обеспечение они используют.

Разработчики не врываются в ваш дом и не заставляют вас загрузить двоичные файлы Bitcoin Core под дулом пистолета. Если майнеры примут позицию «мой путь или шоссе», чтобы навязать пользователям нежелательные изменения, пользователи просто выберут шоссе.

Эти партии не являются всемогущими повелителями – они являются поставщиками услуг. Если люди решат не использовать сеть, монета потеряет ценность. Потеря стоимости напрямую влияет на майнеров (их вознаграждение стоит меньше, если оно выражено в долларах). Что касается разработчиков, то пользователи могут их просто игнорировать.

Видите ли, это не значит, что программное обеспечение является проприетарным. Вы можете вносить любые изменения, которые захотите, и, если ваше модифицированное программное обеспечение запустят другие, вы все сможете общаться. В этом случае вы создаете форк программного обеспечения и в процессе создаете новую сеть.


Что такое вилка?

Форк программного обеспечения возникает в тот момент, когда программное обеспечение копируется и модифицируется. Первоначальный проект продолжает жить, но теперь он отделен от нового, который имеет другое направление. Предположим, что у команды вашего любимого веб-сайта с контентом о криптовалютах возникли серьезные разногласия по поводу дальнейших действий. Одна часть команды может скопировать сайт в другой домен. Но в дальнейшем они будут публиковать разные типы контента, отличные от оригинала.

Проекты построены на общей основе и имеют общую историю. Точно так же, как одна дорога, которая позже разделяется на две, теперь их пути постоянно расходятся.

Обратите внимание, что подобные вещи часто случаются в проектах с открытым исходным кодом и происходили задолго до появления Биткойна или Эфириума. Однако различие между хард-форками и софт-форками почти исключительно в пространстве блокчейна. Давайте обсудим это немного подробнее.


➠ Хотите начать работу с криптовалютой? Купите биткойны на Binance!


Хард-форки и софт-форки

Несмотря на схожие названия и в конечном итоге служащие одной и той же цели, хард-форки и софт-форки существенно различаются. Давайте рассмотрим каждый.


Что такое хард-форк?

Хард-форки — это обратно несовместимые обновления программного обеспечения. Обычно это происходит, когда узлы добавляют новые правила, которые конфликтуют с правилами старых узлов. Новые узлы могут взаимодействовать только с другими узлами, использующими новую версию. В результате блокчейн разделяется, образуя две отдельные сети: одну со старыми правилами и одну с новыми правилами.

Nodes turn blue when they update. The older yellow nodes reject them, while blue ones connect to each other.

Узлы становятся синими при обновлении. Старшие желтые узлы отвергают их, а синие соединяются друг с другом.


Итак, теперь две сети работают параллельно. Они оба продолжат распространять блоки и транзакции, но больше не работают над одним и тем же блокчейном. Все узлы имели одинаковую цепочку блоков до момента форка (и эта история сохраняется), но после этого у них будут разные блоки и транзакции.

blockchain forking at block 600,000.


Поскольку существует общая история, вы получите монеты в обеих сетях, если хранили их до форка. Предположим, что у вас было 5 BTC, когда на блоке 600 000 произошел форк. Вы могли бы потратить эти 5 BTC в старой цепочке в блоке 600 001, но они не были потрачены в блоке 600 001 новой цепочки. Предполагая, что криптография не изменилась, ваши личные ключи по-прежнему содержат пять монет в разветвленной сети.

Примером хард-форка стал форк 2017 года, в ходе которого Биткойн был разделен на две отдельные цепочки — первоначальную, Bitcoin (BTC), и новую, Bitcoin Cash (BCH). Форк произошел после долгих споров о наилучшем подходе к масштабированию. Сторонники Bitcoin Cash хотели увеличить размер блока, в то время как сторонники Bitcoin выступали против этого изменения.

Увеличение размера блока требует изменения правил. Это было до софт-форка SegWit (подробнее об этом чуть позже), поэтому узлы принимали только блоки размером менее 1 МБ. Если вы создали блок размером 2 МБ, который в остальном действителен, другие узлы все равно отклонят его.

Только узлы, изменившие свое программное обеспечение, чтобы разрешить блоки размером более 1 МБ, могли принимать эти блоки. Конечно, это сделало бы их несовместимыми с предыдущей версией, поэтому взаимодействовать могли бы только узлы с одинаковыми модификациями протокола.


Что такое софт-форк?

Софтфорк — это обратно совместимое обновление, означающее, что обновленные узлы по-прежнему могут взаимодействовать с необновленными. Обычно в софт-форке вы видите добавление нового правила, которое не противоречит старым правилам.

Например, уменьшение размера блока может быть реализовано с помощью софт-форка. Давайте еще раз обратимся к Биткойну, чтобы проиллюстрировать этот момент: хотя существует предел размера блока, нет предела тому, насколько маленьким он может быть. Если вы хотите принимать только блоки меньше определенного размера, вам просто нужно отклонить блоки большего размера.

Однако это не приведет к автоматическому отключению вас от сети. Вы по-прежнему общаетесь с узлами, которые не реализуют эти правила, но отфильтровываете часть информации, которую они вам передают.

Хорошим реальным примером софтфорка стал вышеупомянутый форк Segregated Witness (SegWit), который произошел вскоре после разделения Bitcoin/Bitcoin Cash. SegWit — это обновление, которое изменило формат блоков и транзакций, но оно было сделано умно. Старые узлы все еще могли проверять блоки и транзакции (форматирование не нарушало правил), но они просто их не понимали. Некоторые поля доступны для чтения только тогда, когда узлы переходят на более новое программное обеспечение, которое позволяет им анализировать дополнительные данные.

Even two years after SegWit activation, not all nodes have upgraded. There are advantages to doing so, but there’s no real urgency since there’s no network-breaking change.


Даже через два года после активации SegWit не все узлы обновились. В этом есть свои преимущества, но в этом нет никакой срочности, поскольку нет никаких кардинальных изменений в сети.


Хард-форки или софт-форки – что лучше?

По сути, оба вышеупомянутых типа вилок служат разным целям. Спорные хард-форки могут разделить сообщество, но запланированные дают свободу модифицировать программное обеспечение при согласии всех.

Софт-форки — более мягкий вариант. Вообще говоря, вы более ограничены в своих действиях, поскольку ваши новые изменения не могут противоречить старым правилам. Тем не менее, если ваше обновление можно создать таким образом, чтобы оно оставалось совместимым, вам не нужно беспокоиться о фрагментации сети.


Заключительные мысли

Хардфорки и софтфорки имеют решающее значение для долгосрочного успеха сетей блокчейнов. Они позволяют нам вносить изменения и обновления в децентрализованные системы, несмотря на отсутствие центрального органа.

Форки позволяют блокчейнам и криптовалютам интегрировать новые функции по мере их разработки. Без этих механизмов нам потребовалась бы централизованная система с контролем сверху вниз. В противном случае нам пришлось бы придерживаться одних и тех же правил на протяжении всего срока действия протокола.