Proof of Work (PoW) is a cryptographically secure consensus mechanism which guarantees that network participants who do not necessarily know each other are able to prove that they have performed a certain amount of *computational work*.

Proof of Work does not require that network participants trust each other.

Results to a PoW challenge can be anonymously submitted without compromising the integrity of the process.

## HashCash

PoW is usually employed to forcefully delay processes, ensuring that no one can abuse the timing of a system.

The idea was originally developed to increase the cost of sending email spam by requiring each message to include a special header showing that it had cost a certain amount to be sent.

This system, called HashCash, was developed by Adam Back many years before the Bitcoin whitepaper was published.

The HashCash idea eventually found its way into the world of cryptocurrencies through the work of Satoshi Nakamoto and the original Bitcoin Core developers (Hal Finney, Nick Szabo, Peter Wuille, among others).

By requiring proof that miners had performed a certain amount of work, the Bitcoin network was able to maintain a minimum amount of time between blocks.

## Decentralized Consensus

Decentralized consensus obtained via Proof of Work is considered one of the major breakthroughs, if not the most important one, introduced by Bitcoin.

In fact, PoW consensus is often called *Nakamoto consensus* as a tribute to the first successful implementation.

Previous attempts at creating a trusted distributed ledger had failed to find a solution to the problem of unknown and untrusted parties agreeing on a ledger consensus.

## Cryptocurrency Mining

In cryptocurrencies, Proof of Work (or PoW for short) ensures that everyone is contributing a certain amount of mining power to the network. As the name implies, the algorithm forces all participants to prove that they have made a certain number of attempts to solve the current block.

By requiring the solution of a block to be a hash with a certain amount of zeroes prefix, it is possible to calculate the average amount of computations required per block. This amount is then automatically tuned to force the system to find blocks at approximately equal time intervals.

Calculating the difficulty of solving a block against the estimated network computational power, it is possible to tune the network to find a block at specific intervals. On Bitcoin Core this is tuned to 10 minutes per block on average.

## Mining Lottery

Bitcoin mining is essentially a lottery.

In theory, anyone could solve a block hash by mere chance.

What Proof of Work does is to ensure that the **average case** requires a certain amount of work to be performed. This mechanism keeps Bitcoin blocks tuned at approximately 10 minutes apart.

Some blocks are found within very few minutes, while others take a while longer. The average case remains very close to 10 minutes even with the quick development of advanced mining hardware and software.

## Environmental Concerns

PoW is considered to be energy inefficient due to the immense amounts of energy required to find the solution to a single Bitcoin block (approximately 100 megawatts per coin).

This is due to the self adjusting nature of Bitcoin, where “network difficulty” rises with the amount of computational power currently attempting to mine a block.

## Network Difficulty

Bitcoin is able to self-adjust to maintain an average 10 minute period between blocks.

This is achieved by means of a network parameter called *network difficulty*.

Difficulty measures the amount of work miners must prove in order to consider a block solved. Every zero required to the prefix of a hash multiplies difficulty by 256 (2⁸).

Bitwise, every zero doubles the amount of work required on average (a bit can have 2 states). Since every zero digit contains 8 bits, requiring every bit to be zero will multiply the entire hash difficulty by 2⁸.

By using this ingenious method, simply choosing the number of prefix zero bits for block hashes sets the desired network difficulty. If blocks get solved too quickly, Bitcoin self-adjusts the difficulty to increase the time between blocks until it’s near 10 minutes again.

The same principles were copied, with slight variations, from Bitcoin by most PoW-based cryptocurrencies. These include Litecoin, Monero, Aeon, Dogecoin, all the Bitcoin* forks and tens of others.