Byzantine fault tolerance: Difference between revisions

From Decimal Wiki
Jump to navigation Jump to search
[unchecked revision][checked revision]
(Created page with "<div class="mikio-article-content"> <div class="mikio-tags"> </div> <span id="vizantijskaja_otkazoustojchivost_bft"></span> = Византийская отказоустойчивость (BFT) = <div class="level1"> '''«Византийская отказоустойчивость»''' (англ. Byzantine fault tolerance) — свойство системы, способной противостоять классу отказов, возникающих из-з...")
 
mNo edit summary
 
(5 intermediate revisions by 3 users not shown)
Line 1: Line 1:
<div class="mikio-article-content">
{{#seo:
                    |title= Byzantine Fault Tolerance (BFT) — Decimal Wiki
                    |titlemode= append
                    |keywords= Byzantine Fault Tolerance (BFT)
                    |description= Byzantine Fault Tolerance (BFT)
                    }}
[[File:Art Problem of Byzantine generals.jpg|400px|right|thumb]]
'''Byzantine fault tolerance''' is a property of a system capable of resisting a class of failures arising from the «problems of Byzantine generals». Having «Byzantine fault tolerance», the system can continue to work even if some of the nodes do not function or act maliciously.
The participants of the [[cryptocurrency]] [[network]] need to regularly coordinate the current state of the [[blockchain]]: this is what we call achieving [[consensus]], but what if some of the [[node]]s act dishonestly? This is a fundamental question about the so-called «problem of Byzantine generals», which gave rise to the concept of «Byzantine tolerance» (BFT).


<div class="mikio-tags">
== History ==
[[File:Wiki Problem of Byzantine generals.png|600px|right|thumb|The Problem of Byzantine generals]]
The «Byzantine Generals Problem» was coined in 1982 as a logical dilemma that illustrates how a group of more than two people at a great distance from each other can have communication problems when trying to agree on the next step.
The dilemma assumes that each general has his own army and each group is in different places around the city, intending to attack it. The generals need to agree either to attack or to retreat. The main problem is that messages can somehow be delayed, lost or destroyed. In addition, even if the information is successfully delivered, one or more generals may act (for whatever reason) maliciously and send a fraudulent message to confuse others, which will lead to a general failure.


== «The task of the Byzantine generals» (original wording) ==
Byzantium. The night before the great battle with the enemy. The Byzantine army consists of N legions, each of which is commanded by its own general. The army also has a commander-in-chief, to whom the generals report.
At the same time, the empire is in decline, and any of the generals and even the commander-in-chief may be traitors to Byzantium, interested in its defeat.
At night, each of the generals receives an order from the commander-in-chief, what to do at 10 o’clock in the morning (the time is the same for everyone and is known in advance). Variants of the order are «attack the enemy» or «retreat».
'''Possible outcomes of the battle:'''
# If all the loyal generals attack, Byzantium will destroy the enemy (a favorable outcome).
# If all the loyal generals retreat, Byzantium will retain its army (intermediate outcome).
# If some loyal generals attack and some retreat, the enemy will eventually destroy the entire Byzantine army in parts (an unfavorable outcome).
It should also be borne in mind that if the commander—in-chief is a traitor, then he can give different generals opposing orders to ensure the destruction of the army. Therefore, the generals need to take into account this possibility and prevent uncoordinated actions.
If each general acts completely independently of the others (for example, makes a random choice), then the probability of a favorable outcome is very low.
Therefore, the generals need to exchange information among themselves in order to come to a common decision.


== Application in blockchain ==
In the context of blockchain, generals are network [[node]]s, and they need to reach [[consensus]] on the current state of the system. In other words, the majority of participants in a distributed network must agree and perform the same action in order to avoid a complete failure. Therefore, the only way to achieve consensus in these types of distributed system is to have (at least ⅔ or more) reliable and honest network nodes. This means that if a large part of the network decides to act maliciously, then the system is prone to error (for example, a 51 % attack).


</div>
== Conclusions ==
<span id="vizantijskaja_otkazoustojchivost_bft"></span>
If there is no «Byzantine fault tolerance» in the network, then a [[peer]] can independently create and confirm false [[transaction]]s, thereby discrediting the entire system. Since there is no regulatory body in the blockchain that could take responsibility to confirm or cancel certain actions to correct or prevent damage, [[decentralization]] would play a negative role.
= Византийская отказоустойчивость (BFT) =
The «Byzantine Generals problem» is a dilemma that gave rise to BPT systems, and now they are widely used in various systems. In addition to the blockchain industry, these are the aviation and space spheres, as well as nuclear energy.
«Byzantine fault tolerance» is being studied by many cryptocurrency startups — [[algorithm]]s are being upgraded and successfully integrated into their own distributed systems.
[[Decimal]], [[Hyperledger]], [[Cosmos Network]], [[Minter]], [[Zilliqa]] — all these and not only projects use «Byzantine fault tolerance» as the main component of their infrastructure.
Effective communication of network nodes and a good consensus mechanism are vital for any blockchain [[ecosystem]]. Existing [[consensus algorithm]]s have yet to overcome several barriers (e.g. scalability). Nevertheless, [[PoW]] and [[PoS]] are very interesting and working approaches to BFT.


<div class="level1">
== See also ==
 
* [[Consensus algorithm]]
'''«Византийская отказоустойчивость»''' (англ. Byzantine fault tolerance) — свойство системы, способной противостоять классу отказов, возникающих из-за «проблем византийских генералов». Обладая «византийской отказоустойчивостью», система может продолжать работать, даже если некоторые из узлов не функционируют или действуют злонамеренно.
   
 
[[Category:Commoninfo]]
Участникам криптовалютной сети необходимо регулярно согласовывать текущее состояние блокчейна: это то, что мы называем достижением [[commoninfo:consensus|консенсуса]] , но что если некоторые из узлов будут действовать нечестно? Это фундаментальный вопрос о так называемой «проблеме византийских генералов», которая породила концепцию «византийской толерантности» (BFT).
[[Category:Crypto security]]
 
[[File:Wiki-zadacha_vizant_generalov.png|400px|class=mediacenter]]
 
 
</div>
<span id="istorija"></span>
== История ==
 
<div class="level2">
 
«Проблема византийских генералов» была придумана в 1982 году как логическая дилемма, которая иллюстрирует, как у группы из более чем двух человек, находящихся на большом расстоянии друг от друга, могут возникать проблемы с коммуникацией при попытке согласиться на следующий шаг.
 
Дилемма предполагает, что у каждого генерала есть своя армия и каждая группа находится в разных местах вокруг города, намереваясь атаковать его. Генералам нужно согласиться либо на атаку, либо на отступление. Главная проблема заключается в том, что сообщения могут как-то задерживаться, теряться или быть уничтоженными. Кроме того, даже если информация успешно доставлена, один или несколько генералов могут поступить (по какой-либо причине) злонамеренно и отправить мошенническое сообщение, чтобы сбить с толку других, что приведёт к общему сбою.
 
 
</div>
<span id="zadacha_vizantijskix_generalov_isxodnaja_formulirovka"></span>
== «Задача византийских генералов» (исходная формулировка) ==
 
<div class="level2">
 
Византия. Ночь перед великим сражением с противником. Византийская армия состоит из N легионов, каждым из которых командует свой генерал. Также у армии есть главнокомандующий, которому подчиняются генералы.
 
В то же время империя находится в упадке, и любой из генералов и даже главнокомандующий могут быть предателями Византии, заинтересованными в её поражении.
 
Ночью каждый из генералов получает от главнокомандующего приказ, как стоит поступить в 10 часов утра (время одинаковое для всех и известно заранее). Варианты приказа — «атаковать противника» или «отступать».
 
'''Возможные исходы сражения:'''
 
1. Если все верные генералы атакуют, Византия уничтожит противника (благоприятный исход). 2. Если все верные генералы отступят, Византия сохранит свою армию (промежуточный исход). 3. Если некоторые верные генералы атакуют, а некоторые — отступят, противник со временем по частям уничтожит всю армию Византии (неблагоприятный исход).
 
Также следует учитывать, что если главнокомандующий — предатель, то он может дать разным генералам противоположные приказы, чтобы обеспечить уничтожение армии. Следовательно, генералам надо учитывать такую возможность и не допускать несогласованных действий.
 
Если же каждый генерал будет действовать полностью независимо от других (например, сделает случайный выбор), то вероятность благоприятного исхода весьма низка.
 
Поэтому генералы нуждаются в обмене информацией между собой, чтобы прийти к единому решению.
 
 
</div>
<span id="primenenie_v_blokchejne"></span>
=== Применение в блокчейне ===
 
<div class="level3">
 
В контексте блокчейна генералы представляют собой сетевые узлы, и им необходимо достичь консенсуса относительно текущего состояния системы. Другими словами — большинство участников в распределённой сети должны согласиться и выполнить одно и то же действие, чтобы избежать полного отказа. Поэтому единственным способом достижения консенсуса в этих типах распределённой системы является наличие (по крайней мере, ⅔ или более) надёжных и честных сетевых узлов. Это означает, что если большая часть сети решает действовать злонамеренно, то система подвержена ошибке (например, атака 51%).
 
 
</div>
<span id="vyvody"></span>
== Выводы ==
 
<div class="level2">
 
Если «византийская отказоустойчивость» отсутствует в сети, то одноранговый узел может самостоятельно создавать и подтверждать ложные транзакции, тем самым дискредитируя всю систему. Так как в блокчейне нет контролирующего органа, который мог бы взять на себя ответственность подтвердить или отменить те или иные действия для исправления или предотвращения ущерба, то децентрализация сыграла бы негативную роль.
 
«Проблема византийских генералов» — это дилемма, которая породила системы BPT, и теперь они широко применяются в различных системах. Помимо индустрии блокчейн, это авиационная и космическая сферы, а также ядерная энергетика.
 
«Византийскую отказоустойчивость» изучают многие криптовалютные стартапы — алгоритмы модернизируют и успешно интегрируют в собственные распределенные системы.
 
Decimal, Hyperledger, Cosmos Network, Minter, Zilliqa — все эти и не только проекты используют «византийскую отказоустойчивость» в качестве основного компонента своей инфраструктуры.
 
 
</div>
<span id="zakljuchenie"></span>
== Заключение ==
 
<div class="level2">
 
Эффективная коммуникация узлов сети и хороший механизм консенсуса имеют жизненно важное значение для любой блокчейн-экосистемы. Существующим алгоритмам консенсуса ещё предстоит преодолеть несколько барьеров (например, масштабируемость). Тем не менее PoW и PoS — очень интересные и рабочие подходы к BFT.
 
 
</div>
<div style="clear:both">
 
 
 
</div>
 
</div>
[[commoninfo:consensus|консенсуса]]  
  [[File:Wiki-zadacha_vizant_generalov.png|400px|class=mediacenter]]  
[[Category::Commoninfo]]

Latest revision as of 12:34, 9 February 2024

Byzantine fault tolerance is a property of a system capable of resisting a class of failures arising from the «problems of Byzantine generals». Having «Byzantine fault tolerance», the system can continue to work even if some of the nodes do not function or act maliciously.

The participants of the cryptocurrency network need to regularly coordinate the current state of the blockchain: this is what we call achieving consensus, but what if some of the nodes act dishonestly? This is a fundamental question about the so-called «problem of Byzantine generals», which gave rise to the concept of «Byzantine tolerance» (BFT).

History

The Problem of Byzantine generals

The «Byzantine Generals Problem» was coined in 1982 as a logical dilemma that illustrates how a group of more than two people at a great distance from each other can have communication problems when trying to agree on the next step.

The dilemma assumes that each general has his own army and each group is in different places around the city, intending to attack it. The generals need to agree either to attack or to retreat. The main problem is that messages can somehow be delayed, lost or destroyed. In addition, even if the information is successfully delivered, one or more generals may act (for whatever reason) maliciously and send a fraudulent message to confuse others, which will lead to a general failure.

«The task of the Byzantine generals» (original wording)

Byzantium. The night before the great battle with the enemy. The Byzantine army consists of N legions, each of which is commanded by its own general. The army also has a commander-in-chief, to whom the generals report.

At the same time, the empire is in decline, and any of the generals and even the commander-in-chief may be traitors to Byzantium, interested in its defeat.

At night, each of the generals receives an order from the commander-in-chief, what to do at 10 o’clock in the morning (the time is the same for everyone and is known in advance). Variants of the order are «attack the enemy» or «retreat».

Possible outcomes of the battle:

  1. If all the loyal generals attack, Byzantium will destroy the enemy (a favorable outcome).
  2. If all the loyal generals retreat, Byzantium will retain its army (intermediate outcome).
  3. If some loyal generals attack and some retreat, the enemy will eventually destroy the entire Byzantine army in parts (an unfavorable outcome).

It should also be borne in mind that if the commander—in-chief is a traitor, then he can give different generals opposing orders to ensure the destruction of the army. Therefore, the generals need to take into account this possibility and prevent uncoordinated actions.

If each general acts completely independently of the others (for example, makes a random choice), then the probability of a favorable outcome is very low.

Therefore, the generals need to exchange information among themselves in order to come to a common decision.

Application in blockchain

In the context of blockchain, generals are network nodes, and they need to reach consensus on the current state of the system. In other words, the majority of participants in a distributed network must agree and perform the same action in order to avoid a complete failure. Therefore, the only way to achieve consensus in these types of distributed system is to have (at least ⅔ or more) reliable and honest network nodes. This means that if a large part of the network decides to act maliciously, then the system is prone to error (for example, a 51 % attack).

Conclusions

If there is no «Byzantine fault tolerance» in the network, then a peer can independently create and confirm false transactions, thereby discrediting the entire system. Since there is no regulatory body in the blockchain that could take responsibility to confirm or cancel certain actions to correct or prevent damage, decentralization would play a negative role.

The «Byzantine Generals problem» is a dilemma that gave rise to BPT systems, and now they are widely used in various systems. In addition to the blockchain industry, these are the aviation and space spheres, as well as nuclear energy.

«Byzantine fault tolerance» is being studied by many cryptocurrency startups — algorithms are being upgraded and successfully integrated into their own distributed systems.

Decimal, Hyperledger, Cosmos Network, Minter, Zilliqa — all these and not only projects use «Byzantine fault tolerance» as the main component of their infrastructure.

Effective communication of network nodes and a good consensus mechanism are vital for any blockchain ecosystem. Existing consensus algorithms have yet to overcome several barriers (e.g. scalability). Nevertheless, PoW and PoS are very interesting and working approaches to BFT.

See also