1、概述

共识协议,即区块链中各个节点达成共识的协议
维护系统的运作顺序与公平性,统一区块链的版本,并奖励提供资源维护区块链的使用者,以及惩罚恶意的危害者。
账本的内容要取得分布式共识,不可以每个节点自己决定如何记录自己的账本

1.1女巫攻击

如果采用投票法的话,恶意节点可以不停地产生账户,获得最大地投票权重,从而获得记账权,这种攻击方法称为女巫攻击。
同样的随机轮流也不可以。

2、工作量证明

是一种对应服务与资源滥用、或是拒绝服务攻击地经济对策。

2.1算力投票

当节点找到nonce使得H(block header)<=target地时候,就说该节点获得了记账权,也就是往账本中写入下一个区块地权利

其他节点收到区块之后,要验证区块地合法性
①检查区块头
(bits设置是不是符合难度要求,Nonce值是否正确)
②检查区块体里面地交易列表
(交易是否合法,是否有合法签名,是否在UTXO中)

3、最长合法连

合法地区块不一定会被接收,例如不在最长合法链上。
比特币协议规定,接受地区块应该是在最长合法链上。
最长合法链可以减少分叉攻击,默认情况下,每个节点接受它最早收到的区块。
如果沿着这个区块扩展,就表示接受这个区块

3.1记账奖励

①决定哪些交易被加入账本的权利
②区块奖励
获得记账权的节点可以通过将铸币交易写入区块获得区块奖励。在这个交易中,可以发行一定数量的货币。
铸币交易时比特币中发行新货币的唯一方式。在铸币交易中不用指明币的来源。
分叉里面的区块奖励是没用的,不符合比特币共识机制

如果只有记账奖励,矿工可能不愿意把交易打包进区块,会影响发布区块的速度和区块的合法性,自私的节点可能就只打包自己的交易,不管别人的交易
③交易费

3.2 2100万比特币

每21万个出块,区块奖励减半,初始是50个

比特币协议规定,铸币交易的输出(包括区块奖励和交易费)必须要在经过100个区块后才能花费,是为了防止由于区块链分叉导致该区块被移除,最终导致节点的财产损失。

比特币的共识机制是靠算力来投票。
算力:哈希率,单位时间进行哈希运算的数目。哈希率决定了投票的权重。
这样的话,就算增加了账户也不会增加hash rate,所以可以防范女巫攻击。

4、51%攻击

是指创建一个新的最长区块链来替代原有的链,从而达到替换交易的目的,当某个节点拥有超过50%的算力时这种攻击最容易发动成功。
如果想要回滚或者更改某个交易,就需要建立一个新的更长的链。但是如果单个节点算力不足,就很难攻击成功。
如何阻止51%攻击?:
可以利用挖矿奖励吸引鼓励更多人参与挖矿,这样就可以防止单个节点的算力过大,进而增加区块链的安全性。

但是少于50%的算力因为谜题友好性也可以成功发动攻击,只是概率比较小。
越深的区块,攻击成功的难度就越大,所以在比特币交易中,通常会等6个确认区块后才认为交易时安全不被篡改的。

5、比特币安全

通过密码学保证+共识机制
密码学上的保证是别人没有我的私钥,就不可以伪造我的身份、签名,也不可以领走我账户里面的钱,但是如果系统中拥有大多数算力的矿工会接受不合法的交易,那么密码学上的保证就没意义了。共识机制就相当于大家不会接受不合法的交易。
二者结合才能真正保证比特币安全。