Langsung ke konten utama
Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →
Apa yang dilakukan halaman ini. Membuat pool CLMM baru pada tingkat biaya pilihan Anda, lalu membuka posisi terkonsentrasi awal. Dua transaksi, satu skrip. Kode diambil dari demo resmi di raydium-sdk-V2-demo/src/clmm dan disesuaikan menjadi satu file yang dapat dijalankan Node.

Setup

Pastikan Anda telah membaca Prasyarat Quick start dan memiliki RPC_URL, KEYPAIR, serta dependensi yang dipasang. Pembuatan pool CLMM memiliki biaya sekali jalan ditambah sewa tick array per tick untuk posisi awal. Anda juga memerlukan kedua seed mint di dompet Anda — membuka posisi ketika harga berada dalam jangkauan yang dipilih memerlukan likuiditas di kedua sisi.

Langkah 1 — config.ts

Simpan sebagai config.ts. Bentuknya sama dengan src/config.ts.template repo demo — disableFeatureCheck dipaksa ke true (disarankan untuk integrasi apa pun yang tidak trivial sehingga SDK tidak memblokir panggilan deteksi fitur startupnya):

Langkah 2 — createPool.ts

Simpan di samping config.ts. Sumber: src/clmm/createPool.ts.

Langkah 3 — createPosition.ts

Sumber: src/clmm/createPosition.ts.

Langkah 4 — utils.ts

Sumber: src/clmm/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_vault dan token_1_vault (diurutkan menurut urutan byte mint),
  • ring buffer observation,
  • inline tick-array bitmap,
dan mengatur sqrt_price_x64 awal dari initialPrice Anda. Transaksi 2 — raydium.clmm.openPositionFromBase membuka posisi terkonsentrasi:
  • mencetak position NFT ke dompet Anda (NFT adalah posisi; mentransfernya mentransfer posisi),
  • mengalokasikan tick array pada batas bawah dan atas (sewa sekali jalan jika posisi pertama di rentang tersebut; tick array tidak pernah ditutup oleh program, jadi posisi berikutnya di array yang sama tidak membayar sewa tambahan),
  • mendeposit inputAmount dari mint1 dan jumlah pasangan yang cocok dari mint2 (dihitung oleh PoolUtils.getLiquidityAmountOutFromAmountIn),
  • mengkreditkan posisi dengan likuiditas proporsional dengan lebar rentang.
Semakin sempit rentangnya, semakin tinggi efisiensi modal per dolar TVL — dan semakin menyakitkan kerugian impermanent ketika harga bergeser keluar dari rentang. Rentang yang digunakan di atas ([0.000001, 100000]) secara efektif adalah full-range; kurangi untuk memusatkan biaya di dekat spot saat ini.

Memilih tingkat biaya

clmmConfigs[0] adalah tingkat biaya terendah. Set lengkapnya 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 jumlah mintA yang diminta tetapi bukan mintB yang cocok. Membuka posisi ketika harga berada dalam rentang memerlukan likuiditas di kedua sisi.
  • Tick out of rangelowerPrice atau upperPrice Anda jatuh di luar jangkauan harga yang dapat direpresentasikan. Gunakan rentang yang lebih masuk akal relatif terhadap harga saat ini.
  • Harga basi — Penawaran dari API dapat berusia 5–60 detik. Jika executePosition gagal pada slippage, buka komentar blok getRpcClmmPoolInfo di createPosition.ts untuk mengambil kembali harga aktif tepat sebelum menandatangani.

Peringatan

  • Position NFT adalah satu-satunya handle Anda. Kehilangan NFT atau mentransfernya, kehilangan akses ke posisi. Perlakukan seperti kunci.
  • Posisi out-of-range tidak memperoleh biaya. Jika harga bergerak di luar [lowerPrice, upperPrice], posisi Anda diparkir sepenuhnya dalam satu aset dan tidak memperoleh apa pun sampai Anda menyeimbangkan kembali.
  • Sewa tick array adalah satu arah. Posisi pertama untuk menyentuh tick array yang tidak pernah diinisialisasi membayar sewa-nya; program tidak menampilkan jalan untuk menutup tick array, jadi sewa itu permanen. Posisi berikutnya di array yang sama gratis.

Selanjutnya

Sumber: