Введение
Когда вас просят обновить приложение вашего банка на смартфоне, вы, вероятно, не задумываетесь, прежде чем сделать это. Ваш телефон может даже автоматически получать обновления без вашего ведома. В конце концов, это нормальный процесс: если вы не установите последнюю версию программного обеспечения, вы не сможете пользоваться его услугами.
В мире криптовалют с открытым исходным кодом дела обстоят иначе. Хотя вам не нужно читать каждую строку кода Биткойна, чтобы использовать его, все равно важно уметь это делать. В этом новом мире нет иерархий, которые могли бы просто навязывать обновления и менять вещи по своему усмотрению. Вот почему внедрение новых функций в сетях блокчейна может стать настоящей проблемой.
В этой статье мы рассмотрим, как можно обновить криптовалютные сети, несмотря на отсутствие центрального органа. Эти сети используют два разных механизма: хард-форки и софт-форки.
Кто принимает решения в сети блокчейн?
Чтобы понять, как работают форки, необходимо сначала полностью понять участников, участвующих в процессе принятия решений (управления) сетью.
В случае с Bitcoin можно выделить три подгруппы участников: разработчики, майнеры и пользователи, управляющие полным узлом. Эти стороны вносят свой вклад в сеть. Легкие узлы (например, телефонные кошельки, компьютеры) широко используются, но фактически не являются «участниками» сети.
Разработчики
Разработчики несут ответственность за создание кода, а также за его обновление. Любой желающий может внести свой вклад в развитие криптовалюты. Код находится в открытом доступе, что позволяет любому пользователю отправлять изменения на рассмотрение другим разработчикам.
Несовершеннолетние
Майнеры несут ответственность за безопасность сети. Они выполняют код криптовалюты и распределяют свои ресурсы для добавления новых блоков в блокчейн. В сети Bitcoin мы говорим о доказательстве выполнения работы. В качестве вознаграждения за свои усилия они получают награды за блоки.
Пользователи полного узла
Полные узлы являются основой сети криптовалюты. Они проверяют, отправляют и получают блоки и транзакции, а также хранят копию блокчейна.
В этих категориях часто встречаются совпадения. Например, человек может быть разработчиком и пользователем полного узла или майнером и пользователем полного узла. Вы можете соответствовать всем трем критериям или не соответствовать ни одному из них. На самом деле многие из тех, кого мы считаем пользователями криптовалюты, не играют ни одной из этих ролей. Вместо этого они используют централизованные сервисы или облегченные узлы.
Рассмотрев приведенные выше описания, вы могли бы дать разработчикам и майнерам обоснованные предложения по принятию решений относительно сети. Разработчики создают код: без них не было бы программного обеспечения, которое можно было бы запустить, и никто не мог бы исправлять ошибки или добавлять новые функции. Майнеры обеспечивают безопасность сети: без здоровой конкуренции в майнинге цепочка может быть взломана или отключена.
Если бы эти две категории попытались заставить остальную часть сети следовать их воле, это закончилось бы очень плохо. Для многих настоящая сила кроется в полных узлах. Во многом это связано с тем, что сеть является сетью добровольной (с согласия), то есть пользователи могут выбирать, какое программное обеспечение использовать.
Разработчики не придут к вам домой с пистолетом и не заставят вас скачать Bitcoin Core. Если майнеры займут позицию «то или иное», чтобы навязать пользователям нежелательные изменения, пользователи выберут свой собственный метод.
Эти субъекты не всемогущие лорды: они поставщики услуг. Если люди решат не пользоваться сетью, валюта потеряет ценность. Потеря стоимости напрямую отразится на майнерах (их вознаграждения будут стоить меньше, если их выразить в долларах). Что касается разработчиков, то пользователи могут просто игнорировать их.
Как видите, это не проприетарное программное обеспечение. Вы можете вносить любые изменения, другие могут запускать эту новую версию программного обеспечения, и в конечном итоге все могут прийти к согласию. Внеся эти изменения, вы просто разветвили программное обеспечение и создали новую сеть.
Что такое вилка?
Форк программного обеспечения происходит, когда программное обеспечение копируется и модифицируется. Первоначальный проект продолжает существовать, но теперь он отделен от нового, который пошел в другом направлении. Предположим, у членов команды, отвечающей за контент сайта вашей любимой криптовалюты, возникли серьезные разногласия по поводу дальнейших действий. Часть команды может дублировать сайт, используя другое доменное имя. Затем они будут публиковать разный контент.
Проекты базируются на общем фундаменте и имеют общую историю. Однако, подобно тому, как одна дорога разделяется на две, между двумя участками теперь существует расхождение.
Обратите внимание, что подобное часто случается в проектах с открытым исходным кодом и происходило задолго до появления сетей Bitcoin или Ethereum. Однако различие между хард-форком и софт-форком свойственно почти исключительно вселенной блокчейна. Давайте посмотрим вместе.
➟ Хотите начать работу с криптовалютами? Покупайте биткоины на Binance!
Сравнение хард-форков и софт-форков
Несмотря на схожие названия и одинаковые цели, хард-форки и софт-форки существенно различаются. Давайте рассмотрим эти различия.
Что такое хард-форк?
Хард-форки — это обновления программного обеспечения, не имеющие обратной совместимости. Обычно это происходит, когда узлы добавляют новые правила, которые конфликтуют с правилами старых узлов. Новые узлы могут общаться только с другими пользователями, использующими эту версию. Это приводит к разделению блокчейна и, как следствие, созданию двух отдельных сетей: одна, использующая старые правила, другая — новые.

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

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

Даже спустя два года после активации SegWit не все узлы были обновлены. В этом есть свои преимущества, но в этом нет особой необходимости, поскольку это не изменение, влияющее на работу сети.
Сравнение хард-форков и софт-форков: что лучше?
По сути, эти типы вилок служат разным целям. Спорные хард-форки могут расколоть сообщество. Напротив, запланированные хард-форки предоставляют каждому свободу изменять программное обеспечение с согласия всех участников.
Мягкие вилки — более мягкий вариант. Как правило, вы более ограничены в своих возможностях, поскольку ваши новые изменения не могут противоречить старым правилам. Тем не менее, если ваше обновление может быть спроектировано так, чтобы оставаться совместимым, вам не придется беспокоиться о фрагментации сети.
В заключение
Хард-форки и софт-форки имеют решающее значение для долгосрочного успеха сетей блокчейнов. Они позволяют нам вносить изменения и обновления в децентрализованные системы, несмотря на отсутствие центрального органа.
Форки позволяют блокчейнам и криптовалютам интегрировать новые функции по мере их развития. Без этих механизмов нам потребовалась бы централизованная система с контролем сверху вниз. В противном случае нам пришлось бы придерживаться одних и тех же правил на протяжении всего срока действия протокола.



