跳转到主要内容
本页内容由 AI 自动翻译,所有内容以英文版本为准。查看英文版 →
这个脚本做什么。 从 RPC 加载 CPMM 池,以 0.5% 滑点报价,构建交易,用你的密钥对签名,然后提交。全过程用约 30 行代码完成。

设置

确保你已阅读快速开始前置条件,并且已配置 RPC_URLKEYPAIR 以及安装了依赖。

脚本

保存为 swap.mjs

运行它

选择任何你有流动性的 CPMM 池。以标准的 SOL/USDC CPMM 池为例:
预期输出:

刚才发生了什么

  1. Raydium.load 初始化了 SDK — 获取全局配置,设置钱包上下文。
  2. getPoolInfoFromRpc 直接从 RPC 拉取实时池状态(不使用 API 缓存)。对于高价值交换,你总是希望获取最新状态。
  3. CurveCalculator.swap 计算了扣除池手续费后的常数乘积输出。这与程序在链上运行的数学完全相同,因此你可以对比链下和链上的报价。
  4. raydium.cpmm.swap 用 V0 格式(启用地址查询表)构建交易,并添加了明确的计算预算配置。计算预算小费有助于交易在繁忙时段落地。
  5. execute({ sendAndConfirm: true }) 签名、发送并等待确认。

常见错误

  • Pool not foundPOOL_ID 错误,或指向了错误的集群(将 mainnet 池 ID 用于 devnet RPC,等等)。
  • Insufficient funds for transaction — 钱包中 SOL 不足,无法支付交换输入 + 手续费 + ATA 租金。
  • Slippage tolerance exceeded — 池价格在报价和执行之间变动。重新运行;或提高 slippage 参数;或使用 SDK 的 computeAmountOut,它总是重新获取准备金。
  • Token account not initialized — 输出代币的 ATA 不存在,隐式创建指令落地但因某种原因失败;检查钱包的 SOL 余额后重试。

后续