Introduction
Programmatic Proof-of-Work (a.k.a., ProgPoW) is a blockchain protocol consensus algorithm designed to reduce the mining efficiency advantage of specialized hardware like ASIC miners over less-advanced machines like a standard CPU, meaning average retail crypto participants could mine coins. Ever since the first bitcoin mining ASIC machines were built and used, a variety of new iterations on the original proof-of-work algorithm have been made with the intent of becoming “ASIC-resistant." The goal of “ASIC-resistance” is to avoid the centralization of proof-of-work mining power that would enable a protocol to be more easily manipulated by a few top participants. Specialized mining hardware can still solve this type of algorithm, but the efficiency gains from using specialized versus non-specialized hardware are minimal.
Monitor discussion on Twitter regarding new changes to protocols using or transitioning to ProgPOW here.
The principal technical components of this algorithm are, according to this GitHub explainer:
(a) Changes keccakf1600 (with 64-bit words) to keccakf800 (with 32-bit words) to reduce impact on total power
(b) Increases mix state.
(c) Adds a random sequence of math in the main loop.
(d) Adds reads from a small, low-latency cache that supports random addresses.
(e) Increases the DRAM read from 128 bytes to 256 bytes.
A simpler explanation comes from Bryant Eisenbach in this article about his skepticism of the ProgPOW algorithm.
"The idea is simple: programmatically reconfigure the Proof-of-Work algorithm at a regular interval (every 50 blocks) in such a way as to make the development of an ASIC (application-specific integrated circuit) that has significant enough performance to justify it’s cost impractical. The reconfiguration happens in such a way that the algorithm ends up utilizing nearly all the hardware available in the GPU, to ensure you get minimal gain by trying to optimize out specific hardware modules. This doesn’t mean such devices are impossible to produce, only that they are impractical enough that they are much less cost-effective for the performance they offer over our miner of choice: the GPU."
Suggested Reading
(1) Ethereum developer Martin Holst Swende explains in this blog post a number of reasons why he strongly supports ProgPOW specifically for the Ethereum blockchain. Swende explains that Ethereum has historically aimed to be an ASIC-resistant protocol and optimize for decentralization as much as possible. He also highlights the steps involved in Ethereum's transition to ProgPOW.
(2) Crypto-focused news outlet Trust Nodes compiled an exhaustive list of the various opinions and on-going discussion from top Ethereum developers regarding the ProgPOW algorithm in this article.
(3) A long r/EtherMining thread of reviews and discussion about many of the best hardware options for mining equipment aimed at protocols using a ProgPOW algorithm.