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 →
Biểu ngữ phiên bản. Tất cả các ví dụ TypeScript nhắm mục tiêu
@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. Bộ khung CPI Rust nhắm mục tiêu raydium-cp-swap trên nhánh master, Anchor 0.30.x. ID chương trình được lấy thông qua các hằng số từ reference/program-addresses.Điều kiện tiên quyết
raydium-sdk-V2-demo/src/cpmm; liên kết GitHub nằm bên cạnh mỗi phần. Bootstrap tuân theo config.ts.template của kho lưu trữ demo (nguồn):
Raydium là giao diện của 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í một cách lười biếng từ api-v3.raydium.io; bạn có thể khởi tạo nó bằng dữ liệu của riêng mình trong các môi trường ngoại tuyến.
Tạo một pool CPMM
Nguồn:src/cpmm/createCpmmPool.ts
- Sắp xếp các mint theo thứ tự token0/token1 trước khi lấy PDA.
- Trả phí
create_pool_feemột lần chopoolFeeAccount. - Tạo các tài khoản token liên kết của người gọi nếu bị thiếu.
- Chọn chương trình token phù hợp (SPL Token so với Token-2022) cho mỗi bên.
Swap (base-input)
Nguồn:src/cpmm/swap.ts
getPoolInfoFromRpc. Không báo 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 (base-output)
Nguồn:src/cpmm/swapBaseOut.ts
Gửi thanh khoản
Nguồn:src/cpmm/deposit.ts
lpAmount thành needed_token_0 và needed_token_1 bằng cách sử dụng dự trữ hiện tại của pool, tăng mỗi cái lên 1 + slippage cho các đối số maximum_* của lệnh, và xây dựng các 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 tạo
Nguồn:src/cpmm/collectCreatorFee.ts, src/cpmm/collectAllCreatorFee.ts
Thu phí giao thức và quỹ vẫn bị giới hạn bởi quyền. Phí người tạo có hai đường dẫn: CollectCreatorFee được ký bởi người tạo hiện có, và CollectCreatorFeePermissionless bổ sung, mà bất kỳ người trả tiền nào cũng có thể gọi nhưng chỉ có thể chuyển đến các ATA chính tắc của người tạo. SDK được ghim hiển thị các trình xây dựng thô hiện có:
PoolState:
Bộ khung CPI Rust
Nếu bạn muốn gọi CPMM từ chương trình Anchor của riêng 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 như thế này. Thứ tự tài khoản tuân theoproducts/cpmm/instructions.
CpiContext::new cho CpiContext::new_with_signer và chuyển các hạt giống của bạn.
Những cạm bẫy phổ biến
Một danh sách kiểm tra ngắn trước khi mở một vé hỗ trợ:- Mint được 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ó thể đã 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.iovàoCurveCalculator.swap. Lấy từ RPC. - Chương trình token sai. Kho lưu trữ của một 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_programcủa pool. - Slippage dưới mức cho các mint phí chuyển. Nếu một trong hai bên của pool là một mint phí chuyển Token-2022,
minimum_amount_outcủa bạn phải được tính bằng 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. NotApprovedtrên một swap. Kiểm traPoolState.status— quản trị viên có thể đã tạm dừng swap trên pool đó. Xemproducts/cpmm/instructionscho mặt nạ trạng thái.
Tiếp theo đi đâu
sdk-api/typescript-sdk— tham chiếu SDK đầy đủ.sdk-api/rest-api— báo giá và điểm cuối siêu dữ liệu pool.user-flows/create-cpmm-pool— hướng dẫn không mã của cùng một luồng.integration-guides/aggregator— nếu bạn định định tuyến CPMM như một phần của đường dẫn đa bước.

