通过对近年论文总结做的笔记,从个人角度思考共识发展,仅供参考。
通过对近年论文总结做的笔记,从个人角度思考,仅供参考。
一、研究背景
针对公链共识的基础要求:通过阅读和完成共识协议的比较,我们首先要明确,任何的区块链共识协议都需要满足基本的安全性,最理想的情况是一笔新交易到达之前,网络各节点就对前一笔交易的有效性进行了确认,但我们必须考虑到,公链网络节点数量规模大,无论通信消息有多小,都存在无法忽略的瞬时延迟,如果采取强一致共识,会存在两方面问题,一个是巨大的通信开销(通信复杂度随着网络规模呈二次方增长),另一个是网络带宽,也就是通信能力是有限的,很难在有限的时间达成一致,所以对于公链我们应该考虑的是弱一致性的情况。
针对PoW所存在的不足:首先讨论,区块链典型代表比特币,比特币是在无许可环境中的第一个完成实现BFT共识协议,它通过工作量证明(PoW)算法选举领导者进行出块,通过最长链原则实现概率性确定,PoW能够有效地防范女巫攻击以及双花攻击,因为产生区块要耗费一定的算力,而要成功实施双花攻击需要掌握全网51%的算力。
共识共有的限制因素:比特币的吞吐量和交易确认延迟无法满足用户需求,其性能瓶颈是由多种因素造成的,比特币产生区块之后,要进行区块广播,区块验证和确认,当区块间隔足够长,才能给区块广播验证和确认提供充裕的时间,从而减少未确认区块又产生新区快的可能性,进而减少网络分叉的风险。而这一过程的处理速度实际上是与区块链网络通信能力,也就是网络负载能力,以及节点对区块处理能力相关。
现有PoW后续优化的协议主要是通过以下两个大方向进行优化的:
那么有很多共识协议就想着缩短专用设备和和个人设备的距离,这样就能使更多节点加入网络。例如,比较火的Filecoin的共识协议PoRe是通过存储空间代替算力来进行竞争记账权,以及PoSt则是用Data storage time来代替,采用PoSt减少通信成本,以及Hyperledger Sawtooth 采用的 PoET 依赖于可信执行环境 (TEE)等等。
PoS作为最有可能替代PoW的共识协议,它能够补充PoW在以上两问题的不足。PoS的里程碑Peercoin(2012)将PoS和PoW结合,h(x)<=target * stake,并且采取币龄最高链为block finalization。以及第一个纯PoS加密货币Nxt ,节点拥有的加密货币越多,获得生成区块的权利的机会就越大。这样的PoS也带来了新的问题,攻击者可以通过增长币龄操控节点的选举,以及中心化的问题。如果leader的产生是可预见的,或是恶意节点通过特定手段便可让其选举成功,进而使恶意节点操控网络,从而破坏区块链网络安全,所以PoS协议设计需要考虑到leader的产生不可预测不可操纵。
随着密码学、分布式计算、可信多方计算等发展,很多共识协议将其加入在其中,用于出块节点的选举和区块的验证。基于委员会的PoS,共识对象议委员会为单位,这样可以减小达成共识的通信开销,是为了其增强选举出leader的随机性,通过安全多方计算(MPC)生成委员会,以及leader名单。Ouroboros(2017)通过可公开验证秘密共享(PVSS)选举下一个epoch的出块者名单,对应着每个slot进行出块,这带来了leader被攻击的风险,或是提前贿赂leader的可能。Ouroboros Praos通过可验证随机函数(VRF)以本地加密计算为代价节省了大部分通信开销,leader名册不公开,生成leader可以安全验证。Algorand(2017)在基于委员会的PoS的基础上,通过一种称为加密排序的VRF方案完成的,该方案根据stake对候选人进行排序,只有排名高于阈值的人才被接纳进入下一个区块周期的委员会。
区块链网络由委员会进行共识,但随着网络节点越多,委员会中节点数量也会增多,通信开销也会随之增大,可能出现宕机和性能下降的情况。又加上其采用的大部分是LCR这种概率性总结规则,在这种情况下,也容易出现Nothing-at-Stake,也就是双押攻击,以致于更加容易出现网络分叉的情况。
PoS为了确保block finalization的确定性,将BFT作为其区块终结方式,同时,也在减少委员会内的通信开销努力。早期的Tendermint(2014)将BFT和PoS分离,通过BFT来进行共识投票,但由于未实施有效的slash规则,很容易出现懈怠行为,进而影响其区块链安全性。Algorand过BA*(拜占庭共识,满足调节的候选者通过密码学抽签随机选取)来达成共识。CasperFFG(2017)首先将网络中活跃的验证者随机地加入各个委员会,以委员会为单位进行出块和投票收集,通过检查点和投票权重结合,并结合一系列奖惩措施去保证PoS的正确执行。
安全性是我们设置共识协议的前提条件,在这个基础上,我们再结合对应的使用场景在去中心化和可扩展性之间进行平衡。在设计共识协议的时候,可以尝试在这些方面进行优化:
a. 对PoX出块方式进行优化,将X与特定场景性能进行结合,就类似于将算力工作运用在别的地方,或者与IoT相应特性结合,例如PoLe(与强化学习结合); b. 减少区块链网络的通信开销,例如对底层网络拓扑进行优化,或者将出块方式进行拆解,异步并行处理,另一个方面,对重复或是冲突交易进行处理; c. 通过密码学等来对共识过程进行优化,例如通过密码学改进区块验证方式,减少区块处理时间,或是增强选举过程的随机性.
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!