Bitcoin miner unix article may require cleanup to meet Wikipedia’s quality standards. This idea is also known as a CPU cost function, client puzzle, computational puzzle or CPU pricing function. It is distinct from a CAPTCHA, which is intended for a human to solve quickly, rather than a computer.
One popular system, used in Hashcash, uses partial hash inversions to prove that work was done, as a good-will token to send an e-mail. There are two classes of proof-of-work protocols. The provider chooses a challenge, say an item in a set with a property, the requester finds the relevant response in the set, which is sent back and checked by the provider. As the challenge is chosen on the spot by the provider, its difficulty can be adapted to its current load. Solution-verification protocols do not assume such a link: as a result the problem must be self-imposed before a solution is sought by the requester, and the provider must check both the problem choice and the found solution. Most such schemes are unbounded probabilistic iterative procedures such as Hashcash.
There are also fixed-cost functions such as the time-lock puzzle. In this sense the work is not actually performed by the requester, but it incurs delays anyway because of the latency to get the required tokens. Finally, some POW systems offer shortcut computations that allow participants who know a secret, typically a private key, to generate cheap POWs. The rationale is that mailing-list holders may generate stamps for every recipient without incurring a high cost. Whether such a feature is desirable depends on the usage scenario.
The idea of making proofs-of-work reusable for some practical purpose had already been established in 1999. A website can demand a POW token in exchange for service. Requiring a POW token from users would inhibit frivolous or excessive use of the service, sparing the service’s underlying resources, such as bandwidth to the Internet, computation, disk space, electricity and administrative overhead. Finney’s RPOW system differed from a POW system in permitting the random exchange of tokens without repeating the work required to generate them. After someone had “spent” a POW token at a website, the website’s operator could exchange that “spent” POW token for a new, unspent RPOW token, which could then be spent at some third-party website similarly equipped to accept RPOW tokens. This would save the resources otherwise needed to ‘mint’ a POW token.