In May 2018, cryptocurrency researchers IfDefElse and Greg Colvin submitted EIP 1057, proposing a change to Ethereum’s mining algorithm.
The central idea in EIP 1057, widely known as ProgPoW, is to design a mining algorithm that makes the most of available GPU hardware. By doing this, the authors argued that ASICs would then need to design hardware similar to GPU’s.
If ASIC hardware manufacturers were forced to compete with GPU’s, this put them in direct competition with video hardware giants like AMD and Nvidia. Mining hardware design costs would be driven up and competition would be fierced, thus weakening the ASIC mining scene.
Why fight ASICs?
Some may ask why anyone would want to fight ASIC miners at all. The hardware is available to miners just as GPU’s are, so why not just let the free market govern itself?
The answer lies in the need for decentralization.
ASIC technology in China is years ahead of the rest of the world. As a result, any ASIC-friendly mining algorithm eventually finds itself relying heavily on Chinese technology.
Not only that, but Chinese miners, and ASIC manufacturers themselves, obviously use this to their advantage. Before releasing new ASIC hardware to the public, Chinese miners outrun Western miners for months, raking in record profits before the hardware is made available to everyone else.
The ASIC Wars
Looking for ways to make ASIC mining more expensive, or altogether impossible, cryptography experts began looking for software solutions to the problem.
Historically, one of the ways cryptocurrency designers made algorithms ASIC resistant was to make the process consume large amounts of memory.
Fast memory is expensive and interfacing ASIC chips with large amounts of memory working at high speeds is technically very expensive and complicated.
This was the main motivation behind the adoption of Scrypt in certain Bitcoin forks back in 2013. Litecoin pioneered this strategy, then came Dogecoin and others.
Scrypt was much heavier than SHA256 and required lots more memory. This made it ASIC-resistant early on, but it wasn’t long before Bitmain machines were made available for Litecoin mining as well.
It turns out that whatever PoW algorithm gets released, it’s only a matter of time before dedicated hardware is produced for it.
Unless, of course, the hashing algorithm is designed in such a way that it forces the hardware designers into spending large sums in research and development.
This is where ProgPoW comes in.
The ProgPoW Proposal
Quoting EIP 1057 directly, the simple ProgPoW summary is:
A new Proof-of-Work algorithm to replace Ethash that utilizes almost all parts of commodity GPUs.
While this may sound somewhat obvious, it’s easily said than done.
Specifically, ProgPoW proposes 5 changes to the Ethereum mining algorithm:
- Changes keccak_f1600 (62 bit) to keccak_f800 (32 bit)
- Increases mix state
- Adds random sequence in main loop
- Forces reads from a cache memory
- Doubles memory read size
These changes exploit the way GPU architectures work, forcing the hardware to make use of more GPU features. ASIC designers would then have to be developing general purpose GPU’s instead of cheap ASIC chips, increasing their research costs immensely.
The keccak change to 32 bits matches most modern GPU’s word size. The random sequence computation requires advanced processing that cheap ASICs cannot reproduce cheaply. Reads from cache memory forces ASICs to have I/O functionality, while doubling the memory read sizes forces ASICs to spend more on expensive ultra fast cache memory chips.
According to the ProgPoW proposal, taking an average GPU and stripping out its graphics pipeline and floating point hardware in order to develop a dedicated mining machine would only increase performance by 1.2x using this scheme.
A 20% gain is hardly an incentive for mass production of ASICs.
Questions have been raised about ProgPoW’s ASIC-resistance capabilities.
According to Github user by the name of kik (kikx @ Twitter), ProgPoW’s 64 bit seed is too small.
— kikx (@kikx) March 4, 2020
In a short Github post, kik describes an exploit where all the heavy lifting in ProgPoW happens only once and then the accelerated ASIC hardware could repeat a fast loop until a block solution was found.
This would defeat the purpose of all the complexity added to ProgPoW by the higher memory consumption, word length, cache memory and I/O requirements by making only one computation expensive, with the heavy mining work being easily performed by inexpensive ASICs.
April 2020 Update
During all core devs meeting number 81, it was decided to adopt ProgPOW.
At the time of this writing, the Ethereum blog had not yet announced the decision officially.
Featured Photo Credit: 张楠赓 via Wikimedia Commons