一文读懂BTC挖矿难度调整
当我第一次了解比特币挖矿的时候,我认为它很简单,就像坐在家里,做着我想做的事情,而我的电脑会投入工作,在我睡觉的时候赚钱。
但不完全是。事实证明,还有很多原因使得上述情况完全不可能发生。
但为了理解其中的原因,我们首先必须理解挖矿的整个概念,以及它在加密货币方面的意义。
挖矿是什么?
从本质上讲,挖矿就是创建新的区块,用交易记录填充它们,并将它们添加到区块链中,让每个人都能看到,并就特定的货币是如何使用的这件事达成一致。
然而,为了添加一个区块,矿工必须解决一个“加密谜题”,或者用更专业的术语来说,他们必须得到一个有效的块Hash。
我不会讲太多的Hash函数相关的知识,但简单地说,Hash是拿到区块的所有信息,然后把它处理,直到它返回一个与此前内容没有任何关系的随机的字母和数字64位十六进制数。
如果你改变了区块上的任何数据,随机数将会有很大的不同,但如果什么都没有改变,它将总是返回相同的内容。
但是如何知道Hash值是否有效呢?这就是难度目标的由来。目标描述一个阈值,并且要使Hash有效,该值必须小于目标。
你可能会问,如果不能更改交易信息,如何获得不同的Hash值呢?在创建Hash时,区块中还有另一个因素要考虑进去——你可以修改它,它被称为nonce。
资料来源:Khaled Salah
矿工们一直在为了这个数字努力,直到输出的Hash值小于目标值。因为Hash值是随机的,所以目标越低,就越难找到一个有效的Hash值。就像掷骰子一样,掷一个小于3的数字比掷一个小于4的数字更难。
那么你如何确定目标的价值呢?这个问题的答案就是我们今天要讨论的话题:挖矿难度。
什么是挖矿难度?
这是不言自明的,但是挖矿的难度仅仅是指为区块找到一个有效的Hash值有多么困难和耗时。一个更好的问题应该是,为什么挖矿一开始就需要有难度?
区块链的全部意义在于在网络中的多个个体之间建立共识,也就是说在一个真理上达成一致。它们是如何做到这一点的呢?它们取网络中最长的有效链,这取决于向它投入了多少工作(计算Hash值所花费的时间),并接受它作为构建的主链。
有了这个难度,就可以确保网络的安全性,因为它可以防止欺诈。如果添加区块很容易,那么有人可能会发送欺诈性交易,然后向网络发送垃圾邮件,以创建他们自己的最长链。然而,由于挖矿困难,为了防止垃圾信息,添加块的过程变慢,平均需要10分钟来挖掘一个块。
这里的棘手之处在于,攻击者可以通过寻找增加计算能力的方法轻松绕过这一困难。幸运的是,我们提前想好了,想出了一种方法让系统控制困难。
挖矿难度如何确定?
定期调整难度,以确保总是平均需要10分钟来挖掘一个区块。在每添加2016个区块后,系统会查看创建这些2016个区块所花的时间。正常情况下,需要2周左右,或20160分钟。如果超过两周,难度就会降低,如果不到两周,难度就会增加。难度可以如下确定。
推导出新难度的公式
正如你可以从反比函数中看到的,如果花费的时间超过2周,分数将小于1,新难度将会减少。如果花的时间超过2周,分数就会大于1,新的难度就会增加。
如果难度降低,目标值就会增加,从而更容易找到有效的散列,反之亦然。最大目标值为1,由此可见难度也与目标值成反比。
难度与目标的关系
为了防止突然的变化,难度的增加或减少不能在一次调整中超过4倍。
但回到我们如何想出目标的问题上,我们需要探索影响挖掘区块所需时间的不同因素。
有两件事可能会影响这段时间:
计算能力
网络中个体的数量
计算能力
在比特币的早期,你可能已经能够成功地进行挖矿,就像我过去认为的人们所做的那样——用他们的个人电脑。然而,矿工很快*升级。
由于挖矿本质上是一场竞赛,人们竞相首先找到Hash值并获得奖励,那些拥有更强大计算机的人将能够在同一时间内做出更多计算结果,因此获胜的机会也会更高。
升级一开始只是简单的从CPU到显卡的转换,但近年来,升级的幅度要大得多,现在所谓的ASIC(特定应用集成电路)--一种专门为挖矿而设计的器件--已经是能够参与竞争所需的最低限度。
但即便如此,你也不太可能赚到任何东西。目前,你可能需要40年才可以开采一个区块。如果你想赚钱,你可能必须加入一个矿池——矿工们联合起来增加他们获胜的可能性。
考虑到所有这些进步和计算机不断变得越来越快的事实,为了跟上它们并保持10分钟的平均速度,挖矿难度必须补偿这一点。
网络的规模
等等,但我们并不是每两周就有更快的电脑,对吧?虽然计算机的不断改进是需要调整机制的主要原因,但该系统也对网络中的个体数量进行了补偿。
矿工越多,找到一个有效Hash值所花的时间就越少,因为在相同的时间内会进行更多的计算结果。因此,当有更多矿工在场时,困难增加,当矿工更少时,困难减少。
总结
所以回到我们一开始的地方--在今天这个时代,用你的PC挖比特币几乎是不可能的,原因是由于设备升级和网络规模增大所做的补偿,导致挖矿难度不断增加。你的PC根本没有计算能力再跟上其他人的脚步,所以你能够成功挖出一个区块的几率非常非常低。
即使系统的设计是为了降低难度,但很少会这样做。更快、更强大的设备不断被开发出来,同时越来越多的人加入了比特币网络。事实上,自2009年1月比特币诞生到2020年11月,已经有250次难度增加,只有53次难度降低。
下一篇:一文读懂:什么是矿机?