> ## 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-08-27 — LaunchLab: platform memegang withdraw-withheld authority dari pembuatan mint

> InitializeWithToken2022 sekarang menulis PlatformConfig.transfer_fee_extension_auth ke dalam withdraw_withheld_authority mint dasar yang baru, bukan PDA launch authority, dan MigrateToCpswap hanya menetapkan ulang authority tersebut ketika PDA masih memegangnya. Tidak ada perubahan layout akun, instruksi, atau error.

<Info>
  **Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.**

  [Lihat versi bahasa Inggris →](/reference/changelog/2026-08-27-launchlab-token2022-withheld-authority)
</Info>

<Info>
  Entri ini mencakup pembaruan program LaunchLab yang akan datang. Entri ini telah diverifikasi terhadap cabang rilis lokal sebelum deployment. Konfirmasi program yang di-deploy sebelum mengandalkan penarikan withheld-fee pra-kelulusan.
</Info>

Mint dasar Token-2022 yang dibuat oleh `InitializeWithToken2022` dapat membawa `TransferFeeConfig`. Ekstensi ini memiliki dua authority: `transfer_fee_config_authority`, yang mengubah tingkat biaya dan biaya maksimum, dan `withdraw_withheld_authority`, yang menarik biaya yang Token-2022 tahan pada akun token.

Hingga rilis ini, program menempatkan launch `authority` PDA pada keduanya saat pembuatan mint dan menyerahkan keduanya ke `PlatformConfig.transfer_fee_extension_auth` saat kelulusan. Program launchpad tidak memiliki instruksi withdraw-withheld atau harvest, jadi selama seluruh fase bonding-curve, tidak ada yang bisa menarik saldo yang ditahan — satu-satunya kunci yang bisa adalah PDA tanpa instruksi untuk menandatangani dengannya.

Rilis ini menulis `transfer_fee_extension_auth` langsung ke dalam `withdraw_withheld_authority` saat pembuatan mint, sehingga platform dapat menyapu biaya yang ditahan dari perdagangan pertama. `MigrateToCpswap` mendapatkan guard sehingga hanya menetapkan ulang authority tersebut ketika PDA masih yang memegangnya, yang membuat kelulusan berfungsi untuk mint dari kedua generasi.

Tidak ada yang berubah selain itu. Tidak ada akun yang bertambah atau berkurang, tidak ada instruksi yang mendapatkan atau kehilangan akun, tidak ada argumen yang berubah, dan tidak ada kode error yang bergerak.

## TL;DR untuk integrator

* **Biaya transfer yang ditahan dapat ditarik selama peluncuran.** Pada peluncuran Token-2022 baru yang platformnya memiliki `transfer_fee_extension_auth` yang ditetapkan, kunci tersebut adalah `withdraw_withheld_authority` mint dari pembuatan. Panggil `WithdrawWithheldTokensFromAccounts` / `WithdrawWithheldTokensFromMint` Token-2022 secara langsung; LaunchLab tidak memiliki instruksi untuk ini dan tidak pernah memilikinya.
* **Waktu `transfer_fee_config_authority` tidak berubah.** Masih merupakan launch `authority` PDA hingga kelulusan, dan masih berpindah ke `transfer_fee_extension_auth` dalam `MigrateToCpswap`. Tingkat biaya tidak dapat diubah di tengah peluncuran.
* **Tetapkan `transfer_fee_extension_auth` sebelum meluncurkan.** Ketika `Pubkey::default()` saat pembuatan mint, withdraw authority kembali ke `authority` PDA — perilaku lama. Menetapkan field setelahnya masih memulihkan authority saat kelulusan, tetapi saldo yang ditahan terperangkap hingga saat itu.
* **Jangan rotasi field di tengah peluncuran.** Dua authority dibaca pada dua momen berbeda, jadi nilai yang berubah di antaranya meninggalkan mereka pada kunci berbeda. Detail di [Rotasi memisahkan dua authority](#rotasi-memisahkan-dua-authority).
* **`MigrateToCpswap` tidak berubah untuk pemanggil.** Akun yang sama, argumen yang sama, error yang sama. Guard baru bersifat internal; tanpanya, migrasi mint generasi baru akan kembali di dalam Token-2022 karena PDA tidak lagi dapat menandatangani authority yang tidak dipegang.
* **Peluncuran yang ada tidak terpengaruh.** Mint yang sudah on-chain menyimpan PDA pada kedua authority dan masih mendapatkan keduanya diserahkan saat kelulusan.
* **Penyegaran IDL tidak diperlukan.** Tidak ada layout, akun, argumen, atau kode error yang berubah.

## Siapa yang memegang apa, dan kapan

| Authority                       | Pemegang saat pembuatan mint                                                                    | Pemegang setelah `MigrateToCpswap`                                                                    |
| ------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
| `withdraw_withheld_authority`   | `transfer_fee_extension_auth`; `authority` PDA ketika field tersebut adalah `Pubkey::default()` | Tidak berubah ketika sudah menjadi kunci platform. Ditetapkan ulang hanya jika PDA masih memegangnya. |
| `transfer_fee_config_authority` | `authority` PDA, selalu                                                                         | `transfer_fee_extension_auth`, ketika field tersebut non-default                                      |

Kedua penyerahan masih berada di belakang kondisi luar yang sama seperti sebelumnya: mint dasar harus membawa `TransferFeeConfig` **dan** `transfer_fee_extension_auth` harus non-default. Platform yang tidak pernah menetapkan field menyimpan kedua authority pada `authority` PDA selamanya — tingkat biaya tidak pernah dapat diubah dan saldo yang ditahan tidak pernah dapat ditarik.

## Rotasi memisahkan dua authority

`transfer_fee_extension_auth` dibaca dua kali per peluncuran, pada dua momen yang dapat berselang berhari-hari:

1. Pada `InitializeWithToken2022`, untuk `withdraw_withheld_authority`.
2. Pada `MigrateToCpswap`, untuk `transfer_fee_config_authority` — dan untuk `withdraw_withheld_authority` hanya ketika PDA masih memegangnya.

Rotasi field melalui `UpdatePlatformConfig` di antaranya dan dua authority mendarat pada kunci berbeda: sisi withdraw menyimpan kunci yang dikonfigurasi saat pembuatan, karena PDA tidak lagi memegangnya dan migrasi melewati penyerahan itu, sementara sisi fee-config pergi ke kunci baru. Tidak ada panggilan yang gagal; pemisahan bersifat senyap. Rotasi antar peluncuran, atau rekonsiliasi kunci setelahnya melalui Token-2022 secara langsung dengan kunci lama menandatangani.

## Mengapa guard diperlukan, bukan hanya defensif

`SetAuthority` Token-2022 memerlukan authority *saat ini* untuk menandatangani. Di bawah aturan pembuatan baru, launch `authority` PDA bukan withdraw-withheld authority pada mint baru, jadi CPI tanpa syarat yang biasa dibuat program akan gagal — dan karena berada di dalam `MigrateToCpswap`, kegagalan itu akan memblokir kelulusan untuk setiap peluncuran Token-2022 dengan biaya transfer pada platform yang telah mengonfigurasi field. Dua perubahan hanya berfungsi sebagai pasangan.

## Apa yang tidak berubah

* **Matematika dan akuntansi biaya transfer.** `MAX_TRANSFER_FEE_RATE` masih `500` (5%, penyebut `10_000`), biaya masih dihargai ke dalam kurva dengan cara yang sama, dan saldo yang ditahan masih terakumulasi pada akun token yang Token-2022 letakkan.
* **Antarmuka `MigrateToCpswap`.** Daftar akun yang sama, indeks `remaining_accounts` yang sama, dua program token yang sama, tidak ada argumen.
* **Antarmuka `InitializeWithToken2022`.** Akun yang sama, `TransferFeeExtensionParams` yang sama, penolakan `NoSupportExtension` untuk apa pun di luar `MetadataPointer` dan `TransferFeeConfig`.
* **Penanganan Token-2022 sisi quote.** Tidak berubah dari [2026-08-24](/id/reference/changelog/2026-08-24-launchlab-token2022-quote-mint).
* **Kode error.** `6000`–`6023` tidak berubah; rilis ini tidak menambahkan yang baru.
* **Layout akun dan IDL.** Tidak berubah. `PlatformConfig.transfer_fee_extension_auth` menyimpan offset dan tipenya; hanya ketika program membacanya yang berubah.

## Halaman yang diperbarui

* `products/launchlab/platform-config` — bagian "Token-2022 transfer-fee authorities" baru mencakup kedua authority, kedua titik penyerahan, dan perangkap rotasi; komentar layout dan daftar pitfall diperbaiki.
* `products/launchlab/instructions` — `MigrateToCpswap` mendapatkan blok "Token-2022 transfer-fee authority handover"; postcondition `Initialize` mencatat authority pembuatan mint baru.
* `products/launchlab/accounts` — daftar peran authority-PDA dan bagian base-mint mencatat authority transfer-fee mana yang benar-benar dipegang PDA.
* `reference/token-2022-support` — entri base-mint LaunchLab menyatakan siapa yang memegang transfer-fee authorities dan kapan.
