观点 | 检查区块Nonce分布追踪挖矿设备的变化

网络转载 4800 2019-11-21 18:30

作者:  Coin MetricsTom Brand, Uri Kolodny & Avihu Levy

翻译 & 校对: 闵敏 & 阿剑

来源:以太坊爱好者

编者注:原标题为《观点 | 用 Nonce 分布追踪挖矿设备的变化》

 

ASIC 引起巨大的争议

自比特币诞生初期开始,社区就一直在讨论是否要与日益强大的挖矿硬件作斗争。

刚开始的时候,用 CPU(大多数计算机采用的标准处理单元)来参与比特币挖矿还能赚到钱。在这种情况下,几乎每个人都有机会参与到比特币挖矿中,因为不需要使用定制的计算机硬件。

久而久之,一些矿工为了在挖矿竞赛中获得优势,开始使用越来越强大的硬件。后来,矿工开始使用 GPU ,即,更加强大的 “图形处理单元”。GPU 通常用于游戏和 3D 渲染,不过也可用于很多一般用途。虽然 GPU 在价格上比 CPU 贵得多,但是也在普通人的经济能力范围内。

之后又出现了 ASIC 。ASIC 是 “application-specific integrated circuit(专用集成电路)” 的首字母缩写。它是一种专用型挖矿硬件,经过优化以适应特定的挖矿哈希算法。这些挖矿用的 ASIC 是为数字货币挖矿专门设计的,只能用来挖数字货币。在纯哈希算力方面,它比 GPU 强大得多。

ASIC 改变了挖矿的经济形态。简言之,那些生产新型 ASIC 矿机的公司在整个挖矿行业占据了很大优势,因为这些公司在算力上占据优势(至少在被其他 ASIC 生产商超越之前是如此),而且控制着市场上新发布的 ASIC 矿机的供应。由于生产一款新的 ASIC 硬件需要在前期投入巨额资本,只有少部分人能够加入这行。大矿工可以享受规模经济带来的额外效益,普通矿工很难与之竞争。

因此,已经有很多项目在尝试与 ASIC 对抗了。尤其是在 2018 年年初,比特大陆等矿机生产商宣布正在开发一款专挖门罗币的 ASIC 之时,项目方实行硬分叉来抵御 ASIC ,尽可能确保挖矿活动的去中心化。自此以后,项目方又进行了几次硬分叉,努力走在 ASIC 前面,以此阻碍 ASIC 的进一步开发。

以太坊自诞生以来,也在不断与 ASIC 作斗争(自 1.0 版本发布以来,以太坊的哈希算法 Ethash 已经被设计成抗 ASIC 型的了),然而 ASIC 生产商现在正在努力追赶中。结果,以太坊社区内有很多人都在支持 ProgPow 实现 。ProgPow 是对 Ethash 算法的修改版,可以帮助以太坊抵御 ASIC 。

尽管这些项目在坚持不懈地抵御 ASIC ,但是很难保证不被 ASIC 追上。在利益的驱使下,大矿工都在积极开发 ASIC ,因为在抗 ASIC 的区块链上,专用型挖矿硬件会带给他们比小矿工更大的优势。这就意味着,ASIC 矿工和区块链开发者之间永远在玩猫捉老鼠的游戏。

 

走近 Nonce

令人激动的是,检查区块 nonce 分布可以了解在特定区块链上 ASIC 挖矿的兴起情况,以及后续的抵御措施所产生的影响。

PoW 挖矿就是反复对一个区块的区块头进行哈希计算,直到算出的哈希值小于协议定义的目标值为止。具体来说,就是将区块头作为一个输入值,然后代入某个密码学哈希算法进行计算,例如,比特币采用的是安全哈希算法 256 (Secure Hash Algorithm 256,SHA-256),而且是连续执行两次。

为确保每一次进行哈希计算时都会得到一个不同的哈希值,同时又不需要重新创建一个区块头,区块头为矿工提供了一个特殊的字段:nonce 。nonce 是一个可由矿工任意修改的数值,以便不断更改区块头来进行哈希计算,直至找到一个低于目标值的哈希值为止。nonce 是一个数字,其范围可以从 0 到由各协议设置的上限。

从理论上来说,根据任何 nonce 算出有效哈希值的概率都是一样大的,因此可以认为 nonce 是经随机选择,并均匀分布的。然而,对许多区块链的数据分析表明,真正符合这一预期的区块链非常少。对此的解释有很多种,但是,因为 nonce 分布上的变化往往可以跟新矿机联系在一起,这表明不同的挖矿硬件往往会有不同的 nonce 挑选策略。

关于比特币区块链的 nonce 分布模式,似乎最早是推特用户 @100TrillionUSD 在 2019 年 1 月初发现不对的。进一步的分析表明,门罗、以太坊和莱特币等区块链的 nonce 分布模式也存在一些奇怪之处。

 

比特币

比特币的 nonce 分布模式是最著名的。在早期发展阶段,比特币采用了一种常见的模式:很多 nonce 都接近于 0 。这种分布对应的策略很简单,就是来通过不断增加 nonce 来计算哈希值。因为在早期的时候,比特币区块链上的算力很低,挖矿都是用的 CPU ,通常在遍历所有可能的 nonce 值之前就能算出一个有效的哈希值。Sergio Lerner 据此事实对确定中本聪的比特币归属作了最为严肃的尝试 。

在引入了 GPU 之后,nonce 字段看似是随机的。但是在大约 400000 的区块高度上,莫名出现了一种新的模式,形成了几条很细的 nonce 值分布带,这些都是矿工选择频率较低的 nonce 值。

BitMEX 研究撰文详细描述了该模式,但是没有找到清晰的解释。

来看一下(整个历史交易过程中)比特币区块 nonce 的直方图,明显可以看出在新的模式下,nonce 值出现了几个低谷。

-红线代表了均匀分布的 nonce 值情况-

想要更细粒度的分析可以仔细看看 bit 的分布情况。比特币中的 nonce 字段是由 4 个字节或者说 32 个 bit 组成的。对每个长度为 32 比特的 nonce 的平均值进行分析之后,会发现一些很有趣的现象:

-颜色越深的地方代表 nonce 中的数位被设置成 1 而非 0 的频率越高,X 轴表示区块高度-

在比特币刚诞生的时候,较高的数位通常被设置成 0 ,因为矿工的 nonce 选择策略就是简单地增加 nonce 值。较低的数位(上图底部的最后 8 个数位)似乎一直遵循某种模式,但是直到最近才发现较低数位的模式发生了变化。

 

门罗

适合进行 nonce 分析的最有趣的资产之一就是门罗。它也是被分析得最多的一种资产,有很多文章和工具都对其进行了分析。

门罗每 6 个月就会进行一次硬分叉升级,在过去的几次升级中还对 PoW 算法进行了一些调整,从而抵御专用型挖矿硬件。第一次硬分叉引发了争议,因为它分叉出了好几个项目/资产。

因此,我们可以研究这些变化对 nonce 分布的影响。

乍一看,我们可以注意到几个有趣的现象。不过当我们在上图的基础上叠加网络难度值和硬分叉时间表的时候,就会发现更有趣的东西。

-红线代表了硬分叉的时间,而黑线代表了网络难度值-

我们可以看到,所有三次 PoW 升级都造成了难度值降低,其中还有两次改变了原先的 nonce 分布模式。有趣的是,通常都是在网络难度值骤增的情况下,才引入了 新的 nonce 模式。

在网络难度值发生了改变,并且通过硬分叉对 PoW 机制进行调整之后,我们可以从 nonce 分布模式的变化中观察到,第一次分叉有效地抵御了第一代矿机。此外,我们还可以看到,一些矿工在第二次分叉之后迅速带着第二代矿机卷土重来,却在第三次分叉中折戟沉沙。

 

以太坊

乍一看,以太坊的 nonce 分布几乎没有显示出任何奇怪之处。

再看得仔细一点,我们可以看到在区块高度 7,000,000 之后,nonce 分布图的底部有一些深色的水平线。如果你放大看的话,你就会看到从区块高度 2,000,000 开始到 4,000,000 之间,nonce 分布图的底部有一些斜线。这些线很有可能是由简单的 nonce 选择策略导致的:在反复进行哈希运算的过程中, nonce 是从 0 开始向上递增的。

根据区块 nonce 分布直方图所示,较低的 nonce 值在一段时间内占据了优势:

但是,仔细观察一下 nonce 中每个数位的平均值随时间变化的情况,会注意到一个很有趣的情况(请注意,以太坊的 nonce 是由 64 个数位组成的,不像比特币是由 32 个数位组成的。)

-颜色越深的地方代表 nonce 中的数位被设置成 1 而非 0 的频率越高,X 轴代表了区块高度-

大概从第 1380000 个区块开始,nonce 的中间数位被设置成 0 的频率远高于其他数位。久而久之,其他数位的随机性也下降了。有趣的是,粗略看一下整体的 nonce 分布情况或直方图,并不能发现这种模式,因为调整中间数位对 nonce 直方图的影响并不明显。

有趣的是,ETC(以太坊经典)的 nonce 数位分布也显示出了相同的模式。

-颜色越深的地方代表 nonce 中的数位被设置成 1 而非 0 的频率越高,X 轴代表了区块高度-

从位于上图顶部的白色垂直条画带可以看出,一些矿工惯于从 0 开始增加 nonce。

比特大陆于 2018 年 4 月宣布公开发布了第一款 Ethash ASIC 矿机,并表示将于 2018 年 7 月中旬交付第一批产品。将这两个日期在上图中标注出来后,我们会发现很有意思的东西:

-红色虚线:E3 矿机官宣时间;红色实线:首批 E3 矿机交付时间-

乍看之下,在蚂蚁矿机 E3 官宣之时,以太坊和以太坊经典区块 nonce 中第 41 位的平均值都下降了。只关注这个数位的话,nonce 分布模式就会更加明显:

-红色虚线:E3 矿机官宣时间;红色实线:首批 E3 矿机交付时间-

在 2018 年 3 月中旬之前,第 41 位的平均值在 0.5 上下(下图中的灰色水平虚线表示的是 nonce 呈均匀分布情况下的预期值)。但是,在以太坊和以太坊经典这两条链上,第 41 位被设置成 0 的频率越来越高,而且都是以相同的速度。在矿机按计划首次交付之时(即 2018 年 7 月 16 日,以红色实线表示),平均值急剧下降,但这仅发生在以太坊区块链上。在以太坊和以太坊经典区块链上,第 41 位的平均值在 2018 年 6 月中旬(即,首批 E3 矿机交付前的一个月)就已经下降了,之后只在以太坊区块链上进一步下降。

-红色虚线:E3 矿机官宣时间;红色实线:首批 E3 矿机交付时间-

来看一下当时排名前 5 的以太坊矿池,第 41 位的平均值均开始下降,但是自 7 月 16 日首批 E3 矿机交付之日起,中国的两家矿池 SparkPool 和 F2Pool 挖出的区块内,nonce 第 41 位的平均值进一步下降了。

 

斗争不止

随着 ProgPow 算法的逼近,再加上门罗团队还在坚持不懈地通过硬分叉来抵御 ASIC ,这场与专用硬件之间的战争可能还会持续下去。随着战争的持续,我们会密切关注下去,并且继续从 nonce 中寻找蛛丝马迹。

(完)

声明

1. 本文经授权发布,如若转载,请标注文章来源和作者;

2. 伊甸网登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述;

3. 文章内容仅供参考,不构成投资建议,投资者据此操作,风险自担。