作者:?CoinMetricsTomBrand,UriKolodny&?AvihuLevy
翻译&校对:?闵敏?&阿剑
来源:以太坊爱好者
编者注:原标题为《观点|用Nonce分布追踪挖矿设备的变化》
ASIC引起巨大的争议
自比特币诞生初期开始,社区就一直在讨论是否要与日益强大的挖矿硬件作斗争。
刚开始的时候,用CPU来参与比特币挖矿还能赚到钱。在这种情况下,几乎每个人都有机会参与到比特币挖矿中,因为不需要使用定制的计算机硬件。
久而久之,一些矿工为了在挖矿竞赛中获得优势,开始使用越来越强大的硬件。后来,矿工开始使用GPU,即,更加强大的“图形处理单元”。GPU通常用于游戏和3D渲染,不过也可用于很多一般用途。虽然GPU在价格上比CPU贵得多,但是也在普通人的经济能力范围内。
之后又出现了ASIC。ASIC是“application-specificintegratedcircuit”的首字母缩写。它是一种专用型挖矿硬件,经过优化以适应特定的挖矿哈希算法。这些挖矿用的ASIC是为数字货币挖矿专门设计的,只能用来挖数字货币。在纯哈希算力方面,它比GPU强大得多。
ASIC改变了挖矿的经济形态。简言之,那些生产新型ASIC矿机的公司在整个挖矿行业占据了很大优势,因为这些公司在算力上占据优势,而且控制着市场上新发布的ASIC矿机的供应。由于生产一款新的ASIC硬件需要在前期投入巨额资本,只有少部分人能够加入这行。大矿工可以享受规模经济带来的额外效益,普通矿工很难与之竞争。
因此,已经有很多项目在尝试与ASIC对抗了。尤其是在2018年年初,比特大陆等矿机生产商宣布正在开发一款专挖门罗币的ASIC之时,项目方实行硬分叉来抵御ASIC,尽可能确保挖矿活动的去中心化。自此以后,项目方又进行了几次硬分叉,努力走在ASIC前面,以此阻碍ASIC的进一步开发。
以太坊自诞生以来,也在不断与ASIC作斗争,然而ASIC生产商现在正在努力追赶中。结果,以太坊社区内有很多人都在支持ProgPow实现?。ProgPow是对Ethash算法的修改版,可以帮助以太坊抵御ASIC。
尽管这些项目在坚持不懈地抵御ASIC,但是很难保证不被ASIC追上。在利益的驱使下,大矿工都在积极开发ASIC,因为在抗ASIC的区块链上,专用型挖矿硬件会带给他们比小矿工更大的优势。这就意味着,ASIC矿工和区块链开发者之间永远在玩猫捉老鼠的游戏。
走近Nonce
令人激动的是,检查区块nonce分布可以了解在特定区块链上ASIC挖矿的兴起情况,以及后续的抵御措施所产生的影响。
PoW挖矿就是反复对一个区块的区块头进行哈希计算,直到算出的哈希值小于协议定义的目标值为止。具体来说,就是将区块头作为一个输入值,然后代入某个密码学哈希算法进行计算,例如,比特币采用的是安全哈希算法256,而且是连续执行两次。
为确保每一次进行哈希计算时都会得到一个不同的哈希值,同时又不需要重新创建一个区块头,区块头为矿工提供了一个特殊的字段:nonce。nonce是一个可由矿工任意修改的数值,以便不断更改区块头来进行哈希计算,直至找到一个低于目标值的哈希值为止。nonce是一个数字,其范围可以从0到由各协议设置的上限。
从理论上来说,根据任何nonce算出有效哈希值的概率都是一样大的,因此可以认为nonce是经随机选择,并均匀分布的。然而,对许多区块链的数据分析表明,真正符合这一预期的区块链非常少。对此的解释有很多种,但是,因为nonce分布上的变化往往可以跟新矿机联系在一起,这表明不同的挖矿硬件往往会有不同的nonce挑选策略。
关于比特币区块链的nonce分布模式,似乎最早是推特用户@100TrillionUSD在2019年1月初发现不对的。进一步的分析表明,门罗、以太坊和莱特币等区块链的nonce分布模式也存在一些奇怪之处。
比特币
比特币的nonce分布模式是最著名的。在早期发展阶段,比特币采用了一种常见的模式:很多nonce都接近于0。这种分布对应的策略很简单,就是来通过不断增加nonce来计算哈希值。因为在早期的时候,比特币区块链上的算力很低,挖矿都是用的CPU,通常在遍历所有可能的nonce值之前就能算出一个有效的哈希值。SergioLerner据此事实对确定中本聪的比特币归属作了最为严肃的尝试?。
在引入了GPU之后,nonce字段看似是随机的。但是在大约400000的区块高度上,莫名出现了一种新的模式,形成了几条很细的nonce值分布带,这些都是矿工选择频率较低的nonce值。
BitMEX研究撰文详细描述了该模式,但是没有找到清晰的解释。
来看一下比特币区块nonce的直方图,明显可以看出在新的模式下,nonce值出现了几个低谷。
-红线代表了均匀分布的nonce值情况-
想要更细粒度的分析可以仔细看看bit的分布情况。比特币中的nonce字段是由4个字节或者说32个bit组成的。对每个长度为32比特的nonce的平均值进行分析之后,会发现一些很有趣的现象:
-颜色越深的地方代表nonce中的数位被设置成1而非0的频率越高,X轴表示区块高度-
在比特币刚诞生的时候,较高的数位通常被设置成0,因为矿工的nonce选择策略就是简单地增加nonce值。较低的数位似乎一直遵循某种模式,但是直到最近才发现较低数位的模式发生了变化。
门罗
适合进行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中的数位被设置成1而非0的频率越高,X轴代表了区块高度-
大概从第1380000个区块开始,nonce的中间数位被设置成0的频率远高于其他数位。久而久之,其他数位的随机性也下降了。有趣的是,粗略看一下整体的nonce分布情况或直方图,并不能发现这种模式,因为调整中间数位对nonce直方图的影响并不明显。
有趣的是,ETC的nonce数位分布也显示出了相同的模式。
-颜色越深的地方代表nonce中的数位被设置成1而非0的频率越高,X轴代表了区块高度-
从位于上图顶部的白色垂直条画带可以看出,一些矿工惯于从0开始增加nonce。
比特大陆于2018年4月宣布公开发布了第一款EthashASIC矿机,并表示将于2018年7月中旬交付第一批产品。将这两个日期在上图中标注出来后,我们会发现很有意思的东西:
-红色虚线:E3矿机官宣时间;红色实线:首批E3矿机交付时间-
乍看之下,在蚂蚁矿机E3官宣之时,以太坊和以太坊经典区块nonce中第41位的平均值都下降了。只关注这个数位的话,nonce分布模式就会更加明显:
-红色虚线:E3矿机官宣时间;红色实线:首批E3矿机交付时间-
在2018年3月中旬之前,第41位的平均值在0.5上下。但是,在以太坊和以太坊经典这两条链上,第41位被设置成0的频率越来越高,而且都是以相同的速度。在矿机按计划首次交付之时,平均值急剧下降,但这仅发生在以太坊区块链上。在以太坊和以太坊经典区块链上,第41位的平均值在2018年6月中旬就已经下降了,之后只在以太坊区块链上进一步下降。
-红色虚线:E3矿机官宣时间;红色实线:首批E3矿机交付时间-
来看一下当时排名前5的以太坊矿池,第41位的平均值均开始下降,但是自7月16日首批E3矿机交付之日起,中国的两家矿池SparkPool和F2Pool挖出的区块内,nonce第41位的平均值进一步下降了。
斗争不止
随着ProgPow算法的逼近,再加上门罗团队还在坚持不懈地通过硬分叉来抵御ASIC,这场与专用硬件之间的战争可能还会持续下去。随着战争的持续,我们会密切关注下去,并且继续从nonce中寻找蛛丝马迹。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。