主页 > 钱包imtoken官网 > 以太坊矿工们呼声最高的 ProgPoW 是什么?

以太坊矿工们呼声最高的 ProgPoW 是什么?

钱包imtoken官网 2023-04-22 05:39:12

“在 PoW 挖矿中,通常设计硬件是为了让算法更高效。但相反,ProgPoW 先拥有硬件,然后修改算法以匹配它。”

- IfDefElse,ProgPoW 开发人员

以太坊的君士坦丁堡硬分叉又起起落落。由于在以太坊改进提案 (EIP) 1283 中发现了一个重大安全漏洞,计划中的位于区块高度 7,080,000 的君士坦丁堡硬分叉已被推迟到下周一(1 月 21 日)。

这次硬分叉除了提升以太坊的性能外,最吸引矿工和投资者关注的就是以太坊区块奖励从 3 ETH 减少到 2 ETH 以及难度炸弹延迟 12 个月。

虽然此前备受矿工关注的 ProPOW 在 1 月 4 日的以太坊核心开发者大会上被开发者同意引入,但并未在君士坦丁堡硬分叉中实施。

君士坦丁堡硬分叉协调负责人 Afri 5chdn 在接受 Golden Finance 采访时表示以太币矿机制造,在安静阶段开始之前,以太坊将在 2019 年 10 月左右实施另一个硬分叉——伊斯坦布尔硬分叉,并在 ProgPoW 机制中引入伊斯坦布尔硬分叉。ProgPoW 算法将在下一次以太坊核心开发会议上决定。

虽然以太坊从诞生之初就已经抗 ASIC,但 ProgPoW 算法的部署也引起了争议,涉及矿工、矿机制造商和开发者。

矿工指责可能由 GPU 芯片制造商 Nvidia 资助的 ProgPoW 开发团队成员;ProgPoW 团队的主要成员否认;以太坊矿工强烈要求部署ProgPoW算法,以提高GPU挖矿效率,避免算力集中在ASIC矿工手中,以应对以太坊区块奖励的减少;一些开发者声称使用 ProgPoW 客户端来拆分 ETH。

那么在以太坊社区引发热议的 ProgPoW 是什么?ProgPoW 如何弥合 GPU 挖矿和 ASIC 之间的差距?要知道这些答案,你需要知道 ProgPoW 对 Ethash 做了哪些改进。

Ethash算法

以太币矿机制造

PoW是一个概念的总称,算法实现有很多。以太坊目前使用的具体 PoW 算法是 Ethash,它是 Dagger-Hashimoto 算法的变种。

Hashimoto 算法针对 ASIC 采用了 IO 饱和策略,使得内存读取成为 PoW 挖矿过程中的限制因素。Dagger算法利用DAG(有向无环图-有向无环图)同时实现了内存难处理和内存易验证两个特性。主要原理是挖掘过程需要存储完整的 DAG 数据,同时在计算每个 nonce 时,需要提取 DAG 中的部分数据。

由于选择了该算法,挖矿计算性能的瓶颈在于内存大小和内存带宽,与哈希算力关系不大。比如NVIDIA GTX1070执行Ethash,当内存利用率达到88.3%时,作为显卡计算核心的SM(streaming multiprocessor)只有27.7百分比利用率。

同时,大规模部署共享内存的ASIC矿机并不能带来同等比例的挖矿效率线性提升。

Ethash算法的一般流程如下:

1、首先根据区块信息计算一个种子;

2、使用这个种子来计算一个 16MB 的缓存数据。

3、 通过缓存,计算出一个1GB(初始大小)的数据集(DAG)。DAG 可以理解为一个完整的搜索空间。所有客户端和矿工都需要存储完整的 DAG。

以太币矿机制造

4、挖矿:需要从DAG中反复随机抽取64条数据,与其他数据一起计算mixhash(如下图)

c55526dfd67af142f1e0ee61a212505d

在早期的以太坊和 Solidity 智能合约代码中,Keccak 和 SHA3 是同义词。在 2015 年 8 月 NIST 标准化 SHA3 之后,标准的 SHA3 和 Keccak 算法有所区别。为了避免与 NIST 标准 SHA3 混淆,目前的代码直接使用 Keccak 作为函数名。

每次 Ethash 从 DAG 中随机获取 64128 bit=8192 Bytes 的数据。以GTX 1070显卡为例,带宽为256GB/s以太币矿机制造,那么每秒可以承受256*1024*1024*1024/8192=33554432次Ethash操作,也就是33MH/s的算力。

Ethash 的专用 ASIC

这可以通过为需要执行的命令定制专用硬件来解决,例如 Keccak,在 Ethash 的开头和结尾调用的哈希函数,可以在 ASIC 上更有效地执行。

对于 Ethash,专用 ASIC 可以使用大约三个专用功能来提高计算性能:

用于从 DAG 导入数据的高带宽内存接口(通常是 GDDR6 或 HBM2)

以太币矿机制造

用于 Keccak 哈希计算的 keccak 引擎;

一个小型计算核心,用于执行内循环 FNV 和地址模运算;

由此产生的专用 ASIC 将比现有 GPU 更小,功耗更低。以太坊 ASIC 矿机高配置(GDDR6 或 HBM2) 可以达到 GPU 矿机两倍的挖矿性能。

事实上,主要矿工已经推出了以太坊 ASIC 矿机。2018年4月,比特大陆推出以太坊ASIC矿机E3,芯动科技于2018年7月推出以太坊ASIC矿机A10。但由于以太坊社区的抵制,威胁可能修改算法,也存在一些技术问题。原因,比如比特大陆的 E3 因为使用了 DDR3 内存,ASIC 矿机相对 GPU 没有太多的算力优势。结果,以太坊 ASIC 矿工没有看到大规模采用。

目前比特大陆的E3在官网只卖二手矿机,芯动科技官网没有A10 ETHmaster矿机在售。

ProgPoW 做了哪些改变

ProgPoW,Programmatic Proof-of-Work 的缩写。文章开头提到,为了匹配当前主流GPU的硬件特性,ProgPoW算法主要做了以下改进:

1、将 keccak_f1600(64 字节字)更改为 keccak_f800(32 字节字)。32字节是当前主流GPU一次运算处理的实际位数。

以太币矿机制造

2、在主循环中添加了一个数学随机序列。当今的 GPU 计算内核包含大量暂存器,可为高吞吐量可编程数学单元提供信号。Ethash 的内部循环从 DAG 加载开始,然后使用 FNV 将数据合并为小的混合状态。ProgPoW 添加了一系列随机数学指令和随机缓存读取,进而合并为更大的混合状态。

3、DAG 数据读取大小从 128 字节增加到 256 字节。目前主流的GPU DRAM是32位(32*8=256字节),这样ProgPoW可以在目前的DRAM设备上更高效的执行;

4、GPU 有少量暂存器内存,允许快速处理访问随机地址,ProgPoW 也利用了 GPU 的这一特性。

迭代操作的次数,即对 DAG 的访问次数保持不变,仍然是 Ethash 的 64 倍。

经过优化,ProgPoW 可以大大提升 GPU 的计算能力。Nvidia GTX1070 运行 ProgPoW 测试结果表明,当内存利用率达到 87.55% 时,GPU 计算核心的 SM(流式多处理器)利用率可以达到 87.95%。

ProgPoW 显着缩小了 ASIC 和 GPU 之间的性能差距

理论上,仍然有可能制造专用于执行 ProgPoW 的 ASIC。但是这个ASIC不仅需要高带宽的内存接口和小的Keccak+KISS99引擎;它还需要一个具有大寄存器、大量随机数学能力以及高吞吐量、低延迟、大存储缓存的计算核心。

实际结果是,这种专用 ASIC 将与现有 GPU 非常相似。优化后的ASIC计算性能将仅为当前GPU的1.1-1.2倍,大大缩小ASIC与GPU的性能差距。

以太币矿机制造

考虑到开发 ASIC 的巨大成本和以太坊社区的抵制,开发以太坊 ASIC 的极低性价比也会让矿工主动远离以太坊。

事实上,是否抵制ASIC本身就是有争议的。因为在一些人眼里,GPU也是某种形式的ASIC。可以预料,算力大战不会结束。

因为计算能力是加密世界的力量源泉。

参考:

了解 ProgPow 算法

以太坊 Ethash 哈希算法的工作原理

ETH-Pow 算法分析

了解 ProgPOW

ProgPOW——一种程序化的工作证明

ProgPoW 团队承认他们正在与 Nvidia 和 AMD 合作