LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资产 > 高性能公链各展身手,Solana剑走偏锋

高性能公链各展身手,Solana剑走偏锋

2020-08-08 区块律动BlockBeat 来源:区块链网络

原文来源:蓝狐笔记


前不久 FTX 将要基于 Solana 发布其 DEX 交易平台,该 DEX 名为 Serum。FTX 的 CEO SBF 还公开为 Solana「带盐」:「Solana 棒极了!」这是什么情况?为什么不是基于以太坊构建其 DEX?


这一切都源于 Solana 的特色:在保证一定程度安全的前提下,实现高性能和低费用。


Solana 现状


截止到蓝狐笔记写稿时,Solana 的总交易数近 20 亿次,当前的 tps 大约 200-300 之间,大约是目前 ETH 的 10-20 倍,能处理当前多数场景的交易,尤其是 DeFi 领域的交易。



(SOURCE:Solanabeach.io)


Solana 的代币为 SOL,截止到蓝狐笔记写稿时,其流通市值超过 3800 万美元,活跃的质押超过 1.7 亿,一共有 135 位质押者。其中质押超过 100 万美元(按当前 SOL 价格计算)的质押者达到 128 位,目前的验证者是相对分散的,且都质押一定量的资金,Solana 已经有了一定的社区基础。目前其质押者主要来自于欧洲、美国,亚洲质押者参与度相对较低。




不走分片之路的 Solana


目前区块链扩展的主流方案是分片+layer2。而 Solana 是个另类。它并没有选择分片之路,这也是加密世界中两个让蓝狐笔记印象较深的项目,一个是 Solana,一个是 Holochain。Solana 试图实现高性能、低费用,且兼顾一定程度的去中心化和安全。它还有一个很重要的优势是,不用担心可组合性的问题。如果公链分片之后,可组合性是个必须面对的问题。而没有分片的 Solana 则不存在这种担忧。


Solana 创始人是 Anatoly Yakovenko。从公开资料看,他之前一直在思考一个问题:多节点组成的去中心化网络如何才能达到单节点的性能?对这一问题的底层思考,引出了 Solana 最重要的概念之一:PoH(Proof of History)。


Solana 的时钟


Solana 的 PoH 并不是共识机制,也不是抵抗女巫攻击的机制。它本质上是针对区块链时钟问题的解决方案。当前区块链的时钟按照区块滴答来行进,比如比特币,其时间滴答大约每十分钟一次,每次滴答更新一次区块,区块的更新代表全局状态的更新。也就是说,在比特币的 PoW 机制中,时间和状态是耦合的,保持同步的行进。中本聪通过将 PoW、难度调整以及最长链规则结合一起,实现了在无须许可环境下的全局共识。


不过,这种全局共识也存在吞吐量的限制,因为吞吐量取决于区块大小和区块时间。区块越大,区块时间越短,吞吐量越大。但区块越大不利于节点的去中心化,减少区块时间则会增加链分叉的概率。


为提高吞吐量,Solana 提出了将时间和状态解耦的方案,如何实现这一点?需要全局可用的时钟。有了全局时钟,状态更新可按照异步方式进行;有了全局一致的时钟和交易时间戳,可以实现交易在网络间的持续流动。Solana 的 PoH 机制就是为网络中的所有节点产生全局可用的时间链。


有了独立的时间链,验证的领导者在收到时间戳后会尽快广播给委员会。时间戳有规范顺序,不是区块生产者任意确定的顺序,这样,Solana 中的验证者可以实时向其他节点发送状态更新。节点持续收到新的交易,交易有发送者签名过的 PoH 哈希,并将其转发给邻居节点。


Solana 的验证者通过 SHA-256 顺序哈希的 VDF(可验证延迟函数)来解决时钟问题。每个 Solana 的验证者使用 VDF 来维持其自己的时钟,可以为周期(epoch)提前安排领导者。


通过 PoH,Solana 的验证领导者可以实现持续轮换,且其轮换的决定是异步进行的。Solana 网络也可以轮换验证者,且其轮换可在验证者之间无须相互交谈就可实现。而通常的区块链则需要验证者之间进行交谈才能作出轮换决定。这种设计给予 Solana 更大的可扩展性空间。


除了 PoH,Solana 在共识机制、区块广播、账本存储等方面也进行了优化。


Solana 的 TBFT 共识


Solana 的共识机制是 TBFT 共识(Tower BFT),类似于 PBFT 共识。不过,Solana 的 TBFT 将其活性优先于一致性。Solana 的节点可以计算当前的验证者数量、每个验证者状态、每个验证者提交给网络中任何区块的超时。通过这些数据结构,节点可以进行投票,从而达成共识。


Solana 的 Turbine 区块广播


Turbine 是 Solana 的区块广播技术,借用了 BitTorrent 的思想。一个区块传输时,它会分成很多个小数据包,然后广播到大量的随机节点。按照 Solana 自身的说法,使用其扇出机制,如果每个连接为 100 毫秒,对于 40,000 个节点的网络而言,可以在 400 毫秒内完成复制,500 毫秒内完成最终性。


此外,由于 Solana 的共识层不依赖于点对点消息,因此可以独立于共识进行区块网络传输的优化。

Solana 的 Gulf Stream


在 Slolana 的结构中,每个验证者都知道未来领导者的顺序,验证者会提前将交易转发给预期的领导者。这可以让验证者提前执行交易,减少确认时间,减少对验证者的内存压力。


而像钱包这样的客户端则签署引用特定区块哈希的交易。客户端选择被网络完全确认的区块哈希,最差的情况下需要 32 个区块,假设区块时间大约 800 毫秒,最多只需要 25.6 秒完全确认。


一旦交易转发给任意验证者,验证者会转发给未来的领导者。客户端可以订阅来自验证者的交易确认。客户端知道区块哈希在有限时间内过期或者交易被网络确认。它允许客户端签署交易,这些交易可以保证执行或失败。


Solana 的 sealevel


sealevel 是 Solana 用来构建横向扩展的技术方案,是并行交易处理的引擎。多数区块链都是单线程的计算机。Solana 试图在单个分片中支持并行交易执行。它借鉴了「scatter-gathter」的操作系统驱动程序技术。交易预先指定它们在执行时将读取或写入的状态。运行时可以找到一个块中所有非重叠状态转换函数,且并行处理。


sealevel 本身是用于安排交易的虚拟机,但它并不在虚拟机中执行交易。它使用 Berkeley Packet Filter(BFT,为高性能数据包过滤器设计)的字节码,将交易在硬件本地执行。


使用 LLVM(针对 WASM 的相同编译器),可为开发者提供一组工具,用 c/c++和 Rust 编写高性能的智能合约。Solana 没有使用 WASM,不过开发者可以在 Solana 编译器上通过少量更改重新编译 C 和 Rust 代码。开发者可以从其他 WASM 链(ETH2.0、Polkadot、EOS 等)将应用迁移过来。这一点对于开发者来说,会有一定的吸引力。


为保证安全,Solana 的体系结构支持不同模块之间保持严格状态分离,同时将资源和脚本作为高级概念引入。


Solana 的 Pipelining


Solana 网络上的交易验证过程利用了 Pipelining 的机制(CPU 设计中常见的优化)。Solana 网络上 Pipelining 机制(交易处理单元)在内核级别进行数据获取、在 GPU 级别进行签名验证,在 CPU 级别进行存储,在内核空间进行写入。据 Solana 的说法,通过这一机制,其交易处理单元可以同时处理 50,000 个交易。


Solana 的 Cloudbreak


Cloudbreak 是 Solana 的水平扩展内存方案。除了扩展计算,也有必要扩展内存,因为用于跟踪账户的内存很快会在大小和访问速度方面成为瓶颈。一般的处理方法是在 RAM 中维持全局状态。不过,普通的计算机没有足够的 RAM 来存储全局状态。Solana 设计了 Cloudbreak 的状态架构来进行优化。每个额外的磁盘增加了链上程序可用的存储容量,并增加了在执行时可以执行的并发读写程序数量。


这个结构支持交易的提前执行。只要验证者观察到交易,sealevel 可以开始从磁盘中预取所有账户,并为执行准备运行时。验证者和区块生产者可以在交易编码进入区块前开始执行交易,有利于进一步优化区块时间。


Solana 的 Archiver


为减轻验证者负担,Solana 将数据存储从验证者转移到名为 Archiver 的节点网络。交易状态的历史记录被拆分为很多碎片,并使用纠删码技术。Archiver 用于存储状态的碎片,但不参与共识。Solana 利用了 PoRep(Proof of Replication)的技术,了解 Filecoin 的小伙伴们肯定很熟悉,这是源于 Filecoin 的概念。

Solana 通过 PoH(Proof of History)来优化 RoRep 的创建方式。Archiver 节点使用 PoH 产生轻量级的证明,验证者可以通过 GPU 进行大规模验证。Archiver 节点甚至可以是轻量级节点(例如笔记本电脑)。通过纠删码和冗余,Archiver 网络可以提供数据可用性保证。


通过 PoH 的创新和其他几个方面的优化,Solana 试图走出一条不靠分片的扩展之路。


如 Serum 能成功,对 Solana 意味着什么?


Solana 之前有过 Kin 的支持,kin 将其网络迁移至 Solana。而如今 FTX 的 Serum 也计划构建在 Solana 上。一旦它获得一定的用户规模和开发者支持,就会引起越来越多的社区和开发者注意。


FTX 选择 Solana 构建其 DEX Serum。核心原因有几个:


一是高吞吐量和低延迟。


当前其理论 tps 最高可达 50,000 次(60 个节点)。如今 Solana 的 tps 也在 200-300 之间(超过 150 个节点),它可以在不到 1 秒时间内完成交易。这对跟如今的区块链的低吞吐量和高延迟形成鲜明对比。如果发生抵押资产价格暴跌情况,吞吐量过低,速度过慢都可能导致用户大量损失。这些现实的情况不断促使开发者和用户在寻找新的选项。


二是低费用。


据说百万笔转账的交易费用才 10 美元左右。这跟如今用户参与 DeFi 挖矿的费用形成巨大反差。如今用户参与 DeFi 的流动性挖矿花费几十美元的 gas 费用是很平常的事情。这么高的费用除非有极高的收益支撑,否则很难持续。


三是兼容性和无须担心可组合性。


Solana 支持 Rust、C、C++、Move(Libra)语言,也支持开发者从 WASM 链(ETH2.0、Polkadot、EOS 等)将应用迁移过来。这些兼容性可以降低开发者开发成本。


此外,由于 Solana 走的不是分片之路,也无须担心智能合约的跨分片交易等问题。

Serum 的能否成功,对 Solana 的意义不会低于对 FTX 的意义。如果 Serum 成功运行,那么,其他饱受高费用、低吞吐量、低速度的 DeFi 项目也会开始认真考虑其更多的选项和可能性。当然,由于以太坊生态的丰富性,这不意味着会离开以太坊,只是会考虑更多的选项。


不走分片之路的 Solana 要走的不是小路


Solana 网络采用了基于 PoH 时钟机制,还优化了共识机制、数据广播、并行交易处理、用单独节点网络进行状态数据存储等,其目就是为了在保证一定程度去中心化和安全的情况下,实现高吞吐量、低延迟和低费用,从而可以满足大部分场景的用户需求。


Solana 想要摘取加密领域的圣杯:可扩展性。所以,Solana 要走的路不是小路,而是充满梦想的大路。

但它又是另类的,它走的不是分片的可扩展之路,它是加密领域的新物种。


加密领域比特币和以太坊占据绝对主导地位,想要在现有架构下超越它们几乎不可能。唯有全新架构才有机会,唯有新物种才能发展壮大。


当然,新架构意味者高风险,因为它可能做不出来,也可能做出来了但没有社区的支持;它也意味着高收益,如果它能做出来且得到开发者和社区的支持,它就有机会发展壮大。


原文地址


—-

编译者/作者:区块律动BlockBeat

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

知识 公链 Solana
LOADING...
LOADING...