本文介绍了Solana区块链的费用机制,重点解释了当前的交易费用模型,包括基础费用和优先费用的设置,以及如何影响网络效率。作者分析了该机制的激励相容性问题及其对网络和用户的影响,并提出了优化费用机制的建议,展望了后续文章的主题。
费用机制是区块链的重要特性。网络维护者如验证者拥有有限资源,因此以反映资源成本的方式对稀缺资源收费是很重要的。费用还为网络的参与者(例如用户、应用开发者和验证者)创造了激励。
在这一系列中,我们将探讨 Solana 当前的费用机制,为费用机制的设计空间进行形式化,并分析一些提出的对 Solana 费用机制的更改。
这篇文章是该系列的第一篇。在这里,我们解释 Solana 当前的费用是如何工作的,重点在基于交易的费用。
以下是理解费用机制所需的 Solana 特定定义。
签名: 每笔交易至少包含一个,通常恰好一个签名。
Lamport: SOL 的最小原子单位。1 SOL 等于十亿 (10^9) lamports。
计算单位 (CU): 每个 Solana-BPF 指令的计算单位,旨在近似执行该指令的成本。类似于以太坊上的 gas 单位。
CU 使用: 执行交易时使用的计算单位数量。仅在执行后可知。
请求的 CU: 由交易指定;如果在执行期间该交易超过了此计算预算,执行将停止并交易失败。每笔交易的最大请求 CU(和使用 CU)为 1,400,000 CUs。
账户: Solana 区块链上的单个状态。
调度程序: 持续的区块构建机制,在 Solana Labs 构建的 Solana 客户端中默认包含。
今天,一笔 Solana 交易包括两个费用:基础费用 和 优先费用。
基础费用为每个签名固定为 5000 lamports (0.000005 SOL, $0.0003 按 $60/SOL 计算);绝大多数 Solana 交易有一个签名。
可选的优先费用在交易中指定,以每请求的 CU 计量的微 lamports 为单位。注意,这不是每使用的 CU,因为使用的 CU 直到交易执行后才知道。优先费用更高的交易由调度程序非确定性优先处理。具体机制在 Solana 交易的生命周期 中描述。
费用在交易执行开始时从费用支付者扣除。如果支付者无法支付所需的费用,则执行将被跳过,交易被视为无效,并且不会被包含。
对于基础费用和优先费用,50% 由领导者保留作为鼓励将交易包含在区块中的激励,50% 被销毁。
在这个 示例交易 中,交易请求 600,000 计算单位,并设置优先费用为每请求的 CU 2500 微 lamports。由于该交易有一个签名,该交易的总费用为 5000 lamports + 600,000 CU 请求 * 2500 微 lamports / CU 请求 = 6500 lamports,或 0.0000065 SOL。
Solana 还收取创建新状态所需的费用,称为租金豁免(遗留术语)。当前租金豁免的成本为每 MB 固定为 6.96 SOL。当新账户创建时,费用分配到该账户;当账户被移除时,其租金豁免费用可回收。
由于基础费用对使用的 CU 和请求的 CU 不敏感,因此基础费用没有激励来优化计算使用,也没有激励请求接近实际使用的 CU。实际上,许多 Solana 交易请求的 CU 远远超过了最终使用的 CU。这在调度程序中造成了低效。
在上述的 示例交易 中,交易请求了 600,000 CU,但使用的未超过 250,000 CU。
虽然优先费用确实包含了减少请求 CU 以及因此减少使用 CU 的激励,但在大多数情况下这种激励较弱,仅在拥堵时期发挥作用。一项简单的修改将是扩大基础费用,要求每请求的 CU 也收取费用。这将激励开发者和交易发送者减少其计算使用,仅请求所需的资源。
机制是 激励兼容 的,如果机制中的所有参与者通过根据其真实偏好行事而获得最佳结果。在费用机制的背景下,这大致意味着验证者通过运行默认的区块构建算法最大化费用,而交易发送者通过根据其真实支付意愿提交优先费用的交易来最大化福利。
Solana 当前的费用机制对于验证者和交易发送者不是激励兼容的。如上所述,交易费用的 50% 被领导者保留,50% 被销毁。由于并非所有费用都分配给领导者,这给交易发送者创造了与领导者共谋的激励:发送者可以选择不指定优先费用以获得优先包含,而是与领导者私下交易,以网络外支付优先费用,从而避免烧毁,同时仍然获得优先权。
理论上,运行这种机制的验证者因而获得更多费用,从而可以为其委派的质押者提供更高的奖励,产生中心化力量。
除了直接垂直整合外,我们现在在市场中看到这种旁道交易的主要方式是通过 Jito 拍卖。运行 Jito-Solana(对 Solana Labs 客户端的修改)的验证者在其出块时间的前半段内打破了持续的区块构建机制,进行区块空间拍卖。
我们尚未在市场上观察到其他此类旁道交易。这是因为:
与其他大多数区块链不同,Solana 要求交易发送者指定执行交易所需的状态。这解锁了并行交易执行和本地化费用市场,其中不同的状态部分根据某个状态的争用程度具有不同的费用。本地状态热点无需在整个区块链上增加争用或费用。
关于 Solana 的一个常见误解是它今天具备本地费用市场。虽然确实支付更高优先费用的交易更可能在区块中更高位置被包含,而且受到争用的状态可能需要更高的优先权,但这一行为是非确定性的,是 Solana 默认调度算法实现的结果。我们将在 Solana 交易的生命周期 中进一步探讨这一点。
特别地,这一行为并不是由共识强制实施的,而由优先费用引起的确定性排序也不保证,无论是通过共识还是调度程序实现。Solana 的持续区块构建和区块传播阻止了确定性排序,除非实施重大更改(例如 确定性排序和异步执行)。
基于历史争用,由共识强制的可预测基础费用用于状态访问,可能提高访问高度争用状态的效率和用户体验。这将增加垃圾邮件的成本,同时激励交易发送者锁定他们实际所需的最小状态数量。但这不会解决垃圾邮件的根本原因,垃圾邮件的根源在于持续的区块构建(因此延迟很重要)和抖动。我们将在本系列的后面部分探讨设计。
由于交易主要根据它们到达领导者(调度程序)的时间进行排序,而此顺序受网络抖动和因并行调度器实现而来的抖动的影响,因此在发送者希望某一交易尽快被包含时,发送垃圾邮件交易倍有激励。这些交易以垃圾邮件形式给网络带来负外部性(截至 2023 年 1 月,58% 的 Solana 链上计算用于回退交易)及达到领导者的垃圾邮件。
来自 Jito Labs
在这篇文章中,我们描述了 Solana 的费用机制今天是如何工作的,以及对网络的影响。我们暗示了一些理想费用机制应满足的特性,例如对调度程序的准确提示(请求的 CU)、激励兼容性和真实的本地费用市场。在下一篇文章中,我们将为费用机制应该优化的目标定义一套形式化。这将用于更严格地分析当前的费用机制以及对机制提出的改进,而比这里所表达的更加严谨。
如需与我们合作,请联系 collaborators@umbraresearch.xyz。
- 原文链接: umbraresearch.xyz/writin...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!