The Ethereum frontier network currently uses a proof of work (PoW) based consensus algorithm. But which specific PoW function does that algorithm use, and why was it chosen?

up vote 44 down vote accepted

The PoW algorithm used in Frontier and Homestead is called Ethash, and it was created specifically for Ethereum.

The primary reason for constructing a new proof of work function instead of using an existing one was to attack the problem of mining centralisation, where a small group of hardware companies or mining operations acquire a disproportionately large amount of power to impact or manipulate the network (should they so choose). The economic forces within existing networks (such as Bitcoin and Litecoin) make centralisation of mining efforts highly profitable, in part due to the possibility for producing ASICs, specialised chips specifically designed to outperform standardised computer hardware by many orders of magnitude in hashing performance. Other factors that promote mining centralisation, such as handling of orphaned blocks, are tackled separately within the Ethereum protocol. By specifically designing an "ASIC-resistant" PoW algorithm, the Ethereum team hopes to reduce economic incentives for mining centralisation in Ethereum, at least until a secure PoS algorithm can be designed and deployed.

The way that Ethash aims to provide a PoW algorithm for which commodity hardware is already highly optimised (and hence creation of an ASIC, which is expensive, will yield very little advantage over simply using the latest commodity hardware) is by emphasising a property called memory hardness. Memory hardness essentially means that your performance is limited by how fast your computer can move data around in memory rather than by how fast it can perform calculating operations. Consumer graphics cards compete very strongly in this area, which means that a potential ASIC designer can't easily do better: if they had a new idea for improving memory bandwidth it would be more profitable to sell that idea to a graphics card company than to design a mining ASIC for it. And in any case the mainstream computer industry has large teams devoted to this problem already.

The PoW algorithm used at the moment is the Ethash algorithm. In this wiki you can find the description of the algorithm and here you can see what was the design rationale behind Ethash.

https://github.com/ethereum/wiki/wiki/Ethash

and

https://github.com/ethereum/wiki/wiki/Ethash-Design-Rationale

Basically - ASIC resistance was a concern.

  • 4
    While this links may answer the question, it is better to include the essential parts of the answer here and provide the link for reference. Link-only answers can become invalid if the linked page changes. – max taldykin Jan 20 '16 at 18:41

You can begin here on the Ethereum wiki. Reading the code can also be very helpful.

Your Answer

 
discard

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.