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 →
Chức năng của trang này. Tạo một pool CLMM mới ở mức phí bạn chọn, sau đó mở một vị trí tập trung ban đầu. Hai giao dịch trên bốn tệp —
config.ts, createPool.ts, createPosition.ts, và utils.ts — chạy với npx tsx. Mã được lấy từ các demo chính thức trong raydium-sdk-V2-demo/src/clmm và được điều chỉnh để chạy độc lập.Thiết lập
Hãy chắc chắn rằng bạn đã đọc Điều kiện tiên quyết Bắt đầu nhanh và cóRPC_URL, KEYPAIR, cũng như các phụ thuộc đã được cài đặt.
Ngoài các phụ thuộc trong hướng dẫn bắt đầu nhanh, bạn cần:
decimal.js— toán học giá và tick trongcreatePool.tsvàcreatePosition.ts.bs58— giải mã một keypair được mã hóa base58 trongconfig.tsnếu bạn sử dụngKEYPAIR_BS58thay vì tệp keyfile JSON.tsx— chạy các tệp.tsdưới đây trực tiếp quanpx tsx; không giống như các script swap và CPMM, tệp này không phải là tệp.mjsthông thường chạy vớinode.
cluster thành "devnet" trong config.ts là không đủ. createPool.ts truyền một programId: CLMM_PROGRAM_ID rõ ràng, một hằng số mainnet cố định không tuân theo cluster — hãy thay thế nó bằng dòng DEVNET_PROGRAM_ID.CLMM_PROGRAM_ID được chú thích ngay phía trên. createPosition.ts cũng hardcode một poolId mainnet (pool RAY-USDC); thay thế nó bằng ID của pool devnet bạn tạo ở Bước 2.
Bước 1 — config.ts
Lưu dưới dạng config.ts. Đây là hình dạng giống như src/config.ts.template của repo demo — disableFeatureCheck được buộc thành true (được khuyến nghị cho bất kỳ tích hợp không tầm thường nào để SDK không bị chặn trên lệnh gọi phát hiện tính năng khởi động của nó):
config.ts
Bước 2 — createPool.ts
Lưu cùng với config.ts. Nguồn: src/clmm/createPool.ts.
createPool.ts
Bước 3 — createPosition.ts
Nguồn: src/clmm/createPosition.ts.
createPosition.ts
Bước 4 — utils.ts
Nguồn: src/clmm/utils.ts.
utils.ts
Chạy nó
Điều gì vừa xảy ra
Giao dịch 1 —raydium.clmm.createPool đã khởi tạo:
- trạng thái pool tại PDA chính tắc cho
(mint1, mint2, ammConfig), token_0_vaultvàtoken_1_vault(được sắp xếp theo thứ tự byte mint),- vòng đệm
observation, - bitmap mảng tick nội tuyến,
sqrt_price_x64 ban đầu từ initialPrice của bạn.
Giao dịch 2 — raydium.clmm.openPositionFromBase đã mở một vị trí tập trung:
- đã mint một NFT vị trí vào ví của bạn (NFT là vị trí; chuyển nó sẽ chuyển vị trí),
- đã cấp phát mảng tick ở các giới hạn dưới và trên (tiền thuê một lần nếu vị trí đầu tiên trong các phạm vi đó; mảng tick không bao giờ được đóng bởi chương trình, vì vậy các vị trí tiếp theo trong các mảng giống nhau không phải trả tiền thuê thêm),
- đã gửi
inputAmountcủamint1và số tiền cặp phù hợp củamint2(được tính bằngPoolUtils.getLiquidityAmountOutFromAmountIn), - đã ghi có vị trí với thanb khoản tỷ lệ với chiều rộng phạm vi.
[0.000001, 100000]) về cơ bản là toàn phạm vi; hãy siết chặt nó để tập trung phí gần giá spot hiện tại.
Chọn mức phí
clmmConfigs[0] là mức phí thấp nhất. Bộ đầy đủ được xuất bản tại GET https://api-v3.raydium.io/main/clmm-config:
Xem
user-flows/choosing-a-pool-type để có ma trận quyết định đầy đủ.
Lỗi phổ biến
Pool already exists for this config— Một pool CLMM đã tồn tại cho bộ ba(mint1, mint2, ammConfig)này. Tra cứu ID pool hiện có và bỏ qua Bước 2.Insufficient funds for amount B— Ví của bạn có số tiền được yêu cầu củamintAnhưng không cómintBphù hợp. Mở một vị trí khi giá nằm trong phạm vi yêu cầu thanb khoản ở cả hai phía.Tick out of range—lowerPricehoặcupperPricecủa bạn nằm ngoài phạm vi giá có thể biểu diễn. Sử dụng một phạm vi hợp lý hơn so với giá hiện tại.- Giá cũ — Báo giá từ API có thể cũ 5–60 giây. Nếu
executePositionkhông thành công do slippage, hãy bỏ ghi chú khốigetRpcClmmPoolInfotrongcreatePosition.tsđể lấy lại giá trực tiếp ngay trước khi ký.
Cảnh báo
- NFT vị trí là tay cầm duy nhất của bạn. Mất NFT hoặc chuyển nó, mất quyền truy cập vào vị trí. Coi nó như một chìa khóa.
- Vị trí ngoài phạm vi không kiếm được phí. Nếu giá di chuyển ngoài
[lowerPrice, upperPrice], vị trí của bạn được đỗ hoàn toàn trong một tài sản và không kiếm được gì cho đến khi bạn cân bằng lại. - Tiền thuê mảng tick là một chiều. Vị trí đầu tiên chạm vào mảng tick chưa được khởi tạo sẽ trả tiền thuê của nó; chương trình không công khai một đường dẫn để đóng mảng tick, vì vậy tiền thuê đó là vĩnh viễn. Các vị trí tiếp theo trong cùng một mảng là miễn phí.
Tiếp theo
products/clmm/overview— cơ chế CLMM đầy đủ.products/clmm/ticks-and-positions— toán học đằng sau các tick.algorithms/impermanent-loss— định lượng khuếch đại IL của CLMM.user-flows/create-clmm-pool— cùng một quy trình qua giao diện người dùng Raydium.

