今天看完了Rafael Pass大神的论文《Hybrid Consensus:Efficient Consensus in the Permissionless Model》,理解了我之前看《Thunderella》好多不理解的内容。还有了很多新的收获。

综述

本文主要是针对无权限网络能否达成responsiveness进行的分析与研究,如果能够在保证以下几点 1. 网络延迟上限已经设置 2. 在responsive之前,允许存在一个warmup阶段 3. 诚信节点不能立即变化,是一个缓慢变化的过程 4. 恶意节点数不能超过总结点的$\frac{1}{3}$

本文全部都是针对这几点进行的分析和解释,我们再来看几点比较重要的内容。

相关概念

为了方便理解,作者在此处定义了好多个指标,用来表示区块链的网络属性,这块内容比《Thunderella》清晰多了。

consistency

所有的节点输出的chain(或者说,是区块的记录列表)除了最后的$\lambda$个,前面的区块是完全一致的。 这样的话,可以保证足够多的一致区块,在选举委员会的时候,就可以很方便的找到最近的n的矿工,作为委员会成员

Q-chain quality

在Thunderella中,作者定义了几个状态,是intact,precorrupt和corrupt,为了在这也方便解释,我们借用一下概念 一个节点可以转为恶意节点是允许的,但是在此处我们定义了一个参数$\tau$,代表转换速度。 如果$\tau=0$,代表节点瞬间转换成恶意节点,这个不符合我们在摘要中规定的要求 如果$\tau=\infty$,就是节点不可能转为恶意节点,这个是比较理想的好情况 所以,现在我们就可以在这介绍intact,precorrupt和corrupt的含义啦 1. intact:节点不是恶意节点 2. precorrupt:节点收到污染,但还没有编程恶意节点,依然按照正确节点进行($0<\tau<\infty$) 3. corrupt:节点是恶意节点

这个情况下,如果一个输出的链$\lambda$长度中Q的长度由intact节点贡献出来,那么我们可以认为链的质量为Q-chain quality

($G,G^{'}$)-chain growth

如果在一个时间t内,$Gt \geq \lambda$的前提下,保证链的生成速度是在$[Gt,Gt^{'}]$之间。这个是为了保证不会生成速度太快,导致错误

liveness

就是有新的交易进来,一定会能写入到区块中

responsiveness

根据论文的阐述,目前的公有链平台中,为了达成一致,不得不人为设定一个时间,来保证交易不会出现问题,这个时间就是人为考虑的最大的网络时延$\Delta$,如果一个区块的生成速度与$\Delta$相关,那就一定不是responsiveness的。而如果交易速度取决于实际的网络时延$\delta$,那就可以认为是responsive的。 在比特币网络中,人为设定了新的区块的生成速度是10分钟一个,虽然10分钟可以减少,但是依然跟实际网络时延无关,这就是non-responsive的。

协议

文章给了协议的伪代码,但是依然不是非常直观,我也不是很理解,在此处进行简略介绍。 结合Thunderella的模型,我们进行一个通俗的解释。 整体应该是有两种功能节点: 1. committee member:也就是委员会成员,是由最近的$\lambda$的区块的创建者组成 2. committee non-member:非成员,主要就是进行记录的

在协议中,可以认为一个warmup阶段,有$2\cdot\lambda$个区块由底层网络生成,然后去除部分不一致的区块后,取出前$\lambda$个区块的矿工,组成委员会。 有了委员会后,这些委员会之间使用BFT算法达成共识,公布给其他的节点,进行全网记账。 当然,有一些恶意节点可能会导致交易无法写入到区块链中,就使用底层区块链网络来达成共识。 使用底层网络后,还可以再切换回去。

结语

实际上我认为本文混合共识算法的模型还是比较简单的,但是可能不够成熟,所以作者又提出了Thunderella。 本文我的主要收获就是理解了很多概念,对于混合共识有了更多的理解。