加密货币世界的无限战争,ASIC与反ASIC
自比特币诞生之初,社区就一直在争论是否应对抗日益强大的挖矿硬件。
在比特币的早期阶段,挖矿是通过CPU(大多数计算机中的标准处理单元)完成的,这使得普通人可拥有参与比特币挖矿的机会,因为这不需要使用专门的计算机硬件。
随着时间的推移,一些矿工开始使用更强大的硬件,以便在竞争中取得优势。
在第二阶段,矿工们开始使用GPU(一种功能更强大的“图形处理单元”,通常被用于游戏和3D渲染)进行挖矿。一般而言,GPU要比CPU贵一些,但普通人还是可以负担得起的。
再然后,比特币挖矿进入了ASIC时代,所谓ASIC代表“特定应用集成电路”,它们是针对特定哈希算法而进行优化的专用挖矿硬件。ASIC矿机被用于加密货币挖矿,且绝大多数只能用于这种应用。就效率而言,ASIC矿机明显要比GPU要更加强大。
随着ASIC矿业经济形成,制造新ASIC设备的公司要比其它挖矿公司更具优势,而且他们还控制着ASIC矿机供应。而制造一种新ASIC硬件线所需的大量前期投资,也减少了能够参与这项业务的参与者。对于大型矿业公司来说,这存在着巨大的规模经济,使得普通矿业公司更难参与竞争。
正因为如此,很多加密货币项目都试图防范ASIC。值得注意的是,在比特大陆和其他矿业公司在2018年初宣布开发门罗币(Monero)专用ASIC设备后,门罗币开发者通过硬分叉改算法,以继续保持门罗币的“ASIC抗性”(目的是尽可能地分散挖矿)。从那时起,门罗币有过几次硬分叉尝试,试图抵抗ASIC设备的侵入,并抑制这类设备的发展。
同样,第二大公链以太坊,其大部分历史中也都是“抗ASIC”的(从1.0版本开始,以太坊的哈希算法Ethash就被设计为抗ASIC),然而,随着时间的推移,ASIC设备制造商还是追上了脚步。
因此,以太坊社区中的很多人现在又开始为 ProgPow 算法的实现而争论(ProgPow对Ethash进行了一些修订,目的是让以太坊再次具有抵抗ASIC的能力)。
尽管这些项目都在努力保持对ASIC的抵制,但很难始终保持领先。
由于在抗ASIC的区块链上使用ASIC挖矿专用硬件,可产生比其他矿工更大的优势,大型矿机商就被鼓励开发ASIC设备。这就意味着,ASIC矿工与区块链开发者之间,会存在着一场类似猫捉老鼠的游戏。
通过Nonce分布研究ASIC
有趣的是,通过研究nonce分布,我们可观察到ASIC挖矿在某些链上的兴起,以及随后开发者试图阻止它们的尝试。
工作量证明(PoW)挖矿过程中,会反复哈希运算一个区块的header,直到其哈希值小于协议定义的目标值。这是通过将区块头作为输入,然后通过加密哈希算法来实现的,对于比特币而言,该算法就是安全哈希SHA-256算法(且连续应用了两次)。
为了在无需完全重建新区块头的情况下,为每次尝试获取不同的哈希,在区块头中,需纳入一个向矿工提供的特殊字段: nonce字段 。这是矿工可更改的任意数字,以便修改区块头并生成小于目标哈希值的哈希。该nonce,是一个从0到每个协议所设置上限的数字。
假设在理论上,任何一个nonce都可能导致一个获胜的哈希,那么期望nonce随机选择并因此均匀分布就不无道理了。然而,对很多区块链进行分析后,我们发现,只有很少的区块链遵循这一预期。对此的解释是多种多样的,但nonce挑选策略的变化,往往与新挖矿硬件的引入有关,这表明不同的挖矿硬件具有不同的nonce挑选策略。
2019年1月初,Twitter用户@100trillionusd首次注意到了比特币的这种模式。而进一步的分析,在其他链上已显示出了一些奇怪的模式,比如门罗币、以太坊以及莱特币。
比特币
最著名的nonce分布自然是比特币的,在其历史早期,比特币呈现出一个共同模式:很多nonce接近于0。这可以用一个简单的策略来解释,该策略包括为每个哈希递增nonce。由于比特币早期的算力是非常低的,挖矿只使用CPU进行,在检查所有可能的nonce值之前,通常会找到一个获胜的哈希。而Sergio Lerner利用这一事实, 对属于中本聪的比特币进行了最认真的鉴定 。
在 GPU挖矿被引入之后,nonce空间看起来是随机的。但在区块高度达到400000左右时,出现了一种目前尚无法解释的新模式,个别矿工会选择一些细条纹nonce值。
BitMEX研究院对此模式 进行了大量研究 ,但始终没有找到明确的解释。
查看(整个历史过程中)比特币区块nonce的直方图,可以清楚地看到这种模式,以及低nonce的显著性。
红线是假设均匀分布的期望值
对于更细粒度的分析,有兴趣的朋友可以查看bit(位)的分布。比特币中的nonce字段由4字节或32位组成。对nonce 32位中每一位的平均值进行分析,显示出了一些有趣的模式:
一个单元格的颜色越深,则nonce 位就越频繁地设置为1,而不是0,X轴是区块的时间。
在比特币的历史之初,较高的bit(位)通常被设置为0,因为矿工们的nonce选择策略只是简单地增加bit(位)。低字节(图表底部的最后8 bit)似乎总是与某种模式一起使用,但直到最近才在低bit(位)中观察到模式的变化。
门罗币
应用nonce分析方法,最有趣的研究对象就要属门罗币(Monero)了。
门罗币每6个月通过硬分叉进行一次升级,而在过去的几次升级中,其开发者还对工作量证明算法进行了一些调整,以避开专用的ASIC挖矿硬件。这些硬分叉中的第一个是有争议的,因为它导致了几个分叉项目及资产。
因此,我们可以研究这些变化对nonce分布的影响。
乍一看,我们可以注意到几个有趣的模式,但当我们将网络难度和预定的硬分叉(调整PoW算法)叠加到这个图表上时,事情就变得更有趣了。
红线表示硬分叉的时间,而黑线表示网络难度
我们可以看到,这3次PoW升级都导致了网络难度的下降,其中有2次停止了之前存在的nonce模式。有趣的是,这些相同的nonce模式的引入,也与网络难度的急剧上升有关。通过观察这些nonce分布模式,我们可以看到第一次分叉在阻止第一代专用硬件方面的有效性。此外,我们还可以看到一些矿工在第二次分叉之后,迅速运用上了第二代硬件,而后又被第三次硬分叉挫败。
以太坊
乍一看,以太坊的nonce空间几乎没有显示任何nonce分布模式或不规则。
而仔细看,在区块高度达到7,000,000后,我们可以看到,空间底部有一些较暗的水平线。
如果放大,你可以看到从数字2000000到4000000之间的底部斜线。这些可能是一个简单的nonce挑选策略的特征:从0开始,每次尝试时递增nonce。
区块的nonce直方图显示,随着时间的推移,值较低的nonce会略微占据优势:
但是,如果我们观察nonce的每一bit随时间的平均值,就会发现一个非常有趣的模式(请注意,以太坊的nonce由64位组成,而不是比特币中的32位):
一个单元格的颜色越深,则nonce 位就越频繁地设置为1,而不是0,X轴是区块的时间。
从大约第1,380,000个区块开始,nonce的中间位开始被设置为0,这比其他位要频繁得多。随着时间的推移,其他位也开始有非随机使用。有趣的是,粗略地看一下整个nonce分布或直方图,并不能揭示这种模式,因为调整中间位并不会明显影响nonce的直方图。有趣的是,以太坊经典(ETC)的nonce位分布显示了完全相同的模式:
一个单元格的颜色越深,则nonce 位就越频繁地设置为1,而不是0,X轴是区块的时间。
顶部的白色垂直条纹表明一些矿工正在从0开始增加nonce。比特大陆于2018年4月宣布了首款公开已知的Ethash ASIC矿机,并表示将于同年7月中旬首次交付。在前一个图表中同时标注两个日期显示了一些非常有趣的事:
红色虚线:E3公告,红色实线:E3交付时间
乍一看,在Antminer E3发布时,以太坊和ETC区块的(bit 41) 位41平均值下降了。加入时间点后,模式更加引人注目:
红色虚线:E3公告,红色实线:E3交付时间
在2018年3月中旬之前,位41的平均值徘徊在0.5左右(这是假设灰色水平虚线表示的均匀分布的预期值)。然而,从那时起,在两条链上,它开始以同样的速度逐渐被设置为0。而只有以太坊在第一次交付计划发生时(2018年7月16日),其平均值急剧下降。
红色虚线:E3公告,红色实线:E3首次已知交付时间
查看当时排名前5的矿池,我们可以看到,位41的平均值在所有矿池中都开始下降,但从7月16日开始,即 E3矿机首次交付日起,它的值在两大中国矿池(Sparkpool和F2Pool)中进一步下降。
战斗还在继续
随着progpow的逼近以及门罗币开发者继续努力抵抗ASIC,针对专用硬件的战斗可能不会很快结束。随着战争的进行,我们将密切关注,并继续寻找nonce中的信号。
主流币网络一周数据汇总
近期的大波动,也使得比特币持有者的持仓分布发生了较大的变化。
目前的快照显示,成本在13000美元以上的比特币已属于少数,大量的币成本在2000美元至13000美元之间,近400万比特币(占总供应量的22%)的成本基础低于500美元。
这里我们展示了10月24日(大幅波动前)和10月26日(大幅波动后)的比特币分布变化。成本基础在13000美元以上或7000美元以下的比特币,几乎没有任何活动,这表明价格上涨还不足以激励这些持有人出售。相反,成本在7000美元至8500美元之间的比特币,最有可能被卖出(尽管由于交易所正常的热钱包活动,这些数字可能被稍微夸大了)。另外,在9000美元至12000美元的范围内,有少量比特币确实出现了一些链上运动。