Skip to main content

Using hash functions for Proof-of-Work

Blockchain proof-of-work mining algorithms use a special class of hash functions that are computational-intensive and memory-intensive. These hash functions are designed to consume a lot of computational resources and a lot of memory and to be very hard to be implemented in hardware devices.

Bitcoin uses the Hashcash proof of work system.

One application of this idea is using Hashcash as a method to preventing email spam, requiring proof of work on the email's contents (including the To address), on every email. Legitimate emails will be able to do the work to generate the proof easily (not much work is required for a single email), but mass spam emailers will have difficulty generating the required proofs (which would require huge computational resources).

Hashcash proofs of work are used in Bitcoin for block generation. In order for a block to be accepted by network participants, miners must complete a proof of work that covers all of the data in the block. The difficulty of this work is adjusted so as to limit the rate at which new blocks can be generated by the network to one every 10 minutes. Due to the very low probability of successful generation, this makes it unpredictable which worker computer in the network will be able to generate the next block.

ETHash proof-of-work mining hash function used in the Ethereum blockchain.  ETHash is the proof-of-work hash function in the Ethereum blockchain. It is a memory-intensive hash function (requires a lot of RAM to be calculated fast), so it is believed to be ASIC-resistant. More about ETHash can be found here:

Equihash proof-of-work mining hash function used in Zcash, Bitcoin Gold, and a few other blockchains. Equihash is the proof-of-work hash function in the Zcash and Bitcoin Gold blockchains. It is a memory-intensive hash function (requires a lot of RAM for fast calculation), so it is believed to be ASIC-resistant

Last modified: Friday, 21 May 2021, 7:59 PM