getRecentPrioritizationFees 可按可写账户集合返回近期优先费样本。本文用“局部费用市场”视角解释150区块缓存、账户锁过滤和分位数策略。
同一时刻,两笔 Solana 交易争用的可写账户不同,所处拥堵也可能不同。无参数查询只能给出较宽泛的近期样本;把目标交易会写入的关键账户交给 RPC,才能更接近它实际面对的局部竞争。
样本窗口有多短
getRecentPrioritizationFees返回近期slot与prioritizationFee样本,节点缓存当前最多保存约150个区块的数据。
返回数组中的每一行包含 slot 和 prioritizationFee。节点缓存最多约 150 个区块,这不是固定的分钟数,也不是全网永久历史。采样程序要保存 endpoint 与 slot 范围,不能只保存一列费用。
账户集合决定“局部”含义
调用可传入最多128个可写账户地址;返回样本反映同时锁定所有这些账户为可写的已观察交易,省略参数则是不按账户锁过滤的样本。
无参数 -> 最近费用样本,不按可写账户锁过滤
[A, B] -> 观察到同时把 A 和 B 锁为 writable 的交易样本
上限 -> 最多 128 个账户地址
参数不是“任一账户匹配”,而是全部提供账户作为可写锁的交集条件。把所有账户不加选择地塞入,可能得到稀疏甚至空样本。先从交易消息中识别真正 writable 的高争用账户,再分层查询。
用三组请求建立对照
第一组无参数,观察整体近期分布;第二组只放核心程序状态或市场账户;第三组放完整关键可写集合。比较样本数量、中位数和高分位数。如果局部组显著更高,说明全局样本低估了目标路径竞争;如果为空,应返回“证据不足”,而不是自动使用零。
样本不是报价单
结果是节点近期观察值,不是目标交易必然需要的报价;账户集合、计算单元价格、拥堵变化和采样节点都会影响最终优先费选择。
| 决策输入 | 推荐处理 |
|---|---|
| 历史样本 | 计算中位数与高分位 |
| 业务紧急度 | 选择不同安全系数 |
| 计算单元 | 与Compute Unit Limit配套 |
| 费用上限 | 在签名前硬性约束 |
| 发送结果 | 记录落地Slot和实际费用 |
采用最大值容易被离群点抬高,采用最小值则可能长期排队。策略应通过历史成功率回测,并在费用超限时停止发送,而不是无限加价。
两个RPC节点为何不同
它们可能拥有不同缓存窗口、后端 Slot 和观察到的交易集合。先对齐 finalized Slot 与采样时间,再比较分布。若服务入口轮换后端,按 endpoint 与 identity 分组;不要把交错样本画成一条连续曲线。
当前未知项是:不同RPC后端的缓存与采样时点可能不同,费用策略应保存slot并使用分位数和上限,而不是机械采用单个最大值。
费用策略的审计记录
保留目标交易可写账户集合、三组原始响应、分位数算法、选定的 compute unit price、费用上限、发送时间与确认 Slot。这样才能回答“为何当时选择这个费率”,而不是事后用行情解释。
一手来源
- Solana getRecentPrioritizationFees:用于核对接口字段、返回语义和适用边界;访问于 2026 年 7 月 25 日。
- Solana Transaction Fees:用于核对接口字段、返回语义和适用边界;访问于 2026 年 7 月 25 日。
相关基础可参考 Solana优先费基础、优先费设置方法、getFeeForMessage费用估算。费率会变化,本文不承诺交易速度,也不构成投资建议。
Solana局部优先费怎么读的复核演练
选取一笔可重复构造的交易,分别用无参数、单个高争用账户和完整关键可写账户集合采样。复核者比较样本数量与分位数,并在局部样本为空时明确返回未知。最后记录实际确认 Slot 与费用,用于后续回测策略,而不是把一次成功当作永久参数。复盘时同时保存采样节点identity,排除后端轮换造成的伪趋势。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。