币市最近低空焦灼,阴晴难定。各KOL已经全然失了方向感,可观察到的大部分群都成了热锅蚂蚁、无头苍蝇。市场的牛熊开始以“周”为长度进行转换。忽而蹭、蹭、蹭上涨5、6日,便一片欢喜,坚定看好后市。忽而duang、duang、duang下跌5、6日,便一片悲戚,以为熊之将至。后市之目标价位,欢喜时,便看高到10万、20万,悲戚时,便看低到2万、1万。
虽然距离519刚刚过去一个月,但是市场已经悄然在发生一些肉眼可见的变化。大V观点在纷纷转阴。很多519之后唱多的,现在开始唱空,或者不再唱多。对后市走熊的判断一个比一个更悲观,目标价一个比一个更低。一些嚷嚷着死扛到底的小韭菜开始慢慢受不了,开始割肉认输。合约市场的空头力量开始聚集,多头力量开始下降。要知道,合约的多空是空手套白狼。所以从本质上讲,合约多头是现货多头(满仓持币者)的敌人,因为前者是市场上涨的包袱,只要合约多头很多,市场就涨不起来;同理,合约空头是现货空头(空仓持币者)的敌人,因为前者是市场下跌的障碍,只要合约空头富集,市场就跌不下去。
在前日隔夜的“620大断电”事件中,比特币网络经受了又一次算力骤降的冲击。其简单情况,刘教链公众号6/20文《矿夜难眠》已有速写。在这一次算力波动冲击事件中,比特币网络体现出了应有的适应性和恢复力(resilience)。此次网络算力骤降,全网算力瞬间降低20%左右。自5月上旬达到170E~200E的高点之后,过去一个月以来,随着算力强制去中心化的帷幕开启,至620全网算力已跌破100E。目前,已有效回升至100E以上。那么,比特币是如何自适应这种大幅的算力波动冲击的呢?
众所周知,比特币网络会自动监测出块速度的变化,而出块速度则由网络的难度值进行调节。这个难度值是一个动态变化的数字,如果出块速度偏快了,就调高难度值,如果出块速度偏慢了,就调低难度值。重点是,在无人协调的情况下,分散全球的节点是如何一致调节这个难度值的呢?这就是把难度值及其调节内建到共识机制当中去。所有节点都遵循同一个出块速度测算以及难度值调整的规则。如果某个节点未能及时按照这套规则调整其难度值,则它所产生的区块就不会被其他节点所认可,会被丢弃从而浪费掉它的算力。它也就失去了区块奖励和手续费的收入,这种经济激励促使节点认真遵守规则。
对于出块速度的测算和难度值的调整遵从中本聪2008年在比特币白皮书中第4小节“工作量证明”中最后一段所写的方案:“为了抵消硬件的不断提速以及运行节点的收益随时间的不断变化,工作量证明的难度将取决于一个以每小时平均区块数量为目标的移动平均值。如果区块产生的太快,难度就会增加。”
在代码实现中,出块速度移动平均值的测算窗口是回溯前2016个区块,每2016个区块重新测算和调整一次(刘教链注:中本聪的代码里其实有一个小bug,就算计算时少算了一个区块,这个bug叫做off-by-one,一直未被修复)。以每个区块的设计时间间隔大概10分钟计算,这个窗口期就是大约14天也就是刚好2周(两个星期)。用这个目标窗口期时长除以实际窗口期时长,就可以得到难度调节的系数。比如因为算力下降,每个区块出块速度变慢,实际用了3周时间才产出了2016个区块,那么难度调节系数就是2除以3等于2/3,就在下一个窗口内把难度值乘以2/3,难度下降。如果难度调节系数过低,低于1/4,或者过高,高于4,那么就不能忽然做如此剧烈的调整,此时就会最小取到1/4,最大取到4。
在这次算力冲击中,我们就看到,算力骤降之后,网络出块速度立刻发生了显著的减缓。原本每小时大约应该产生6个区块,现在下降到4-5个。所以,虽然每个区块的区块奖励也就是挖矿的产量并未发生变化,但是从单位时间的产量而言,是发生了减少。不过coinbase的新币都是有一个冷却期的,矿工并不能立刻把新挖出来的币拿来砸盘。
网络会耐心等待矿工完成算力的搬迁和恢复工作。以两周为一个时间节点。如果不成,难度值就会继续降低,这会鼓励仍在坚持生产的矿工有更大的几率获得比特币,从而激励矿工尽快完成搬迁和恢复。
比特币通过二级市场完成对矿工工作的支付,矿工的代价就是割肉卖币。这两件事本就是一件事的两种视角、两种说法。有全球买家在二级市场上的支持,矿工才能顺利卖出自己手中的币,获得算力搬迁和恢复工作所需的资金。所以说,是价格决定算力,而不是算力决定价格。关于这一点,中本聪早在2010年2月21日论坛发言时就已经指出:“任何商品的价格都趋向于生产成本。如果价格低于成本,那么生产就会放慢速度。如果价格高于成本,则可以通过生产和出售更多产品来获利。同时,增加的产能(算力)将增加难度,将生产成本推向价格。”“在后面的几年中,当生成的新币只占现有总供应量的一小部分时,市场价格将决定生产成本,而不是反过来。”