Визначення

Turbine — це протокол розповсюдження блоків у мережі Solana, який розбиває кожен блок на дрібні пакети даних і передає їх паралельно через деревоподібну топологію з'єднань між валідаторами. Саме Turbine дозволяє мережі поширювати великі блоки за сотні мілісекунд замість секунд або хвилин, як це відбувається в мережах із послідовною передачею.

Як працює

Коли лідер поточного слоту формує блок, Turbine виконує кілька послідовних кроків:

  • Фрагментація. Блок розбивається на пакети фіксованого розміру (зазвичай до 64 КБ). Це дозволяє передавати дані дрібними порціями, які швидко проходять навіть через вузли з обмеженим каналом.
  • Формування дерева передачі. Усі активні валідатори на момент передачі розподіляються на кола (tiers). Лідер передає різні пакети різним валідаторам першого кола. Ті, у свою чергу, пересилають отримані пакети валідаторам другого кола — і так далі, утворюючи розгорнуте дерево (spanning tree).
  • Паралельна доставка. Кожен валідатор отримує не весь блок, а лише певну частину пакетів. Завдяки цьому передача відбувається паралельно на багатьох гілках дерева одночасно.
  • Відновлення втрачених пакетів. Якщо валідатор не отримав якийсь пакет, він запитує його у сусідів по дереву через механізм повторної передачі (retransmission). Це гарантує, що кожен валідатор зрештою збере повний блок.

Такий підхід зменшує час розповсюдження блоку з лінійного (де кожен наступний вузол чекає на попередній) до логарифмічного відносно кількості валідаторів.

Приклад

Уявіть блок розміром 1 МБ, який потрібно доставити 1000 валідаторам. У класичній моделі лідер відправляв би весь мегабайт кожному вузлу послідовно — це створювало б велике навантаження на вихідний канал лідера та суттєво затримувало процес. З Turbine блок ділиться приблизно на 16 пакетів. Лідер передає різні пакети різним валідаторам першого кола (наприклад, 16 вузлів). Кожен із них пересилає свій пакет своїм підлеглим у другому колі, і так далі по дереву. У результаті жоден вузол не передає весь блок цілком, а лідер витрачає час лише на передачу 16 пакетів першому колу.

Типова помилка

Поширена помилка — плутати Turbine з Gulf Stream і вважати, що це один і той самий механізм. Turbine відповідає виключно за розповсюдження уже сформованого блоку між валідаторами після того, як лідер його зібрав. Gulf Stream — це окремий протокол, який працює на попередньому етапі: він доставляє окремі транзакції від користувачів до поточного лідера. Це різні етапи життєвого циклу даних у мережі, і кожен із них вирішує своє завдання.

Пов'язані матеріали

Внутрішні переходи

  • Fork — попередній термін словника. Розкриває поняття розгалуження ланцюжка, що безпосередньо пов'язане з тим, як валідатори обробляють блоки, отримані через Turbine.
  • Gulf Stream — наступний термін словника. Описує протокол передавання транзакцій до лідера, який логічно доповнює Turbine на попередньому етапі обробки даних.