本文详细介绍了Solana区块链中的Gulf Stream协议,该协议用于在没有内存池(mempool)的情况下处理交易转发。文章探讨了Gulf Stream的工作机制,包括QUIC网络协议的应用、权益加权服务质量(SWQoS)的引入以及Jito验证器客户端的复杂性问题。通过对比传统内存池架构,文章强调了Solana在效率和延迟方面的优势。
13分钟阅读
2024年8月8日
“海湾流”这个术语源于Solana创始团队在2019年写的一系列介绍性博客文章,他们为Solana的一些创新机制赋予了航空主题的标题。在这些帖子中,海湾流被定义为Solana的“无内存池的交易转发协议”。然而,今天在Solana代码库中搜索“海湾流”这个术语只返回了一个微不足道的提及。
在Solana交易生命周期的更广泛上下文中,“海湾流”可以理解为从网络节点(通常是RPC)接收到交易直到发送到当前时段的领导者(即被TPU的“提取阶段”接收)的整个过程。我们还可以将海湾流概念化为涡轮(Turbine)的镜像,Solana的区块传播机制,因为海湾流是交易到达领导者的方式,而涡轮是处理后的交易如何离开领导者。
首先,在Solana的背景下,定义RPC(远程过程调用)节点可能会很有帮助。这些节点可以被视为与网络交互和读取数据的网关。它们作为用户与Solana验证者之间的中介。RPC与全节点验证者运行相同的软件,但设置不同,使它们能够准确模拟交易并维护当前状态(银行)的动态视图。然而,RPC节点未被质押,因此不参与共识。没有质押,它们无法投票或构建区块。这一设置与许多其他区块链不同,在这些区块链中,验证者和RPC节点通常是同一个。关于海湾流,我们可以总结RPC的角色是通过HTTP接收交易,将交易转换为QUIC(稍后将详细介绍),查找当前领导者的地址和端口信息,并将交易转发到当前和下一个领导者。
自网络成立以来,海湾流经历了至少两个主要升级,QUIC和基于质押的服务质量,后者将在本文后面详细讨论。就其核心协议而言,自2024年以来,海湾流可能经历了近年来面临的最大压力,因为Solana的网络流量首次达到前所未有的水平。为了解释这一点,当一个验证者成为领导者时,他们可以预期入站流量激增,访问量超过每秒一个GB,此时整个网络将数据包定向到他们。处理如此高的数据流入具有巨大的工程挑战。
创始团队对海湾流的原始定义强调了内存池的缺乏。我们可以将内存池(字面意思是“内存池”)定义为用户提交的交易集合,这些交易正在等待网络处理。这些交易通常未加密或被屏蔽,因此它们公开处于等待状态。它们通过gossip协议在网络中传播。根据网络的不同,签名交易可能无限期地停留在内存池中,直到满足其执行条件。这对于那些交易费用(每单位计算价格)低于市场范围的交易尤为明显。在极端情况下,如果网络条件不支持其包括在区块中,这些交易可能需要几天或几周才能执行。
这种情况在Solana上是不可能的,因为Solana不仅没有内存池的原生概念,而且所有交易消息都必须包括一个最近的blockhash。开发人员可以通过向getLatestBlockhash方法发送JSON RPC API调用轻松请求最近的blockhash。此blockhash嵌入在交易消息中,在150个时段内有效,约为1分钟,考虑到每个时段的目标时间为400毫秒。超过150个时段后,blockhash变为陈旧,并且引用它的交易会被网络丢弃。默认情况下,RPC尝试每2秒转发交易,但一旦最近的blockhash过期,交易将在保证不会在链上执行的前提下被丢弃。
最近的blockhash也可以用作检测和删除重复交易的方式,通常其他网络则要求纳入一个nonce(只使用一次的数字)。尽管开发人员可以在特定的特例场景中为Solana交易添加持久化nonce,但标准Solana交易并不要求包含nonce。
Solana的海湾流系统是可行的,因为所有活跃节点始终提前知道领导者计划。节点在每次时段高度跨越时代(epoch)边界时更新其领导者计划,大约每2天进行一次。一个时代的领导者计划是从前一个时代开始时的分类账状态计算得出的,生成领导者计划的算法流程如下:
来源:Solana官方文档
基于质押的权重确保了更高质押的可信节点有更高的机会更频繁地被选为领导者,而质押较低的节点则被选中的频率降低或者根本不被选中。
基于质押的资源分配是Solana核心协议中的一个反复出现的主题,涵盖投票奖励、涡轮树、领导者计划和gossip网络*。即使海湾流也采用了质押加权,稍后将在本文中讨论。
*Solana也有一个gossip网络。该网络不用于交易;它的作用是作为控制平面,分发关于区块链状态的元数据,如节点联系方式、地址列表和可用端口。
海湾流的第一次重大更新是在2022年底进行了QUIC网络协议的采用,以处理向领导者发送交易消息的传输。这次升级是由于遭受DDoS攻击和在NFT铸造期间网络被垃圾交易淹没而导致的网络中断。在QUIC与1.13.4版本完全集成到Mainnet-Beta之后,网络的稳定性得到了改善。
之前,Solana依赖UDP(用户数据报协议)将交易从RPC节点发送到当前领导者。虽然速度快且高效,但UDP是无连接的,缺乏流控和接收确认。因此,没有有效的方法来抑制或减轻滥用行为。为了控制网络流量,验证者的交易摄取协议(即TPU的Fetch Stage)被重新实施为QUIC。
QUIC最初由谷歌于2012年开发,努力提供TCP和UDP的最佳之选。它促成了类似于UDP的快速异步通信,但具有TCP的安全会话和先进的流控制策略。这允许对单个流量源施加限制,以便网络能够专注于处理真实的交易。它还具有单独流的概念;因此,如果一个交易被丢弃,它不会阻止其余的交易。谷歌一直是QUIC在Web2中采用的主要推动者。与谷歌服务器的连接使用QUIC建立,这意味着许多谷歌旗下的应用程序都是基于QUIC的,例如Hangouts、Gmail和YouTube。作为旁注,QUIC不是首字母缩写,而是协议的实际名称。
话虽如此,QUIC在Solana的实施的有效性是一个有待讨论的问题。在高网络流量的情况下,验证者可能会因QUIC握手而变得不堪重负。可以公正地说,QUIC并不是当初一些人希望的解决网络拥堵问题的灵丹妙药。需要注意的是,QUIC在区块链行业的采用程度很低,Solana的实施外并没有其他广泛的应用。Solana验证者社区的一些成员对这一协议表示批评,认为QUIC的采用是一个失误。
在2024年初,基于质押的服务质量(SWQoS)作为一种机制被采纳,旨在防止垃圾邮件并增强对Sybil攻击的抵抗。该系统允许领导者优先处理通过质押验证者中继的交易消息。质押较高的验证者被授予相应更大的能力,以将交易消息包发送到领导者,有效减轻来自非质押或低质押节点的Sybil攻击。由于通过QUIC可以验证IP地址,这种分段成为可能,使验证者能够优先考虑并限制特定连接的流量。
通过SWQoS,验证者可以将其基于质押的容量出租给RPC节点。作为回报,RPC节点获得更大的带宽,使其能够在区块中增加交易的纳入率。值得注意的是,领导者的80%容量(2000个连接)保留给基于质押的服务质量,而剩下的20%(500个连接)则分配给其他节点的交易消息。这种分配策略类似于高速公路上的优先车道,司机支付通行费以避免交通拥堵。
目前,作为质押伙伴所需的最低质押量为总质押的0.04%。截至撰写时,总质押为3.84亿SOL,将该最低要求设定为15360 SOL。
SWQoS通过提高交易转发到领导者的要求并减少垃圾邮件攻击的有效性,对Solana生态系统产生了重大影响。这一变化鼓励高流量的应用程序进行纵向整合。通过运行自己的验证者节点,应用程序可以确保优先访问领导者,从而增强其交易处理能力。在Helius,我们自豪地作为网络上凭质押量排名前列的车焦之一,确保了更广泛的交易纳入率。了解更多关于与我们进行质押的信息,请查看我们详细的质押指南 这里。
本文不会遗漏Jito,考虑到目前超过80%的网络质押 使用Jito验证者客户端,增加了交易通常到达领导者的更多复杂性。Jito-Solana验证者客户端(GitHub)是Agave客户端(GitHub)的一个分叉,最初是Solana Labs客户端,它引入了一种协议外的块空间拍卖,并允许验证者获得额外的经济激励作为小费。
由于对Jito客户端的全面检查超出了本文的范围,我们将分析的范畴限制在Jito客户端如何影响交易通过海湾流的正常流动。交易有两个可能的路线——它们将流向一个成对的验证者,然后再到当前的领导者(质押加权路径),或者直接转发给领导者(开放连接路径)。在这两种情况下,如果领导者正在运行Jito-Solana客户端,这些交易将首先发送到Jito中继器(GitHub),这个开源软件充当交易代理路由器。
网络中的其他节点并不知道Jito中继器;它们会将交易发送到领导者选择的地址和端口配置,作为其ingress_socket
。在将交易转发给领导者之前,中继器会延迟200毫秒,这一“速度障碍”机制减缓了进入交易消息的流动,并启用高效的离散时间拍卖。200毫秒后,中继器会乐观地释放交易,而不考虑拍卖结果。
Jito之前提供了一种典范的协议外内存池服务,但现在已被弃用。当Jito-Solana验证者成为领导者时,搜索者仍可以提交原子执行的交易组,称为“交易包”,用于不依赖内存池的其他类型的MEV交易,例如套利交易和清算。
要了解更多信息,请参阅我们Helius的博客文章 这里,提供了关于Solana MEV的介绍。
在本文中,我们考察了Solana的海湾流的各个方面,包括QUIC网络协议、基于质押的服务质量以及Jito验证者设置。我们将海湾流与更传统的内存池架构进行了比较,概述了Solana方法在提高效率和降低延迟方面的好处。
毫无疑问,海湾流将继续演变。Solana协议及其更广泛的生态系统正在快速发展,重大升级已在预期之中。举例来说,Solana联合创始人Anatoly Yakovenko强烈支持实现多个并发领导者。多个并发领导者将允许全球多个节点同时为用户事务排序,从而减少延迟并消除在交易添加到区块链之前需要进行最坏情况下的全球往返旅行的必要。
Solana不会停滞不前,整个协议和海湾流都期待着一个令人兴奋的未来。因此,开发者应预见到未来会有更多的更新和优化。
如果你阅读到这里,感谢你!考虑加入我们在Discord的社区,关注我们在X上的账号,或在下面订阅我们的邮件列表。
特别感谢Jacob Creech和0xIchigo对本文早期版本的审阅。
- 原文链接: helius.dev/blog/solana-g...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!