区块链-难度目标与难度调整

目录:https://blog.csdn.net/qq_40452317/article/details/89646633

工作量证明算法:https://blog.csdn.net/qq_40452317/article/details/90511706

我们在区块中看到难度目标,其被标为"难度位"或简称"bits"。在区块 277,316 中,它的值为0x1903a30c。 这个标记的值被存为系数/指数格式, 前两位十六进制数字为幂(exponent),接下来得六位为系数(coefficient)。在这个区块里,0x19 为幂,而 0x03a30c 为系数。

计算难度目标的公式为:

计算难度目标的公式为:
target = coefficient \* 2^\(8 \* \(exponent – 3\)\)
​ 由此公式及难度位的值 0x1903a30c,可得:
target = 0x03a30c * 2^(0x08 * (0x19 - 0x03))^
=> target = 0x03a30c * 2^(0x08 * 0x16)^
=> target = 0x03a30c * 2^0xB0^
​ 按十进制计算为:
=> target = 238,348 * 2^176^
=> target = 22,829,202,948,393,929,850,749,706,076,701,368,331,072,452,018,388,57 5,715,328
转化为十六进制后为:
=> target = 0x0000000000000003A30C00000000000000000000000000000000000000000000

难度调整

比特币时每十分钟生成一个,从2009年到现在没变过,并且在未来的几十年都会保持稳定。不管计算的算力提升多少,都将会是每隔十分钟生成一个区块,这就是比特币的心跳,是货币发行速率和交易达成速度的基础

要求时间不变,但是计算机的算力会变,所以就要改变一些东西来保持挖矿时间。目标决定了难度,进而影响求解工作量证明算法所需要的时间。所以可以改变难度来来平稳时间。那么问题来了:这个难度由谁来调整?如何调整?

那么,在一个完全去中心化的网络中,这样的调整是如何做到的呢?难度的调整是在每个完整节点中独立自动发生的。 每 2016个区块中的所有节点都会调整难度。

难度的调整公式是由最新2016个区块的花费时长与20160分钟(即这些区块以10分钟一个速率所期望花费的时长)比较得出的。难度是根据实际时长与期望时长的比值进行相应调整的 (或变难或变易)。简单来说,如果网络发现区块产生速率比10分钟要快时会增加难度。如果发现比10分钟慢时则降低难度。

这个公式可以总结为如下形式:
New Difficulty = Old Difficulty \* \(Actual Time of Last 2016 Blocks / 20160 minutes\)

目标难度与交易的数量和金额无关。这意味着哈希算力的强弱, 即让比特币更安全的电力投入量,与交易的数量完全无关。

换句话说,当比特币的规模变得更大,使用它的人数更多时,即使哈希算力保持当前的水平,比特币的安全性也不会受到影响。哈希算力的增加表明更多的人为得到比特币回报而加入了挖矿队伍。只要为了回报,公平正当地从事挖矿的矿工群体保持足够的哈希算 力,"接管"攻击就不会得逞,让比特币的安全无虞。

目标难度和挖矿电力消耗与将比特币兑换成现金以支付这些电力之间的关系密切相关。高性能挖矿系统就是要用当前硅芯片以最高效的方式将电力转化为哈希算力。挖矿市场的关键因素就是每度电转换为比特币后的价格。

你可能感兴趣的:(区块链)