On August 7, 2018, Vitalik published an article on his blog: A Guide to 99% Fault Tolerant Consensus.
This theory is nothing new:
In a synchronous system, if the malicious nodes do not exceed 50%, information broadcasted by honest nodes is guaranteed to reach other honest nodes as long as given enough time. In other words, in this case, the system fault tolerance rate is 50%. If we loosen the preconditions of synchronization and look at an asynchronous network, the maximum fault tolerance will be reduced to 33%. Furthermore, if we add protection preconditions, such as requiring observers to actively monitor the consensus process, fault tolerance can be increase to 99%.
This conclusion was made a long time ago. It was described in a well-known paper by General Leslie Lamport in 1982, “The Problem of General Byzantium.”
To put it simply:
• Through continuous signatures, time limit mechanisms and increased positive observers, we can achieve that the “truth” can be passed to honest nodes at over 95% or even close to 100%.
• In this case, the cost of stealthing a 51% attack increases, and it becomes 95% or nearly 100%.
• However when the number of honest nodes in verification nodes is less than 50% (synchronous network) or 67% (asynchronous network), this consensus cannot prevent malicious nodes from causing chain forks.
Our opinion is as below:
By increasing the number of observers in the “sunrise crowd” and at the expense of extending the second confirmation time, it is indeed possible to increase the fault tolerance rate. However benefits always come at a cost.
For the decision-making of the consensus mechanism, it is a three-choice multiple-choice question. They are: safety, fault tolerance, and liveness, and they cannot be simultaneously achieved.
So to put it in an even simpler way:
Suppose a network has:
N nodes, their labels are 0 to N-1
The upper limit of the network delay plus the time difference of the watch is D (for example, 8 seconds, which means that under normal conditions, one node information can be transmitted to another node theoretically in D).
Each node has the ability to pass a value to other nodes at time T. (A malicious node can of course deliberately delay or delay this time T)
All nodes in the (N-1) * D seconds period, run the following process:
Define x:i, which means that the value sent before node i is x
Define x:i:j, which means that the value sent in front of node i is x. This is signed by node j.
And so on and so forth…
Is it still too difficult to understand?
Let us give a real life example
Suppose there are 3 people, labeled 0, 1, and 2. The communication between them can only be one-on-one.
0 decides one day “The target price of my bitcoin is 5,600.”, and sends this information to 1. So what 1 just received is equivalent to x:I, structured as:
Target of Bitcoin is 5600: @0 signed
And 1 will pass the message to 2 as:
(Target of Bitcoin is 5600: @0 signed)@1 signed
In frank: “0 just told me his target price for bitcoin is 5600!”