(奥维的街道及阶梯,梵高)
蓝狐笔记之前多次介绍过Solana,可以查阅《为什么Solana是区块链开发者需要的“世界计算机”?》、《区块链的“历史证明机制”:时间与共识》等,如今它已经发展了不少。
前不久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已经有了一定的社区基础。目前其质押者主要来自于欧洲、美国,亚洲质押者参与度相对较低。
(SOURCE:Solanabeach.io)
不走分片之路的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要走的路不是小路,而是充满梦想的大路。
但它又是另类的,它走的不是分片的可扩展之路,它是加密领域的新物种。
加密领域比特币和以太坊占据绝对主导地位,想要在现有架构下超越它们几乎不可能。唯有全新架构才有机会,唯有新物种才能发展壮大。
当然,新架构意味者高风险,因为它可能做不出来,也可能做出来了但没有社区的支持;它也意味着高收益,如果它能做出来且得到开发者和社区的支持,它就有机会发展壮大。
这就是为什么蓝狐笔记一直在关注不同的区块链范式的原因。其中Solana和Holochain一直处于蓝狐笔记的关注范围,但未来它们能否成功只有时间才能告诉我们,也欢迎大家留言,说说自己心目中的全新区块链物种。