Avalanche链及其共识介绍

一、什么是雪崩链(Avalanche)

Avalanche是新一代的公链项目,试图在不影响去中心化的情况下提高可扩展性。不同于传统的公链项目,如以太坊的愿景是成为世界计算机,而Avalanche的目标在华尔街,希望创建一个商业化的去中心化金融平台。当然 Avalanche 目前还是集中在币圈,这个愿景尚需时日。

主网上线时间:2020年9月

创始人:Emin Gün Sirer

Emin Gün Sirer 教授的主要成就

  • 在比特币诞生之前,Emin Gün Sirer 教授已经发表过几十篇关于分布式系统、操作系统和网络领域的学术论文,而他的学术生涯中很多时间都集中于研究分布式系统的各个细节。2001 年,开发了一个叫 Karma 虚拟货币系统,就运用了POW,比中本聪早了7年。截止到目前,Karma 系统的那篇论文被引用次数最多。
  • 于2010年,联合创办了IC3 全称为「The Initiative For CryptoCurrency & Contracts」,目的是推进区块链基础设施的发展。
  • 比特币诞生后,发表论文《Selfish Mining》,证明了对比特币发起攻击并不需要 51% 的算力,如果矿工采用论文中的挖矿策略,就会挖到更多的比特币。诚实节点的全网算力至少需要 67% 才能保证系统的绝对安全。
  • Emin Gün Sirer 教授和团队转而研究如何安全保存加密货币的方案,提出了 Covenants 系统,主要是保障在资金被盗的情况下还可以取回。
  • 还研究过Layer 2网络,并提出 Teechain,类似于闪电网络。

愿景:实现所有资产数字化(现实资产和虚拟资产)

共识协议:Avalanche 和 Snowman 协议

代币:AVAX

发行上限:7.2亿(创世区块首先供给3.6亿枚)

采用权益证明机制(POS),两种方式质押获取奖励

  • 验证者:至少质押2000个 AVAX
  • 委托:至少需要委托25个 AVAX 给验证者

交易费用机制

  • 交易费用全部烧毁,而不是给验证者,增加AVAX的稀缺性
  • 交易发起者无需设置费用大小,由内建函数自动计算。网络越拥堵,费用越高
  • 创建子网需要的费用比普通转账要高,就是会消耗更多的AVAX

下图是官方给出的雪崩链与传统链的对比:

 总结来看,雪崩链的优势:

  • 吞吐量更大:超过4500 tps,远高于以太坊。
  • 交易终结更快:以比特币为例,比特币需要等待6个区块之后才能在概率上的保证你之前发送的交易不会被撤销或篡改。6个区块就是1小时。而雪崩链能在2秒以内完成。
  • 环保、不浪费电:BTC需要专门的矿机,ETH需要高性能的显卡,而雪崩链二手电脑的普通CPU就可以。
  • 验证者数量更多:雪崩链目前的验证者节点已经超过1000个,优于波卡。
  • 女巫攻击的防护机制:比特币和以太坊都是工作量证明,波卡和雪崩链是权益证明
  • 更安全:雪崩链的作恶节点比例需要达到80%的才能对网络构成威胁。

二、Avalanche 的架构

与传统区块链不同,Avalanche 不是一条区块链,而是许多区块链的集合,类似波卡。更准确的说, Avalanche 由很多个子网构成,子网下有很多条的区块链。

而在子网中,有一个特殊的子网,叫 Primary Network。它由3条区块链构成:

  • P链(Platform Chain):主要负责质押代币、协调网络验证者、创建自定义子网。当需要参与质押获得挖矿奖励时,是在这个链上进行的。
  • X链(Exchange Chain):主要负责点对点地创建和交易资产。我们一般从交易所提币到这个链上。
  • C链(Contract Chain):用于创建智能合约。地址格式同以太坊,主要在这个链上参与各种Dapp、DeFi项目。

 那么什么是子网呢?子网是一个验证小组:子网中有很多个验证节点,这些节点的工作是验证该子网下的单个或多个区块链。子网会设置成员资格条件,只有满足条件的验证者才能加入该子网。比如:

  • 要求验证者必须是某个国家的公民
  • 要求验证者完成实名认证
  • 要求验证者的电脑满足某种配置要求

另外子网还具有以下三个特点:

  • 每个区块链只可以由一个子网验证,但一个子网可以验证多个区块链
  • 验证者可以加入多个子网,但必须满足对应子网的成员资格条件
  • 每个验证者必须参与验证 Primary Network

接下来,我们来深入看一下 Primary Network 中的一些细节。Primary Network 相当于 Avalanche 的主网,负责验证 P链、X链和C链。这里也就明白了,为什么所有验证节点必须参与验证 Primary Network。因为节点越多越安全,Primary Network 负责的是整个 Avalanche 生态的安全。

P链、X链和C链的数据结构:P链和C链采用的是与传统区块链相同的线性结构,而X链的数据结构不是线性的,是一种叫做有向无环图的数据结构,简称Dag(之后会讲)。

共识协议:X链采用的共识协议也与其他链不同。X链采用 Avalanche 共识,P链和C链采用 Snowman 共识(两个共识的区别和实现方式会在之后说明)。

Primary network

 最后举一个形象的例子总结下Avalanche的架构。我们可以将 Avalanche 比作大学的一个专业,Primary Network 就是必修课,其他子网是选修课。所有同学相当于节点,同学们必须上必修课课程(维护网络安全),而选修课(相当于其他子网)可以由同学们自由选择。

有些同学想毕业后出国进修,所以他们会选择英语课(相当于实现特定功能的子网)。为了更好的完成英语的学习,同学们会组织各种学习小组(相当于区块链),如听力小组、作文小组等。

三、Avalanche 共识协议

共识是指一系列验证者对一个决议或决策达成一致的过程。在分布式系统过去40多年里,共识协议可以分成两大类,即经典共识协议(Classical Consensus Protocols)和中本聪共识协议(Nakamoto Consensus)。

Avalanche 共识就是将这两大类共识的优点结合,形成的新一代共识协议。Avalanche 共识协议让所有节点并行工作,随机询问其他验证者。经过足够多的重复子采样后,交易就可以大概率被认定为真。所以 Avalanche 共识是一种概率共识,,把出错的概率降到 几亿分之一。

(一)雪崩共识

Avalanche 共识的灵感来源于“吃瓜”,学术上叫 Gossip Network。比如某明星爆绯闻后,公众会有 “相信” 与 “不相信” 两种倾向。这个时候,小明就会询问身边的朋友或看微博评论以获取别人的观点(相当于对身边的人做抽样)。当获得的小样本的观点倾向于 “相信” 时,小明就会受到影响,也倾向于选择 “相信”。不光小明会 “吃瓜”,小红、隔壁老王、路人甲都会用类似的方法 “吃瓜”,很快,越来越多的公众就会对本次绯闻事件达成共识。即使过程中某明星出来辟谣(相当于作恶节点),但还是会向着某一个方向达成共识。接下来具体阐述 Avalanche 共识是如何实现的。Avalanche 共识的发展经历了4个阶段,每个阶段都在前一个基础上进行了升级。

1. Slush

第一个阶段是Slush, 是最简单的协议,也是雪崩共识家族中最基础的协议。Slush 中有很多节点,每个节点都有三种状态,即无状态、真和假,分别用黄色、蓝色和红色表示。

节点从无状态,即黄色开始。当某个节点收到交易后,该节点作为发起节点:

  • 首先,做出选择,蓝色代表接受交易,红色代表拒绝交易。假设该节点选择蓝色,即接受交易;
  • 接着,随机选择 5 个节点(5 是一个参数,实际要更大),询问各节点的选择;
  • 根据少数服从多数原则,确定小样本的倾向;
    • 如果5个中3个选蓝色,2个选红色,则小样本倾向为蓝色,发起节点维持原有状态不变;
    • 如果5个中1个选蓝色,4个选红色,则小样本倾向为红色,发起节点状态改为红色;

 以上过程,称为 子采样。由某个节点发起小样本抽样以达成局部共识。注意这里不是询问全部节点,而是随机询问小批量的节点,原理类似于机器学习中的小批量梯度下降,这是 Avalanche 速度快的一个原因。

只进行一轮子采样得到的结果是不可靠的,子采样会受到样本的随机扰动影响。只有进行足够多轮的子采样,也就是,重复子采样,才能大概率的确信该笔交易是否为真。

单个节点需要做的就是重复子采样。当某个节点被询问后,也就是被抽样后,相当于被激活,该节点就像之前第一个节点收到交易一样,重复着第一个节点需要做的工作。

首先,被激活的节点选择一个颜色,这里一个选择红色一个选择蓝色。然后分别进行重复子采样,并根据采样结果更新自己的选择。下边的节点收到的采样结果还是蓝色,所以状态不变;上边的节点将自己的状态更新为蓝色。

需要强调的是,为了演示方便,我只选择了2个。实际上被询问的5节点全部被激活,整个过程是并行的。信息传递的速度也是指数级别传播的,所以传播的速度会越来越快。就像滚雪球一样,开始很慢,逐渐加快速度,直到收敛,即达成共识。

Slush 具备以下特点:

  • 无记忆(memoryless):节点只保存当前状态的颜色,不保存历史记录;
  • 小样本:只询问小批量的节点,不像比特币要询问全部节点,所以会更快(原理类似小批量梯度下降);
  • 保证达成共识:即使在50对50的最坏情况下,也会因为样本的随机扰动使得结果倾向于某个颜色,同时重复采样会加强这种倾向;(例子:即使是抛硬币,小样本下也会出现某一面出现的次数大于50%。所以总会打破50/50的局面的。)
  • 不可逆:当网络有了一个显著倾向时(如蓝色占大多数),会加速向蓝色收敛,向红色收敛的概率则变得很低。这个过程类似滚雪球,沿着下坡方向会越来越快,但不会向上坡方向移动。

需要注意的是,当存在拜占庭节点或作恶节点时,Slush 协议安全性是不够的,这就引出了 Snowflake。

2. Snowflake

Snowflake 协议属于拜占庭容错算法(BFT),在 Slush 的基础上对每一个节点增加了一个计数器(counter)。具体来说:

  • 每个节点都有一个计数器;
  • 每一轮子采样完成后,如果颜色与上一轮相同,则计数器加1;
  • 每一轮子采样完成后,如果颜色不同,则计数器重置为0;
  • 当计数器的值超过阈值 β 时,则接受该节点所倾向的颜色。

也就是说,计数器记录的是连续获得相同颜色的次数,连续获得相同颜色的次数越多,说明分歧越小,当前结果的可靠性越高,当超过某个阈值时,就可以说该交易大概率是蓝色(或真)。

计数器可以防止拜占庭节点带来的负面影响。拜占庭节点通过引入不确定性,即他们的选择与诚实节点相反,以此来阻碍网络达成有效共识。

如果有拜占庭节点作恶,计数器的值会更频繁的归 0,很难超过阈值 β。对于拜占庭节点来说,只是在不停的重复子采样而不被接受,一直在做无用功。

3. Snowball

Snowball 在 Snowflake 原有计数器基础上增加了置信度(confidence)。Snowflake 中的计数器的记忆是短暂的,只能记录当前的数值,而不会保存历史的数值。而 Snowball 中 的置信度则记录了历史数值。

每一轮的子采样,都会带来随机扰动。而置信度考虑了历史数据,减少随机扰动带来的影响。

4. Avalanche

最终,Avalanche 在 Snowball 的基础上添加有向无环图(DAG:Directed Acyclic Graph)。DAG 是一种非线性的数据结构,而像比特币、以太坊等传统区块链的数据结构是线性的。一个明显的区别是一个 DAG 节点可以有多个父节点和多个子节点,而线性结构的节点只能有一个父节点和一个子节点(分叉不算)。

而 Snowman 共识建立在 Avalanche 共识之上,但对交易进行线性排序,即数据结构类似于比特币的线性结构。

四、具体的例子

举一个具体的例子来说明重复子采样、计数器和置信度如何在 Avalanche 共识中发挥作用。

假设每个区块只打包一笔交易,每轮子采样随机询问5个节点。β 等于6,即当计数器数值达到 6 时,该交易被接受。明确三个概念:

  • chit:当一轮子采样获得多数认可(子采样的过半数节点认可该交易),该交易获得1个chit(收据、凭证)
  • 置信度:该区块的chit与其所有后代区块的chit之和。
  • 计数器:计数器是每个区块及其后代连续获得多数认可的次数之和。

下图,交易B有2个后代D 和 E,B、D、E在上一轮子采样后均获得1个chit,所以交易B的置信度为3。交易A 有4个后代,其后代和自己都有1个chit,所以置信度为 4 + 1 = 5。

计数器计算方法类似,交易B的2个后代和自己都获得了1个chit,所以计数器的值应该为3。

当收到新交易G时,经过一轮子采样,交易G获得了多数认可,获得了1个chit。因为交易G为其他区块的后代区块,所以其他区块的置信度和计数器均加1。交易A的计数器数值从5变为6,满足了阈值 β 的要求,故被接受。

如果有人发动双花攻击,出现一笔与G冲突的交易G’,G 和 G’ 被放到冲突集合中。G’子采样没有获得多数认可(比如只获得了5个节点中的2票),所以G'没有得到chit。交易G'作为交易B和D的后代,交易B和D的计数器重置为0,置信度不变。而之前已经被接受的交易A不受影响。

对于两笔冲突的交易G和G'(即double spend,双花),各节点会接受置信度更高的交易G,并在其后边继续出块。

注:上面例子中的方框代表着一个一个的区块(官方命名为vertex,而不是block,为了好理解就本文还是叫成区块),每个区块包含父区块的哈希值和一些列交易。多笔交易被打包到区块后,看做一个整体被投票。如果一个区块被接受,那么其中的所有交易就都被接受;如果区块中有一笔交易不被认可,那么该区块以及其所有后代中的交易都被拒绝。

猜你喜欢

转载自blog.csdn.net/nzyjava/article/details/122406189