来自论文Practical Byzantine Fault Tolerance
本文旨在进行Byzantine faults的容错,文章开门见山提出了新算法的优势:可工作在异步环境(如Internet),响应时间可以获得比之前算法超过一个数量级的提升。当然肯定会有limitation伴随,我们试着找出它们。
一开始文章就告诉我们有一个问题还没能解决:fault-tolerant privacy。
►Normal-Case Operation
提出了Buffered requests,可以减少系统负载沉重时的message traffic和CPU overheads,不过这似乎并不是本文的重点,因此被忽略了。
模型采取了Client -> Primary -> Backups的流程,即Client先将请求发给Primary,再由Primary通过一个三阶段协议广播给Backups。先来看一看这个三阶段:pre-prepare, prepare, commit。
在pre-prepare阶段,primary会给请求分配一个序号n,然后向所有的backups发送一个prepare message with m piggybacked,并将这个message加到它的log中。这个message的形式是
v指的是发送信息所在的view,m是client的request message