Skip to main content

小费规则

您通过 Apex 发送的每笔交易都必须包含恰好一笔满足以下所有条件的小费:
1

一条 SystemProgram 转账

小费是一条普通的 SystemProgram::Transfer 指令,转给已公布的 Apex 小费账户之一。
2

位于顶层

该转账是交易的顶层指令。在您的程序内部通过 CPI 进行的转账不算数。
3

由签名者出资

支付小费的账户需要对交易签名。它不必是费用支付者。
4

小费账户位于静态密钥中

小费账户出现在交易的静态账户密钥中。不要通过地址查找表加载它。
5

不低于您所在等级的下限

标准等级的下限为 0.001 SOL(1,000,000 lamports)。您的密钥所属等级可能设有不同的下限。
没有小费、有多笔小费或小费低于下限的交易,会在发送到任何地方之前被拒绝。拒绝信息会告诉您违反了哪条规则,低于下限的消息还会注明您的下限。参见错误与速率限制

只有上链才付费

小费位于您的交易内部。如果交易没有上链,转账就不会执行,您无需支付任何费用。被拒绝、已过期或被丢弃的交易不会花费您任何小费。

获取小费账户

在任意 Apex 端点上调用 JSON-RPC getTipAccounts。无需 API 密钥。
响应是一个 base58 地址数组:
请在启动时获取该列表并缓存。每笔交易随机选择一个账户。将小费分散到多个账户,可以避免您的交易争抢同一账户的写锁。

已发布的账户

主网小费账户,全部是小费程序 9ig7pd4gqe2m16ACGPbPo4HfMGD3ba38poDhXEayx7EF 的金库。getTipAccounts 是权威列表:端点只接受其中的账户,任何变更也会先出现在那里。每个地址都以 APeX 开头,被替换的账户一眼就能看出来。

添加小费指令

将它与您自己的指令一起添加到交易的指令列表中。快速入门展示了完整的程序。

小费的去向

小费账户是 OrbitFlare 链上小费程序的金库。只有该程序可以从中扣款。 当最终让您的交易上链的是 Jito 路径时,小费减去 5,000 lamports 基础费用后的金额,会在与您的交易相同的捆绑包中作为出价支付给 Jito。您无需另外添加 Jito 小费。一笔 Apex 小费覆盖全部三条路径。 因此,小费越高,在 Jito 拍卖中的出价就越高。无论哪条路径让交易上链,您花费的金额都相同,因为小费就是您签名的那笔转账。

小费与优先费是两回事

Apex 负责把您的交易送达领导者。领导者的调度器仍然按优先费对交易排序,优先费等于您的计算单元价格乘以计算单元上限。请在每笔交易上同时设置这两项:
  • 计算单元上限应接近交易的实际用量。过大的上限会降低您每单元的有效优先级,并浪费区块空间。
  • 计算单元价格应符合您所涉及账户的当前市场行情。
这些指令适用于 legacy 和 v0 交易。交易 v1 改为在消息的 TransactionConfig 中设置计算预算。 关于如何确定这两项的大小,参见最佳实践