区块链:7 点讲透 Solana 成为首个 Web 规模区块链的野心_solana币的最新价格

Solana创建于2017年,当时它的创始人AnatolyYakovenko在寻求一种让去中心化的节点网络与单个节点的性能匹配的方法。还没有主流区块链能够接近于实现这一特性。于是实现这一点成为了Solana的目标。

原文标题:《7InnovationsthatMakeSolanatheFirstWeb-ScaleBlockchain》

作者:AnatolyYakovenko

译者:詹涓

比特币和以太坊等工作量证明(ProofofWork)系统支持大约每秒10笔事务(TPS)。以实用拜占庭容错(PBFT)为基础的权益证明(PoS)系统,如Tendermint,当节点数在100-200个时,可支持大约1,000TPS。Solana是一个类似于PBFT的PoS区块链,在当前的测试网迭代中以超过200个节点支持高达50,000TPS,使其成为性能最好的区块链和世界上第一个Web规模的去中心化网络。

自Solana成立以来,由来自高通、英特尔、网景和谷歌的技术先驱组成的Solana团队一直致力于构建这些突破性性能标准所需的技术。

为了创建一个去中心化、无许可,并且可以匹配单个节点性能的网络,Solana团队开发了以下7项关键技术:

?历史证明(POH):共识之前的时序;

?TowerBFT:PBFT的PoH优化版本;

?Turbine:区块传播协议;

?GulfStream:快速事务转发协议;

?Pipeline虚拟机:并行智能合约运行时;

?Cloudbreak:水平缩放的帐户数据库;

?复制器(Replicators)?:分布式账本存储

在本文中,我们将简要地解释以上每项技术。如果您想要深入了解,可以点击上面的链接,内有我们提供的详细说明。

历史证明

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

无线蜂窝网络与基于区块链的网络有着许多相似之处,长期以来无线蜂窝网络一直致力于优化网络通信。从规模上看,没有哪一个无线发射塔有足够的带宽让每部手机都能分到自己的无线频率用于传输,因此电信公司需要「多址技术」来在同一频率里挤进多个电话呼叫。

时分多址(TDMA)是实现蜂窝网络大规模可扩展性的主要技术之一。TDMA指定发射塔将每个无线电频率划分为时间段,并将这些时间段分配给每个电话呼叫。通过这种方式,蜂窝塔为网络提供了一个全局可用的时钟。这极大地提高了有限带宽的可伸缩性,允许每个频率支持多个同步数据通道,并减少来自多个手机在同一频率上同时广播的干扰。

当前基于区块链的网络则面临着时钟问题。每当一个新的区块生成时,他们的时钟就会「滴答」一次。对于以太坊来说,这种情况每15秒发生一次,因此一个区块中只能塞入这么多的信息。对于基于区块链的网络,与TDMA类似的时钟机制应当具有时小于秒的粒度,并且得到所有验证节点的同意,这样它们就可以更有效地处理事务。

Solana的核心创新是「历史证明」,这是一个全局可用、免许可的时间来源,可以在达成共识之前在网络中运行。POH不是一个共识协议,也不是抗女巫攻击机制。应该说,POH是时序问题的一个解决方案。

其他区块链要求验证者相互通信以确认时间已经过去,而每个Solana验证者通过将时间编码为一个简单的SHA-256序列哈希可验证延迟函数(VDF)来维护自己的时钟。Solana使用VDF并不是为了随机性;相反,验证者使用VDF是为了维护自己的时钟。因为每个验证者都维护自己的时钟,所以选择领导者(leader)在先,进行一个完整的纪元在后。就像Tendermint一样,一个纪元的时间表可以持续数千个区块。然而,与Tendermint不同的是,网络从不等待失败的节点。每个验证者运行VDF以证明它已经获得了传输区块和验证者的时间段(slot)。每个验证者都会因为这样做而得到补偿,正如区块生产者会因为生成区块而获得奖励一样。

有了历史证明,领导者继续轮换,不管网络状况如何,网络作为一个整体都在前进。这意味着网络永远不会停止,可以在没有任何验证者相互通信的情况下决定轮换验证者。这是一个微妙而深刻的转变,没有其他区块链拥有类似的机制。在其他所有区块链中,验证者必须通过通信才能做出决策,可是在Solana中,领导者的轮换决策是异步调用的。

这一核心创新打开了全面提升的设计空间。除了提供用于时间戳的时钟之外,POH还使得Solana能够优化网络上可用的区块时间(800ms)、区块传播(log200(n)、吞吐量(50K-80=KTPS)和分类帐存储(pb)。

TowerBFT

在历史证明的基础上,Solana运行TowerConsensus,这是一种类似PBFT的共识算法,专门设计为可以充分利用已同步的时钟。但是与PBFT不同,TowerConsensus倾向于活性而非一致性。与PBFT同样的是,节点会成倍增加超时时间以达成协议,但由于区块链账本也是一个免信任的时间源,节点可以观察和检查网络

想象你置身在一个孤岛上,一个瓶子漂了过来,里头装着一个U盘。在U盘里存着一个Solana帐本。如果你只查看帐本本身,你将看到每个节点都可以计算当前验证者的数量、每个验证者的状态——以及关键的一点,每个验证者向网络中的任何区块提交的超时时间。仅仅是根据数据结构,不需要任何对等网络消息,验证者就可以做出投票决定,网络可以据此达成共识。

Turbine

由于Solana共识层不依赖于对等网络消息,它能够独立于共识去优化区块在网络中传输的方式。Solana的区块传播技术被称为Turbine,它主要是从BitTorrent那里「偷师」。当一个区块被流化时,它与擦除码一起被分解成小数据包,然后在一大组随机的对等点上散开。扇出200个数据包,网络的第二层可以覆盖40,000个验证者。因此,验证者能够传播对最终性具有log200(n)影响的区块。对于所有实际用途,如果每个连接都是100ms,那么对于一个拥有40,000个节点的网络,复制可以在400ms内完成,实现最终性只需500ms。

扇出机制必须能抗故障。因此,验证者使用里德-所罗门编码(Reed-Solomon)以纠删代码编码数据,提供一定程度的容错。

GulfStream

在高性能网络中,内存池管理是一种新的问题,不过对于其他区块链来说并不是那么迫在眉睫。GulfStream通过推送事务缓存和转发到网络边缘来发挥作用。由于每个验证者都知道Solana架构中即将轮值的领导者的顺序,客户端和验证者会提前将事务转发给预期的领导者。这样便于验证者提前执行事务,减少确认时间,更快地切换领导者,并减少来自未确认事务池对于验证者的内存压力。

客户端签署引用特定区块哈希的事务。客户端选择一个最近才被网络完全确认的区块哈希。区块大约每800ms被提议(propose)一次,并且需要一个指数级增长的超时来展开每一个新增区块。使用我们的默认超时曲线,在最坏的情况下,一个完全确认的区块哈希为32个区块时长。假设区块时间为800ms,则相当于25.6秒。

一旦事务被转发到任何验证者,验证者就会将其转发给即将到来的领导者之一。客户端可以订阅来自验证者的事务确认。客户端知道区块哈希在有限的时间内过期,或者事务由网络确认。这便于客户端签署保证执行或失败的事务。一旦网络超过回滚点,使得事务所引用的区块哈希过期,客户端就可以确切知道事务已经是无效的,并且永远不会在链上执行。

Pipeline虚拟机

我们构建了Pipeline虚拟机(VM),以充分利用Solana的高性能网络,这是一个超级并行的事务处理引擎,旨在横向扩展到GPU和SSD。请注意一点:所有其他区块链都是单线程计算机。Solana是唯一一个在单个分片中支持并行事务执行的区块链。

这个问题的解决方案很大程度上借鉴了名为「散点-聚集」的操作系统驱动程序技术。事务预先指定它们在执行时将读取和写入的状态。运行时能够找到在一个区块中发生的所有非重叠状态转换函数,并并行地执行它们,同时优化跨RAID0SSD数组调度对状态的读写。

尽管Pipeline本身是一个调度事务的虚拟机,但Pipeline实际上并不在虚拟机中执行事务。相反,Pipeline将事务传递给本地硬件上,直接使用一种业界验证过的,被称为伯克利包过滤(BerkeleyPacketFilter,BPF)的字节码来执行。这种字节码是为高性能包过滤器设计的,自1990年代早期就已经进行了优化,并已部署到全球数百万个交换机的生产环境中,以便在一个40千兆比特的网络上每秒处理6,000万个数据包。

每次英伟达(Nvidia)将SIMD可用线程的数量增加一倍,我们的网络的计算能力就会增长一倍。事实上,所有其他单线程计算机区块链都无法以这种方式扩展。

使用同样针对WASM的编译器LLVM,我们为开发人员提供了一组很棒的工具,可以用C/C和Rust语言编写高性能智能合约,并在GPU上执行。虽然Solana没有使用WASM,但是只需要少量修改,开发人员就可以将为WASM编译器编写的C和Rust代码在Solana编译器中重新编译。因此,开发人员可以轻而易举地从其他主流WASM链迁移他们的应用程序。

以太坊曾因其软件架构出现过一些漏洞。举两个相关的例子:

MultipleparityhacksthroughDelegateCall

TheDAOrentrancybugthrough「call」

通过委托调用导致多个Parity钱包攻击

通过「调用」导致DAO重入漏洞

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

Move语言引入了资源(Resources)和脚本(Scripts)作为高阶概念。两者都可以很自然地适应SolanaPipeline运行时以及我们的本地程序设计。我们的目标是支持将Move作为第一层语言,这样资源就可以像原生Solana程序一样运行,并且可以通过Move或我们自己的原生RustABI进行开发和组合,而不会对性能或安全性造成任何影响。

Cloudbreak——水平伸缩内存

光是可伸缩计算还不够。用于追踪帐户的内存很快就会在大小和访问速度方面成为瓶颈。比方说,一般认为,许多现代区块链使用的本地数据库引擎LevelDB不能支持超过5,000TPS。

一个略天真的解决方案是在RAM中维持全局状态。然而,指望消费级计算机拥有足够的RAM来存储全局状态,这也不太合理。对于Solana,我们设计了Cloudbreak,这是一种状态架构,它针对分散在SSDRAID0配置中的并发读写进行了优化。每个新增磁盘都增加了链上程序可用的存储容量,并增加了在执行时可执行的并发读写程序次数。

与我们的事务设计相结合,这个架构支持事务的提前(AheadOfTime,AOT)执行。一旦验证者观察到事务,Pipeline虚拟机就可以开始从磁盘预取所有帐户并准备运行时执行。验证者和区块生产者甚至可以在将事务编码到区块之前开始执行事务,这便于我们进一步优化区块时间和确认延迟。

复制器

以1GBPS的速度,区块链网络每年将为账本生成4PB的数据。存储数据将很快成为主要的中心化向量,这与区块链实现的目的背道而驰。

在Solana上,存储的数据从验证者下载到称为复制器(Replicator)的节点网络。复制器不参与共识。状态历史被分割成许多部分,并执行纠删代码。复制器存储状态的一小部分。每隔一段时间,网络就会要求复制器证明它们还在存储其应该存储的数据。Solana使用的复制证明(PoRep)理念主要借鉴自Filecoin。

我们能够使用历史证明——达成共识之前的时钟——来优化PoReps的创建方式。复制器节点不参与共识,使用PoH生成轻量级的证明,通过这种证明可以复制分类账的各个部分,而且验证者能够跨GPU批量验证它们。

复制器可以是轻量级节点。通过纠删代码,复制器网络可以提供超过AWS或GCE所希望提供的任何数据的可用性保证。

小结

由于这7项重大创新,Solana网络是一个快如闪电的快速分布式账本技术,而且将永远保持运行。它不会因为共识而放缓。此外,该系统优化了数据传播,大量利用并行GPU进行事务处理,并且不会因为大量链上历史数据存储而对验证者造成负担。

Solana软件设计的指导原则是不应妨碍硬件,方便硬件以最大容量运行。因此,Solana可以自然地扩展带宽、SSD和GPU内核。它是唯一实现上述目标的区块链,正是通过以上创新,得以令Solana在全球200个物理上不同的节点网络上实现50,000TPS。

网络状态

Solana的测试网现已上线。可以点击testnet.solana.com查看。出于成本考虑,我们只运行少数几个节点。但是,我们已经在许多实例上将它扩展到超过200个不同的物理节点,这些节点跨越了AWS、GCE和Azure上的23个数据中心,以进行基准测试。

目前网络运行正常,开发人员现在就可以在测试网上部署代码。他们可以用C语言构建智能合约,我们还在积极地开发Rust工具链。Rust将成为Solana智能合约开发的旗舰语言。作为SolanaJavascriptSDK的一部分,Rust工具链是公开可用的,我们正在进一步迭代软件开发工具包。

Solana将很快推出一个公开测试版,鼓励验证者通过TourdeSOL运行节点——类似于Cosmos的GameofStakes竞赛——这向公众提出了一个挑战,即在获得代币的同时测试Solana网络的极限。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

大币网

[0:15ms0-4:296ms