风险提示:请理性看待区块链,树立正确的货币观念和投资理念,不要盲目跟风投资,本站内容不构成投资建议,请谨慎对待。 免责声明:本站所发布文章仅代表个人观点,与CoinVoice官方立场无关

一文说透 Nonce 的非随机性来源

加密谷Live
2020年04月10日

一文说透 Nonce 的非随机性来源

作者 | Karim Helmy 和 Coin Metrics 团队
随着 BTC 进入下一次减半,BTC 网络正在经历一些重大转变。除了回报调整而带来的挖矿收益的剧烈变化之外,比特大陆的 Antminer S17 正在取代长期以来的 S9 系列矿机,成为网络上的主流挖矿硬件。S9 系列中的第一款挖矿机 Antminer S9 在 2016 年由比特大陆发布,并迅速成为最受欢迎的 SHA-256 挖矿机。因此,BTC 网络多年来都没有经历过这样的转变。 由于缺乏关于单个矿机所使用的挖矿硬件类型的公开数据,衡量这种转变的速度是挺困难的。不过,有一个意外的数据来源确实为挖矿硬件的趋势提供了一些线索:网络的 nonce 分布。矿机将这些任意数字作为每个区块的哈希值的一部分包含在其中,这些任意数字的排列方式则可以暗示这些年来挖矿硬件使用情况的变化。 在上一期的《State of the Network Issue》中,我们研究了如何利用 nonce 分布图案来发现 ASIC 的崛起。在本期中,我们将进一步挖掘 BTC 的 nonce 分布的特殊性,以及分布纹(distribution striations)背后的来源来研究近期挖矿硬件的变化。然后,我们将按挖矿池来分解这些数据,这样就可以更细化地了解这些矿池所使用的硬件。

金色弹珠—了解采矿过程

挖矿是 BTC 安全图案的一个重要组成部分,可以说是对历史上之前的数字货币创建尝试的最重要的改进。虽然挖矿的意义相当复杂,但其背后的概念却相对简单易懂。 从挖矿者的角度来看,挖区块就像从一个袋子里不放回地反复挑选弹珠。在这个比喻中,弹珠的数量非常多,其中蓝色弹珠的比例很大,而金色弹珠的比例很小。如果矿机从袋子里能够挑选出金色弹珠就能获得报酬。 用更多的技术术语来解释的话就是 BTC 矿机们争相寻找一个 nonce,当这个 nonce 被附加到将要产生的新的区块头部(header)上时,会结合特定的网络难度参数来确定出一定值的哈希值。矿机们通过猜测值并检查所得到的散列值是否低于某个阈值,来寻找这个只能使用一次的 nonce。第一个为找到这样一个值并向网络广播的矿机将获得选择和排序区块内的所有交易的权利,这就成为这些交易最终被认为是有效的重要一环。 作为回报,矿机还可以从区块奖励中获得报酬,并从区块中包含的任何交易中相应的交易费用,这两方面的报酬都是以 BTC 的形式中获得的。根据 SHA-256 散列函数的性质,任何给定区块 nonce 的分布都是随机的,只能通过蛮力计算,否则无法找到这一 nonce。 因为区块头部中包含了对这些 BTC 形式交易的引用,所以实际上每个挖矿实体都是从不同的分布中取样的。换句话说,每个实体都是从不同的袋子中抽取弹珠,其中每个袋子中包含相同数量的弹珠,但预期中蓝色弹珠和金色弹珠的预期比例是相同的。 金色弹珠的比例是由网络的难度参数决定的,并且在相应的时期内是固定的。而难度参数则由网络自动调整。如今,由于区块难度和随机方差较大,通常某个特定区块的头部是没有挖出金色弹珠对应的 nonce 的。换句话说,有些袋子是不含金色弹珠的。 矿机如果用尽了一个将要产生的下一个区块的 nonce 空间,那么会通常会增加区块的时间戳以生成新的 nonce。也就是说,当矿机挑选完当前袋子的弹珠会,他们会抓起一个新的且满的袋子。如果时间戳已经到了进一步调整将使其失效的地步,矿机必须调整包含在区块中的交易集。类似地,如果一个矿机的房间里的袋子用完了,他们需要从另一个房间里再抓一些继续挑选,而这一过程在时间上是很紧凑的。 为了增加他们在固定的时间内找到金币的概率,矿机们可以并行化计算,这类似于用一只手成把地抓取弹珠,而不是一次取一个。通过使用适用于该任务的硬件,特别是图形处理单元(GPU)和被称为 ASIC 的专用芯片就可以实现这一寻找 nonce 的过程。ASIC 在并行化方面的效率比任何替代方案都要高得多,如今,ASIC 几乎占到了网络的所有计算能力(即哈希功率)。 在另一种形式的并行化中,几个矿机协调配合他们寻找随机数的过程,并同意分割其中获得的报酬。这种策略既减少了矿机支付和收入相关费用的规模和差异性,而且不会改变预期的长期收益。以这种方式行事的矿机群体被称为矿池。矿池的经营者通常收取费用,每个矿机同意支付这笔费用,以换取这一减少收入波动的好处。

BTC nonce 分布

每隔两周 BTC 的难度参数就会调整一次,如果网络上的计算量保持不变,平均每十分钟就会产生一个新的区块。这一特性确保了网络在哈希功率可能发生巨大变化的情况下仍能继续运行。在一个由并行化计算 nonce 的矿池中所主导的充分竞争的挖矿市场中,我们非常想看到能够挖出 BTC 的 nonce 随着时间的推移对每个人来说的分布都是静态相同的。但令人惊讶的是,事实并非如此。
一文说透 Nonce 的非随机性来源
在上图的左侧 nonce 并不随机,这可由不断进行迭代测试从 0 开始的值(即挖矿行为)来解释,如果一个矿机在 CPU 上不进行并行化挖矿,而且是作为个体进行挖矿(因此不可能与所谓矿池中的其他成员发生碰撞),那么这个策略和其他策略一样有效,因为每个新区块的 nonce 分布是独立的。而后来这种图案的消失恰好与 GPU 矿机的引入同时发生,而 GPU 矿机实现了计算的并行化。 在该图的右侧附近,出现了一个条纹状的区域,其中有极少 nonce 的区域。据我们所知,这一异常现象是由 Twitter 用户 @100TrillionUSD 在 2019 年 1 月首次注意到的。下图将条形区域做了标记。
一文说透 Nonce 的非随机性来源
不久之后,BitMEX 的一篇研究文章就以这个奇怪的图案为主题,推测这个异常现象是 AsicBoost (一种有争议的挖矿优化技术)的实现中的一个巧合造成的。 AsicBoost 有两类:Covert AsicBoost—无法在链上明确观察到;Overt AsicBoost 则是可以。BitMEX 研究团队讨论了这两类 AsicBoost,但特别感兴趣的是 Covert AsicBoost 的效果,随着 2017 年 8 月 SegWit 的激活,非空区块几乎不可能使用 Covert AsicBoost。研究人员无法证实他们的假说。 条纹的图案表明,矿机们正在系统性地对某些可能的非空区块的特定范围进行欠采样。通过将某些范围排除在采样之外,矿机们有效地将他们的弹珠分配至不同的袋子里面,并拒绝从某些袋子中取出弹珠。在预期中每个袋子的颜色比例是相等的,所以矿机们不会因为这样做而改变第一次尝试就选到黄金弹珠的概率。由于每个袋子里的弹珠数量非常多,所以在反复采样时,采用这种策略所造成的影响很小。但是,这种策略确实增加了矿机必须抓取一袋新的弹珠的频率,这种代价可能是很昂贵的。由于每个挖矿实体都是从自己的分布中取样,其他矿池无法通过策略取样以通过其他挖矿实体在他们自己袋子的比例预期来使得自己可以先人一步。 2019 年 10 月,《State of the Network Issue》第 23 期深入研究了比特币的 nonce 分布,并指出了这种条纹图案。此后,条纹图案已经褪去,最近被挖出的区块的 nonce 分布似乎更加随机。 nonce 分布的异常似乎与 AsicBoost 没有直接关系。Overt AsicBoost 在 2017 年变得不可用,而启用 Overt AsicBoost 的首次固件更新是在 2018 年 10 月公开发布的,但这两个日期之间的纹路清晰可见。此外,虽然公开 AsicBoost 的使用率仍然很高,但是在有或者没有用 AsicBoost 挖出的区块中,纹路已经不明显。
一文说透 Nonce 的非随机性来源
相反,nonce 分布中的图案可能是由比特大陆的 Antminer S7 和 S9 系列矿机采样 nonce 的方式造成的,这可能是优化的一个意外的副作用,最终对矿机和网络都是无害的。 S7 和 S9 系列分别使用 BM1385 和 BM1387 芯片,其中 S7 和 S9 系列包含多个相关型号。每条矿机线在网络上占据主导地位的时期,对应于比特币的 nonce 分布图案的一个明显阶段。 观察网络上所有的 nonce 值时,条纹状的图案首先在 2015 年年底变得明显,与当年 8 月下旬发布的 S7 和 9 月下旬的订单兑现相吻合。 2016 年 5 月下旬,Antiminer S9 发布,当年 6 月中旬,第一批购买者就收到了订单。此后不久,随着 S9 在 2016 年年底被 S7 取代 S7 成为网络上的霸主矿机,条纹变得更加狭窄。 这一图案近期的崩盘,恰好是 S9 向网络上的霸主矿机 S17 的过渡时期。虽然 S17 是在 2019 年 4 月发布的,但直到最近 S9 在网络上的使用还是比较普遍的(因为 S9 的使用是比较经济的)。

矿池分析

通过按每个区块的矿机来对数据集进行分层,这样就可以更精细地观察到 nonce 的分布情况。识别一个区块的矿机相对简单,但有几个注意事项。 区块的矿机通常是通过区块的 coinbase 数据字段(coinbase data field)中留下的标签来识别。这些标识符是自愿和可伪造的:矿工不需要留下信息,也可以选择留下另一个池的标签来代替自己的标签。在某些情况下,这些误导行为甚至会在激励的前提下进行,所以应该承认这种方法的缺点。然而,这种技术是行业标准,虽然很多矿工选择不留下标识符,但我们没有理由相信造假行为正在大规模发生。 区块的矿工是根据其最近的可识别区块的矿工进行标记。这就提供了针对像 hashpower 投票这样的异常情况的鲁棒性,在这种情况下,coinbase 数据被用来发出支持分叉的信号,而不是识别矿工。 挖矿实体也通过重新使用已知的支付地址来识别。这种方法要求矿池重新使用地址,并且对已知地址的初始种子集很敏感。就我们的目的而言,这种方法被用来补充基于 coinbase 数据的标记,以便为没有留下一致标记的矿工提供覆盖。 一旦我们按矿工对区块进行了分类,我们就可以结合这些信息画出 BTC nonce 的分布
一文说透 Nonce 的非随机性来源
我们还可以看一下各个矿池的 nonce 分布情况。即使在这个层面上,反常的团依然可见。考虑一下下图,它显示的是 Antpool 和 BTC.com 所挖的区块,Antpool 和 BTC.com 是由比特大陆和 ViaBTC 拥有的,而比特大陆是 ViaBTC 的投资方。
一文说透 Nonce 的非随机性来源
在比特大陆关联矿池的 nonce 分布中,条纹图案明显比整个网络的 nonce 分布更明显。这表明在相应的期间内,这些矿池中 S7 和 S9 的比例较高,考虑到矿池与这些矿机制造商的关联性,这也是意料之中的。 而未知实体开采的区块比例在 2015 年出现了较大的下降。这是区块战的结果,在这期间,许多之前匿名的矿机开始在链上表明自己的身份,以示支持或反对区块大小的增加。如今,绝大多数矿机都是可识别的。在不知名矿机挖矿的区块中,条纹图案和它的消解均是隐约可见的。
一文说透 Nonce 的非随机性来源

结论

自 2016 年发布以来,Antminer S9 一直是比特币网络上使用最多的挖矿机,直到最近一段时间,Antminer S9 一直是比特币网络上使用最多的挖矿机。尽管去年发布了 S17,但 S9 在一段时间内仍然保持着运行状态,但随着哈希率的提高和市场环境的变化,这款矿机正在被逐步淘汰。目前在减半的预期下,从 S9 向 S17 的主导权转移,很多分析人士对矿机网络的评估中并没有适当考虑。 在矿工们从 S9 为主向 S17 过渡的同时,此前作为比特币 Nonce 的决定性特征的条纹模式也随之消解。这些神秘的条纹出现在一个看起来应该是随机的空间里,其来源一直以来都有很大的猜测。这些条纹出现的时间让人相信这些条纹是网络上挖矿的硬件所导致的,特别是之前的 S9 和 S7 系列矿机。 Nonce 数据使我们能够仅利用公开信息,以一种其他方式来衡量这种转变的规模和速度,而这是不可能的。通过利用 S9 在 Nonce 抽样中留下的痕迹,我们或许可以估算出这些矿工在网络上的比例。这些数据按池子划分,可以提供关于矿工运营效率的独特信息,这一点将在未来的报告中有所涉及。这个问题为正式评估这类问题铺平了道路。

一文说透 Nonce 的非随机性来源

Karim Helmy 和 Coin Metrics 团队 作者子铭 翻译

绪新 编辑

内容仅供参考 不作为投资建议 风险自担

版权所有 未经允许 严禁转载

一文说透 Nonce 的非随机性来源

一文说透 Nonce 的非随机性来源

☟☟☟


声明:本内容为作者独立观点,不代表 CoinVoice 立场,且不构成投资建议,请谨慎对待,如需报道或加入交流群,请联系微信:VOICE-V。

评论0条

加密谷Live

简介:分享区块链领域专业、前沿、有趣的内容

专栏

更多>>