Один важный технический момент, который я забыл упомянуть — это предложенная замена Casper FFG на Minimmit в качестве гаджета финализации.
Кратко: Casper FFG обеспечивает двухэтапную финализацию: каждый аттестатор должен подписать один раз, чтобы «обосновать» блок, и ещё раз, чтобы «финализировать» его. Minimmit требует только один этап. В обмен на это устойчивость Minimmit (в нашей параметризации) снижается до 17%, в то время как у Casper FFG она составляет 33%.
В обсуждениях консенсуса ethereum я всегда был сторонником строгих предположений о безопасности: я настаивал на достижении теоретического предела в 49% устойчивости к сбоям при синхронной сети, продолжал требовать механизмы восстановления после атаки 51%, предложил DAS для создания проверок доступности данных, устойчивых к доминированию недобросовестных участников и т.д. Однако я принимаю свойства Minimmit и даже в некоторых аспектах энтузиастически их поддерживаю. В этом посте я объясню почему.
Рассмотрим точные свойства безопасности как 3SF (не текущей beacon-цепи, которая во многих отношениях излишне слаба, а идеальной 3SF), так и Minimmit.
«Синхронная сеть» означает «задержку сети менее 1/4 слота», «асинхронная сеть» означает «потенциально очень высокую задержку, даже некоторые ноды могут быть оффлайн часами». Проценты («атакующий имеет <33%») относятся к процентам активно заблокированного ETH.
## Свойства 3SF
Случай синхронной сети:
* Атакующий имеет p < 33%: ничего плохого не происходит
* 33% < p < 50%: атакующий может остановить финализацию (за счёт потери огромных средств через inactivity leak), но цепь продолжает нормально развиваться
* 50% < p 67%: атакующий может финализировать что угодно, добросовестным участникам гораздо сложнее провести миноритарный форк
Случай асинхронной сети:
* Атакующий имеет p 33%: может откатить финализацию, за счёт потери огромных средств через слэшинг
## Свойства Minimmit
Случай синхронной сети:
* Атакующий имеет p < 17%: ничего плохого не происходит
* 17% < p < 50%: атакующий может остановить финализацию (за счёт потери огромных средств через inactivity leak), но цепь продолжает нормально развиваться
* 50% < p 83%: атакующий может финализировать что угодно, добросовестным участникам гораздо сложнее провести миноритарный форк
Случай асинхронной сети:
* Атакующий имеет p 17%: может откатить финализацию, за счёт потери огромных средств через слэшинг
На самом деле я считаю, что это более выгодный компромисс. Вот почему:
* Самый опасный тип атаки — это не откат финализации, а цензура. Причина в том, что откат финализации создаёт массу публично доступных доказательств, которые можно использовать для немедленного наказания атакующего миллионами ETH (то есть миллиардами долларов), тогда как цензура требует социальной координации для обхода
* В обоих случаях атака на цензуру требует 50%
* Атака на цензуру становится *значительно сложнее* для координации, когда атакующий может односторонне финализировать (то есть >67% в 3SF, >83% в Minimmit). Если он не может — тогда при контр-координации добросовестных участников возникают две незавершённые цепи, сражающиеся несколько дней, и пользователи могут выбрать одну. Если он может — тогда нет естественной точки Шеллинга для координации мягкого форка
* В случае бага клиента худшее, что может произойти — это финализация багированного блока. В 3SF достаточно, чтобы 67% клиентов имели один и тот же баг, чтобы он был зафинализирован; в Minimmit нужно 83%
По сути, Minimmit максимизирует количество ситуаций, в которых «по умолчанию возникают две конкурирующие цепи», и это гораздо более здоровый и восстанавливаемый результат, чем «финализация неправильного состояния».
Мы хотим, чтобы финализация означала окончательность. Поэтому в ситуациях неопределённости (будь то атаки или программные ошибки) мы должны быть более спокойны к периодам в несколько часов или дней, когда цепь не финализируется, а продолжает развиваться по правилу выбора форка. Это даёт нам время подумать и определить, какая цепь правильная.
Кроме того, я считаю, что «33% слэшинга для отката финализации» в 3SF — избыточно. Даже если стейкингом занято всего 15 млн ETH, это означает 5 млн ($10 млрд), которые будут слэшнуты при одном откате цепи. Если у вас есть $10 млрд и вы готовы совершить акты разрушения, нарушающие законы о кибербезопасности многих стран — есть гораздо более эффективные способы потратить эти деньги, чем атаковать цепь. Даже если ваша цель — разрушить ethereum — существуют гораздо более эффективные векторы атак.
И если у нас есть базовая гарантия того, что для отката финализации будет слэшнуться как минимум 17% (что обеспечивает Minimmit), мы должны сравнивать две системы исходя из их других свойств — и по причинам, описанным выше, я считаю, что Minimmit показывает лучшие результаты.