解惑:如何理解BTC挖矿难度调整

原文标题:《深度丨一文读懂 BTC 挖矿难度调整》

原文作者:Samantha Ouyang

原文编译:Sherrie,加密谷 Live

当我第一次了解比特币挖矿的时候,我认为它很简单,就像坐在家里,做着我想做的事情,而我的电脑会投入工作,在我睡觉的时候赚钱。

但不完全是。事实证明,还有很多原因使得上述情况完全不可能发生。

但为了理解其中的原因,我们首先必须理解挖矿的整个概念,以及它在加密货币方面的意义。

挖矿是什么?

从本质上讲,挖矿就是创建新的区块,用交易记录填充它们,并将它们添加到区块链中,让每个人都能看到,并就特定的货币是如何使用的这件事达成一致。

然而,为了添加一个区块,矿工必须解决一个“加密谜题”,或者用更专业的术语来说,他们必须得到一个有效的块Hash。

我不会讲太多的Hash函数相关的知识,但简单地说,Hash是拿到区块的所有信息,然后把它处理,直到它返回一个与此前内容没有任何关系的随机的字母和数字64位十六进制数。

如果你改变了区块上的任何数据,随机数将会有很大的不同,但如果什么都没有改变,它将总是返回相同的内容。

但是如何知道Hash值是否有效呢?这就是难度目标的由来。目标描述一个阈值,并且要使Hash有效,该值必须小于目标。

你可能会问,如果不能更改交易信息,如何获得不同的Hash值呢?在创建Hash时,区块中还有另一个因素要考虑进去——你可以修改它,它被称为nonce。

资料来源:Khaled Salah

矿工们一直在为了这个数字努力,直到输出的Hash值小于目标值。因为Hash值是随机的,所以目标越低,就越难找到一个有效的Hash值。就像掷骰子一样,掷一个小于3的数字比掷一个小于4的数字更难。

那么你如何确定目标的价值呢?这个问题的答案就是我们今天要讨论的话题:挖矿难度。

什么是挖矿难度?

图片[1]-解惑:如何理解BTC挖矿难度调整-股金吧

这是不言自明的,但是挖矿的难度仅仅是指为区块找到一个有效的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次难度降低。

资料小知识:

算力

比特币挖矿形同猜数字谜,矿工要找出一个随机数(Nonce)参与哈希运算 1Hash(Block+Nonce)

,使得区块哈希值符合难度要求。算力则指计算机每秒可执行哈希运算的次数,也称为哈希率(hashrate)。

下图是当前比特币算力图表 2。到 2017 年时,比特币挖矿所需算力疯涨。这与不断研发出的新型矿机投入市场有关——这些矿机利用新的技术,拥有更强的运算能力,即单位成本下的算力在快速增长,由此带来了整体算力的提升。

算力单位

算力每隔千位划为一个单位,最小单位 H=1 次,其他分部是:

1 H/s = 每秒可执行一次哈希运算。

1 KH/s = 每秒 1,000 哈希(一千次)。

1 MH/s = 每秒 1,000,000 次哈希(百万次)。

1 GH/s = 每秒 1,000,000,000 次哈希(十亿次)。

1 TH/s = 每秒 1,000,000,000,000 次哈希(万亿次)。

1 PH/s = 每秒 1,000,000,000,000,000 次哈希。

1 EH/s = 每秒 1,000,000,000,000,000,000 次哈希。

如果不清楚单位简称,可以查看下面国际单位的前缀表。

挖矿难度计算动态调整挖矿难度 Difficulty

为什么算力会变化呢?这和比特币协议设计有关。中本聪设计比特币时,加入挖矿难度调整机制是为了使得比特币出块时间能理想的恒定在 10 分钟左右。比特币协议规定每隔 2016 个区块,将根据过去最近 2016 个区块出块总时间调整,自动调整下一个 2016 个区块的挖矿难度。理想情况下 2016 个块需要两周(2016*10s)时间,如果实际用时不到两周则增加难度,如果超过两周就降低难度。

原本中本聪设计的是一个公平的完全去中心化的一个数字货币系统,每个人都可以使用个人电脑进行挖矿。然而,有利可图时大量新算力不断加入,矿工竞争激烈,使得单个矿工的挖矿成功率几乎为零。2011 年起矿池出现,大量矿工纷纷加入矿池,以稳定收入,摊薄成本。大量算力融入,使得比特币挖矿难度越来越大。数字货币挖矿业形同军事竞备,挖矿设备不断更新迭代,不再遵循摩尔定律。

专业矿机专门针对哈希算法、散热、耗能进行优化,这脱离了比特币网络节点运行在成千上万的普通计算中并公平参与挖矿的初衷。矿池的算力占据,也使得比特币风险一直存在:51% 算力攻击。

挖矿难度计算公式

需要多少算力才能找出一个随机数,由当前区块的挖矿难度决定,难度越大所需算力越多。但挖矿难度并不在区块信息中,只在网络节点中依据规则动态计算,公式如下:

D=T1 /T

T 字母是 Target 的缩写,D 字母是 DiFFiculty 缩写。 T1 和 T 均是一个 256 位的大数字 (big

number),其中 T1 为一个非常大的常数 2 256−32−1。依据公式,T越小,挖矿难度 D 越大。

依据公式,当 T=0时,D 无穷大,标志着无法计算出结果。幸运的是, T 不会为 0,最小值为 1,此时难度值最大,为 2256−32−1=2224−1。当 T=T1时,难度值为最小值 1。

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
头像

พอกันที ท่ามิชชันนารีสุดเชย ถึงเวลาพลิกจุดให้ปลุกเร้า2年前0

Hello there! This is my first visit to your blog! We are a team of volunteers and starting a new project in a community in the same niche. Your blog provided us beneficial information to work on. You have done a marvellous job!
头像

หลังจากนั้นค่อย ๆ เอาขาลง ทีนี้ก็เริ่มประกอบกิจกรรมอย่างเข้ากันดีได้เลย2年前0

Hi there to every body, it's my first go to see of this weblog; this web site includes awesome and actually excellent data designed for readers.
头像

situs judi online indonesia terpercaya2年前0

bookmarked!!, I really like your blog!