Solana 费用的理论与实践

Solana 费用的理论与实践

介绍

Solana 的费用结构旨在维持网络的性能,同时平衡供需的不均匀冲击。任何区块链上的费用都是为了防止垃圾邮件和激励验证者。在 Solana 上,其中一些费用会根据网络状况动态调整,从而使网络能够更准确地对给定时间的需求进行定价。

Solana 的费用是一个热门话题,“本地费用市场”为 Solana 提供了一些表达能力,可以更准确地对区块空间和特定账户进行定价。当前的实现远非完美,但确实对每个帐户的订购提供了宽松的保证。虽然 Solana 仍处于早期阶段,但网络中更多的权益和活动需要对任何协议内更改(例如费用模型更改)的一阶和二阶影响进行更深入的讨论和分析。

在本文中,我们将从理论上讨论费用以及它们在链上的体现方式。尽管有些人批评 Solana 过于中心化,并且通过其 QoS 和Turbine的权益加权设计来集中力量,但即使多年来,这与现实的表现之间仍然存在明显的差异。同样,我们的目标是全面分析费用如何通过链上行为体现。

理论上的费用

Solana 的费用系统由两部分组成:基本费用和优先费用。一般来说,每个费用组成部分理想地服务于以下目的:

  • 基本费用:使用网络资源的权利
  • 优先费:确定领导者交易队列中的顺序

基本费用

基本费用目前设置为每个签名 0.000005 SOL(5,000 个lamport),构成交易成本的基础。这是地址为了获得网络资源的使用权而支付的费用。这是一次性向网络支付的一次性付款,无论执行交易所使用的实际资源量(或者交易是否执行)。 Solana 事务预先请求指定数量的计算单元 (CU),如果超过此数量,事务将失败。这意味着开发人员目前几乎没有任何经济激励来最大限度地减少计算单元请求。

优先费用

此外,用户可以支付优先费来加快交易速度,从而提高被纳入区块的可能性。这是对用户付费优先权的非确定性保证。改进事务确定性的努力正在进行中,预计将在 1.18 版本中对调度程序进行重大更改。

附带说明一下,投票交易没有相关的优先权费用,并且与标准交易的处理方式不同。

验证者包含优先费用交易的动机存在于运行时之外。领导者收取 50% 的优先费,以将交易包含在其区块中,其余 50% 被烧毁。

如今,大多数验证器 (80% 以上) 运行 Solana Labs 或 Jito-Solana 客户端的未修改版本。这意味着这些验证器将“区块生产”外包给默认调度程序(Solana 上的一些人将“区块排序”称为“区块生产”,而这在以太坊上意味着完全不同的东西)。一些团队修改了客户端代码并实现了更复杂的调度程序,可以更好地控制订购流程,使一些团队能够通过重新排序或夹入交易来提取 MEV。

优先费不确定性

调度程序的当前实现并不能保证具有较高优先级费用的交易将包含在给定的块中。相反,它提供了一个松散的保证,即具有优先费用的交易更有可能包含在给定的区块中。调度程序的当前实现设置了 4 个执行核心(另外 2 个核心保留用于投票事务)。

每个线程都操作自己的队列,独立地对数据包进行优先级排序,而无需了解其他线程正在处理的数据包。每个线程从开始到结束不断循环,尝试锁定并执行事务。当线程完成当前循环时,它将收集更多数据包并再次启动循环。

因此,您可能正在一个线程队列顶部处理高优先级事务,同时另一个线程可能通过处理涉及同一帐户的事务来结束自己的队列。

调度程序当前和未来实现的具体细节将在单独的文章中探讨。了解优先级费用仅适用于线程内(在其自己的通道内),而不适用于线程间(通道之间),足以了解调度程序远非完美并且表现出“抖动”。

实践中的费用

落地交易

虽然费用是交易能否成功的一个主要因素,但它们并不是唯一的决定因素。例如,交易可能仅仅因为UDP网络数据包丢失而无法落地。在网络活动频繁期间,验证器可能会被超出其管理能力的交易淹没。虽然验证器有能力通过tpu_forwards机制传递多余的交易,但它们只能处理有限的数据量,并且每笔交易只能转发有限的次数(直到区块哈希过期)。权益加权服务质量可以缓解权益较高地址的一些问题,提供预留带宽并增加交易包含的可能性。

交易下降的两个不太常见的原因也存在。第一个涉及 RPC 池内的差异。 RPC 池的一个部分可能会领先于其他部分,从而产生协调问题。例如,如果从更新较快的段中检索交易的最近区块哈希,然后提交到较慢的段,则后者可能无法识别更新的区块哈希,从而丢弃该交易。如果开发人员在 sendTransaction 函数中激活了预检检查,则可以在提交时发现此类问题。

另一个问题是围绕临时网络分叉而出现的。如果验证者在处理其区块时滞后,交易最终可能会出现在少数分叉上,而不会成为规范。当客户端在其交易中引用仅存在于该少数分叉上的最近的Blockhash,然后网络在处理该交易之前放弃该分叉时,该交易将被丢弃,因为无法再找到该区块哈希。

Solana 共识

优先费用

在实践中,我们看到的证据表明,尽管优先权费用远非完美,但它们在宏观层面上正在发挥作用。包含优先费用的交易更有可能被包含在区块中,设置较高优先费用的交易更有可能被包含在区块中。

根据 Helius RPC 数据,我们发现具有优先费用的交易更有可能落地,而且当落地时,它们全面落地的速度更快:

True = 具有优先费用的交易,y 轴 = 交易百分比

1 月 21 日,由于模拟 JUP 空投,平均优先费出现飙升,为下周的实际 JUP 空投做好准备。尽管对区块空间的需求发生了重大变化,但实际用户在交易土地费率和时间方面感受到的变化相对较小。

沙丘

此 UX 主要由 Solana RPC 方法getRecentPrioritizationFees支持,允许开发人员准确确定附加到交易的优先级费用。端点返回过去 150 个区块的优先费用列表,这些费用用于成功完成至少一笔具有相应地址和输入参数的交易。这提供了为优先费设置的最低要求值的快照,并且其用处相对有限。或者,Helius 提供了一个优先费 API,它可以进行额外的计算以提供更好的优先费估算。

虽然优先费在理论上有点像预期的那样,但 1.18 中即将到来的调度程序更改将为包含调度程序改进的交易添加更多确定性。这应该会减少链上的垃圾邮件数量,因为主导策略不再需要向链发送垃圾邮件以包含交易。

基本费用

Solana 的基本费用绝对太低,区块饱和且不动态,导致基本费用无法达到区块空间的市场出清价格。在以太坊上,动态基本费用是通过 EIP-1559 的控制器机制实现的,该机制查看最近的区块并以 50% 的利用率为目标。

Solana 对每个签名 5,000 个 lamport 进行静态定价(通常每笔交易 1 个签名)。这意味着它是无效的费用,因为基本费用并不表示对区块空间和验证器资源使用的需求发生任何变化。这有效地将优先费外化为优先费的基于市场的替代方案,当验证者处理可能永远不会包含的额外交易时,进一步使网络变得拥挤。此外,主导策略是以最低的优先费用提交大量交易。这给所有网络参与者的用户体验带来了巨大的外部性。

沙丘

激励措施

RPC 被激励向下游传递正确的信息,以最低的成本提供最高的交易包含率。与最高质押验证器集成使 RPC 能够更准确地了解网络的当前状态,因为 Solana 的许多机制都是质押加权的。一种共生关系出现了,拥有大量权益和集成 RPC 的验证者可以提高交易处理的效率和可靠性,有可能创建一个反馈循环,进一步巩固最高权益验证者的地位。

此外,RPC(目前被视为零权益验证者)本身将成为权益加权的。 RPC 本身可以在不与验证者合作的情况下寻求吸引权益。应用程序本身运行自己的验证器以实现更多垂直集成的情况并不罕见,从而能够对最终用户体验和交易/MEV 供应链进行额外控制。

尽管经济激励表明存在股权集中化的趋势,但 Solana 尚未看到资本大规模聚集以获得股权加权收益。这可能有多种原因:

  • 个人可能会将本地去中心化最大化视为网络长期收益的主导策略,这主要是由 Solana 的文化和社会层驱动的。
  • Solana 的参与者主要是零售和产消者,对回报不像专业公司那么敏感。随着活动水平和绝对回报的增加,这可能会激励对参与者的人口统计和利率敏感性进行调整。
  • 个人在差异化产品的营销方面没有很好地协调。

结论

在这篇文章中,我们详细描述了 Solana 费用机制的高级理论以及它如何影响链上网络。费用驱动激励,具有很大的外部性,影响 Solana 所有参与者的行为。

Solana 的基本费用和优先费用等机制目前的实施并不完善。基本费用不可调整,并且不能反映当前的供需平衡。这导致网络拥塞和资源分配效率低下等问题。由于当前调度程序的实现,优先级费用表现出一定程度的不确定性。未来的更新,例如预期的调度程序更改,有望为事务处理带来更多的确定性和效率,有可能重塑我们今天观察到的链上行为。

新的提议即将出现,例如写锁定账户的指数费用,其目的是通过任意锁定账户访问来更准确地定价交易成本。围绕动态基本费用机制正在进行更多讨论,该机制可以更准确地对状态访问进行定价。

费用、验证者和 RPC 之间的相互作用是一个复杂的激励网络。从理论上讲,验证者和 RPC 会受到激励来整合并增加其权益权重,这可能会导致人们对中心化的担忧。然而,实际上,Solana 已经成功地维持了一组去中心化的运营商和股权,这可能是由于其社区驱动的治理、技术障碍、经济反激励以及目前主要不是由回报驱动的优化功能。

💡
原文链接:Solana Fees in Theory and Practice
本文由SlerfTools翻译,转载请注明出处。

SlerfTools专为Solana设计的工具箱,致力于简化区块链操作,提供无编程全可视化界面,使发币管理流动性无代码创建Dapp等复杂过程变得安全简单。