Skip to content

Latest commit

 

History

History
41 lines (21 loc) · 3.41 KB

20. ETH 难度调整.md

File metadata and controls

41 lines (21 loc) · 3.41 KB

前文中介绍了比特币难度调整是每隔 2016 个区块调整难度,从而达到维持出块时间 15min 的目标。而以太坊则与之不同,每个区块都又可能会进行难度调整。以太坊难度调整较为复杂,存在多个版本,网络上存在诸多不一致,这里遵循以代码逻辑为准的原则,从代码中查看以太坊难度调整算法。

以太坊难度调整

image-20221101003917371

image-20221101003947645

image-20221101004009469

难度炸弹

为什么要设置难度炸弹?

根据以上以太坊难度调整算法可以看到,该算法可以很好地动态调整挖矿难度,从而保障系统整体出块时间维持在 15s 左右。但以太坊在设计之初就计划要逐步从POW(工作量证明)转向 POS(权益证明),而权益证明不需要挖矿。

从旁观者角度来看,挖矿消耗了大量电力、资金等,如果转入放弃挖矿,必然是一件好事。但从矿工的角度,花费了很大精力投入成本购买设备,突然被告知“不挖矿了”,这必然是一件很难接受的事情。而以太坊本身为一个分布式系统,其转入 POS 必须经过系统中大多数矿工认可才行,如果届时矿工联合起来转入 POS,那么这一设计初衷就成了一江流水。

因此,以太坊在设计之初便添加了难度炸弹,迫使矿工转入 POS。那么如何促使矿工自愿升级软件,而非坚持 POW 呢?

可以看到,在以太坊早期时,区块号较小,难度炸弹计算所得值较小,难度调整级别基本上通过难度调整中的自适应难度调整部分决定,而随着越来越多区块被挖出,难度炸弹的威力开始显露出来,这也就使得挖矿变得越来越难,从而迫使矿工愿意转入 POS。

image-20221101004028551

难度炸弹调整

以太坊设想是通过埋设难度炸弹迫使矿工届时愿意转入权益证明,但在实际应用中,权益证明的方式仍然并不成熟,转入 POS 的时间节点被一再推迟,虽然挖矿变得越来越难,系统出块时间开始逐渐变长,但矿工仍然需要继续挖矿。

实际上,在以太坊最初的设计中,并没有第二个公式。也就是说,最初就是简单地直接用区块编号除以 100000。而在转入权益证明时间节点一再推迟后,以太坊系统采取了将区块编号回退 3,000,000 个区块的方法来降低挖矿难度。当然,为了保持公平,也将出块奖励从 5 个以太币减少到了 3 个以太币,这也是 fake block number 这一项出现的原因。

下图显示了难度调整对难度炸弹难度影响的结果:

image-20221101004429347

以太坊发展

image-20221101004605905

具体代码实现