The egg left by Nakamoto in the bitcoin source code: 1 or 3 is better than 2

On January 9, 2009, Nakamoto published the first version of Bitcoin client Bitcoin v0.1.0. After 10 years and 7 months, developer Duke Leto found a source in his source code that has not received widespread attention. The egg, its content is:

P3

"Never go to sea with two chonometers; take one or three."

The literal translation is: "Do not bring two sailing timers to the sea, with one or three."

That assumes that we will bring two nautical timers to the sea. What will happen?

A: There will be two timers giving completely different results. At this time we will encounter difficulties and we cannot decide which one we need to adopt.

Obviously, using one timer is the easiest way, but there may be errors. If you use three, you can take two of them close to or the same answer and use this as a standard.

And Nakamoto also mentioned the following sentence:

"Our three chronometers are: // – System clock // – Median of other server's clocks // – NTP servers"

Our three timers are:

1, the system clock;

2. The median of other server clocks;

3. NTP server;

When it comes to Bitcoin, we can also understand it as related to consensus.

Egg

(Image courtesy of pexels.com)

Traditional three-mode redundancy fault tolerance

The three-mode redundancy system (TMR) in the computer world is a fault-tolerant form of N-mode redundancy. Three of the modules perform the same process at the same time, with most of the same output being the correct output of the voting system, usually three. If any of the three modules fails, the other two modules correct and mask the fault.

P2

Triple mode redundancy

In TMR, three identical logic circuits (logic gates) are used to compute the same set of Boolean functions. If there is no circuit failure, the outputs of the three circuits are the same. However, if the circuit fails, the outputs of the three circuits may be different.

Most logic gates are used to determine which circuit's output is the correct output. If the input of most gates (2 or more) is 1, the output of most gates is 1. On the contrary, when most gate inputs are 0, the output is also 0.

Most logic gates are a simple AND circuit: if the inputs to most gates are represented by x, y, and z, then the output of most gates is P3

Traditional Byzantine Fault Tolerance Consensus

However, simple fault-tolerant systems can be problematic in an uncontrolled environment. In a distributed system environment, nodes are controlled by independent participants. Therefore, we also need to design rules for nodes that choose malicious or "byzantine" behavior. This consensus is called Byzantine fault tolerance consensus.

Prior to the advent of Bitcoin, the only way to maintain a Byzantine fault-tolerant P2P network was to use a closed or semi-closed node. In addition, the node selection method used by the traditional BFT algorithm (such as pBFT) is different from the method currently used in the Nakamoto consensus.

Maintaining BFT in an open distributed network requires the use of a specific set of rules that rely on both cryptography and game theory to create the necessary trust-free environment.

In the pBFT system, the consensus model works only in a small group of closed nodes (several dozens), and there is a large amount of communication overhead, which hinders the large-scale implementation of these consensus models. Consensus in systems with arbitrary errors often requires a specific voting system to help reach consensus. For cryptocurrency platforms that use the pBFT consensus model, this voting mechanism is based on a rotating "leader" node system. Since the system is a network of limited, closed nodes, it is very simple for these nodes to communicate effectively and determine the "leader" that proposes each new block.

If the "leader" behavior is malicious, the majority of the remaining nodes can remove the leader. However, in systems such as Bitcoin, this is clearly not very scalable, in which the consensus on the overall state of the blockchain and the validity of all transactions is distributed to thousands of nodes around the world. These nodes continually connect and disconnect from the network. In addition, participation in this consensus system requires an inherent cost to prevent participants from acting in a malicious manner.

Therefore, in order to make Bitcoin operate as a Byzantine fault-tolerant P2P network, Nakamoto introduced the PoW mining consensus algorithm and combined a specific set of rules to control the mechanism to achieve a trust-free consensus across the network, which is called For the classic Nakamoto consensus.

What is the Nakamoto consensus?

In fact, the Nakamoto consensus can be divided into four parts:

  1. Proof of workload (PoW);
  2. Block selection
  3. Scarcity
  4. Incentive structure

The combination and coordination of these four components makes Bitcoin a value-transfer distributed network that operates with a consensus that does not require trust. As long as most of the mining power is in the hands of honest miners, the security of the system can be guaranteed.

In general, PoW is the most important engine for promoting the Bitcoin consensus, which is designed to resist the occurrence of double-flower and witch (Sybil) attacks. A blockchain is a timestamp data chain that contains transactions for each block of the previous block hash. This provides immutable features for the blockchain, but how do you determine which chain you are in is the correct chain? This is the role of PoW.

The second block selection is one of the key components of the Nakamoto consensus that is different from other consensus models. Since the model is based on the PoW design, the block selection process specifically refers to the “draw” process that miners compete to win the block award for the next block.

In the pBFT system, the block leader is selected through a cyclic voting process. The system does not have a mining process, but the leader selects the block to be added to the chain and needs to obtain at least 2 /3 The identity of the remaining nodes. In Bitcoin, there is no voting program to determine the block leader. Instead, it adds a nonce password puzzle to the block until it reaches the correct value for the block hash and the zero required for the beginning of the nonce. Bit.

The miners in the network are competing to solve this problem. The first one to find a solution will win this round of sweepstakes. The block is then propagated by the pool through the network to other mining nodes that implicitly vote to accept the block as a valid block by adding the block to the longest chain. One result of this process is the elimination of potential third-party effects on block leaders because the process is random.

As for the scarcity and incentive structure, which refers to the design of the 21 million BTC and the new currency, the miners are encouraged to honestly verify and protect the network, because the reward they get from mining a block is bitcoin. If the value of Bitcoin falls or the network is damaged, the miners themselves will be hurt.

What is important is that with the Nakamoto consensus, Bitcoin has become a socially scalable network. By inspiring design, PoW, and a set of governance rules, Bitcoin achieves a consensus-free consensus, overcomes the problems inherent in human nature, and becomes a reliable source of intrinsic value.

From the perspective of effect, the Nakamoto consensus is Byzantine fault tolerance, but it clearly does not reach consensus on the consensus that researchers have traditionally assumed. Therefore, it was initially seen as completely out of the Byzantine fault-tolerant world.

According to the design, the Nakamoto consensus allows any number of nodes to participate in the system in an open manner, and no one has to know the complete set of participants, and these characteristics are very important.

It is simpler than previous consensus algorithms, which eliminates the complexity of previous consensus algorithms in point-to-point connections, leader elections, and secondary communication overhead, making it easy to deploy in real-world environments.

Therefore, we can think that the Nakamoto consensus is 1 or 3, 1 is when the nodes all do the right thing, 3 is when some of the nodes have some errors or malicious nodes, take the majority consensus as a positive solution, forcing a few nodes to return to the majority The chain of consensus, and eventually formed 1, otherwise, it forked out.

What is your understanding?

References: 1. https://en.wikipedia.org/wiki/Triple_modular_redundancy

2. https://blockonomi.com/nakamoto-consensus/

3. https://www.8btc.com/article/312296