Skip to main content
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 →
Phiên bản banner. Tất cả các ví dụ nhắm tới @raydium-io/raydium-sdk-v2@0.2.64-alpha trên Solana mainnet-beta, được xác minh 2026-09-09 — mọi tên builder, tên tham số và kiểu tham số bên dưới đều đã được kiểm tra đối chiếu với nguồn của bản phát hành đó và với raydium-sdk-V2-demo/src/amm. Program ID: 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 (xem reference/program-addresses).Hai cái bẫy hay gây khó cho phần lớn các lần tích hợp đầu tiên: slippage của computeAmountOut là một number thuần (0.005 = 0.5%), không phải Percent; và liquidity.swap bắt buộc phải có inputMint dưới dạng chuỗi base58.Việc tạo pool mới không được trình bày ở đây. Giao diện Raydium không còn cung cấp việc tạo pool AMM v4 — các cặp mới mặc định dùng CPMM. Bản thân chương trình AMM v4 vẫn chấp nhận Initialize2 on-chain; chỉ là nó không còn là con đường được khuyến nghị. Các ví dụ bên dưới bao gồm các hoạt động trên pool đang hoạt động mà mọi người tích hợp vẫn cần: swap, deposit, withdraw.
Tạo pool mới không được hiển thị ở đây. Giao diện Raydium không còn cung cấp tính năng tạo pool AMM v4 — các cặp mới mặc định sử dụng CPMM. Chính chương trình AMM v4 vẫn chấp nhận Initialize2 trên chuỗi; nó chỉ không phải là con đường được khuyến nghị. Các ví dụ dưới đây bao gồm các hoạt động pool trực tiếp mà mọi nhà tích hợp vẫn cần: swap, deposit, withdraw.

Thiết lập

Lấy pool theo ID

poolKeys là struct mà các trình xây dựng hướng dẫn sử dụng. Nó chứa mọi tài khoản AMM v4 theo thứ tự mà chương trình mong đợi, cộng với các trường thị trường cũ mà chương trình hiện tại chấp nhận theo vị trí nhưng không còn đọc nữa.

Swap (base-in)

SDK định tuyến các swap AMM v4 thông qua các điểm vào V2, không chứa các tài khoản OpenBook. (Sau bản nâng cấp 2026-07, các tài khoản thị trường không còn được xác thực ngay cả trên con đường v1 cũ.)

Swap (base-out)

Thêm thanh khoản

fixedSide: "a" cho SDK biết bạn đã cung cấp amountInA chính xác và amountInB nên tối đa là maxAnotherAmount. Phép toán theo tỷ lệ chạy trên số dư vault trừ đi PnL đã tích lũy — không còn thành phần on-book nào phải giải quyết trước nữa.

Loại bỏ thanh khoản

Các mức tối thiểu slippage bảo vệ chống lại trạng thái pool thay đổi giữa thời gian trước báo giá và thời gian hạ cánh.

Điều chỉnh compute-unit / priority fee

Kể từ khi OpenBook bị loại bỏ, một swap AMM v4 không còn xác thực bất kỳ trạng thái thị trường nào, nên một SwapBaseIn V1 rẻ hơn rõ rệt so với trước đây — và SwapBaseInV2 (8 tài khoản, không có placeholder thị trường) còn rẻ hơn nữa. Hãy tự đo đường đi của bạn thay vì lập ngân sách theo các con số lịch sử, và luôn truyền một giới hạn compute-unit tường minh:
Nếu bạn bỏ qua computeBudgetConfig, SDK vẫn có thể sử dụng giá trị mặc định của riêng nó; hãy kiểm tra transaction được trả về để xác nhận. Xem integration-guides/priority-fee-tuning.

CPI Rust trực tiếp

Nếu bạn phải CPI vào AMM v4 từ chương trình Anchor của riêng bạn, bạn sẽ cần mô hình hóa danh sách tài khoản của SwapBaseIn một cách chính xác. Một bản phác thảo tối thiểu:
AMM v4 không cung cấp một crate Anchor cho CPI. Bản phác thảo trên sử dụng một Instruction được xây dựng thủ công.
Bản phác thảo CPI trên sử dụng bố cục SwapBaseIn v1 cũ (tag 9, 17 tài khoản) để đọc/tái tạo các giao dịch hiện có. Kể từ bản nâng cấp 2026-07, các tài khoản thị trường được chấp nhận nhưng bị bỏ qua. Đối với mã mới, hãy ưu tiên SwapBaseInV2 / SwapBaseOutV2 (tags 16 / 17), loại bỏ các tài khoản thị trường (và amm_open_orders) hoàn toàn — chỉ truyền 8 tài khoản: token_program, amm, amm_authority, hai vault pool, hai tài khoản token người dùng, và user_owner.

Những cạm bẫy

  • Số lượng tài khoản sai trên các swap v1. SwapBaseIn / SwapBaseOut cũ vẫn yêu cầu danh sách đầy đủ 17 tài khoản (hoặc 18 tài khoản) — một số lượng không khớp sẽ hoàn nguyên với WrongAccountsNumber. Nội dung của các tài khoản thị trường không còn được xác thực, nhưng bạn vẫn phải chiếm các vị trí của chúng. Ưu tiên các điểm vào V2 để tránh điều này.
  • Đọc số dư vault thô. Dự trữ hiện là vault-only; trừ đi PnL tích lũy (need_take_pnl_*). SDK quote hoặc api-v3.raydium.io/pools/info/ids xử lý điều này cho bạn.
  • Gọi các hướng dẫn đã bị xóa. MonitorStep, MigrateToOpenBook, WithdrawSrm, SimulateInfo, AdminCancelOrders, và Initialize / PreInitialize cũ hiện hoàn nguyên. Sử dụng Initialize2 để tạo pool; không có crank để gọi.
  • Token-2022 mints. Không được hỗ trợ. Không thể tạo pool AMM v4 chống lại một mint Token-2022; bất kỳ cặp Token-2022 nào cũng nên ở trên CPMM hoặc CLMM.

Tiếp theo

Nguồn: