(nondeterministic polynomial) problem since a solution can be quickly verified. The diagram below shows the structure of a specific block, and how it is hashed. Thus, cryptographic hashing becomes a good way to implement the Bitcoin "proof-of-work". At the current difficulty, the chance of a hash succeeding is a bit less than one in 1019. Step 3 - If the hash is more than the currently set difficulty level, then you have mined that block. Another block was mined less than a minute after that - although blocks are 10 minutes apart on average, the times can vary widely. Has a minimum difficulty of 16 on the other hand, so I only get a share every hour or two on the average. Then pairs of the new hashes are hashed together, and so on, until a single hash remains.
I wrote a Python program that mines the above block. Most of the attempts to mine a block will fail entirely - none of the nonce values will succeed. The pool must efficiently provide work to the miners and collect their results quickly. (Note that if you can solve that problem, you can rapidly find the nonce with binary search.) With these changes, the mining problem is. If you mine by yourself, you might successfully mine a block and get 25 bitcoin every few years.