Паралельне виконання транзакцій: одна каса проти трьох. Джерело: medium.com
Паралельне виконання використовується для одночасної обробки непов'язаних транзакцій, тобто подій, які не впливають одна на одну. Наприклад, якщо двоє користувачів торгують токенами на різних торгових платформах, їхні транзакції можуть оброблятися одночасно. Але якщо вони торгують на одному майданчику — цей процес відбувається послідовно.
Складність реалізації паралельного виконання полягає у визначенні незалежних транзакцій. Це передбачає розуміння того, як кожна операція впливає на стан блокчейну. За наявності великої кількості взаємопов’язаних застосунків визначити такі транзакції стає важче.
Моделі паралельного виконання
- Модель доступу до стану — підхід, за якого транзакції, що мають доступ до тієї чи іншої частини стану блокчейну, визначаються заздалегідь. Це дає змогу розрізняти незалежні та залежні операції.
- Оптимістична модель — підхід, який передбачає, що всі транзакції у блокчейні є незалежними. Коригування залежностей відбувається вже після їх виявлення.
Прикладами блокчейнів, які використовують модель доступу до стану, є Solana, Sei v1 і Sui, а прикладами оптимістичної моделі — Aptos, Monad і Sei v2.
Solana
- якщо запити не переплітаються, транзакції обробляються незалежно одна від одної;
- якщо транзакції вимагають доступ до одного файлу, вони потребують координації.
Кожна транзакція вказує ту частину блокчейну, до якої планує отримати доступ. Ця вимога включена до моделі виконання транзакцій Sealevel, яка разом з алгоритмом консенсусу Proof of History (PoH) забезпечує паралельне виконання у блокчейні Solana.
Sei
- Рівень програм — виконання логіки застосунків та обробка транзакцій.
- Рівень консенсусу — дозволяє всім учасникам мережі дійти згоди щодо стану блокчейну.
- Мережевий рівень — відповідає за розподіл транзакцій всередині блокчейну.
Для забезпечення паралельного виконання транзакцій Sei використовує налаштовуваність Cosmos, поліпшуючи можливості стандартного Cosmos SDK. Особливості Sei: консенсус Twin-Turbo та механізм розпаралелювання.
Консенсус Twin-Turbo
Інтелектуальне розподілення блоків. Уявіть ситуацію, де Анна та Алекс мають власні домашні бібліотеки. Коли Анна надсилає Алексу книжку для читання, здебільшого така сама книжка вже є в його бібліотеці. Цей підхід є трудомістким та обтяжливим.
Валідатори аналогічно відправляють блоки, що містять інформацію про транзакції. Оскільки учасники консенсусу постійно обмінюються операційними даними, більшість із них вже має необхідну інформацію про транзакції. Це означає, що валідатори втрачають час, очікуючи отримання транзакцій, які вже є в їхньому мемпулі.
Пропозиція блоків без інтелектуального розподілення. Джерело: twitter.com
Аналогічно валідатори надсилають пропозицію, яка містить лише хеш транзакцій. Коли інші учасники мережі отримують таку пропозицію, вони використовують транзакції з мемпулу, щоб відновити блок у своєму стані блокчейну (подібно до перевірки бібліотеки на наявність книжок).
Інтелектуальне розподілення блоків. Джерело: twitter.com
Оптимістична обробка блоків. Після того як блок був запропонований і поширений серед валідаторів, вони надсилають один одному повідомлення prevote та precommit. Такий підхід допомагає погодити саме той блок, який вони хочуть додати у блокчейн.
Після precommit валідатори перевіряють кожну транзакцію всередині блоку. Однак за великої кількості даних цей етап потребує багато часу та ресурсів.
Звичайна обробка блоків проти оптимістичної. Джерело: github.com
Механізм розпаралелювання v1
DeliverTx. Традиційно під час DeliverTx транзакції обробляються послідовно. Sei змінює цей підхід, забезпечуючи паралельне виконання.
Щоб уникнути невизначеності (сценаріїв, за яких результат певних процесів не бажаний для одночасного виконання), Sei фільтрує транзакції на ті, які можуть виконуватися паралельно, і ті, що відбуваються послідовно. Для цього він сегментує операції за типом і даними, які вони виконують.
EndBlock. Sei надає послуги у фінансовому секторі, тому транзакції всередині блокчейну можна поділити на купівлю та продаж, а платформи для їх виконання — на ринки.
На етапі EndBlock Sei об'єднує ордери на купівлю та продаж активу. Замість послідовної обробки цих замовлень Sei фільтрує незалежні транзакції та перевіряє їх паралельно наприкінці блоку.
Ордери вважаються незалежними, якщо вони не впливають на той самий ринок всередині одного блоку.
Обробка блоків у Sei з розпаралелюванням і без нього. Джерело: github.com
Механізм розпаралелювання v2
- EVM-сумісність.
- Оптимістична паралелізація.
- SeiDB.
Лише друге оновлення вплинуло на паралельне виконання транзакцій у Sei. Тому замість вивчення кожного з трьох поліпшень сконцентруємося тільки на оптимістичній паралелізації.
Принцип роботи оптимістичної паралелізації у Sei v2. Джерело: twitter.com
- виявляє конфлікт — система визначає, до яких частин сховища та чи інша транзакція намагається отримати доступ;
- обробляє транзакції — після виявлення операцій, що конфліктують, починається їх послідовне виконання.
Цей процес повторюється, доки не будуть розв'язані усі конфлікти. Тільки тоді Sei зможе продовжити обробляти наступні транзакції.
Інші блокчейни з паралельним виконанням
Aptos. Aptos використовує принцип оптимістичного виконання. Однак, на відміну від Sei v2, цей блокчейн автоматично визначає залежність транзакцій у разі конфліктів. Водночас не вимагає від транзакцій вказувати, на яку частину стану блокчейну вони впливають.
Monad. Орієнтований на продуктивність блокчейн першого рівня, який сумісний з Ethereum. Аналогічно до Aptos, Monad використовує принцип оптимістичного виконання, припускаючи, що транзакції не пов'язані між собою, та розглядає залежності в міру їх виникнення.
Паралельне виконання у обчисленнях означає одночасне виконання декількох процесів або потоків для покращення продуктивності та ефективності системи. Ця техніка є важливою у сучасних обчисленнях для використання потужності багатоядерних процесорів, що дозволяє розподіляти задачі та обробляти їх одночасно. За допомогою паралельного виконання системи можуть одночасно обробляти більше задач, зменшувати затримку та збільшувати пропускну здатність. Паралельне виконання широко застосовується у високопродуктивних обчисленнях, обробці великих даних та системах реального часу. Ключовими поняттями, пов'язаними з паралельним виконанням, є багатозадачність, балансування навантаження, синхронізація та паралельні алгоритми.