2019年1月17日,北大软微-八分量协同创新实验室展开第9期学术沙龙讨论活动。北京大学沈晴霓老师,杨雅辉老师、方跃坚老师以及多位北大的博士生,硕士生与Trias资深系统研发胡志琳就共识算法和容错机制问题做了探讨。
有一种说法是,共识算法就是区块链网络中的法律。它决定了谁有出块的权力和谁获得出块的奖励。然而,不同的共识算法,其效率速度,能耗高低,容错机制都不尽相同,什么才是合理的共识算法呢?本周,资深系统研发胡志琳博士带来了他的见解。
先简要回顾一下共识算法相关。目前共识算法主要可以分为两类:同步共识算法和异步共识算法。同步共识算法相对比较简单,它指的是在一定时间内收集共识消息,只要“好”节点过半即可顺利达成共识,如POW算法。而异步共识算法,(比如PBFT)不需要明确的时间同步,但对“坏”节点的容错度较低,常规的拜占庭类共识算法的容错能力通常不超过33%。
关于拜占庭容错,在1981年Lamport提出了《The Byzantine Generals Problem》一文中,对拜占庭将军问题的两种解决办法做出了解读。
①口头消息,即OM(m)协议。在弱同步的假设下实现了多项式级的复杂度PBFT,也就是所谓的最多有1/3容错节点数量的理论上限。
②签名消息,即SM(m)协议。与口头协议相比,所有的消息都是有记录的,这样就解决了追根溯源的问题。已经证明这种协议下可对任意多个节点实现容错,即容错率逼近100%。此类算法的应用约束为同步网络。
有了上述背景,我们再简要介绍一下Trias超级节点的由来。Trias上的节点都要具备TEE环境,并通过一个叫做“上帝掷骰子”的游戏。这样一来,每一个节点的可信度时时刻刻都处在动态的监测中,通过一定周期颁发的天榜,选取出排名最高且安全的节点作为超级节点。
理论上说,超级节点的可信度是很高的,但并不排除超级节点临时被恶意攻击,或为牟利而说谎的可能。那如何进一步保证超级节点呢?这就要通过在超级节点集合上运行共识算法来做文章了。
根据Trias的优化方案(称之为KeepBFT方法),首先,在选择超级节点集合时,冗余一定的节点数。当出现问题节点时,直接选取替补节点,以保持线上正常的可信超级节点数目。
此外,Trias在去中心化的签名确认方案的基础上,将一部分超级节点赋予了新的功能,被称为观察层,也可称之为共识确认层,观察层由多个Paxos状态机观察节点和一个AI决策模块组成。所有观察层节点始终保持在线,接受链上所有的提案信息。
正常情况下,共识确认层和其他超级节点一起进行日常工作。但是当部分节点遭到攻击时,观察层就可以分析出谁是“好”节点,并将他们选取出来达成共识。恶意节点的提案剔除,并在此轮有效期内发送给所有的超级节点。
即使恶意节点的数量非常多,整个系统仍然能够可靠地实现共识的高容错,即忠实节点仍然能够取得有效的共识。基于TRIAS天榜所遴选的超级节点和确认层共同作出的保障,其共识容错能力达到90%以上,乃至逼近100%。
网友评论