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. Tất cả các ví dụ TypeScript nhắm tới @raydium-io/raydium-sdk-v2@0.2.42-alpha trên Solana mainnet-beta, được xác minh vào tháng 4 năm 2026. Khung CPI Rust nhắm tới raydium-cp-swap trên nhánh master, Anchor 0.30.x. ID chương trình được lấy qua các hằng số từ reference/program-addresses.

Yêu cầu chuẩn bị

Mỗi ví dụ trên trang này tương ứng với một tệp trong raydium-sdk-V2-demo/src/cpmm; liên kết GitHub nằm bên cạnh mỗi phần. Khởi tạo tuân theo config.ts.template của kho demo (nguồn):
Thực thể Raydium là giao diện SDK — mọi ví dụ dưới đây sử dụng nó. Nó lấy danh sách token và cấu hình phí từ api-v3.raydium.io một cách lười biếng; bạn có thể khởi tạo nó với dữ liệu của riêng bạn trong các môi trường ngoại tuyến.

Tạo pool CPMM

Nguồn: src/cpmm/createCpmmPool.ts
Một vài điều mà SDK xử lý một cách im lặng:
  • Sắp xếp các mint theo thứ tự token0/token1 trước khi lấy PDA.
  • Thanh toán create_pool_fee một lần tới poolFeeAccount.
  • Tạo các tài khoản token được liên kết của người gọi nếu bị thiếu.
  • Chọn đúng chương trình token (SPL Token so với Token-2022) cho mỗi phía.
Sau khi xác nhận, bạn có thể tìm nạp trạng thái pool trực tiếp bằng:

Swap (nhập cơ sở)

Nguồn: src/cpmm/swap.ts
Lưu ý: SDK luôn tìm nạp lại trạng thái pool từ RPC bên trong getPoolInfoFromRpc. Không định giá từ api-v3.raydium.io cho một giao dịch mà bạn sắp ký — một báo giá cũ một khối có thể trượt vào ExceededSlippage tại thời điểm hạ cánh.

Swap (xuất cơ sở)

Nguồn: src/cpmm/swapBaseOut.ts

Gửi thanh khoản

Nguồn: src/cpmm/deposit.ts
SDK chuyển đổi lpAmount thành needed_token_0needed_token_1 bằng cách sử dụng dự trữ hiện tại của pool, phóng to mỗi cái theo 1 + slippage cho các đối số maximum_* của hướng dẫn, và xây dựng các lần tạo ATA nếu cần thiết.

Rút thanh khoản

Nguồn: src/cpmm/withdraw.ts

Thu phí giao thức/quỹ/người sáng tạo

Nguồn: src/cpmm/collectCreatorFee.ts, src/cpmm/collectAllCreatorFee.ts Những hướng dẫn này được kiểm soát quyền hạn của quản trị viên hoặc người sáng tạo và thường được gọi từ người ký được lưu giữ bởi đa chữ ký Raydium hoặc người sáng tạo pool. SDK cung cấp chúng dưới dạng các trình xây dựng thô:
Ngoài chuỗi, bạn có thể đọc phí tích lũy trực tiếp từ PoolState:

Khung CPI Rust

Nếu bạn muốn gọi CPMM từ chương trình Anchor riêng của mình — ví dụ, một kho lưu trữ thực hiện swap thay mặt cho những người gửi tiền của nó — ngữ cảnh CPI trông giống như vậy. Thứ tự tài khoản tuân theo products/cpmm/instructions.
Nếu CPI của bạn ký với tư cách là PDA (ví dụ: bạn quản lý một kho lưu trữ thay mặt cho những người gửi tiền), hãy hoán đổi CpiContext::new cho CpiContext::new_with_signer và chuyển các seed của bạn.

Các lỗi phổ biến

Một danh sách kiểm tra ngắn trước khi mở vé hỗ trợ:
  • Mint đã sắp xếp. Nếu PDA poolState được lấy của bạn không khớp với pool trên chuỗi, bạn có lẽ quên sắp xếp các mint.
  • Báo giá API cũ. Không bao giờ chuyển một giá trị dự trữ từ api-v3.raydium.io vào CurveCalculator.swap. Tìm nạp từ RPC.
  • Chương trình token sai. Kho của mint Token-2022 được sở hữu bởi chương trình Token-2022, không phải bởi SPL Token. Luôn sử dụng các trường token_0_program / token_1_program của pool.
  • Slippage được định giá dưới mức cho các mint phí chuyển. Nếu một trong hai phía của pool là mint phí chuyển Token-2022, minimum_amount_out của bạn phải được định giá theo những gì người dùng thực sự nhận được, không phải những gì kho lưu trữ gửi.
  • NotApproved trên một swap. Kiểm tra PoolState.status — quản trị viên có thể đã tạm dừng swap trên pool đó. Xem products/cpmm/instructions cho mặt nạ trạng thái.

Bước tiếp theo

Nguồn: