DAG难度调整提案

1 链式结构难度调整目标是让出块按照目标时间进行产块

2 当前pow模式通用方式简化计算如下:

  • 取一定数量的区块
  • 按照设定区块的出块时间,可计算出目标数量区块产生的理想时间
  • 根据实际产块时间可得出目标数量前后总共花的时间
  • 实际花费时间与理论需要的时间进行比较,难度按照此比例进行一定的调整

3 以上为链式结构调整模式,在DAG结构下存在以下问题

  • 根据主链取得的块数进行难度调整,无法统计主链上的并发数,导致一定时间段内过多块
  • 在一定难度调整周期范围内控制主链出块时间,导致难度未变,并发数持续很多(理论可行,实际如果没有恶意修改节点在接收新块处理上,在网络通知及时的情况下很难做到,实际还是竞争关系)

4 为解决以上问题,现提出以下方式解决:

  • 其中有个方案将并发数计入链式进行还是按照原始链式结构难度目标进行调整,此种方式没有提现DAG并发性,反而限制了并发。

  • 如果我们允许一个难度并发无数块,个人认为以上问题就不是问题,如果共识有限制并发数,那么难度调整就得跟上, 方式为:定义DAG结构难度调整目标:(1)让出块按照目标时间进行产块 (2)根据并发数限制让每个难度上的并发数按照预设参数进行

5 按照以上重新定义的难度调整目标,实际简化计算如下:

  • 第一步按主链出块时间不变,也是经过一段时间考验,其他链式结构也是如此,另外一点是链式结构难度调整和时间相关,而DAG并发数和块数相关

  • 第二步则是对第一步的补充,再拿到当前难度后,再取一定主链主高度间隔,假设为5 并发数假设为3

  • 这5个主链高度,按照并发数限制 理论最高产块量为15 最低为5

  • 这5个主链高的实际产块量如果大于15 则以目标产块量15进行比较 难度按照此比例进行再一次的调整

  • 如果实际产量再预设范围内,即小于15 则难度不变