Перейти к основному содержанию

Последнее обновление страницы: 11 апреля 2024 г.

Выбор тайного лидера

В сегодняшнем механизме консенсуса, основанном на доказательстве владения (proof-of-stake), список следующих предлагающих блоки является общедоступным, и можно определить их IP-адреса. Это означает, что злоумышленники могут определить, какие валидаторы должны предложить блок, и нацелить на них атаку типа «отказ в обслуживании» (DOS-атаку), которая не позволяет им предложить свой блок вовремя.

Это может дать злоумышленнику возможность получить прибыль. Например, предлагающий блок, выбранный для слота n+1, может провести DOS-атаку на предлагающего в слоте n, чтобы тот упустил возможность предложить блок. Это позволило бы предлагающему блок, совершающему атаку, извлечь MEV обоих слотов или захватить все транзакции, которые должны были быть разделены на два блока, и вместо этого включить их все в один, получая все связанные комиссии. Скорее всего, это больше влияет на домашних валидаторов, чем на опытных институциональных, которые могут использовать более передовые методы для защиты от DOS-атак и, таким образом, стать централизирующей силой.

Существуют несколько решений этой проблемы. Одним из них является технология распределенного валидатора (Distributed Validator Technology) (opens in a new tab), цель которой — распределить различные задачи, связанные с работой валидатора, по нескольким машинам с избыточностью, чтобы злоумышленнику было гораздо сложнее предотвратить предложение блока в определенном слоте. Однако самым надежным решением является выбор одного тайного лидера (SSLE).

Выбор одного тайного лидера

Для SSLE используется умная криптография для обеспечения того, чтобы только выбранный валидатор знал, что он был выбран. Это работает путем представления каждым валидатором обязательства к секрету, который они все разделяют. Обязательства перетасовываются и изменяются таким образом, чтобы никто не мог сопоставить обязательства с валидаторами, но каждый валидатор знал, какое обязательство ему принадлежит. Затем случайно выбирается одно обязательство. Если валидатор обнаруживает, что его обязательство было выбрано, он знает, что сейчас его очередь предложить блок.

Ведущая реализация этой идеи называется Whisk (opens in a new tab). Она работает следующим образом:

  1. Валидаторы подчиняются общему секрету. Схема обязательств разработана таким образом, что она может быть привязана к идентификатору валидатора, а также рандомизирована, чтобы никакая третья сторона не могла связать конкретное обязательство с конкретным валидатором, даже используя обратную инженерию.
  2. В начале эпохи выбирается случайный набор валидаторов для выборки обязательств из 16 384 валидаторов с использованием RANDAO.
  3. Для следующих 8182 ячеек (1 день) валидаторы перемешивают и рандомизируют подмножество обязательств, используя их собственную энтропию.
  4. После завершения перетасовки RANDAO используется для создания упорядоченного списка обязательств. Этот список проецируется на ячейки Ethereum.
  5. Валидаторы видят, что их обязательства привязаны к определенной ячейке. Когда наступает время этой ячейки, они предлагают блок.
  6. Эти шаги повторяются, чтобы распределение обязательств по ячейкам всегда значительно опережало нынешнюю ячейку.

Это мешает злоумышленникам заранее узнать, какой конкретный валидатор предложит следующий блок, предотвращая возможность DOS-атак.

Выбор нескольких тайных лидеров (SnSLE)

Существует также отдельное предложение, направленное на создание сценария, при котором у каждого валидатора есть случайный шанс предложить блок в каждом слоте, подобно тому как предложение блока определялось при доказательстве работы (proof-of-work), что известно как выбор нескольких тайных лидеров (SnSLE). Один из простых способов реализовать это — использовать функцию RANDAO, применяемую для случайного выбора валидаторов в действующем сейчас протоколе. Идея с RANDAO заключается в том, что достаточно случайное число генерируется путем смешивания хэшей, представленных многими независимыми валидаторами. При SnSLE эти хэши можно использовать для выбора следующего предлагающего блок, например выбрав хэш с самым низким значением. Диапазон допустимых хэшей может быть ограничен для настройки вероятности выбора отдельных валидаторов в каждом слоте. Утверждая, что хэш должен быть меньше 2^256 * 5 / N, где N = количество активных валидаторов, шанс любого отдельного валидатора быть выбранным в каждом слоте будет равен 5/N. В этом примере есть вероятность 99,3 %, что по крайней мере один предлагающий сгенерирует действительный хэш в каждой ячейке.

Текущий прогресс

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

Дополнительные материалы

Последнее обновление страницы: 11 апреля 2024 г.

Была ли эта статья полезной?