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 master, Anchor 1.0.2. 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à facade của SDK — mỗi ví dụ dưới đây sử dụng nó. Raydium.load là async vì nó tải danh sách token theo mặc định; truyề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 truyề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ả phí
create_pool_feemột lần chopoolFeeAccount. - 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 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 để xem trước UI.
Rút thanh khoản
Nguồn:src/cpmm/withdraw.ts
Thu thập phí protocol/fund/creator
Nguồn:src/cpmm/collectCreatorFee.ts, src/cpmm/collectAllCreatorFee.ts
Thu thập protocol và fund vẫn được kiểm soát bởi quyền hạn. Phí creator có hai cách: CollectCreatorFee được ký bởi creator, và CollectCreatorFeePermissionless có thể được gọi bởi bất kỳ người trả phí nào nhưng chỉ có thể chuyển đến các ATA chính thức của creator. Phiên bản 0.2.64-alpha cung cấp các builder ở cấp module cho cả hai cách của creator:
Hai instruction creator có các discriminator và account layout khác nhau — cái permissionless thay thế người ký creator bằng một
payer riêng biệt và một creator không ký. Hãy sử dụng builder phù hợp thay vì trao đổi tài khoản thủ công trên cái kia.Không có builder phí protocol hoặc fund trong SDK (makeCollectProtocolFeeInstruction và makeCollectFundFeeInstruction không tồn tại dưới bất kỳ tên nào) — đó là các đường dẫn admin, cũng như CreateCreatorFeeShare / CloseCreatorFeeShare, cũng không có builder. Các builder instruction cấp thấp thực sự tồn tại là collectCpFeeInstruction, makeCollectCreatorFeeInstruction và collectCreatorFeePermissionlessInInstruction.PoolState:
Bộ xương 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 vault 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 với CpiContext::new_with_signer và truyền các seed của bạn.
Những lỗi thường gặp
Một danh sách kiểm tra ngắn trước khi mở một vé hỗ trợ:- Sorted mints. Nếu
poolStatePDA dẫn xuất 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. - Stale API quote. Không bao giờ truyền giá trị reserve từ
api-v3.raydium.iovàoCurveCalculator.swap. Hãy lấy từ một RPC. - Wrong token program. Vault 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 under-denominated for transfer-fee mints. Nếu một trong hai bên của pool là một mint Token-2022 transfer-fee,
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ì vault gửi. NotApprovedon a swap. Kiểm traPoolState.status— admin có thể đã tạm dừng swap trên pool đó. Xemproducts/cpmm/instructionsđể biết bitmask trạng thái.
Bước tiếp theo
sdk-api/typescript-sdk— tham chiếu SDK đầy đủ.sdk-api/rest-api— các endpoint quote và pool-metadata.user-flows/create-cpmm-pool— hướng dẫn không có mã của cùng một luồng.integration-guides/aggregator— nếu bạn đang định tuyến CPMM như một phần của đường dẫn multi-hop.

