分布式技术原理与算法解析之分布式共识 学习笔记 (4)
定义:分布式共识就是在多个节点均可独立操作或记录的情况下,使得所有节点针对某个状态达成一致的过程。注意:共识是过程,一致性是结果。
case study:分布式记账
关键问题:如何获得记账权 以及 如何使得所有节点或服务器达成一致
具体算法:
- PoW(Proof of Work, 工作量证明):
- 具体步骤
- Step1: 客户端A产生新的交易,向全网进行广播,要求记账;
- Step2: 每个记账节点收到请求后,将交易信息放入一个区块中;
- Step3: 每个节点通过PoW算法,计算本地区快的哈希值,尝试找到一个具有足够工作难度的工作量证明。
- Step4: 节点D找到了一个工作量证明向全网广播,当且仅当包含在该区块中的交易都是有效且之前未存在过的,其他节点才会认同该区块的有效性
- Step5: 其他节点接收到广播信息后,若该区块有效,接受该区块,并跟随在该区块的末尾,制造新区块延长该链条,将被接受的区块的随机哈希值视为新区块的随机哈希值。
- 具体步骤
- 优点:相对公平,完全去中心化,有容错机制
- 缺点:共识达成周期长,效率低,资源消耗大
- PoS (Proof of Stake,权益证明):由系统权益代替算力来决定区块记账权。(权益:每个节点占有货币的数量和时间。货币就是节点所获得的奖励)
在股权证明 PoS 模式下,根据你持有货币的数量和时间,给你发利息。每个币每天产生 1币龄,比如你持有 100 个币,总共持有了 50 天,那么,你的币龄就为 5000。这个时候,如果你发现了一个 PoS 区块,你的币龄就会被减少 365。每被减少 365 币龄,你就可以从区块中获得 0.05 个币的利息 (可理解为年利率 5%)。
-
具体步骤
- 每个节点计算自己的权益,权益最大者广播自己的区块
- 每个节点计算自己的权益,权益最大者广播自己的区块
-
**优点:**资源消耗低,达成共识周期短,交易服务费低
-
**缺点:**易被垄断,无法处理分叉链的情况
-
DPoS (Delegated Proof of Stake, 委托权益证明)
- 原理:持币节点投票选举,选举出一些节点作为代表来记账
- 具体步骤;
- 受托节点去社区拉票,获取信任
- 节点按照自己的 持币量/总币量 加权投票,选出自己的受托节点
- 通常选出K个受托节点,权力相等,彼此根据算力进行竞争
-
优点:能耗更低,交易速度更快,每隔一段时间调整受托人,避免受托人造假和独权
-
缺点: 普通节点参与投票积极性不高;一旦出现故障节点,无法及时应对