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 自動翻譯,所有內容以英文版本為準。查看英文版 →
指令概覽
| 標籤 | 識別碼 | 精確 | 變體 |
|---|---|---|---|
| 0 | SwapBaseInWithUserAccount | 輸入 | Legacy |
| 1 | SwapBaseOutWithUserAccount | 輸出 | Legacy |
| 5 | CreateSyncNative | — | 工具 |
| 6 | CloseTokenAccount | — | 工具 |
| 8 | SwapBaseIn | 輸入 | 當前 |
| 9 | SwapBaseOut | 輸出 | 當前 |
- 精確: 呼叫者固定的金額類型(輸入 = 精確輸入
amount_in;輸出 = 精確輸出amount_out)。 - 變體: Legacy 指令即使路由中無 CLMM 跳躍也需要非空的
limit_prices雙端佇列。當前指令(8 / 9)將空的limit_prices視為「無檢查」,這是新程式碼的推薦方式。
SwapBaseIn)或標籤 9(SwapBaseOut),除非你有特別的理由呼叫 Legacy 變體。
當前交換指令(推薦)
這些是新程式碼應該使用的進入點。引數結構與 Legacy 變體相同,但limit_prices 可以為空。
SwapBaseIn(標籤 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(標籤 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— 如標籤 8。
Legacy 交換指令
這些較舊的變體在實際計畫上仍可呼叫,出於完整性在此記錄。對於新程式碼,優先使用標籤 8 / 標籤 9;下面兩個 Legacy 變體即使不涉及 CLMM 跳躍也需要非空的limit_prices 雙端佇列,這使其使用起來不夠便利。
SwapBaseInWithUserAccount(標籤 0)
精確輸入多跳躍交換,形狀與標籤 8 相同但有更嚴格的 limit_prices 要求。
引數
SwapBaseIn(標籤 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— 此 Legacy 變體拒絕空的limit_prices。SqrtPriceX64。
SwapBaseOutWithUserAccount(標籤 1)
精確輸出交換,是 SwapBaseOut(標籤 9)的 Legacy 對應。
引數
- 呼叫者使用
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(標籤 5)
在一個步驟中建立(若缺少)並同步 wSOL ATA。在交換時包裝 SOL 時很便利。
引數
- 若
user_wsol_ata不存在則建立它。 - 從簽署者的原生 SOL 餘額轉移
amountlamports 到 ATA。 - 在 ATA 上呼叫
SyncNative使其代幣餘額反映新的 lamports。
InvalidOwner—user_wsol_ata的擁有者不是簽署者。
CloseTokenAccount(標籤 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清單。


