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

设置

确保你已阅读 快速开始前置条件,并已安装 RPC_URLKEYPAIR 和相关依赖。

脚本

保存为 swap.mjs
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 错误,或你指向了错误的集群(对 devnet RPC 使用 mainnet 池 ID,等等)。
  • Insufficient funds for transaction — 你的钱包没有足够的 SOL 用于交换输入 + 费用 + ATA 租金。
  • Slippage tolerance exceeded — 池的价格在报价和执行之间发生了变化。重新运行;或提高 slippage 参数;或使用 SDK 的 computeAmountOut,它总是重新获取储备。
  • Token account not initialized — 输出代币的 ATA 不存在,隐式创建指令落地但因某种原因失败;检查你的钱包 SOL 余额并重试。

下一步