Dagger-Hashimoto is an initial version of the Ethereum's Ethash proof-of-work algorithm. It was designed by Vitalik Buterin and the Ethereum team by combining the prominent features of the Hashimoto algorithm and the Dagger algorithm. Dagger-Hashimoto is a memory-hard algorithm that was designed to be ASIC-resistant.
Both algorithms (Dagger-Hashimoto and Ethash) were later updated separately and are not currently considered to be the same algorithm. However, they are still sometimes referred to as synonyms.
Hashimoto was chosen to be a part of the algorithm due to the fact that it uses the blockchain as a source of data and is designed to achieve ASIC resistance by making memory reads the limiting factor in mining that makes Hashimoto a satisfying option for the first and the third condition.
Thaddeus Dryja, the author of the Hashimoto algorithm aimed his development to help the blockchain networks with protecting their decentralized nature. ASIC dominance in the Bitcoin network damaged the ability of the ordinary user to become a participant in the network, limiting the decentralized nature of cryptocurrencies.
Hashimoto is not really a proof-of-work algo, but a proof of I/O (input/output) capacity algo. Dryja referred to Hashimoto as I/O bound proof of work algorithm. It means that Hashimoto-based mining is relying on the process of pseudorandom selection of elements from the large shared data set. This process is hard to outsource to nodes without a full data set and may be used not as a proof-of-work algo itself, but as a generator of pointers to the data in the blockchain. This meant that all nodes participating in the proof-of-work would necessarily verify the transactions themselves.
The problem of the outsource of the block validations is mostly related to the fact that outsourcers (I.e mining pools) deprive miners from knowing what transaction is verified by their computing power. This approach damages the decentralization of the network and makes is very easy to make the network to become just a means of income, without actual decentralized, robust and trustworthy nature of blockchain.
Dagger is an alternative to Scrypt that provides memory-hard computing and fast verification. Dagger, similarly to Hashimoto, aims to be used for the establishment of the ASIC-resistant networks by demanding a significant amount of RAM. It is based on moderately connected directed acyclic graphs (DAGs) from which a name Dagger derived. DAGs are graphs that have no directed cycles connecting the edges of the graph. DAG is impossible to traverse starting at one edge. As is stated in Dagger’s whitepaper, it takes 512 MB to evaluate, 112 KB memory and 4078 hashes to verify, which means that the primary determinant of mining hardness is memory, and not computation.
Due to the mentioned features, specialized hardware had only a tiny advantage in mining of the Dagger-based networks. However, Dagger turned out to be vulnerable to shared memory hardware acceleration due to its allowance of easy parallelization. Dagger's proof-of-work is based on developing a pseudorandom data set to fill the RAM of the miner, which happens in rounds. A number of elements from the previous round outputs are hashed together at the start of each new round. Such approach made it easy to optimize ASICs for Dagger networks by sharing memory of the devices and storing each round’s outputs in it so that the generation of new datasets became easier for ASICs, but not for ordinary computers. This flaw made Dagger abandoned as a solo hash function.
Dagger Hashimoto implements the Hashimoto’s approach in the proof of I/O capacity, but does not use a blockchain as a data set, generating a custom data set of 1GB that is built with Dagger algorithm. The Dagger’s vulnerability of shared memory hardware advantages was eradicated by making a dataset used to query the block semi-permanent and updated at some predetermined time intervals. This adjustment reduced the effort that in needed to generate a data set almost negligible and fixed the previous ASICs optimization problem.
Dagger-Hashimoto was one of the fastest algorithms at the time of its genesis. It also provided cryptocurrencies with ASIC-resistance, that was a huge advantage in comparison to its popular contemporaries. However, not a lot of coins are still powered by the Dagger-Hashimoto hash function. Most of the coins that started with it later changed their hashing algorithm to Ethash alongside the Ethereum network. Famous examples of the coins that were originally designed as Dagger-Hashimoto based but switched to Ethash are:
- Ethereum (ETH)
- Ethereum Classic (ETC)
- Expanse (EXP)
Popular coins that are currently using Dagger-Hashimoto are:
- Ubiq (UBQ)
- DubaiCoin (DBIX)
- GitHub: Ethereum Wiki - Equihash
- GitHub: Ethereum Wiki - Dagger Hashimoto
- Thaddeus Dryja: Hashimoto: I/O bound proof of work
- Vitalik Buterin: Dagger: A Memory-Hard to Compute, Memory-Easy to Verify Scrypt Alternative
- Reddit: Vitalik Buterin - Dagger updates
- Sergio Lerner: Ethereum “Dagger” PoW function is flawed
- - Wikipedia: Ethash
- Wikipedia: Directed acyclic graph
- Crocosource: Dagger-Hashimoto algorithm coins