Новая Эра Неизменности Блокчейна – к Новому Пониманию
Неизменяемость является неотъемлемой характеристикой блокчейнов. Каждый блокчейн обещает неизменяемость. Некоторые, как Биткойн, где Сатоши Накамото упоминает«транзакции, которые вычислительно практически невозможно отменить», обещают это в неявной форме. Другие — открыто, как в случае Steem или наиболее известного Эфириума.Последние события, а именно: проведение нескольких хард-форков Эфириума, создали множество дискуссий, и некоторые из них инициированы главными участниками сообщества, дав понять, что нет определенной ясности и консенсуса в том, что есть неизменность/неизменяемость.Эфириум Классик, который был создан на волне хард-форка Эфириума из-за инцидента с ДАО, заложил неизменность в основу своей философии. Отсутствие точной формулировки привело к тому, что такие люди, как профессор Принстонского университета Эмин Гюн Сирер, критикуют Эфириум Классик за неоднократное нарушение неизменности (по их мнению), которой хвалится сеть.Здесь мы предлагаем более точное определение неизменности. Это является важным шагом в развитии блокчейнов, так как невозможно ожидать, что блокчейн будет неизменным без точного определения этого термина.В качестве примера мы перефразируем принципы неизменности Эфириума Классик используя нашу собственную терминологию.Мы разделяем неизменность на два типа.1. Неизменность истории (IoH)гарантирует завершенность транзакций путем требования неизменности прошлого консенсуса, т. е. того, что консенсус на самой длинной цепи в прошлом не изменится.2. Неизменность процесса (IoP)защищает от незаконных транзакций или изменений в языке скриптов, требуя неизменности определений валидных блоков и цепей.Поскольку строгое соблюдение IoP может привести к остановке развития блокчейна, в дальнейшем мы разделим его возможные нарушения на четыре типа; некоторые из них могут рассматриваться как положительные нарушения IoP (например, исправление ошибок или добавление усовершенствований).Слово «неизменность» может ввести в заблуждение, так как на практике любые изменения могут быть внесены в блокчейн, если консенсус достигнут наибольшим количеством участников.Следовательно, то, что мы обозначаем в данном тексте не является инструментом для повышения безопасности блокчейнов, а скорее концепцией, чтобы внести ясность для разработчиков блокчейнов. Мы надеемся, что будущие официальные документы будут четко указывать, для какого типа неизменности они предназначены и какой тип неизменности, если таковой имеется, будет нарушен с каждым форком.Но сначала немного истории. Давайте разберемся с изначальными причинами спора вокруг концепции неизменности.
Откуда берется миф о Неизменности Блокчейна
В течение первой волны увлечения блокчейном люди, которых одарили преимуществами данной технологии, ничего не знали о неизменности.Тот факт, что транзакция не может быть отменена централизованной системой, превратился в «промежуток времени, когда транзакция не может быть отменена» (что неверно). Факт, что надежность доказательства работы опирается на математические доказательства, превратился в следующее понятие: «надежность блокчейна опирается на математические доказательства» (что опять же неверно).Добавьте к этому тот факт, что эта футуристическая технология была изобретена таинственным Сатоши Накамото (при дальнейшей разработке столь же загадочным Николасом ван Саберхагеном или Томом Элвисом Жедюсором), который сделал блокчейны больше похожими на научно-фантастическую идею Большого Таинственного Объекта, чем на еще одно человеческое изобретение.Явное ошибочное представление о Большом Таинственном Объекте сохранялось до первых крупных скандалов по блокчейн-протоколу, но потом произошла эпопея с ДАО, что и разрушило это сравнение.
Инцидент с ДАО и Война из-за Неизменности
ДАО (Распределенная Автономная Организация) была проектом, запущенным поверх блокчейна Эфириума. Создавшая ДАО Slock.it собрала около 150 миллионов долларов (в валюте Эфириума) с общества и позволил умному контракту ДАО управлять этими средствами. Проект был явным лидером в экосистеме Эфириума. Изобретатель Эфириума Виталик Бутерин заявил, что через несколько месяцев ДАО превратится в жидкую (электронную) демократию.С того момента все пошло не так. Совсем не так.Умный контракт ДАО содержал несколько уязвимостей, и утром 17-го июня 2016 года, злоумышленник атаковал воспользовался одной из них, чтобы украсть 60 миллионов долларов (в валюте Эфира).Этот взлом не имел ничего общего с неизменностью блокчейна Эфириума. ДАО была не блокчейном, а проектом, использующим блокчейн Эфириума. При атаке взломщик не «обманывал» сам блокчейн, он воспользовался ошибкой в коде ДАО, что напомнило случай с Биткойном, когда крупнейшая на тот момент биржа Mt. Gox была взломана из-за ошибки в коде, что в итоге привело краже денежных средств пользователей.Последовавший хард-форк разрушил неизменность блокчейна Эфириума. Хард-форк ввел в блокчейн нарушающие правила транзакции, забрав украденные средства из под контроля хакера. Последовавшее принятие хард-форка наполнило форум Bitcointalk дискуссиями на тему неизменности. Началась Война ссылок на Википедию, в попытках определить, что есть истинный блокчейн.Некоторые утверждали, что неизменность не была нарушена, так как блоки не изменились, а просто были введены неконсенсусные транзакции. Другие не соглашались, утверждая, что неизменность — это также процесс, а не только записи. Эти дискуссии дошли до Гэвина Вуда, соучредителя Эфириума и автора спецификаций Эфириума, который публично задал вопрос «что в действительности означает неизменность?»Хард-форк ДАО отличался от всех других, которые проводились ранее. Очевидно, он удивил многих, кто думал, что такое невозможно. Чтобы понять причину этого удивления, мы должны различать следующие два термина, столь похожих, но все же имеющих различия.
Между Невероятным и Чрезвычайно Трудным
Существует несколько направлений атак на Биткойн.Одна из них — это атака двойной траты посредством большинства хэш-мощности. Если у вас есть 51% от вычислительной мощности сети (в некоторых случаях даже немного меньше), вы можете создать крупную транзакцию, получить вознаграждение после того как ее отмайнят, и потом использовать ваше преимущество в вычислительной мощности для создания новой более длинной цепи, в которой нет этой транзакции.Будет ли это работать? Хэшрейт Биткойна на конец февраля 2017 года составляет более чем 3.000.000 TH/s, что означает, что вам понадобится как минимум 215 000 единиц одних из мощнейших майнеров (устройство Antminer S9 14 TH/s, стоимостью 2100 долларов за единицу), на общую сумму около 450 миллионов долларов. Это не включая затрат на электричество, и того факта, что это верхний предел для возможностей майнеров. Возможно? Да. Трудно? Чрезвычайно.Второй вектор атаки — изменение Биткойн-протокола. Для этого вам нужно написать модифицированный клиент, дающий вам дополнительные монеты, а затем убедить достаточно большую часть сообщества использовать вашу версию. Не будем забывать, что сообщество спорит о размере блока более года, и сейчас наглядно показывает, что такой способ непрактичен. Возможен ли такой вариант? Да. Насколько трудно его реализовать? Чрезвычайно трудно.Третий вектор атаки — взлом грубой силой приватных ключей. А это даже физически не возможно. Все, что вы можете сделать, это попытаться угадать секретный ключ. Однако число возможностей настолько велико, что ваши шансы на успех невероятно малы. На самом деле шанс угадать секретный ключ настолько мал, что некоторые утверждают, что приватные ключи Биткойна так же сильны, как и законы природы (которые сами могут быть событиями высокой вероятности, а не «законами» для всего, что нам известно).Легко перепутать и принять неизменность приватного ключа с другими направлениями атаки. Но в реальности это совсем не так. Блокчейны могут быть взломаны, но в принципе сделать это чрезвычайно сложно. Хотя, как показал хард-форк ДАО, это может быть не так и сложно при определенных обстоятельствах.
Определение Неизменности
И главный вопрос, что же означает неизменность?В языках программирования Java или Rust, например, неизменность — это шаблон разработки, описывающий «объект, который не может быть изменен кодом программы после того, как ей впервые присвоено значение». Это ли абсолютная неизменность? Нет. Объект может быть изменен вне рамок исполняемой среды программы оператором системы.На самом деле, то же самое верно для любой централизованной системы: если оператор управляет памятью напрямую, тогда ничего в действительности нельзя считать неизменным. В распределенных системах этот вопрос предположительно решен, так как там нет центральных операторов. Однако здесь мы сталкиваемся с совсем другой проблемой (задачей византийских генералов): какие именно значения должны являться неизменяемыми? Каждый узел может хранить различные значения, так какое именно значение мы хотим, чтобы было неизменным?Блокчейны решают эту проблему, задавая способ определения состояния распределенной системы на конкретный момент времени. Тогда интуитивно неизменность может быть ожиданием того, что состояние не может быть изменено после того, как было определено системой, и тем, что процесс определения состояния не может быть изменен.Мы даем точные определения для блокчейнов, содержащих следующие компоненты (полное официальное определение блокчейна выходит за рамки данного текста):
- Совокупность связанных блоков, включая по крайней мере один генезис-блок (т. е. не имеющий родительского блока).
- Функция валидации проверяет цепочку связанных блоков, начиная с генезис-блока, и возвращает состояние валидности: является ли цепь действительной (валидной) или нет.
- Протокол консенсуса определяет «главную цепь» в совокупности блоков (в Биткойне, например, это блок, показывающий наибольшую хэш-мощность).
- Стандартный горизонт наблюдений D уточняет, какая длина блока в главной цепи достаточна для пользователей, чтобы считать его частью главной цепи (в Биткойне, например, стандартом является шесть подтверждений).
Это ведет нас к следующим уточнениям по двум типам блокчейнов, обозначенных в начале:Неизменность истории записей (IoH): если блок B имеет высоту H(например, есть H блоки, его обрабатывающие) и длину больше, чем D (например, есть как минимум D блоки после него) в главной цепи в некоторый момент времени T, то главная цепь будет содержать B в любое время, позднее T, а высота B всегда будет равна H.IoH требует одновременно того, чтобы протокол консенсуса был достаточно безопасным, таким образом, что если конкретный блок достиг определенной длины, то он будет включен в главную цепь на все время, и что протокол консенсуса изменялся бы, только если он не влияет на прошлые состояния. Кроме того, указано, что высота B всегда равна H для того, чтобы сделать невозможным добавление блоков перед блоком B.IoH — это то, что интуитивно понятно для большинства пользователей, когда говорят о неизменности блокчейнов. Это именно та неизменность, которая обеспечивает завершенность транзакции.Неизменность процесса (IoP):функция проверки не может быть изменена.IoP исключает незаконные транзакции или неожиданное поведение блокчейна с течением времени. Однако поскольку он также исключает позитивные изменения, такие как усовершенствование протокола, он будет часто нарушаться. Мы классифицируем возможные нарушения по четырем типам.
- Удаление ошибок. Это означает удаление параметров из функции валидации. Пример — хард-форк Эфириума, в котором создание пустых учетных записей было запрещено.
- Добавление усовершенствований.Невозможно предусмотреть все необходимые изменения блокчейна заранее. Пример — SegWit.
- Исправление ошибок. По аналогии с ‘A’, но здесь полезное изменение фиксируется, не удаляется. Пример — изменения расхода газа Эфириума.
- Разовые действия. Например, незаконные транзакции.
Наконец, отметим, что нелегальные транзакции часто равносильны нарушению неизменности записей. Если блокчейн содержит транзакцию от A до B, и добавлены незаконные транзакции от B до C, то это эквивалентно отмене подтвержденной транзакции от А до B и добавлению незаконной транзакции от А до С.
Перефразируя Кодекс принципов Эфириума Классик
В результате хард-форка Эфириума по ДАО была создана новая валюта. Она продолжила цепочку Эфириума, незатронутого хард-форком, где денежные средства ДАО остались в руках хакера. Некоторые его сторонники утверждают, что это оригинальный и истинный блокчейн Эфириума.Основным коммерческим аргументом сообщества Эфириума Классик была его неизменность. Оно сформулировало собственный «кодекс принципов» в опубликованной Декларации Независимости, но документ, конечно, имел проблемы с верной формулировкой. В то время как более технические формулировки подверглись критике со стороны экспертов, выражения на обычном языке («никакой поддержки хард-форкам») были неполными в свете некоторых действий, которые сообщество предприняло, а именно: не последовало примеру Эфириума по удалению пустых записей из блокчейна.Используя наше определение, легко описать «код принципов Эфириума Классик» следующим образом:
Эфириум Классик обещает никогда не проводить хард-форк, который нарушит IoH, или «разовые действия» вроде нарушения IoP, что приведет к появлению «незаконных транзакций». Однако Эфириум Классик допускает нарушение других принципов IoP, если это приведет к усовершенствованию системы.
Заключение и внесение окончательной ясности по вопросам изменения Блокчейнов
Если блокчейн состоял бы только из неизменности, его техническое состояние застыло на момент запуска. Но такая регулирующая модель привела бы к застою. Более практичный подход, такой как оборонительная демократия, состоит в том, что блокчейн должен сам себя защищать, даже от случайного нарушения неизменяемости.То, что мы предлагаем не полная неизменность, но более четкая. В частности, мы предлагаем следующие правила:
- Официальный документ блокчейна должен более точно определять, какие виды неизменности он стремится поддерживать, касательно каждой из его версий, и согласно всем запланированным хард-форкам.
- Официальный документ должен содержать протокол по форкам, которые нарушили неизменность. Примером является 95% принятие Биткойна. Отсутствие такого протокола приводит к импровизации в протоколах, таких как использование голосования на carbonvote в Эфириуме перед проведением хард-форка ДАО (что закончилось критикой).
- В каждом незапланированном хард-форке должно быть указано, если какие-либо уровни неизменности нарушаются.
- Каждое нарушение неизменности должно быть четко обосновано и оправдано.
Помимо всего прочего, форки, которые предварительно описаны в официальной документации (и, следовательно, хорошо известны заранее) не следует рассматривать как нарушение неизменности.В то время как определение неизменности можно рассматривать как второстепенную задачу, оно в действительности является одним из самых важных моментов в изменении блокчейнов.Неизменность является одним из основных свойств, которые блокчейны предлагают заменить и восстановить традиционную централизованную систему институтов. Эта неизменность сохраняется протоколом консенсуса и сообщества и, следовательно, она должна четко пониматься создателями, руководителями и пользователями каждого блокчейна, чью неизменность они стремятся обеспечить.Намеренное игнорирование точного определения неизменности почти наверняка приведет к спорам в сообществе и возможному его расколу в будущем. Как члены блокчейн-сообщества все мы должны стремиться к тому, чтобы избежать этого.Пожалуйста, учтите это в следующий раз, когда будете работать над официальным документом.Источник: cryptom Автор: Рон Эяль и Крейг Сейлор (в соавторстве с доктором Симоне Вурсте)