跳轉到主要內容

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 自動翻譯,所有內容以英文版本為準。查看英文版 →

帳戶配置:使用者 ATA 貫穿始終

每個啟用的交換變體都會透過使用者控制的 ATA 路由中繼代幣。使用者擁有輸入 ATA、每個中繼 ATA 以及最終輸出 ATA。在活躍表面上沒有共享的/路由器擁有的中繼代幣帳戶。 特性:
  • 使用者對每個中繼代幣擁有一個 ATA。
  • 使用者在帳戶列表中提供每個 ATA。
  • 每個中繼 ATA 必須已存在(對於 wSOL 使用 CreateSyncNative 初始化,或在路由之前使用 SPL 關聯代幣帳戶程式為任何其他 mint 初始化)。
  • 路由器在每個跳點時從一個 ATA 轉出並轉入下一個池的金庫。
  • 每個中繼 ATA 在每條路由結束時的餘額與開始時相同 — 路由消耗上一個跳點產生的内容。
路由 USDC → SOL → STEP 的範例流程:
Accounts list:
  [
    USDC_input_ata (user, signer),
    SOL_intermediate_ata (user),
    STEP_output_ata (user),
    token_program,

    amm_program_1, *amm1_accounts,    // hop 1: USDC → SOL
    amm_program_2, *amm2_accounts,    // hop 2: SOL → STEP
  ]

Hop 1: USDC_input_ata → AMM1 → SOL_intermediate_ata
Hop 2: SOL_intermediate_ata → AMM2 → STEP_output_ata

各跳點帳戶配置

每個跳點的帳戶連續傳遞。路由器透過讀取每個跳點塊中的第一個帳戶(程式 ID)來識別子程式,然後分配到正確的處理程式。 對於每個跳點,路由器期望帳戶分組為:
[
  program_id,         // Identifies which pool program (AMM v4, CPMM, CLMM, Stable)
  *child_accounts,    // All accounts required by that pool's swap instruction
]
子帳戶因池類型而異:

AMM v4 跳點

約 18 個帳戶:池、授權、金庫、mint、OpenBook 市場帳戶(保留在帳戶列表中以向後相容,儘管 AMM v4 的 OpenBook 整合不再有效)、代幣程式。請參閱 products/amm-v4/accounts 以獲取完整列表。

CPMM 跳點

約 11–13 個帳戶:池狀態、授權、金庫 (2)、mint (2)、代幣程式、系統程式、關聯代幣程式。請參閱 products/cpmm/accounts

CLMM 跳點

約 15+ 個帳戶:池、刻度陣列、金庫、mint、觀察狀態、簽署者、代幣程式。請參閱 products/clmm/accounts

Stable 跳點

類似於 AMM v4。請參閱 products/stable/accounts

代幣流動與 ATA 所有權

  • 呼叫者使用 user_input_ata 簽署。
  • 呼叫者必須擁有所有輸入、中繼和輸出 ATA。如果任何中繼 ATA 的擁有者不是簽署者,路由器將拒絕交易。
  • 呼叫者的 user_input_ata 餘額必須足以供第一個跳點的輸入(標籤 0 / 8 的 amount_in,或標籤 1 / 9 的 maximum_amount_in)。
  • 每個中繼 ATA 必須已在鏈上存在。如果不存在,請提前建立 — 通常透過 SPL 關聯代幣帳戶程式,或使用 CreateSyncNative(標籤 5)建立 wSOL ATA。

CreateSyncNative 指令

如果你需要透過包裝的 SOL 進行路由,且不想手動建立並同步 wSOL ATA,請使用 CreateSyncNative(標籤 5):
CreateSyncNative(amount)
這在呼叫者的錢包下建立一個 wSOL ATA,透過系統程式將 amount SOL 轉入其中,並在一個指令中同步它。對於在路由前初始化新的 wSOL ATA 很有用。

CloseTokenAccount 指令

路由完成後,你可能想要關閉任何中繼 ATA — 最常見的是 wSOL ATA — 以回收租金。使用 CloseTokenAccount(標籤 6):
CloseTokenAccount
代幣帳戶在關閉前必須具有零代幣餘額;路由器不會為你自動清空它。

後續內容