共识机制
2018-06-12 本文已影响0人
尹学姐
共识机制
原理
FLP不可能原理
FLP 不可能原理:在网络可靠,存在节点失效(即便只有一个)的最小化异步模型系统中,不存在一个可以解决一致性问题的确定性算法。
- FLP 不可能原理实际上告诉人们,不要浪费时间去为异步分布式系统设计在任意场景下都能实现共识的算法。
- FLP 原理实际上说明对于允许节点失效情况下,纯粹异步系统无法确保一致性在有限时间内完成。
- 科学告诉你什么是不可能的;工程则告诉你,付出一些代价,我可以把它变成可能。
CAP原理
分布式计算系统不可能同时确保一致性(Consistency)、可用性(Availablity)和分区容忍性(Partition),设计中往往需要弱化对某个特性的保证。
- 一致性(Consistency):任何操作应该都是原子的,发生在后面的事件能看到前面事件发生导致的结果,注意这里指的是强一致性;
- 可用性(Availablity):在有限时间内,任何非失败节点都能应答请求;
- 分区容忍性(Partition):网络可能发生分区,即节点之间的通信不可保障。
条件
- 正确性
- 一致性
- 可用性
评价标准
- 安全性:需要可以抵抗双花、Eclipse攻击(控制目标对象的网络通信,形成网络分区,阻隔交易传播)、Sybil攻击(产生大量无意义节点影响系统安全性)
- 扩展性。节点数量的增加、交易数量的增加带来的系统负载和网络通信量的变化。通常以网络吞吐量来衡量。
- 性能效率。TPS 比特币6tps
- 资源消耗。包括计算资源和网络通信资源。
解决方案
POW
POW本质是通过算力竞争来确保整个网络的一致性。通过算力竞争来争夺记账权,算力竞争实际上就是计算哈希值,计算速度最快的人可以获得打包权。完成打包并将打包好的区块加到最长链的人可以获得奖励。
- 正确性:采用最长链原则,诚实的节点会选择最长链继续进行打包。要推翻之前的交易需要耗费大量的算力,基本上不可能实现。矿工通过打包可以获取奖励,如果违反规则自己的利益也会受到损失,所以没有违反规则的动力。
- 一致性:所有节点都认可最长链,可以保证节点的一致性。如果某些节点短暂离线,也可以从其他节点处获得离线的信息。
- 可用性:需要进行算力竞争,浪费资源。同时处快速度慢。6TPS左右。
POS
通过比较币天(持有币的数量 * 持有币的时间)来争夺记账权。本轮获取到记账权之后,币天数会被清空。每30天可以参与一轮记账权的争夺。记账完成的节点可以获得奖励,类似于以月为单位的股票分红。
- 正确性:和POW类似,只是将算力竞争改为持币量竞争,没有本质区别。
- 一致性:和POW类似
- 可用性:不同的实现方式有不同的TPS。大约在 100左右
DPOS
半中心化套路,通过选举几个代表来进行打包。代表需要具有一定的算力和诚信,如果代表作恶,则会被移除,重新票选新的代表。
- 正确性:代表可以通过打包获取收益,没有作恶的动力
- 一致性:所有节点都认可代表打包的区块
- 可用性:TPS通常较高,可以上万
BPFT
每轮通过两次投票的方式来选出区块。每次投票都需要超过2/3的节点投票才可以通过。
- 正确性:第一轮确认等待投票的区块,第二轮对改区块进行投票。每轮都要保证2/3以上的节点同意。
- 一致性:所有诚实节点都认可投票结果。
- 可用性:类似的有Algorand TPS为1000左右