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 →
Banner phiên bản.
  • SDK: @raydium-io/raydium-sdk-v2@0.2.64-alpha
  • Cluster: Solana mainnet-beta
  • ID chương trình Stable AMM: 5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h (xem reference/program-addresses)
  • Xác minh lần cuối: 2026-09-09 với SDK 0.2.64-alpha source và các demo amm/trade raydium-sdk-V2-demo
Module liquidity của SDK xử lý pool Stable AMM một cách tự nhiên. Pool Stable xuất hiện dưới dạng version: 5 (hoặc pooltype: "StablePool") trên ApiV3PoolInfoStandardItem; các trợ giúp addLiquidity / removeLiquidity / swap giống nhau cho chúng như cho pool constant-product AMM v4 (version: 4) — SDK phát hiện biến thể và phát ra các instruction chính xác một cách tự động. Toán học stable-curve ngoài chuỗi nằm trong src/raydium/liquidity/stable.ts.

Thiết lập

initLayout() không phải là tùy chọn cho pool Stable. liquidity.computeAmountOut phân nhánh trên poolInfo.version: với version 4 nó sử dụng công thức constant-product, và với bất kỳ cái nào khác nó đọc this.stableLayout.stableModelData và nội suy bảng tra cứu. Bộ nhớ cache đó trống cho đến khi initLayout() chạy, vì vậy quoting pool v5 mà không có nó sẽ tạo ra kết quả sai thay vì lỗi. Nó là idempotent và rẻ — gọi nó một lần khi khởi động.Các transaction builders (swap, addLiquidity, removeLiquidity) không cần nó: chúng phân phối trên pooltype.includes("StablePool") và phát ra các instruction AmmV5*, và các giới hạn số lượng bạn truyền vào đã được tính toán.
liquidity.computeAmountIn không hỗ trợ pool Stable. Không giống như computeAmountOut, nó không có nhánh version — nó luôn áp dụng constant-product inverse, vì vậy trên pool v5 nó trả về maxAmountIn sai. Đối với swap exact-output chống lại pool Stable, hãy tự đảo ngược bằng getDxByDyBaseIn (xem Trợ giúp quote ngoài chuỗi dưới đây) và truyền kết quả cho swap với fixedSide: "out".

Xác định pool Stable

Hai tín hiệu tương đương trên ApiV3PoolInfoStandardItem:
Cả AMM v4 (version: 4, constant-product) và Stable AMM (version: 5) đều chảy qua cùng một API LiquidityModule trên SDK. Ở bên trong, module phân phối tới:
  • InstructionType.AmmV4AddLiquidity / AmmV4RemoveLiquidity cho pool v4
  • InstructionType.AmmV5AddLiquidity / AmmV5RemoveLiquidity cho pool v5 (Stable)
programId của pool (được trả về cùng với các khóa pool) cho SDK biết chương trình nào để CPI vào; bạn không cần hardcode nó.

Tìm pool theo cặp mint

Nếu cặp mint có cả pool v4 (constant-product) và pool v5 (stable), phản hồi bao gồm cả hai — chọn cái mà luồng của bạn cần, hoặc chuyển chúng tới chương trình AMM Routing và để nó chọn tuyến đường tốt nhất.

Swap qua pool Stable

Luồng LiquidityModule.swap có cùng hình dạng như cho pool v4 — chỉ cần chuyển nó một đối tượng pool v5. Hai chi tiết dễ sai: computeAmountOut cần live reserves của pool được ghép vào thông tin pool (mục API một mình không mang chúng), và slippage của nó là một số thuần túy, không phải Percent:
SDK đọc programId của pool từ các khóa pool và phân phối vào chương trình Stable AMM. Không cần đối số programId đặc biệt.

Thêm và loại bỏ liquidity

addLiquidityremoveLiquidity hoạt động giống hệt nhau trên pool v4 và v5:
Ở bên trong, SDK phát ra InstructionType.AmmV5AddLiquiditypooltype.includes("StablePool") là true. Luồng removeLiquidity tương ứng là đối xứng — cung cấp lpAmount và số lượng tối thiểu bạn sẽ chấp nhận ở mỗi bên.

Trợ giúp quote ngoài chuỗi (stable.ts)

Để quoting phía máy chủ hoặc backtesting, SDK công khai toán học stable-curve cơ bản:
Đây là các hàm thuần túy — không RPC, không ký. ModelDataInfo trên chuỗi được tìm nạp một lần bởi initLayout() và được lưu trong bộ nhớ cache bên trong raydium.liquidity.stableLayout, có thể đọc được dưới dạng .stableModelData. initStableModelLayout() là idempotent: nó chỉ tìm nạp lại trong khi validDataCount === 0, vì vậy gọi initLayout() lại là miễn phí. Truyền reserves hiện tại (x, y) và các trợ giúp tính toán bằng cách tìm kiếm nhị phân bảng tra cứu và nội suy tuyến tính giữa hai hàng DataElement xung quanh. Xem products/stable/math để biết thuật toán cơ bản.

Định tuyến qua AMM Routing (multi-hop / best-price)

Nếu bạn không muốn tự chọn một địa điểm, chương trình AMM Routing sẽ xem xét mọi Raydium AMM (v4 / CPMM / CLMM / Stable) và định tuyến qua bất kỳ kết hợp nào tốt nhất: Router là một pipeline năm lệnh gọi thay vì một swap() duy nhất, và nó được viết ra đầy đủ — với lời khuyên lưu trữ giúp nó có thể sử dụng được trong sản xuất — trên products/routing/code-demos. Hình dạng là:
Không có raydium.tradeV2.fetchRoutes, và tradeV2.swap không chấp nhận inputMint / outputMint / slippage — nó lấy swapInfo đã được tính toán từ getAllRouteComputeAmountOut. Đối với một pool duy nhất đã biết, hãy sử dụng builder của loại pool đó (raydium.liquidity.swap cho AMM v4 và Stable, raydium.cpmm.swap, raydium.clmm.swap) như được hiển thị trước đó trên trang này.
Đây là đường dẫn được khuyến nghị cho swapper sản xuất và aggregator — bạn không bao giờ cần phải quyết định thủ công liệu pool Stable có tồn tại hay liệu nó có phải là địa điểm tốt hơn ngày hôm nay hay không.

Khuyến nghị

  1. Đối với swap người dùng cuối, ưu tiên luồng định tuyến tradeV2. Nó xử lý mọi loại pool Raydium bao gồm Stable.
  2. Đối với các hoạt động dành riêng cho pool (thêm / loại bỏ LP trên pool Stable đã biết), hãy sử dụng LiquidityModule trực tiếp — nó tự động phát hiện pool v5.
  3. Đối với quoting / phân tích ngoài chuỗi, gọi getStablePrice / getDyByDxBaseIn / getDxByDyBaseIn sau initLayout(). Không có lưu lượng RPC cho mỗi quote sau khi dữ liệu mô hình được lưu vào bộ nhớ cache.
  4. Không mã hóa tay các instruction SwapBaseIn thô. Nâng cấp 2026-06-22 đã loại bỏ các tài khoản OpenBook chết, vì vậy bố cục swap mới lấy 9 tài khoản (bố cục 18 tài khoản cũ vẫn phân tích cho khả năng tương thích ngược). Deposit hiện là 12 tài khoản (cũ 14 tương thích), Withdraw 12 (cũ 21/22 tương thích), và WithdrawPnl 10 với không đường dẫn tương thích. Các trợ giúp được xây dựng sẵn của SDK chọn bố cục và thứ tự chính xác cho bạn; tự viết của bạn dễ bị lỗi. Xem products/stable/instructions để biết bảng tài khoản đầy đủ.

Tiếp theo đi đâu

  • Math — cách nội suy bảng tra cứu hoạt động.
  • Instructions — tham chiếu instruction đầy đủ.
  • AMM Routing — định tuyến multi-pool trên AMM v4, CPMM, CLMM, Stable.
Nguồn: