Консенсус в Polkadot Часть 4: Безопасность

Это четвертая часть в нашей серии статей о консенсусе в Polkadot. Читайте Часть 1 в качестве введения и Часть 2, рассказывающую о GRANDPA. и Часть 3, рассказывающую о BABE.

До сих пор мы обсуждали, как BABE создает блоки-кандидаты и GRANDPA их финализирует. Мы знаем, что нам нужно более двух третей добросовестных валидаторов, чтобы протокол работал корректно. Но каково общее количество валидаторов? Как они выбираются? Почему они должны следовать правилам?

Выборы и эры

Чтобы валидаторы знали, что блок одобрен более чем двумя третями голосов, GRANDPA необходимо вести учет общего количества валидаторов. Процесс управления чейном устанавливает (и может изменить) их количество, но цель состоит в том, чтобы иметь по крайней мере 1000 валидаторов, работающих в сети Polkadot.

Как только мы узнаем, сколько валидаторов собирается участвовать, мы проводим выборы, чтобы решить, кто станет валидатором. Точно так же, как BABE разбивает время на эпохи, GRANDPA разбивает время на эры. В конце каждой эры выплачиваются награды за прошлую эру, и проводятся выборы для следующей эры. Планируется, что эры будут длиться около 24 часов.

Polkadot использует "nominated proof of stake" (NPoS) для выбора валидаторов, и метод Phragmen для проведения выборов. Во введении обсуждалось, что безопасность в "proof-of-stake" сети связана с величиной риска. Пользователи сигнализируют о своем намерении участвовать в обеспечении безопасности сети путем блокировки средств, называемой стейкингом.

Хотя количество валидаторов ограничено, количество людей, которые могут участвовать в обеспечении безопасности сети путем размещения стейка, не имеет никаких ограничений. Если вы не являетесь валидатором, вы все равно можете участвовать в качестве номинаторов. Номинаторы стейкают свои средства и выбирают до 16 валидаторов, которым они доверяют проводить валидацию от своего имени. Номинаторы разделяют вознаграждение, но также и наказание валидаторов, которых они поддерживают.

Одна из целей Polkadot — это наличие равномерно распределенного набора валидаторов. Вознаграждение выплачивается на основе производительности, а не на основе стейка, поэтому номинатор получит более высокий процент прибыли, сделав стейк “небольшому” валидатору.

Мы оптимизируем это распределение стейка с помощью метода Phragmen. Перед выборами существует список аккаунтов, желающих стать валидаторами. Каждый валидатор имеет список потенциальных номинаторов. Метод Phragmen сначала выбирает победителей, определяя комбинацию, которая имеет наибольший стейк. Как только данный метод определит набор валидаторов, он будет применять номинации таким образом, что приведет к наиболее равномерно сложенному набору. Этот результат приведет к самой высокой безопасности для сети в целом и наибольшему вознаграждению для номинаторов.

Награды

Награды — это основной стимул для людей запускать валидаторы в сети. Как обсуждалось в Части 1 и 2, валидаторы используют протоколы BABE и GRANDPA для создания и финализации блоков в Polkadot.

В отличие от других "proof-of-stake" протоколов, Polkadot определяет вознаграждение на основе активности валидатора, а не на основе его стейка. Валидаторы накапливают баллы в зависимости от своей активности. Баллы в первую очередь выдаются за подтверждение валидности и создание блоков, входящих в основную цепочку. Некоторые дополнительные баллы выдаются за создание блоков, которые не попадают в основную цепочку.

Баллы не имеют прямого соответствия в токенах DOT вплоть до окончания эры, когда мы знаем общее количество баллов, выданных в течение эры. Общая награда за эру делится между валидаторами в зависимости от того, сколько баллов каждый из них набрал относительно общей суммы. Затем вознаграждение делится между номинаторами каждого валидатора.

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

Дисциплина и наказания

Награды, по сути, поощряют стейкинг, но сеть должна следить за тем, чтобы стейкеры следовали правилам. Слешинг — это наказание за несоблюдение протокола. Безопасность сети требует, чтобы наказание за попытку атаки было достаточно велико, чтобы предотвратить ее возникновение.

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

Более серьезное нарушение — это двусмысленность (equivocation). Двусмысленность может возникнуть как у BABE, так и у GRANDPA. В BABE, двусмысленность — это создание двух блоков в одном слоте. В GRANDPA, это отправка сообщения о предварительном голосовании или предварительном коммите для двух цепочек, которые конфликтуют друг с другом в одном и том же раунде. Двусмысленность влечет за собой серьезный слешинг. Если бы слишком много валидаторов допускали двусмысленность, то было бы невозможно выбрать основную цепочку.

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

Супер-линейный слешинг

Возможно, вы уже заметили, что награды не связаны со стейком, поэтому, если у вас есть достаточно средств для запуска двух валидаторов, вы можете удвоить свои награды.

Такое поведение поощряется. Мы ожидаем, что отдельные субъекты — будь то крупные холдеры или "staking-as-a-service" провайдеры будут запускать несколько валидаторов. Polkadot никак не может помешать отдельным организациям приобретать большое количество токенов и запускать валидаторы.

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

По мере того, как все больше валидаторов создают неопределенность, величина слешинга увеличивается. Когда более 33% валидаторов создают неопределенность (это событие остановило бы сеть), нарушители наказываются на 100% своего стейка.

Поскольку один объект добавляет в сеть больше валидаторов, он должен будет гарантировать, что валидаторы не зависят друг от друга или от какой-либо централизованной службы.

Общая безопасность (Shared Security)

Безопасность в "proof-of-stake" сетях зависит от экономики, а так как экономическая ценность, по определению, ограничена, соответственно, существуют ограничения и в безопасности. Поскольку количество блокчейнов увеличивается, их экономическая ценность, следовательно, и их безопасность распределяется по нескольким цепочкам, делая каждую из них слабее, чем раньше.

Смарт-контракты, которые выполняются в общейисполнительной среде, такой как виртуальная машина Ethereum (EVM), могут взаимодействовать на бездоверительной основе. В Polkadot логика переместилась из единой среды выполнения в блокчейне в саму логику блокчейна.

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

Polkadot вводит модель общей безопасности, чтобы цепочки могли взаимодействовать с друг с другом, прекрасно зная, что их собеседники имеют те же гарантии безопасности, что и их собственная цепочка. Решения на основе бриджей (мостов), где каждая цепочка поддерживает свою собственную безопасность, заставляют получателя доверять отправителю. Модель безопасности Polkadot обеспечивает необходимые гарантии для того, чтобы сделать кросс-чейн взаимодействие возможным, не доверяя безопасности отправителя.

Блоки Relay Chain в основном состоят из доказательств валидности от парачейнов, а это означает, что когда Relay Chain валидирует изменение состояния парачейнов, и включает доказательство в финализированную цепочку, блоки парачейнов также становятся финализированными. Чтобы изменить блок парачейна, атакующий должен был бы изменить по сути каждый отдельный парачейн и всю систему Polkadot. Безопасность не разделяется - она складывается.

Эта система общей безопасности путем совместного использования состояния в Relay Chain устраняет необходимость того, чтобы парачейны обеспечивали свою собственную безопасность и сообщество валидаторов. Relay Chain обеспечивает эту экономическую гарантию, так что цепочки в экосистеме Polkadot могут сосредоточиться на логике, которая управляет их приложением.

[1] Это позволяет логике выполнять синхронные запросы.

Чтобы узнать больше о консенсусе и экономике в Polkadot, посетите Polkadot Wiki.

Данная статья является переводом на русский язык официальной статьи с веб-сайта Polkadot, ранее опубликованный Natali.

Original published in December 18, 2019, "Polkadot Consensus Part 4: Security"

by Joe Petrowski Research Analyst, Parity Technologies”

Мы также рекомендуем ознакомиться c lightpaper Polkadot на русском языке.

Присоединяйтесь в Telegram чат "Subsocial на русском", общайтесь и получайте самые свежие новости о SubSocial

0
3sPM3K…WueaD7Post author

Polkadot Russian Community (Полкадот Россия и страны СНГ)

0 comments

Polkadot Russian Community (Полкадот Россия и страны СНГ)