2411 2411 2411
Zhang G R, Pan F, Mao Y H, et al. Reaching Consensus in the Byzantine Empire: A Comprehensive Review of BFT Consensus Algorithms[J]. ACM COMPUTING SURVEYS, 2024,56(5).
出版时间: MAY 2024
索引时间(可被引用): 240412
被引: 9
'ACM COMPUTING SURVEYS'
卷56期5 DOI10.1145/3636553
出版商名称: ASSOC COMPUTING MACHINERY
期刊影响因子 ™
2023: 23.8
五年: 21.1
JCR 学科类别
COMPUTER SCIENCE, THEORY & METHODS
其中 SCIE 版本
类别排序 类别分区
1/144 Q1
Toward More Efficient BFT Consensus
一、PBFT Practical Byzantine fault tolerance-1999
Miguel Castro, Barbara Liskov, et al. 1999. Practical Byzantine fault tolerance. In OSDI, Vol. 99. 173–186.
角色介绍:
客户端 Client:向区块链网络 发起交易或状态更新请求,等待共识结果。
主节点 Leader/Primary:负责 接收请求「交易排序」,协调共识。(轮换时同步状态)
副本节点 Replica:负责 备份请求,促进共识达成。「验证合法,维护一致」
故障节点 Byzantine Fault:负责 选择性响应,篡改数据。【何不直接剔除,因设计目标为容忍而非实时剔除】
正常流程:客户端请求 → 主节点排序广播 → 副本节点三阶段验证 → 客户端确认。
1.请求 I n v o k e Invoke Invoke
客户端 Client 向
Primary(ld)
发送调用请求Req
,并启动计时器Timer
。【OP: 时间戳】
Client 收到来自不同的 Replicas 的仅 F+1个回复 Reply,即可判定操作完成,停止计时 Timer
。
否则直到计时器到期,认为调用失败。【原因1:内部错误只能等待。原因2:链接不可靠未达Primary
,广播】
2.协商(共识)

1.Pre-prepare阶段
1> 分配唯一序列号 Sequence,范围[h, h+k]
(h为最后一个稳定检查点的 Seq,k为限增值)
2> 将ViewNum
、Seq
、对请求Req的摘要hash
组成PRE-PREPARE,然后签名Sig
。(搭载原生Req)
3> 发给所有 Backups==Replicas。
总结,指定一个编号Seq,把请求打包发送给所有节点。
2.Prepare阶段
1> 验证Sig
。
2> 检查ViewNum
是否处于同一视图。
3> 检查Seq
未分配给其他Req。
4> 验证hash
。
广播PREPARE消息,收集满2F个消息后,造一个(都已准备)谓词Prepared Predicate
。【共识基本达成】
总结,检验消息包后广播「没问题,我已准备提交」,满2F个后达成共识。
3.Commit阶段
1> 通过广播COMMIT消息,(广播谓词Prepared Predicate
)。
2> 收集满2F个消息后,造另一个谓词committed-local predicate
。【仲裁证书提供安全属性:正确副本执行方式相同】
总结,上阶段满2F个准备消息后,广播「我已提交」,再满2F个后达成共识。
4.Reply阶段
向Client
发送REPLY消息 (resultOfOp=true)。
Weak Certificate 弱证书,仅需F+1个回复。
总结,上阶段满2F个提交消息后,向客户端回复调用完成。
检查点 C h e c k P o i n t CheckPoint CheckPoint
通过周期性状态同步,解决日志膨胀问题。【我理解为状态确认稳定后即可删除多余「过期」日志】
当
Req
被Commit
时的 execute 会更新节点的状态,该状态需要确保所有正确副本一致性,通过检查点机制。
O n c e a r e q u e s t i s c o m m i t t e d , t h e e x e c u t i o n o f t h e r e q u e s t r e f l e c t s t h e s t a t e o f a r e p l i c a . Once\ a\ request\ is\ committed,\ the\ execution\ of\ the\ request\ reflects\ the\ state\ of\ a\ replica. Once a request is committed, the execution of the request reflects the state of a replica.
算法定期对一系列 exe 生成证明,称为检查点。
同样的,在广播CHECKPOINT并收集2F个回复后,进化成稳定检查点。【水位范围同上述Seq
】
总结,节点「已提交」后会更新状态,通过CheckPoint消息将其状态广播,满2F个后确认状态稳定。
3.视图切换 V i e w C h a n g e ViewChange ViewChange
当
Primary
故障或共识超时,启动切换协议。【确保故障时系统活性】
视图切换期间,节点处于异步状态(i.e., 没有完全同步)。协议来自论文1:但可能需要无限空间。
副本节点在收到 Req 后,启动一个 「节点
Timer
」等待 Req 被提交 Commit。
Commit 完成,则 Timer
终止;
R
e
s
t
a
r
t
s
t
h
e
T
i
m
e
r
i
f
t
h
e
r
e
a
r
e
o
u
t
s
t
a
n
d
i
n
g
v
a
l
i
d
r
e
q
u
e
s
t
s
t
h
a
t
h
a
v
e
n
o
t
b
e
e
n
c
o
m
m
i
t
t
e
d
.
Restarts\ the\ Timer\ if\ there\ are\ outstanding\ valid\ requests\ that\ have\ not\ been\ committed.
Restarts the Timer if there are outstanding valid requests that have not been committed.
若 Timer 到期,则认为 Primary 故障,广播VIEWCHANGE消息,引发视图切换。
该消息包含三个参数: C P Q CPQ CPQ.
选主公式:p = v mod |R|
。【R为节点总数】
各副本节点收到VIEWCHANGE后。
1> 验证:生成PQ的视图小于v
。
2> 发送VIEWCHANGE-ACK消息给v+1
的Primary
(新主)「支持视图切换」。【包含节点ID、摘要及发送方ID】
3> Primary
在收集 2F-1 条VIEWCHANGE和*-ACK后,确认更改,将VIEWCHANGE*加入集合
S
S
S.【至少F+1条】
生成一个仲裁证书, view-change certificate
。
总结:通过超时检测和多方认证,切换Ld「视图+1」。
Primary
将 ID 与 S S S中的 msg 配对后,加入集合 V V V.
选择检查点最高值h。
提取[h, h+k]
之间未提交的 Req,加入集合
X
X
X.【请求已在v
或仲裁证书中准备好】
Backups 检查
V
、
X
V、X
V、X中 msg 是否支持新主的【选择检查点和延续未提交请求】的决定。若不支持则切换视图至v+2
.
终止 View-Change 协议。
视图切换期间异步处理请求。
总结,副本节点超时触发视图切换,新主节点基于最高检查点恢复未完成请求。
4.优缺点
开创异步网络中BFT的实用方案,启发高效BFT算法时代。
二次消息复杂性,阻碍其在大规模网络中的应用。
f a u l t y c l i e n t s u s e a n i n c o n s i s t e n t a u t h e n t i c a t o r o n r e q u e s t s . faulty\ clients\ use\ an\ inconsistent\ authenticator\ on\ requests. faulty clients use an inconsistent authenticator on requests. 会导致系统重复视图切换而卡死。
二、SBFT Scalable-2019
Guy Golan Gueta, Ittai Abraham, Shelly Grossman, Dahlia Malkhi, Benny Pinkas, Michael Reiter, Dragos-Adrian Seredinschi, Orr Tamir, and Alin Tomescu. 2019. SBFT: a scalable and decentralized trust infrastructure. In 2019 49th Annual IEEE/IFIP international conference on dependable systems and networks (DSN). IEEE, 568–580.
A s c a l a b l e a n d d e c e n t r a l i z e d t r u s t i n f r a s t r u c t u r e A\ scalable\ and\ decentralized\ trust\ infrastructure A scalable and decentralized trust infrastructure.
共3f + 2c + 1
个 Servers。【f为拜占庭故障,c为崩溃或流浪】
拥有Fast、Slow两种模式,前者需要无故障节点、同步环境;后者就是线性PBFT。
利用门限签名(阈值签名, t h r e s h o l d threshold threshold)解决了二次拜占庭广播问题。(其中阈值表示签名者数量)
1.快速通道 F a s t p a t h Fast\ path Fast path

1.Pre-Prepare 阶段
Primary
向所有 Servers
发送指令。
Servers
将回复发给 CommitCollector。
2.Full-commit-Proof 阶段
C-Collector 将收集到的
s
i
g
n
e
d
r
e
p
l
i
e
s
signed\ replies
signed replies 转换成一个门限签名 msg,并发给所有 Servers
。
3.Full-execute-Proof 阶段
Servers
将回复发给 ExecutionCollector。
E-Collector 将收集到的
s
i
g
n
e
d
r
e
p
l
i
e
s
signed\ replies
signed replies 转换成一个门限签名 msg,并发给所有 Servers
,包括 Client
。【对比PBFT的F+1条确认】
2.线性PBFT l i n e a r − P B F T linear-PBFT linear−PBFT
将所有 Collector
聚合到 Primary
。【权柄收回】
i f S B F T u s e s o n l y t h e p r i m a r y a s a l l “ l o c a l ” l e a d e r s i n e a c h p h a s e if\ SBFT\ uses\ only\ the\ primary\ as\ all\ “local”\ leaders\ in\ each\ phase if SBFT uses only the primary as all “local” leaders in each phase.
那么工作流就类似PBFT。
但是拥有门限签名。
给定视图
Primary
根据视图号选择。
Collectors
根据视图号和 Seq(commit state index
)选择。
SBFT 建议随机选择二者。
线性PBFT模式下,
Primary
总是选最后一个Collector
。
当视图切换时,Servers 的角色更改。
3.视图切换 V i e w C h a n g e ViewChange ViewChange
View Change Trigger 阶段
两种情况会导致视图切换:
- Timeout.
- 收到 F+1 个节点的质疑(主有问题)。
View Change 阶段
l s ls ls:最后稳定 Seq( l a s t s t a b l e s e q u e n c e last\ stable\ sequence last stable sequence)。【因部分同步可能不一致】
w i n win win:用于限制未完成块数量,预定义值。【因此 Seq 在 l s ∼ l s + w i n ls\sim ls+win ls∼ls+win】
Seq 可以指明 Server 的状态。
触发 ViewChange 的 Server 会发送VIEWCHANGE消息给新主。【包含 l s ls ls和到 l s + w i n ls+win ls+win之间的状态摘要】
New View 阶段
收集满 2F+2C+1 后,启动新视图,并将其广播。
Accept a New-view 阶段
节点们接受 l s ∼ l s + w i n ls\sim ls+win ls∼ls+win间的Seq,或一个安全的、可用于未来交易的Seq。
4.优缺点
两种模式下均可实现线性消息传输,并且 Reply 阶段的通信为O(1)。
继承PBFT缺点,Client 完全可以只与F+1部分节点通信,触发不必要的视图切换。
关于实验
实验设置
- 部署规模:在真实世界规模的广域网(WAN)上部署了200个副本。每个区域使用至少一台机器,每台机器配置32个VCPUs,Intel Broadwell E5-2686v4处理器,时钟速度2.3 GHz,通过10 Gigabit网络连接。
- 故障容忍:所有实验都配置为能够承受
f=64
个拜占庭故障。 - 客户端请求:使用公钥签名客户端请求和服务器消息。
实验方法
- 微基准测试:简单的Key-Value存储服务,每个客户端顺序发送1000个请求。
- 智能合约基准测试:使用以太坊的50万笔真实交易数据,副本通过运行EVM字节码执行每个合约,并将状态持久化到磁盘。
- 无批处理模式:每个请求是一个单次put操作,写入随机值到随机键。
- 批处理模式:每个请求包含64个操作,模拟智能合约工作负载。
'客户端请求':客户端通过将交易分批成12KB的块(平均每批约50笔交易)发送操作。
三、HotStuff-2019⭐️
Maofan Yin, Dahlia Malkhi, Michael K Reiter, Guy Golan Gueta, and Ittai Abraham. 2019. HotStuff: BFT consensus with linearity and responsiveness. In Proceedings of the 2019 ACM Symposium on Principles of Distributed Computing. 347–356
共3F+1
个Servers。
达成活跃性、安全性无需同步假设。乐观响应:前2F+1个消息即可进行共识决策。
采用轮换 Primary 保证链质量。
采用门限签名达到共识线性。(最坏情况,连续Primaries故障,复杂度为f*n
)
1.请求
Client向所有Servers发送
Req
。
同PBFT,等待F+1
个Reply,操作完成。
客户端请求失败处理部分,引用了文献:
Alysson Bessani, Joao Sousa, and Eduardo EP Alchieri. 2014. State machine replication for the masses with BFT-SMART. In 2014 44th Annual IEEE/IFIP International Conference on Dependable Systems and Networks. IEEE, 355–362.
Miguel Castro, Barbara Liskov, et al. 1999. Practical Byzantine fault tolerance. In OSDI, Vol. 99. 173–186.
2.共识

1.Prepare阶段
Primary
在收到Req后,向节点(Replica)广播PREPARE消息。
节点验证消息:
- 为上次提交的msg的扩展(无间隔)
- 最高View(最新视图)
验证后,用部分签名对PREPARE-VOTE消息签名,并发给Primary
。
Primary
在等待2F+1后,生成仲裁证书(Quorum Certificate,QC),记为 PrepareQC。【可以理解为完成】
2.Pre-Commit 阶段
广播带有 PrepareQC 的msg,节点将其存储。
将COMMIT-VOTE消息签名后发给Primary
。
Primary
在集齐2F+1后,形成 Pre-CommitQC。
3.Commit 阶段
广播带有 Pre-CommitQC 的msg。
节点回复COMMIT给Primary
,并且更新变量 lockedQC。【保存QC计数/Req
】
k e e p s c o u n t i n g t h e n u m b e r o f r e c e i v e d Q C s f o r a r e q u e s t keeps\ counting\ the\ number\ of\ received\ QCs\ for\ a\ request keeps counting the number of received QCs for a request.
4.Decide 阶段
Primary
在收到2F+1后,广播DECIDE给Replicas。
节点认为共识达成,开始执行请求。
然后ViewNum++
。【视图切换开始】
然后发送New-View给新主。
三个变量
-
p r e p a r e Q C prepareQC prepareQC:当前节点已知的最高锁定 PREPARE msg(最新)。
-
l o c k e d Q C lockedQC lockedQC:已知最高锁定 COMMIT msg(最新)。
-
v i e w N u m viewNum viewNum:节点当前所处视图。
新主收到2F+1个New-View后,在 p r e p a r e Q C prepareQC prepareQC基础上扩展。(理解为+1)
若未能及时收满2F+1,则触发超时,视图切换。
3.视图切换 V i e w C h a n g e ViewChange ViewChange
为了确保链质量,HotStuff可以更频繁的切换试图。
通过广播协调消息和收集门限签名进行共识。因此视图切换被包含于HotStuff的核心流程。
新主选择方式为 p = v m o d n p = v\mod n p=vmodn。
4.优缺点
使用门限签名,实现线性消息传递。
每个阶段的收集投票,构建门限签名,可以被流水线化 p i p e l i n e d pipelined pipelined。从而简化HotStuff协议的构建,例如Casper:(同时降低O(n))
Vitalik Buterin and Virgil Griffith. 2017. Casper the friendly finality gadget. arXiv preprint arXiv:1710.09437 (2017).
还可以用延迟塔 d e l a y t o w e r s delay\ towers delay towers扩展到公有链:
Shashank Motepalli and Hans-Arno Jacobsen. 2022. Decentralizing Permissioned Blockchain with Delay Towers. (2022).
arXiv:2203.09714
在
failures
情况下,HotStuff吞吐量显著下降(不能达成共识)。
关于实验
- 使用Amazon EC2 c5.4xlarge实例,每个实例有16个vCPU,由Intel Xeon Platinum 8000处理器支持。
- 所有核心的Turbo CPU时钟速度高达3.4GHz。
- 每个副本运行在单个VM实例上。
网络配置:
- 测得的TCP最大带宽约为1.2 Gbps。(使用
iperf
工具) - 网络延迟小于1毫秒。
实验设置:
- 实验中使用了4个副本,配置为容忍单个故障(即f = 1)。
- 使用了空操作请求和响应,没有触发视图更改。
- 实验中使用了不同的批次大小(100、400和800)和不同的有效负载大小(0/0、128/128和1024/1024字节)。
软件和工具:
- HotStuff的实现使用了大约4K行C++代码,核心共识逻辑大约200行。
- 使用secp256k1进行数字签名。
- 使用NetEm工具引入网络延迟。
使用BFT-SMaRt的ThroughputLatencyServer和ThroughputLatencyClient程序测量吞吐量和延迟。
四、ISS: Insanely Scalable State Machine Replication-2022
Chrysoula Stathakopoulou, Matej Pavlovic, and Marko Vukolić. 2022. State machine replication scalability made simple. In Proceedings of the Seventeenth European Conference on Computer Systems. 17–33.
会议17th European Conference on Computer Systems (EuroSys)欧洲计算机系统会议,顶级学术会议
地点Rennes, FRANCE
日期APR 05-08, 2022
赞助方Assoc Comp Machinery; ACM SIGOPS; USENIX; Huawei; Stormshield; Microsoft; Protocol Labs Res; Red Hat; Amazon; Meta; Google; Intel; Cisco
共3F+1
节点。
是一个通用框架,
通过划分工作负载,并且关联 SB(Sequenced Broadcast) 实例与Leader,
将传统的单Leader的 TOB(Total Order Broadcast) 协议扩展为多Leader的协议。
达成PBFT的37倍,Raft的55倍,Chained HotStuff的56倍。
1.初始配置

日志log
:该节点接收的所有消息,由Req
组成,被批处理以降低消息复杂性。
SN(Sequence Number)序列号:相对于日志开头的偏移量。
将日志分成epoch
,按SN以轮询方式分配给Leader,再将epoch
分成segment
,这样与Leader相对应。
所有Req
基于modulo哈希函数分类到桶bucket
中,再将桶分配给Leader。
段、Leader、桶,一一对应。
2.复制协议 R e p l i c a t i o n P r o t o c o l Replication\ Protocol Replication Protocol

初始配置阶段
1> 选中N123三个节点为Leader。
2> 分别分配segment
1、2、3。
分别对应SN1 4,2 5,3。
3> 分桶给Leader,包含用于提出提议的Req
批次
r
e
q
u
e
s
t
b
a
t
c
h
e
s
request\ batches
request batches。
分别为B1、2、3。
等待
Req
阶段
通过多SB实例(共识实例)达成共识。
SB实例与一个Leader及其Segment
相关联。
等待客户端发送请求,记为 S M R − C A S T ∣ < r x > SMR-CAST|<r_x> SMR−CAST∣<rx>,散列到本地桶队列中。直到:
- 桶满(预定义大小)如 ∣ B i ∣ = 3 |B_i|=3 ∣Bi∣=3.
- 预定时间(距上次提案)。
将桶里的Req
请求打包为一批次
β
i
\beta_i
βi。然后广播
S
B
−
C
A
S
T
<
1
,
β
A
>
SB-CAST<1,\beta_A>
SB−CAST<1,βA>消息。
共识阶段
每个Leader运行底层包装的TOB协议,就其提议的SB实例达成共识。【可并行non-blocking
】
- 共识成功,将SB中承载的一批
Req
交付。 - 共识失败,
log
中记录⊥。
TOB可以保证,成功时所有正确节点中的序列号与批次一致。
当一个epoch
的所有SN号对应的log
都被填满时,节点向Client发送
S
M
R
−
D
E
L
I
V
E
R
E
D
SMR-DELIVERED
SMR−DELIVERED,收满
a
q
u
o
r
u
m
a\ quorum
a quorum即完成。
3.多领导选择 M u l t i p l e L e a d e r S e l e c t i o n Multiple\ Leader\ Selection Multiple Leader Selection
L
e
a
d
e
r
S
e
l
e
c
t
i
o
n
P
o
l
i
c
y
,
L
E
Leader\ Selection\ Policy,LE
Leader Selection Policy,LE选主策略可以自定义,只要能保证活性:each bucket will be assigned to a segment with a correct leader infinitely many times in an infinite execution
将桶分配给正确Leader的段。
例如:保证足够多的正确Leader.
Zarko Milosevic, Martin Biely, and André Schiper. 2013. Bounded delay in byzantine-tolerant state machine replication. In 2013 IEEE 32nd International Symposium on Reliable Distributed Systems. IEEE, 61–70
Leader 故障检测
每个SB实例用==
F
a
i
l
u
r
e
D
e
t
e
c
t
o
r
Failure\ Detector
Failure Detector==,用来检测quiet nodes
。
ISS会从集合移除故障Leader,用LE再选个主。
4.优缺点
Pros
- 吞吐量,因为并行。
- 对客户端高响应,可立即执行
Req
。 - 资源不浪费,
Req
仅入一个桶。
Cons
- 共识延迟,引入额外开销。
- 故障时,SB实例高概率共识失败。(任何Leader故障,新主,并重新提出未提交的
Req
) Req
需要发到所有节点,以确保Req
放入正确桶。
五、DAG-Rider-2021
Idit Keidar, Eleftherios Kokoris-Kogias, Oded Naor, and Alexander Spiegelman. 2021. All you need is dag. In Proceedings of the 2021 ACM Symposium on Principles of Distributed Computing. 165–175.
D i r e c t e d a c y c l i c g r a p h ( D A G ) Directed\ acyclic\ graph\ (DAG) Directed acyclic graph (DAG).有向无环图。

图中为完整的消息传播历史,包含:遍历的路径、因果关系 c a u s a l h i s t o r y causal\ history causal history.
传统的Leader服务器承担:
tx
分发。 t r a n s a c t i o n d i s t r i b u t i o n transaction\ distribution transaction distribution- 达成共识。 c o n s e n s u s p h a s e consensus\ phase consensus phase
两项责任,巨大工作量导致tx
积压、系统瓶颈。
而DAG-based算法将二者分离,在tx
分发阶段无需Leader(吞吐量显著增加),在共识阶段每个实例都有一个Leader。
1.系统模型&服务属性 S y s t e m m o d e l a n d s e r v i c e p r o p e r t i e s . System\ model\ and\ service\ properties. System model and service properties.
DAG-Rider是一种异步拜占庭原子广播协议( a s y n c h r o n o u s B y z a n t i n e A t o m i c B r o a d c a s t , B A B asynchronous\ Byzantine\ Atomic\ Broadcast, BAB asynchronous Byzantine Atomic Broadcast,BAB)。
以最佳时间和消息复杂度实现了后量子安全。
分为两层:
- 基于轮的结构化DAG,分发
tx
用。 - 零开销的共识协议,独立确定提交消息顺序。
使用
Bracha
广播。
共3F+1个节点。
假设了一个全局完美硬币(
g
l
o
b
a
l
p
e
r
f
e
c
t
c
o
i
n
global\ perfect\ coin
global perfect coin)来确保活性。允许在wave
的实例上独立选择一个Leader.
2.DAG流水线 P i p e l i n i n g Pipelining Pipelining
节点独立维护自己的DAG,用一个数组[]
存储。(所有节点间消息传播拓扑)
以轮 r o u n d round round为单位。
强边:分发相同的msg,直链(directly linked in the previous round
)。
弱边:没有直链。
协议流程
验证器一直等待客户端发送交易(请求、顶点),存储于缓冲区buffer
,并监视:
定期检查,若其所有前导顶点都已成功接收,则加入DAG[]
,并根据round
组织起来。
当满2F+1个顶点时,进入下一轮r+1。(下一波?虽然首轮也是下轮)
生成新的顶点v:r+1,弱边,并广播。
因为网络部分同步,可能有不同的DAG出现,但BAB会保证最终收敛。
4.共识 C o n s e n s u s i n D A G s Consensus\ in\ DAGs Consensus in DAGs 「我也不知3跑哪了」
利用全局完美硬币,节点可以独立检查DAG,推断需交付的区块及其提交顺序。(无需额外协调)
在DAG于节点中发送顶点完毕后,系统启动共识旨在确保分发的tx
完成提交aimed at deterministically finalizing the commit of the disseminated transactions
.
在这个过程中,DAG被分为波waves
,每波有4个轮次rounds
。
利用完美硬币在第一轮中随机选择Leader(满2F+1强边)。
按照预先确定的顺序交付顶点块。交付区块时,会将其因果关系历史上的值也一并提交。
5.优缺点
Pros.
- 吞吐量显著提升。
- DAG达成消息分发和促进共识两种目的 d u a l p u r p o s e dual\ purpose dual purpose。
- 更稳定的提交。
Cons.
- 因为分离,延迟激增 𝑂 ( 𝑛 3 l o g ( 𝑛 ) + 𝑛 𝑀 ) 𝑂(𝑛 3 log(𝑛) + 𝑛𝑀) O(n3log(n)+nM) 。
六、Narwhal and Tusk-2022
George Danezis, Lefteris Kokoris-Kogias, Alberto Sonnino, and Alexander Spiegelman. 2022. Narwhal and tusk: a dag-based mempool and efficient bft consensus. In Proceedings of the Seventeenth European Conference on Computer Systems. 34–50.
将tx
传播与tx
排序分离,实现高效共识。
Mempool
负责可靠传播,少量元数据用来排序。
1.系统模型&服务属性
共3F+1节点。
Mempool
是一个KV键值存储
(
d
,
b
)
(d,b)
(d,b)。
K:digest.
V:交易块block
。
服务属性
- 完整性:(d,b)。
- 可用性:写入(d,b)后。
- 包含性 C o n t a i n m e n t Containment Containment:后块包含前块。
- 2 / 3 2/3 2/3因果性:后块包含至少 2 / 3 2/3 2/3前块。
-
1
/
2
1/2
1/2链质量:至少有一半
causal history
是诚实者所写入。
2.复制协议
替换Bracha
广播。
用固有DAG+证书实现。
blocks
包含
- hash sig。
tx
list。- 证书
certificates of availability
。
证书包含:hash、2F+1 sig、round
。
原理
- 收集
tx
——tx
list 和 证书list。 r-1
主收集2F+1证书 ——r
,新块广播。- 验证sig、含2F+1、唯一块,签名(确认)。
- 满2F+1, 造一个证书并广播,此时停止广播新块。
3.Tusk共识
- 选主同DAG-Riders。
- 一波三轮。
- 一三🉑重叠,4.5rounds。
4.优缺点
Pros.
- 一个基于DAG的BFT算法的具体实现。
- 吞吐量优势。
Cons.
- 高延迟(提交区块前等待多轮)。
- 未满足标准的
tx
需要等更多wave
。
E n d . End. End.
Miguel Castro and Barbara Liskov. 2002. Practical Byzantine fault tolerance and proactive recovery. ACM Transactions on Computer Systems (TOCS) 20, 4 (2002), 398–461. ↩︎