Byzantine fault-tolerant system
Content
The accounting consensus of the blockchain network is similar to the Byzantine Generals problem. Each node participating in the consensus bookkeeping is equivalent to a general, and the message transmission between nodes is equivalent to a messenger, and some nodes may produce wrong information for various reasons and pass it to other nodes. Usually these failed nodes are called Byzantine nodes, and normal nodes are non-Byzantine nodes.
Assuming that the distributed system has n nodes, and assuming that the Byzantine nodes of the entire system does not exceed m (n ≥ 3m + 1), the Byzantine fault-tolerant system needs to meet the following two conditions:
All non-Byzantine nodes use the same input information and produce the same results. In the blockchain system, it can be understood that when the random number is the same, the block algorithm is the same, and the original ledger is the same, the calculation result is the same.
If the input information is correct, all non-Byzantine nodes must receive this message and calculate the corresponding result. In the blockchain system, it can be understood that non-Byzantine nodes need to calculate customer requests and generate blocks.
In addition, the Byzantine fault-tolerant system needs to achieve the following two indicators:
Security: Any completed request will not be changed, it can be seen in future requests. In the blockchain system, it can be understood that the generated ledger cannot be tampered with and can be viewed by nodes at any time.
Liveness: It can accept and execute requests from non-Byzantine clients, and will not be affected by any factors that cause the requests of non-Byzantine clients to fail. In the blockchain system, it can be understood that the system needs to continuously generate blocks and keep accounts for users, which is mainly guaranteed by the mining incentive mechanism.
When analyzing the Byzantine problem, assume that the channel is credible. By extension, in the Byzantine fault-tolerant system, the commonly used assumptions include:
The behavior of Byzantine nodes can be arbitrary, and the Byzantine nodes can collude;
Errors between nodes are irrelevant;
The nodes are connected through an asynchronous network. Messages in the network may be lost, out of order, and delayed in arrival, but most protocols assume that the message can be delivered to the destination within a limited time;
The information transmitted between nodes can be sniffed by a third party, but the content of the information cannot be tampered with, or the integrity of the information can be destroyed.