Technology attributes
Other attributes
Ethash is a memory hard (i.e. each GPU miner needs 1+ GB of RAM) proof of work mining algorithm developed for Ethereum 1.0 and currently used by Ethereum, Ethereum Classic, and several other cryptocurrencies. It is a modified version of Dagger Hashimoto, and was designed to be ASIC-resistant and efficiently verifiable by a light client - characteristics which are maintained by Ethash.
The Ethash algorithm is used to dynamically adjust the mining difficulty of the blockchain that implements it. In other words, Ethash determines roughly how much computational resources should be spent in order for a miner to be able to find the nonce that allows them to propose a new block to add to the blockchain.
Ethash is not itself a cryptographic hash function. The hash function used by Ethereum is a variant of the SHA3 hash and is called Keccak-256. The hash was developed at the same time as the SHA3 standard and received a late change in the padding of the finalized hash algorithm. Ethereums SHA3-256 and SHA3-512 are not standard SHA3 hashes, and are often referred to as Keccak-256 and Keccak-512.
The Ethash algorithm generally follows a route in which a seed can be computed for each block by scanning through block headers, and which can compute a 16MB pseudorandom cache. Light clients then store the cache, which eventually is generated into a 1GB dataset and is then stored by full clients and miners. The dataset grows linearly over time and verification is done on the dataset until it is updated. The large dataset is updated once every 30,000 blocks.
The parameters for Ethash cache and datasets depend on the block number, as the cache and dataset sizes grow linearly. The highest prime below the linearly growing threshold is taken in order to reduce risk of accidental regularities leading to cyclic behaviors.