Chuyển đến nội dung chính

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.

Trang này được dịch tự động bằng AI. Phiên bản tiếng Anh là bản chính thức.Xem bản tiếng Anh →

Bố cục tài khoản: user ATAs xuyên suốt

Mỗi biến thể swap được kích hoạt sẽ định tuyến các token trung gian thông qua ATAs được kiểm soát bởi người dùng. Người dùng sở hữu input ATA, mọi ATA trung gian và output ATA cuối cùng. Không có tài khoản token trung gian dùng chung / sở hữu bởi router trong bề mặt hoạt động. Các đặc tính:
  • Người dùng sở hữu một ATA cho mỗi token trung gian.
  • Người dùng cung cấp mọi ATA trong danh sách tài khoản.
  • Mỗi ATA trung gian phải đã tồn tại (khởi tạo nó bằng CreateSyncNative cho wSOL, hoặc qua chương trình SPL Associated Token Account cho bất kỳ mint nào khác, trước khi định tuyến).
  • Router chuyển từ một ATA này sang vault của pool tiếp theo ở mỗi bước.
  • Mỗi ATA trung gian kết thúc mỗi tuyến đường với cùng số dư nó bắt đầu — tuyến đường tiêu thụ bất kỳ thứ gì bước trước đó tạo ra.
Ví dụ luồng cho tuyến đường 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

Bố cục tài khoản cho mỗi bước

Các tài khoản của mỗi bước được truyền liên tiếp. Router xác định chương trình con bằng cách đọc tài khoản đầu tiên trong khối của mỗi bước (program ID), sau đó gửi tới handler chính xác. Với mỗi bước, router dự kiến các tài khoản được nhóm như sau:
[
  program_id,         // Xác định pool program nào (AMM v4, CPMM, CLMM, Stable)
  *child_accounts,    // Tất cả tài khoản cần thiết bởi swap instruction của pool đó
]
Các tài khoản con thay đổi tùy theo loại pool:

AMM v4 hop

Khoảng 18 tài khoản: pool, authority, vaults, mints, OpenBook market accounts (giữ trong danh sách tài khoản vì lý do tương thích ngược dù AMM v4’s OpenBook integration không còn hoạt động), token programs. Xem products/amm-v4/accounts để biết danh sách đầy đủ.

CPMM hop

Khoảng 11–13 tài khoản: pool state, authority, vaults (2), mints (2), token programs, system program, associated token program. Xem products/cpmm/accounts.

CLMM hop

Khoảng 15+ tài khoản: pool, tick arrays, vaults, mints, observation state, signer, token programs. Xem products/clmm/accounts.

Stable hop

Tương tự AMM v4. Xem products/stable/accounts.

Luồng token và quyền sở hữu ATA

  • Người gọi ký với user_input_ata.
  • Người gọi phải sở hữu tất cả input, intermediate và output ATAs. Router sẽ từ chối giao dịch nếu bất kỳ ATA trung gian nào không được sở hữu bởi người ký.
  • Số dư user_input_ata của người gọi phải đủ cho input của bước đầu tiên (amount_in cho tag 0 / 8, hoặc maximum_amount_in cho tag 1 / 9).
  • Mỗi ATA trung gian phải đã tồn tại trên chuỗi. Nếu không, hãy tạo nó trước — thường qua chương trình SPL Associated Token Account, hoặc với CreateSyncNative (tag 5) cho một wSOL ATA.

Instruction CreateSyncNative

Nếu bạn cần định tuyến thông qua wrapped SOL và không muốn tạo và đồng bộ hóa ATA wSOL thủ công, hãy sử dụng CreateSyncNative (tag 5):
CreateSyncNative(amount)
Instruction này tạo một wSOL ATA dưới ví của người gọi, chuyển amount của SOL vào nó qua System Program và đồng bộ hóa nó trong một instruction. Hữu ích để khởi tạo một wSOL ATA mới trước khi định tuyến.

Instruction CloseTokenAccount

Sau khi tuyến đường hoàn thành, bạn có thể muốn đóng bất kỳ ATA trung gian nào — thường là một wSOL ATA — để lấy lại tiền thuê. Sử dụng CloseTokenAccount (tag 6):
CloseTokenAccount
Token account phải có số dư token bằng không trước khi đóng; router sẽ không tự động làm trống nó cho bạn.

Bước tiếp theo