You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Solana Raydium上计算兑换输出金额(amountOut)?

在Solana Raydium上计算兑换输出金额(amountOut)的正确方式

你的代码思路没问题,但要注意几个细节来保证计算准确:

  • 参数格式修正:

    • slippage 需传入数值类型而非字符串,直接写5就代表5%滑点,字符串格式会干扰计算逻辑
    • amountIn 你的写法是对的,必须是对应代币的最小单位数值(比如USDC的1单位对应1e6最小单位,5 USDC就写5000000)
    • currencyOut 要确保是当前池子内的有效代币地址,和poolKeys中的代币信息匹配
  • 修正后的代码示例:

const poolInfo = await Liquidity.fetchInfo({
  connection: raydiumSwap.connection,
  poolKeys: poolKeys,
});
const amountOut = Liquidity.computeAmountOut({
          poolKeys,
          poolInfo,
          amountIn: '5000000',
          currencyOut: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
          slippage: 5,
        }).amountOut;
console.log(amountOut);
  • 额外注意点:
    • 计算返回的amountOut是代币最小单位数值,比如USDC结果需要除以1e6才能得到实际可获得的USDC数量
    • 先确认poolInfo是否成功获取到池子储备金(reserves)数据,这是计算的核心依据,如果储备金为空或错误,计算结果必然异常
    • 要保证poolKeys是目标交易对的正确池子地址,错用其他池子的key会导致计算完全偏离预期

内容的提问来源于stack exchange,提问作者forexmp45

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 22:42:35