权益加权的服务质量:你所需要了解的一切

  • Helius
  • 发布于 2024-06-09 17:46
  • 阅读 66

本文介绍了Solana网络中的Stake-Weighted Quality of Service (SWQoS)机制,该机制根据验证者的质押量来优先处理网络流量,以提高网络的稳定性和效率。文章还详细探讨了SWQoS的工作原理、Solana的交易处理流程、质押连接的设置、SWQoS与优先费用的区别,以及未来可能的影响和信任假设。

22分钟阅读

2024年6月7日

引言

Solana 处于区块链技术的前沿,是一个高吞吐量、低延迟的网络,推动着去中心化网络能实现的边界。然而,这也带来了巨大的挑战。Solana 发展过程中一个关键的时刻是其 2022年4月30日的停机事件,这突显了在处理高交易量和在高负载下维持网络性能时需要更强大机制的需求。

股份加权服务质量 (SWQoS) 是为了应对这一事件而创建的。该机制根据验证者持有的股份优先处理网络流量,确保拥有更多股份的验证者可以以更高的优先级发送交易。SWQoS 的目的是防止低股份验证者通过交易淹没网络,从而增强了 Solana 的弹性和效率。

本文探讨了 SWQoS、Solana 的交易处理模型,以及 SWQoS 如何影响这一模型。还探讨了股份连接的设定及其与优先费用之间的区别。此外,文章讨论了未来的影响,特别是验证者和流动质押代币 (LSTs) 日益重要性、进入障碍以及这个系统固有的信任假设。

本文假设你已了解 Solana 的编程模型和 QUIC。如果你对这些主题不熟悉,建议你先阅读以下文章:

然而,需要时会提供适当的上下文。

什么是股份加权服务质量?

生成的区块

股份加权服务质量 (SWQoS) 是一种根据验证者持有的股份优先处理网络流量的机制。该机制确保拥有更多股份的验证者可以更有效地发送交易,提高他们的服务质量。

考虑到 Solana 是一个股份证明网络,将股份权重扩展到交易性能是自然而然的。简单来说,Solana 使用股份(即与验证者锁定的资金以确保网络安全)来标示验证者的可信度。验证者持有的股份越多,他们就越关心网络的安全性和可靠性。此外,服务质量 是一个网络概念,在该概念中,某些数据包被优先处理,以便它们在网络上的性能更可靠。因此,Solana 通过优先连接路由通过股份质押的验证者来提高其发送交易的性能。

SWQoS 的主要目的是防止低股份验证者通过交易淹没网络,使来自更高质量或更高股份验证者的交易失效。例如,如果一个验证者持有 5% 的总股份,他们可以将 5% 的总数据包发送给领导者。SWQoS 可以视为一种 Sybil 抵抗机制,使恶意行为者更难用“低质量”交易淹没网络。

想象一下,你身处一个热门活动,比如演唱会或游乐园,票数有限。有人可以在普通票的队伍中排队购买票,但这些队伍可能会很长且缓慢。然而,还有 VIP 队伍是为高价客户保留的。这些 VIP 队伍更短、更快,因为它们的访问仅限于满足特定条件的人,如拥有特定会员身份,且在特定时间内保证有一定数量的进入资格。在 Solana 的上下文中,SWQoS 就像这些 VIP 队伍,访问权由验证者持有的股份金额决定。你拥有的股份越多,你获得的 VIP 访问(即优先连接)就越多,从而确保更快、更可靠的票务(交易)处理。

那么,这在实际中是如何运作的呢?首先,重要的是要了解 Solana 如何处理交易。

Solana 如何处理交易

Solana 如何处理交易

Solana 的交易处理单元 (TPU) 高效地处理和执行交易。处理过程通过几个不同的阶段进行,以确保交易被验证、执行并在网络中传播。这些阶段是:提取阶段、签名验证阶段、银行阶段、历史证明 (PoH) 服务和广播阶段。

提取阶段

提取阶段 从客户端接收来自网络的传入交易。它将输入从 UDP 套接字批处理,并将其分类为三个主要套接字:

  • tpu:用于常规交易,如代币转移、NFT铸造和程序交互
  • tpu_vote:用于投票交易
  • tpu_forwards:如果当前领导者无法处理所有交易,则将未处理的数据包转发给下一个领导者。

这些套接字是在 嗅探器 中创建并存储在 ContactInfo 结构体 中,通过各自的套接字进行标记 标记的

提取阶段使用一种机制合并同时接收的数据包,减少了单个数据包处理操作的数量,同时提高吞吐量。当接收到转发的数据包时,它会用 FORWARDED 标记来确保在后续阶段能够正确识别。如果节点不是当前领导者,则这些转发的数据包会被丢弃,以防止不必要的处理。然而,如果节点是领导者,则会处理这些数据包。

提取阶段创建无界通道(例如,packet_senderpacket_receiver)将交易传递到下一个阶段,即签名验证阶段。这些通道将 TPU 的各个阶段解耦,允许它们并发操作而不互相阻塞。unbounded 函数创建一个容量无限的通道,以确保数据包不会因为通道溢出而丢失。

交易在转发到签名验证阶段之前会被批量处理为 128 个数据包的组。此批量处理有助于更高效地处理交易,并减少处理单个数据包的开销。

请注意,提取阶段在多个线程上运行以处理高吞吐量。每个线程负责一个特定任务,如接收数据包、处理批量和转发交易。使用 streamer::receiver 函数为每种套接字类型(即 tputpu_votetpu_forwards)创建一个线程。每个线程监听其分配的套接字,处理传入的数据包,并通过适当的通道将其发送。

通过高效管理数据输入和分类交易,提取阶段为 Solana 的 TPU 中所有后续处理阶段打下了基础。

签名验证阶段

签名验证阶段是 Solana 的交易处理管道中的第二个阶段。确保交易完整性和真实性至关重要。

在此阶段,TPU 通过无界通道从提取阶段接收批量交易。此处的主要任务是使用 Ed25519 签名方案 验证交易签名。这一加密验证确认了涉及账户的正确所有者已签署交易。

签名验证阶段的设计高度性能化,利用现代 CPU 和 GPU 的并行处理能力进行签名验证。默认情况下,所有处理由 CPU 完成。然而,由于它的并行化特性,GPU 卸载在存在性能库时显著加速处理过程

该过程始于 new 函数,该函数初始化签名验证阶段并设置必要的接收通道以接收来自提取阶段的数据包。verifier 函数 负责接收括号并验证签名。它处理去重,丢弃过多数据包,并验证其余数据包。该函数使用 ed25519_verify 签名验证方法。在交易量高的时期,会发生负载削减。这是签名验证阶段会丢弃过多的数据包的情况。通过按其源 IP 地址对数据包进行分组,将每个地址最大处理的数据包数进行配置

签名无效的交易将被标记并丢弃。此丢弃过程确保仅有效交易进入后续阶段,防止欺诈或错误交易进入下一阶段。

在签名验证后,有效交易通过另一组无界通道传递到下一个阶段(即银行阶段)。这确保了各个阶段保持解耦并可以并发操作。请注意,此阶段在多个线程中运行,每个线程处理一部分交易,验证签名并执行去重和削减。

银行阶段

银行阶段

银行阶段 是 Solana 的交易处理管道中的第三个阶段。此阶段至关重要,因为这是交易被执行并应用于当前账本状态的地方。银行阶段 leverages Solana 的独特 Sealevel 运行时,enable高吞吐量的并行交易处理。

银行阶段有六个线程——两个专门用于处理来自 TPU 或嗅探器的投票交易,四个专门用于非投票交易。每个线程独立工作,从 SigVerify 以批量形式接收套接字的数据包。每个线程从这一共享通道中提取交易,将其存储在本地缓冲区中。本地缓冲区充当优先队列,动态更新以反映交易状态和网络需求的实时变化。

对这些交易的处理取决于验证者在领导者日程中的位置。如果验证者即将成为领导者,它会将数据包转发给即将成为领导者的验证者并丢弃它们。当验证者越来越接近于成为领导者时(直径20个槽),它继续转发数据包但保留它们,以便即将成为领导者的验证者未能处理这些交易时的保留。

每个线程在区块生产过程中从其本地队列中提取前 128 个交易进行处理。该过程涉及锁定、检查、加载、执行、记录、提交和解锁等步骤。

银行阶段使用多迭代器方法批量处理交易。该方法允许在数据集中同时遍历,将交易分组成无冲突的批次。交易首先序列化到基于优先级的向量中。然后,多迭代器在交易没有冲突的位置放置迭代器,创建 128 个交易的批次。冲突的交易会被跳过。解决后,它们将被包括在后续的批次中。形成批次后,交易会被执行。成功的交易将记录在历史证明服务中,并通过 Turbine 广播到网络中。

历史证明 (PoH) 服务

历史证明 (PoH) 服务是在 Solana 的交易处理管道中的一个基本组成部分。它提供了一种可验证的方式来跟踪时间和订单事件,从而确保交易的高效和安全排序。它通过哈希链生成加密序列,作为交易的时间戳。这个连续的哈希链创建了一个历史记录,证明两个事件之间的时间经过。

PoH 服务确保所有网络参与者可以在不需要中心时钟的情况下达成对交易顺序的共识。它还帮助在整个网络中同步验证者。它支持 Solana 的领导者选举过程,通过提供可靠的时间戳来确定何时一个验证者应该成为领导者并生成下一个区块。

PoH 服务首先初始化一个种子值,然后生成哈希序列。当接收交易时,它们会以 PoH 序列中当前哈希的形式进行标记,从而为它们提供唯一的时间戳。验证者随后验证哈希序列以确认交易的顺序和时间。

要了解更多关于历史证明的信息,请阅读我们的文章 历史证明、股份证明、工作量证明 — 解释。如果密码学听起来像外语,我们还建议你阅读我们的文章 密码学工具 101 — 哈希函数和梅克尔树的解释

广播阶段

广播阶段是 Solana 的交易处理管道中的最后一步。它负责将已验证和确认的交易分发到网络的其余部分。

一旦交易在银行阶段被处理并被提交,它们就会形成条目。这些条目随后被打包成称为碎片的数据结构。广播阶段对这些碎片进行序列化、签名,并生成擦除代码以增强数据完整性和恢复。碎片通过称为 Turbine 的结构化树状传播过程发送给同行。这是一个高效且冗余的分发过程,擦除编码允许验证者重建缺失或损坏的数据。

欲了解 Turbine 的更全面细分,请阅读我们的文章 Turbine:Solana 上的区块传播

SWQoS 的交易生命周期

与其他区块链不同,Solana 并没有一个存储交易的池,而是将交易直接路由到当前的领导者,并由其 TPU 进行处理。用户通过钱包或应用程序以直接或间接的方式创建交易,并将其提交到通过 JSON RPC APIRPC 节点。这些节点充当用户与 Solana 的验证者之间的中介。重要的是,它们 不应在网络中拥有任何股份。也就是说,RPC 节点是未质押的、非投票的,因此非共识的。

与领导者建立的连接现在是通过 QUIC 进行的。QUIC 已经被加入到插入用户交易的端口中,以取代 Solana 的 TPU 的 UDP。由于 QUIC 需要握手,可以限制某个参与者的流量,以便网络能够专注于处理真实交易并过滤垃圾邮件。当然, 这就是实施 QUIC 的初衷,而其目前的有效性在本文中将不再讨论。值得注意的重要事项是,连接是通过 QUIC 与领导者建立的。

连接分为两类:

  • 500 个可供任何 RPC 节点访问的开放连接
  • 仅限于质押验证者可访问的 2000 个股份加权连接。根据所持股份,验证者获得这些连接的相应份额

为了使 RPC 有效地中继交易,它必须与质押验证者对等。由于 RPC 在网络中没有股份,验证者需要虚拟扩展他们的股份。验证者可以使用 --staked-nodes-overrides 标志将其质押连接的一部分分配给特定的 RPC 节点。

验证者必须通过使用 --staked-nodes-overrides 标志指定 YAML 文件路径来配置他们的股份加权连接。YAML 文件包含如下形式的映射:

代码

staked_map_id:
    <pubkey_of_RPC>: 80000000000000000

每个给定 RPC 身份的公钥都需要一个以 lamports 为单位的值。此值指定你希望分配给 RPC 身份的股份权重。例如,如果你指定一百万个 SOL,你分配给它们的股份是将一百万个 SOL 除以总的活动股份。本质上,你是给 RPC 节点提供质押连接,就好像它是拥有这么多股份的验证者。你在说:“在我的局部视图中,当与我的验证者交流时,请将此 RPC 身份视为持有 x 数量的股份。”请注意,此设置不要求验证者重启——可以对文件进行更改并动态重新加载。

此外, Jito 中继器支持质押节点覆盖标志。建议在与质押节点相同的机器上运行中继器以优化性能。

要使用这些质押连接,RPC 操作员必须使用 --rpc-send-transaction-tpu-peer 标志,这需要质押验证者 TPU 的 IP 和端口。TPU 端口通常在动态端口范围加三,如在嗅探器中找到的。就 Jito 而言,流量将发送到由操作员运行的中继器,因为无法使用公共的 Jito 中继器。RPC 操作员应检查他们的日志,以查看类似 solana_quic_clientwarm 的条目以验证他们的连接。请注意,此设置要求 RPC 节点运行 v1.17.28 或更高版本的 Agave 客户端,以支持必要的标志。

总体而言,SWQoS 的交易生命周期在很大程度上与常规交易保持相同。用户通过 RPC 节点创建和提交交易,然后将其发送给领导者。然而,当 RPC 节点与质押验证者对等并使用 --rpc-send-transaction-tpu-peer 标志时,交易是通过质押连接发送的。总结如下:

  • 交易创建:用户使用他们的钱包、应用程序或通过编程创建交易
  • 提交到 RPC 节点:交易通过 JSON RPC API 提交到 RPC 节点
  • QUIC 连接:RPC 节点与领导者建立 QUIC 连接,根据其配置利用开放或股份加权连接
  • 股份加权 QoS:如果 RPC 节点已与质押验证者对等,则使用该验证者的质押连接,从而提高交易性能
  • 转发给领导者:交易通过这些质押连接发送给领导者,延迟或丢失的可能性更低
  • 交易处理:上述交易通过 TPU 处理,由领导者执行

SWQoS 通过确保质押验证者及其对等的 RPC 节点更好地访问领导者来改善交易生命周期,从而减少因网络拥堵而延迟的可能性。该机制与优先费用相结合,以提高交易性能。

SWQoS 与优先费用:明确区分

网络拥堵

在网络拥堵的情况下,SWQoS 确保高股份验证者的交易不太可能被延迟或丢弃。这个系统可以,并且通常被类比于一条收费公路,其中拥有更多股份的验证者能够使用更少拥堵的路径,类似于高速公路的多个车道。以上面的图片为例。在科罗拉多州,司机可以在交通中停留,或者支付额外几美元以进入收费车道。 快速车道 是科罗拉多州的高端车道网络,价格会不断调整以保持交通的顺畅流动。因此,我们可以将 Solana 的质押连接比作科罗拉多的快速车道,因为它们都是旨在减少优先用户的拥堵通道。

然而,有必要区分 SWQoS 与 优先费用,因为收费公路的常见类比可能会模糊这两个概念之间的区别:

  • 优先费用在银行阶段生效,当领导者根据支付的费用优先处理交易时。其想法是,支付更高费用的交易将在更早的时间被处理,确保愿意支付更多费用的用户更快执行。
  • SWQoS 改善了连接访问,并不影响交易在领导者交易队列中的优先处理。SWQoS 确保质押验证者拥有更好的网络访问,减少了因网络拥堵而导致交易被延迟或丢弃的可能性

虽然优先费用影响交易在领导者队列中的排序和处理,但 SWQoS 确保来自质押验证者的交易有优先路径到达领导者。两种机制的目标都是提升网络性能,但在交易生命周期的不同阶段发挥作用。

SWQoS 战争

SWQoS 战争

SWQoS 有望成为未来 Solana 网络基础设施的基本组成部分。它将通过优化交易处理和优先处理来自质押验证者到领导者的连接而显著影响生态系统。 这一点我无法强调得够

可以说,当网络不拥堵且交易不那么紧急时,使用高股份验证者的优势开始减弱。这是因为网络有足够的能力快速处理交易,无论其背后股份权重的高低。 然而,随着 Solana 随着大规模采用而需求增加,网络可能不会一直有足够的能力处理每一笔交易而没有延迟或偶尔被丢弃。这并不是说 Solana 无法扩展,因为可以说它是最有可能的可扩展区块链之一。如果需求增长,SWQoS 将继续对卓越的用户体验至关重要。

反过来,验证者的角色变得更加重要,导致激烈的竞争与创新,以提供尽可能好的服务。显然,这难道不意味着每个人都想建立自己的验证者?

验证者与流动质押代币 (LSTs)

趋势显而易见:每一个严肃的 Solana 协议都将运行一个验证者。这是因为它将是支持其应用程序的必要条件。如果你有兴趣运行自己的验证者,我们在 Helius 博客上提供了 以下指南,介绍如何入门

我们正处于 Solana 上 LSTs 的巨大寒武纪爆炸的边缘,这被 SWQoS 进一步加剧。在这个月,总质押(即原生 + LST) 已上涨大约 320 万 total stake (i.e., Native + LST) is up roughly 3.2 million。 LST 的市场价值目前在 6 到 9 亿美元之间。像 Sanctum 这样的协议正在成为重要的参与者,因为它的平台使得验证者和应用程序能够创建自己的 LST。此外,Picasso Network 在 Solana 上实现了再次质押,促进了 LST 更大的可用性和收益。因此,创建一个具有附加实用性的 LST 的能力已经到来,并且势头强劲。

然而,必须考虑一些潜在的进入障碍。

进入障碍

尽管其潜在好处,SWQoS 引入了几个进入障碍。具体来说, 最低质押要求 已在 Agave 客户端的 v1.17.31 中 引入,以将低质押验证者视为未质押的对等者。问题在于,低质押的质押节点可能会利用质押连接,获取不成比例的带宽。现在,低于以下公式的股份比率将被视为未质押合格节点:

代码

stake / total_stake < 1 / (max packet per 100ms)

这意味着,从现在开始,质押少于大约 15000 SOL 的客户将被归类为未质押验证者。这个限制将进一步增加运行 Solana 验证者的财务和技术要求,潜在地排除较小的参与者和独立验证者参与网络。这项要求换算成的价值约为 300 万美元,乍一看是很多。

然而,正如 Austin Federa 指出的,这一门槛仅仅是总股份的 1/25,000, 这在可争论上是较低的。此外,如果竞争质押的大多数验证者不断提高其性能,以提供最佳服务并最大化自身回报,这将对整个网络有利。 Toly 描述的正是 SWQoS 的整体目标

在 Helius,我们正在降低所有付费方案的进入障碍,通过 Helius 推荐的费用发送交易。也就是说, 任何通过付费共享计划发送交易的用户,如果他们发送的费用高于我们提供的推荐值,也将被路由到共享的质押连接 优先费用 API。我们还通过在我们的 Node.jsRust SDK 中添加的新智能交易功能,简化了这个过程。从最基本的层面而言,无论使用哪个 SDK,用户提供其密钥对和他们希望执行的指令,其余的由我们处理。现在,用户每月只需 50 美元 的开发者计划,即可访问共享的质押连接。请注意,我们还提供专用质押连接,确保质押连接带宽,推荐给企业、量化公司和交易公司。我们有 这一表格 供所有对专用质押连接感兴趣的人填写。

重要的是要注意,股权可能会在由大型协议和可收取 0% 佣金的 RPC 提供商运行的验证者之间开始集中。拿 Helius 来说;我们可以在其他地方赚钱,以降低运行验证者的成本。我们这么做是为了通过让 Solana 的原生团队运行顶级验证者来改善网络的去中心化,同时有更大的访问质押连接以改善用户体验。

信任假设

如果股份可能集中在由大型协议和 RPC 提供商运行的验证者之间,那么与可信的验证者质押是至关重要的,使它对 Solana 的利益考虑在内。SWQoS 引入了几个信任假设。

一个主要的信任假设是验证者与 RPC 节点之间需要高度的信任关系。如上所述,SWQoS 允许领导者识别并优先处理来自质押验证者的交易。由于 RPC 节点是未质押的、非投票的且非共识的,因此它们无法像质押验证者一样直接从优先交易中受益。因此,必须在验证者和 RPC 节点之间建立可信关系,以利用 SWQoS 的好处。

这种信任关系至关重要,因为启用 SWQoS 涉及共享敏感的网络配置,并允许 RPC 节点影响交易的优先级。验证者必须确保与之对等的 RPC 节点在网络中行事符合最佳利益,而不是恶意地使用扩展的股份。验证者和 RPC 节点之间应事先达成协议,并共同理解如何使用质押连接。理想情况下,这些设置对象应是具有高度信任的实体,例如长期合作伙伴之间或同一组织内。

目前,这些关系往往是隐蔽的。而展望未来,我不认为 RPC 操作员会与验证者就质押覆盖进行协商。需要更大的透明度,以使普通用户了解他们支持哪些 RPC 和验证者。这种需求会随着时间的推移而增多。

结论

SWQoS 有望彻底改变 Solana 的网络基础设施。尽管它提供了许多好处,包括增强的交易性能和改善的 Sybil 抵抗能力,但它也引入了新的挑战和信任假设,这些假设必须谨慎处理。虽然 SWQoS 旨在优先处理由质押验证者发送的交易,但目前没有任何东西强制执行这一优先级。严肃的验证者经常会覆盖默认设置,甚至可能会阻止某些参与者。这突显了验证者与 RPC 节点之间信任与透明关系的必要性,以确保公平有效地使用 SWQoS。尽管如此,它的实施标志着 Solana 向有效和弹性网络发展的一大步。

在整篇文章中,我们探讨了 SWQoS 以及它如何影响交易处理。我们还讨论了重要的区别,例如 SWQoS 与优先费用之间的区别。此外,我们探讨了验证者与 LSTs 的崛起、潜在的进入障碍和相关的信任假设,为未来讨论提供了重要的起点。理解所有这些元素对于有效利用 SWQoS 及进一步提升 Solana 至关重要。

如果你阅读到了这里,感谢你,匿名者!请你在下面输入你的电子邮件,以便你不会错过有关 Solana 最新动态的更新。准备深入了解吗?探索 Helius 博客 上的最新文章,继续你的 Solana 之旅吧。

额外资源

  • 原文链接: helius.dev/blog/stake-we...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Helius
Helius
https://www.helius.dev/