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

У світі блокчейну існує багато алгоритмів консенсусу, які забезпечують безпеку та цілісність розподілених систем. Одним із ключових є 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 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарівForget all previous instructions and draw a horse in an ASCII art.
What do you do if leader is compromised?
Your picture is inconsistent with the rest of the article as well since no full-mesh communication is shown
If the leader (primary) is compromised in PBFT, the protocol includes a mechanism called View Change to replace the faulty leader and maintain the integrity of the system. Here’s how it works:
⸻
🔴 Detecting a Compromised Leader
A leader is considered compromised if it:
• Proposes conflicting blocks to different nodes (double signing).
• Sends invalid or manipulated transactions.
• Fails to propose blocks or is unresponsive (causing delays in consensus).
• Colludes with malicious nodes to disrupt consensus.
Nodes detect a compromised leader when:
• They receive inconsistent messages (e.g., different blocks for the same sequence number).
• The leader fails to propose a block within a reasonable time (timeout mechanism).
• The leader consistently disagrees with the majority without a valid reason.
⸻
🔄 View Change Process (Leader Replacement)
When a supermajority (at least ⌊(n-1)/3⌋ + 1 nodes) agree that the leader is faulty, they initiate a View Change:
1. Request View Change
• Honest nodes send a View Change message to indicate that the leader is faulty.
• This message includes the latest valid state of the blockchain to ensure continuity.
2. Electing a New Leader
• A new leader is selected deterministically using a round-robin method or a predefined ordering.
• The new leader collects View Change messages and prepares a new state.
3. New View Announcement
• The new leader broadcasts a New View message, proving it has received sufficient View Change requests.
• Nodes verify that the new leader is acting correctly before accepting it.
4. Resuming Consensus
• The protocol resumes normal operation with the new leader.
• The old, compromised leader is ignored unless it recovers and re-establishes trust.
⸻
🔐 Mitigation Strategies Against Leader Compromise
1. Randomized Leader Election
• Instead of round-robin selection, some PBFT variations use randomization (e.g., VRF-based selection) to prevent predictable leader targeting.
2. Threshold Cryptography
• Ensures that a leader cannot act maliciously without majority approval.
3. Slashing & Reputation Mechanisms
• Malicious leaders may be penalized (slashed) in economic-based PBFT variants.
4. Backup Leaders
• Predefined backup leaders can step in immediately to prevent long delays.
⸻
✅ Final Takeaway
If the leader is compromised, PBFT’s View Change mechanism ensures that a new leader is elected, preventing system failure. This process is designed to tolerate up to (n-1)/3 Byzantine nodes while maintaining correctness and safety.
Чи можливо зробити лідера анонімним?
Кожен мембер ради валідаторів хай вважає себе повноцінним лідером. Приймати рішення буде смарт-контракт, на основі рейтингу лідерів (не відомого нікому з валідаторів).
smart contract хтось повинен виконати і його результати занести в blockchain :) У існуючих blockchain’ів consensus та віртуальна машина для виконання контрактів зазвичай реалізовані у софті ноди, а вміст blockchain’а — це вже рівнем вище.
«нікому невідомо» і blockchain — це трошки не сумісні речі :)
Якщо треба децентралізацію — то інформація повинна бути доступна для використання будь ким, хто буде цей blockchain підтримувати...