Byzantine Fault Tolerance: маловідома особливість блокчейну

Фото - Byzantine Fault Tolerance: маловідома особливість блокчейну
Візантійська відмовостійкість — здатність блокчейна функціонувати в ситуаціях, коли деякі комп’ютерні вузли зникають з мережі або намагаються пошкодити систему в цілому.
Мета BFT — запобігти збоям у ланцюжку блоків за допомогою рішення, прийнятого справними та надійними нодами, незважаючи на наявність шкідливих вузлів. Без візантійської відмовостійкості невірні та небезпечні транзакції можуть бути записані в блокчейн, що загрожує безпеці даних.

Byzantine Fault Tolerance використовується не лише в розподілених реєстрах, але й у пристроях двигунів літаків, атомних електростанцій та інших механізмах, працездатність яких пов'язана з великою кількістю приладів.

Проблема візантійських генералів

Термін походить від логічної задачі, яка називається “Проблемою візантійських генералів”. Вона пояснюється в статті Microsoft Research від 1982 року. Гіпотетична головоломка була розроблена, щоб проілюструвати складність ситуації, у якій комп’ютерні вузли повинні досягти спільного консенсусу.
Уявіть собі чотирьох полководців пізньої античності, які повинні дійти згоди, щоб захопити ворожу фортецю. Оскільки вони знаходяться в різних місцях, тому можуть спілкуватися лише через гінців.

Генерали не можуть бути повністю впевненими у достовірності інформації, яку вони отримують. Можливо, їм передають неправдиві дані помилково або один із них зрадник.

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

Як алгоритми консенсусу пов'язані з BFT?

BFT досягається за допомогою алгоритмів консенсусу (і не тільки *), які є набором правил і умов, що повинні виконуватися для того, щоб транзакції були записані в блокчейн. Це дозволить максимально убезпечити блокчейни та вирішити проблему візантійських генералів.

Наприклад, у першому алгоритмі консенсусу Proof-of-Work (доказ роботи) згода вузлів відбувається після того, як один із майнерів першим вирішить складне зашифроване рівняння. Тоді його вузол стає валідатором, перевіряє транзакції та додає їх до блокчейну, а користувач отримує за це винагороду. 

Найпоширеніший механізм Proof-of-Stake має інші умови для досягнення консенсусу. Учасники такої мережі  повинні покласти свої токени на стейкінг, щоб мати право на підтвердження транзакції. Чим більше коштів заблоковано, тим більше шансів додати блок у ланцюжок та отримати додаткові токени за підтримку блокчейну. 

Існує багато інших механізмів, за допомогою яких вузли досягають згоди між собою. Читайте про них у нашій статті «Екзотичні алгоритми консенсусу».


*Цифрові підписи, обмеження взаємодій між розподіленими вузлами теж дозволяють досягти візантійської відмовостійкості.

Що таке практична візантійська відмовостійкість?

Practical Byzantine Fault Tolerance (pBFT) — алгоритм консенсусу, створений наприкінці 90-х і часто використовується як доповнення до блокчейнів нового покоління. Він розроблений для систем без обмеження часу для відповіді на запити. Цей механізм має високу швидкість досягнення консенсусу та пов'язаний з попередніми напрацюваннями візантійської відмовостійкості. pBFT має головний вузол та другорядні, які працюють на загальний результат.


Byzantine Fault Tolerance як практичний алгоритм працює наступним чином:

?️ Транзакція відправляється до головного вузла.
?️ Він передає її другорядним вузлам.
?️ Всі разом вони обробляють запит і надсилають відповідь системі.
?️ Транзакція підтверджується, коли мережа отримує більше однієї третини однакових рішень від різних вузлів.

Головна нода іноді замінюється. Якщо вона не відповідає на запит клієнта, замість неї працює спеціальний протокол. Як правило, другорядні вузли можуть шляхом голосування замінити основний сервер на більш відповідний на їхню думку. 

Практичну візантійську відмовостійкість використовують у своїй архітектурі такі блокчейни, як Hyperledger, Cosmos, Minter, Zilliqa.