Proof-of-work (PoW, proof of work) is a mathematical task that is difficult (long, expensive) to solve to meet certain conditions. Verification of such information in its turn should be as simple as possible. The purpose of Proof-of-work consensus is to make sure that the required calculations were performed, when creating a new block.
Creating Proof-of-work consensus may be a random process with a low probability of success and many errors occurring. Bitcoin uses the so-called Hashcash function for proof of performance (PoW).
The concept of Proof-of-Work was first described in 1993 in "Pricing via Processing, Or, Combatting Junk Mail, Advances in Cryptology" (by Cynthia Dwork and Moni Naor). Although the term has not yet been used in the article itself, authors suggested the following idea:
The main idea is to require a user to compute a moderately hard, but not intractable, function in order to gain access to the resource, thus preventing frivolous use
Principle of operation
The Hashcash function is used in Bitcoin to create blocks. Mining each block is essentially a search for a function solution. The complexity of this task varies to control the frequency of block location. The system is programmed so that the block detection frequency, on average, is 1 block per 10 minutes.
Since the process of finding a block is very work-consuming and random, it is impossible to predict precisely which Bitcoin-worker (miner) will solve the task and find the block. For the system to recognize the block as a true one, it is necessary that its hash value is less than the current target. Thus, each block shows that some work has been done to find it.
Each block contains the hash of the previous block, forming a chain. It is impossible to change a block. It is only possible to create a block at the same height as a hash of the previous block. In order to perform such a process it is necessary to do the work on finding all the previous blocks. The high complexity of this process protects the blockchain from unauthorized access and attacks of the double spend type.
The Bitcoin network uses the PoW mechanism as a means of achieving consensus (a consensus regarding which blockchain version to be considered as a correct one). The creator of the first cryptocurrency, Satoshi Nakamoto, took the Hashcash idea project mentioned above as a basis, adding a mechanism of changing complexity — reduce or increase N (required number of zeros) based on the total power of network members. The calculated function had been known as SHA-256.
Another application of this idea is to use Hashcash as a method to prevent email spam - request PoW content for each email. Ordinary emails can easily generate PoW content (because it doesn't require a lot of resources), but spam-sending clients will have a problem providing PoW for millions of their emails.
- Unreasonable energy costs
- A large number of nodes do compute, but in reality, only one (first) performs successful work and gets rewarded.