共识算法

公式算法解决的是对某个提案(proposal)大家达成一致意见的过程

PBFT(拜占庭容错)算法

原文地址:https://www.jianshu.com/p/2383c7841d41

三个阶段:预准备(pre-prepare)、准备(prepare)、和确认(commit)

步骤:

    从全网节点选举出一个主节点(Leader),新区块由主节点负责生成
    Pre-Prepare:每个节点把客户端发来的交易向全网广播,主节点0将从网络收集到需放在新区块内的多个交易排序后存入列表,并将该列表向全网广播,扩散至123
    Prepare:每个节点接收到交易列表后,根据排序模拟执行这些交易。所有交易执行完后,基于交易结果计算新区块的哈希摘要,并向全网广播,1->023,2->013,3因为宕机无法广播
    Commit:如果一个节点收到的2f(f为可容忍的拜占庭节点数)个其它节点发来的摘要都和自己相等,就向全网广播一条commit消息
    Reply:如果一个节点收到2f+1条commit消息,即可提交新区块及其交易到本地的区块链和状态数据库。

拜占庭容错能够容纳将近1/3的错误节点误差,IBM创建的Hyperledger 0.6版本就是使用了该算法作为共识算法(1.0版本已弃用,使用kafka)。


这个机制下有一个叫视图view的概念,在一个视图里,一个是主节点,其余的都叫备份节点。主节点负责将来自客户端的请求给排好序,然后按序发送给备份节点们。但是主节点可能会是拜占庭的:它可能会给不同的请求编上相同的序号,或者不去分配序号,或者让相邻的序号不连续。备份节点应当有职责来主动检查这些序号的合法性,并能通过timeout机制检测到主节点是否已经宕掉。当出现这些异常情况时,这些备份节点就会触发视图更换view change协议来选举出新的主节点

POW:Proof of Work,工作证明



POS:全称Proof of Stake,股权证明



DPoS:委任权益证明Delegated Proof of Stake

DPoS算法中使用见证人机制(witness)解决中心化问题。总共有N个见证人对区块进行签名,而这些见证人由使用区块链网络的主体投票产生。由于使用了去中心化的投票机制,DPoS相比其他的系统更加民主化。DPoS并没有完全去除对于信任的要求,代表整个网络对区块进行签名的被信任主体在保护机制下确保行为正确而没有偏见。另外,每个被签名的区块都有先前区块被可信任节点签名的证明。DPoS消除了交易需要等待一定数量区块被非信任节点验证的时间消耗。

SBFT



猜你喜欢

转载自blog.csdn.net/btqszl/article/details/79170164