改进 Solana TFM 的建议

进阶2/26/2024, 6:41:53 AM
本文分析了 Solana 现有的费用市场,并讨论了几种可能对 Solana 有价值的交易费用机制和框架。

转发原文标题:Solana 和以太坊交易费用机制:改进 Solana TFM 的建议

谢谢 Andrew Fitzgerald, Harsh Patel, Jon Charbonneau, Kevin Galler, Lanre Ige, Mert Mumtaz, Pranav Garimidi, Ryan Chern, Tao Zhu, 和 Tarun Chitra提供反馈和审查。

介绍

Eclipse 是以太坊的第一个 SVM L2。我们非常高兴能够将现有 SVM 的强大功能带给更多用户,但我们也致力于推动围绕 SVM 本身的持续研发。我们专注于确保 Eclipse 的开发能够为所有 SVM 链(尤其是 Solana)带来无可争议的价值回报。

作为我们未来关于费用市场思考的文章的前奏,本文将分析 Solana 现有的费用市场以及相关的改进建议。我们在大量借鉴蒂姆·拉夫加登,玛丽亚姆·巴赫拉尼、普拉纳夫·加里米迪,Hao Chung, Elaine Shi等人的研究成果的基础上,将这些建议与任何交易收费机制(TFM)的主要理论目标结合起来。我们将在全文中用 ** 表示核心定义。

一般来说,TFM 确定:

  • 特定区块包括哪些交易、
  • 特定交易支付的费用,以及
  • 累积的交易费用如何分配(以及分配给谁)。

最终,本文旨在将以以太坊为中心的 TFM 研究成果与 Solana 的创新工程相结合。

Solana 和以太坊当前 TFM 概述

Solana 与以太坊基础知识

我们将首先概述 Solana 的 TFM,并将其与以太坊的进行对比。这将更好地结合相关提案,以便我们能够努力修改和改进 TFM。首先:

Solana 的基本费用为每次签名固定收取 5,000 lamports(0.000005 SOL),大多数交易只需一次签名。它不考虑交易的更广泛计算资源(按 CUs 计算)。

Solana Tx 基本费用 = (5,000 Lamports) x (Tx 签名数量)

以太坊的基本费用机制主要有两个不同之处:

  1. 动态的 - 以太坊的基本费用(以每单位 Gas 的 gwei 衡量)根据跟踪市场需求浮动。
  2. 每单位计算的更细粒度的费用 - 以太坊的每笔交易基本费用与消耗的 Gas 量成线性关系。

所以以太坊的每笔交易基本费用是:

以太坊 Tx 基本费用 = (现行汽油价格(gwei)) x (tx 中使用的气体)

Solana 用户还可以添加可选的优先费以提高其纳入概率。与基本费用不同,优先费用是是按交易申请的每个 CU 计算的。Solana 交易可包括以下计算预算 指令

  • SetComputeUnitLimit (设置计算单元限制)- 交易可设置允许消耗的最大 CU 数(每个交易最多 140 万 CU)。执行时,交易最多可使用所请求的 CU 限制。如果没有提供 SetComputeUnitLimit 指令,交易的 CU 限制计算公式为(交易中的指令数)x (200k CU)。
  • SetComputeUnitPrice(设置计算单位价格) - 交易在优先费用中支付的每个 CU 请求的 微型灯端口(Micro-lamport)数。

将它们放在一起:

Tx 优先费 = (Tx CU 限额) x (CU 价格)

请注意,此优先费是根据请求的全部 CU 支付的(无论交易是否使用请求的总金额),这与以太坊不同。在以太坊中,费用是交易实际使用的 Gas 量的函数。

费用消耗与验证者奖励

虽然验证者优先处理高费用交易的动机不在共识范围内,但在共识中,基本费用和优先费用各占一半,烧毁/发送给 Solana 中的领导者(当前区块生产者):

  1. 基本费用 — 纳入区块的必备条件。缺乏必要基础费用的交易将被拒绝。
  2. 优先费 — 不强制要求区块包含。用于选择性地优先考虑那些希望提高其被快速纳入概率的交易

用户无法避免支付基本费用,但可以避免优先费用,并以另一种方式表明他们希望获得优先权。我们已经在实践中看到了这一点—— Jito-Solana 拍卖向带外领导者支付 100%(减去费用)。SIMD-0096 针对这个问题提供了一个简单的解决方案,将 100% 的优先费奖励给验证者。

直接转移*:通过 MEV-Boost / Jito-Solana 拍卖进行协调

重要的是,Solana 验证者对链上交易的每个区块进行投票。他们为每笔交易支付基本费用。

受优先权费用急剧增加的推动,Solana 最近的网络费用创下历史新高最近的费用分配如下所示

资料来源:Solana Compass

以太坊区块生成器与 Solana 调度程序

以太坊的区块生产通常更容易理解,所以我们从这里开始。几乎所有验证者(又称提议者)都通过以下方式将区块生产外包给协议外构建者 MEV-Boost。构建者每 12 秒(以太坊的时隙时间)创建一个区块,并将这些整个区块传递给提议者(通过中继),提议者选择价值最高的区块。

在以太坊和 Solana 中,区块生产者都有权在区块内任意订购交易。他们被激励以利润最大化的方式这样做。例如,不同的以太坊构建者可以通过运行专有算法进行竞争,这种算法能更有效地实现利润最大化,而竞争对手则无法做到这一点。

这意味着,即使在以太坊中,发送高优先级费用也无法在协议内实现对区块包含或排序的确定性保证。然而,由于以太坊当前区块构建过程的性质,即构建者在每个离散时隙结束时构建一个完整的利润最大化区块,它很有可能实现预期结果。

例如,搜索者可能会向构建者发送优先级极高的套利交易(例如,高于所有其他符合条件的交易的总和),要求将其纳入区块顶部,如果没有获得区块顶部位置,则将该交易完全排除在区块之外。在这种情况下,一个理性的利润最大化建设者会将这笔交易放在区块的最顶端,即使他们只是在 12 秒时段快结束时才收到这笔交易。

你会注意到,这里的收费有两种不同的保证:

  1. 包容性 - 用户希望将他们的交易包含在该区块中,但他们不关心交易位于该区块的何处。
  2. 排序 - 用户不只是想被包含在区块中的任何地方;他们希望在给定时间优先访问特定状态。

事实证明,以太坊的EIP-1559 机制非常有效,可以让用户轻松竞标区块包含,并且成功的可能性很高。每个人都知道要支付一个全球底价,支付该底价(通常还有象征性的优先权费用)应该可以可靠地让用户的交易立即包含在内。然而,该机制并不寻求提供任何有关排序的保证(即优先访问状态),而协议外机制对于寻求此类保证的用户(例如直接从构建者处)来说是可靠的。

Solana 的区块构建过程非常不同。验证者不会将离散时间段内的完整区块生产外包给协议外构建者。这 ”调度程序”是Solana Labs 验证器客户端中包含的默认算法,用于调度交易的执行并连续构建区块。

此外,Solana 交易 指定哪些帐户必须被读和写锁定才能执行。这允许调度程序迭代地排序哪些交易可以并发执行——因为不触及相同状态的交易可以并行执行。

在一个块内,最多有12,000,000 CU 可用于对单个帐户(“状态片段”)进行顺序写入。大约是这个量每 400ms 时隙可通过单线程处理的 CU 合理的节点要求。 Solana 的每块限制为48,000,000 CU。当前的调度程序实现使用四个线程进行非投票交易,12M x 4 = 48M。理论上,这意味着使用更多核心 = 增加 CU 限制。通过硬件进行扩展。

调度程序非确定性地优先处理优先级较高的交易。然而,与以太坊目前所采用的机制相比,这通常无法提供可靠的优先级保证。

在 Solana 中,运行默认调度程序的验证器会连续构建区块,因此交易可以添加到正在进行的区块中并执行,然后等到时段结束后再完全按照优先级费用来组织交易。这样做的目的是让调度程序基于他们的 CU 总价格确定优先级,从而实现利润最大化。

Solana 的默认多线程调度程序还引入了额外的“抖动(jitter)”。交易被随机分配给四个线程之一,每个线程维护自己的等待执行的交易队列。然后使用优先费来确定线程内交易的优先级。但是,它们无助于确定线程间交易的优先级。

例如,两个搜索者可能会同时发送一笔交易来捕捉相同的套利机会,而发送较低优先级费用的那个搜索者甚至可能获胜,因为他们偶然进入了一个不那么拥堵的队列。与以太坊相比,这就降低了优先级费用的效力,增加了垃圾邮件的诱因—尤其是因为交易的收录也取决于在给定时间段内,交易何时到达当前区块生产者。

请注意,有计划的改变 Solana 的默认调度程序,目的是通过依赖交易依赖关系图,调度图中优先级最高的未阻塞(非写锁定)交易,从而解决当前实现中的一些问题。

虽然 Jito-Solana 客户端主要不在本文讨论范围之内,但它允许搜索者以最小化 Solana 负面外部性的方式更高效地获取矿工/最大可提取价值(MEV)。Jito-Solana 偏离了 Solana 的默认调度程序,引入了协议外离散的 200 毫秒 Flashbots 式捆绑拍卖,与默认的连续区块生产和私有 mempool(同样偏离了 Solana 的默认 TFM)并行运行。Solana 验证者采用 Jito-Solana 客户端(目前有超过 50% 的验证者使用该客户端)有助于解决 Solana 现有 TFM 的一些问题,即由 MEV 驱动的垃圾邮件。

Solana 当前 TFM 的缺点

尽管 Solana 的 TFM 前景广阔,但目前它也存在一些潜在的缺点:

垃圾邮件的诱因

如上所述,交易一旦到达区块生产者,就会以某种先入先出(FIFO)的方式排序。此外,它们还受到网络抖动和默认调度程序随机线程分配的非确定性影响。虽然在某些情况下,优先级费用可能有助于提高收录概率,但仍然存在着大量的诱因,促使人们进行垃圾交易,以最大限度地提高最快的收录概率(例如,搜索者竞相在借贷市场上清算违约头寸)。这下图来自 Jito Labs 有助于证明垃圾邮件交易的次优性质。

资料来源:Jito 基金会

一口价拍卖

在简单的一口价拍卖(FPA)中,用户只需提交出价,最高的价格就会被纳入该区块。FPA的一个问题 是它不太用户友好。例如,用户必须猜测其他用户的出价,考虑自己愿意出价到什么价位,例如,可能会根据自己认为其他用户的出价来降低自己的出价,以免出价过高。

更正式地说,FPA 模型是非 DSIC:

**主导策略激励兼容(DSIC): 假设区块生产者诚实地执行了 TFM,那么规定的出价策略应该是用户的主导策略。这意味着用户将按照他们对交易包含性所赋予的确切价值出价(交易费)[Chu22]

DSIC 是 EIP-1559 的创建者旨在将其引入以太坊 TFM 的关键特性之一,正如我们前面所描述的,它可以说是成功的。用户更容易知道在特定时间(通过动态基础费用)包含在区块中的公共底价,因此支付该价格(加上任何名义上的优先权费用)几乎总能让您的交易迅速被包含在内。

相反,Solana的TFM是一种过于简单天真的FPA。它缺乏一个可靠的机制让用户准确地表达他们对区块包含的偏好,并且是非DSIC的。在实践中,试图在正确的时间设定正确的优先费用是极其具有挑战性的。这对于能够更好地绕过网络和调度抖动的复杂参与者极为有利(例如,通过共享位置或垃圾邮件交易)。

50/50 销毁/验证者支付

如前所述,以太坊会烧掉 100%的基础费用,同时将 100%的优先级费用发送给区块生产者,而对于 Solana,基础费用和优先级费用各烧掉/支付给区块生产者一半。因此,Solana TFM 是不防 OCA 的:

**链下协议证明(OCA 证明或 SCP):用户和区块生产者之间没有链下协议可以Pareto改进指定区块的TFM结果 [Rou21]。 c-SCP 协议可以防止区块生产者联盟和最多 c 个用户通过偏离真实报告而获利。

我们看到的一个明显例子是,Jito-Solana 的协议外拍卖向区块生产者支付 100%的出价(扣除 Jito 的分成),而不是烧掉 50%— Jito-Solana 是区块生产者使用链下协议的一个例子。不过,我们注意到,Jito-Solana 的小费并不等同于优先权费用,因为前者只有在相关交易(和捆绑)成功执行时才会支付。

最近提出的SIMD-0109 将在协议中引入一种小费机制(类似于 Jito-Solana 的协议外拍卖所使用的机制)作为本地指令。

缺乏特权交易类型

Solana 投票交易发布在链上,并且必须包含在区块中,然而每个验证者必须支付所述交易的费用。这代表了一项重大的固定成本(由验证者私人支付),尽管包含投票交易的外部性是积极的。相对于所消耗的 CU,投票交易被多收了费用(即相对于普通交易,投票交易使用的 CU 相对较少),这又加剧了这一成本。经济学在这里产生了集中效应,因为任何验证者的总投票成本大致恒定,而获得的奖励与权益权重成正比。

来源:Ceteris、Solana the Monolith

顺便说一句,类似的逻辑可以扩展到包括可靠的预言机更新,尽管准确的链上价格反馈具有正外部性,但网络通常会对预言机收取费用。一个更有主见的链,如果从某个特定的稳健预言机中获得了很高的价值,可能会选择建立一个补贴其成本的机制。

Solana 的本地费用市场

Solana 近似于本地收费机制,因为没有账户可以在每个 48M 区块限制内写入超过 1200 万个 CU。再加上 Solana 默认调度程序的多线程特性,这意味着一个区块中最多有 25% 的交易可以对应一个单一的需求状态。从理论上讲,与有需求状态的用户相比,需求较少状态的用户不应该为获得较强的包含保证而增加优先级费用。

可以说,这不是真正的本地收费机制。该机制不是通过共识来执行的(只在调度器层面),而且优先级费用和区块包含之间的关系是非确定的(如前所述)。此外,它还缺乏 “弹性 “概念,即同时存在目标和最大资源限制。

CU 使用和请求效率低下

由于 Solana 的基本费用不考虑 CU,因此它不会激励交易:

  1. 高效使用 CU — 在其他条件相同的情况下,使用 140 万 CUs 的交易与使用 10 万 CUs 的交易收取相同的基本费用。
  2. 高效请求 CU — 即使交易使用了 5 万 CU,无论申请 10 万 CU 还是 100 万 CU,基本费用都是一样的。

这可能会导致调度程序高估给定区块内的计算需求,并且与给定时隙的区块生产者所需的资源相比,会造成效率损失。DSIC TFM 可以解决这个问题,因为用户的主导策略将是规定的投标策略,在这种情况下,它可以准确地反映 CU 的预期使用情况。

无成本写锁账户

如前所述,Solana交易在执行时会预先指定它们将读取或写入的所有账户。然而,如今这种机制可以被滥用,以实质上无成本的方式全球锁定任何账户。例如:

  1. 我发送 TxA,这指定它将写入到 AccountA
  2. 领导者收到 TxA,安排它,并开始执行它。现在,AccountA 已被锁定 - 在TxA 完成执行之前,不能执行任何其他触及 AccountA 的交易。

问题源于这样一个事实:任何人都可以发送交易来锁定他们想要的任何账户。锁定账户是免费的,甚至可以锁定他们不使用的账户,这显然是一种垃圾邮件攻击手段。更糟糕的是,账户所有者无法控制谁可以锁定他们自己的账户。

TFM 提案和框架

每个区块链最终都必须决定如何在用户之间分配其有限区块空间的稀缺资源,这需要通过其 TFM 来实现。下面,我们将讨论几个可能对 Solana 有价值的相关 TFM 提议和框架。

多维区块链费用市场

大多数现有的费用市场都是一维的,围绕单个可替代的账户单位(例如以太坊中的燃气)构建。然而,购买的这种单一资源是许多底层不可替代资源(例如带宽、计算和存储)的代理。

例如,每个以太坊操作码 携带其消耗的一定固定数量的燃气(例如,ADD 使用 3 份燃气,而 MUL 使用 5 份燃气)。每个操作码的气体价格是根据其使用的底层资源以及网络中节点认为这些资源的昂贵程度而设定的。例如,可以通过在真实世界的硬件上运行基准来确定对操作成本的这种隐性衡量。

然而,也可以构建多维费用市场,对这些不同的不可替代资源单独定价,而不是将它们组合成一个单位。EIP-4844 是一个简单的二维费用市场,因为数据块有自己的费用市场,独立于以太坊执行燃气。

Diamandis、Evans、Chitra 和 Angeris 于 2022 年发表的这篇论文分析了如何构建这样的多维收费市场。他们的研究从网络设计者的角度出发,提出了 TFM 构建问题,目的是在区块链的交易和区块限制(例如智能合约限制或 CU/gas 限制)下,最大化区块链用户的福利(或总效用),减去上述用户的资源消耗。论文的主要成果是,尽管福利是未知的,但他们设计出了一种能使福利最大化的机制,并展示了如何显式构建上述机制。

**福利最大化(Welfare Maximizing):预期的分配和支付规则意味着消费者和矿工剩余的总和(大约)最大化。

他们的主要发现是,一种等效的 TFM 是可以实现的,即资源价格被设定为最小化验证者和用户之间的福利差异 —- 从福利最大化的角度来看,这样的价格理论上应导致区块最优化。虽然这项工作更多地被视为设计最优 TFM 的学术框架,但它有助于表明,对资源进行单独定价可以提高区块链的效率,使其在拥堵或垃圾邮件高发期更具弹性。基于控制器的基础费用机制(如 EIP-1559)被强调为一种潜在的方法,它可以在 Solana 和 SVM 链上运行得非常好,因为区块时间很短,允许基础费用根据用户需求和资源可用性的变化进行快速调整。

如前所述,本文的一个结论是,可以设计系统且计算高效的方法来帮助定义和更新区块链多维资源的定价。然而,一个自然而然的问题应该是:对哪些资源进行单独定价才有意义?在其他区块链环境中,已经开展了一些实际工作来做出这样的决定。例如,Penumbra 已经实施了一种多维资源定价形式,在其以隐私为中心的区块链上对全节点和终端用户设备使用的资源分别定价。

虽然 2022 年的论文一般讨论了基础资源(例如计算、带宽、存储)的多维定价,但也可以实现每个账户(即每个“状态”)的多维资源定价。每个帐户都被视为不同的资源。最近的这篇文章在原始论文的基础上对此进行了讨论。将帐户(而不是计算、存储、带宽等)作为底层资源单独定价,可能更易于实施,并能降低资源耗尽攻击风险。

写锁账户 (Write Lock Account) 的指数费用

Anatoly 最近发表关于SVM 执行经济学的文章之后,Tao Zhu与Anatoly合作,提出SIMD-0110。其主要动机是通过经济背压(即随着时间的推移有针对性地增加费用以降低垃圾邮件的诱因)来阻止垃圾邮件,从而提高网络资源的利用效率。失败的套利交易继续占据大约一半(或更多) 的Solana区块空间,因为垃圾邮件既合理又便宜得令人难以置信。

提案建议跟踪每个账户每个区块的 CU 使用率的指数移动平均值 (EMA),以实现这一目标。写锁账户的成本将根据其各自的尾随 CU 利用率呈指数增长,从而阻止垃圾邮件。其核心逻辑类似于 EIP-1559 将以太坊的全局基本费用设定为尾随区块中燃气使用量的函数。不过,这种 SIMD 在设置每个账户的本地基本费用市场时,要精细得多。

基于账户的不同写锁费用的基本实现思路如下:

  • 跟踪每个有争议账户在过去 150 个时段的 EMA 计算单元使用率。
  • 跟踪的账户数最多为 2048 个,其中只有争议最大、写锁成本率最高的账户才会被跟踪。
  • 如果账户的 EMA计算单元利用率 > 其最大 CU 限制的 50%,其写锁定成本率将增加 X%。如果<50%的限制,成本率将减少 X%。
  • V0 建议初始写锁成本率为 1000 micro-lamports/CU,成本率调整率为每个插槽 1%(请注意,鉴于提案的早期性质,此处的确切百分比可能会发生变化)。
  • 某一区块账户的写入锁定费是用写入锁定费率乘以交易申请的 CU 计算得出的。
  • 交易仍需支付签名费,可选的优先权费也依然存在。
  • 收取的写锁费用将被 100% 销毁。
  • 收取的优先权费用100%奖励。
  • 收集到的签名费50%被销毁,50%被奖励。

该提议将使 Solana(通常)DSIC 的写入锁定功能类似于 EIP-1559 使以太坊 TFM(通常)DSIC 和 MMIC [Rou23] 的写入锁定功能—除了在费用突然激增的情况下。

我们可以如下定义 MMIC 特性:

**短视矿工激励兼容性(MMIC, Myopic Miner Incentive Compatibility ):区块生产者通过不创建虚假交易并遵守 TFM 的既定规则来实现其效用最大化。短视意味着在判断效用最大化时,这一目标只涉及当前区块[Rou21]。

任何跟踪机制都是不完美的,因为它可能无法准确地代表当前的需求状态。例如,需求可能会在很长一段时间内处于较低水平(因此,动态基本费用较低),然后 NFT 铸币的需求突然飙升。这种情况可能发生在全球层面(如以太坊的 TFM),也可能发生在本地的每个账户层面(如 SIMD-0110 中考虑的情况),甚至更加不稳定。

然而,Solana 也受益于其极低的出块时间。这可以使基本费用更快地适应突如其来的需求冲击,具体取决于曲线移动的积极程度。在这里,收费控制器的形状非常重要。

事实上,这种对请求的CUs收取写锁费用的事实也适当地激励用户和开发人员准确估计交易的CU使用量。这避免了我们之前讨论的问题,即当前的平均签名基数对请求的CUs远超所需的情况(甚至可达到最大的140万CUs)没有任何惩罚。否则,只有优先费用在今天承担这种激励(因为它也是根据请求的CUs收费)。

这里一个潜在的批评是,基于账户的本地费用市场(尤其是这个提案,它要求为每个账户计算持续的 EMA)可能在计算上非常昂贵。这种类型的多维费用是无限制的,因为任何账户都可能出现拥塞,这可能会给这种 TFM 带来困难。然而,在 SIMD-0110 的情况下,通过设置可以在给定时间跟踪 CU 使用 EMA 的帐户数量上限来避免这种情况。

**高效可计算(Efficiently Computable):区块拍卖机制的设计必须能够针对给定的区块生产者(或构建者)进行高效计算——Eclipse 和 Solana 的时隙小于 400 毫秒,这对给定区块的最大计算时间提出了严格的限制。

考虑到即使实施了这一建议,Solana 区块的纳入仍将是非确定性的,因此仍有可能出现用户实时准确更新出价以确保其交易被纳入区块的问题。要进一步解决这个问题,需要对调度程序进行修改,我们将在下一节讨论。

Solana 默认调度程序的更改

正如前面所讨论的,这 ”调度程序”是Solana Labs 验证器客户端中包含的默认算法,用于调度交易的执行并连续构建区块。它在 Solana 的费用市场中发挥着极其重要的作用,尽管它的默认行为并未在协议中强制执行,因为验证者可能会选择运行其他算法。我们将在这里重点关注当前的调度程序和即将提出的更改,Andrew Fitzgerald 正在研究这些变更。

Solana的当前调度器在处理用户交易时引入了“抖动 (jitter)”,通过随机将它们分配到四个非投票交易线程中的一个(另外两个线程保留用于处理投票交易), 然后尝试按优先级费用对未完成的交易进行排序,并检查相关的锁定(’锁定抓取’),如下面的图表所示。在“银行阶段(Banking Stage)”期间,将提取多批交易以分配给线程 - 这是Solana验证者运行的过程,其中处理交易并在其下进行调度过程。

资料来源:Andrew Fitzgerald,Solana Banking Stage 和 Scheduler (调度器)

默认调度程序的一个重要问题是,在网络活动频繁的时期,每个线程的队列中经常充满了相互冲突的交易(例如,在 NFT 铸币或广泛预期的代币生成事件之前)。每个线程都可能包含具有相同或重叠读锁或写锁的交易,这意味着这些交易必须重新安排执行时间。然而,这样做的结果是,在极端最坏的情况下,四个默认调度线程中只有一个线程可以在给定时间内执行交易。

升级 Solana 默认调度器的关键在于从传统方法(名为 ThreadLocalMultiIterator 模式)过渡到新的调度方法,名为 CentralScheduler 模式。本文仅提供对变化的概述和分析。然而,可以在 Andrew Fitzgerald 的文章和 Harsh Patel 的 Tiny Dancer团队的附带@harshpatel_36138/whats-new-with-solana-s-transaction-scheduler-bcf79a7d33f7">摘要博客文章中找到更多信息。以下展示了新调度过程的概述。

资料来源:Andrew Fitzgerald,Solana Banking Stage 和调度器

新的调度器由一个中央单调度器负责接收来自通道的交易,然后检查相关的锁。之后,交易被分配给特定的并行工作线程执行。中央调度器可以查看特定工作线程使用的各种读写锁,从而确定新交易的最佳线程。在特定工作线程执行和处理交易的过程中,会向中央调度程序发送消息,以便其重新评估 Solana 状态中哪些部分被认为是锁定的。

调度程序使用一种称为“prio-graph(优先图)”的算法,这是一个直接的有向无环图,以最高优先级(收费)交易为起点,在给定的最高优先级交易和因锁重叠而与之冲突的后续最高优先级交易之间划线(或更准确地说,划边)。这(暂定)是针对一个 “前瞻 “窗口完成的,该窗口的预设大小为 2,048 个交易(可能会有变化),这些交易可以添加到图形中—以下图表显示了优先图在一组给定交易中的工作情况,其中交易之间的边代表冲突锁。

除了采用 prio-graph 调度程序之外,该版本还引入了额外的效率来帮助减少处理开销,例如删除银行阶段的冗余元素。新的调度程序应该会得到改进,显着降低 Solana 活动频繁期间写入失败和读取锁定的概率。由于新的默认调度程序,我们预计抖动会减少。尽管如此,鉴于区块构建过程的连续性,区块包容性仍将存在不确定性。

可返还账户写入 (PRAW, Program Rebatable Account Write) 费用

Godmode Galactus Max Schneider 所撰写的 SIMD-0016 提出了可返还账户写入(PRAW)费用。它们将给应用程序开发者提供显著的控制权,因为他们可以设定支付和这些费用的返还标准,从而在他们认为合适的情况下激励或抑制用户行为。

目前,Solana 程序无法惩罚对其状态进行写锁定的交易。PRAW 费用将允许 Solana 账户所有者对写入锁定其状态的失败交易收费。这些费用将转嫁到被锁定的可写账户。不过,账户所有者可以设置这些费用,以便在交易结束时,如果符合指定标准,这些费用将返还给用户。

特别是,这可以阻止用户写入锁定他们在交易执行中实际上并不使用的账户。由于 Solana 目前并没有事先检查特定账户是否会被写入锁定的特定交易使用,因此这种情况是有可能发生的。PRAW 为程序提供了一种方法,可以抑制那些锁定程序状态的交易,这些交易试图识别机会,并打算在执行时机会不再有效时还原。即使交易在执行过程中失败,这些费用也将适用。

相反,用户可以指定他们愿意在交易中支付的 PRAW 费用的最高金额。交易中指定的任何高于给定写锁定账户当前 PRAW 费用的费用都将被退还。

Solana 社区的成员指出了该提案的问题:不同项目完全自主运行的能力似乎不太理想,而且准确估算费用的能力也很困难。此外,可能有更简单、更统一的方法来处理这些围绕写锁定帐户的恶意问题,例如 SIMD-0110。

**抵制恶意破坏(Griefing Resistance):DSIC 的一个子集,其中用户不会被激励去歪曲其访问列表——错误地陈述其事务所需的资源[Gar23]。

PRAW 提议有可能无法防止垃圾邮件,因为它依赖于应用程序开发人员的充分能力: 1)能够将垃圾邮件与 “正常行为 “区分开来;2)自愿选择为他们应承担部分责任的负面外部性收取更多费用,而这样做可能并不符合他们的最佳利益,他们可以选择不这样做。

相比之下,虽然 Solana 研究社区的成员在引入 EMA 基本费用方面存在不可否认的分歧,但普遍同意添加一些与 CU 相关的基本费用组成部分。这可以激励开发人员准确地估计 CU 并有效地使用 CU。

最后的想法

Solana 独特的工程和性能目标需要独特的 TFM 考虑。当然,简单地将以太坊现有的收费市场移植到 Solana 并不能解决问题,但我们可以从中吸取宝贵的经验教训。这与以下两种机制都有很大关系:

  1. 协议内 - 共识执行的 TFM(例如,EIP-1559SIMD-0110
  2. 协议外 - 通过 MEV-Boost、Solana 调度程序改进和 Jito 拍卖进行 PBS

对于 Solana 和以太坊来说,协议内机制和协议外机制似乎都有可能共存并共同发展。如何平衡这两种机制是设计这些系统的基本问题之一。围绕 SIMD-0110 的争论往往集中在两种对立的观点上:

  1. 调度器和网络改进 将减少抖动,足以解决这里描述的问题,因此不必对协议内的TFM进行重大改变。
  2. 虽然需要进行协议外的调度器和网络改进,但它们本质上是不够的。需要协议内的经济反压。

在这两种情况下,某种形式的多维资源定价显然也很有价值。以太坊已开始在基础资源层面推行这种 TFM,EIP-4844 将 blob 数据从执行市场中分离出来。相反,Solana 正在个人账户层面推进多维资源定价,开创 “本地费用市场”。

这里的 TFM 研究是最前沿的,研究人员不断寻找新的创新方法来改进索拉纳和其他连锁店的收费方式。我们乐观地认为,这里讨论的所有建议都将继续使索拉纳变得更加高效、可扩展、用户友好和经济上可持续。

随着 Eclipse 主网发布的临近,我们也很高兴分享更多关于我们将如何将这些现有的工作应用到我们自己的TFM的信息,这肯定会在未来的几年中继续发展。我们打算在这个领域进行实验并推动机制。模块化范例的一个重要好处是,它允许不同生态系统的研究和工程更容易交叉传播。这种实验的速度现在只会继续增加,使得长期在此建设的每个人都受益。

声明:

  1. 本文转载自[Eclipse],转发原标题‘Solana & Ethereum 交易费用机制:改进 Solana 的 TFM 的建议’,所有版权归原作者所有 [Eclipse],如对转载有异议,请联系Gate Learn团队,团队会根据相关流程尽速处理。
  2. 免责声明:本文所表达的观点和意见仅代表作者个人观点,不构成任何投资建议。
  3. 文章其他语言版本由Gate Learn团队翻译, 在未提及Gate.io的情况下不得复制、传播或抄袭经翻译文章。

改进 Solana TFM 的建议

进阶2/26/2024, 6:41:53 AM
本文分析了 Solana 现有的费用市场,并讨论了几种可能对 Solana 有价值的交易费用机制和框架。

转发原文标题:Solana 和以太坊交易费用机制:改进 Solana TFM 的建议

谢谢 Andrew Fitzgerald, Harsh Patel, Jon Charbonneau, Kevin Galler, Lanre Ige, Mert Mumtaz, Pranav Garimidi, Ryan Chern, Tao Zhu, 和 Tarun Chitra提供反馈和审查。

介绍

Eclipse 是以太坊的第一个 SVM L2。我们非常高兴能够将现有 SVM 的强大功能带给更多用户,但我们也致力于推动围绕 SVM 本身的持续研发。我们专注于确保 Eclipse 的开发能够为所有 SVM 链(尤其是 Solana)带来无可争议的价值回报。

作为我们未来关于费用市场思考的文章的前奏,本文将分析 Solana 现有的费用市场以及相关的改进建议。我们在大量借鉴蒂姆·拉夫加登,玛丽亚姆·巴赫拉尼、普拉纳夫·加里米迪,Hao Chung, Elaine Shi等人的研究成果的基础上,将这些建议与任何交易收费机制(TFM)的主要理论目标结合起来。我们将在全文中用 ** 表示核心定义。

一般来说,TFM 确定:

  • 特定区块包括哪些交易、
  • 特定交易支付的费用,以及
  • 累积的交易费用如何分配(以及分配给谁)。

最终,本文旨在将以以太坊为中心的 TFM 研究成果与 Solana 的创新工程相结合。

Solana 和以太坊当前 TFM 概述

Solana 与以太坊基础知识

我们将首先概述 Solana 的 TFM,并将其与以太坊的进行对比。这将更好地结合相关提案,以便我们能够努力修改和改进 TFM。首先:

Solana 的基本费用为每次签名固定收取 5,000 lamports(0.000005 SOL),大多数交易只需一次签名。它不考虑交易的更广泛计算资源(按 CUs 计算)。

Solana Tx 基本费用 = (5,000 Lamports) x (Tx 签名数量)

以太坊的基本费用机制主要有两个不同之处:

  1. 动态的 - 以太坊的基本费用(以每单位 Gas 的 gwei 衡量)根据跟踪市场需求浮动。
  2. 每单位计算的更细粒度的费用 - 以太坊的每笔交易基本费用与消耗的 Gas 量成线性关系。

所以以太坊的每笔交易基本费用是:

以太坊 Tx 基本费用 = (现行汽油价格(gwei)) x (tx 中使用的气体)

Solana 用户还可以添加可选的优先费以提高其纳入概率。与基本费用不同,优先费用是是按交易申请的每个 CU 计算的。Solana 交易可包括以下计算预算 指令

  • SetComputeUnitLimit (设置计算单元限制)- 交易可设置允许消耗的最大 CU 数(每个交易最多 140 万 CU)。执行时,交易最多可使用所请求的 CU 限制。如果没有提供 SetComputeUnitLimit 指令,交易的 CU 限制计算公式为(交易中的指令数)x (200k CU)。
  • SetComputeUnitPrice(设置计算单位价格) - 交易在优先费用中支付的每个 CU 请求的 微型灯端口(Micro-lamport)数。

将它们放在一起:

Tx 优先费 = (Tx CU 限额) x (CU 价格)

请注意,此优先费是根据请求的全部 CU 支付的(无论交易是否使用请求的总金额),这与以太坊不同。在以太坊中,费用是交易实际使用的 Gas 量的函数。

费用消耗与验证者奖励

虽然验证者优先处理高费用交易的动机不在共识范围内,但在共识中,基本费用和优先费用各占一半,烧毁/发送给 Solana 中的领导者(当前区块生产者):

  1. 基本费用 — 纳入区块的必备条件。缺乏必要基础费用的交易将被拒绝。
  2. 优先费 — 不强制要求区块包含。用于选择性地优先考虑那些希望提高其被快速纳入概率的交易

用户无法避免支付基本费用,但可以避免优先费用,并以另一种方式表明他们希望获得优先权。我们已经在实践中看到了这一点—— Jito-Solana 拍卖向带外领导者支付 100%(减去费用)。SIMD-0096 针对这个问题提供了一个简单的解决方案,将 100% 的优先费奖励给验证者。

直接转移*:通过 MEV-Boost / Jito-Solana 拍卖进行协调

重要的是,Solana 验证者对链上交易的每个区块进行投票。他们为每笔交易支付基本费用。

受优先权费用急剧增加的推动,Solana 最近的网络费用创下历史新高最近的费用分配如下所示

资料来源:Solana Compass

以太坊区块生成器与 Solana 调度程序

以太坊的区块生产通常更容易理解,所以我们从这里开始。几乎所有验证者(又称提议者)都通过以下方式将区块生产外包给协议外构建者 MEV-Boost。构建者每 12 秒(以太坊的时隙时间)创建一个区块,并将这些整个区块传递给提议者(通过中继),提议者选择价值最高的区块。

在以太坊和 Solana 中,区块生产者都有权在区块内任意订购交易。他们被激励以利润最大化的方式这样做。例如,不同的以太坊构建者可以通过运行专有算法进行竞争,这种算法能更有效地实现利润最大化,而竞争对手则无法做到这一点。

这意味着,即使在以太坊中,发送高优先级费用也无法在协议内实现对区块包含或排序的确定性保证。然而,由于以太坊当前区块构建过程的性质,即构建者在每个离散时隙结束时构建一个完整的利润最大化区块,它很有可能实现预期结果。

例如,搜索者可能会向构建者发送优先级极高的套利交易(例如,高于所有其他符合条件的交易的总和),要求将其纳入区块顶部,如果没有获得区块顶部位置,则将该交易完全排除在区块之外。在这种情况下,一个理性的利润最大化建设者会将这笔交易放在区块的最顶端,即使他们只是在 12 秒时段快结束时才收到这笔交易。

你会注意到,这里的收费有两种不同的保证:

  1. 包容性 - 用户希望将他们的交易包含在该区块中,但他们不关心交易位于该区块的何处。
  2. 排序 - 用户不只是想被包含在区块中的任何地方;他们希望在给定时间优先访问特定状态。

事实证明,以太坊的EIP-1559 机制非常有效,可以让用户轻松竞标区块包含,并且成功的可能性很高。每个人都知道要支付一个全球底价,支付该底价(通常还有象征性的优先权费用)应该可以可靠地让用户的交易立即包含在内。然而,该机制并不寻求提供任何有关排序的保证(即优先访问状态),而协议外机制对于寻求此类保证的用户(例如直接从构建者处)来说是可靠的。

Solana 的区块构建过程非常不同。验证者不会将离散时间段内的完整区块生产外包给协议外构建者。这 ”调度程序”是Solana Labs 验证器客户端中包含的默认算法,用于调度交易的执行并连续构建区块。

此外,Solana 交易 指定哪些帐户必须被读和写锁定才能执行。这允许调度程序迭代地排序哪些交易可以并发执行——因为不触及相同状态的交易可以并行执行。

在一个块内,最多有12,000,000 CU 可用于对单个帐户(“状态片段”)进行顺序写入。大约是这个量每 400ms 时隙可通过单线程处理的 CU 合理的节点要求。 Solana 的每块限制为48,000,000 CU。当前的调度程序实现使用四个线程进行非投票交易,12M x 4 = 48M。理论上,这意味着使用更多核心 = 增加 CU 限制。通过硬件进行扩展。

调度程序非确定性地优先处理优先级较高的交易。然而,与以太坊目前所采用的机制相比,这通常无法提供可靠的优先级保证。

在 Solana 中,运行默认调度程序的验证器会连续构建区块,因此交易可以添加到正在进行的区块中并执行,然后等到时段结束后再完全按照优先级费用来组织交易。这样做的目的是让调度程序基于他们的 CU 总价格确定优先级,从而实现利润最大化。

Solana 的默认多线程调度程序还引入了额外的“抖动(jitter)”。交易被随机分配给四个线程之一,每个线程维护自己的等待执行的交易队列。然后使用优先费来确定线程内交易的优先级。但是,它们无助于确定线程间交易的优先级。

例如,两个搜索者可能会同时发送一笔交易来捕捉相同的套利机会,而发送较低优先级费用的那个搜索者甚至可能获胜,因为他们偶然进入了一个不那么拥堵的队列。与以太坊相比,这就降低了优先级费用的效力,增加了垃圾邮件的诱因—尤其是因为交易的收录也取决于在给定时间段内,交易何时到达当前区块生产者。

请注意,有计划的改变 Solana 的默认调度程序,目的是通过依赖交易依赖关系图,调度图中优先级最高的未阻塞(非写锁定)交易,从而解决当前实现中的一些问题。

虽然 Jito-Solana 客户端主要不在本文讨论范围之内,但它允许搜索者以最小化 Solana 负面外部性的方式更高效地获取矿工/最大可提取价值(MEV)。Jito-Solana 偏离了 Solana 的默认调度程序,引入了协议外离散的 200 毫秒 Flashbots 式捆绑拍卖,与默认的连续区块生产和私有 mempool(同样偏离了 Solana 的默认 TFM)并行运行。Solana 验证者采用 Jito-Solana 客户端(目前有超过 50% 的验证者使用该客户端)有助于解决 Solana 现有 TFM 的一些问题,即由 MEV 驱动的垃圾邮件。

Solana 当前 TFM 的缺点

尽管 Solana 的 TFM 前景广阔,但目前它也存在一些潜在的缺点:

垃圾邮件的诱因

如上所述,交易一旦到达区块生产者,就会以某种先入先出(FIFO)的方式排序。此外,它们还受到网络抖动和默认调度程序随机线程分配的非确定性影响。虽然在某些情况下,优先级费用可能有助于提高收录概率,但仍然存在着大量的诱因,促使人们进行垃圾交易,以最大限度地提高最快的收录概率(例如,搜索者竞相在借贷市场上清算违约头寸)。这下图来自 Jito Labs 有助于证明垃圾邮件交易的次优性质。

资料来源:Jito 基金会

一口价拍卖

在简单的一口价拍卖(FPA)中,用户只需提交出价,最高的价格就会被纳入该区块。FPA的一个问题 是它不太用户友好。例如,用户必须猜测其他用户的出价,考虑自己愿意出价到什么价位,例如,可能会根据自己认为其他用户的出价来降低自己的出价,以免出价过高。

更正式地说,FPA 模型是非 DSIC:

**主导策略激励兼容(DSIC): 假设区块生产者诚实地执行了 TFM,那么规定的出价策略应该是用户的主导策略。这意味着用户将按照他们对交易包含性所赋予的确切价值出价(交易费)[Chu22]

DSIC 是 EIP-1559 的创建者旨在将其引入以太坊 TFM 的关键特性之一,正如我们前面所描述的,它可以说是成功的。用户更容易知道在特定时间(通过动态基础费用)包含在区块中的公共底价,因此支付该价格(加上任何名义上的优先权费用)几乎总能让您的交易迅速被包含在内。

相反,Solana的TFM是一种过于简单天真的FPA。它缺乏一个可靠的机制让用户准确地表达他们对区块包含的偏好,并且是非DSIC的。在实践中,试图在正确的时间设定正确的优先费用是极其具有挑战性的。这对于能够更好地绕过网络和调度抖动的复杂参与者极为有利(例如,通过共享位置或垃圾邮件交易)。

50/50 销毁/验证者支付

如前所述,以太坊会烧掉 100%的基础费用,同时将 100%的优先级费用发送给区块生产者,而对于 Solana,基础费用和优先级费用各烧掉/支付给区块生产者一半。因此,Solana TFM 是不防 OCA 的:

**链下协议证明(OCA 证明或 SCP):用户和区块生产者之间没有链下协议可以Pareto改进指定区块的TFM结果 [Rou21]。 c-SCP 协议可以防止区块生产者联盟和最多 c 个用户通过偏离真实报告而获利。

我们看到的一个明显例子是,Jito-Solana 的协议外拍卖向区块生产者支付 100%的出价(扣除 Jito 的分成),而不是烧掉 50%— Jito-Solana 是区块生产者使用链下协议的一个例子。不过,我们注意到,Jito-Solana 的小费并不等同于优先权费用,因为前者只有在相关交易(和捆绑)成功执行时才会支付。

最近提出的SIMD-0109 将在协议中引入一种小费机制(类似于 Jito-Solana 的协议外拍卖所使用的机制)作为本地指令。

缺乏特权交易类型

Solana 投票交易发布在链上,并且必须包含在区块中,然而每个验证者必须支付所述交易的费用。这代表了一项重大的固定成本(由验证者私人支付),尽管包含投票交易的外部性是积极的。相对于所消耗的 CU,投票交易被多收了费用(即相对于普通交易,投票交易使用的 CU 相对较少),这又加剧了这一成本。经济学在这里产生了集中效应,因为任何验证者的总投票成本大致恒定,而获得的奖励与权益权重成正比。

来源:Ceteris、Solana the Monolith

顺便说一句,类似的逻辑可以扩展到包括可靠的预言机更新,尽管准确的链上价格反馈具有正外部性,但网络通常会对预言机收取费用。一个更有主见的链,如果从某个特定的稳健预言机中获得了很高的价值,可能会选择建立一个补贴其成本的机制。

Solana 的本地费用市场

Solana 近似于本地收费机制,因为没有账户可以在每个 48M 区块限制内写入超过 1200 万个 CU。再加上 Solana 默认调度程序的多线程特性,这意味着一个区块中最多有 25% 的交易可以对应一个单一的需求状态。从理论上讲,与有需求状态的用户相比,需求较少状态的用户不应该为获得较强的包含保证而增加优先级费用。

可以说,这不是真正的本地收费机制。该机制不是通过共识来执行的(只在调度器层面),而且优先级费用和区块包含之间的关系是非确定的(如前所述)。此外,它还缺乏 “弹性 “概念,即同时存在目标和最大资源限制。

CU 使用和请求效率低下

由于 Solana 的基本费用不考虑 CU,因此它不会激励交易:

  1. 高效使用 CU — 在其他条件相同的情况下,使用 140 万 CUs 的交易与使用 10 万 CUs 的交易收取相同的基本费用。
  2. 高效请求 CU — 即使交易使用了 5 万 CU,无论申请 10 万 CU 还是 100 万 CU,基本费用都是一样的。

这可能会导致调度程序高估给定区块内的计算需求,并且与给定时隙的区块生产者所需的资源相比,会造成效率损失。DSIC TFM 可以解决这个问题,因为用户的主导策略将是规定的投标策略,在这种情况下,它可以准确地反映 CU 的预期使用情况。

无成本写锁账户

如前所述,Solana交易在执行时会预先指定它们将读取或写入的所有账户。然而,如今这种机制可以被滥用,以实质上无成本的方式全球锁定任何账户。例如:

  1. 我发送 TxA,这指定它将写入到 AccountA
  2. 领导者收到 TxA,安排它,并开始执行它。现在,AccountA 已被锁定 - 在TxA 完成执行之前,不能执行任何其他触及 AccountA 的交易。

问题源于这样一个事实:任何人都可以发送交易来锁定他们想要的任何账户。锁定账户是免费的,甚至可以锁定他们不使用的账户,这显然是一种垃圾邮件攻击手段。更糟糕的是,账户所有者无法控制谁可以锁定他们自己的账户。

TFM 提案和框架

每个区块链最终都必须决定如何在用户之间分配其有限区块空间的稀缺资源,这需要通过其 TFM 来实现。下面,我们将讨论几个可能对 Solana 有价值的相关 TFM 提议和框架。

多维区块链费用市场

大多数现有的费用市场都是一维的,围绕单个可替代的账户单位(例如以太坊中的燃气)构建。然而,购买的这种单一资源是许多底层不可替代资源(例如带宽、计算和存储)的代理。

例如,每个以太坊操作码 携带其消耗的一定固定数量的燃气(例如,ADD 使用 3 份燃气,而 MUL 使用 5 份燃气)。每个操作码的气体价格是根据其使用的底层资源以及网络中节点认为这些资源的昂贵程度而设定的。例如,可以通过在真实世界的硬件上运行基准来确定对操作成本的这种隐性衡量。

然而,也可以构建多维费用市场,对这些不同的不可替代资源单独定价,而不是将它们组合成一个单位。EIP-4844 是一个简单的二维费用市场,因为数据块有自己的费用市场,独立于以太坊执行燃气。

Diamandis、Evans、Chitra 和 Angeris 于 2022 年发表的这篇论文分析了如何构建这样的多维收费市场。他们的研究从网络设计者的角度出发,提出了 TFM 构建问题,目的是在区块链的交易和区块限制(例如智能合约限制或 CU/gas 限制)下,最大化区块链用户的福利(或总效用),减去上述用户的资源消耗。论文的主要成果是,尽管福利是未知的,但他们设计出了一种能使福利最大化的机制,并展示了如何显式构建上述机制。

**福利最大化(Welfare Maximizing):预期的分配和支付规则意味着消费者和矿工剩余的总和(大约)最大化。

他们的主要发现是,一种等效的 TFM 是可以实现的,即资源价格被设定为最小化验证者和用户之间的福利差异 —- 从福利最大化的角度来看,这样的价格理论上应导致区块最优化。虽然这项工作更多地被视为设计最优 TFM 的学术框架,但它有助于表明,对资源进行单独定价可以提高区块链的效率,使其在拥堵或垃圾邮件高发期更具弹性。基于控制器的基础费用机制(如 EIP-1559)被强调为一种潜在的方法,它可以在 Solana 和 SVM 链上运行得非常好,因为区块时间很短,允许基础费用根据用户需求和资源可用性的变化进行快速调整。

如前所述,本文的一个结论是,可以设计系统且计算高效的方法来帮助定义和更新区块链多维资源的定价。然而,一个自然而然的问题应该是:对哪些资源进行单独定价才有意义?在其他区块链环境中,已经开展了一些实际工作来做出这样的决定。例如,Penumbra 已经实施了一种多维资源定价形式,在其以隐私为中心的区块链上对全节点和终端用户设备使用的资源分别定价。

虽然 2022 年的论文一般讨论了基础资源(例如计算、带宽、存储)的多维定价,但也可以实现每个账户(即每个“状态”)的多维资源定价。每个帐户都被视为不同的资源。最近的这篇文章在原始论文的基础上对此进行了讨论。将帐户(而不是计算、存储、带宽等)作为底层资源单独定价,可能更易于实施,并能降低资源耗尽攻击风险。

写锁账户 (Write Lock Account) 的指数费用

Anatoly 最近发表关于SVM 执行经济学的文章之后,Tao Zhu与Anatoly合作,提出SIMD-0110。其主要动机是通过经济背压(即随着时间的推移有针对性地增加费用以降低垃圾邮件的诱因)来阻止垃圾邮件,从而提高网络资源的利用效率。失败的套利交易继续占据大约一半(或更多) 的Solana区块空间,因为垃圾邮件既合理又便宜得令人难以置信。

提案建议跟踪每个账户每个区块的 CU 使用率的指数移动平均值 (EMA),以实现这一目标。写锁账户的成本将根据其各自的尾随 CU 利用率呈指数增长,从而阻止垃圾邮件。其核心逻辑类似于 EIP-1559 将以太坊的全局基本费用设定为尾随区块中燃气使用量的函数。不过,这种 SIMD 在设置每个账户的本地基本费用市场时,要精细得多。

基于账户的不同写锁费用的基本实现思路如下:

  • 跟踪每个有争议账户在过去 150 个时段的 EMA 计算单元使用率。
  • 跟踪的账户数最多为 2048 个,其中只有争议最大、写锁成本率最高的账户才会被跟踪。
  • 如果账户的 EMA计算单元利用率 > 其最大 CU 限制的 50%,其写锁定成本率将增加 X%。如果<50%的限制,成本率将减少 X%。
  • V0 建议初始写锁成本率为 1000 micro-lamports/CU,成本率调整率为每个插槽 1%(请注意,鉴于提案的早期性质,此处的确切百分比可能会发生变化)。
  • 某一区块账户的写入锁定费是用写入锁定费率乘以交易申请的 CU 计算得出的。
  • 交易仍需支付签名费,可选的优先权费也依然存在。
  • 收取的写锁费用将被 100% 销毁。
  • 收取的优先权费用100%奖励。
  • 收集到的签名费50%被销毁,50%被奖励。

该提议将使 Solana(通常)DSIC 的写入锁定功能类似于 EIP-1559 使以太坊 TFM(通常)DSIC 和 MMIC [Rou23] 的写入锁定功能—除了在费用突然激增的情况下。

我们可以如下定义 MMIC 特性:

**短视矿工激励兼容性(MMIC, Myopic Miner Incentive Compatibility ):区块生产者通过不创建虚假交易并遵守 TFM 的既定规则来实现其效用最大化。短视意味着在判断效用最大化时,这一目标只涉及当前区块[Rou21]。

任何跟踪机制都是不完美的,因为它可能无法准确地代表当前的需求状态。例如,需求可能会在很长一段时间内处于较低水平(因此,动态基本费用较低),然后 NFT 铸币的需求突然飙升。这种情况可能发生在全球层面(如以太坊的 TFM),也可能发生在本地的每个账户层面(如 SIMD-0110 中考虑的情况),甚至更加不稳定。

然而,Solana 也受益于其极低的出块时间。这可以使基本费用更快地适应突如其来的需求冲击,具体取决于曲线移动的积极程度。在这里,收费控制器的形状非常重要。

事实上,这种对请求的CUs收取写锁费用的事实也适当地激励用户和开发人员准确估计交易的CU使用量。这避免了我们之前讨论的问题,即当前的平均签名基数对请求的CUs远超所需的情况(甚至可达到最大的140万CUs)没有任何惩罚。否则,只有优先费用在今天承担这种激励(因为它也是根据请求的CUs收费)。

这里一个潜在的批评是,基于账户的本地费用市场(尤其是这个提案,它要求为每个账户计算持续的 EMA)可能在计算上非常昂贵。这种类型的多维费用是无限制的,因为任何账户都可能出现拥塞,这可能会给这种 TFM 带来困难。然而,在 SIMD-0110 的情况下,通过设置可以在给定时间跟踪 CU 使用 EMA 的帐户数量上限来避免这种情况。

**高效可计算(Efficiently Computable):区块拍卖机制的设计必须能够针对给定的区块生产者(或构建者)进行高效计算——Eclipse 和 Solana 的时隙小于 400 毫秒,这对给定区块的最大计算时间提出了严格的限制。

考虑到即使实施了这一建议,Solana 区块的纳入仍将是非确定性的,因此仍有可能出现用户实时准确更新出价以确保其交易被纳入区块的问题。要进一步解决这个问题,需要对调度程序进行修改,我们将在下一节讨论。

Solana 默认调度程序的更改

正如前面所讨论的,这 ”调度程序”是Solana Labs 验证器客户端中包含的默认算法,用于调度交易的执行并连续构建区块。它在 Solana 的费用市场中发挥着极其重要的作用,尽管它的默认行为并未在协议中强制执行,因为验证者可能会选择运行其他算法。我们将在这里重点关注当前的调度程序和即将提出的更改,Andrew Fitzgerald 正在研究这些变更。

Solana的当前调度器在处理用户交易时引入了“抖动 (jitter)”,通过随机将它们分配到四个非投票交易线程中的一个(另外两个线程保留用于处理投票交易), 然后尝试按优先级费用对未完成的交易进行排序,并检查相关的锁定(’锁定抓取’),如下面的图表所示。在“银行阶段(Banking Stage)”期间,将提取多批交易以分配给线程 - 这是Solana验证者运行的过程,其中处理交易并在其下进行调度过程。

资料来源:Andrew Fitzgerald,Solana Banking Stage 和 Scheduler (调度器)

默认调度程序的一个重要问题是,在网络活动频繁的时期,每个线程的队列中经常充满了相互冲突的交易(例如,在 NFT 铸币或广泛预期的代币生成事件之前)。每个线程都可能包含具有相同或重叠读锁或写锁的交易,这意味着这些交易必须重新安排执行时间。然而,这样做的结果是,在极端最坏的情况下,四个默认调度线程中只有一个线程可以在给定时间内执行交易。

升级 Solana 默认调度器的关键在于从传统方法(名为 ThreadLocalMultiIterator 模式)过渡到新的调度方法,名为 CentralScheduler 模式。本文仅提供对变化的概述和分析。然而,可以在 Andrew Fitzgerald 的文章和 Harsh Patel 的 Tiny Dancer团队的附带@harshpatel_36138/whats-new-with-solana-s-transaction-scheduler-bcf79a7d33f7">摘要博客文章中找到更多信息。以下展示了新调度过程的概述。

资料来源:Andrew Fitzgerald,Solana Banking Stage 和调度器

新的调度器由一个中央单调度器负责接收来自通道的交易,然后检查相关的锁。之后,交易被分配给特定的并行工作线程执行。中央调度器可以查看特定工作线程使用的各种读写锁,从而确定新交易的最佳线程。在特定工作线程执行和处理交易的过程中,会向中央调度程序发送消息,以便其重新评估 Solana 状态中哪些部分被认为是锁定的。

调度程序使用一种称为“prio-graph(优先图)”的算法,这是一个直接的有向无环图,以最高优先级(收费)交易为起点,在给定的最高优先级交易和因锁重叠而与之冲突的后续最高优先级交易之间划线(或更准确地说,划边)。这(暂定)是针对一个 “前瞻 “窗口完成的,该窗口的预设大小为 2,048 个交易(可能会有变化),这些交易可以添加到图形中—以下图表显示了优先图在一组给定交易中的工作情况,其中交易之间的边代表冲突锁。

除了采用 prio-graph 调度程序之外,该版本还引入了额外的效率来帮助减少处理开销,例如删除银行阶段的冗余元素。新的调度程序应该会得到改进,显着降低 Solana 活动频繁期间写入失败和读取锁定的概率。由于新的默认调度程序,我们预计抖动会减少。尽管如此,鉴于区块构建过程的连续性,区块包容性仍将存在不确定性。

可返还账户写入 (PRAW, Program Rebatable Account Write) 费用

Godmode Galactus Max Schneider 所撰写的 SIMD-0016 提出了可返还账户写入(PRAW)费用。它们将给应用程序开发者提供显著的控制权,因为他们可以设定支付和这些费用的返还标准,从而在他们认为合适的情况下激励或抑制用户行为。

目前,Solana 程序无法惩罚对其状态进行写锁定的交易。PRAW 费用将允许 Solana 账户所有者对写入锁定其状态的失败交易收费。这些费用将转嫁到被锁定的可写账户。不过,账户所有者可以设置这些费用,以便在交易结束时,如果符合指定标准,这些费用将返还给用户。

特别是,这可以阻止用户写入锁定他们在交易执行中实际上并不使用的账户。由于 Solana 目前并没有事先检查特定账户是否会被写入锁定的特定交易使用,因此这种情况是有可能发生的。PRAW 为程序提供了一种方法,可以抑制那些锁定程序状态的交易,这些交易试图识别机会,并打算在执行时机会不再有效时还原。即使交易在执行过程中失败,这些费用也将适用。

相反,用户可以指定他们愿意在交易中支付的 PRAW 费用的最高金额。交易中指定的任何高于给定写锁定账户当前 PRAW 费用的费用都将被退还。

Solana 社区的成员指出了该提案的问题:不同项目完全自主运行的能力似乎不太理想,而且准确估算费用的能力也很困难。此外,可能有更简单、更统一的方法来处理这些围绕写锁定帐户的恶意问题,例如 SIMD-0110。

**抵制恶意破坏(Griefing Resistance):DSIC 的一个子集,其中用户不会被激励去歪曲其访问列表——错误地陈述其事务所需的资源[Gar23]。

PRAW 提议有可能无法防止垃圾邮件,因为它依赖于应用程序开发人员的充分能力: 1)能够将垃圾邮件与 “正常行为 “区分开来;2)自愿选择为他们应承担部分责任的负面外部性收取更多费用,而这样做可能并不符合他们的最佳利益,他们可以选择不这样做。

相比之下,虽然 Solana 研究社区的成员在引入 EMA 基本费用方面存在不可否认的分歧,但普遍同意添加一些与 CU 相关的基本费用组成部分。这可以激励开发人员准确地估计 CU 并有效地使用 CU。

最后的想法

Solana 独特的工程和性能目标需要独特的 TFM 考虑。当然,简单地将以太坊现有的收费市场移植到 Solana 并不能解决问题,但我们可以从中吸取宝贵的经验教训。这与以下两种机制都有很大关系:

  1. 协议内 - 共识执行的 TFM(例如,EIP-1559SIMD-0110
  2. 协议外 - 通过 MEV-Boost、Solana 调度程序改进和 Jito 拍卖进行 PBS

对于 Solana 和以太坊来说,协议内机制和协议外机制似乎都有可能共存并共同发展。如何平衡这两种机制是设计这些系统的基本问题之一。围绕 SIMD-0110 的争论往往集中在两种对立的观点上:

  1. 调度器和网络改进 将减少抖动,足以解决这里描述的问题,因此不必对协议内的TFM进行重大改变。
  2. 虽然需要进行协议外的调度器和网络改进,但它们本质上是不够的。需要协议内的经济反压。

在这两种情况下,某种形式的多维资源定价显然也很有价值。以太坊已开始在基础资源层面推行这种 TFM,EIP-4844 将 blob 数据从执行市场中分离出来。相反,Solana 正在个人账户层面推进多维资源定价,开创 “本地费用市场”。

这里的 TFM 研究是最前沿的,研究人员不断寻找新的创新方法来改进索拉纳和其他连锁店的收费方式。我们乐观地认为,这里讨论的所有建议都将继续使索拉纳变得更加高效、可扩展、用户友好和经济上可持续。

随着 Eclipse 主网发布的临近,我们也很高兴分享更多关于我们将如何将这些现有的工作应用到我们自己的TFM的信息,这肯定会在未来的几年中继续发展。我们打算在这个领域进行实验并推动机制。模块化范例的一个重要好处是,它允许不同生态系统的研究和工程更容易交叉传播。这种实验的速度现在只会继续增加,使得长期在此建设的每个人都受益。

声明:

  1. 本文转载自[Eclipse],转发原标题‘Solana & Ethereum 交易费用机制:改进 Solana 的 TFM 的建议’,所有版权归原作者所有 [Eclipse],如对转载有异议,请联系Gate Learn团队,团队会根据相关流程尽速处理。
  2. 免责声明:本文所表达的观点和意见仅代表作者个人观点,不构成任何投资建议。
  3. 文章其他语言版本由Gate Learn团队翻译, 在未提及Gate.io的情况下不得复制、传播或抄袭经翻译文章。
即刻開始交易
註冊並交易即可獲得
$100
和價值
$5500
理財體驗金獎勵!
It seems that you are attempting to access our services from a Restricted Location where Gate.io is unable to provide services. We apologize for any inconvenience this may cause. Currently, the Restricted Locations include but not limited to: the United States of America, Canada, Cambodia, Cuba, Iran, North Korea and so on. For more information regarding the Restricted Locations, please refer to the User Agreement. Should you have any other questions, please contact our Customer Support Team.