Solana是全球性能最强的免许可区块链。在 Solana 测试网的当前迭代中,由 200 个物理上不同的节点组成的网络在使用 GPU 运行时支持每秒超过 50,000 笔交易的持续吞吐量。

有 8 项关键创新使得 Solana 网络成为可能:

在这篇博文中,我们将探讨Gulf Stream,这是 Solana 为高性能对抗网络提供的内存池管理解决方案。在后续的博文中,我们将介绍这 7 项关键创新。

内存池详解

内存池是一组已提交但尚未被网络处理的交易。您现在可以查看比特币以太坊内存池。


以字节为单位测量 30 天的比特币内存池。

以交易量衡量的 30 天以太坊内存池

对于比特币和以太坊,未确认交易的数量通常约为 20K-100K,如上所示。内存池的大小(通常以未确认交易的数量来衡量)取决于区块空间的供需。即使在区块链时代的早期,当内存池增加时,也会对整个网络造成严重的瓶颈效应。

那么,Solana 做得更好吗?在不增加网络吞吐量的情况下,Solana 验证器可以管理 100,000 大小的内存池。这意味着,在网络吞吐量为 50,000 TPS 的情况下,100,000 个交易的内存池只需几秒钟即可执行。这就是 Solana 成为世界上性能最高的无许可区块链的原因。

令人印象深刻,对吧?但这种简单的分析忽略了很多重要因素……

以太坊和比特币中的内存池使用八卦协议以对等方式在随机节点之间传播。网络中的节点定期构建代表本地内存池的布隆过滤器,并从网络上的其他节点请求任何与该过滤器不匹配的交易(以及其他一些条件,例如最低费用)。将单个交易传播到网络的其余部分将至少需要 log(N) 步,消耗过滤它所需的带宽、内存和计算资源。

当基准客户端开始每秒生成 100,000 笔交易时,八卦协议就会不堪重负。计算过滤器并在机器之间应用过滤器,同时将所有交易保留在内存中的成本变得高得令人望而却步。领导者(区块生产者)还必须在一个区块中重新传输相同的交易,这意味着每笔交易至少要通过网络传播两次。这既不高效也不实用。

Gulf Stream 简介

我们在 Solana 网络上解决此问题的方法就是将交易缓存和转发推到网络边缘。我们称之为Gulf Stream。由于每个验证者都知道即将上任的领导者的顺序,因此客户端和验证者会提前将交易转发给预期的领导者。这使得验证者可以提前执行交易,减少确认时间,更快地切换领导者,并减少未确认交易池对验证者的内存压力。这种解决方案在具有非确定性领导者的网络中是不可能的

那么它是如何工作的呢?客户端(例如钱包)签署引用特定区块哈希的交易。客户端选择一个已被网络完全确认的较新的区块哈希。大约每 800 毫秒提出一个区块,并且需要指数增加的超时来展开每个附加区块。使用我们的默认超时曲线,在最坏情况下,完全确认的区块哈希是 32 个区块。交易仅在引用区块的子区块中有效,并且仅对 X 个区块有效。虽然 X 尚未最终确定,但我们预计区块哈希的 TTL(生存时间)约为 32 个区块。假设区块时间为 800 毫秒,则相当于 24 秒。

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

这种架构本身具有许多积极的副作用。首先,在负载下,验证者可以提前执行交易并丢弃任何失败的交易。其次,领导者可以根据转发交易的验证者的权益权重对交易进行优先处理。这允许网络在发生大规模拒绝服务时优雅地降级。

到目前为止,区块链网络的功能性取决于其内存池的最小程度,这一点已经变得非常明显。虽然交易吞吐量有限的网络承担着尝试改造全新扩展技术以应对不断增长的内存池的崇高使命,但 Solana 自构思以来就采用了历史证明Gulf StreamSealevel等优化技术,以解决第一代区块链网络的问题并实现巨大的交易吞吐量。从一开始,这就是全球范围内的惊人速度,也是为世界各地的企业、经济体和人民创建高度实用的去中心化基础设施的根本性发展。

原文:https://medium.com/solana-labs/gulf-stream-solanas-mempool-less-transaction-forwarding-protocol-d342e72186ad