# Which of the following Is False for Agreement Algorithms

What is Byzantine fault tolerance? Byzantine fault tolerance (BFT) is the characteristic of a distributed network to reach consensus (agreement on the same value), even if some of the nodes in the network do not respond or respond with incorrect information. The purpose of a BFT mechanism is to protect against system failures by making collective decisions (correct and faulty nodes) to reduce the impact of faulty nodes. BFT is derived from the problem of the Byzantine generals. Leslie Lamport proved that if we have 3m + 1 processors working properly, a consensus (agreement on the same state) can be reached when most processors are defective, which means that strictly more than two-thirds of the total number of processors should be honest. Types of Byzantine errors: There are two categories of errors that are taken into account. One is a fail-stop (where the node fails and stops working) and another is an arbitrary node error. Some of the arbitrary node errors are listed below: As the word means, the agreement condition means that all non-failing nodes must agree on the same value. Byzantine fault tolerance can be achieved if the properly functioning nodes in the network agree on their values. There may be a default voting value for missing messages, which means that we can assume that the message from a particular node is “failed” if the message is not received within a certain amount of time.

In addition, we can also assign a default response if the majority of nodes respond with a correct value. Validity means that the value on which a node agrees must be a value proposed by one of the nodes in the distributed system. That is, if everyone suggests the non-failing v node as a value, each non-faulting node must decide v. There cannot be a non-faulty node in this system that decides an x value (which is not suggested by a node in this system). Imagine that several divisions of the Byzantine army camp outside an enemy city, each division being commanded by its own general. Generals can only communicate with each other by messenger. After observing the enemy, they must opt for a common plan of action. However, some of the generals could be traitors trying to prevent loyal generals from reaching an agreement. The generals have to decide when to attack the city, but they need a strong majority of their army to attack at the same time. Generals must have an algorithm in place to ensure that (a) all loyal generals decide the same course of action, and (b) a small number of traitors cannot get loyal generals to adopt a bad plan. Loyal generals will do whatever the algorithm says, but traitors can do whatever they want.

The algorithm must guarantee condition (a), regardless of what the traitors do. Loyal generals should not only agree, but also agree on a reasonable plan. To solve the problem of distributed consensus, various solutions have been invented. The Paxos algorithm proposed by Leslie Lamport and the Raft algorithm are popular solutions to the distributed consensus problem. The problem was accurately explained in 1982 in an article by LESLIE LAMPORT, ROBERT SHOSTAK and MARSHALL PEASE of Microsoft Research: According to the termination condition, each non-faulty node ultimately decides on a value. In other words, it states that if a single node disagrees, consensus cannot be reached in a distributed system. To reach consensus in a distributed system, each node must follow the same protocol when communicating with each other. There are three conditions that a consensus algorithm must meet to achieve a distributed consensus. Failures are a situation in which one node suddenly crashes and stops responding to other nodes.

This is a common problem in any distributed system. In the Lamport algorithm, critical section queries are executed in ascending order of timestamps, that is, a query with a smaller timestamp receives permission to run critical sections first than a request with a larger timestamp. Nodes in distributed systems attempt to achieve a common goal (possibly by processing a large computation). Then they need some kind of coordination between them. They need to know the impact of their actions on the whole system. Here, distributed systems need a consensus protocol. In each distributed consensus protocol, a node may say, “Guys, I suggest the value v. Do you all agree? » 💡. Only after all the other nodes have agreed 🤝 on v can each node (including the suggestive node) continue its work and keep “v is decided” in its head.

Another node may also say “I prefer w. and suggest another value (w) before the system decides v. Next, the distributed system must choose v or w. In such a case, reaching a consensus is a somewhat complicated process. What does the term “non-faulty nodes” mean? In practical situations, nodes in a distributed system can crash, malfunction, or be hacked. These nodes are faulty nodes and therefore unreliable. Therefore, it is more difficult to reach consensus in a distributed system when there are faulty nodes. There are two types of errors that are taken into account in distributed systems. As a simple definition, we can say that a distributed system is a series of nodes (usually computers) that simultaneously perform a common task by communicating with each other over a network. With this idea of a distributed system, we can say that the nodes of a distributed system that agree on a value are a distributed consensus. The primary node (leader) is changed during each view (pBFT consensus rounds) and can be replaced with a view change log when a predefined amount of time has elapsed without the primary node sending a request to (secondary) backups.

If necessary, a majority of honest nodes can vote on the legitimacy of the current leader node and replace it with the next head node in the row. .