Solana交易优先级异常:高手续费低CU使用却确认慢于低费高CU交易
Solana交易优先级异常问题(Quicknode RPC环境)
交易对比
我方交易
- 计算单元单价:8.38 lamports/计算单元
- 优先手续费:0.001 SOL(约0.1738美元)
- 分配计算单元:119,283
- 实际使用计算单元:96,226
- 结果:需多次尝试,耗时数分钟才确认
Phantom交易
- 计算单元单价:1.3 lamports/计算单元
- 优先手续费:0.0004 SOL(约0.06954美元)
- 分配计算单元:307,893
- 实际使用计算单元:243,618
- 结果:瞬间成功,数秒内确认
优先级指标矛盾点
按常规网络优先级规则,我方交易应被优先处理:
- 计算单元单价是对方的6.4倍(8.38 vs 1.3)
- 优先手续费是对方的2.5倍(0.001 vs 0.0004 SOL)
- 实际计算单元使用量仅为对方的39.5%(96k vs 243k)
已知计算单元分配会影响验证器偏好,但本场景中我方交易占用更少区块空间、手续费更高,完全符合验证器优先选择的标准:
- 验证器偏好CU使用量更低的交易
- 验证器优先处理手续费更高的交易
- 区块空间限制为1.4M CU,我方交易占用空间远小于对方
但实际情况完全相反,我方交易确认耗时极长,求解释或类似问题的解决方案。
相关配置与代码
Jupiter Swap配置
const swapResponse = await axios.post("https://quote-api.jup.ag/v6/swap", { quoteResponse: quoteResponse.data, userPublicKey: user, wrapAndUnwrapSol: true, computeUnitPriceMicroLamports: 1200000, // 对应约8.38 lamports/CU dynamicComputeUnitLimit: true });
交易发送逻辑
const sendAndConfirmTx = async (sendConnection, signedTx) => { const rawTransaction = bs58.decode(signedTx); const signature = await sendConnection.sendRawTransaction(rawTransaction, { skipPreflight: true, maxRetries: 2, }); let retries = 0; while (true) { try { await sendConnection.confirmTransaction(signature); break; } catch (e) { if (retries > 5) { throw e; } retries += 1; } } return signature; };
已将手续费设为较高水平但无效果,怀疑是否是Quicknode未正确转发交易?
内容的提问来源于stack exchange,提问作者Kevin K
相关产品推荐
相关产品推荐

