Py学习  »  区块链

区块链 - HoneyBadgerBFT共识算法

星想法 • 5 年前 • 520 次点击  

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算法的性能显著下降。




今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/qGY3RrhR6r
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/23053
 
520 次点击