The Dagger-Hashimoto algorithm must have the most heroic-sounding name of them all. Ethereum uses a proof-of-work algorithm called Ethash, and the Dagger-Hashimoto algorithm was the first version of that. Vitalik Buterin and the Ethereum team created it by marrying aspects of two other algorithms—not surprisingly named Dagger and Hashimoto. The Dagger-Hashimoto algorithm is a memory-hard algorithm and resistant to ASIC use.
The Dagger-Hashimoto algorithm and Ethash have both been updated since and aren’t now thought of as the same algorithm anymore, but it’s worth remembering that they are still sometimes referred to as if they are.
Hashimoto uses the blockchain as a data source and resists ASIC by using memory reads to limit them in mining. It was designed by Thaddeus Dryja, who developed it with the aim of keeping blockchain networks decentralized. The monopolization of the bitcoin network by ASIC-enabled miners threatened to centralize cryptos and reduce the ability of average individuals to participate. Hashimoto was designed to resist that outcome.
Hashimoto isn’t so much a proof-of-work algorithm as a proof of input/output capacity one. Dryja called it an I/O bound proof of work algorithm. This indicates that Hashimoto-based mining uses pseudorandom element selection from the large shared data set. It’s difficult to outsource this process to nodes in the absence of a full data set and it may be used as a generator of pointers to the data in the blockchain instead of as a proof-of-work algorithm itself. The result is that all nodes contributing to the proof-of-work would confirm the transactions themselves out of necessity.
The problem of outsourcing the block validations is mostly tied to the fact that outsourcers (meaning mining pools) don’t let miners know which transaction has been verified by their systems. Doing this is a form of centralization that can turn the network into a mere income source when one of the original points of the whole endeavor was to create a blockchain that was robust, trustworthy and under nobody’s direct control.
Dagger is a Scrypt alternative that provides fast verification and memory-hard computing. Like Hashimoto, Dagger was designed to help establish ASIC-resistant networks by demanding a lot of RAM. Moderately connected directed acyclic graphs (DAGs) underpin what it does and they gave it the name Dagger. DAGs are graphs with no directed cycles connecting their edges. It’s impossible to traverse a DAG beginning at one edge. As the Dagger whitepaper states, it needs 512 MB for evaluation, 112 KB for memory and 4078 hashes for verification, which moves the main determinant of mining hardness towards memory and away from computation.
Because of these features, dedicated mining hardware only gets a small advantage in mining on Dagger-based networks. At least, that was the plan. In reality, Dagger had a vulnerability to shared memory hardware acceleration due to the way that it allowed easy parallelization. Dagger's proof-of-work relies on creating a pseudorandom data set to fill the miner’s RAM, which occurs in rounds. At the start of each new round, some elements from the last round’s outputs are hashed together. This aspect of the process smoothed the way to optimizing ASICs for Dagger networks by sharing memory across the devices and storing each round’s outputs in it, enabling the easy generation of new datasets for ASICs, but not for typical computers. When this flaw was discovered, Dagger lost favor as a solo hash function.
Dagger Hashimoto makes use of Hashimoto’s approach to prove I/O capacity but doesn’t use a blockchain as a data set. Instead, the Dagger algorithm generates a 1GB custom data set. This was used to query the block semipermanent and was updated at some prearranged intervals, thus eradicating the vulnerability to shared memory hardware advantages. This made it easier to generate a data set and so undercut the ASIC advantage.
When The Dagger-Hashimoto algorithm was created it was one of the fastest algorithms and it also provided ASIC resistance to cryptocurrencies, which set it apart from its contemporaries. But the fact is that not many coins use the Dagger-Hashimoto algorithm hash function. A lot of the coins that started out with it later moved on to Ethash. Well-known examples of coins that were initially designed to be based on the Dagger-Hashimoto algorithm but moved to Ethash are:
Ethereum Classic (ETC)
Popular coins that currently use the Dagger-Hashimoto algorithm are: