当前位置:首页 » 《资源分享》 » 正文

北京大学肖臻老师《区块链技术与应用》公开课 07-BTC-挖矿难度_Che2ry的博客

8 人参与  2021年09月19日 17:43  分类 : 《资源分享》  评论

点击全文阅读


  挖矿的定义:H(block header) ≤ target ( target 越小,挖矿难度越大 )
  比特币用的 hash 算法是 SHA-256 ,输出 256 bit,因此整个输出空间有 2 256 2^{256} 2256 种。
d i f f i c u l t y = d i f f i c u l t y _ 1 _ t a r g e t t a r g e t difficulty = \frac{difficulty\_ 1\_target}{target} difficulty=targetdifficulty_1_target
  difficulty_ 1_target:表示挖矿难度等于1时对应的目标阈值

  • 为什么要调整挖矿难度?出块时间太短会有什么问题?
      出块时间太短,分岔会成为常态,其中不止有二分叉。分叉过多,不利于系统达成共识并且威胁到系统的安全性。
      分叉过多,不同的矿工可能选择不同的分叉继续往下扩展,因此系统的算力会被分散。而恶意的节点可以集中算力,扩展某一个分叉,使得该分叉变成最长合法链。在这种情况下,恶意节点不再需要51%的算力才能发动攻击(51% attack),从而危害系统的安全性!

  比特币中出块时间 10min ,以太坊中出块时间 15s 。以太坊中有新的共识协议:GHOST协议
  需要调整挖矿难度,使得出块时间维持稳定!

  • 如何调整挖矿难度?
      比特币中每隔2016个区块 (约两周) 需要调整挖矿难度:
    t a r g e t = t a r g e t × a c t u a l   t i m e e x p e c t e d   t i m e target=target\times\frac{actual \ time}{expected\ time} target=target×expected timeactual time
      expected time 等于 2016 × \times × 10min 表示两个星期
      actual time表示系统最近的2016个区块实际花费的时间
      actual time = time spent mining the last 2016 blocks
      上调阈值最大为 4 × \times × target,下调阈值最小为0.25 × \times × target

  • 恶意节点不调整挖矿难度咋办?
      block header中有 nBits 域(32bits),用于存储 target (256bits) 编码的版本。 如果有恶意节点不调整挖矿难度,那么该区块的合法性验证 (nBits域) 不能通过。

  • 比特币系统的实际情况:






点击全文阅读


本文链接:http://zhangshiyu.com/post/28210.html

挖矿  分叉  难度  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1