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. Trang này tài liệu hóa
@raydium-io/raydium-sdk-v2@0.2.64-alpha, phiên bản được ghim mà mọi demo mã trên trang này sử dụng. SDK chưa phải phiên bản 1.0 và bề mặt kiểu dữ liệu đã phát triển qua các bản phát hành — hãy ghim phiên bản của bạn.Phiên bản được nâng cấp từ 0.2.42-alpha vào ngày 2026-09-09 cùng với các nâng cấp chương trình: 0.2.64-alpha là bản phát hành hiện tại của SDK. Kho raydium-sdk-V2-demo mà các trang demo mã liên kết đến cài đặt 0.2.62-alpha, vì vậy hãy ghim một trong hai nếu bạn đang theo dõi demo một cách chính xác. Các demo trên các trang này được thực thi lần cuối cùng với 0.2.42-alpha (2026-04); chữ ký cuộc 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, nhưng hãy coi bất kỳ sự không khớp nào là lỗi tài liệu và mở một issue.Cài đặt
.d.ts cùng với artifact JS của nó. Bộ công cụ tối thiểu: Node 18+, TypeScript 5.0+, moduleResolution: "bundler" hoặc "node16".
Khởi tạo
Điểm vào làRaydium.load:
Raydium.load là async vì, theo mặc định, nó tải danh sách token (raydium.token.load()) từ api-v3.raydium.io. Truyền disableLoadToken: true để bỏ qua lần tìm nạp đó. Việc kiểm tra tính năng khả dụng là một lệnh gọi riêng đến /v3/main/AvailabilityCheckAPI và đã được bỏ qua trừ khi bạn truyền disableFeatureCheck: false một cách tường minh. Các cấu hình phí hoàn toàn không được tìm nạp lúc tải — chúng đến một cách lười biếng từ raydium.api.getCpmmConfigs() / getClmmConfigs() ở lần dùng đầu tiên.
Các module facade
Sau khi tải, đối tượngraydium hiển thị mười module facade cùng với một API client:
trade và token là các tiện ích hỗ trợ.)
Các builder giao dịch
Mọi hàm thay đổi trả về một builder thay vì thực thi ngay lập tức:execute— một hàm tiện lợi ký + gửi. Tương đương vớibuilder.execute.builder— instanceTxBuildervới tất cả các hướng dẫn và người ký được tích lũy.builder.build()trả về mộtTxBuildDatamàtransactioncủa nó là mộtTransactionlegacy duy nhất;builder.buildV0()trả về mộtTxV0BuildDatavới mộtVersionedTransactionduy nhất. ChỉbuildMultiTx/buildMultiTxV0mới tạo ra một mảng.transaction—Transaction/VersionedTransactionđã được xây dựng.instructionTypes/signers— các nhãn hướng dẫn và tập người ký được tích lũy.extInfo— các tính năng bổ sung cụ thể cho sản phẩm. Ví dụ:cpmm.createPooltrả vềextInfo.address.{poolId, lpMint, vaultA, vaultB};launchpad.createLaunchpadtrả vềextInfo.address(mộtLaunchpadPoolInfocùng vớipoolId).
Không có trường
innerTransactions nào trên kiểu trả về — destructuring nó là một lỗi
TypeScript. Các builder có kiểu trả về là MakeMultiTxData (ví dụ
clmm.harvestAllRewards, farm.harvestAllRewards, tradeV2.swap,
launchpad.createLaunchpad) cung cấp transactions thay thế, và execute của chúng yêu cầu
{ sequentially: boolean } và trả về { txIds } chứ không phải { txId }.txVersion kiểm soát định dạng giao dịch legacy so với V0. V0 (bảng tra cứu địa chỉ) là khuyến nghị mặc định — nó cho phép các swap lớn hơn vừa vặn trong một giao dịch.
Tại sao các builder async?
Hầu như mọi builder đều tìm nạp trạng thái on-chain nội bộ: thông tin pool (cho các báo giá), quyền sở hữu chương trình token (cho định tuyến Token-2022 so với SPL), miễn phí thuê tài khoản (cho tạo ATA), v.v. SDK lưu vào bộ nhớ cache một cách tích cực nhưng lệnh gọi đầu tiên cho một pool mới liên quan đến các vòng RPC. Giữ một instanceraydium lâu dài để tránh tìm nạp lại.
Bổ sung module CLMM (bản phát hành mới nhất)
Facade CLMM đã có các bề mặt cho các tính năng phí động, phí một chiều và lệnh giới hạn mới:raydium.clmm.createCustomizablePool— siêu tập hợp củacreatePoolchấp nhậncollectFeeOnvàdynamicFeeConfig(PublicKeycủa tài khoản cấu hình). Việc cung cấpdynamicFeeConfigchính là điều bật phí động; không có cờenableDynamicFeeriêng và cũng không códynamicFeeConfigId.createPoolcổ điển tiếp tục hoạt động cho các pool phí mặc định.raydium.clmm.openLimitOrder— mở một lệnh giới hạn tick đơn. LấypoolInfo,baseIn(hướng),orderTick,amount, và tùy chọntickArrayBitmap,noneIndex,ownerInfo. Dùng trợ giúp được xuất ragetOrderTick({ baseIn, mintADecimal, mintBDecimal, tickSpacing, price })để lượng tử hóa tick.raydium.clmm.increaseLimitOrder/decreaseLimitOrder— điều chỉnh phần chưa điền của một lệnh hiện có. Cả hai lấy{ poolInfo, limitOrder, amount };decreaseLimitOrderthêm mộtslippagetùy chọn. Giảm sẽ hoàn nguyên trên một lệnh đã điền đầy vớiInvalidOrderPhase.raydium.clmm.settleLimitOrder/settleAllLimitOrder— quét đầu ra đã điền vào ATA của chủ sở hữu.settleLimitOrderchỉ lấy{ limitOrder }— không cópoolInfo. Hoặc chủ sở hữu lệnh hoặc keeperlimit_order_admincủa chương trình đều có thể gọi nó.raydium.clmm.closeLimitOrder/closeAllLimitOrder— đóng các lệnh đã giải quyết hoàn toàn để khôi phục tiền thuê.raydium.api.getClmmDynamicConfigs()— trợ giúp REST nhấn điểm cuối mới/main/clmm-dynamic-config. (Không có trợ giúp hay điểm cuối cấu hình lệnh giới hạn: các lệnh giới hạn được khóa theo tick, không theo một tài khoản cấu hình cho mỗi pool.)
@raydium-io/raydium-sdk-v2/<anything> không phân giải được ở bất kỳ cách viết nào — hãy import mọi thứ từ thùng gói cấp cao nhất. (Về mặt nội bộ, src/raydium/clmm/utils/ đã được đổi tên thành src/raydium/clmm/libraries/, nhưng đó chưa bao giờ là một điểm vào công khai.)
Các hướng dẫn TypeScript từ đầu đến cuối nằm trong products/clmm/code-demos.
Những cạm bẫy phổ biến
1. Cluster không khớp
Cấu hình khởi động của SDK là cụ thể cho cluster. Trộncluster: "mainnet" với Connection devnet gây ra định tuyến sai lặng lẽ: SDK báo giá chống lại AmmConfig mainnet nhưng gửi đến devnet. Luôn truyền cả hai.
2. Quên tạo trước ATA
Khi tương tác lần đầu tiên với một mint, Associated Token Account của người dùng có thể không tồn tại. SDK tự động thêm một hướng dẫnAssociatedTokenAccount::create khi nó phát hiện ATA bị thiếu, điều này tốn một lượng nhỏ tiền thuê. Nếu ví của bạn có ít SOL, điều này sẽ thất bại một cách im lặng. Kiểm tra và tài trợ trước khi thử lại.
3. poolInfo cũ
poolInfo là một ảnh chụp nhanh được lưu vào bộ nhớ cache. Nếu trạng thái pool đã thay đổi kể từ khi bạn tìm nạp nó (một giao dịch lớn di chuyển giá, chẳng hạn), minAmountOut của swap có thể được tính toán dựa trên trạng thái cũ và hạ xuống dưới số tiền on-chain, hoàn nguyên. Tìm nạp lại poolInfo ngay trước khi xây dựng các giao dịch có giá trị cao, hoặc sử dụng computeAmountOut của SDK, nó sẽ truy vấn lại dự trữ.
4. Phí ưu tiên
SDK không thêm giá đơn vị tính toán theo mặc định. Trong các cửa sổ khối lượng cao (khởi chạy pool mới, sự kiện meme-coin), điều này có nghĩa là giao dịch của bạn cạnh tranh với nhiều giao dịch khác và có thể không hạ cánh. Cung cấp mộtcomputeBudgetConfig rõ ràng:
integration-guides/priority-fee-tuning để hướng dẫn kích thước.
5. Dung sai slippage phải khớp với loại pool
CPMM và AMM v4 là toán học CPMM (tác động thấp trên các giao dịch bình thường). CLMM là từng phần (tác động nhảy tại các vị trí tick). Nếu bạn sao chép dung sai slippage 0,5% từ một ví dụ CPMM vào một swap CLMM vượt qua nhiều tick, giao dịch có khả năng hoàn nguyên.computeAmountOut của SDK trả về priceImpact; kích thước dung sai của bạn phải cao hơn nó.
6. BN so với number
Tất cả các trường số tiền trong SDK là các instance BN của bn.js — không bao giờ là number của JavaScript. Chuyển đổi các giá trị số tiền qua .toNumber() sẽ cắt ngắn im lặng ở 2^53; đối với bất kỳ giá trị nào trên ~9 triệu tỷ (không phổ biến trên các mint 9 chữ số thập phân), điều này tạo ra kết quả sai. Giữ mọi thứ trong BN cho đến khi hiển thị UI cuối cùng.
Chính sách phiên bản
@raydium-io/raydium-sdk-v2là SDK duy nhất mà Raydium duy trì. Tất cả tài liệu, demo và hướng dẫn tích hợp nhắm mục tiêu nó.- Một gói v1 cũ hơn (
@raydium-io/raydium-sdk) tồn tại trên npm vì lý do lịch sử. Bảo trì kết thúc sau khi CPMM và LaunchLab được gửi (v1 không bao giờ có hỗ trợ cho cả hai), và không có bản phát hành v1 nào kể từ năm 2024. Coi v1 là hết hạn: không sử dụng nó cho mã mới, và di chuyển bất kỳ tích hợp v1 còn lại sang v2. - SDK v2 là pre-1.0. Các thay đổi ngắt giữa các bản phát hành phụ 0.x là có thể; ghim phiên bản bạn đã xác minh và kiểm tra ghi chú phát hành GitHub khi nâng cấp.
Nâng cấp
Khi nâng cấp giữa các phiên bản phụ SDK:- Kiểm tra lại kiểu trả về của mọi lệnh gọi thay đổi — các thay đổi hình dạng (ví dụ:
extInfo) xảy ra thường xuyên. - Tạo lại chữ ký tìm nạp
poolInfo— một trường có thể đã được đổi tên. - Xác minh lại xử lý slippage của bạn; SDK đã chuyển giữa các hành vi ràng buộc tự động và ràng buộc opt-in trên các bản phát hành.
- Nếu bạn sử dụng
raydium.tradeV2(định tuyến), xác minh lại hình dạng tuyến đường — đó là phần không ổn định nhất của bề mặt. Lưu ý facade đã được đổi tên từtradethànhtradeV2; tên cũ không còn tồn tại.
Nhận trợ giúp
Để hỏi về SDK và API:- GitHub issues — tệp tại github.com/raydium-io/raydium-sdk-V2/issues cho lỗi và yêu cầu tính năng. Nhóm Raydium theo dõi một cách tích cực.
- Discord — kênh
#dev-supporttại discord.gg/raydium để nhận trợ giúp đồng bộ. - Telegram — trò chuyện nhà phát triển được liên kết từ raydium.io (tránh các nhóm Telegram không được xác minh).
security/disclosure.
Con trỏ
sdk-api/rest-api— phần bổ sung HTTP cho SDK.sdk-api/trade-api— các giao dịch swap được xây dựng trên máy chủ.sdk-api/anchor-idl— tạo lại các client trực tiếp từ IDL chương trình.sdk-api/python-integration— tương đương Python quasolana-py.integration-guides/priority-fee-tuning— kích thướccomputeBudgetConfig.
- Raydium SDK v2 source
- Ghi chú phát hành Raydium SDK.

