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 →
Kể từ nâng cấp chương trình 2026-07, phụ thuộc OpenBook / Serum của AMM v4 đã bị loại bỏ. Các lệnh v1 cũ
SwapBaseIn / SwapBaseOut, Deposit và Withdraw giữ nguyên bố cục tài khoản cũ để tương thích ngược: các tài khoản thị trường vẫn được chấp nhận ở vị trí cũ, nhưng chúng không còn được xác thực hoặc sử dụng (không có CPI được phát hành). Các tích hợp mới nên sử dụng các điểm vào swap V2, loại bỏ hoàn toàn các tài khoản thị trường. Một số lệnh đã bị loại bỏ và hiện trả về lỗi — xem mục nhập changelog. Danh sách tài khoản dưới đây sử dụng tên trường từ Raydium SDK; IDL cơ bản đôi khi sử dụng tiền tố serum_*.Nâng cấp chương trình 2026-09 thêm một lệnh quản trị viên, WithdrawExcessLamports (tag 18), và loại bỏ sysvar rent khỏi CreateConfigAccount. Mọi thứ mà nhà giao dịch hoặc LP gọi đều không thay đổi. Xem mục nhập changelog 2026-09-09.Danh sách lệnh
SDK chỉ hiển thị các builder cho các lệnh hướng tới người dùng. Các lệnh bảo trì thường được gọi bởi người giữ Raydium.
Đã loại bỏ / không còn có thể gọi được (các builder client của chúng đã bị xóa):
Initialize (tag 0, sử dụng Initialize2), MonitorStep (2), MigrateToOpenBook (5), WithdrawSrm (8), PreInitialize (10, sử dụng Initialize2), SimulateInfo (12), AdminCancelOrders (13).
Một giao dịch mang một trong những tag này sẽ thất bại; chương trình không bao giờ thực thi lệnh. Coi tất cả bảy cái như đã biến mất thay vì các đường dẫn lỗi để xử lý.
Initialize2
Khởi động một pool AMM v4 mới được liên kết với một thị trường OpenBook hiện có.
Tham số
W, ký S)
Hai bố cục được chấp nhận. Danh sách 19 tài khoản ở trên là bố cục được khuyến nghị. Để tương
thích ngược, chương trình cũng đọc một bố cục cũ gồm 21 tài khoản, chèn thêm một
amm_open_orders
bị bỏ qua ở vị trí 7 và một market_program bị bỏ qua ở vị trí 16 — đây là những gì trình xây dựng
chỉ thị initialize2 trong repo vẫn phát ra. Bất kỳ độ dài nào khác sẽ được phân tích theo vị trí
đối chiếu với bố cục cũ và sẽ thất bại.- LP được mint cho người tạo =
sqrt(init_coin_amount × init_pc_amount) − 10^coin_mint.decimals. Số thập phân của LP bằngcoin_mint.decimals, nên lượng bị trừ đi đúng bằng một token LP trọn vẹn; nó không bao giờ được mint và vĩnh viễn nằm ngoài lưu thông. Nếusqrt(...)nhỏ hơn lượng đó, chỉ thị sẽ revert vớiInitLpAmountTooLess. AmmInfo.lp_amountlưu trọn giá trịsqrt(...), không phải lượng đã được mint — nênlp_mint.supplyvĩnh viễn thấp hơnamm.lp_amountđúng một token LP trọn vẹn. Mọi phép toán theo tỷ lệ đều dùngamm.lp_amount.- Không có đơn hàng OpenBook nào được đăng (lưới sổ đặt hàng đã bị loại bỏ).
AmmInfo.marketghi lại tài khoản được truyền ở slot 15, nhưng cảAmmInfo.open_ordersvàAmmInfo.market_programđều được ghi làPubkey::default(), vàcoin_lot_size/pc_lot_size/min_sizeđược khởi tạo thành0. Trên bố cục cũ 21 tài khoản, các tài khoản thêmamm_open_ordersvàmarket_programđược đọc rồi loại bỏ.
InvalidCoinMint (coin mint và pc mint giống nhau), InvalidConfigAccount (PDA amm_config sai), InvalidFee (đích phí tạo pool sai), InvalidProgramAddress (amm_authority sai hoặc nonce sai), RepeatCreateAmm (đã tồn tại một pool cho thị trường này), InitLpAmountTooLess, InvalidSupply (một trong hai lượng khởi tạo bằng 0, hoặc mint LP đã có cung), AlreadyInUse.
Deposit
Thêm thanh khoản.
Tham số
Toán học — theo tỷ lệ tiêu chuẩn. Sử dụng dự trữ hiệu quả của pool (kho + trên sổ), SDK tính toán cặp coin/pc mang lại số lượng LP nhất định và kiểm tra nó so với
max_*. Trả về lỗi ExceededSlippage nếu một trong hai bên vượt quá giới hạn.
Withdraw
Đốt LP, nhận cả hai bên.
Tham số
Không còn bước thanh toán từ OpenBook nữa — phép toán theo tỷ lệ sử dụng trực tiếp số dư kho.
SwapBaseIn
Swap đầu vào chính xác. Luôn là swap đường dẫn AMM (không định tuyến qua khớp OpenBook).
Sử dụng các biến thể V2 cho mã mới. Vì phụ thuộc OpenBook của AMM v4 đã bị loại bỏ, các điểm vào V1 (
SwapBaseIn, SwapBaseOut) vẫn mong đợi danh sách tài khoản đầy đủ 17 tài khoản (hoặc 18 với tài khoản target-orders tùy chọn), nhưng các tài khoản OpenBook/market hiện được chấp nhận theo vị trí và bị bỏ qua — chúng không được xác thực và không có CPI được phát hành. Truyền số lượng tài khoản sai vẫn trả về lỗi WrongAccountsNumber, nhưng nội dung tài khoản thị trường không còn được kiểm tra. Các tích hợp mới nên sử dụng SwapBaseInV2 / SwapBaseOutV2, lấy danh sách tài khoản nhỏ hơn nhiều và đại diện cho đường dẫn thực thi chính tắc ngày hôm nay. Các hình thức V1 được ghi lại ở đây để hoàn chỉnh và để đọc các giao dịch trên chuỗi hiện có.
Toán học — xem
products/amm-v4/math.
Điều kiện trước
AmmStatus::from_u64(amm.status).swap_permission()là true — nghĩa làstatusbằng1(Initialized),6(SwapOnly) hoặc7(WaitingTrade).statuslà một giá trị enum, không phải bitmask; xemproducts/amm-v4/accounts.amm.state_data.pool_open_time <= now.amount_in > 0.user_source_token_accountgiữ ít nhấtamount_in.
- Người dùng mất
amount_incủa token nguồn, nhậnamount_out ≥ minimum_amount_outcủa token đích. - Phí swap ở lại trong các vault, làm tăng bất biến
k. Các bộ đếmneed_take_pnl_*không bị các lần swap chạm tới — PnL giao thức được tính lại từ delta củakở lầnDeposit,WithdrawhoặcWithdrawPnltiếp theo (Processor::calc_take_pnl). - Lưu ý: các bộ đếm phân tích
state_data.swap_*_in_amount/swap_*_out_amountkhông còn được cập nhật — giá trị của chúng bị đóng băng. Sử dụng nhật ký giao dịch để phân tích khối lượng.
ExceededSlippage, InvalidInput, InvalidStatus, NotAllowed (mint coin/pc giống nhau).
SwapBaseOut
Đầu ra chính xác, nghịch đảo của SwapBaseIn. Cùng tài khoản.
Tham số
SwapBaseInV2 / SwapBaseOutV2
Các điểm vào swap biến thể (tag 16 / 17) bỏ qua hoàn toàn các tài khoản OpenBook. Toán học giống với đường dẫn V1, nhưng danh sách tài khoản thu nhỏ xuống chỉ còn phía AMM và người dùng — 8 tài khoản, và amm_open_orders không được truyền:
Dự trữ pool hiện là số dư kho (trừ PnL đang chờ xử lý), vì vậy toán học báo giá rõ ràng và giống với đường dẫn v1. Sử dụng V2 để tiết kiệm tính toán và tránh truyền các tài khoản thị trường (hiện bị bỏ qua). Bộ định tuyến Raydium luôn sử dụng hình thức V2 khi định tuyến qua AMM v4.
Các tham số giống như các hình thức V1 (
amount_in / minimum_amount_out cho SwapBaseInV2; max_amount_in / amount_out cho SwapBaseOutV2).
MonitorStep và các lệnh đã loại bỏ khác
Về mặt lịch sử, MonitorStep quay vòng tương tác OpenBook của pool: nó thanh toán các đơn hàng đã điền (di chuyển tiền từ kho thị trường vào kho pool thông qua CPI OpenBook), hủy các đơn hàng cũ, và đăng các đơn hàng mới để đóng khoảng cách giữa target_orders và amm_open_orders. Với phụ thuộc OpenBook bị loại bỏ, không có gì để quay vòng và lệnh đã biến mất. Bất kỳ người giữ hoặc tích hợp nào vẫn gọi nó phải loại bỏ lệnh gọi.
WithdrawPnl / TakePnl
Quét quản trị viên của phí giao thức tích lũy.
Tham số
WithdrawPnlkhông lấy tham số; nó đọcneed_take_pnl_*và di chuyển những số tiền chính xác đó.
Hiệu ứng
- Chuyển
need_take_pnl_cointừpool_coin_token_accountđếnpnl_coin_token_account. - Tương tự cho pc.
- Đặt
need_take_pnl_coinvàneed_take_pnl_pcthành 0. - Thay đổi logic: nếu số dư kho không đủ để bao gồm PnL tích lũy, lệnh trả về
TakePnlErrortrực tiếp (nó không còn thao tác với trạng thái sổ đặt hàng).
SetParams
Thay đổi tham số quản trị viên, được gọi bởi multisig Raydium. Các tham số là tag param: u8 + tải trọng.
CreateConfigAccount / UpdateConfigAccount
Quản lý quản trị viên của PDA AmmConfig cấp chương trình (seed ["amm_config_account_seed"]). Tài khoản này chỉ chứa đúng ba trường có ý nghĩa — pnl_owner, cancel_owner và create_pool_fee — cộng với hai vùng đệm dự trữ; không có cờ tạo pool. UpdateConfigAccount đặt pnl_owner với param = 0, cancel_owner với param = 1, và create_pool_fee với param = 2.
Đã thay đổi trong 2026-09, và tương thích ngược.
CreateConfigAccount không còn đọc sysvar rent. Danh sách tài khoản của nó hiện là 4 tài khoản, giảm từ 5:Chương trình đọc các tham số rent từ
Rent::get() thay vì giải mã một tài khoản sysvar được truyền vào — điều mà phụ thuộc Solana 3.0 làm cho tự nhiên.Tài khoản đã loại bỏ là cuối cùng trong danh sách, và trình xử lý đọc các tài khoản của nó theo vị trí thông qua next_account_info mà không có kiểm tra độ dài. Do đó, một công cụ quản trị viên hiện có vẫn truyền danh sách 5 tài khoản cũ sẽ tiếp tục hoạt động: tài khoản rent ở cuối đơn giản là không bao giờ được đọc. Cập nhật nó khi thuận tiện, không phải khẩn cấp. UpdateConfigAccount không thay đổi.Initialize2 giữ sysvar rent ở vị trí 3, và vẫn sử dụng nó: chương trình ngừng gọi Rent::from_account_info trên nó, nhưng nó vẫn được chuyển tiếp vào các CPI spl_token::initialize_account và initialize_mint tạo kho và LP mint của pool. Không loại bỏ nó khỏi danh sách tài khoản.
WithdrawExcessLamports
Quét quản trị viên của lamports nằm trên mức tối thiểu miễn phí thuê trên các tài khoản mà chương trình kiểm soát. Được thêm vào nâng cấp 2026-09 để khôi phục quá mức tài trợ mà SIMD-0437 rent reduction để lại trên các tài khoản được tạo trước mỗi bước.
Nó chỉ di chuyển phần dư. Số dư token, dữ liệu tài khoản, chủ sở hữu, và trạng thái pool không bị chạm, và lệnh là no-op trên một tài khoản đã ở mức tối thiểu của nó — vì vậy nó an toàn để kích hoạt lặp đi lặp lại và lại sau mỗi bước triển khai.
Tham số — không có. Tải trọng là byte tag duy nhất 18.
Tài khoản
Cách mỗi tài khoản nguồn được xử lý
Chương trình phân phối dựa trên chủ sở hữu tài khoản nguồn:
Lỗi phổ biến —
InvalidSignAccount (ký tên sai), InvalidSplTokenProgram (chương trình sai ở slot 3), InvalidProgramAddress (amm_authority sai), LamportsCalculateError (mã tùy chỉnh 60; vòng wSOL không lưới về 0), và InsufficientFunds từ đường dẫn do chương trình sở hữu khi tài khoản giữ ít hơn mức rent tối thiểu của nó.
Không có builder SDK. @raydium-io/raydium-sdk-v2 không gửi builder cho lệnh này, cũng như repo raydium-sdk-V2-demo — đó là đường dẫn quản trị viên. Mã hóa nó bằng tay, theo cách quét phía ví trong solana-fundamentals/rent-and-reclaimable-rent làm cho lệnh token-program.
Ma trận thay đổi trạng thái
Cột OpenBook đã biến mất — không có lệnh nào chạm vào sổ đặt hàng nữa.Tiếp theo
products/amm-v4/code-demos— Ví dụ TypeScript cho các luồng swap và LP.products/amm-v4/fees— Chi tiếtWithdrawPnlvà phân chia phí.reference/error-codes— Bảng tham chiếu chuyển tiếp (các lỗi AMM v4 được liệt kê trên trang đó).
- Chương trình Raydium AMM —
raydium-io/raydium-amm - Mô-đun
Liquiditycủa Raydium SDK v2 - Chương trình OpenBook — xác thực tài khoản ở phía thị trường

