# Research on Progress of Blockchain Consensus Algorithm:
## 3 Blockchain Consensus Algorithm
### Byzantine Fault-Tolerant Consensus Algorithm
#### 3.3.2 PoW Algorithm  
The PoW algorithm, namely the proof of work algorithm, was originally designed to resist spam attacks. That is, the mail sender must spend a certain amount of computing power to solve a mathematical problem before sending the mail, which greatly increases the cost of sending spam, thereby ensuring the security of the system. However, it is the application of \"[PERSON]\" in the Bitcoin system that promotes the PoW algorithm. In the Bitcoin white paper, [PERSON] officially used the PoW algorithm in distributed applications. This is also the first time that a Byzantine fault-tolerant consensus algorithm has been used in an open and public blockchain network. The core idea of the PoW algorithm is to ensure the consistency of data and the security of consensus through computing power competition. Each node in the blockchain calculates a random nonce value through its own computing power. This value is compared with the solution value _target_ of a mathematical problem of the blockchain system. If the nonce is less than the _target_, the node obtains the accounting right of this block and broadcasts the packaged block to the entire network. After receiving the broadcast packaged block, other nodes will verify the correctness of the block information. The PoW algorithm automatically adjusts the _target_ to change the computational complexity, in order to ensure that the nodes in the chain will not lose their work enthusiasm because of too difficult evaluation and will  
Figure 6: PBFT algorithm workflow. not monopolize the accounting rights due to strong computing power of some nodes. As a result, the entire blockchain network remains relatively stable. This process of competing for accounting rights and being recognized and accepted by network nodes is also called \"mining\". Only the node that first solves the nonce value that meets the _target_ condition can get the accounting right and obtain the rewards in the incentive mechanism. After receiving the broadcast, other nodes will give up solving the block problem, but they will verify the block information. During the verification process, other nodes cannot account, but will quickly verify the hash relationship information of the block information, to ensure the uniqueness and correctness of the data in the ledger. The working principle of the PoW algorithm is shown in Figure 7.  
The PoW algorithm is suitable for the public chain, and in the participation process, it is not necessary to introduce an identity verification mechanism for identity verification. It is the first Byzantine fault-tolerant algorithm that is actually applied in the public chain. In the PoW algorithm, the node obtains the nonce value through exhaustive calculation, and the algorithm is less difficult to implement. However, the PoW algorithm also has many problems. For example, it relies heavily on computing power in the process of solving _nonce_[64], which consumes huge computing resources, the PoW consensus agreement period is too long [65], it currently takes around 10 min to solve a math problem, and the transaction throughput is too low [66]. In response to these problems, the researchers improved the PoW algorithm and proposed some new algorithms originating from PoW. The Bitcoin-NG algorithm innovatively uses key blocks and micro blocks to unitize the running time of the PoW algorithm, which greatly improves the system throughput. The Byzcoin algorithm is based on the Bitcoin-NG algorithm and combines the PoW algorithm with the Byzantine fault-tolerant algorithm. While improving the system throughput, it also strengthens the security performance of the system. The GHOST algorithm changes the longest chain rule and proposes a new concept of block generation. Compared with the PoW algorithm, it reduces computing power consumption and improves the activity of nodes in the chain to participate in services.