Визначення

Tower BFT — це алгоритм консенсусу мережі Solana, який визначає канонічну гілку блоків за умови, коли валідатори не можуть одразу досягти згоди. Це адаптація класичного протоколу pBFT (Practical Byzantine Fault Tolerance), оптимізована для роботи з криптографічним годинником Proof of History. Назва походить від ключової метафори протоколу: кожен валідатор послідовно будує «вежу» своїх голосів, і саме висота цієї вежі визначає його вагу при виборі правильної гілки.

Як працює

Tower BFT вирішує одну завдання: коли мережа тимчасово роздвоюється, яка гілка має стати остаточною? Алгоритм відповідає на це питання через чотири механізми.

Голосування через підпис PoH-хешів. Замість того, щоб обмінюватися окремими повідомленнями про кожен блок, валідатор підписує хеш Proof of History відповідного слота. Цей підпис є одночасно голосом і доказом того, що валідатор знає точний порядок подій.

Механізм пропуску (skip). У класичному pBFT кожен валідатор повинен проголосувати за кожний блок, що створює O(n²) мережевий трафік. Tower BFT дозволяє валідатору пропустити слоти, за які він не встиг проголосувати, і одразу підписати пізніший хеш. Це різко зменшує навантаження на мережу, але скидає висоту вежі цього валідатора — він втрачає накопичену вагу і починає будувати вежу знизу.

Зростаючий період блокування (lockout). Після голосування за блок на висоті h валідатор не може голосувати за конкуруючий блок на тій самій висоті. Чим вище вежа, тим довший період блокування — він зростає експоненційно. Це ускладнює подвійне голосування і робить відкат гілки дорожчим.

Вибір гілки (fork choice). Мережа обирає гілку з найбільшою сумарною вагою веж усіх валідаторів, де вага кожного голосу пропорційна стейку валідатора. Гілка, що набрала голоси більш ніж двох третин загального стейку, вважається фіналізованою.

Приклад

Мережа тимчасово роздвоїлась: частина валідаторів побачила блок у слоті 100, інша частина — конкуруючий блок у тому ж слоті. Валідатори зі стейком 60% підписали хеш слота 100 для гілки A, 30% — для гілки B, 10% ще не проголосували. Оскільки сумарна вага веж у гілці A більша, валідатори, які ще не визначились, приєднаються до неї. Гілка B відкидається, а блоки в ній стають осиротілими.

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

Вважати, що Tower BFT замінює Proof of History або виконує ту саму функцію. Це дві різні завдання: Proof of History впорядковує події в часі і дає спільний часомір, а Tower BFT використовує цей часомір, щоб вирішити, яка гілка блоків є правильною, коли виникає розбіжність. Без PoH-хешів Tower BFT не міг би реалізувати механізм пропуску і змушений був би працювати як класичний pBFT із високим мережевим навантаженням.

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

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

  • Proof of History — криптографічний годинник, який робить можливим механізм пропуску в Tower BFT
  • Firedancer — альтернативна реалізація валідатора, яка зберігає сумісність із протоколом Tower BFT

Джерела