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.64-alpha; chúng được thực thi lần cuối cùng với 0.2.42-alpha (2026-04) và chữ ký gọi của chúng được kiểm tra lại với nguồn 0.2.64-alpha vào ngày 2026-09-09, trên Solana mainnet-beta. Bộ khung CPI Rust nhắm mục tiêu raydium-cp-swap trên nhánh chore/upgrade-anchor, Anchor 1.0.2 — master vẫn ghim 0.32.1. 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 đều sử dụng nó. Raydium.load là bất đồng bộ vì nó tải danh sách token theo mặc định; hãy chuyển disableLoadToken: true để bỏ qua lần tìm nạp đó. Kiểm tra tính năng khả dụng đã bị bỏ qua trừ khi bạn chuyển disableFeatureCheck: false. Các cấu hình phí được tìm nạp một cách lười biếng khi sử dụng lần đầu tiên thông qua raydium.api.getCpmmConfigs().
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ả
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
maximum_* của hướng dẫn, và xây dựng các tạo ATA nếu cần thiết. raydium.cpmm.computePairAmount({ ... }) trả về các số giống nhau nếu bạn muốn chúng cho bản xem trước UI.
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 hạn. Phí người tạo có hai đường dẫn: CollectCreatorFee được ký bởi người tạo, 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. 0.2.64-alpha cung cấp các trình xây dựng cấp mô-đun cho cả hai đường dẫn người tạo:
Hai hướng dẫn người tạo có các bộ phân biệt và bố cục tài khoản khác nhau — cái không cần phép thay thế người ký người tạo bằng một
payer riêng biệt và một creator không ký. Sử dụng trình xây dựng phù hợp thay vì trao đổi tài khoản thủ công trên cái kia.Không có trình xây dựng phí giao thức hoặc quỹ trong SDK (makeCollectProtocolFeeInstruction và makeCollectFundFeeInstruction không tồn tại dưới bất kỳ tên nào) — đó là những đường dẫn quản trị, cũng như CreateCreatorFeeShare / CloseCreatorFeeShare, không có trình xây dựng nào cả. Các trình xây dựng hướng dẫn cấp thấp thực sự tồn tại là collectCpFeeInstruction, makeCollectCreatorFeeInstruction và collectCreatorFeePermissionlessInInstruction.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. Tìm nạp từ RPC. - Chương trình token sai. Kho 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 bất kỳ bên nào 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 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/instructionsđể biết 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.

