Что такое параллельное выполнение

Фото - Что такое параллельное выполнение
С ноября 2023 года по январь 2024 стоимость токена SEI увеличилась в 5,7 раза. Одной из причин такого роста мог стать революционный подход к обработке транзакций, используемый в Sei — параллельное выполнение.
Параллельное выполнение — это одновременная обработка нескольких транзакций или операций вместо того, чтобы обрабатывать их одну за одной. Такой подход напоминает оплату товаров в продуктовом магазине, где вместо одной кассы, размещается несколько. Это позволяет обслуживать большее количество посетителей, что также уменьшает время ожидания каждого из них.
Аналогия параллельного выполнения транзакций: одна касса против трех. Источник: medium.com

Аналогия параллельного выполнения транзакций: одна касса против трех. Источник: medium.com

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

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

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

Модели параллельного выполнения

Большинство блокчейнов с параллельным выполнением основаны на следующих моделях:

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

Примерами блокчейнов, которые используют модель доступа к состоянию, являются: Solana, Sei v1 и Sui, а примерами оптимистической модели — Aptos, Monad и Sei v2.

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

Solana

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

Представьте систему хранения данных, в которой каждая транзакция запрашивает доступ к определенному файлу:

  • если запросы не переплетаются, транзакции обрабатываются независимо друг от друга;
  • если транзакции запрашивают доступ к одному и тому же файлу, транзакции требуют координации.

Каждая транзакция объявляет ту часть блокчейна, к которой планирует получить доступ. Это требование включено в модель исполнения транзакций Sealevel, которая наряду с алгоритмом консенсуса Proof of History (PoH) обеспечивает параллельное выполнение в блокчейне Solana.

Sei

Sei — это блокчейн первого уровня, построенный на базе Cosmos SDK (комплект для разработки ПО) и платформы смарт-контрактов CosmWasm. Он использует делегированную архитектуру, распределяя функции блокчейна по трем уровням: 

  • уровень приложений — исполнение логики приложений и обработка транзакций;
  • уровень консенсуса — позволяет всем участникам сети достичь согласия относительно состояния блокчейна;
  • сетевой уровень — отвечает за распространение транзакций внутри блокчейна.

Для обеспечения параллельного выполнения транзакций Sei использует настраиваемость Cosmos, улучшая возможности стандартного Cosmos SDK. Особенности Sei: консенсус Twin-Turbo и механизм распараллеливания.

Консенсус Twin-Turbo

Консенсус Twin-Turbo определяется двумя элементами: интеллектуальным распределением и оптимистичной обработкой блоков. Эти функции работают совместно, упрощая исполнение транзакций и подтверждение блоков.

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

Валидаторы аналогично отправляют блоки, содержащие информацию о транзакциях. Поскольку участники консенсуса постоянно обмениваются операционными данными, большинство из них уже обладает необходимой информацией о транзакциях. Это означает, что валидаторы теряют время, ожидая получение транзакций, которые уже есть в их мемпуле.
Предложение блоков без интеллектуального распространения. Источник: twitter.com

Предложение блоков без интеллектуального распространения. Источник: twitter.com

Теперь Анна отправляет Алексу только название книги, которую она читает. Парень проверяет ее наличие в своей библиотеке и, в случае ее отсутствия, запрашивает у Анны копию произведения.

Аналогично валидаторы отправляют предложение, которое содержит лишь хеш транзакций. Когда другие участники сети получают подобное предложение, они используют транзакции из мемпула, чтобы восстановить блок в своем состоянии блокчейна (библиотека по аналогии с книгами). 
Интеллектуальное распространение блоков. Источник: twitter.com

Интеллектуальное распространение блоков. Источник: twitter.com

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

Оптимистичная обработка блоков. После того как блок был предложен и распространен среди валидаторов, они отправляют друг другу сообщения prevote и precommit. Такой подход помогает согласованию именно того блока, который они хотят добавить в блокчейн.

После precommit валидаторы проверяют каждую из транзакций внутри блока. Однако при большом количестве данных этот этап занимает много времени и ресурсов. 
Обычная обработка блоков против оптимистичной. Источник: github.com

Обычная обработка блоков против оптимистичной. Источник: github.com

Вместо этого валидаторы продолжают обрабатывать другие операции в блокчейне, применяя их к временному “состоянию-кандидату”. Если предложенный блок будет согласован — состояние-кандидат также будет принято. В противном случае оно отбрасывается.

Механизм распараллеливания v1

Sei использует Cosmos SDK — “операционную систему” для блокчейнов внутри экосистемы Cosmos. Когда узлы получают блок транзакций, они начинают процесс их валидации, который состоит из трех частей: BeginBlock, DeliverTx и EndBlock. Последние две части Sei адаптировал для параллельного исполнения.

DeliverTx. Традиционно во время DeliverTx транзакции обрабатываются последовательно. Sei меняет этот подход, обеспечивая параллельное исполнение.

Чтобы избежать неопределенности (сценариев, при которых результат некоторых процессов нежелателен для одновременного выполнения), Sei фильтрует транзакции на те, которые могут исполняться параллельно, и те, что последовательно. Для этого он сегментирует операции по типу и данным, которые они выполняют.

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

На этапе EndBlock Sei объединяет ордера на покупку и продажу актива. Вместо последовательной обработки этих заказов Sei фильтрует независимые транзакции и проверяет их параллельно в конце блока. 

Ордера считаются независимыми, если они не влияют на один и тот же рынок внутри одного блока.
Обработка блоков в Sei с и без распараллеливания. Источник: github.com

Обработка блоков в Sei с и без распараллеливания. Источник: github.com

Механизм распараллеливания v2

29 ноября 2023 года команда проекта анонсировала выход Sei v2, первого параллельного EVM, который объединяет в себе лучшее от Solana и Ethereum. В новую версию были добавлены:

  1. EVM-совместимость.
  2. Оптимистическая параллелизация.
  3. SeiDB.

Только второе обновление повлияло на параллельное выполнение транзакций в Sei. Поэтому вместо изучения каждого из трех улучшений сконцентрируемся лишь на оптимистической параллелизации.

В первой версии Sei разработчикам приходилось самостоятельно находить зависимость транзакций, что уменьшало производительность сети. В Sei v2 используется оптимистический подход, который предполагает, что все транзакции — независимы и обрабатываются параллельно.
Принцип работы оптимистической параллелизации в Sei v2. Источник: twitter.com

Принцип работы оптимистической параллелизации в Sei v2. Источник: twitter.com

Когда появляются конфликтующие транзакции, затрагивающие одни и те же части хранилища, Sei выполняет следующие действия:

  • выявляет конфликт. Система определяет, к каким частям хранилища та или иная транзакция пытается получить доступ;
  • обрабатывает транзакции. После выявления конфликтующих операций начинается их последовательное выполнение.

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

Другие блокчейны с параллельным выполнением

Sui. Транзакции Siu изменяют атрибуты объектов, которые могут быть активами или смарт-контрактами. Если транзакция определена как независимая (то есть никакая другая транзакция не взаимодействует с целевым объектом), она обходит механизм консенсуса.

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

Monad. Ориентированный на производительность блокчейн первого уровня, который совместим с Ethereum. Аналогично Aptos, Monad использует принцип оптимистического выполнения, предполагая, что транзакции не связаны между собой и обращаясь к зависимостям по мере их возникновения.

Пишет о DeFi и криптовалютах через призму технологий.