一文了解Avalanche共识:设计和演变
在 2018 年一个自称为火箭队的匿名团队提出了 Avalanche 共识协议。本篇文章描述了这个协议看起来魔幻(但实际真实)的特性,并将其与其他共识协议做对比,描述使其独特的技术基础。
什么是共识?
共识是一系列独立的投票者(常被称为“验证者”)对一个决策达成一致的过程。初步来看,这个过程听起来很直接:根据一系列规则搞清楚一组数据是否是一致的,网络的其他成员是否对这个数据认可。
像 Avalanche 这样的共识协议需要在网络中所有的节点达成一致,保障整个网络对这个数据有一个同步的视图(view)。强健的共识协议即使在一些验证者出问题或者是恶意的情况下仍然能够运行。
在这个过程的最后,所有节点对于所需要做的决策流程都会共享相同的数据,这被称为“状态”(State)。如果任何一个节点中有冲突的交易,和余下的整个网络都不一致,那么这个被称为“安全违规”。这意味着至少有一个节点和网络中其他节点不一致的。共识协议的目的就是减少网络中“安全违规”,最佳的情况就是让这样的冲突变得几乎不可能。
这个概念听起来是不是很简单?但是共识协议的话题是计算机科学领域其中一个最难的领域之一。
共识机制的历史
在分布式系统超过 45 年的历史中,只有三种共识协议能解决问题:经典共识协议(Classical),中本聪共识(Nakamoto)以及 Avalanche。我们先来讨论一下这三种共识来描述为什么会分成这样的三类,每一类和其他有什么不同,有什么样的优劣势。
经典共识协议
经典共识协议,比如实用拜占庭容错(PBFT)和 HotStuff,都是基于所有对所有投票的(All-to-all voting)。这意味着一个验证者需要监听组成网络一系列节点来进行决策。此外,他们是“1 的概率”(P = 1)的协议,这意味着网络对于某一个决策需要有完全的确定性。在节点从组成系统的节点的必要部分接收到响应之后,交易立即完成。
在开放的、和互联网类似的环境中,经典共识协议就会遇到两个主要的问题。第一个问题是这些协议非常脆弱:他们的正确性极大程度依赖于系统中所有的节点了解其他的节点的身份。这样的结果就是在维持系统成员的过程中若出现了任何问题或者网络中成员的视图有不一样,就会导致安全违规。进一步来说,任何攻击者只需要控制网络的 33% 就能够实现一个双花攻击。
第二点,这些系统是缓慢的,并且不能在节点数量增加的时候扩展。Facebook 的 Libra 使用的 HotStuff (由我们的首席协议架构师 Ted Yin 设计)已经是扩展性最好的经典共识协议了,但也只能在保障不牺牲性能的前提下支持大约 100 个验证者。
这两个问题让经典共识协议无法适用于开放的、无需许可的网络,毕竟对于这样的网络节点是需要随意加入和退出的,也随时会做出对网络不利的事情。
中本聪共识(Nakamoto Consensus)
经典共识无法满足大规模的需求,在经过十年之后,实用拜占庭若错是一个不错的发明。之后,突然出现了中本聪,扔出了比特币的白皮书,向世界展示创造一个全球范围内有效的抗敌共识协议的可能性。中本聪重新定义了共识问题并让正确性定义具有概率性来实现这个目标。
使用基于中本聪共识的一些,无需等待网络中所有节点之间的绝对确定性,而是权衡了难以区别的可能性,来实现更好的可扩展性。在经典协议必须以1(P = 1)的概率达成共识的情况下,中本聪以1减去一些很小的错误机会(P = 1 —ε)的概率达成共识。在Nakamoto中,随着产生更多的区块,该误差值将随着时间的流逝而越来越小。区块越多,被重组的机会就成倍下降。
毫无疑问,中本聪共识作为健壮的全局协议是一项突破,但是它确实有缺点。它速度慢,消耗大量能量,并且需要很长时间进行区块确认才能对交易的最终结果足够确定。对于那些不经常移动或用作储备的资产来说,这些缺点是可以接受的,但对于点对点支付和去中心化金融等应用来说,它们却负担太大。
Avalanche
中本聪共识唤醒了整个世界,大家开始希望有一个强健、去中心化的协议,就如同中本聪共识一样,但希望有经典共识的所有优点:规模、速度、快速确认和能源效率。
之后在 2018 年 5 月,自称为火箭队的匿名团队提出了第三类共识协议,他们称为“Avalanche”。它同时具备了经典共识协议和能够实现大规模去中心化的中本聪共识协议的优势,事实证明,经典共识协议可以泛化为概率性行为,从而获得巨大的性能提升。
我们的文章会高度概括这个共识,如果你希望进一步了解详细内容可以查看白皮书。
Avalanche 共识是什么?
Avalanche 共识,和比特币的中本聪共识一样是一个概率性共识。就像中本聪共识在为共识的概率性牺牲了性能一样,Avalanche 也接受错误发生的可能性(更好的是,像 Avalanche 的所有部分一样,可以由验证器在自定义子网上配置)。
Avalanche 上出错的概率太小了,因此出现安全违规的可能性比找到 SHA-256 哈希冲撞的概率还要小。从更广的角度来看,在未来一百年里面有小行星和地球相撞的可能性要比在未来一千年中通过网络计算每秒 100 万个哈希并出现 SHA-256 哈希碰撞高出数十个数量级。真的非常安全。
Avalanche 也能够立刻对所有交易进行确认,而不需要等待交易确认。Avalanche 能实现这样的特性的原因在于它是经典共识的泛化,因此原生就有经典共识的优势。事实上,Avalanche 平均来看能够在一秒内完成交易确认。相比于现有的去中心化网络,这是非常快的。
作为具有概率模型的经典共识协议的泛化,Avalanche 也能够同时实现用 CPU 运作和高吞吐量的特性。Avalanche 不需要特殊的或者昂贵的硬件设备来实现高吞吐量(超过每秒 4500 笔交易)。这意味着你手上的电脑(甚至在你仓库里面吃灰的设备)也完全能够运行 Avalanche 的节点。这些特性加起来让 Avalanche 非常的绿色和经济。
不止如此,和中本聪共识一样,Avalanche 对网络参与者没有限制,而经典共识则在网络参与者数量增加的时候牺牲性能指数级下降。想要实现大规模落地应用、让去中心化应用走向大众,Avalanche 是绝无仅有的。
Avalanche 并不想中本聪共识那样依靠工作量证明。像比特币这样的协议,工作量证明对于区块构造和网络安全都非常重要。Avalanche 可以使用过重了证明但是采用了权益证明来让用户对交易进行投票的时候抵押一些代币参与共识。
最后,与基于中本聪共识的比特币和其他系统需要不断运行的不同,Avalanche 的节点仅在有工作要做时才会运作。没有进行挖矿或轮询来获取新块的操作。交易会广播到更广泛的网络,然后网络会听到它们并开始投票。如果没有要投票的交易,则网络中的节点将不执行任何操作,除非监听到新的交易。简而言之,Avalanche 所做的工作更聪明,而不是更努力。
高级说明:Avalanche 最重要的属性确实使它与现有的经典共识协议区别开来,它就像中本聪共识一样,可以在网络中没有已知参与者上限的情况下运行。可以使用每个节点的O(1)(常数)个消息来确定 Avalanche 中的决策。将此与使用O(n²)消息达成共识的经典协议进行比较,经典共识协议的网络扩展问题则在 Avalanche 中消失了。
Avalanche 共识如何运作?
首先我们来谈谈验证者在 Avalanche 共识中的作用。Avalanche 是一个投票协议,验证者监听网络中的交易,当他们听到交易的时候,他们投票来决定一笔交易是否被接受。验证者对看起来没问题的交易投票“接受”,如果交易出现冲突则“拒绝”。之后所有节点的投票结果进行贾总。如果一个验证者看到一个决策,做出一个初始决策,然后与网络的其余部分进行写作,来确定网络是否同意这个决定。这和经典共识协议中的期望相同,但是在 Avalanche 中,这种情况发生在验证者数量多地多的情况中。
Avalanche 的投票过程让他变得与众不同。每一个验证者都和决策者完全独立。没有 leader 的角色。然而每个节点都用完全相同的流程来决定一个交易是否是有效的,以及与网络中其他部分达成共识的可能性。一旦他们看到网络中有一个交易大概率会达成共识,节点就会锁定他们的投票并且接受这个交易。
用于确定是否首选交易以及网络的其余部分是否同意此决定的过程称为“重复随机子采样”。
从高层次上讲,这意味着验证者会随机选择其他验证者来询问他们喜欢什么。它会在新的随机选择的节点上一遍又一遍地执行此操作,直到建立足够的数据来确定其正确的可能性如此之高,以至于你可能会认为这不可能是错误的。
详细一点说,他是这样运作的:
一个验证者收到了很多发布的交易,他需要决定哪一个交易被“接受”
节点客户端会运行一个虚拟机(VM),虚拟机会提供这个交易是否能够被接受的信息。
验证者选择一组不冲突的交易,将这些交易标记,试图让网络接受这些交易。
任何询问这个验证者的节点都会收到这个节点最新标记的交易信息,也就是这个节点的决策。
这个验证者节点从整个验证者列表里面(这个选择可能是根据质押数量的)选择 K 个节点,询问他们接受的交易是哪些。
每一个被询问的节点都提供他们选择接受的交易的信息,验证者的投票结果不断被更新,并且逐渐确定对哪些交易被接受。
期间,其他节点也会从验证者集中随机选择其他验证者,并询问他们选择的交易,并更新自己的决策。
这件事情会在至少 M 轮里面不断持续,或者直到这些交易已经足够确定,达到了一定的可信度。否则还会继续进行,每个节点随机选择 K 个其他节点做问询。
一旦达到确定的门槛,交易就被锁定并且可以认为是最终确认了。
如果“被接受”,这个交易就会被送到虚拟机中被处理。如果被拒绝,那么这个交易就从共识过程中被移除。
匿名团队火箭队的白皮书显示,通过设定正确的参数设置,使用 Avalanche 共识的过程可以有一个参数化的概率,网络将做出相同的决策。
概率的确定性
科学家需要确定其模型的确定性。在描述系统或流程时可以说“这绝对是事实,毫无疑问”。经典共识协议致力于完成这样的田园风格的模型,但是在现实世界中没有什么是确定的。在经典共识协议中假设有 100 个节点,有 33 % 的节点同时脱机或者某个人通过社交接管了其中的 33 台,并试图将其意志强加到网络上。还有一种可能性,就好像房间里的氧气分子突然全部跑到房间的一侧,然后另一侧的人就窒息了,这个理论上来讲也不是非零的可能性。但是概率太低了,没有人会担心。
中本聪共识不断向世界证明概率性确定是可以接受的,只要安全性上失败的可能性就如同天文数字那样遥远,现在比特币让全世界都认为这是可以接受的。这相比于运营商级SLA的五个九(99.999%)要好多了。
通过接受相同的微小误差范围,Avalanche 在具有正确参数的模型中每 20,000 年会有一次误差。互联网基础设施的老化可能会导致大规模的网络终端。正是这一关键的见解帮助火箭队为新的共识机制铺平了道路。
Avalanche 所带来的可扩展、去中心化的未来
经典拜占庭容错协议展示了在即使有恶意参与方的情况下网络还是能够达成共识的可能性。中本聪共识展示了概率性协议在实际应用中也是安全的,并且能够提供前所未有的去中心化和强健性。
Avalanche 吸收了上述协议的启发,并将他们的优势集合在一个新的协议中,你可以同时拥有中本聪共识和经典共识协议的优势,而无需面临任何一者的劣势。
通过让验证者随机选择其他验证者以询问他们的偏好,Avalanche 的参与者对网络中所有节点共享的正确决策有足够的置信度。有了足够的置信度,就可以立即最终决定。这个过程发生得如此之快,以至于 Avalanche 的能力过程和主要的支付系统都可以与主流的支付系统相媲美。
(完)
关于 Avalanche
Avalanche 是由康奈尔大学教授、IC3 联合创始人 Emin Gün Sirer、计算机学者 Kevin Sekniqi Facebook Libra 协议 HotStuff 共识第一作者 Ted Yin 共同创立。AVA Labs 主导开发的 Avalanche 区块链平台基于革命性的共识算法——Avalanche 构建的数字支付和计算平台。该共识使分布式账本可以保证去中心化、高并发处理和交易的快速确认,同时实现历史记录删减和链上治理。
Emin Gün Sirer 教授是密码学界的先驱 + 大神,在分布式系统领域有大量的研究成果,他所开发的虚拟货币系统 Karma 是首个采用 PoW 机制的货币系统,比中本聪发表的比特币白皮书早了七年。
Avalanche 于 2019 年获得 Andreessen Horowitz、Polychain、Coinbase 前 CTO Balaji Srinivasan、Metastable、 Initialized 和 Abstract Ventures 的创始人 Ramtin Naimi 等机构和投资人的投资,于 2020 年 3 月开源代码。Avalanche 于 2020 年 5 月完成 1200 万美元私募轮融资,由 Galaxy Digital、比特大陆,Initialized Capital,NGC Ventures,Dragongly Capital 五家机构领投,Continue Capital、Fundamental Labs、SNZ、IOSG Venture、优币等机构和个人也参与了本次投资。Avalanche 预计于今年八月上线主网。