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