Dagger-Hashimoto is a precursor research implementation and specification for the mining algorithm for Ethereum 1.0 and the predecedssor to Ethash.
Dagger Hashimoto aims to simultaneously satisfy two goals:
- ASIC-resistance: design the algorithm such that specialized hardware like ASIC miners are not significantly more profitable to mine with than non-specialized hardware such as CPU's and GPU's, making Ethereum's mining less centralized.
- Light client verifiability: a block should be relatively efficiently verifiable by a light client.
Dagger Hashimoto built upon two pieces of work, Hashimoto, and Dagger. Hashimoto is an algorithm created by Thaddeus Dryja, designed to make memory reads the limiting factor in the mining process. Hashimoto relied on the idea that RAM is a more generic ingredient that computation, making RAM more optimal for evaluating algorithms. Dagger is an algorithm created by Vitalik Buterin. It uses directed acyclic graphs to achieve memory-hard computations and memory-easy validations at the same time. It is meant to be an alternative to algorithms such as Scrypt, but was proven to be vulnerable to shared memory hardware acceleration.