Узгодження рішень в умовах зради

У світі блокчейну існує багато алгоритмів консенсусу, які забезпечують безпеку та цілісність розподілених систем. Одним із ключових є Practical Byzantine Fault Tolerance (PBFT) — алгоритм, що дозволяє мережі досягати консенсусу навіть у присутності зловмисників. У цій статті ми розглянемо, як працює PBFT, його переваги та недоліки, а також приклади застосування в блокчейн-технологіях.
Проблема Візантійських Генералів
The Byzantine Generals’ Problem (BGP) — це уявний експеримент, який був сформульований Леслі Лампортом (Leslie Lamport), Маршалом Пізом (Marshall Pease) та Робертом Шостаком (Robert Shostak) у 1982 році. Він описує проблему досягнення узгодженості в умовах, коли частина учасників може бути ненадійною або діяти зловмисно.
Суть проблеми полягає в тому, що кілька армійських генералів, розташованих у різних місцях навколо ворожого міста, повинні ухвалити спільне рішення — атакувати чи відступати. При цьому зв’язок між ними здійснюється через посильних, які можуть бути зрадниками та передавати хибну інформацію. Генерали можуть довіряти лише перевіреним повідомленням, але навіть у такому разі складно гарантувати узгоджене рішення.
Ця проблема є основою для досліджень у розподілених системах, включаючи блокчейн, де вузли повинні досягати єдиного рішення навіть за наявності зловмисників. PBFT був розроблений як практичне рішення для цієї задачі.
❓ Що таке PBFT?
Practical Byzantine Fault Tolerance (PBFT) — це алгоритм консенсусу, розроблений для розподілених систем, що здатний функціонувати за умов, коли частина учасників (вузлів) поводиться неправильно або навмисно зловмисно. Його було запропоновано у 1999 році Мігелем Кастро (Miguel Castro) і Барбарою Лісков (Barbara Liskov).
PBFT є покращеним варіантом класичної візантійської відмовостійкості (Byzantine Fault Tolerance, BFT), що робить його практичним для реальних застосувань. Основна ідея PBFT — узгодження дій між вузлами за допомогою голосування та підтвердження коректності операцій більшістю учасників.
Як працює PBFT?
PBFT працює у кілька раундів, де вузли мережі взаємодіють між собою для досягнення консенсусу. Основні етапи:

- Request (Запит)
Клієнт надсилає запит лідеру (первинному вузлу) для виконання певної операції. - Pre-prepare (Попередня підготовка)
Лідер розсилає повідомлення про отриманий запит всім іншим вузлам (реплікам). - Prepare (Підготовка)
Репліки підтверджують отримання запиту, обмінюючись повідомленнями між собою. - Commit (Підтвердження)
Якщо репліка отримала достатньо підтверджень (від 2/3 учасників), вона приймає рішення про виконання операції. - Reply (Відповідь)
Репліки надсилають відповідь клієнту.
Для коректної роботи алгоритму необхідно, щоб у системі було не більше ніж (n-1)/3 зловмисних вузлів, де n — загальна кількість учасників.
🕵 Якщо лідер скомпрометований
Якщо primary (лідер) був скомпрометований, протокол передбачає механізм View Change (зміни виду) для заміни порушеного лідера та забезпечення стабільності системи.
Лідер вважається скомпрометованим, якщо він:
- Пропонує конфліктуючі блоки різним вузлам (подвійне підписання).
- Надсилає недійсні або змінені транзакції.
- Не пропонує блоки або не відповідає на запити, що викликає затримки в досягненні консенсусу.
- Колаборує з шкідливими вузлами для порушення консенсусу.
Вузли можуть виявити скомпрометованого лідера, коли:
- Вони отримують несумісні повідомлення (наприклад, різні блоки для одного й того самого номера).
- Лідер не пропонує блок протягом розумного часу (активується механізм тайм-ауту).
- Лідер систематично не погоджується з більшістю без вагомих підстав.
🔄 Процес зміни виду (View Change)
Коли супербільшість (зазвичай більше ⌊(n-1)/3⌋ + 1 вузлів) погоджується, що лідер порушив правила, вони ініціюють зміну виду.
1. Запит на зміну виду
- Чесні вузли надсилають повідомлення про зміну виду, що вказує на порушення лідером консенсусу.
- Повідомлення містить останній підтверджений стан блокчейну для забезпечення безперервності.
2. Вибір нового лідера
- Новий лідер вибирається детермінованим чином (наприклад, за круговою схемою чи визначеним порядком).
- Новий лідер збирає повідомлення про зміну виду та готує новий стан.
3. Оголошення нового виду
- Новий лідер надсилає повідомлення нового виду, що доводить, що він отримав достатню кількість запитів на зміну виду.
- Вузли перевіряють, що новий лідер діє правильно, перед тим як прийняти його.
4. Відновлення консенсусу
- Протокол продовжує працювати з новим лідером.
- Старий, скомпрометований лідер ігнорується, якщо тільки він не відновить довіру.
🔐 Стратегії мінімізації компрометації лідера
1. Випадковий вибір лідера
- Замість кругового вибору деякі варіанти PBFT використовують випадковість (наприклад, вибір на основі VRF), щоб запобігти передбачуваному вибору лідера.
2. Порогова криптографія
- Це дозволяє переконатися, що лідер не може діяти зловмисно без схвалення більшості.
3. Механізми штрафів та репутації
- Шкідливі лідери можуть зазнавати штрафів (наприклад, економічних штрафів у варіантах PBFT, які використовують токени).
4. Резервні лідери (зами)
- Призначення резервних лідерів, які можуть замінити основного лідера в разі його компрометації, щоб уникнути затримок.
Якщо лідер скомпрометований, механізм зміни виду (View Change) у PBFT забезпечує вибір нового лідера, що дозволяє зберегти правильність і безпеку мережі. Цей процес дозволяє системі витримати до (n-1)/3 шкідливих вузлів без втрати працездатності.
⛓️ Використання PBFT в існуючих блокчейн проектах
PBFT використовується в деяких корпоративних та приватних блокчейн-рішеннях, таких як:
- Hyperledger Fabric
блокчейн-платформа для бізнесу, що використовує варіації PBFT. - Zilliqa
блокчейн із шардингом, де PBFT застосовується для швидкого підтвердження транзакцій. - Tendermint
основа Cosmos Network, яка використовує модифіковану версію PBFT для безпечного консенсусу.
Висновки
✅ Переваги PBFT
- Висока швидкість підтвердження
Оскільки PBFT не потребує складних обчислень (на відміну від Proof-of-Work), він дозволяє досягати консенсусу швидше. - Енергоефективність
Відсутність необхідності в майнінгу робить PBFT значно менш енергозатратним у порівнянні з PoW. - Низька затримка
Консенсус досягається за декілька раундів комунікації між вузлами, що зменшує час обробки транзакцій. - Відмовостійкість
PBFT спеціально розроблений як алгоритм з високою толерантністю до відмов вузлів, що критично для блокчейн-систем. - Фінальність транзакцій
На відміну від PoW і PoS, де фінальність є ймовірнісною, у PBFT підтверджені транзакції не можуть бути скасовані.
⁉️ Недоліки PBFT
- Низька масштабованість
PBFT не підходить для великих мереж, оскільки кожен вузол має обмінюватися повідомленнями з усіма іншими, що створює значне навантаження. - Потреба у довірених вузлах
У PBFT важливо, щоб кількість чесних учасників перевищувала кількість зловмисників, що може бути проблемою у відкритих мережах. - Централізація
PBFT використовує лідер-вузол для визначення наступного блоку в блокчейні, що створює певний рівень централізації, що може суперечити принципам блокчейну. - Навантаження на мережу
Велика кількість комунікацій між вузлами створює високе навантаження на пропускну здатність мережі. - Сибіл-атаки
PBFT ухвалює рішення на основі голосів вузлів. Якщо зловмисник контролює багато вузлів, він може впливати на затвердження шкідливих блоків.
Practical Byzantine Fault Tolerance є ефективним алгоритмом для досягнення консенсусу в умовах недовіри, особливо в приватних блокчейнах та корпоративних рішеннях. Він забезпечує швидке підтвердження транзакцій та енергоефективність, але має проблеми з масштабованістю. У майбутньому можливі гібридні моделі, які поєднують PBFT з іншими алгоритмами для забезпечення безпеки та ефективності в масштабних блокчейн-мережах.

4 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарів