0%

雪崩协议

雪崩协议(Avalanche)是一个新型的共识协议,它继承了Non-Byzanting和Nakamoto共识算法两者的优点,具备了简单又高效的特点。

背景

BFT和PoW算法

拜占庭容错算法BFT是由两位伟大的计算机科学家Leslie Lamport和Barbara Liskov在1982年共同开发的。BFT算法的优点是可以快速达成共识,但其也有缺点:

  • 扩展性差:无法扩展到1000个节点以上,因为它们通信成本正比于节点个数的二次方,即O(n^2)
  • 要求网络中的每个人都知道所有其他参与者。

因此BFT比较适合在联盟链场景下使用,而对于缺乏信任的公有链场景,BFT算法则不适用。

最早在公链场景下使用的共识算法是PoW算法,它具备不需要知道网络中参与者和可扩展性强的特点,相对的它也缺点也很明显:

  • 交易确认比较慢。平均而言,用户必须等待大约10–60分钟才能确认他们的交易被存储在链上。
  • 吞吐量较低。比特币每秒可处理的交易大约是3-7笔。
  • 能耗较高。PoW的运算消耗了大量电力。

共识协议族 Consensus Family

Emin教授在深入研究前述两种主流共识机制后,受 Gossip 协议的启发,提出了一组BFT协议(简称“共识家族”,Consensus family)。共识协议族有四种协议组成:

  • Slush 协议:是共识协议族的第一个协议,它是一个非拜占庭协议(Non-byzanting protocol,后续三个协议都是 BFT 协议)。Slush协议的特点是:简单状态(simple state),小样本(small sample),反复抽样(repeated sampling),抽样轮数或时间期限(用 m 表示),Slush 协议作为 BFT 协议的原始状态,不能提供完整的 BFT 保证。
  • Snowflake 协议:也叫 “BFT Snowflake”,它是共识协议族的第二个协议,在 Slush 的基础上扩展而来。Snowflake 为每个节点增加一个 counter, 用来记录一个节点当前 color 的可信度。Snowflake 可以保证对最小的状态做出很强的保证。
  • Snowball 协议:Snowball 是共识协议族中的第三个协议,它对 Snowflake 协议做了改进,添加一个更持久的可信度标志,使得协议安全性更高,进一步增加了共识结果的可靠性(confidence)。Snowball 不仅比 Snowflake 更难攻击,而且协议更加通用化了。
  • Avalanche 协议(DAG):Avalanche 是共识协议族中的第四个协议,也是最核心协议,它在 Snowball 的基础上添加一个动态的仅限追加(append-only)DAG 结构来记录所有的交易。DAG 结构给雪崩协议Avalanche带来了两大优势:高效,安全。

亚稳态模型 Metastable Mechenism

共识协议族中的协议全部基于亚稳态模型,共识协议中最糟糕的事情是无法在两个选择之间做出决定,即你不希望它模糊地说两个事件中有一个发生了,实际你期望它能确定两个事件中到底哪个发生了哪个没发生。

雪崩协议的核心思想依赖于随机抽样。该协议旨在于倾向某一结果而不是留在模棱两可的中间选项。随着它的倾向性越来越高,网络的感知的颜色将会转移到其中一种颜色。我们向一个结果方向移动的速度(节点对一种颜色投票比另一种颜色更多)将会不断加快,并且在某个时候我们达到不返回点,整个网络已就颜色达成一致。

雪崩协议特点

雪崩协议继承了Non-Byzanting和PoW协议两者的优点:

  • 快速结算和低延迟:在全球范围内实现结算需要大约2-4秒钟
  • 更高的吞吐量:每秒可处理1000–10,000个交易。
  • 稳健:网络无需就参与者是谁达成一致。
  • 静态协议:最重要的是,协议是绿色的。这意味着它是可持续的,它不会浪费任何能量,并且没有特殊的矿工生态系统,其中矿工的利益与用户的利益无关。

另外,雪崩协议还有以下特点:

  • 高效的可扩展性:协议是轻量级的,因此提供可扩展性和低延迟。
  • 拜占攻击庭容忍度:它可以容忍大量的拜占庭参与者,而不对安全性产生影响。特别地,它可以容忍多达50%的节点作为拜占庭节点(即尝试欺骗网络并保持整个网络不平衡的节点)。但是,它们无法让两个节点决定两种不同颜色
  • 平等主义生态系统:雪崩协议产生了一个平等主义的生态系统,即网络中的所有节点都是相同的。 没有矿工,也没有特权。
  • 冲突交易不受保护:如果攻击者试图在两次不同的交易中花费相同的钱两次(双重支出),那么雪崩协议将无法在这两种交易之间做出选择,导致这笔钱丢失。经典共识和中本聪协议将会选择其中一个交易,但是雪崩协议不会。这是雪崩协议的一个非常有趣的属性,它会隐式而又自然地惩罚坏的角色,而协议本身没有增加任何额外的复杂读。