Chuyển đến nội dung chính

Documentation Index

Fetch the complete documentation index at: https://docs.raydium.io/llms.txt

Use this file to discover all available pages before exploring further.

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 →

Tóm tắt một đoạn văn

CLMM — Concentrated Liquidity Market Maker — là AMM kiểu Uniswap-v3 của Raydium. Thay vì phân tán tiền gửi của nhà cung cấp thanh khoản trên toàn bộ đường cong giá, CLMM cho phép LP gửi vào một khoảng giá cụ thể. Trong phạm vi đó, mỗi đô-la tiền gửi sinh lợi nhiều lần hơn so với pool CPMM; ngoài phạm vi, tiền gửi không kiếm được gì và nằm yên như một số dư một chiều. Chương trình theo dõi thanh khoản trên mỗi tick (một bucket giá rời rạc), định giá trạng thái pool bằng căn bậc hai của giá được mã hóa dưới dạng số điểm cố định Q64.64 (sqrt_price_x64), và tạo NFT cho mỗi vị thế LP thay vì token LP có thể hoán đổi được.

Có gì mới

Phiên bản CLMM mới nhất cung cấp ba bổ sung bên cạnh lõi kiểu Uniswap-v3. Chúng là tùy chọn tại thời điểm tạo pool và tương thích ngược với các pool và vị thế hiện có:
  • Limit orders. LP hiện có thể đặt lệnh một tick tại một giá cụ thể và có đường swap điền nó theo FIFO khi swap vượt qua tick đó. Lệnh thanh toán vào ATA của chủ sở hữu ở giá giới hạn; một keeper ngoài chuỗi (limit_order_admin) có thể quét các lệnh đã điền mà không cần chủ sở hữu trực tuyến. Xem Instructions → OpenLimitOrder / SettleLimitOrderMath → Limit-order matching during swap.
  • Single-sided fee (CollectFeeOn). Pool có thể được cấu hình để lấy phí swap từ phía đầu vào (hành vi cũ, chế độ 0), hoặc luôn từ token_0 (1), hoặc luôn từ token_1 (2). Hữu ích khi một bên của cặp là token kế toán chính thức (ví dụ: USDC). Xem Fees → Single-sided fee.
  • Dynamic fee. Pool có thể tham gia vào phí bổ sung theo dõi biến động tăng lên khi có chuyển động tick nhanh chóng và giảm dần theo thời gian. Được hiệu chỉnh bằng DynamicFeeConfig trên mỗi tier và DynamicFeeInfo trên mỗi pool. Xem Fees → Dynamic feeMath → Dynamic fee derivation.
Một instruction mới, CreateCustomizablePool, để lộ cả ba công tắc tại thời điểm tạo pool. CreatePool cổ điển tiếp tục hoạt động cho các pool phí mặc định mà không có limit orders hoặc dynamic fees.

CLMM mang lại cho bạn cái gì

  • Hiệu quả vốn. Một LP stablecoin-stablecoin tập trung thanh khoản trong dải ±0.1% quanh parity có thể kiếm được phí gấp 100+ so với pool CPMM của cặp tương tự.
  • Hạch toán phí ở mức vị thế. Phí tích luỹ trên mỗi vị thế, không phải trên mỗi LP-mint. Hai vị thế trên cùng một pool kiếm được những số tiền phí khác nhau dựa trên phạm vi của chúng và đường đi giá đã thực hiện.
  • Nhiều fee tier cho mỗi cặp. Một cặp có thể có nhiều pool CLMM, mỗi cái liên kết với AmmConfig khác nhau với tỷ lệ phí giao dịch và khoảng cách tick riêng của nó. UI web và router hiển thị tier nào có thanh khoản nhiều nhất ở giá hiện tại.
  • Có thể khuyến khích trực tiếp trên pool. Lên đến ba luồng token phần thưởng có thể được gắn vào pool; vị thế thu thập phần thưởng tỷ lệ thuận dựa trên giây × thanh khoản trong phạm vi mà chúng đóng góp. Xem products/clmm/fees.
  • Vị thế NFT. Mỗi vị thế là token không thể hoán đổi được với mint bằng PDA xác định. Chuyển NFT sẽ chuyển vị thế; ví và UI có thể hiển thị vị thế cách hiển thị các tư liệu sưu tập.
  • Hỗ trợ Token-2022 ở cả hai bên của cặp, với những hạn chế mở rộng giống như CPMM.

CLMM không phải

  • Không phải là set-it-and-forget-it. Một phạm vi được đặt khi SOL là $160 sẽ không kiếm được gì nếu SOL chuyển sang $80, trừ khi bạn chủ động điều chỉnh. CLMM khoán phần thưởng cho LP chủ động; LP thụ động nên ở lại CPMM.
  • Không phải là không chi phí để mở. Mỗi tick-array mới mà vị thế vượt qua phải được khởi tạo, tốn khoảng cách. Phạm vi rộng rẻ hơn; những cái hẹp thì không.
  • Không phải là CLOB. Không giống AMM v4, CLMM không có phụ thuộc OpenBook. Tất cả thanh khoản nằm trên bản đồ tick.
  • Không phải là tập hợp của CPMM. Một vị thế CLMM trải dài [tick_min, tick_max] ở phạm vi tối đa hoạt động tương tự với CPMM, nhưng với chi phí gas khác, mô hình hạch toán phí khác, và không có token LP có thể hoán đổi được. Nếu bạn muốn một pool LP có thể hoán đổi được đơn giản, hãy sử dụng CPMM.

CLMM khác với CPMM và AMM v4 như thế nào

Khía cạnhAMM v4CPMMCLMM
Đường congConstant productConstant productTập trung (dựa trên tick)
Cổ phần LPFungible LP mintFungible LP mintPer-position NFT
Thanh khoản ở…Trên tất cả giáTrên tất cả giáTrong phạm vi do người dùng chọn
Fee tiersCố định 0.25%Per AmmConfig (ví dụ: 0.25%, 1%)Per AmmConfig × tick-spacing
Quản lý chủ độngKhông áp dụngKhông áp dụngBắt buộc
Hạch toán phíPool-levelPool-levelPer-position
Reward farmsFarm program riêngFarm program riêngTích hợp (tới 3 phần thưởng)
Token-2022Không
Oracle trên chuỗiKhôngobservation ringobservation array per pool

Mô hình tư duy

Hãy coi pool CLMM như ba cấu trúc dữ liệu chồng lên nhau:
  1. Một đường cong liên tục trong không gian sqrt_price. Giá của pool được biểu diễn dưới dạng sqrt_price_x64, một điểm cố định Q64.64. Swap đi dọc theo đường cong này; trong ranh giới tick, toán học là toán học AMM thanh khoản tập trung tiêu chuẩn (xem algorithms/clmm-math).
  2. Một bản đồ tick rời rạc. Giá được lượng tử hóa thành tick — lũy thừa số nguyên của 1.0001. Mỗi tick có sqrt_price đã biết. Vị thế tham chiếu điểm cuối của chúng là chỉ số tick nguyên. Chỉ số tick được nhóm thành tick arrays có kích thước cố định để lưu trữ.
  3. Hạch toán phí và phần thưởng trên mỗi vị thế. Mỗi vị thế lưu trữ fee_growth_inside toàn cầu tại thời điểm cập nhật cuối cùng của nó. Khi LP chạm vào vị thế (mở, đóng, điều chỉnh, thu thập), chương trình trừ giá trị được lưu trữ khỏi giá trị toàn cầu hiện tại để tính toán số tiền nợ. Đây là mẫu Uniswap-v3 feeGrowthInside0X128 / feeGrowthInside1X128.
Mỗi hành động người dùng phân hủy thành chuyển tiếp trạng thái trên ba cấu trúc này:
  • Open position: chọn phạm vi tick, gửi token, tạo NFT, chèn thanh khoản vào bản đồ tick trong phạm vi, khởi tạo bất kỳ tick-arrays nào trước đây trống rỗng.
  • Increase / decrease liquidity: điều chỉnh số lượng được lưu trữ trong tài khoản vị thế liên kết với NFT và trong bản đồ tick; đồng thời thu thập phí tích luỹ.
  • Swap: đi từ sqrt_price_x64 hiện tại theo hướng giao dịch, tiêu thụ thanh khoản hoạt động cho đến khi hết đầu vào hoặc tick được khởi tạo tiếp theo được đạt tới; vượt qua tick và chọn hoặc bỏ thanh khoản ở bên mới.
  • Collect fees / rewards: tính toán fee_growth_inside_now − fee_growth_inside_last × position_liquidity cho mỗi bên và mỗi luồng phần thưởng; chuyển ra.
Pool khác biệt với vị thế nào đang mở. Hai LP trong cùng một phạm vi thấy cùng đường phát triển phí, được chia tỷ lệ theo các số tiền liquidity riêng lẻ của họ.

Khi nào chọn CLMM

Chọn CLMM khi:
  • Bạn đang cung cấp thanh khoản cho một cặp ổn định hoặc mean-reverting (USDC/USDT, jitoSOL/SOL, wBTC/BTC) và muốn tập trung gần parity.
  • Bạn là một market maker sẵn sàng theo dõi giá và cân bằng lại.
  • Bạn cụ thể cần phát hành khuyến khích mỗi pool mà không cần thiết lập farm riêng.
  • Bạn cần hạch toán mỗi vị thế cho sản phẩm LP của riêng bạn (vault, sản phẩm có cấu trúc, v.v.).
Ưu tiên CPMM khi:
  • Bạn đang khởi chạy một token mới với khám phá giá không xác định.
  • Bạn muốn một token LP có thể hoán đổi được duy nhất mà bạn có thể đặt cược, khóa hoặc kết hợp với.
  • Bạn muốn trải nghiệm LP thụ động.
Ưu tiên AMM v4 khi:
  • Bạn cụ thể cần độ sâu AMM hybrid-CLOB mà AMM v4 đặt trên OpenBook.
  • Bạn đang di chuyển các tích hợp AMM v4 hiện có và không mở vị thế mới.

Vị thế là NFT

Một vị thế CLMM được biểu diễn trên chuỗi bằng hai tài khoản:
  • Một position NFT mint có cung cấp 1.
  • Một tài khoản personal-position state được khóa với NFT mint, giữ tick của vị thế, thanh khoản, và giá trị fee-growth được quan sát lần cuối.
Chuyển NFT sẽ chuyển vị thế — quyền của tài khoản personal-position là chủ sở hữu NFT. Đây là cùng một mẫu mà Uniswap v3 tiên phong, được triển khai trong mô hình tài khoản của Solana. Một phương pháp chi tiết có trong products/clmm/ticks-and-positions.
Các phiên bản CLMM cũ hơn cũng tạo tài khoản ProtocolPositionState cho mỗi (pool, tick_lower, tick_upper) để tổng hợp thanh khoản cho phạm vi đó. Các phiên bản mới không còn tạo hoặc sử dụng nó — trường vẫn xuất hiện trong danh sách tài khoản OpenPosition / IncreaseLiquidity / DecreaseLiquidity như UncheckedAccount để tương thích ABI, nhưng chương trình không đọc hoặc ghi nó. Hạch toán phạm vi tổng hợp nằm trên các điểm cuối tick (liquidity_gross, liquidity_net) trực tiếp.

Nơi để đi tiếp

  • Accounts — bố cục tài khoản pool, config, tick-array, và position.
  • Ticks and positions — bản đồ tick, khoảng cách tick, kích thước tick-array, vị thế dựa trên NFT.
  • Mathsqrt_price_x64, swap step-through, fee_growth_inside derivation.
  • InstructionsOpenPosition, IncreaseLiquidity, Swap, CollectRewards, họ limit-order, và CreateCustomizablePool.
  • Fees and rewards — mô hình phí mỗi vị thế, chế độ phí một chiều, phí động, và ba slot phần thưởng.
  • Code demos — mở / điều chỉnh / swap / thu thập / limit-order / customizable-pool walkthroughs trong TypeScript.
Nguồn: