Обоснование решения проекта Elrond
-
Примечание: В этой статье мы будем использовать термин «узел» в качестве объекта сети, в определенный момент отвечающего за составление нового блока. Валидаторы занимаются назначением узлов, отвечающих за одобрение блоков, фактически "подтверждающих" их правильность.
Двумя проблемами, с которыми с самого начала хотел справиться Elrond были: «недостаточная пропускная способность» — на что проект предлагал шардинг и «высокие расходы на электроэнергию» — за счет перехода от консенсуса на основе доказательства работы к консенсусу на основе доказательства интересов. Для понимания принципов проектирования соответствующей архитектуры и компонентов вокруг нее, потребуется рассмотрение технологий с разных сторон.
Позиция Proof-of-Stake заключается в том, что в сети необходима работа над всеми или большинством основных проблем PoS-систем, стимулируя разумное поведение. Шардинг требует механизм достижения согласия внутри небольших частей сети (шард), а также согласие между участниками транзакций, которое охватывает разные шарды. Он также должен учитывать потенциальную проблему Византийских генералов, когда появляется участник со злонамеренным поведением.
Прежде всего, давайте рассмотрим подробно общий подход в блокчейнах Proof-of-Stake. Время измеряется двумя единицами — очевидное «время блока» (соответствует интервалу между двумя успешными блоками), а также более высокого порядка, названным «эпохой» или «эрой». С точки зрения Proof-of-Stake, эрой называется интервал, необходимый для генерации некоторого числа (X) блоков (таким образом, эра = X * время блока).
Знать своего врага...
Блокчейны на PoS, как ныне существующие так и в теории, используют крипто-экономические стимулы чтобы убедиться, что поведение людей (за которыми стоят узлы) следует ожидаемому шаблону — узлы получают вознаграждение за полезную для сети работу, а за плохие дела наказываются. В некоторых случаях подход "кнута и пряника" чрезмерно акцентирует одну сторону уравнения (случается, что нет наказания за враждебное поведение), но в большинстве случаев эти обе стороны уравновешены. Также стоит отметить, что наказание очень сильно связано с долей, которую каждый узел резервирует в течение определенного периода (как правило, несколько эпох). Враждебное поведение при отсутствии такой зарезервированной доли, которую узел может потерять (частично либо полностью), называется атакой "Ничего на кону."
Другой вид враждебного поведения, связанного с резервированием доли, состоит в том, что сначала узел является частью "принятия решения", потом выходит из этого процесса и извлекает свою долю, но через некоторое время пытается "подделать" историю (самостоятельно либо предоставляя полномочия злонамеренной стороне), используя свои полномочия, связанные с той долей (оставшиеся ключи); Таким образом атака переходит в отложенную «ничего на кону» и обычно называется Дальняя атака. С этой точки зрения важно, чтобы разблокировка зарезервированных средств имела место только после завершения предложения или утверждения узлом блоков.
В отдельных видах атак на блокчейн вида «Дальняя атака», публикация альтернативной истории может создать впечатление, что некоторые узлы не выполнили свои обязанности и таким образом они получат наказание (по сути, имеющее правильные цели) несправедливо. Такой тип враждебного поведения называется атаками Stake-bleeding.
Наконец, но не в последнюю очередь, могут возникать ситуации, когда узлы изолированы от общей сети врагами, которые "кормят" их искаженным представлением о реальности (например, только передавая транзакции от их "друзей" и проводя цензуру законных транзакций). Эти типы атак называются Атаками затмения (eclipse-atack).
... Но также и знать свои слабости, чтобы противостоять
Как указывалось до этого, PoS-системы должны прикрывать несколько своих слабых сторон, наиболее важными из которых являются:
Внешняя: DoS-атаки (или иной вред) на текущего валидатора(ов) или текущего составителя блока, что нарушит взаимодействие с остальными узлами и воспрепятствует возможности принимать решения. Очевидно, что это повлияет на жизнеспособность блокчейна и безопасность, может привести к непредсказуемым последствиям.
Внутренняя: Узлы (личности или объекты), выбранные на каком то шаге для выполнения "официальной" роли могут вести себя враждебно на следующем шаге (шагах), (например, предлагать недействительные блоки, отказываться от участия в процедурах коллективного подписания и так далее).
Мы решили реализовать шардинг состояния и, в качестве ответа на эти две проблемы, придумали две концепции, которые назвали Secure Proof Of Stake (Защищенное Доказательство Доли) и Adaptive State Sharding (Адаптивное Состояние Шардинга).
Новый подход к враждебному поведению посредством надежной адаптации
Интуиция подсказывает, что чем раньше враг узнает узел, который будет составлять блок и/или о валидаторах — от идентификационных данных узла или от его "сетевых координат" — тем больший ущерб он может нанести узлу (соответственно, и сети). Еще более плохой сценарий заключается в том, что зная кто конкретно будет отвечать за выпуск блока, можно вступить в сговор с указанным инициатором (или валидатором), чтобы он предложил (или подтвердил) недействительные блоки (например, позволяя производить двойное расходование или фиктивную печать монет из воздуха — но не как это делают сегодня центральные банки :-D). Таким образом для каждого шага (блока) желательно определять роль узла как можно позднее.
Для решения данной проблемы мы применили следующий подход: мы используем текущую сигнатуру блока в качестве источника случайности и на основе него мы выбираем a) поставщика блока и b) набор валидаторов. Один из способов достижения этого заключается в том, что каждый уполномоченный пользователь выполняет проверяемую случайную функцию (VRF) на текущем хэше блока и придумывает случайное число (с доказательством того, что случайное число было правильно сгенерировано выбранной VRF).
Случайные числа упорядочиваются (скажем, от малого к большому) и у кого первое из них (участник с наименьшим числом) — тот инициатор, а следующие N - проверяющие. Благодаря этому, в то время как предлагающий узел может выбрать конкретный блок, он не сможет определить, какой из других участников получит наименьшее случайное число на следующем шаге.
Чтобы сделать вещи еще более трудными для византийских узлов, мы разработали процесс, посредством которого время от времени (скажем, каждую эпоху) часть шардовых узлов переназначается в другие шарды, исключая возможность что кто-то в сети может заранее сказать, какой узел будет переназначен и, более того, в какой шард он будет перемещен. Процесс переназначения может быть опять результатом выполнения VRF.
Другая особенность, которую мы использовали при разработке нашего механизма "кнута и пряника", заключается в том, что помимо награды и разделения, каждый узел имеет рейтинг, который отражает мнение сети о поведении узла. Действия по правилам повышают (до определенного предела) рейтинг, в то время как враждебное поведение уменьшает его.
Данный рейтинг объединяется с долей узла при вычислении вероятности доли — как результат, влияет на вес в доле пользователей. Положительные рейтинги действуют так, как если бы доля узла была больше фактической доли, в то время как отрицательные рейтинги будут иметь тот же эффект, что и снижение доли узла. Этот рейтинг может повлиять как на реальное вознаграждение, так и на наказание (таким образом, положительное поведение принесет пользу узлу больше, в долгосрочной перспективе, чем отрицательное, если исходить из того, с которой та же самая ставка должна начинаться)
Вывод
Подводя итог — мы построили новую блокчейн-архитектуру, найдя оптимальные (как мы считаем) механизмы, с помощью которых воможно:
Обеспечить хорошее поведение путем обращения к организациям, которые хотят «быть в игре» с просьбой «сдержать свои обещания», в то же время обеспечивая вознаграждение за участие в механизме консенсуса.
Минимизировать предвзятость решений и возможность внешнего воздействия на участников. Это достигается путем принятия отдельных решений (распределение блоков, групповые выборы и выборы лидеров) на основе источника случайности (сигнатуры блоков и узлов).
Устранять либо по крайней мере значительно снижать возможность сговора, время от времени перетасовывая узлы между шардами, а также меняя роли внутри шард.
Вступайте что бы задавать вопросы и быть в курсе всех событий в мире Elrond!
Для получения дополнительной информации, навестите нас:
Twitter: https://twitter.com/elrondnetwork
Официальный сайт: https://www.elrond.com
RU группа: https://t.me/ElrondNetwork_ru
ENG группа: https://t.me/ElrondNetwork
Elrond Github: https://github.com/ElrondNetwork
ICODROPS: https://icodrops.com/elrond-network/ -
Теория по правильному воспитанию узлов - это что-то новое)).
-
@cryptomax Опечатка, скоро исправим)