摘要
分布式系统中的一致性一直是计算机科学领域的一个重要问题。经典的一致性协议具有一致性强、效率高的特点,但存在通信代价高和封闭性问题。以比特币而闻名的中本聪共识协议具有开放性和无权威的特点,但也存在成本高、资源浪费、性能有限的局限性。2018年诞生的雪崩共识协议,结合了上述两类协议的优点,借鉴了中本聪协议的类似设计,采用概率安全保障,使用可调的安全参数,使得共识失败的概率任意小;此外,增加了BFT属性,提高了系统的效率和安全性。
Avalanche是一种基于亚稳态机制的分布式拜占庭容错协议,由Slush、Snowflake、Snowball和Avalanche四个子协议组成:
(1)Slush协议是雪崩协议系列中最基础的部分,它通过反复随机采样使节点达成共识;
(2)虽然Slush协议是稳定的,但是当拜占庭节点存在时,它不能提供强有力的安全保证。因此,火箭队在Slush协议的基础上增加了一个计数器来增加系统的安全性,称为雪花协议;
(3)雪花协议要求每次颜色翻转时计数器都要复位。为了使系统更加安全,在雪花协议的基础上引入了更持久的可信性,即雪球协议;
(4)Avalanche是亚稳态协议家族中的最后一个协议,它在雪球协议中增加了一个有向无环图(DGA)来记录所有的事务状态。
关于雪崩协议的论文发表后,人们还没有发现雪崩协议和零确认交易之间有什么关系。然而,在2018年12月左右,BCH社区的技术人员认为可以使用雪崩协议来确保零确认交易的安全性。然而,上述方案只是BCH技术人员的初步设想。目前,BCH的雪崩协议仍在开发中,预计2019年底或2020年初进入主网测试阶段。
风险:数字货币风险高,区块链技术处于发展初期,不成熟,政策监管态度不明朗。
文本1。引言在区块链领域,并不是每天都有人出来说“我有了一个新的颠覆性突破”。即使有,也更多来自于广告营销。从十年前中本聪在《比特币白皮书》中提出的PoW机制,到五年前以太坊的智能合约,近年来鲜有如此辉煌的技术突破。然而,2018年出现的雪崩共识协议可能是个例外。
2018年5月,一个名为“火箭队”的匿名团队在星际文件系统(IPFS)上发表了一篇名为《从“雪花”到“雪崩”:一种新型的亚稳态共识协议族》的论文,立即引起了极大的关注。Avalanche是由Rocket团队受gossip协议启发而提出的一种新的区块链共识协议,它通过亚稳态机制来保证系统的安全性。与目前主流的一致性算法相比,Avalanche具有许多优秀的特性,有望成为下一代区块链一致性算法中的明珠。正如康乃尔大学教授埃米宁冈西勒(Eminen Gunsirer)所说:“雪崩描述了一种新的共识协议,它将中本聪共识协议与经典共识协议结合在一起,这是一个重大突破。”
2.早期共识协议的发展。分布式系统中的一致性一直是计算机科学领域的一个重要问题。目前,解决这一问题的共识协议有两种:一种是经典共识协议,另一种是中本聪共识协议。
经典的共识协议,由图灵奖获得者Lambert提出,具有强一致性和高效率的特点。然而,它也有一些缺点。第一,沟通成本。在经典的共识协议下,节点数不能超过1000,因为系统的通信开销会随着节点数的增加而呈指数增长。其次,要求网络中的所有节点都是可信的,节点不能自由进出。
另一种共识协议是中本聪共识协议,这是众所周知的比特币。这种协议不能达到强一致性,但为系统提供了安全的概率保证。只要3354满足一定的参数标准,共识就是不可逆的。采用该协议的系统具有开放性和无权威的特点,任何节点都可以随时加入网络。但也有成本高、浪费资源、性能有限的缺点。
雪崩一致性协议结合了上述两种协议的优点,借鉴了中本聪协议的类似设计,采用概率安全保证,使用可调的安全参数,使得一致性失败的概率任意小;此外,增加了BFT属性,提高了系统的效率和安全性。
3.从“雪花”到“雪崩”:雪崩协议介绍3.1 .雪崩基本原理雪崩是一种基于亚稳态机制的分布式拜占庭容错协议,可以为系统提供强有力的安全保障。此外,它的并发特性可以实现高吞吐量和可伸缩性。雪崩由四个子协议组成:雪泥、雪花、雪球和雪崩。首先是最简单的Slush协议,然后在Slush的基础上,相继构造了雪花、雪球和雪崩三种BFT协议。
3.2.Slush协议Slush协议是雪崩协议系列中最基础的部分。Slush协议的灵感来源于gossip协议(也称为Gossip协议)。在该协议中,通过重复随机抽样,节点可以达成共识。为了简单理解这种协议的基本原理,这里我们引用Avalanche的白皮书作为不可信分布式网络中的例子,其中节点投票选择蓝色或红色作为最终颜色(因为在共识协议中,无法在两个选择中做出唯一的决定是最大的问题)。在雪崩协议下,节点间达成共识的步骤如下:
(1)所有节点在开始时都处于未着色状态;
(2)当节点接收到来自客户端的交易信息时,未着色节点A将自己的颜色更新为交易所携带的颜色,并向其他节点发起查询。
(3)如果未着色的节点B收到查询请求,那么该节点将被染成相同的颜色,以相同的颜色回复节点A,同时向其他节点发起查询;如果有色节点C收到查询请求,该节点向节点A发送自己的有色回复;如果节点A在有限的时间内没有收到K个响应,那么节点A将继续从剩余的节点中选择一些节点发出请求,直到收集到K个响应;
(4)节点A在收集到k个响应后,会检查是否存在相同颜色的样本数/总样本数(x ),使得k,其中是协议的一个参数,0.5;如果x
Slush协议有许多优秀的特性:
(1)简单状态:在这种协议下,节点可以是无记忆的。在每一轮查询之间,节点不保留除当前颜色以外的任何状态,尤其是与其他节点的交互历史;
(2)小样本:Slush协议与传统的共识协议显著不同,它要求每个参与者都被查询,而Slush协议在每轮中只随机选取网络中固定大小的一小部分;
(3)重复取样:Slush需要M轮重复取样。此时,即使网络一开始处于50/50红蓝划分的亚稳态,采样过程中的随机扰动也会导致一种颜色的微弱优势,后续的重复采样会建立并放大这种优势;
(4)通信成本低:每个节点每轮都有一个恒定的、可预测的通信成本,这个成本随n成对数增加。
3.3 .雪花协议虽然Slush协议有很多优秀的特性,但是当Slush协议部署在有拜占庭节点的网络中时,攻击者可能会干扰决策。特别是如果诚实的节点更喜欢一种颜色,那么攻击者可以尝试将节点翻转到相反的颜色,以保持网络的平衡。Slush协议本身是稳定的,但是当拜占庭节点存在时,它无法提供强有力的安全保障。因此,Rocket team在Slush协议的基础上增加了一个计数器来增加系统的安全性,这就是所谓的雪花协议。
具体来说,在雪花协议中,计数器可以记录有多少个连续的样本产生了相同的颜色(当节点A的查询的响应结果为xk时,则节点A的计数值cnt加1;每当节点A的颜色改变时,节点A将把cnt值重置为0)。如果一个节点的计数值cnt超过某个阈值,它将接受当前颜色。这里是系统的另一个安全参数。
当协议为拜占庭节点的阈值和所需的保证次数设置参数时,可以保证系统的安全性(即没有诚实节点会接受冲突的事务)和活性(诚实节点发送的任何事务都会被其他节点接受)。
3.4.在雪球的历史上,以太坊经历了七次硬分叉,其中“故乡”和“拜占庭”阶段的硬分叉与这次的“君士坦丁堡”类似,其他硬分叉要么是为了突发事件,要么宣传力度和规模都很小,与这次的硬分叉没有可比性。每次以太坊因技术升级导致的硬分叉都会给ETH带来巨大的市场波动。基于这一现象,我们选取以上两个历史硬分叉进行分析。
雪花协议的状态是短暂的:每次颜色翻转,计数器都会重置。虽然理论上这个协议可以用最小的状态代价保证系统的安全性,但是为了让系统的安全性更高,火箭队在雪花协议的基础上引入了一个更持久的可信,这就是雪球协议。
具体来说,雪花协议和雪球协议的区别如下:
(1)每次查询成功,节点将颜色的置信度计数值加1;
(2)当当前颜色的信任计数值低于新颜色的信任计数值时,节点将切换颜色。
在这一点上,雪球协议不仅比雪花协议更难攻击,而且更容易扩展到多命令协议。
3.5.雪崩协议Avalanche是亚稳态协议家族中的最后一个协议,它在雪球协议中增加了一个有向无环图(DGA)来记录所有的事务状态。DGA只有一个点,那就是创作点。引入DAG有两个主要好处:
(1)效率,投票给DAG中的某个节点意味着投票给从创建点到这个节点的路径上的所有节点,提高了协议的效率;
(2)安全性,因为DAG包含交易信息,这类似于区块链的链式结构特征。这使得没有诚实节点的批准很难撤销过去的决定。
维护DAG的核心挑战是在冲突的事务中进行选择。在加密货币的应用中,花费相同金钱的交易(双重支付)是冲突的。这些冲突的事务形成一个冲突集,诚实节点只能接受冲突集中的一个事务。请注意,包含有效事务的冲突集总是单个元素集。
雪崩协议实际上是一个包含所有冲突集的雪球协议。然而,雪球协议使用重复查询和多个计数器来获得冲突事务中的信任值,而雪崩协议使用DAG结构和事务的后代来实现这一目标。具体流程如下:
(1)当节点a接收到一个新的事务t时,它发起一个新的查询过程(随机抽样k个节点),发起查询的节点会将t添加到它的已知事务集中;
(2)接收消息的其他节点将查询它们的DAG事务集,以查看是否存在T事务的父事务。如果有,那么交易T可以视为非常可信,即交易被确认;否则,只要T交易的任一祖先交易不满足条件,那么该交易将被确认为非法交易;
(3)当节点A接收到k个响应时,它将检查是否至少有k个确认该事务的消息。如果是,那么T将收集一个Chit值,该值将被记录为CuT=1,否则CuT=0。
(4)上述过程将在DAG中为每个交易标记Chit值及其相关联的可信度值。需要注意的是,Chit是在一次采样中生成的,它是一个不可变的值。值只能是0或1,而其可信度值是可以累加的,会随着DAG的扩大而增加;
图7是用chit值和可信度值标记的交易的DAG图。图中每笔交易的查询结果用来表示,较暗的方块表示可信度较高。例如,T2的可靠性为5,高于T3。这意味着T2的后代比T3的后代更容易收集到Chit。
3.6.雪崩协议的特点从实际情况来看,在“主场”硬分叉阶段,由于2015年下半年以太坊前沿版的发布,让人们看到了以太坊的技术实力和智能合约的潜力。正因如此,市场普遍看好即将推出的“家庭”版,所以以太坊在分叉前的几个月处于上升期,泡沫必然在这个过程中不断积累。硬分叉之后,市场的乐观预期也在。
在上面,我们介绍了雪崩协议的基本原理。现在,我们具体分析一下雪崩协议有哪些优秀的特性。
(1)高效的可扩展性:因为协议是轻量级的,所以可以提供可扩展性和低延迟;
(2)高拜占庭容错性:即使网络中50%以上的节点是拜占庭节点,网络仍然是安全的;
(3)静态绿色:在雪崩协议下,网络可持续运行。与功率机制不同,雪崩协议不会浪费任何资源;
(4)通信代价低:传统的一致性协议的通信复杂度为O (N 2),而雪崩协议的通信复杂度在O(kn logn)到O(kn logn)之间。
4.零确认交易和雪崩协议。关于雪崩协议的论文发表后,人们还没有发现雪崩协议和零确认交易之间有什么关系。然而,在2018年12月左右,BCH社区的技术人员Chris Pacia发表了一篇文章,称可以使用雪崩协议来确保零确认交易的安全性,引起了市场的广泛兴趣。
如前所述,雪崩协议要求在M轮重复采样后达成共识。为了限制确认时间,必须限制重复采样的次数,这意味着当网络中恶意节点的数量已经尝到了一定的比例时,诚实节点在有限的重复采样轮次中无法达成共识。因此,Chris Pacia认为可以引入PoW机制作为反sybil机制,保护网络的安全,防止黑客激活的攻击节点数量超过阈值。
具体来说,如果网络上没有双重支付,则矿工将事务接收到他们的内存池中,选择要放入块中的事务,并将打包的块广播到网络。这个时候矿工们连雪崩的消息都没发。当双倍支付进入矿工的记忆池,就会触发雪崩过程。矿工开始互相发送雪崩查询,并执行N轮。最终所有矿工都会决定交易A有效,B无效,或者A无效,B有效。
以上方案只是BCH技术人员的初步设想。目前,BCH的雪崩协议仍在开发中,预计将于2019年底或2020年初进入主网测试阶段。
5.结论Avalanche作为一种亚稳态共识协议,通过重复采样使节点达成共识。因此,与经典共识协议和中本聪共识协议相比,Avalanche具有高可扩展性、静态绿色和低通信成本的特点。同时,由于雪崩协议中引入了可信度,可信度会随着DGA的扩张而累积,这意味着可以达成一个预先的共识,即有可能通过雪崩实现零确认交易。目前,BCH团队已经开展了R&D和相关技术的测试。一旦实现零确认交易,对BCH将是一大利好。