Одним из наиболее определяющих инноваций блокчейна Monad является его оптимистичная параллельная модель выполнения. Этот подход переосмысливает обработку транзакций на уровне протокола, решая ключевое ограничение традиционных блокчейнов: последовательное выполнение. На платформах, таких как Ethereum, транзакции выполняются одна за другой, что обеспечивает согласованность состояния, но серьезно ограничивает пропускную способность и общую производительность.
Виртуальная машина Monad вводит параллелизм, предполагая, что большинство транзакций в блоке независимы и не взаимодействуют с одними и теми же частями состояния блокчейна. Исходя из этого предположения, транзакции группируются и планируются для параллельного выполнения по нескольким потокам обработки. Это значительно увеличивает пропускную способность выполнения, особенно при высокой сетевой нагрузке, за счет более эффективного использования современных многоядерных процессоров по сравнению с последовательными моделями.
Однако параллелизм вводит потенциальные риски конфликта данных, например, две транзакции, пытающиеся изменить один и тот же счет или контракт. Monad решает эту проблему, интегрируя систему обнаружения и разрешения конфликтов. После выполнения транзакций параллельно система проверяет на наличие несоответствий. Если обнаружены конфликты, только затронутые транзакции повторно выполняются или безопасно переупорядочиваются. Это гарантирует, что блокчейн поддерживает корректность и детерминированные переходы состояний, сохраняя при этом эффективность параллельной обработки.
Эта модель напоминает оптимистичный контроль параллелизма в современных системах баз данных, где большинство операций считается непротиворечивыми и обрабатывается одновременно. Только в крайних случаях система вмешивается. Результатом является масштабируемый и адаптивный уровень выполнения, подходящий для приложений с высоким объемом транзакций и разнообразной нагрузкой.
Оптимистичное параллельное выполнение особенно выгодно для таких случаев использования, как DeFi, игровые приложения и рынки NFT, где множество пользователей взаимодействуют одновременно, но редко с одними и теми же данными. Monad может обрабатывать эти операции параллельно, уменьшая загруженность и улучшая отзывчивость децентрализованных приложений без необходимости внецепных масштабируемых слоев.
Еще одним ключевым преимуществом является простота для разработчиков. Среда, совместимая с EVM, Monad, позволяет смарт-контрактам, написанным на Solidity, выполняться нормально, не требуя от разработчиков ручного управления параллельностью. Протокол обрабатывает логику выполнения за кулисами, сохраняя опыт разработчика и улучшая производительность сети.
Дополняя свою параллельную модель выполнения, Monad реализует асинхронное выполнение, архитектурную особенность, которая отделяет выполнение транзакций от процесса согласования. В традиционных блокчейнах согласование и выполнение тесно связаны - валидаторы должны выполнить все транзакции перед согласованием и завершением блока. Это сопряжение вводит задержку и ограничивает скорость производства новых блоков.
Monad развязывает эти функции, заканчивая сначала порядок транзакций через консенсус, а затем выполняя их позже. Такая конструкция позволяет слою консенсуса работать независимо и непрерывно, в то время как выполнение происходит параллельно на заднем плане. Это увеличивает эффективность валидатора и сокращает время блока, поскольку валидаторы больше не ограничены временем, необходимым для вычисления результатов каждой транзакции.
Система поддерживает детерминированность и безопасность, обеспечивая выполнение всех узлов точно таких же транзакций в том же согласованном порядке, даже если само выполнение происходит в разное время. Это гарантирует согласованность по всей сети и предотвращает расхождение в состоянии блокчейна.
Асинхронное выполнение также дополняет оптимистичный параллелизм Monad. Пока консенсус продвигается и новые блоки быстро завершаются, выполнение происходит одновременно по нескольким потокам, разрешая конфликты только по мере необходимости. Это комбинация параллельного асинхронного выполнения максимизирует системную конкурентность и использование ресурсов, не нарушая корректности.
С точки зрения пользователя и разработчика эта архитектура приводит к более быстрому включению транзакций, более отзывчивым приложениям и улучшенной масштабируемости. Валидаторы также получают выгоду от сокращения узких мест, что приводит к более эффективной и децентрализованной сети.
В Монаде консенсус достигается через MonadBFT, настраиваемую адаптацию протокола Byzantine Fault Tolerant (BFT) HotStuff. Этот механизм консенсуса оптимизирован как с точки зрения производительности, так и с точки зрения безопасности, поддерживая цели Монады по обеспечению низкой финальности и высокой пропускной способности, оставаясь доступным для децентрализованных валидаторов.
HotStuff был изначально разработан для сокращения количества раундов связи, необходимых для завершения блока. MonadBFT развивает эту идею, обеспечивая окончательность в одном слоте, где блоки завершаются за один раунд консенсуса без ожидания нескольких подтверждений. Это обеспечивает мгновенную окончательность транзакции, улучшая предсказуемость для приложений и снижая риск реорганизации цепочки.
MonadBFT использует модель на основе лидеров. На каждом раунде один валидатор предлагает блок, в то время как другие валидируют его и голосуют за него. Если две трети общей ставки валидатора подтверждают блок, он финализируется. Этот оптимизированный процесс минимизирует накладные расходы и ускоряет производство блоков, особенно в нормальных условиях работы.
Для обеспечения живости MonadBFT включает в себя стратегии смены лидера и тайм-аута. Если лидер не может предложить блок, следующий валидатор в очереди автоматически берет на себя управление. Эта устойчивость гарантирует, что цепь продолжает продвигаться даже если некоторые валидаторы находятся в автономном режиме или не реагируют.
С точки зрения безопасности MonadBFT придерживается типичного порога BFT, терпимого к тому, чтобы до трети валидаторов действовали злонамеренно без ущерба для безопасности. Как только блок финализирован, он криптографически запечатан и не может быть отменен без коллаборации нечестных актеров, контролирующих большинство валидаторов.
Протокол тесно интегрирован с асинхронной моделью выполнения Monad. Поскольку блоки завершаются перед выполнением, система может продолжать развиваться без задержек, в то время как слой выполнения обрабатывает транзакции независимо. Такая архитектура снижает нагрузку на валидаторов и позволяет системе поддерживать высокую производительность без использования централизованных служб последовательности или доверенных посредников.
Эффективное выполнение и согласование зависят от высокопроизводительной системы управления состоянием. В Monad эту роль выполняет MonadDB, уровень хранения состояния блокчейна. MonadDB отвечает за хранение всех данных on-chain, включая балансы счетов, хранение контрактов и другие постоянные переменные состояния. Он разработан для быстрой, параллельной работы и полной совместимости с параллельным исполнительным механизмом Monad.
MonadDB использует версионное постоянное хранилище ключ-значение, что позволяет ему поддерживать несколько снимков состояния одновременно. Это необходимо для поддержки спекулятивного выполнения, где несколько транзакций обрабатываются параллельно и могут быть откачены или откорректированы в зависимости от конфликтов. Храня разные версии состояния, MonadDB позволяет движку выполнения изолировать и эффективно разрешать конфликты данных.
В своей основе MonadDB использует структуру данных Merkle Patricia Trie - криптографически безопасное дерево, которое позволяет быструю верификацию состояния блокчейна. Эта структура trie обеспечивает, что любое изменение в состоянии приводит к новому корневому хешу, который может быть проверен всеми узлами. Он поддерживает бесдоверческую синхронизацию, легких клиентов и верификацию состояния на основе доказательств, которые являются основополагающими для безопасного и масштабируемого проектирования блокчейна.
Для обработки ожидаемого объема транзакций MonadDB разработан для низкой задержки чтения и записи. Он включает кэширование, безопасные контроли доступа к параллельным процессам и высокоскоростное дисковое хранилище для быстрого извлечения и изменения записей состояния. Эти оптимизации позволяют слою исполнения работать с высокой пропускной способностью без замедления из-за задержек доступа к данным.
С точки зрения разработчика, MonadDB полностью абстрагирована. Разработчики смарт-контрактов взаимодействуют с блокчейном через знакомые конструкции Solidity, без необходимости управлять основными механизмами состояния. MonadDB гарантирует, что состояние обновляется и хранится точно, даже при высокой нагрузке или во время выполнения сложных контрактов.