####ProgPoW(程序工作量证明)是什么?
ProgPoW(程序工作量证明)是一种用于缩小显卡矿机与专用ASIC矿机效率差距的工作证明算法。设计目标是使算法与GPU矿机上的要求和可用性更相匹配,如果该算法用在ASIC矿机上去实现,那么与GPU矿机相比可能几乎没有比显卡矿机效率更高的机会。
通常认为在以工作量证明(POW )算法的挖矿中算法是固定的,可以设计硬件适应这个算法,让硬件在执行算法的时候变得更有效率。而在 ProgPoW 中,情况是反过来的:先有硬件然后再修改算法来匹配它。”
#####ProgPoW的主要特点是:
目前市场的主流显卡都支持上述特点。虽然定制的ASIC矿机也可以用该算法实现,但是可用的效率增加不大。唯一可用的优化是:
这些优化会使其效率增加大约1.1-1.2倍的。但也远远低于Ethash算法的2倍或Cryptonight算法的50倍。
####为什么ASIC矿机会受到POW币种的抵抗?
目前较多的担忧是因为ASIC的出现会导致算力大幅上涨,使POW挖矿更加的集中化,因此保持ASIC抗性一直是各币种挖矿去中心化的关键点。
以太坊采用Ethash算法,使用GPU显卡矿机挖矿一直是主流,很长一段时间并没有被ASIC矿机攻破。但在去年可挖以太坊的ASIC矿机如蚂蚁E3的出现,使得算力很大可能集中在少数持有大量ASIC矿机的矿工手上,使以太坊面临挖矿中心化问题。
所以在以太坊社区中反对ASIC的声音一直不断,ProgPow共识机制就是在这种情况下孕育而生的。ProgPoW并不是能带来更高的效率,相反它限制了ASIC矿机的算力,缩小特定功能的硬件之间的效率差,使其与GPU矿机的效率处在同一个相等的水平,换句话说ProgPow就是ASIC矿机的性能抑制器。
虽然“ASIC抗性”的目标很有价值,但“ASIC抗性”的概念还是有待论证。因为CPU和GPU本身也是ASIC。因此ASIC抗性的真正意义是:定制硬件与具有更广泛适用性的硬件的效率间的差异性。定制ASIC硬件与一般硬件之间的效率差异很小就意味着抗性高效性的和更优异算法。
####ProgPoW 的设计目的是什么?
ProgPoW 的设计始于 Ethash 并对其进行修改以尽可能多地提高商用 GPU 利用率。
Ethereum(以太坊) 使用的Ethash算法是一个内存密集型的工作量证明算法,在主流商用 显卡上可以很好地运行。Ethash 需要相当大的帧缓存和越大越好的带宽,而这两者就是 Ethash 需要的全部要求。这样就可以设计针对 Ethash算法的的专用 ASIC,其包含以下属性:
● 一个从DAG导入数据的高带宽内存接口(一般来说是GDDR6或者HBM2)
● 一个用于Keccak哈希计算的keccak引擎;
● 一个用于执行内部循环FNV和地址模运算的小型计算核心;
由此定制的ASIC将比现有GPU体积更小且能耗更低。高配置(GDDR6或者HBM2)的以太坊ASIC矿机可以达到GPU矿机挖矿性能的2倍。但因为以太坊社区抵制,威胁可能会修改算法,同时还有部分技术原因,比如比特大陆的E3因为采用的是DDR3内存,ASIC矿机相比GPU并没有多少算力优势。因此,以太坊ASIC矿机并没有得到大规模采用。
GTX1070执行Ethash时流式多处理器(SM)只有30% 不到的使用率。
对移除 Keccak 的GTX1070执行 Ethash 进行分析表明,显卡的计算核心实际上只有 20% 的利用率,还有 10% 的效率可以提升。
经过优化后,ProgPoW能大幅提高GPU计算能力。通过对Nvidia GTX1070运行ProgPoW测试结果表明,在内存利用率达到87.55%时,GPU计算核心的SM(streaming multiprocessor)利用率能达到87.95%。GTX1070执行能够立即使计算(即SM)和内存带宽饱和。
理论上专门用于执行 ProgPoW 的 ASIC 需要包括:
结果就是这种专用 ASIC矿机和现有的商用 GPU 非常相似。它只会略小一些,能耗比不会有太大差别。经过优化后的ASIC计算性能将只有目前GPU的1.1-1.2倍,大幅缩小ASIC和GPU之间的性能差距。
####ProgPoW 进展
对ProgPoW的争论从2018 年年初已经开始。
2019 年 1 月 初,以太坊开发社区暂时达成一致同意使用可以阻止 ASIC 矿机挖矿的 ProgPoW 算法。部署ProgPoW算法也在矿工、矿机制造商、开发者间引发了的争议。
● 矿机商指责ProgPoW开发团队成员或与芯片制造商Nvidia有关联或被收买的传言,对此,ProgPoW团队主要成员都进行否认。
● 以太坊矿工强烈要求部署ProgPoW算法提高GPU挖矿效率,避免算力集中在ASIC矿机商手中,应对以太坊区块奖励减少,一些矿工表示已经投入了数百万美元来建设 GPU 矿场,我们当然要为自己的利益着想,显而易见,ASIC 正在损害我们的利益。另一方面,我们挖矿也是因为相信以太坊本身。
● 有开发者宣称用ProgPoW客户端在分裂ETH。
此前矿机生产商 Linzhi曾发表声明要求搁置阻止ASIC的算法,呼吁以太坊开发团队发布关于ProgPoW算法矿机的清晰的规则和要求。Linzhi将开发针对 ETH 和 ETC 所使用的 Ethash 挖矿算法的 ASIC 矿机预计在 2019 年 4 月开始发售。
####Bitfly也在推特发起过调查征求网友关于以太坊替换PoW机制的看法。
根据目前的结果,44%的网友支持切换到ProgPoW,36%的网友支持切换到其他抗ASIC算法,3%的网友支持切换到其他ASIC友好型算法,而17%的网友认为应该保留Ethash。
以太坊资深研究人员Vlad Zamfir 发起过投票:
你是否支持通过硬分叉让以太 ASIC 矿机失效?
投票结果:6900 多人参与投票, 57% 的回应支持这一提议
Piper Merriam 以太坊社区内的开发者,在 Github 上发布 EIP#958,提出通过硬分叉让 ASIC 矿机失效
我们是否应该通过硬分叉改变挖矿算法,阻止 ASIC 挖矿?如果以太坊不做改变,我们是否应该分叉以太坊来表达我们抵抗 ASIC 的决心?
投票结果:1076 人支持分叉,45 人反对
对于ProgPoW,以太坊社区基金奖励金计划负责人Cassandra Shi在金色相对论访谈中提及:
“ProgPoW最大的改进是缩小ASIC和GPU采矿设备之间的性能差距,让网络能够更去中心化,这是一个非常表面的观点,其实背后有很多隐藏的trade off。这也是为什么升级到ProgPOW这个提案在社区里争议很大。”
在2018年9月的以太坊开发人员大会上,马丁霍尔斯特斯特文德透露,如果在确保技术基础的情况下,以太坊将会在下次规模更大的升级时“并行”推出、并实施一个名为“ProgPoW”共识机制更新。实际上,ProgPow 的基本原理与PoW相同,都是工作量证明,并且通过算力大小决定矿工收益。但是,ProgPoW 并不能带来更高的效率,却能够限制ASIC矿机算力,并使其和GPU矿机算力达到一个对等的水平。
马丁霍尔斯特斯特文德说道:
“我认为部署 ProgPoW 软件更新是一个非常好的变化,我希望以太坊网络能够尽快实施。”
不过,为了能够尽快驱逐 ASIC 矿工,马丁霍尔斯特斯特文德已经在此前某论坛发言时呼吁独立实施“ProgPoW”硬分叉升级,甚至可以和“君士坦丁堡”升级脱钩。他表示:
“如果我们最终决定将两个升级的区块数量设置成完全一样,那也不错,但这不是必需的。”
马丁霍尔斯特斯特文德还称,随后的以太坊成本优化硬分叉升级其实也可以和“ProgPoW”一起实施。
Reddit的帖子对这些问题进行了详细的阐述:
“在电话会议期间,推动ProgPOW被列入下一个分叉,这将在君士坦丁堡分叉后大约8个月,也更可能是10-11个月的时间段。因此,我们正在研究ProgPOW实施前12-14个月的时间表,也许是2019年9月至11月的某个时间。或者我认为新时间表是2019年 – 2020年初?
「以太坊爱好者」编辑 阿剑 表示
改变算法虽然抵抗了硬件制造上的集中化,但结果却是不同的开发者团体开始竞争对算法的支配权,而这也间接与一些制造商的利益有关,这个过程在我看来不过是用一种中心化来对抗另一种中心化,而且并没有更加透明。
也许这才是ProgPOW争论最正确的解读!