使Solana成为首个网络规模区块链的8项创新

本文介绍了Solana区块链的8项创新技术,重点说明了这些创新如何使Solana达到每秒50000笔交易的性能。通过Proof of History、Tower BFT等技术,Solana成功地实现了高效的交易处理和区块传播,使其成为首个真正的网络规模区块链。

8项创新让Solana成为第一个Web规模的区块链

理解使Solana的50,000 TPS区块链网络成为可能的技术突破

Solana的构思始于2017年,当时创始人Anatoly Yakovenko寻找一种让分散节点网络的性能能与单个节点相匹配的方法。没有任何主要区块链能接近实现这一特性。实现这一点是Solana的北极星。

像比特币和以太坊这样的工作量证明系统支持大约10个交易每秒(TPS)。基于实际拜占庭容错(PBFT)的权益证明(PoS)系统,如Tendermint,支持大约1,000 TPS,网络节点为100–200个。Solana,作为一种类似PBFT的PoS区块链,支持超过50,000 TPS,当前测试网迭代有超过200个节点,使其成为性能最强的区块链和世界上第一个Web规模的去中心化网络。

自创立以来,Solana团队由来自高通、英特尔、Netscape和谷歌的开创性技术人员组成,专注于构建让Solana能够以这些开创性性能标准运行所需的技术。

为了创造一个去中心化、无权限的网络,使其性能能够与单个节点匹配,Solana团队开发了8项关键技术:

在本文中,我们将简要解释上述每一项。如果你想了解更多信息,我们也撰写了详细的解释,你可以通过点击上面的链接访问。

历史证明

历史证明解释 - YouTube

Solana

80K 订阅者

历史证明解释

Solana

搜索

稍后观看

分享

复制链接

信息

购物

点击静音

如果播放未能迅速开始,请尝试重新启动设备。

更多视频

更多视频

你已注销

你观看的视频可能会添加到电视的观看历史,并影响电视推荐。为了避免这个,取消并在计算机上登录YouTube。

取消确认

分享

包含播放列表

检索共享信息时发生错误,请稍后再试。

在此观看

0:00

0:00 / 1:12•直播

在YouTube上观看

如果一个区块链网络整体要匹配单个节点的性能,这意味着带宽不能成为瓶颈,而是计算。为了实现这一点,我们首先需要优化网络中节点之间的通信方式。

无线蜂窝网络在许多方面与基于区块链的网络相似,并且长期以来一直专注于优化网络通信。在规模化方面,单个基站没有足够的带宽为每个手机分配自己的无线频率进行传输,因此电信公司需要“多重接入技术”来将多个电话通话压缩到同一频率上。

时分多址(TDMA)是使蜂窝网络大规模扩展的主要技术之一。TDMA规定基站将每个无线频率划分为时间槽,并将这些时间槽分配给每个电话通话。通过这种方式,基站为网络提供了一个全球可用的时钟。这极大地提高了有限带宽的可扩展性,允许每个频率支持多个、同时的数据通道,并减少多个手机同时在同一频率上广播时引起的干扰。

当今基于区块链的网络存在时钟问题。它们的时钟在每次生成新块时“tick”一次。对于以太坊,这每15秒发生一次,而每个块中只能容纳有限的信息。对基于区块链的网络来说,TDMA等效的时钟应该具有亚秒级的粒度,以便所有验证节点即可达成一致,从而更有效地处理交易。

核心的Solana创新是历史证明 (POH),它是网络中全球可用的、无权限的时间源,在共识之前就已工作。POH不是共识协议,也不是反Sybil机制。相反,POH是解决时钟问题的解决方案。

其他区块链需要验证者之间进行沟通,以便同意时间已经过去,而每个Solana验证器通过将时间的流逝编码为简单的SHA-256、顺序哈希可验证延迟函数(VDF)来维护自己的时钟。Solana并不使用VDF来生成随机性。相反,每个验证者使用VDF维护自己的时钟。因为每个验证者维护自己的时钟,所以领导者选择在整个纪元的提前安排。与Tendermint一样,一个纪元的时间表持续数千个块。然而,与Tendermint不同的是,网络永远不会等待失败的节点。每个验证者运行VDF以证明它已经成功获得了生成区块的时间槽,而验证者因此获得补偿,因为区块生产者由于生成区块而获得奖励。

在历史证明的支持下,领导者持续轮换,整个网络不断进展,而不受网络条件的影响。这意味着网络从不停止。网络可以决定轮换验证者而无需任何验证者互相沟通。这是一个微妙但深刻的转变。没有其他区块链有类似的机制。在所有其他链中,验证者必须进行沟通以便做出决策。而在Solana中,领导者轮换决策是异步做出的。

这一核心创新打开了向上堆栈设计空间的可能性。除了提供可以用于时间戳的时钟外,POH还允许Solana在区块时间(800毫秒)、区块传播(log200(n))、吞吐量(50K-80K TPS)和账本存储(存储在网络上的PB)方面进行优化。

塔共识

在历史证明之上,Solana运行塔共识,这是一种PBFT-like共识算法,专门设计用于利用同步的时钟。与PBFT不同,塔共识更倾向于活跃而非一致性。就像PBFT,节点指数增加超时以达成一致,但由于账本也是一个无信任的时间源,节点可以观察和检查网络中其他所有验证者的超时。为了更好地理解,我们考虑一个例子:

想象一下你在一个岛上,一瓶漂流而过,里面有一个USB驱动器。驱动器内部有一个Solana账本。如果你仅仅查看账本本身,你会看到每个节点可以计算出现的验证者数量、每个验证者的状态,以及每个验证者在网络中对任何区块所承诺的超时。根据数据结构本身,没有任何点对点消息,验证者可以做出投票决定,而网络可以达成共识。

涡轮

鉴于Solana共识层与点对点消息没有依赖关系,Solana能够独立于共识优化块在网络中的传输。涡轮,Solana的块传播技术,大量借鉴了BitTorrent。当块被流式传输时,它被分割成小数据包和冗余代码,然后传播到一个随机的较大同行集。通过200的扇出,网络的第二层可以覆盖40,000个验证者。因此,验证者能够通过log200(n)的方式传播块以提高最终性。在所有实际情况下,如果每个连接为100毫秒,复制可在400毫秒内实现,最终性在40,000节点网络中为500毫秒。

扇出机制必须能够抵抗故障。因此,验证者使用Reed-Solomon冗余代码对数据进行编码,以提供一定程度的容错能力。

海湾流

在高性能网络中,内存池管理是其他链无需真正解决的新问题。海湾流通过将交易缓存和转发推向网络边缘来运作。由于每个验证者知道Solana架构中即将到来的领导者的顺序,客户端和验证者可以提前将交易转发给预期的领导者。这允许验证者提前执行交易,减少确认时间,更快切换领导者,并减轻验证者的未确认交易池的内存压力。

客户端(例如钱包)签署引用特定块哈希的交易。客户端选择一个相对较新的块哈希,且该哈希已由网络完全确认。大约每800毫秒提议一个块,需要每增加一个区块的指数增加的超时来展开。根据我们的默认超时曲线,完全确认的块哈希在最坏情况下是32个块以前的情况。假设区块的时间为800毫秒,这相当于25.6秒。

一旦交易转发给任何验证者,验证者将其转发给即将到来的领导者。客户端可以订阅来自验证者的交易确认。客户端知道块哈希在有限的时间内过期,或者该交易被网络确认。这使得客户端能够签订交易,确保交易要么执行要么失败。一旦网络超过回滚点,使得交易引用的块哈希已过期,客户端有保证该交易现在无效,永不会在链上执行。

海平面

为了利用Solana的高性能网络,我们构建了海平面,一套旨在绕过GPU和SSD进行水平扩展的超并行事务处理引擎。需要注意的是,所有其他区块链都是单线程计算机。Solana是唯一支持在单个分片中并行执行交易(不仅仅是签名验证)的链。

解决此问题的方案大量借鉴了操作系统驱动程序技术,称为scatter-gather。交易在执行时提前指定它们将读取和写入的状态。运行时能够找到在一个块中发生的所有不重叠状态转换函数,并以并行方式执行——称为并行执行——同时优化在RAID 0 SSD阵列中的读写调度。

尽管海平面本身是一个调度交易的虚拟机,海平面实际上并不在虚拟机中执行交易。相反,海平面将交易交给硬件原生执行,使用一种行业验证的字节码,即伯克利数据包过滤器(BPF),该字节码是为高性能数据包过滤器设计的。这种字节码自90年代初以来就经过优化,并在全球数百万个交换机中投入生产,以在单个交换机的40千兆网络上处理每秒6000万数据包。

每次Nvidia将可用的SIMD通道数量加倍时,我们的网络的计算能力也将加倍。几乎所有其他区块链都因设计上是单线程计算机,因此永远无法以这种方式扩展。

使用LLVM,相同的编译器用于针对WASM,我们为开发者提供了一组出色的工具,用于用C/C++和Rust编写高性能智能合约,以在GPU上执行合约。尽管Solana不使用WASM,开发者仍可以在Solana编译器中对为WASM编译器编写的C和Rust代码进行重新编译,所需的更改很少。因此,开发者可以轻松将他们的应用程序从其他主要WASM链如Dfinity、EOS、Polkadot和以太坊2.0迁移过来。

以太坊在软件架构中历史上曾经出现过导致bug的问题。两个相关的例子:

可以肯定的是,编写安全的Solidity代码是可能的,就像使用不含内存保护的C编写复杂软件一样。但只要不安全的行为容易添加且难以检测,验证复杂软件行为的难度就会几何级别增加。Solana和Libra团队早期就认识到这个问题,并开发了在不同模块之间保持严格状态分离的架构。

Move语言引入了资源和脚本作为高级概念。两者自然适应Solana海平面运行时,以及我们设计本地程序的方式。我们的目标是支持Move作为第一级语言,使资源像本地Solana程序一样运行,并且可以通过Move或我们自己的本地Rust ABI进行开发和组合,而不会妨碍性能或安全。

流水线——用于验证优化的交易处理单元

Solana网络上的交易验证过程广泛利用了一种在CPU设计中常见的优化技术称为流水线。流水线在有一系列输入数据需要通过一系列步骤处理,并且每个步骤都由不同硬件负责时是适用的过程。

在Solana网络上,流水线机制——交易处理单元——在内核级别的跟数据获取、在GPU级别的签名验证、在CPU级别的银行处理,以及内核空间中的写入之间发展。在TPU开始将块发送到验证者时,它已在下一个数据包集上进行获取、验证其签名并开始进行代币的记入。

在这个四阶段流水线中,随着GPU的并行处理,在任何给定时刻,Solana TPU可以同时对50,000个交易进行处理。这一切都可以在低于5000美元的现成计算机上实现。通过将GPU负载转移到Solana的交易处理单元,网络可以实现单节点的效率。

云突破——水平扩展的内存

仅仅扩展计算能力是不够的。用于跟踪账户的内存迅速在大小和访问速度上成为瓶颈。例如,普遍认为许多现代链所使用的本地数据库引擎LevelDB无法支持超过约5000 TPS。

一个天真的解决方案是将全局状态存储在RAM中。然而,期望消费者级机器拥有足够的RAM来存储全局状态是不合理的。对于Solana,我们设计了云突破,这是一个优化了读取和写入并发的状态架构,分布在RAID 0 SSD配置中。每增加一个磁盘,就可以为链上程序提供存储能力,同时增加执行时程序可以进行的并发读取和写入数量。

结合我们的交易设计,这种架构支持AOT(提前执行)交易。一旦交易被验证者观察到,海平面可以开始预取从磁盘获取的所有账户,并为执行准备运行时。验证者和区块生产者甚至可以在交易被编码到块中之前就开始执行交易,这使我们可以进一步优化区块时间和确认延迟。

归档者

在1GBPS时,区块链网络每年将生成4PB的数据用于账本。存储这些数据很快将成为主要的中心化矢量,从而违背区块链实施的根本目的。

在Solana上,数据存储被卸载到称为归档者的节点网络上。归档者不参与共识。状态的历史被分成许多部分并进行了冗余编码。归档者存储状态的小部分。网络不时会要求归档者证明它们正在存储应存储的数据。Solana利用复复制证明(PoRep),这在很大程度上借鉴自Filecoin。

我们能够使用历史证明——在共识之前的时钟——来优化PoRep的创建。归档者节点不参与共识,使用PoH生成轻量级的证明,证明账本块已被复制,验证者能够在GPU上批量进行验证。

归档者可以是轻量级节点(例如笔记本电脑)。通过冗余编码和冗余机制,归档者网络能够提供超出任何AWS或GCE所能提供的数据可用性保证。

总结

通过这8项主要创新,Solana网络成为一种闪电般快速的分布式账本技术,始终在运行。它不会被共识所减慢。此外,系统优化数据传播,有效利用并行GPU进行交易处理,并且不会令验证者在庞大的链上历史存储中无所适从。

Solana的软件设计旨在消除障碍,让硬件发挥其最大潜能。因此,Solana能够随着带宽、SSD和GPU核心以自然的方式扩展。它是唯一做到这一点的区块链,这也是Solana如何在全球200个物理分散的节点上实现50,000 TPS的原因。

欲深入了解使Solana网络成为可能的8项创新,请参阅以下博客文章:

网络状态

Solana的测试网今天在线。你可以在testnet.solana.com看到它。基于成本考虑,我们只运行少数几个节点。然而,我们已在多个实例中扩展到超过200个物理分散节点(不共享硬件),覆盖219个AWS、GCE和Azure数据中心用于基准测试。

运行时今天正常运行,开发者现可以在测试网上部署代码。开发者今天可以在C语言中构建智能合约,我们正积极开发Rust工具链。Rust将成为Solana智能合约开发的旗舰语言。Rust工具链公开可用,作为Solana Javascript SDK的一部分,我们还在进一步迭代软件开发工具包。

Solana将很快启动公共测试版,鼓励验证者通过Tour de SOL运行节点——类似于Cosmos的Stake游戏——挑战公众测试Solana网络的极限,同时赚取代币。

  • 原文链接: medium.com/solana-labs/7...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
anatoly_3185
anatoly_3185
江湖只有他的大名,没有他的介绍。