从技术角度来分析,Solana是如何突破不可能三角?

白泽研究院
白泽研究院 得得号

Jul 12, 2021 独到见解、干货分享,区块链前沿追随者,公众号[白泽研究院]

摘要: 在本文中,我们将了解 Solana如何实现其可扩展性以及其区块链架构和开发生态系统的特性,这些特性能够创建新的和独特的用例。

Solana是一个比较创新的公有链,具有一些之前从未有过的功能。它的高吞吐量和低费用的性能正在催生更多的链上应用程序。直到今天,区块链性能的显著提高往往是以减弱去中心化为代价的。然而没有去中心化的区块链只是一个低效的数据库。这并不是Solana所走的道路。

在本文中,白泽将带大家了解 Solana如何实现可扩展性以及其区块链架构和生态系统的特性。

可扩展性三难困境(不可能三角)

区块链的可扩展性三难(常称为" 不可能三角 ")是由维塔利克·巴特林提出来的,它展示出了可扩展性、安全性和去中心化程度这三者之间的关系。

举个例子来理解,假设有三个人,拿着三杯酒和一瓶酒。每一滴酒只能进入一个玻璃杯。如果一个人得到更多,另一个人必须得到更少。换句话说,这是一种零和的情况。用数学可以表示为 x+y+z=1。任何一个变量的增加必然意味着另外两个变量的减少。

如果只是更改区块链的参数(例如区块大小),那么" 不可能三角 "是成立的。例如,币安智能链的开发所做的,由于验证器较少,增加了吞吐量但同时降低了去中心化。

但这并没有考虑到技术创新。回到上文的例子中,当你创新时,你会得到一瓶更大的酒,所以至少有一个杯子会更满,而不会减少其他杯子里的酒量。共识算法、区块传播、智能合约运行时间等方面都可以得到改进,使区块链可以更高效。权衡可能仍然存在,即增加一个变量仍然可以减少其他变量,但速度较慢。" 创新 " 为数学方程添加了一个变量:x+y+z=1+i。

这意味着区块链有可能实现更安全、高效和扩展:通过增加创新,而不是牺牲安全性或去中心化。

创建区块链的目标不应该是最大化去中心化,而是要实现足够的去中心化。具有最大限度去中心化的区块链将毫无用处;每个性能指标都将最大限度地降级,以换取权力下放的任何增量改进。如果去中心化达到了足够的程度——即区块链能够承受任何可行的攻击——没有理由在这一点之后进一步去中心化,性能应该被优先考虑。

比特币社区认为通过工作量证明(PoW)来消耗物理资源是必要的。以太坊社区认为权益证明(PoS)是最佳的,用户必须能够在普通电脑上验证区块链。不同的是,Solana 社区关注效率,他们认为每个用户并不一定都需要自己验证区块链。多少个验证节点才足够?网络内的财富分配如何?有很多分歧点。然而,Solana 非常年轻,与比特币和以太坊等其他主要区块链一样,去中心化会随着时间的推移而改进。

现在让我们来看看 Solana 带来的创新,这些创新可以在不影响安全性或去中心化的情况下实现高性能。 

历史证明:达成共识之前的时钟

历史证明(PoH) 是一种创新的机制,它使验证者能够通过使用可验证的延迟功能来使通用时钟达成一致。虽然其他区块链需要验证者之间的通信以同意时间已经过去,但 Solana 能够绕过这一点,因此可以提前安排眼睁睁选择并优化区块时间、区块传播、吞吐量和存储。

Tower BFT:PBFT 的 PoH 优化版本

Tower BFT是一种类似 PBFT 的共识算法,专门设计用于利用 PoH 提供的同步时钟。与 PBFT 不同,Tower BFT 更喜欢活跃而不是一致性。 

Turbine(涡轮)

Turbine是 Solana 的区块传播技术。当一个区块被流式传输时,它被分解成小数据包和纠删码,然后散布到一大堆随机对等点中。为了确保扇出机制能够抵抗故障,验证器使用 Reed-Solomon 纠删码对数据进行编码,提供一定程度的容错能力。 

Gulf Stream

Gulf Stream 将事务缓存和转发推到网络边缘。由于每个验证器都知道即将到来的领导者的顺序,因此客户端和验证器会提前将事务转发给预期领导者。这允许验证器可以提前执行事务,减少确认时间,更快地切换领导者,并减少来自未确认交易池池的验证器的内存压力。 

Sealevel (海平面)

与大多数其他单线程计算的区块链不同,Solana 通过支持单个分片中的并行事务执行来利用其高性能网络。这是通过Sealevel 实现的,这是一种超并行化事务处理引擎,旨在跨 GPU 和 SSD 进行水平扩展。事务预先指定它们在执行时将读取和写入的状态,以便运行时能够找到发生在块中的所有非重叠状态转换函数并并行执行它们。

Pipeline(流水线)

Solana 上的交易验证使用一种被称为Pipeline(流水线)的优化技术来快速验证大量区块,同时在网络上复制它们。 

Cloudbreak

Cloudbreak是一种状态架构,针对分布在 RAID 0 SSD 配置中的读取和写入进行了优化。每个额外的磁盘都会增加链上程序可用的存储容量,并增加程序可以执行的并发读取和写入的数量。一旦验证者观察到交易,他们就可以开始从磁盘预先读取所有帐户并准备在运行时执行。 

Archivers(存档管理员)

在 Solana 上,数据存储从验证器改变到称为Archivers(存档管理员)的节点网络。验证器的历史状态被分成许多部分,经过擦除编码,并由存档管理员进行存储。每隔一段时间,系统会要求存档管理员证明证明他们正在存储相应的的数据。

使用流行的编程语言Rust

Solana 上的智能合约是用 Rust 编写的,Rust 是一种较为流行的编程语言,这使得 Solana 的开发者社区迅速扩展。这种编程语言融合了 C++ 等语言的性能和效率,添加了更简便的语法,并简化了开发过程。

与以太坊的智能合约编程语言 Solidity 进行比较,虽然以太坊在区块链行业中拥有最多的开发者,但作为一种历史并不久的语言,Solidity 落后于其他的开发环境,例如 Web 。其次是 Solidity 的代码调试具有挑战性,支持它的工具很少,即便是经验丰富的 Solidity 开发人员也很难找到。

反观 Rust ,虽然也是一种相对年轻的编程语言,但支持它的工具要大大多于 Solidity,更不用说该语言本身具有许多功能,使其编写起来更简单且更易于正确的使用。此外,Rust 在区块链行业之外也被广泛使用,并且拥有一个庞大的生态系统,日益剧增的开发用户不断地完善 Rust 的新功能。

最重要的是,从长远来看,使用更强大的语言可以提高开发人员的生产效率。虽然目前 Rust 在区块链行业内获得广泛运用可能需要一些时间,但是通过 Solana 的开发者激励计划,待 Rust 语言在区块链行业占有一席之地后,在 Solana 上构建 dApp 就会更明显的优势。

可组合性

可组合性——不同协议之间无缝衔接的能力,使各种创新之间能够组合。因为协议可以与其他人已经构建好的协议相集成,而不必自己从头开始构建原语。

L2 和分片是目前以太坊寻求解决可扩展性问题的两种方式。在提高吞吐量和交易速度的同时,但是这些好处是以可组合性为代价的。

通过构建独特的全局状态和固有的可扩展性,Solana 维持了可组合性并避免了依赖 L2 或分片的需要。这使开发人员可以避免决定与哪个 L2 集成、在该 L2 上部署合约的工作问题,而是专注于构建新功能和与其他协议集成之类的重要事情。 

清晰的扩展途径

以太坊扩容的最终形式尚未确定。无论哪种扩展解决方案被采用,都会面临一系列不确定因素和问题:向 L2 的过渡将如何进行?资金将如何在各个 L2 之间流动?这对开发者、钱包、流动性提供者、稳定币入口和用户有什么影响?

以太坊开发人员必须重新考虑他们的扩展方法,每次以太坊上的拥堵使得使用他们的协议变得望而却步。例如,重写代码以使协议的交易费用更便宜,这种情况并不少见,即使以降低安全性为代价也是如此。此外,随着 L2 的采用和分片的实施,开发者的工具必须更新,以处理新的数据结构,这使得开发变得越来越具有挑战性。当然,这是问题都是可以克服的,但它们会减慢开发速度,并且由于开发难度的增加,对开发者不太友好。

而 Solana 有一个相对明确的无限扩展方案。与以太坊对比,最关键的区别是 Solana 网络的计算能力直接受益于硬件和带宽的改进,因为它生来就支持分片并行,容量预计每两年翻一番。这些可扩展性改进在基础层生效,无需调整 L2 或分片的复杂性,不需要开发人员更改任何代码。随着时间的推移,在 Solana 上执行代码的成本会越来越低。 

交换协议

交换协议是区块链的基础设施。区块链支持发送和接收代币,但是一旦有多种代币时(ERC20 代币、SPL 代币等),用户将需要在特定的交易所内交易代币。

目前,大多数区块链都有许多 DEX (去中心化的交易所),它们有独立的流动性资金池。而各个聚合器试图通过将交易订单匹配到提供最优惠价格的 DEX 来便利用户。虽然这对用户来说绝对是有利的,但这样的方式不如将所有流动性集中在一个地方,这将显著减少滑点。

Solana 上的去中心化交易所 Serum 便是这样做的。Serum 是一个中央限价订单簿 (CLOB),可以在未经许可的情况下对任何代币进行出价和询价。任何项目都可以自由使用他们的交换,可以把它看成是楼房的地基,开发人员不必创建自己的自定义交换基础设施。

拥有订单簿意味着 Serum 可以启用中心化交易所常用的一些订单类型,除市价订单以外,例如限价订单、IOC(立刻成交否则取消订单)和仅限提交限价单等。

CLOB 没有建立在任何其他区块链上是有原因的,如果没有 Solana 的高吞吐量和低交易成本,这是不能实现的。为了获得大量流动性,做市商通常需要能够根据不断变化的市场快速、频繁地调整利差。做市商转移订单的频率越低,每次调整的成本越高,他们的利差就必须越大,以弥补他们承担的风险。因此,Solana 的高性能直接带来了更多的流动性。

使用 Serum,流动性集中在一个地方,而不是分散在各个 DEX 中。即使 DEX 拥有自己的 AMM 流动性池,这种流动性也可用于在 Serum 下订单。Solana 上大部分的 DEX 都使他们自己的激励矿池与 Serum 整合,通过激励矿池进行交易的用户也可以访问 DEX 自己的流动性池,以提供更好的价格为准。

延迟和吞吐量

延迟和吞吐量是齐头并进的。例如,你每分钟可能有 100 个区块,但如果每个区块只能容纳 1 个事务,那么你的吞吐量并不是很高。相反,假设你每秒可以处理一百万个事务,但你每小时只能生成一次块。每个区块中都会有大量交易,但每小时更新一次区块链状态的能力将限制可以构建的应用程序的范围。

Solana 目前支持每秒 65,000 笔交易的峰值容量和 400 毫秒的区块时间。二者都是在区块链行业内领先的数值,它们只会随着时间的推移而更加完善。

Solana 的高速率对 DeFi 的一个主要影响是清算。

Solana 的较低延迟和由此产生的更快清算意味着可以安全地使用较低的抵押比率,从而提高资本效率。如果与较慢的区块链上的 DeFi 项目使用相同的抵押比率,那么相比之下, Solana 上的项目不太容易发生级联清算。

Solana 的高速度对于游戏等应用也是有很大的影响,在这些应用中,看到其他人的反应需要以秒为单位,这是保持玩家参与所需的最低速度。一旦链上人工只能成为可能,我们一定会看到大量新的、曾经不能想象的应用。 

低费用

Solana 的交易费用大约比以太坊的交易费用便宜 15,000 到 400,000 倍。

虽然巨鲸可能不在乎高额的交易费用,但更低费用使巨鲸和散户都受益的一个例子是 DeFi 协议。最大化利润的最佳复利频率与交易费用成反比;交易费用越低,最佳复利频率越高。这种关系如下图所示。

同样,较低的费用使用户能够更有效地利用借贷协议。用户可以通过存入他们想要获得杠杆的资产(例如 SOL)作为抵押,借入另一种资产(例如 USDC)并使用 USDC 购买更多 SOL 来建立资产的杠杆头寸。可以重复此过程以增加杠杆作用。这个过程需要许多单独的交易才能完成,因此较低的费用可以实现更大的杠杆作用,或者相同数量的杠杆作用但更便宜。

当然,如果费用足够低,那么肯定会有很多新的用途应运而生。例如,流动支付,它代表一种资金多次释放。它将为每月支付一次工资的传统工资系统提供替代方案,或创建具有自定义释放率的合约。

总结

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

作于一个基于创新的公有链,Solana 的创新之路走的很踏实,但它的脚步仍未停止。

作者:白泽研究院;来自链得得内容开放平台“得得号”,本文仅代表作者观点,不代表链得得官方立场凡“得得号”文章,原创性和内容的真实性由投稿人保证,如果稿件因抄袭、作假等行为导致的法律后果,由投稿人本人负责得得号平台发布文章,如有侵权、违规及其他不当言论内容,请广大读者监督,一经证实,平台会立即下线。如遇文章内容问题,请联系微信:chaindd123。

链得得仅提供相关信息展示,不构成任何投资建议
本文系作者 白泽研究院 授权链得得发表,并经链得得编辑,转载请注明出处、作者和本文链接

更多精彩内容,关注链得得微信号(ID:ChainDD),或者下载链得得App

分享到:

相关推荐

    评论(0

    Oh! no

    您是否确认要删除该条评论吗?

    分享到微信