该论文于2018年5月首次披露,提出了一种基于亚稳态机制(metastable)的共识协议族。作者是一个神秘团队Team Rocket(火箭队?)。
所谓亚稳态,是指系统在某段时间内处于稳定状态,但在另外一段时间内可能是不稳定的。稳态代表了系统的最低能量点,而亚稳态则是一个局部的而非全局的最低能量点。以下图中的小球为例,如果用比较小的力推小球,则会停留在位置1这个亚稳态上,而如果用比较大的力推,则会进入位置3这个真正的稳态上。
那么这个新的共识协议族有什么特点呢?
- 绿色(Green):消耗很少能源
- 安静(Quiescent):没有交易时不需要工作(出块)
- 高效(Efficient):节点交互复杂度O(knlogn) ~ O(kn)
如何实现以上目标?主要依赖以下几种措施:
- 并行共识模型:不使用单一复制状态机(RSM)模型,每个节点维护自己的RSM(可以互相转移所有权),系统对有关联的交易只维护偏序(partial order)
- 反复随机采样:引导诚实节点产生相同输出
- 亚稳态决策:亚稳态决策可以使得一个大网络快速推进到一个不可逆的状态(虽然不能100%保证)
既然是共识协议,必然绕不过安全性和活性的证明。我们先看一下这两个特性的定义:
- 安全性(Safety):nothing bad happens
- 活性(Liveness):something good eventually happens
该论文证明,文中提出的算法可以提供强概率安全性保证,并且保证诚实节点的活性。所谓“强概率安全保证”,是指共识被逆转的可能性小到可以被忽略(甚至小于哈希冲突的概率),实际上POW提供的也是强概率安全性保证。
另外,文中的理论分析是基于同步系统假设,而实验过程则是在部分同步系统中完成的,实验结果和理论分析基本吻合。
下面开始依次介绍这四种共识算法。
Slush(雪泥)
该算法的灵感来源于Gossip(流言)协议,或者也被称为Epidemic(传染病)协议,主要用于数据同步。
算法流程参见下图:
为了算法的通用性,这里是以颜色冲突为例:R表示红色,B表示蓝色,⊥表示没有颜色(初始状态)。
- 初始状态:没有颜色(⊥)
- 收到交易:染成交易中指定的颜色,同时发起查询
- 查询:在网络中随机选取k个节点,如果规定时间内没有收到k个回复,再多选一些节点,直到收到k个回复为止
- 收到查询:如果没有染色,染成查询中指定的颜色,并回复该颜色ÿ