bitcoin(3)

南笙酒味 提交于 2020-02-08 18:43:52

1.proof of stake

——【pow】mining pool:miner联合进行挖矿,不符合去中心化的原则

1」validator
—the creating the coin is called validator(=miner)

  • selection algorithm 进行随机选择validator,

——再参与制造比特币之前validator必须投入一定的deposite 作为stake
,并且size of deposite决定了被选中的几率(即stake越大被选中的几率越高)

——一旦这被选择;这个validator的stake被放进账户里面,并且这个validator有了制造bitcoin的权利

——其他没有被选中的validator不会浪费不必要的算力去计算nonce,节省电力
——如果选中的validator需要检查block里面的所有交易是否合理,检查完毕后放入链中,并且会得到一笔reward=sum of each transaction fee
——并且如果选中的validator有不好的行为(misbaheve),将会失去之前拿出来的stake(deposite),所以必须诚实

2」缺陷(flaw)

  • 51%attack:当miner联合起来超过全网的51%则可以控制整个网络,但是由于网络的结构,只要超过1/3就有可能控制真个网络
    —fork(制造分歧)
    —dos attack(洪水攻击):利用网络上已被攻陷的电脑作为“僵尸”,向某一特定的目标电脑发动密集式的“拒绝服务”式攻击,用以把目标电脑的网络资源及系统资源耗尽,使之无法向真正正常请求的用户提供服务
    —double-spending

2.pow如何调整挖矿难度

1」h(block header)<=target
hash function :sha-56

2」挖矿难度和目标阈值成反比

   difficulty = difficulty_1_target / target
  • difficulty_1_target:目标难度等于1的时候,目标的阈值;
  • 挖矿难度最小=1,target越大挖矿越容易

3」调整挖矿难度目的:控制出块时间在10min出一个

  • 出块时间太短:
    —容易出现forking,会出现不仅是二分叉,或多分叉;较难达成共识
    —恶意节点当实行51%attack,容易实现。因为好的节点算力被分散到计算多分叉

4」以太坊

  • 出块时间15s
  • 新的共识协议ghost:对于orphen block都基于奖励成为uncle reward
  • 同样需要调整挖矿难度,控制出矿时间

2.1如何调整挖矿难度

  • 每个2016个区块调整一次难度,大概每两个星期调一次
  • target =target * (actual time / expected time)
  • 根据这个公式进行迭代
    —expected time: 2016 (block) * 10( min)
    —actual time: 系统实际产生2016个block的实际时间
    —增大或减少:一次性不会超过4倍
  • 调整每个节点的难度的方法写在代码中,且代码开源
  • 当恶意节点不调整难度,在验证区块合理性是不会通过
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!