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 →
Trang này là tham chiếu chính thức về instruction cho chương trình AMM Routing. Để xem các ví dụ code, hãy tham khảo
products/routing/code-demos. Để xem ý nghĩa lỗi, hãy tham khảo reference/error-codes.Tóm tắt instruction
| Tag | Discriminator | Chính xác | Biến thể |
|---|---|---|---|
| 0 | SwapBaseInWithUserAccount | Input | Legacy |
| 1 | SwapBaseOutWithUserAccount | Output | Legacy |
| 5 | CreateSyncNative | — | Tiện ích |
| 6 | CloseTokenAccount | — | Tiện ích |
| 8 | SwapBaseIn | Input | Hiện tại |
| 9 | SwapBaseOut | Output | Hiện tại |
- Chính xác: số tiền nào được xác định cố định bởi người gọi (Input = exact-input
amount_in; Output = exact-outputamount_out). - Biến thể: Các instruction Legacy yêu cầu một deque
limit_priceskhông rỗng ngay cả khi không có CLMM hop nào trong route. Các instruction hiện tại (8 / 9) coi dequelimit_pricesrỗng là “không kiểm tra”, đây là cách được khuyến nghị cho code mới.
SwapBaseIn) hoặc tag 9 (SwapBaseOut) trừ khi bạn có lý do cụ thể để gọi một biến thể Legacy.
Các instruction swap hiện tại (được khuyến nghị)
Đây là các điểm vào mà code mới nên sử dụng. Cấu trúc argument giống với các biến thể Legacy nhưnglimit_prices có thể rỗng.
SwapBaseIn (tag 8)
Swap đa hop exact-input. Người gọi xác định cố định amount_in; router thực thi hop từng hop và xác nhận rằng số lượng cuối cùng đạt hoặc vượt quá minimum_amount_out.
Arguments
- Người gọi ký bằng
user_input_ata. user_input_ata.amount >= amount_in.- Mỗi ATA user trung gian tồn tại và được sở hữu bởi người gọi.
- Nếu bất kỳ hop nào là CLMM và bạn muốn thực thi giới hạn giá, hãy cung cấp một mục
limit_pricescho mỗi CLMM hop.
- Số dư
user_input_atagiảm điamount_in. - Số dư
user_output_atatăng lên ≥minimum_amount_out. - Mỗi ATA trung gian được để lại với thay đổi ròng bằng không (route tiêu thụ bất cứ thứ gì nó tạo ra ở hop trước đó).
ExceededSlippage— output cuối cùng <minimum_amount_out.InvalidInput— route rỗng, account dị hình, hoặcpool_programkhông được hỗ trợ.SqrtPriceX64— giá CLMM hop di chuyển ngoài giới hạnlimit_pricesđược cung cấp (chỉ khilimit_priceskhông rỗng).
SwapBaseOut (tag 9)
Swap đa hop exact-output. Người gọi xác định cố định amount_out; router xác nhận rằng input thực tế không vượt quá maximum_amount_in.
Arguments
- Người gọi ký bằng
user_input_ata; số dư>= maximum_amount_in(trường hợp xấu nhất). - Mỗi ATA trung gian và ATA output tồn tại.
user_input_atagiảm đi số lượng thực tế cần thiết (≤maximum_amount_in).user_output_atatăng lên chính xácamount_out.
ExceededSlippage— input cần thiết vượt quámaximum_amount_in.InvalidInput,SqrtPriceX64— giống như tag 8.
Các instruction swap Legacy
Những biến thể cũ hơn này vẫn có thể được gọi trên chương trình live và được tài liệu hóa ở đây để hoàn chỉnh. Ưu tiên tag 8 / tag 9 cho code mới; cả hai biến thể Legacy dưới đây yêu cầu một dequelimit_prices không rỗng ngay cả khi không có CLMM hop nào liên quan, điều này làm cho chúng khó sử dụng.
SwapBaseInWithUserAccount (tag 0)
Swap đa hop exact-input, giống hệt như tag 8 nhưng có yêu cầu limit_prices nghiêm ngặt hơn.
Arguments
SwapBaseIn (tag 8). Tất cả các slot trung gian phải là ATA do người gọi sở hữu.
Điều kiện tiên quyết
- Người gọi ký bằng
user_input_ata. user_input_ata.amount >= amount_in.- Tất cả các ATA user trung gian tồn tại và được sở hữu bởi người gọi.
limit_priceskhông rỗng (một mục cho mỗi CLMM hop; điền các giá trị placeholder nếu không có CLMM hop nào liên quan).
- Số dư
user_input_atagiảm điamount_in. - Số dư
user_output_atatăng lên ≥minimum_amount_out.
ExceededSlippage.InvalidInput— dequelimit_pricesrỗng bị từ chối ở biến thể Legacy này.SqrtPriceX64.
SwapBaseOutWithUserAccount (tag 1)
Swap exact-output, đối tác Legacy của SwapBaseOut (tag 9).
Arguments
- Người gọi ký bằng
user_input_ata. user_input_ata.amount >= maximum_amount_in.- Tất cả các ATA user trung gian tồn tại và được sở hữu bởi người gọi.
limit_priceskhông rỗng.
user_input_atagiảm đi số lượng thực tế cần thiết (≤maximum_amount_in).user_output_atatăng lên chính xácamount_out.
ExceededSlippage.InvalidInput.SqrtPriceX64.
Các instruction tiện ích
CreateSyncNative (tag 5)
Tạo (nếu bị thiếu) và đồng bộ hóa wSOL ATA trong một bước. Tiện lợi khi gói SOL inline cùng một swap.
Arguments
- Tạo
user_wsol_atanếu nó chưa tồn tại. - Chuyển
amountlamports từ số dư SOL gốc của người ký đến ATA. - Gọi
SyncNativetrên ATA để số dư token của nó phản ánh lamports mới.
InvalidOwner— chủ sở hữu củauser_wsol_atakhông phải là người ký.
CloseTokenAccount (tag 6)
Đóng một tài khoản token và trả tiền cho ví đích của nó. Được ghép nối với CreateSyncNative: sau khi swap có leg wSOL, gọi CloseTokenAccount để phục hồi tiền cho ATA wSOL.
Arguments — không có.
Accounts
- Đóng
token_account_to_close. - Chuyển số dư lamport miễn phí tiền thuê (~0.00203928 SOL trên mainnet cho một tài khoản SPL Token vanilla) đến
destination_for_rent. - Tài khoản token phải có số dư token bằng không.
InvalidOwner— người gọi không phải là chủ sở hữu ATA.- Số dư tài khoản token khác không.
Tiếp theo bạn nên tham khảo
products/routing/code-demos— xây dựng từng instruction này bằng TypeScript.products/routing/accounts— các khoá dispatch theo AMM và bố cục tài khoản theo hop.reference/error-codes— danh sách đầy đủRouteError.


