Many cryptocurrency algorithms are based in part on the distributed verification of a transaction register – often called the blockchain.
The concept underlying distributed verification is to have many computers competing to solve a difficult problem. Generally it requires a problem that would be known in computer science circles as being NP complete. This means, in short, that once a solution to the problem is found, everyone can verify the solution quickly, but no direct algorithm is known to solve it – so one must guess at solutions and then see if they are correct. This enforces distributed work by requiring all participants to guess at solutions until one is found. Participation is encouraged by rewarding the lucky winner with some of the cryptocurrency.
The algorithm almost universally used is a variation of hashcash. Hashcash was originally used to require work before sending an email to ensure that it was not spam. The algorithm basically works by computing a crytographic hash function on the data – in this case the transaction block. The hash is relatively easy to compute, but it also required to have certain characteristics. The only way to achieve this is to repeatedly calculate hashes while varying a value included called the “nonce”.characteristics. The amount of work required can be varied by making the required characteristics of the hash more restrictive. This feature is called the difficulty and is typically increased or decreased to maintain the necessary number of transaction blocks as the number of participant computers changes.