如果你 2024 年以来发过任何 Solana 交易,你就用过 priority fee——哪怕你自己没意识到。它是 Solana 在拥堵时的定价机制。搞懂它怎么工作、什么时候该多付、什么时候多付是浪费——是发真量时杠杆最高的知识之一。
先把概念分清楚: priority fee 是 Solana 协议层的链上 gas fee,用来在拥堵时争夺打包顺序——给得越高,越容易进入打包队列前列。这跟 BoltTx 的 tip 不是一回事:BoltTx tip 是付给 BoltTx 的小费,用来换提交侧的优先级。两个一起调好,上链速度才最快。这一篇专门讲 priority fee。
这篇过一遍 priority fee 实际是什么、怎么定价、设它的常见模式、为什么"每笔交易都给最大 priority fee"是花真钱的坏策略。
Priority Fee 实际是什么
Solana 交易有两个成本组件:
Base fee。 每个签名固定 5000 lamports。美元上忽略不计。
Priority fee。 可选、按 CU(compute unit)收费、Solana 协议层的链上 gas fee,作用是给打包队列一个信号:"先打包我"。以 microlamports 每 CU 计价。
总 priority fee = compute_unit_price * compute_unit_limit。一笔交易 CU 价 100_000 microlamports/CU、CU 上限 200_000,总 priority fee 就是 200_000 * 100_000 / 1_000_000 / 1_000_000_000 = 0.00002 SOL。
Validator 按 priority fee 排序打包队列。priority fee 越高,越可能在下一个 slot 上链。
Compute Unit 是什么
Compute unit (CU) 是 Solana 衡量计算工作的单位。每条指令消耗一些 CU;交易有 CU 总预算上限;超预算的交易会失败。
两个关键值:
- Compute unit limit。 你交易能消耗的 CU 上限。默认
200_000。用ComputeBudgetProgram.setComputeUnitLimit显式设置。 - Compute unit price。 每 CU 的 priority fee。默认 0(没有 priority fee)。用
ComputeBudgetProgram.setComputeUnitPrice设置。
把这两个值设对,是改善交易可靠性最常见的杠杆之一:
import { ComputeBudgetProgram, Transaction } from "@solana/web3.js";
const tx = new Transaction()
.add(ComputeBudgetProgram.setComputeUnitLimit({ units: 250_000 }))
.add(ComputeBudgetProgram.setComputeUnitPrice({ microLamports: 100_000 }))
.add(yourActualInstruction);
为什么"每次都给最大 priority fee"是坏策略
朴素本能是"给最大可能的 priority fee——我要交易上链"。
这是个坏策略,几个原因:
大部分钱是浪费的。 一旦你出价超过第二高的交易,多给的 priority fee 不会让你更快上链。多出来的钱白花了,对你没好处。
累加起来真不少。 每天 1000 笔交易、每笔都给最大 priority fee 的机器人,付的钱是它实际需要的 5-10 倍。一年下来是真金白银。
边际交易反而不盈利了。 交易预期利润本来就不高时,给最大 priority fee 会让这笔交易自己变成亏损。结果就是边际尝试在白白送钱。
网络平静时根本没必要。 非高峰期小 priority fee 也能快速上链。给最大就是浪费钱。
正确的策略是按利润动态调整 priority fee:根据交易的预期利润决定给多少。
正确设 Priority Fee
合理的 priority fee 公式大致是:
priority_fee = max(floor, expected_profit * fee_fraction)
其中:
- floor 是你进入竞争所需的最低 priority fee。看当前网络状况;从最近几个 slot 可以观测到。
- expected_profit 是交易上链后你预期的毛利。
- fee_fraction 是你愿意从预期利润里拿出来付的比例。5-15% 是合理范围。
对于预期利润很高的交易(大套利价差、热门 mint),可以激进给到预期利润的相当一部分。边际交易就刚好压过地板,接受有些尝试上不去。
需要的数据:
- 每个 slot 的最近 priority fee 数据。 现在地板在哪?上链交易付的中位数是多少?大多数 RPC 都暴露这个;你的 RPC 不暴露,你就是在盲飞。
- 机器人的预期利润估算。 这是策略侧的事,不是 RPC 侧。交易逻辑应该给每笔交易标上预期毛利。
- 每笔签名级别的遥测做验证。 交易实际上链了吗?成交价多少?这个 priority fee 数额预测对了上链没?
不同策略的模式
不同业务场景下 priority fee 策略不一样:
套利机器人。 价差宽的机会值得高 priority fee;边际机会就只清地板。接受有些边际尝试上不去。
Sniper 机器人。 热门发币时积极给 priority fee。机会窗口短、预期利润高。这种触发窗口里别想着省钱。
做市商。 给够 priority fee 让 cancel 和 replace 可预测地上链。给多了利润流走;给少了卡在过时报价上。
刷量机器人。 低 priority fee 策略。刷量本来就是靠多笔交易做出来,给最大 priority fee 直接毁掉经济模型。
DCA / 定时买入。 不急。低 priority fee + 接受偶尔重试。
手动用户交易。 用钱包默认值;一次性 swap 一般行。
常见错误
系统性烧钱的几种:
用静态固定值。 "我永远给 100k microlamports/CU"——这就是把钱留在桌上。网络条件在变,你的 priority fee 也该跟着变。
忽略 CU 上限。 CU 价格设对了但 CU 上限设错,意味着你为容不下你交易的预算付 priority fee。
"以防万一"把 CU 上限调超大。 一笔实际只用 150k CU 的交易给 500k CU 预算,意味着你为浪费掉的 350k CU 付了 priority fee。先 profile 实际用量,再按测量值的 1.2-1.5 倍设预算。
memecoin 机器人非高峰期还在给最大值。 没什么活动的时候,每次探测都给最大 priority fee 就是烧钱。
网络忙的时候反而不给。 有些机器人操作者忘了设 priority fee,结果交易上不去、blockhash 过期、静默失败。
怎么测你在花什么
值得给你机器人跑一遍的诊断:
- 把上周付的总 priority fee 加起来
- 把上链交易产生的总毛利加起来
- 算比例
- 如果 priority fee 占毛利 >15-20%,你在过度给
- 如果 priority fee 占毛利 <2%,你可能给少了(或者你想上链的交易其实没上)
合理比例看策略不同。套利机器人通常付毛利的 5-10% 当 priority fee。Sniper 机器人热门窗口期能付到 15-25%。刷量机器人应该 <2%。
这周可以做什么
如果你对机器人经济模型不满意:
- 审一下 priority fee 策略。 是不是用静态值?换成按利润动态调整。
- Profile 实际 CU 用量。 用模拟测真实消耗,按 1.2-1.5 倍设预算。
- 从 RPC 拿 priority fee 遥测。 最近地板值。大多数生产 RPC 都暴露这个。
- 给交易标预期利润。 交易逻辑应该已经知道,把它传给执行层。
- 算 priority fee 占毛利的比例。 这一个指标就告诉你是给多了还是给少了。
- 别追求完美。 70% 完成度的动态调整,胜过还在设计阶段的 100% 完美方案。
BoltTx 提供什么
BoltTx 为"priority fee 优化"重要的交易发送负载提供:
- 亚秒级确认带一致行为——你设对的 priority fee 真能让交易上链
- 专属 SWQoS + 优先级连接——你的交易在拥堵下也能优先获得上链能力
- 每笔签名级别的投递遥测——精确测哪些 priority fee 值在哪些 slot 上链
- 原生 Anti-MEV——你设的 priority fee 不会变成补贴跟你抢路径的三明治机器人
上面说的 priority fee 始终是 Solana 协议层的链上 gas fee。BoltTx 这边收的是另一种叫 tip 的小费——你给得越多,你的交易在 BoltTx 的提交优先级越高、上链速度越快,而且只有交易真正上链时才扣。建议把 priority fee 设得明显高于当前网络平均水平,再配合 BoltTx tip,两个一起调好,上链速度才最快。
import { Connection } from "@solana/web3.js";
const connection = new Connection(
"https://bolttx.io/?api-key=YOUR_API_KEY",
"processed"
);
免费档注册。用真实量配显式 priority fee 策略跑一周,对比每个 priority fee 等级下的上链率,和你当前配置比一比。
常见问题
Solana DEX swap 的典型 priority fee 是多少? 看网络状况。拥堵期间 100k-500k microlamports/CU 很常见。平静期低得多。永远查最近的地板值。
不设 priority fee 会怎样? 默认是 0。没拥堵的时候交易能上链,拥堵时大概率上不去。生产代码永远要显式设置。
模拟和真实提交需要给一样的 priority fee 吗? 模拟可以不给(它只是模拟)。真提交时根据预期利润设。
Jito tip 跟 priority fee 是一回事吗? 不是。Priority fee 是 Solana 协议层的链上 gas fee。Jito tip 是走 Jito 拍卖的、用来换 MEV 保护或 bundle 打包的费用。两套不同机制;有时候两个一起用。
所有 RPC 都能拿到 priority fee 数据吗?
大多数通过 getRecentPrioritizationFees 暴露。质量参差。生产级 RPC 应该可靠地暴露最近的地板值。