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倍 - 调整每个节点的难度的方法写在代码中,且代码开源
- 当恶意节点不调整难度,在验证区块合理性是不会通过
来源:CSDN
作者:crystal Ye
链接:https://blog.csdn.net/yerunting/article/details/104149450