Chuyển đến nội dung chính
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 →

Thông tin phiên bản

  • SDK: @raydium-io/raydium-sdk-v2@0.2.42-alpha
  • Network: mainnet-beta
  • Router program ID: routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS
  • Xác minh: Tháng 4 năm 2026

Ví dụ 1: Routing dựa trên SDK

Nguồn: src/trade/routeSwap.ts Raydium SDK trừu tượng hóa việc xây dựng route. Sử dụng các hàm trade của SDK để soạn một route đa bước và thực thi nó thông qua router một cách tự động.

Thiết lập

Xây dựng một swap đa bước

Routing trong @raydium-io/raydium-sdk-v2 được expose trên raydium.tradeV2. Hình dạng toàn diện — tìm nạp dữ liệu pool, tính toán route, xếp hạng theo output, và xây dựng giao dịch swap — được hiển thị dưới đây; điều này phù hợp với ví dụ chính thức trong raydium-sdk-V2-demo/src/trade/routeSwap.ts.

Hành vi dự kiến

SDK xử lý:
  • Khám phá route trong AMM v4, CPMM, CLMM, và Stable AMM.
  • Derivation tài khoản (trạng thái pool, vault, tài khoản quan sát, tạo trước ATA).
  • Packing instruction cho chương trình router (Router) khi route là đa bước, hoặc swap pool trực tiếp khi một pool đơn đã cho kết quả tốt nhất.
  • Thực thi slippage thông qua tham số slippage trên getAllRouteComputeAmountOut.
raydium.tradeV2.swap có thể trả về nhiều hơn một transaction — transaction đầu tiên thường khởi tạo các ATA trung gian và transaction thứ hai thực hiện swap. Luôn truyền sequentially: true tới execute() để chúng xác nhận theo thứ tự.

Ví dụ 2: Xây dựng instruction thô (mã giả kiểu Rust)

Nếu bạn cần kiểm soát tốt hơn hoặc đang xây dựng một chương trình CPI vào router, hãy xây dựng instruction theo cách thủ công. Ví dụ dưới đây sử dụng tag 8 (SwapBaseIn) — biến thể Current được khuyến nghị — và định tuyến thông qua các ATA do người dùng sở hữu từ đầu đến cuối.

Kịch bản: USDC → SOL (CPMM) → mSOL (CPMM)

Bước 1: Derive các ATA của người dùng

Bước 2: Thu thập tài khoản cho mỗi bước

Hop 1 là USDC/SOL trên CPMM. Hop 2 là SOL/mSOL trên CPMM.

Bước 3: Xây dựng instruction

Bước 4: Gửi giao dịch


Ví dụ 3: Xử lý lỗi

Những lỗi phổ biến và cách khôi phục:

ExceededSlippage

Output nhỏ hơn minimum_amount_out. Thử lại với dung sai slippage cao hơn hoặc tái báo giá route.

SqrtPriceX64 (CLMM)

Giá của một bước CLMM trôi ngoài ranh giới limit_prices. Cập nhật ranh giới và thử lại.

InvalidOwner

Một ATA trung gian hoặc output không do người gọi sở hữu. Router xác thực quyền sở hữu trên mỗi slot; đảm bảo mỗi ATA bạn truyền được derive từ ví của người dùng (không phải từ bất kỳ authority nào khác).

Mẹo và best practices

Tạo trước các ATA trung gian

Trước khi định tuyến qua một token trung gian mới lần đầu tiên, hãy tạo ATA của người dùng để route không bị lỗi xác thực:
Đối với wSOL cụ thể, ưu tiên CreateSyncNative (tag 5) — nó tạo ATA, chuyển SOL, và đồng bộ hóa trong một instruction.

Báo giá trước khi thực thi

Luôn truy vấn các pool và tính toán output dự kiến trước khi xây dựng instruction:

Sử dụng các biến thể instruction mới hơn (8–9)

Tag 8 và 9 (SwapBaseInSwapBaseOut) lịch sự hơn với limit_prices. Ưu tiên chúng hơn các biến thể kế thừa nếu bạn không cần xác thực giá CLMM.

Tiếp theo

Các nguồn: