本文详细介绍了Solana区块链如何通过采用QUIC协议来减少网络垃圾信息,提升网络性能。文章对比了TCP、UDP和QUIC的工作原理,并探讨了QUIC在Solana中的具体实施及其对网络稳定性和吞吐量的改善。
12分钟阅读 2023年9月18日
Solana 是当前市场上速度最快、可扩展性最高的区块链。它以交易速度而闻名,使其成为各种用例的完美链。尽管取得了这些成就,Solana 的网络仍受到关于停机的恐惧、不确定性和怀疑(简称 FUD)的影响。虽然这些 FUD 过去确实是一个合法的关注点,但目前是没有根据的。为什么?Solana Labs 的工程师们在过去的一年中一直致力于各种网络升级,最引人注目的就是用 QUIC 替代 Solana 的自定义原始基于 UDP 的协议来接收交易。
在本文中,我们将研究网络协议的机制,包括 TCP 和 UDP,并探讨 QUIC 如何改善它们。然后,我们将把焦点转向 Solana,讨论其特定的优势。本文旨在为你提供全面的理解,说明为什么这一网络升级对 Solana 来说是一个重要的技术里程碑。
2022年12月13日,Solana 基金会发布了一篇题为“Solana 网络升级”的新闻文章。在这篇文章中,他们概述了正在进行的多个网络升级及其各自的进展。这些升级如下:
QUIC
基于权重的 QoS
费用市场
交易大小增加
紧凑的投票状态
Solana 过去经历停机的一个大原因是由于垃圾邮件。一些例子包括:
自从实施 QUIC 以来,Solana 没有报告与垃圾邮件相关的停机情况。这标志着 QUIC 是改善 Solana 网络流量和数据摄取的一个重要成就。在我们学习 QUIC 之前,我们必须首先探索网络协议的机制。对网络基础知识更深入的理解使我们能够认识到 QUIC 对 Solana 网络的真正影响。
网络协议是一套关于如何在同一网络上的设备之间发送数据的既定规则。网络协议使连接的设备能够相互轻松通信,无论它们的内部结构、结构还是设计如何。
想象一下,你和你的朋友坐在巴黎的一家餐厅对面。你们都决定说法语,因此你们的对话非常流畅。你们共同决定说法语是就一套语法规则、词汇和发音达成的共识,双方都理解。
网络协议对连接的网络设备的运作方式类似,就像法语作为你在巴黎餐厅对话的“协议”。选择使用 TCP、UDP 还是 QUIC 是同意遵循一套既定规则和惯例来交换信息的决定。遵循特定的网络协议确保连接的设备可以相互理解,而不会产生混淆。
传输控制协议(TCP)是用于在网络上两个端点之间发送数据流的标准化通信接口。Vint Cerf 和 Bob Kahn 创建了传输控制程序(Transmission Control Program),这是一个单一的协议,它被划分为由 TCP 和互联网协议(IP)组成的模块化架构。整个套件被称为 TCP/IP。在这种情况下,我所指的是传输控制协议,而 不是 整个套件,当我使用缩写 TCP 时。
TCP 是面向连接的;在发送数据之前,它需要在客户端和服务器之间建立连接。TCP 使用三次握手建立连接:同步(SYN)、同步确认(SYN-ACK)和确认(ACK)。你可以将 SYN 想象为伸出手来握手并询问对方是否准备好交谈;SYN-ACK 则是对方握住你的手,表示他们准备好交谈并询问你是否希望继续;而 ACK 则是你回握对方的手表示你想继续交谈。在这里,建立了会话。双方都知道彼此已经连接,他们都同意可以共享信息。
TCP 将数据划分为数据包,并通过网络发送。每个数据包中都添加了少量数据。这些额外的数据包括一个序列号,用于检测丢失或错位的数据包,以及一个校验和,允许检测数据包中的错误。
当对话被打断时,我们会请对方重复一遍,以确保我们正确听到了。TCP 以类似的方式处理中断,使用自动重复请求(ARQ)。出现问题时,ARQ 会告诉发送方重新发送损坏或丢失的数据包。然后,TCP 通知用户降低其数据传输速率,并限制未确认数据包在传输中的数量。一旦错误得到解决,TCP 将采取机制来避免拥堵,并逐步提高速度。
TCP 并不是所有用例的最佳协议,因为它会对所有流量进行排序。因此,如果一部分数据丢失或损坏,则后面的所有数据包都需要等待。但如果我们不需要等待呢?
用户数据报协议(UDP)是用于通过网络传输数据的标准化通信接口。与 TCP 不同,UDP 是无连接的,不保证数据包的传送、顺序或重复。UDP 没有任何握手对话,这使得数据传输容易受到底层网络的不可靠性影响。这使得 UDP 比其他协议更快,因为它不花时间与目标建立连接。然而,这也导致人们称这个协议为“不可靠数据报协议”。
UDP 通过在网络上发送数据报来工作。数据报是一组更自包含的数据,其中包含用于从源到目的地路由的信息。由于这些信息,数据报不依赖其他数据报进行路由。这些数据报由一个头部和数据组成。头部包含四个字段,每个字段都是16位长:一个可选的源端口,一个目标端口,一个长度,以及一个可选的校验和。发送过程如下:
把 UDP 想象成在一个忙碌的房间里与某人交谈。你对着这个人大喊,而不担心他们是否听到了你或者等待他们的回应。在这里,你希望快速传达信息,而不进行任何拖延的对话。这是有风险的,因为他们可能没有听懂你所说的每一句话,但这可能是非常有效的。
当你有更可靠的东西,比如 TCP,为什么还要使用无连接的通信协议 UDP 呢?UDP 对于时间敏感的应用程序或可以接受一定数据丢失的情况极为有用。在与朋友玩视频游戏时,失去几帧数据远比持续的暂停和缓存要好得多。UDP 还用于 VoIP 电话、域名系统(DNS)查询以及监测和记录。
QUIC 是由 Google 的 Jim Roskind 于 2013 年设计的现代传输层协议。它结合了 TCP 的可靠性和 UDP 的低延迟优势,为快速和安全的异步通信创造了一个优化的环境。QUIC 的独特之处在于,它将安全会话和先进的流量控制策略(TCP 的特征)融入到更灵活和快速的 UDP 框架中。
在 QUIC 中,连接设置通过将加密密钥和协议细节的交换集成到其初始握手中得以简化,并且该握手始终使用传输层安全性(TLS)进行加密。该协议通过 UDP 实现多路复用连接,允许多个独立的数据流到达其端点而不相互影响。QUIC 独立控制每个数据流的流量,确保即使一个流遇到错误,也不会阻碍其他流。这有助于防止首位阻塞(即,第一包数据在队列中被阻止,导致后续数据包无法到达),而这是 TCP 连接经常受到困扰的问题。
如果一个数据包丢失或损坏,QUIC 会智能地重新传输数据,保持通信的完整性和连续性。此外,QUIC 对网络环境的变化具有很强的鲁棒性。每个数据包携带一个连接标识符,唯一地标识到服务器的连接,无论数据包的来源。因此,可以通过发送另一个数据包重新建立连接,因为每个数据包都包含这个 ID,这意味着原始连接仍然有效。这意味着比喻地说,如果你移动到另一个房间,你的对话不会中断并会无缝继续。
想象一下,你又一次处于那个忙碌的房间,试图与你的朋友交谈。这次,你配备了加密的对讲机,可以进行安全和清晰的交流。当你的对话涵盖各种话题时,你的朋友以一个大拇指的手势确认每条消息。在你看到他们困惑的表情后,你会重复任何未理解的消息,以确保没有信息在翻译中丢失。如果你或你的朋友移动到另一个房间,对话也将保持不中断。这就是 QUIC 的本质——强大、灵活和高效的通信。
QUIC 为 Solana 提供了许多优点,即:
QUIC 已经添加到摄取用户交易的端口中。这允许对参与者的流量施加限制,以便网络可以专注于处理真实的交易。QUIC 已在 Solana 上运行,并在 1.13.4 版本完全采纳到 Mainnet-beta。其集成后,网络的稳定性和吞吐量均有明显改善。
尽管取得了这些进展,但最近的网络拥堵引发了关于 QUIC 的计算效率与 Solana 先前 UDP 实现之间的辩论。批评者指出,原始的 UDP 方法允许验证者专注于交易处理,而不是管理握手垃圾邮件和加密。此外,Solana 的实现中,密钥的交换和验证并不是初始握手的一部分。Solana 利用 QUIC 的选项发送“挑战数据包”来验证 IP 地址。这一挑战的全部目的在于避免在握手的第一步进行证书验证,而是在 IP 验证后在握手的第二部分进行。Solana 是否由于垃圾邮件或 DDoS 攻击而发生停机仍然存在争论, 鉴于近期在二月份发生的网络故障被认为可能是拒绝服务。
随着网络的发展,不断审查和改进对网络的实现是非常重要的。QUIC 旨在解决许多 TCP 和 UDP 的问题,但回过头来看,其有效性存在争论。一个重要的考虑是考虑某些东西在硬件上的运行情况。TCP 在硬件上的表现通常优于 QUIC,这是因为它的简单性。可以说,基于AES 指令集的话,基于 TCP 的协议相比 QUIC 可能会拥有更高的吞吐量,并且在 TPS 上表现得更高效。
值得注意的是,Jump Crypto 的团队正在推动 QUIC 的边界。该团队在开发Firedancer,一个新的 Solana 验证者客户端时,创造了自己的强大且可扩展的实现。Firedancer 的网络从头开始设计,旨在利用接收侧扩展,这是一种硬件加速的负载均衡。该并行架构允许每个 CPU 核心高效处理一部分进入的流量。该团队已经在推特上发文:
关于 Firedancer 的 QUIC 技术里程碑的演示和讨论可以在这里找到。
恭喜你!在本文中,我们探讨了网络协议的基础知识,重点介绍了 TCP 和 UDP 的角色及其演变为 QUIC。我们还审视了 Solana 对 QUIC 的实现,强调了它在增强网络方面的关键作用。虽然 Solana 对垃圾邮件和 DDoS 攻击的网络韧性随着 QUIC 得到了改善,但网络的增长揭示了其计算效率和实现细节方面的挑战和争论。
QUIC 体现了 Solana 的核心目标,即促进高吞吐量和低延迟的网络。其多路复用和数据丢失恢复能力使 Solana 在性能和可扩展性讨论中处于领先地位。Firedancer 团队的实现展示了 QUIC 的适应性,突显出在满足网络不断变化的需求方面定制优化的潜力。
作为一个 Solana 开发者,了解 QUIC 可以帮助你在从应用程序架构到交易错误等主题上做出更明智的决策。Solana 正在不断发展,QUIC 也是如此。跟上最新的网络变化是构建高效能应用程序在 Solana 上的最佳方式。即使你不是开发者,对 QUIC 有更技术性的理解也能帮助你理解 为什么 Solana 是一个以速度和可扩展性著称的高效能区块链。
如果你读到了这里,谢谢你!请务必输入你的电子邮件地址,以便你不会错过有关 Solana 上新动态的更新。准备好深入了解了吗?探索Helius 博客上的最新文章,继续你的 Solana 之旅,今天就开始。
- 原文链接: helius.dev/blog/all-you-...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!