主页 > imtoken官网网址 > 比特币挖矿有没有可能满足不了难度条件?

比特币挖矿有没有可能满足不了难度条件?

imtoken官网网址 2023-01-30 06:24:20

历史上曾出现过算力波动过大,调整难度后半天都不算快的情况;

因此,理论上,可以长时间无阻塞地阻塞网络。这个时间长短取决于难度调整的幅度。如果将难度调整到一个离谱的数字,肯定会出现很长时间没有块的情况;但是如果每次都微调难度,并且不会超过算力的波动,那么就没有问题了。

那么我们再来回顾一下比特币的难度调整算法:

BSV挖矿难度_ltc挖矿难度_以太坊挖矿难度

比特币区块平均每 10 分钟生成一次。这是比特币的心跳,是货币发行速度和交易速度的基础。不仅在短期内,而且必须在几十年内保持不变。在此期间,计算机性能将迅速提高。此外,参与挖矿的人和计算机也在不断变化。为了保持 10 分钟的出块率,必须根据这些变化调整挖矿难度。事实上BSV挖矿难度,难度是一个动态参数,它会定期调整,以达到每 10 分钟一个新区块的目标。简而言之,难度设置为使新块的速率保持在每 10 分钟一个,而与挖矿能力无关。

那么,在一个完全去中心化的网络中,如何进行这样的调整呢?难度调整在每个完整节点中独立且自动发生。每 2,016 个区块中的所有节点都会调整难度。难度调整公式是通过比较最近的 2,016 个区块的经过时间与 20,160 分钟(两周,即这些区块以 10 分钟的速度预计需要多长时间)来计算的。根据实际持续时间与所需持续时间的比率调整难度(更难或更容易)。简单来说,如果网络发现出块速度快于 10 分钟,就会增加难度。如果你发现它慢于 10 分钟,请降低难度。

这个公式可以总结如下:

BSV挖矿难度_以太坊挖矿难度_ltc挖矿难度

New Difficulty = Old Difficulty * (Actual Time of Last 2016 Blocks / 20160 minutes) 

然后看实际代码:

int64_t nActualTimespan = pindexLast->GetBlockTime() - pindexFirst->GetBlockTime(); LogPrintf(" nActualTimespan = %d before bounds\n", nActualTimespan);

以太坊挖矿难度_ltc挖矿难度_BSV挖矿难度

if (nActualTimespan < Params().TargetTimespan()/4)

nActualTimespan = Params().TargetTimespan()/4;

if (nActualTimespan > Params().TargetTimespan()*4)

以太坊挖矿难度_ltc挖矿难度_BSV挖矿难度

nActualTimespan = Params().TargetTimespan()*4;

为了防止难度变化太快,每个周期的调整幅度必须小于一个因子(值4))。如果调整大于 4 倍,则调整 4 倍。由于下一个周期 2016 个区块的不平衡将继续,因此在下一个周期将进行进一步的难度调整。因此,可能需要几个 2,016 个区块周期才能平衡散列能力和难度的巨大差异。

所以这个设计是相当保守的。比特币难度的调整由上一周期2016个区块的生成时间决定。同时存在最大和最小因子。

BSV挖矿难度_以太坊挖矿难度_ltc挖矿难度

但是我们能想到的最极端的情况,比如难度周期调整后的一天,所有矿机同时销毁BSV挖矿难度,短时间内无法重建。每个人都回到了 GPU 挖矿的时代。此时可能会出现题主所说的长时间不出块的情况,同时难度周期也无法调整。这有理论上的可能性。

合理的难度调整是一个非常有趣的问题。比如现在分叉的币很多,大家都是出去赚钱的,但是一个代码简单的分叉就会分叉,难度调整会复制原版,肯定不会产生初始区块,而且那么如果没有矿工来开采,硬币就会死亡。

因此,当前的分叉币一出,第一个变化就是难度调整算法。