2017-01-04 Jin Gao HoneyBadgerBFT:一个网络环境无关的Byzantine容错的分布式共识协议
作者介绍:
夏雨,麻省理工学院电子工程与计算作者机科学系博士一年级在读,本科毕业于清华大学姚班。目前的研究兴趣包括分布式系统与理论密码学。
随着密码货币的流行,人们把越来越多的注意力放在大规模、Byzantine容错的分布式协议上。这些协议可以用来执行一些“任务敏感”的应用,例如金融交易系统、能源维护系统、交通调度系统等。这样的协议可以保证即使集群中的部分机器出现故障或者因遭受攻击被敌手支配的情况下,剩下的大部分主机还可以使任务正常进行。在这样的应用场景中,传统的解决方案是使用弱同步(Weakly Synchronous)的分布式协议,例如PBFT。这类弱同步协议的活跃性(Liveness)仍然依赖于对于网络延迟的假设,我们认为这样的协议不适用于极端的网络环境(在我们的论文中,我们给出了一个让PBFT失败的网络环境)。
因此我们提出了HoneyBadgerBFT协议,这是据我们所知的第一个完全异步的共识协议,它不依赖于任何关于网络环境的时间假设。
目前HoneyBadgerBFT仅支持封闭网络,即在协议开始前,集群中的主机数量是已知的,并且在协议执行过程中没有新的主机加入网络。
HoneyBadgerBFT的核心部分由两部分组成,分别是原子广播(Atomic Broadcast)和异步公共子集协议(Asynchronous Common Subset),这两个协议的性质请参考论文的第4章 。
在协议开始以前,每个主机准备好各自的提案(即试图写入共识的数据),启动N个原子广播的实例(N为网络中主机的个数)。在某一个原子广播完成以后遂将该广播对应的主机编号作为输入启动异步公共子集协议。异步公共子集协议在收集到足够多的主机编号后终止,所有的非敌手主机得到一个关于子集的共识。根据这个子集这些主机将从原子广播阶段获得的提案写入共识。
我们的原子广播取自Bracha在1987年提出的协议 [1],如论文中图2所示。我们在[1]的基础之上进行了许多优化。例如,我们使用了消除码来改善它的渐近通信复杂度 [2]。
我们使用的异步公共子集协议来自Ben-Or的构造[3],如论文中图4所示。直观来讲,它使用N个二进制共识协议实例并根据其结果来决定一个公共子集。在我们的工作中,我们使用了Mostefaoui等人的随机二进制共识协议原型[4]。
这个随机二进制共识协议中依赖于一个分布式公共随机源,我们使用了一个简单的阈值加密系统来设计这个随机源。
在核心部分之外,我们还要考虑对手利用网络延迟操纵提案选择的可能性,完整的协议在论文中的图1中描述。
![](http://upload-images.jianshu.io/upload_images/4582835-10def6dcd35c9ca6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/341)
![](http://upload-images.jianshu.io/upload_images/4582835-fae70d40b12d6225.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/343)
![](http://upload-images.jianshu.io/upload_images/4582835-322977a0d823a278.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/343)
HoneyBadgerBFT的容错率为该模型下理论最优的 。
协议的期望运行时间为个异步时间单位(以公共随机源为准)。N台主机间的消息总和的通信复杂度为, 其中为各个主机的提案中最大的一个,为安全参数。如果我们每次投放大小的消息平摊到每个主机上,的额外开销将被消除。通信复杂度将变为每台主机。
我们在Amazon EC2服务上进行了大规模的实验(104台主机,容错量为26,分布在EC2的8个区横跨5个大洲),在论文中我们提供了消息大小(Batch Size)和通过量(Throughput)的折线图(图6),消息延时和通过量的折线图(图7),以及与PBFT的消息通过量的对比(图8),当主机数目稍大的时候,PBFT处于劣势。由于HoneybadgerBFT对网络环境的要求很低,我们将其在Tor上也进行了实验,最高达到了800Tx/sec的通过量。
![](http://upload-images.jianshu.io/upload_images/4582835-817f481cc5460aca.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/342)
![](http://upload-images.jianshu.io/upload_images/4582835-a0ac328bca0c5b05.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/339)
![](http://upload-images.jianshu.io/upload_images/4582835-c5024e1392730eb3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/367)
参考文献
- [1] G. Bracha. Asynchronous byzantine agreement protocols. Information and Computation, 75(2):130–143, 1987.
- [2] C. Cachin and S. Tessaro. Asynchronous verifiable information dispersal. In Reliable Distributed Systems, 2005. SRDS 2005. 24th IEEE Symposium on, pages 191–201. IEEE, 2005.
- [3] M. Ben-Or, B. Kelmer, and T. Rabin. Asynchronous secure computations with optimal resilience. In Proceedings of the thirteenth annual ACM symposium on Principles of distributed computing, pages 183–192. ACM, 1994.
- [4] A. Mostefaoui, H. Moumen, and M. Raynal. Signature-free asynchronous byzantine consensus with t< n/3 and o (n 2) messages. In Proceedings of the 2014 ACM symposium on Principles of distributed computing, pages 2–9. ACM, 2014.
作者:大圣2017
链接:https://www.jianshu.com/p/425d7fde411a
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。