Byzantine error tolerance protocols are algorithms that allow all actors to agree, within a network of actors, on a message or state that may contain defective or even malicious actors. The name of these algorithms comes from the problem of the Byzantine generals: in our implementation, each node is a transmitter and receiver for other attempts to agree on messages from other legitimate nodes. We use a modern standard cryptographic signature scheme to authenticate the message sender and prevent any modification of the message content by man-in-the-middle attacks. Whenever a sender wants to reach consensus on a certain payload within a network of other receiving nodes, the sender`s payload and public key are signed with the sender node`s private cryptography key and the signature is added to the payload. In this way, the receiving nodes can check the content and origin of this message. This issue describes a scenario where several generals who command their legions must besiege a city and decide whether to attack it or retreat. Since the siege led the generals to set up their legions in different places on the outskirts of the city, the only way for the generals to communicate with each other was through the use of couriers. The generals must decide unanimously whether to attack or not, because a partial attack on the city will lead to a numerical inferiority of the troops of the municipal guard and the disintegration of the entire army. To complicate matters, some of the generals are traitors and want the defeat of the entire army. Traitors can send malicious messages to different generals and disrupt the correlated attack. To be even more complicated, some couriers may lose their way on the poorly marked road network, so some of the new ones may not achieve their goals. Reaching an agreement on what it seems, whether or not to attack, seems a little more complicated than initially thought.
To overcome these types of attacks (or network errors) and ensure that opponents can`t harm the accuracy of our DAG, we use a bizantin convention algorithm called Dolev Strong. Consistency between processes in a distributed system is a sine qua non for a wide range of applications. Many forms of coordination require processes to exchange information in order to negotiate with each other and, finally, to reach a common understanding or agreement before taking specific measures for their implementation. A classic example is the commit decision in database systems, where processes decide together whether to establish or cancel a transaction in which they participate. In this chapter, we study the feasibility of designing algorithms to find agreement between different system models and error models, and we study, if possible, some representative algorithms to reach an agreement. We first give some assumptions that underlie our study of concordance algorithms: our consensus protocols should keep all nodes synchronized and resist attacks aimed at drilling the graph. To do this, we have two algorithms. The first is a faster consensus algorithm, which has reached agreement on the layer that is being developed and is affectionately referred to as the “rabbits” protocol; The other, slower algorithm is used to validate the entire graph and “repair” attack tests and graphon resistances, and is affectionately called a turtle.
It also imposes the irreversibility of graphs, to which I will return in another speech. The purpose of the rabbit protocol is to reach a consensus on which layer is being built, which means which blocks should enter the layer. Each allowed node publishes a block within a certain period of time to other legitimate nodes. At the end of this period, all nodes must reach a consensus on the blocks they have received from other nodes, and it is the blocks that form the next “layer”. So how do we decide which block will be included in the chart if we don`t have simple decision criteria like chain length and PoW? For this we use Byzantine error tolerance protocols (BFT) which are explained below….