HoneyBadgerBFT算法2016年提出,针对异步网络设计。HoneyBadgerBFT算法论文的下载地址:https://eprint.iacr.org/2016/199.pdf。
本文介绍HoneyBadgerBFT算法的流程以及论文实验结果。
1)总体算法流程
HoneyBadgerBFT算法分为三个步骤:1)随机选择交易 2)通过ACS协议实现加密后的交易的共识,获取交易列表 3)解密加密交易。算法流程如下:
TPKE,threshold public key encryption,带阀值的加密算法。通过TPKE加密后的数据,需要多份子秘钥才能解密。
TPKE.Setup创建公钥PK和若干个子秘钥SKi。TPKE.Enc用PK对m进行加密,加密结果是C。TPKE.DecShare用单个子秘钥解密得到中间结果。TPKE.Dec用若干个中间结果解密得到m。
可以发现HoneyBadgerBFT的核心是ACS协议。
2)ACS协议
ACS - asynchronous common subset。ACS协议由两个协议组成:一个是RBC协议,一个是BA协议。ACS协议的主要功能是通过RBC协议广播交易,再通过BA协议形成一致的交易列表。
BA协议,Binary Agreement,相对简单,不做介绍。网络节点间的数据共识的基础是RBC协议。
3)RBC协议
RBC,reliable broadcast协议。RBC协议通过纠删码算法降低节点间的数据传输。两次广播(ECHO以及READY消息),网络节点间可以形成共识。
4)性能以及和PBFT算法对比
论文指出HoneyBadgerBFT算法的总的数据传输的复杂度:
其中,v是单节点上最大数据大小。从单个节点来看,复杂度可以近似为O(NlogN)。论文在Amazon集群上模拟节点,对比了HoneyBadgerBFT和PBFT的性能,如下图:
简单的说,在网络节点少的情况下(比如,8节点),HoneyBadgerBFT性能稍逊PBFT算法。但是在网络节点变多的情况下,HoneyBadgerBFT算法的性能几乎不变,而PBFT算法的性能显著下降。
总结:HoneyBadgerBFT是针对异步网络设计的共识算法。HoneyBadgerBFT算法的核心是RBC广播协议,主要思想是,网络节点可以同时广播交易,通过BA算法形成一致的交易列表。论文指出HoneyBadgerBFT算法的复杂度是O(NlogN),在网络节点少的情况下(比如,8节点),HoneyBadgerBFT性能稍逊PBFT算法。但是在网络节点变多的情况下,HoneyBadgerBFT算法的性能几乎不变,而PBFT算法的性能显著下降。
领取专属 10元无门槛券
私享最新 技术干货