> ## 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.

# 2026-10-30 — CPMM: InitializeV2 membuka biaya kreator untuk setiap pembuat pool

> CPMM menambahkan InitializeV2, instruksi pembuatan pool tanpa izin yang menerima argumen opsional creator_fee_on. Kreator mana pun kini dapat mengaktifkan biaya kreator dan memilih sisinya tanpa Permission PDA. Initialize, InitializeWithPermission dan setiap instruksi lainnya tidak berubah. Aditif: tidak ada tata letak akun, kode kesalahan, atau daftar akun yang ada yang berubah.

> [!NOTE]
>
> **Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.**
>
> [Lihat versi bahasa Inggris →](https://docs.raydium.io/reference/changelog/2026-10-30-cpmm-initialize-v2.md)

> [!NOTE]
>
> Entri ini mencakup upgrade program CPMM yang dijadwalkan untuk **2026-10-30**. Ini diverifikasi terhadap branch `feat/initialize-v2` dari `raydium-cp-swap` (head `40cbd81`) sebelum deployment. Konfirmasi program yang di-deploy sebelum mengandalkan instruksi baru.

Setiap pool CPMM memiliki flag `enable_creator_fee` dan sisi `creator_fee_on`, keduanya tetap sejak pembuatan. Hingga kini, kreator hanya dapat mengaturnya melalui `InitializeWithPermission`, yang memerlukan PDA `Permission` yang diterbitkan admin. `Initialize` publik selalu menyimpan biaya dalam keadaan nonaktif. Dalam praktiknya, hanya kelulusan LaunchLab dan alur terbatas lainnya yang dapat membuat pool yang mengenakan biaya kreator.

Rilis ini menambahkan **`InitializeV2`**. Instruksi ini adalah `Initialize` dengan satu argumen tambahan, `creator_fee_on: Option<CreatorFeeOn>`, dan siapa pun dapat memanggilnya. Matematika pool, swap, likuiditas, pengumpulan biaya, dan bagian protokol dari biaya kreator tidak tersentuh.

## TL;DR untuk integrator

* **Instruksi baru: `InitializeV2`.** Tanpa izin. Argumennya adalah `init_amount_0`, `init_amount_1`, `open_time` dan `creator_fee_on: Option<CreatorFeeOn>`. Discriminator `[67, 153, 175, 39, 218, 16, 38, 32]`.
* **`Some(side)` mengaktifkan biaya kreator di sisi tersebut; `None` membiarkannya nonaktif.** `None` menyimpan persis apa yang disimpan `Initialize`.
* **Akun yang sama dengan `Initialize`, dikurangi `rent`.** 19 akun pertama identik dan dalam urutan yang sama. Lihat [daftar akun](https://docs.raydium.io/id/products/cpmm/instructions.md#initializev2).
* **Kreator adalah penandatangan.** `pool_state.pool_creator` adalah `creator` yang menandatangani. Berbeda dengan `InitializeWithPermission`, penerima manfaat tidak dapat diatur ke alamat lain.
* **Kreator memilih aktif/nonaktif dan sisinya, bukan tarifnya.** Pool mengenakan `AmmConfig.creator_fee_rate` dari tingkat biayanya. Tarif tersebut default-nya `0`, sehingga pool yang diaktifkan pada tingkat seperti itu tidak mengakumulasi apa pun.
* **Tidak ada yang sudah ada yang berubah.** `Initialize` dan `InitializeWithPermission` mempertahankan discriminator, akun, argumen, dan perilakunya. Tidak ada tata letak akun atau kode kesalahan yang berubah.
* **Perbarui IDL Anda** untuk mendapatkan instruksi baru. Klien yang tidak pernah memanggilnya tidak perlu perubahan.

## Apa yang berubah dalam program

### Instruksi baru: `InitializeV2`

`InitializeV2` menjalankan kode pembuatan yang sama dengan `Initialize`. Instruksi ini:

* menerima PDA pool kanonik atau keypair acak yang ditandatangani sebagai `pool_state`;
* menerapkan daftar putih Token-2022 dan pemeriksaan `SupportMintAssociated` yang sama, melalui `remaining_accounts`;
* menolak pembuatan ketika `amm_config.disable_create_pool` diatur;
* menaikkan `open_time` ke `block_timestamp + 1` ketika nilainya tidak di masa depan;
* mengunci 100 unit dasar LP dan me-mint sisanya ke kreator;
* mengenakan `amm_config.create_pool_fee`.

Satu-satunya perbedaan adalah apa yang ditulisnya ke dalam `PoolState` baru:

| Argumen `creator_fee_on` | Byte Borsh | `enable_creator_fee` | `creator_fee_on` |
| - | - | - | - |
| `None` | `00` | `false` | `0` (`BothToken`) |
| `Some(BothToken)` | `01 00` | `true` | `0` |
| `Some(OnlyToken0)` | `01 01` | `true` | `1` |
| `Some(OnlyToken1)` | `01 02` | `true` | `2` |

Byte tag atau byte varian yang tidak valid menggagalkan deserialisasi argumen Anchor. Tidak ada kode kesalahan baru yang terlibat.

| | Discriminator |
| - | - |
| `initialize` (tidak berubah) | `[175, 175, 109, 31, 13, 152, 155, 237]` |
| `initialize_with_permission` (tidak berubah) | `[63, 55, 254, 65, 49, 178, 89, 121]` |
| `initialize_v2` (baru) | `[67, 153, 175, 39, 218, 16, 38, 32]` |

### Perbandingan tiga jalur pembuatan

| | `Initialize` | `InitializeV2` | `InitializeWithPermission` |
| - | - | - | - |
| Siapa yang dapat memanggil | Siapa pun | Siapa pun | Pemegang PDA `Permission` |
| Biaya kreator | Selalu nonaktif | Pilihan kreator | Selalu aktif |
| Sisi (`creator_fee_on`) | `BothToken` (tidak digunakan) | Pilihan kreator | Pilihan pemanggil |
| `pool_creator` yang tercatat | `creator` yang menandatangani | `creator` yang menandatangani | Akun `creator` terpisah, bukan penandatangan |
| Pembayar | `creator` | `creator` | `payer` terpisah |
| Sysvar `rent` di akhir | Ya | Tidak | Tidak |

### Refaktor internal

Ketiga handler kini berbagi satu rutin `initialize_pool`. Refaktor ini tidak mengubah akun, argumen, pemeriksaan, atau nilai yang disimpan oleh `Initialize` maupun `InitializeWithPermission`. Pengujian baru juga memeriksa bahwa `Initialize` biasa pada konfigurasi yang sama tetap menyimpan biaya kreator dalam keadaan nonaktif.

## Yang perlu diketahui kreator

* **Periksa tingkat biaya terlebih dahulu.** Tarif biaya kreator milik `AmmConfig`, bukan pool. Pilih tingkat yang `creator_fee_rate`-nya sesuai dengan yang ingin Anda kenakan. Tarif tercantum di [`products/cpmm/fees`](https://docs.raydium.io/id/products/cpmm/fees).
* **Pilihan ini permanen.** Tidak ada instruksi yang mengubah `enable_creator_fee` atau `creator_fee_on` setelah pembuatan. Untuk mengubahnya, Anda harus membuat pool baru.
* **Trader membayarnya di atas biaya perdagangan.** Biaya kreator adalah tarif terpisah yang ditambahkan ke swap. Biaya ini tidak mengurangi bagian LP, protokol, atau dana, tetapi membuat pool lebih mahal untuk diperdagangkan dibandingkan pool pada tingkat yang sama dengan biaya nonaktif.
* **Pengumpulan tidak berubah.** Gunakan `CollectCreatorFee` atau `CollectCreatorFeePermissionless`. Bagian protokol dari [rilis 2026-09-19](https://docs.raydium.io/id/reference/changelog/2026-09-19-cpmm-creator-fee-protocol-share.md) berlaku, dan Anda tidak dapat memilih keluar darinya saat pembuatan.

## Catatan migrasi

* **Pembuat pool.** Beralih dari `Initialize` ke `InitializeV2` hanya jika Anda ingin biaya kreator aktif. Teruskan `Some(side)` dan hapus akun `rent`. `Initialize` tetap berfungsi.
* **Pengguna SDK.** `raydium.cpmm.createPool` di `@raydium-io/raydium-sdk-v2@0.2.64-alpha` membangun `Initialize`. Sampai sebuah rilis menyediakan builder `InitializeV2`, enkode dari IDL yang diperbarui.
* **Indexer dan router.** Perkirakan lebih banyak pool dengan `enable_creator_fee = true`, dibuat oleh wallet biasa alih-alih LaunchLab. Kutip harga dari `enable_creator_fee` dan `creator_fee_on` milik setiap pool sendiri, jangan pernah hanya dari jalur pembuatan atau tingkat biayanya. Dekode instruksi baru jika Anda melacak pembuatan pool dari instruksi. Pelacakan dari akun `PoolState` tidak memerlukan perubahan.
* **UI.** Tampilkan apakah pool mengenakan biaya kreator dan pada tarif berapa, karena dua pool pada tingkat yang sama kini dapat berbeda.
* **LaunchLab dan alur berizin lainnya.** Tidak ada perubahan. `InitializeWithPermission` tetap menjadi jalur ketika pembayar dan kreator yang tercatat harus berbeda.

## Apa yang tidak berubah

* **Setiap tata letak akun**, termasuk `PoolState` dan `AmmConfig`.
* **`Initialize` dan `InitializeWithPermission`**: discriminator, akun, argumen, dan nilai yang disimpan.
* **`Permission`, `CreatePermissionPda` dan `ClosePermissionPda`.**
* **Matematika swap, deposit, dan withdraw**, pengenaan biaya kreator, dan bagian protokol dari biaya kreator.
* **Kode kesalahan.** `6000`–`6015` tidak berubah; tidak ada yang ditambahkan.
* **Program ID.**

## Halaman yang diperbarui

* `products/cpmm/instructions`: banner upgrade; baris ringkasan dan matriks perubahan status; bagian `InitializeV2` baru dengan argumen, pengodean, dan daftar akun; kondisi pasca `Initialize` kini merujuk ke `InitializeV2`.
* `products/cpmm/fees`: bagian "Creator fee" mencantumkan ketiga jalur pembuatan dan mencatat bahwa mengaktifkan biaya tidak menetapkan tarifnya.
* `products/cpmm/accounts`: catatan `poolState` dan ID pool; catatan bidang `creator_fee_on` / `enable_creator_fee`; catatan `Permission`; baris siklus hidup akun.
* `products/cpmm/overview`: callout "What's new" dan poin "Predictable fees".
* `products/cpmm/code-demos`: catatan bahwa `createPool` membangun `Initialize` dan cara menggunakan `InitializeV2`.
* `protocol-overview/shared-infrastructure`: biaya kreator tidak lagi terbatas pada pool yang lulus LaunchLab.
* `reference/token-2022-support`: jalur pembuatan pool CPMM.

**Diverifikasi terhadap**: `raydium-cp-swap` branch `feat/initialize-v2` (`40cbd81`): `programs/cp-swap/src/lib.rs`, `instructions/initialize_v2.rs`, `instructions/initialize.rs`, `instructions/initialize_with_permission.rs`, `instructions/mod.rs`, `states/pool.rs`, dan `tests/initialize_v2.test.ts`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.