My stance on progpow
Below are my reasons for supporting Progpow. This post may change over time, if I change my opinion or add more thoughts on the matter.
Ethash was pretty well designed. After a couple of years, the first ASICs started coming, from two manufacturers, Innosilicon and Bitmain. These were not dramatic improvements, compared to other ASIC-adaptations of POW mechanisms.
- The second generation EThash asics are in the works. Rumored to be quite a lot more powerful (7x improvements are rumored). We can’t really know if those are already mining somewhere.
- There exist FPGA accelerators for ETHash, which ‘exploit’ the fact that offloading keccak can speed up the calculation.
So at this point, while we know that ETHash was ‘pretty good’, we also know that it suffers from a few flaws. These are fixed by progpow.
Progpow modifies ETHash to be even more GPU-friendly. This means that the already pretty slim margins for creating an ETHash-asic become extremely slim indeed,
- which has a significant impact on the ROI for developing and manufacturing a progpow asic.
- Additionally, if Ethereum proves a willingness to switch PoW, this further disincentivizes future Ethereum asic development.
My personal belief is that no progpow asic will ever be produced – and if it is produced, the scale will be kept low enough to fly under the radar – since large scale production, and wide-spread use, creates the risk of the hardware becoming bricked again.
A progpow asic producer is not only in a race against Ethereum PoW developments, but also in an arms-race against Nvidia and AMD. Their next-gen asic also needs to beat the next-gen GPU.
The path already taken
Ethereum has historically been aimed to be ASIC-resistant.
We should not consider original intent as sacred – and please don’t think that’s the argument I’m making here.
However, to me, this means that the ‘conservative’ route forward is to keep this model. And conversely, if we are to change this model, then the burden of proof for why we should change this model is on the progpow opponents.
I think we should keep this aim unless we have very good reasons not to do so. A change in that policy should be an explicit decision based on rational discussion.
If we remain with ETHash, a miner / mining farm have the following option:
- Buy asic(s) from one of three manufacturers (Innosilicon, Bitmain or Linzhi). In practice, if Linzhi develops and releases a next generation asic miner, that means the miner needs to get their latest asic to stay in the game.
That is an incredible monopoly to hold –
- Can they possibly supply the entire mining ecosystem?
- Would they even want to - since that would undercut their own prices?
- Could you import those into any country, with import/export regulations and taxes?
If you are on their blacklist, they might not even sell to you.
Today, mining farms exist geographically spread – north america, iceland, china etc.
If we stay on ETHash,
- mining will be centralized to a group of chinese miners who have the right ties to get hold of the latest hardware.
If we switch to Progpow,
- existing mining farms can continue to operate where it makes sense for them to operate; depending on factors such as cost of electricity, cooling, space etc.
- GPUs can be acquired from anywhere in the world, and although there are two manufacturers (Nvidia/AMD), Ethereum miners are only a small part of the global market of GPU cards.
- There can be global mining competition, instead of an oligopoly.
Proof of stake transition
An ASIC ecosystem of miners means that there is nothing else for that piece of hardware to do, other than mine that particular coin. There are two sides to that coin:
- Since the asic miners are more vested in the coin, they are incentivized to not mount attacks against that coin, since it lowers the value of their hardware. This is one argument in favour of ASIC.
- Since the asic miners are more vested in the coin PoW, they are incentivized to mount any and all resistance possible against switching to PoS. This is an argument against ASIC.
These arguments are both good, in my opinion. However, the first argument means that ASICs would be less incentivized to attack Ethereum than GPU miners. During the lifetime of Ethereum, this is not something we have had problems with. So while I concur that it’s a theoretically valid point, I would not choose the benefit of (1) at the expense of (2).
The GPU ecosystem, on the other hands, can find other uses for their hardware when Ethereum transitions to PoS.
Why we should adopt progpow
So, above are the reasons about why I support progpow. There are a couple of more reasons why I also think that Ethereum should go forward with the switch to progpow.
- Community. As far as I’ve seen, most signals point to ‘the community’ wanting to go ahead with progpow. This has been shown both via coinvote and a running mining signalling.
- The carbon vote at the time of writing this, has
94% yes. That is almost 3 million ether voted yes, against
184K ether voting no.
- The miner vote at the time of writing, shows that
77% of all miners voted, and all votes were pro progpow.
- Known “evils”. If we switch to progpow, we will keep the ‘same’ ecosystem of miners around. These miners represent a large base of active Ethereum users, many who have been Ethereum enthusiasts from early on.
- Small overhead. I have taken part of the behind-the-scenes work on all hardforks since TheDao fork. I set up Hive to perform blackbox consensus-testing across clients, performed differential fuzzing on EVMs for the last couple of hardforks, and personally discovered a number of consensus vulnerabilities in mainnet clients. In my view, a hardfork which updates ethash-hashimoto to ethash-progpow will be the simplest fork we have ever done. The reason for this is that it touches nothing on the complicated parts: The execution engine (EVM) and the state transition function (rewards/refunds/post-process-cleanups). It is a simple matter of verifying a different block envelope.
I’m not married to the progpow proposal – this is not a hill I’m willing to die on. But based on technical merits and community signals, I think it is the right thing to do, and I think it’s worth doing,
Edits: I originally wrote Intel when I meant Nvidia