本页内容由 AI 自动翻译,所有内容以英文版本为准。查看英文版 →
这个脚本做什么。 从 RPC 加载 CPMM 池,以 0.5% 滑点报价,构建交易,用你的密钥对签名,然后提交。全过程用约 30 行代码完成。
设置
确保你已阅读快速开始前置条件,并且已配置RPC_URL、KEYPAIR 以及安装了依赖。
脚本
保存为swap.mjs:
运行它
选择任何你有流动性的 CPMM 池。以标准的 SOL/USDC CPMM 池为例:刚才发生了什么
Raydium.load初始化了 SDK — 获取全局配置,设置钱包上下文。getPoolInfoFromRpc直接从 RPC 拉取实时池状态(不使用 API 缓存)。对于高价值交换,你总是希望获取最新状态。CurveCalculator.swap计算了扣除池手续费后的常数乘积输出。这与程序在链上运行的数学完全相同,因此你可以对比链下和链上的报价。raydium.cpmm.swap用 V0 格式(启用地址查询表)构建交易,并添加了明确的计算预算配置。计算预算小费有助于交易在繁忙时段落地。execute({ sendAndConfirm: true })签名、发送并等待确认。
常见错误
Pool not found—POOL_ID错误,或指向了错误的集群(将 mainnet 池 ID 用于 devnet RPC,等等)。Insufficient funds for transaction— 钱包中 SOL 不足,无法支付交换输入 + 手续费 + ATA 租金。Slippage tolerance exceeded— 池价格在报价和执行之间变动。重新运行;或提高slippage参数;或使用 SDK 的computeAmountOut,它总是重新获取准备金。Token account not initialized— 输出代币的 ATA 不存在,隐式创建指令落地但因某种原因失败;检查钱包的 SOL 余额后重试。
后续
sdk-api/typescript-sdk— 完整 SDK 参考。products/cpmm/instructions— 链上交换指令是什么样子。integration-guides/priority-fee-tuning— 为生产环境调整computeBudgetConfig的大小。

