Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →
Apa yang dilakukan ini. Membuat pool CLMM baru pada tingkat biaya pilihan Anda, kemudian membuka posisi terkonsentrasi awal. Dua transaksi di empat file —
config.ts, createPool.ts, createPosition.ts, dan utils.ts — dijalankan dengan npx tsx. Kode diambil dari demo resmi di raydium-sdk-V2-demo/src/clmm dan disesuaikan untuk berjalan mandiri.Persiapan
Pastikan Anda telah membaca prasyarat Quick start dan memilikiRPC_URL, KEYPAIR, dan dependensi yang terinstal.
Selain dependensi di quickstart, Anda memerlukan:
decimal.js— matematika harga dan tick dicreatePool.tsdancreatePosition.ts.bs58— mendekode keypair yang dikodekan base58 diconfig.tsjika Anda menggunakanKEYPAIR_BS58alih-alih file keyfile JSON.tsx— menjalankan file.tsdi bawah secara langsung melaluinpx tsx; tidak seperti skrip swap dan CPMM, ini bukan file.mjsbiasa yang dijalankan dengannode.
cluster menjadi "devnet" di config.ts saja tidak cukup. createPool.ts melewatkan programId: CLMM_PROGRAM_ID yang eksplisit, konstanta mainnet tetap yang tidak mengikuti cluster — tukarnya dengan baris DEVNET_PROGRAM_ID.CLMM_PROGRAM_ID yang dikomentari tepat di atasnya. createPosition.ts juga hardcode poolId mainnet (pool RAY-USDC); gantilah dengan ID pool devnet yang Anda buat di Langkah 2.
Langkah 1 — config.ts
Simpan sebagai config.ts. Ini memiliki bentuk yang sama dengan src/config.ts.template repo demo — disableFeatureCheck dipaksa menjadi true (direkomendasikan untuk integrasi non-trivial apa pun sehingga SDK tidak memblokir pada panggilan feature-detect startup-nya):
config.ts
Langkah 2 — createPool.ts
Simpan bersama config.ts. Sumber: src/clmm/createPool.ts.
createPool.ts
Langkah 3 — createPosition.ts
Sumber: src/clmm/createPosition.ts.
createPosition.ts
Langkah 4 — utils.ts
Sumber: src/clmm/utils.ts.
utils.ts
Jalankan
Apa yang baru saja terjadi
Transaksi 1 —raydium.clmm.createPool menginisialisasi:
- state pool di PDA kanonik untuk
(mint1, mint2, ammConfig), token_0_vaultdantoken_1_vault(diurutkan berdasarkan urutan byte mint),- ring buffer
observation, - bitmap tick-array inline,
sqrt_price_x64 awal dari initialPrice Anda.
Transaksi 2 — raydium.clmm.openPositionFromBase membuka posisi terkonsentrasi:
- mencetak NFT posisi ke dompet Anda (NFT adalah posisi; mentransfernya mentransfer posisi),
- mengalokasikan tick array di batas bawah dan atas (sewa satu kali jika posisi pertama di rentang tersebut; tick array tidak pernah ditutup oleh program, jadi posisi berikutnya di array yang sama tidak membayar sewa tambahan),
- menyetor
inputAmountdarimint1dan jumlah pasangan yang cocok darimint2(dihitung olehPoolUtils.getLiquidityAmountOutFromAmountIn), - mengkredit posisi dengan likuiditas sebanding dengan lebar rentang.
[0.000001, 100000]) secara efektif full-range; perketat untuk memusatkan biaya di dekat spot saat ini.
Memilih tingkat biaya
clmmConfigs[0] adalah tingkat biaya terendah. Set lengkap dipublikasikan di GET https://api-v3.raydium.io/main/clmm-config:
Lihat
user-flows/choosing-a-pool-type untuk matriks keputusan lengkap.
Kesalahan umum
Pool already exists for this config— Pool CLMM sudah ada untuk triple(mint1, mint2, ammConfig)ini. Cari ID pool yang ada dan lewati Langkah 2.Insufficient funds for amount B— Dompet Anda memiliki jumlahmintAyang diminta tetapi tidak memilikimintByang cocok. Membuka posisi ketika harga berada di dalam rentang memerlukan likuiditas di kedua sisi.Tick out of range—lowerPriceatauupperPriceAnda berada di luar rentang harga yang dapat direpresentasikan. Gunakan rentang yang lebih masuk akal relatif terhadap harga saat ini.- Harga basi — Kutipan dari API dapat berusia 5–60 detik. Jika
executePositiongagal pada slippage, batalkan komentar blokgetRpcClmmPoolInfodicreatePosition.tsuntuk mengambil harga langsung tepat sebelum menandatangani.
Peringatan
- NFT posisi adalah satu-satunya pegangan Anda. Kehilangan NFT atau mentransfernya, kehilangan akses ke posisi. Perlakukan seperti kunci.
- Posisi out-of-range tidak menghasilkan biaya. Jika harga bergerak di luar
[lowerPrice, upperPrice], posisi Anda diparkir sepenuhnya dalam satu aset dan tidak menghasilkan apa pun sampai Anda menyeimbangkan kembali. - Sewa tick array adalah satu arah. Posisi pertama yang menyentuh tick array yang tidak pernah diinisialisasi membayar sewanya; program tidak mengekspos jalur untuk menutup tick array, jadi sewa itu permanen. Posisi berikutnya di array yang sama gratis.
Selanjutnya
products/clmm/overview— mekanik CLMM lengkap.products/clmm/ticks-and-positions— matematika di balik tick.algorithms/impermanent-loss— mengukur amplifikasi IL CLMM.user-flows/create-clmm-pool— alur yang sama melalui UI Raydium.

