Skip to main content
Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →

Ringkasan satu paragraf

CLMM — Concentrated Liquidity Market Maker — adalah AMM gaya Uniswap-v3 milik Raydium. Alih-alih menyebarkan deposit liquidity provider di seluruh kurva harga, CLMM memungkinkan LP menyetor ke dalam rentang harga tertentu. Di dalam rentang tersebut, setiap dolar deposit jauh lebih produktif dibanding di pool CPMM; di luar rentang, deposit tidak menghasilkan apa pun dan tersimpan sebagai saldo satu sisi. Program melacak likuiditas per-tick (bucket harga terdiskritisasi), menentukan harga state pool berdasarkan akar kuadrat harga yang dikodekan sebagai bilangan fixed-point Q64.64 (sqrt_price_x64), dan mencetak NFT untuk setiap posisi LP daripada token LP yang dapat ditukar.

Apa yang baru

Rilis CLMM terbaru menghadirkan tiga penambahan di atas inti gaya Uniswap-v3. Semuanya bersifat opt-in saat pembuatan pool dan kompatibel mundur dengan pool dan posisi yang ada:
  • Limit orders. LP sekarang dapat menempatkan order single-tick pada harga tertentu dan memiliki jalur swap mengisinya FIFO ketika swap melintasi tick tersebut. Order diselesaikan ke ATA pemilik pada harga limit; keeper off-chain (limit_order_admin) dapat mengumpulkan order yang terisi tanpa pemilik harus online. Lihat Instructions → OpenLimitOrder / SettleLimitOrder dan Math → Limit-order matching during swap.
  • Single-sided fee (CollectFeeOn). Pool dapat dikonfigurasi untuk mengambil swap fees dari sisi input (perilaku legacy, mode 0), atau selalu dari token_0 (1), atau selalu dari token_1 (2). Berguna ketika satu sisi pasangan adalah token akuntansi kanonik (misalnya, USDC). Lihat Fees → Single-sided fee.
  • Dynamic fee. Pool dapat memilih surcharge fee yang melacak volatilitas yang naik dengan pergerakan tick cepat dan meluruh seiring waktu. Dikalibrasi oleh DynamicFeeConfig per-tier dan DynamicFeeInfo per-pool. Lihat Fees → Dynamic fee dan Math → Dynamic fee derivation.
Instruksi baru, CreateCustomizablePool, mengekspos ketiga kontrol pada saat pembuatan pool. CreatePool klasik terus berfungsi untuk pool dengan fee default tanpa limit orders atau dynamic fees. Rilis kemudian menambahkan permissioned multi-pools: CreatePermissionedPool memungkinkan operator yang terdaftar (yang memegang PDA Permission) membuat lebih dari satu pool untuk pasangan dan fee tier yang sama dengan melipat seed_index ke dalam alamat pool, dan memperkuat OpenLimitOrder untuk menolak order yang token account input atau outputnya beku. Lihat Instructions → CreatePermissionedPool dan entri changelog 2026-07-30. Rilis 2026-08 menambahkan conditional position-freeze path untuk selected KYC-restricted issuer pools. Setiap mint NFT posisi baru menggunakan pool sebagai freeze authority, tetapi token account NFT tetap tidak beku dan dapat ditransfer secara default. CLMM membekunya hanya ketika posisi dibuka melalui OpenPositionV2 atau OpenPositionWithToken22Nft dan freeze authority mint pool salah satu cocok dengan daftar restricted-issuer program. Pemilik masih dapat mengelola likuiditas dan menutup posisi yang cocok, tetapi tidak dapat mentransfer NFT-nya atau mengubah pemilik token-account. Posisi yang ada tidak dibekukan secara retroaktif. Lihat Ticks and positions → Restricted-issuer positions dan entri changelog 2026-08-17.

Apa yang CLMM berikan

  • Capital efficiency. LP stablecoin-stablecoin yang mengkonsentrasikan likuiditas dalam band ±0,1% di sekitar paritas dapat menghasilkan 100×+ fee per dolar TVL dibanding pool CPMM dari pasangan yang sama.
  • Position-level fee accounting. Fee terakumulasi per-posisi, bukan per-LP-mint. Dua posisi di pool yang sama menghasilkan jumlah fee berbeda berdasarkan rentang mereka dan jalur yang diambil harga.
  • Multiple fee tiers per pair. Pasangan dapat memiliki beberapa pool CLMM, masing-masing terikat pada AmmConfig berbeda dengan trade-fee rate dan tick-spacing sendiri. Web UI dan router menampilkan tier mana pun yang memiliki likuiditas paling banyak pada harga saat ini.
  • Incentivizable directly on the pool. Hingga tiga reward token stream dapat dilampirkan ke pool; posisi mengumpulkan reward pro-rata berdasarkan detik × in-range-liquidity yang mereka kontribusikan. Lihat products/clmm/fees.
  • NFT positions. Setiap posisi adalah token non-fungible. Mentransfer NFT biasanya mentransfer posisi; dompet dan UI dapat menampilkan posisi dengan cara yang sama seperti menampilkan kolektibel. Hanya posisi V2 yang underlying mint-nya cocok dengan filter restricted-issuer yang beku dan tidak dapat ditransfer.
  • Token-2022 support di kedua sisi pasangan, dengan batasan ekstensi yang sama seperti CPMM.

Apa yang CLMM bukan

  • Bukan set-it-and-forget-it. Rentang yang ditetapkan saat SOL adalah $160 tidak akan menghasilkan apa pun jika SOL bergerak ke $80, kecuali Anda secara aktif menyesuaikan. CLMM memberi reward LP aktif; LP pasif harus tetap dengan CPMM.
  • Bukan zero-cost untuk dibuka. Setiap tick-array baru yang dilintasi posisi harus diinisialisasi, menimbulkan biaya rent. Rentang lebar lebih murah; rentang sempit tidak.
  • Bukan CLOB. Tidak seperti AMM v4, CLMM tidak memiliki ketergantungan OpenBook. Semua likuiditas berada di tick map.
  • Bukan superset CPMM. Posisi CLMM yang mencakup [tick_min, tick_max] pada rentang maksimum berperilaku serupa dengan CPMM, tetapi dengan biaya gas berbeda, model fee accounting berbeda, dan tidak ada token LP yang dapat ditukar. Jika Anda menginginkan pool LP fungible sederhana, gunakan CPMM.

Bagaimana CLMM berbeda dari CPMM dan AMM v4

Mental model

Pikirkan pool CLMM sebagai tiga struktur data berlapis:
  1. Kurva kontinu dalam ruang sqrt_price. Harga pool direpresentasikan sebagai sqrt_price_x64, fixed-point Q64.64. Swap berjalan di sepanjang kurva ini; dalam batas tick, matematikanya adalah matematika AMM likuiditas terkonsentrasi standar (lihat algorithms/clmm-math).
  2. Discrete tick map. Harga dikuantisasi menjadi tick — pangkat integer dari 1.0001. Setiap tick memiliki sqrt_price yang diketahui. Posisi mereferensikan endpoint mereka sebagai indeks tick integer. Indeks tick dikelompokkan ke dalam tick arrays berukuran tetap untuk penyimpanan.
  3. Per-position fee dan reward bookkeeping. Setiap posisi menyimpan global fee_growth_inside pada saat update terakhirnya. Ketika LP menyentuh posisi (buka, tutup, sesuaikan, kumpulkan), program mengurangi nilai yang disimpan dari global saat ini untuk menghitung apa yang terhutang. Ini adalah pola Uniswap-v3 feeGrowthInside0X128 / feeGrowthInside1X128.
Setiap tindakan pengguna terurai menjadi transisi state pada ketiga struktur ini:
  • Open position: pilih rentang tick, setor token, mint NFT, masukkan likuiditas ke tick map dalam rentang, inisialisasi tick-arrays yang sebelumnya kosong.
  • Increase / decrease liquidity: sesuaikan jumlah yang disimpan di position account terkait NFT dan di tick map; kumpulkan fee terakumulasi pada saat yang sama.
  • Swap: berjalan dari sqrt_price_x64 saat ini ke arah perdagangan, mengonsumsi likuiditas aktif hingga input habis atau tick terinisialisasi berikutnya tercapai; silang tick dan ambil atau lepaskan likuiditas di sisi baru.
  • Collect fees / rewards: hitung fee_growth_inside_now − fee_growth_inside_last × position_liquidity untuk setiap sisi dan setiap reward stream; transfer keluar.
Pool sebaliknya tidak peduli posisi mana yang terbuka. Dua LP dalam rentang yang sama melihat jalur pertumbuhan fee yang sama, diskalakan dengan jumlah liquidity individual mereka.

Kapan memilih CLMM

Pilih CLMM ketika:
  • Anda menyediakan likuiditas untuk pasangan stabil atau mean-reverting (USDC/USDT, jitoSOL/SOL, wBTC/BTC) dan ingin berkonsentrasi di sekitar paritas.
  • Anda adalah market maker yang bersedia memantau harga dan menyeimbangkan kembali.
  • Anda secara khusus membutuhkan per-pool incentive emissions tanpa mendirikan farm terpisah.
  • Anda membutuhkan per-position accounting untuk produk LP Anda sendiri (vault, structured product, dll.).
Lebih suka CPMM ketika:
  • Anda meluncurkan token baru dengan price discovery yang tidak diketahui.
  • Anda menginginkan token LP fungible tunggal yang dapat Anda stake, lock, atau komposisi dengan.
  • Anda menginginkan pengalaman LP pasif.
Lebih suka AMM v4 ketika:
  • Anda secara khusus membutuhkan kedalaman hybrid-CLOB yang ditempatkan AMM v4 di OpenBook.
  • Anda bermigrasi integrasi AMM v4 yang ada dan tidak membuka posisi baru.

Posisi adalah NFT

Posisi CLMM direpresentasikan on-chain oleh dua account:
  • Position NFT mint dengan supply 1.
  • Personal-position state account yang dikunci ke NFT mint, menyimpan tick posisi, likuiditas, dan nilai fee-growth terakhir yang diamati.
Mentransfer NFT posisi yang tidak beku mentransfer posisi — authority personal-position account adalah pemegang NFT. Posisi V2 tetap terikat pada pemilik aslinya hanya jika salah satu underlying vault mint cocok dengan filter restricted-issuer dan CLMM membekukan token account NFT saat pembuatan. Posisi tetap dapat dikelola dan ditutup melalui CLMM. Perlakuan terperinci ada di products/clmm/ticks-and-positions.
Rilis CLMM yang lebih lama juga membuat account ProtocolPositionState per (pool, tick_lower, tick_upper) untuk mengagregasi likuiditas untuk rentang tersebut. Rilis yang lebih baru tidak lagi membuat atau menggunakannya — field masih muncul di daftar account OpenPosition / IncreaseLiquidity / DecreaseLiquidity sebagai UncheckedAccount untuk kompatibilitas ABI, tetapi program tidak membaca atau menulisnya. Aggregate range bookkeeping hidup di endpoint tick (liquidity_gross, liquidity_net) secara langsung.

Ke mana selanjutnya

  • Accounts — pool, config, tick-array, dan layout position account.
  • Ticks and positions — tick map, tick-spacing, tick-array sizing, posisi berbasis NFT.
  • Mathsqrt_price_x64, swap step-through, derivasi fee_growth_inside.
  • InstructionsOpenPosition, IncreaseLiquidity, Swap, CollectRewards, keluarga limit-order, dan CreateCustomizablePool.
  • Fees and rewards — model fee per-posisi, mode single-sided fee, dynamic fee, dan tiga reward slot.
  • Code demos — open / adjust / swap / collect / limit-order / customizable-pool walkthroughs dalam TypeScript.
Sumber: