主页 > 怎么在华为下imtoken > 06-BTC-挖矿难度

06-BTC-挖矿难度

怎么在华为下imtoken 2023-04-14 05:35:44

免责声明:本文为重点笔记,简介及系列笔记收录在专题:区块链技术与应用

目标预值越小,挖矿难度越大。 调整挖矿难度就是调整目标空间在整个输出空间中的比例。

比特币使用的哈希算法是 SHA-256,它产生 256 位的哈希值。 所以整个输出空间是2的256次方。 调整这个比例,即目标空间与输出空间的比例。 通俗地说,就是哈希值前面0的个数。 例如,对于一个256位的哈希值,如果它是一个合法的块,则要求计算出的哈希值前面至少有70个零。 当然这只是通俗的说法,因为这个目标预值并不是说前面全是0,从某个位置开始,后面就变成1了。

挖矿难度与目标预值成反比,公式为:difficulty=difficulty_1_target / target。 以上是指挖矿难度等于1时对应的目标预值,最小挖矿难度为1,此时对应的目标预值是一个非常大的数。

也就是说,目标越大,就越容易被挖掘。 所以公式中一个非常大的数,除以当前的目标预值,就是当前的挖矿难度。 所以难度和目标大小是成反比的。

为什么要调整挖矿难度? 如果不调整会有什么问题? 系统的总算力越来越强,如果挖矿难度不变,出块时间会越来越短。

出块时间越来越短,会不会有什么问题?

例如,如果一个块在不到一秒的时间内产生,则该块可能需要数十秒才能在网络上传播,而底层比特币网络可能需要数十秒才能被其他节点接收。 在其他节点收到这个块之前btc难度调整,它们会沿着现有的区块链继续扩展。 如果两个节点同时发布一个区块,此时就会发生分叉。

btc挖矿难度递增速度_cs1.6单机版可以调整难度吗_btc难度调整

如果出块时间越来越短,这种分叉就会成为常态,不仅会出现两个分叉,还可能出现很多个分叉。 比如同时挖出10个区块,那么系统中可能会有10个分叉。

如果分叉太多,不利于系统达成共识,还会危及系统的安全。 比特币协议假定大部分计算能力掌握在诚实的矿工手中。 系统的总算力越强,安全性越好,因为恶意节点更难控制51%的算力。 如果它有51%的算力,它就可以做很多坏事,比如分叉攻击。

如果未来有很多分叉,前一个区块中的某笔交易很可能被分叉攻击,恶意节点会试图回滚。 因为未来分叉很多,算力会分散,恶意节点得逞的概率更大。 这时候恶意节点不需要51%的算力,也许10%的算力就够了,所以出块时间越短越好。

10 分钟的出块时间是否最优? 不确定。 也可以将其更改为其他值。 有个区间只是说应该有一个恒定的区间。 以太坊系统出块时间缩短为15s,因此以太坊出块速度是比特币的40倍。

在出块时间急剧下降后,以太坊会设计一个新的协议,叫做 ghost。 在这个协议中,这些分叉产生的孤儿块,即最长合法链产生后的另一个要丢弃的块,不能简单地丢弃,但也会给予一些奖励。 这叫叔叔赏赐。 以太坊还需要调整挖矿难度,使出块时间保持在 15s。

说完为什么要调整挖矿难度,现在我们来说说如何调整挖矿难度。 比特币协议规定目标预值每2016个区块调整一次,大约每两周调整一次。

btc挖矿难度递增速度_cs1.6单机版可以调整难度吗_btc难度调整

具体调整公式:目标=目标×(实际时间/预计时间)。 实际时间是指实际生成2016个区块所花费的时间,预期时间是指生成2016个区块的理论时间,即2016×10min。

如果实际花费时间超过两周,平均出块时间超过10分钟。 那么这个时候应该降低挖矿的难度,这样应该会更容易出块。 所以这个公式计算出来的目标会变大,难度也会降低。

事实上,上调和下调都有四倍的限制。 如果实际时间超过8周,那么我们在计算公式的时候只能按4倍计算,目标预增值最多只能增加4倍。

那么如何让所有矿工同时调整目标预估值呢? 计算目标的方法写在比特币系统的代码中,每挖出2016个区块就会自动调整。 如果恶意节点故意不调整会怎样?

如果一个节点失调并发布了区块,诚实节点将无法识别它。 nBits 是目标的编码版本。 区块头中没有直接存放目标的字段,因为目标的字段是256位,直接存放目标需要32个字节。 nBits在头部只有四个字节,所以可以认为是对目标的压缩编码。

如果遇到恶意矿工,如果该调整的时候不调整,那么就无法检查区块的合法性。 因为每个节点独立验证发布区块的合法性。 检查的内容包括:nBits,目标预置值是否设置正确。 如果你投机设计了一个过大的目标预值,让你更容易自己挖矿,但是这个区块是不会被接受的。

btc难度调整_btc挖矿难度递增速度_cs1.6单机版可以调整难度吗

cs1.6单机版可以调整难度吗_btc挖矿难度递增速度_btc难度调整

哈希率

上图显示了比特币系统中总算力的变化。 在比特币流行之前,有很长一段时间算力没有大幅提升。 前几年算力几乎为0,其实这几年算力也在增长,只是这几年算力增长太快,所以前面部分看起来像一条直线。 近几年涨的很猛,这也体现在算力的增长上,算力呈指数级增长。 即使在这个黄金时期,算力也不是单调增长的,中间有很多波动。

cs1.6单机版可以调整难度吗_btc挖矿难度递增速度_btc难度调整

一直都困难

上图是挖矿难度的变化,与算力的增长基本同步,也符合难度调整的设计目标。 通过调整挖矿难度,出块时间保持稳定。 请注意,此图显示的是挖矿难度,而不是目标预估值。

btc难度调整_btc挖矿难度递增速度_cs1.6单机版可以调整难度吗

cs1.6单机版可以调整难度吗_btc挖矿难度递增速度_btc难度调整

180天难度曲线

上图是180天的难度调整曲线,可以看出明显是分段的。 每两周,难度就上升一个档次,说明挖矿的人越来越多,使用的设备越来越先进,反映出大家对比特币的热情越来越高。 如果相反,比如某个加密货币的挖矿难度越来越小,说明挖矿越来越容易。 但这并不是什么好事,说明大家对币的热情在逐渐降低。 这种情况继续表明该币将被淘汰。

cs1.6单机版可以调整难度吗_btc挖矿难度递增速度_btc难度调整

每日出块时间

上图显示了每天的区块生成时间。 可以看出,一般情况下,出块时间稳定在10分钟左右,震荡。

btc难度调整_cs1.6单机版可以调整难度吗_btc挖矿难度递增速度

cs1.6单机版可以调整难度吗_btc挖矿难度递增速度_btc难度调整

180 天出块时间

上图为半年出块时间,同样维持在10分钟左右。

cs1.6单机版可以调整难度吗_btc挖矿难度递增速度_btc难度调整

挖矿难度公式

上图显示了挖矿难度的公式。

挖矿难度公式:下一个难度=上一个难度*两周/挖出前2016个区块的时间。 (注:前面的男

公式是目标预置值的公式,两者成反比btc难度调整,不要混淆)