Как Monad масштабирует EVM, сохраняя децентрализацию? MonadBFT — это алгоритм консенсуса, используемый в Monad, он является первой реализацией Hotstuff, устойчивой к tailfork (что это значит?) Вот как MonadBFT может масштабироваться до 1000 валидаторов, оставаясь производительным 🧵
1/7 Механизмы консенсуса Механизм, который блокчейны используют, чтобы убедиться, что новые блоки согласованы большинством валидаторов. Алгоритмы консенсуса на данный момент не могут масштабироваться более чем на несколько сотен валидаторов, так как сложность увеличивается на квадрат числа валидаторов (в большинстве случаев). Поскольку каждый валидатор общается со всеми другими валидаторами, чтобы согласовать блоки: n валидаторов x n сообщений = n в квадрате сообщений. Таким образом, сложность значительно увеличивается с количеством валидаторов.
2/7 Hotstuff — это алгоритм консенсуса, который может масштабироваться линейно (пропорционально количеству валидаторов), избегая обмена сообщениями между всеми и позволяя одному "лидеру" общаться со всеми валидаторами для достижения консенсуса. Таким образом, Hotstuff может масштабироваться более эффективно, чем традиционный консенсус PBFT, но он уязвим для атак tailforking. MonadBFT — это первая реализация Hotstuff, устойчивая к tailfork.
3/7 Что такое tailforking? Tailforking происходит, когда следующий лидер (валидатор, предлагающий следующий блок) намеренно или случайно не включает QC (квалификационный сертификат) действительного блока предыдущего лидера в свое предложение для нового блока. (QC означает сертификат кворума, который является доказательством того, что все валидаторы согласились с предыдущим блоком) В результате предыдущий блок, несмотря на то, что он действителен и имеет поддержку большинства, остается неподтвержденным и в конечном итоге становится сиротой или заменяется другим блоком на той же высоте. Это нарушает механизм стимулов: честные предложители могут не получить вознаграждение за блок или сборы, если их блок пропущен, что поощряет нечестное поведение и ослабляет безопасность сети.
4/7 Как работает MonadBFT? → Лидер (Алиса) рассылает подписанное предложение блока всем другим узлам (распространение), которые подтверждают его действительность, отправляя подписанное свидетельство следующему лидеру Бобу (сбор). → Боб агрегирует свидетельства в "Сертификат Кворума" (QC) → Боб рассылает QC всем узлам, которые подтверждают его получение, отправляя сообщение третьему лидеру (Чарли), который агрегирует эти свидетельства. Поскольку свидетельства касаются QC, мы называем этот новый QC QC-на-QC. → Чарли отправляет QC-на-QC всем. Получив QC-на-QC, все знают, что блок Алисы был завершен.
5/7 Пайплайнинг В приведенной выше истории Боб и Чарли отправляют только QC или QC-на-QC, но на самом деле предложения находятся в пайплайне: сообщение Боба содержит как QC для блока Алисы, так и содержимое нового блока. Сообщение Чарли содержит QC для блока Боба (который является QC-на-QC для блока Алисы) и также содержит транзакции для нового блока. Когда валидаторы отправляют аттестацию для сообщения Боба, они подтверждают как действительность блока Боба, так и действительность QC. Этот пайплайнинг увеличивает пропускную способность сети, поскольку каждый слот, в котором создается новый блок.
6/7 Raptorcast: Протокол распространения блоков Monad MonadBFT требует от лидера отправлять предложения блоков каждому валидатору. Однако блоки могут быть довольно большими: 10,000 транзакций/с * 200 байт/транзакция = 2 МБ/с. Прямой отправки 200 валидаторам потребует 400 МБ/с. В идеале валидаторы не должны иметь такую высокую скорость загрузки. Здесь на помощь приходит Raptorcast. → Блоки кодируются с помощью кодирования с удалением лидером (кодирование с удалением означает, что сообщение разбивается на набор фрагментов, и его можно декодировать из достаточно большого подмножества этих фрагментов) → Лидер распределяет разные наборы фрагментов всем валидаторам в сети (валидаторы с более высокой ставкой получают пропорционально больше) → Каждый валидатор повторно транслирует свои фрагменты всем другим валидаторам в сети Таким образом, вся пропускная способность сети используется для распространения предложений блоков.
30,62K