Немного о возможности форка в системе Биткоин (часть I)
Главная  |  Новости  |  Немного о возможности форка в системе Биткоин (часть I)

Немного о возможности форка в системе Биткоин (часть I)

В криптовалютном сообществе наблюдается некоторая растерянность, связанная с непониманием большинством пользователей истинной природы изменений, которые планируется внести в протокол Биткоин. Попытаемся объяснить все непонятные моменты простыми и доступными словами.

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

Под нарушением консенсуса понимается разъединение узлов сети. При этом не имеет значения, как это произошло — намеренно или из-за атаки. Неизменность системы предполагает, что сеть должна оставаться устойчивой, несмотря на различные нарушения. До настоящего времени никакие изменения кода не могли повлиять на условия консенсуса.

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

Если планируется корректива, способная затронуть совместимость узлов, то необходимо дополнительно провести процедуру под названием BIP, которая переводится как предложение по улучшению Bitcoin. Существуют разные виды BIP, в том числе и о внесении корректив в протокол Биткоин.

Для классификации процедур и определения уровня их воздействия на совместимость системы, был разработан BIP 123. Его применение требует от любой процедуры, воздействующей на совместимость, указать уровень, который будет подвергаться воздействию: приложения, сервисы, API/RPC и консенсус. В любые уровни, помимо консенсуса, можно без опасений внедрять новый функционал или удалять ставшие ненужными опции. Для этого применяется специальная техника, которая не влечет за собой риска разделения сети.

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

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

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

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

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

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

Добавлено: 03.07.2017