Documentation Index
Fetch the complete documentation index at: https://docs.raydium.io/llms.txt
Use this file to discover all available pages before exploring further.
本页内容由 AI 自动翻译,所有内容以英文版本为准。查看英文版 →
指令总览
| Tag | Discriminator | 精确 | 变体 |
|---|---|---|---|
| 0 | SwapBaseInWithUserAccount | 输入 | 旧版 |
| 1 | SwapBaseOutWithUserAccount | 输出 | 旧版 |
| 5 | CreateSyncNative | — | 工具 |
| 6 | CloseTokenAccount | — | 工具 |
| 8 | SwapBaseIn | 输入 | 当前 |
| 9 | SwapBaseOut | 输出 | 当前 |
- 精确: 调用者固定的金额类型(输入 = 精确输入
amount_in;输出 = 精确输出amount_out)。 - 变体: 旧版指令要求
limit_prices非空,即使路由中没有 CLMM hop。当前指令(8 / 9)允许limit_prices为空,表示「不进行检查」,推荐在新代码中使用。
SwapBaseIn) 或 tag 9(SwapBaseOut),除非你有特别的理由调用旧版变体。
当前交换指令(推荐)
这些是新代码应该使用的入口点。参数结构与旧版变体相同,但limit_prices 可以为空。
SwapBaseIn (tag 8)
精确输入多跳交换。调用者固定 amount_in;路由器逐跳执行,并断言最终金额不低于 minimum_amount_out。
参数
- 调用者使用
user_input_ata签名。 user_input_ata.amount >= amount_in。- 每个中间用户 ATA 存在且由调用者拥有。
- 如果任何跳是 CLMM 且你要强制执行价格边界,请为每个 CLMM 跳提供一个
limit_prices条目。
user_input_ata余额减少amount_in。user_output_ata余额增加 ≥minimum_amount_out。- 每个中间 ATA 的净变化为零(路由消费前一跳产生的数量)。
ExceededSlippage— 最终输出 <minimum_amount_out。InvalidInput— 路由为空、账户格式不正确或不支持的pool_program。SqrtPriceX64— CLMM 跳的价格超出提供的limit_prices边界(仅当limit_prices非空时)。
SwapBaseOut (tag 9)
精确输出多跳交换。调用者固定 amount_out;路由器断言实际输入不超过 maximum_amount_in。
参数
- 调用者使用
user_input_ata签名;余额>= maximum_amount_in(最坏情况)。 - 每个中间 ATA 和输出 ATA 存在。
user_input_ata减少所需的实际金额(≤maximum_amount_in)。user_output_ata增加恰好amount_out。
ExceededSlippage— 所需输入超过maximum_amount_in。InvalidInput、SqrtPriceX64— 与 tag 8 相同。
旧版交换指令
这些较旧的变体在实时程序上仍可调用,在此出于完整性而记录。对于新代码,优先使用 tag 8 / tag 9;下面两个旧版变体都要求limit_prices 非空,即使没有 CLMM 跳,这使得它们的使用变得笨拙。
SwapBaseInWithUserAccount (tag 0)
精确输入多跳交换,在形状上与 tag 8 相同,但有更严格的 limit_prices 要求。
参数
SwapBaseIn(tag 8)形状相同。所有中间槽必须是调用者拥有的 ATA。
前置条件
- 调用者使用
user_input_ata签名。 user_input_ata.amount >= amount_in。- 所有中间用户 ATA 存在且由调用者拥有。
limit_prices非空(每个 CLMM 跳一个条目;若没有 CLMM 跳,用占位符填充)。
user_input_ata余额减少amount_in。user_output_ata余额增加 ≥minimum_amount_out。
ExceededSlippage。InvalidInput— 在此旧版变体上拒绝空的limit_prices。SqrtPriceX64。
SwapBaseOutWithUserAccount (tag 1)
精确输出交换,SwapBaseOut(tag 9)的旧版对应项。
参数
- 调用者使用
user_input_ata签名。 user_input_ata.amount >= maximum_amount_in。- 所有中间用户 ATA 存在且由调用者拥有。
limit_prices非空。
user_input_ata减少所需的实际金额(≤maximum_amount_in)。user_output_ata增加恰好amount_out。
ExceededSlippage。InvalidInput。SqrtPriceX64。
工具指令
CreateSyncNative (tag 5)
在一步内创建(如果缺失)并同步 wSOL ATA。在与交换一起内联包装 SOL 时很方便。
参数
- 如果
user_wsol_ata不存在,则创建它。 - 从签名者的原生 SOL 余额转入
amountlamports 到 ATA。 - 在 ATA 上调用
SyncNative,使其代币余额反映新增 lamports。
InvalidOwner—user_wsol_ata的所有者不是签名者。
CloseTokenAccount (tag 6)
关闭一个代币账户并将其租金返回到目的钱包。与 CreateSyncNative 配对:在 wSOL 腿交换后,调用 CloseTokenAccount 以恢复支持 wSOL ATA 的租金。
参数 — 无。
账户
- 关闭
token_account_to_close。 - 将租金免除 lamport 余额(主网上标准 SPL Token 账户约 0.00203928 SOL)转入
destination_for_rent。 - 代币账户必须有零代币余额。
InvalidOwner— 调用者不是 ATA 所有者。- 代币账户余额非零。
后续步骤
products/routing/code-demos— 用 TypeScript 构建这些指令。products/routing/accounts— 每个 AMM 的分发密钥和每跳账户布局。reference/error-codes— 完整的RouteError列表。


