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

# LaunchLab 帳戶

> PoolState（每次發行的根帳戶）、基礎和報價金庫、授權 PDA，以及每次發行帳戶的小型圖表。協議級別的 GlobalConfig 和平台級別的 PlatformConfig 有各自的頁面。

<Info>
  **本頁內容由 AI 自動翻譯，所有內容以英文版本為準。**

  [查看英文版 →](/products/launchlab/accounts)
</Info>

<Info>
  本頁記錄**每次發行**的帳戶圖：`PoolState`（一次發行的根狀態帳戶）、其兩個金庫、授權 PDA，以及發行結算時獲得的畢業後參考。

  如需約束所有發行的協議級別設定，請參閱 [`products/launchlab/global-config`](/zh-Hant/products/launchlab/global-config)。如需每平台疊加層，請參閱 [`products/launchlab/platform-config`](/zh-Hant/products/launchlab/platform-config)。如需歸屬帳戶（`PoolState` 上的 `VestingSchedule`、每位受益人的 `VestingRecord`），請參閱 [`products/launchlab/vesting`](/zh-Hant/products/launchlab/vesting)。
</Info>

## 帳戶清單

| 帳戶                                                              | 擁有者                    | 用途                                                          |
| --------------------------------------------------------------- | ---------------------- | ----------------------------------------------------------- |
| [`GlobalConfig`](/zh-Hant/products/launchlab/global-config)     | LaunchLab 程序           | 協議級別規則：費用、供應下限、遷移錢包。每個 `(curve_type, index)` 一個。            |
| [`PlatformConfig`](/zh-Hant/products/launchlab/platform-config) | LaunchLab 程序           | 每平台疊加層：品牌推廣、平台費用、畢業時的 NFT 分配、曲線形狀白名單。                       |
| `PoolState`                                                     | LaunchLab 程序           | 每次發行的根狀態：幣種、金庫、曲線參數、售出計數器、費用計數器、歸屬時間表、畢業狀態。                 |
| `authority`                                                     | LaunchLab 程序           | 單個 PDA，種子為 `[b"vault_auth_seed"]`，擁有所有發行的金庫並簽署畢業後的 CPI。     |
| `base_vault`                                                    | SPL Token / Token-2022 | 每次發行的金庫，持有未售出的基礎代幣。                                         |
| `quote_vault`                                                   | SPL Token              | 每次發行的金庫，持有累積的報價代幣。                                          |
| [`VestingRecord`](/zh-Hant/products/launchlab/vesting)          | LaunchLab 程序           | 每位受益人的懸崖 + 線性解鎖記錄。可選。                                       |
| `creator_fee_vault`                                             | SPL Token              | 每個創建者 + 每個報價幣種的金庫，持有應計創建者費用，由 `ClaimCreatorFee` 清空。         |
| `platform_fee_vault`                                            | SPL Token              | 每個平台 + 每個報價幣種的金庫，持有應計平台費用，由 `ClaimPlatformFeeFromVault` 清空。 |
| （畢業後）`cpmm_pool_state` *或* `amm_pool_state`                     | CPMM / AMM v4 程序       | 由 `MigrateToCpswap` / `MigrateToAmm` 創建的池。                  |
| （畢業後）費用關鍵 NFT                                                   | LP-Lock 程序             | 包裝創建者在 CPMM 畢業時的 LP 份額；持有人有權對 CPMM 池進行 `ClaimCreatorFee`。   |

SDK 的 `raydium.launchpad.getLaunchById` 返回 `PoolState` 加上指示發行是否已畢業的標誌；如果已畢業，則包括畢業後遷移的池 ID。

## `PoolState`

每次發行的根狀態。下面的欄位名稱與鏈上 Rust 結構相符（`states/pool.rs`）；為便於閱讀，某些值已簡化——請查閱源代碼以獲得確切的內存布局。

```rust theme={null}
// states/pool.rs (abridged)
pub struct PoolState {
    pub epoch:                     u64,        // recent_epoch tracker
    pub auth_bump:                 u8,
    pub status:                    u8,         // PoolStatus enum
    pub base_decimals:             u8,
    pub quote_decimals:            u8,
    pub migrate_type:              u8,         // 0 = AMM v4, 1 = CPMM
    pub supply:                    u64,        // total base tokens (no decimals)
    pub total_base_sell:           u64,        // base supply allocated to the curve
    pub virtual_base:              u64,        // virtual-reserve seed
    pub virtual_quote:             u64,        // virtual-reserve seed
    pub real_base:                 u64,        // base sold so far
    pub real_quote:                u64,        // quote raised so far (excl. fees)
    pub total_quote_fund_raising:  u64,        // graduation threshold in quote

    pub quote_protocol_fee:        u64,        // accrued, pending CollectFee
    pub platform_fee:              u64,        // accrued, pending ClaimPlatformFee
    pub migrate_fee:               u64,        // accrued, pending CollectMigrateFee
    pub vesting_schedule:          VestingSchedule,

    pub global_config:             Pubkey,
    pub platform_config:           Pubkey,
    pub creator:                   Pubkey,
    pub base_mint:                 Pubkey,
    pub quote_mint:                Pubkey,
    pub base_vault:                Pubkey,
    pub quote_vault:               Pubkey,

    pub amm_creator_fee_on:        u8,         // 0 = QuoteToken, 1 = BothToken (CPMM-only)
    pub token_program_flag:        u8,         // bit flags for SPL Token vs Token-2022
    pub padding:                   [u8; 54],
}

#[derive(Default, Debug, Clone)]
pub struct VestingSchedule {
    pub total_locked_amount:    u64,
    pub cliff_period:           u64,
    pub unlock_period:          u64,
    pub start_time:             u64,           // set at graduation
    pub allocated_share_amount: u64,           // running sum across VestingRecords
}
```

`PoolStatus` 值（來自 Anchor IDL）：

```
0 = Funding         — accepting buys / sells; below quote_reserve_target
1 = Migrate         — quote_reserve_target reached; awaiting MigrateTo*
2 = Migrated        — MigrateTo* already executed; vesting clock running
```

整合商相關欄位：

* **`status`** — 三個值，單調遞增（Funding → Migrate → Migrated）。讀取總是安全的；寫入受限。
* **`real_base`**、**`real_quote`** — 當前曲線狀態。結合 `virtual_base` / `virtual_quote`，足以在不觸及金庫的情況下計算現貨價格。參閱 [`bonding-curve`](/zh-Hant/products/launchlab/bonding-curve)。
* **`total_base_sell`** vs `real_base` — 用於 UI 的「畢業進度」比率。
* **`migrate_type`** — 選擇 `MigrateToAmm` 或 `MigrateToCpswap` 是否為有效的畢業路徑。Token-2022 發行必須使用 CPMM。
* **`amm_creator_fee_on`** — 僅在畢業到 CPMM 時有意義。在畢業後的 CPMM 池上選擇 `creator_fee_on = OnlyQuoteToken`（`0`）或 `BothToken`（`1`）。*儘管名稱如此，此枚舉實際上也驅動遷移目標——在當前運營實踐中，`BothToken` 與 `MigrateToAmm` 配對；`QuoteToken` 與 `MigrateToCpswap` 配對。* 參閱 [`creator-fees`](/zh-Hant/products/launchlab/creator-fees)。
* **`quote_protocol_fee` / `platform_fee` / `migrate_fee`** — 三個獨立的費用計數器。每個都有自己的索賠指令；參閱 [`instructions`](/zh-Hant/products/launchlab/instructions)。
* **`vesting_schedule`** — 出現在每個 `PoolState` 上，但當 `total_locked_amount == 0` 時無效。參閱 [`vesting`](/zh-Hant/products/launchlab/vesting) 以了解完整的生命週期。

## 授權 PDA

LaunchLab 在所有發行中使用**單個**授權 PDA，無特定於發行的種子：

```ts theme={null}
const LAUNCHLAB_PROGRAM_ID = new PublicKey("<LAUNCHLAB_ID>"); // see reference/program-addresses

const [authority, bump] = PublicKey.findProgramAddressSync(
  [Buffer.from("vault_auth_seed")],
  LAUNCHLAB_PROGRAM_ID,
);
```

該單個 PDA 是：

* 每次發行的 `base_vault` 和 `quote_vault` 的授權。
* 每次發行的 `base_mint` 的 `mint_authority`（畢業前）。
* 畢業後 CPI 到 AMM v4 / CPMM 的簽名者（`MigrateTo*`）。
* `ClaimVestedToken` 從基礎金庫轉帳的簽名者。

`mint_authority` 在執行 `MigrateToAmm` / `MigrateToCpswap` 後立即被撤銷，使供應量永久固定。

兩個額外的 PDA 限制費用金庫：

```ts theme={null}
const [creatorFeeVaultAuthority] = PublicKey.findProgramAddressSync(
  [Buffer.from("creator_fee_vault_auth_seed")],
  LAUNCHLAB_PROGRAM_ID,
);

const [platformFeeVaultAuthority] = PublicKey.findProgramAddressSync(
  [Buffer.from("platform_fee_vault_auth_seed")],
  LAUNCHLAB_PROGRAM_ID,
);
```

這些在 `ClaimCreatorFee` 和 `ClaimPlatformFeeFromVault` 期間簽署相應費用金庫的轉帳。

## 基礎幣種

由 `Initialize` 內聯創建，具有：

* `mint_authority = authority`（在畢業時撤銷）。
* `freeze_authority = None`。
* `supply = supply`，完全鑄造到 `base_vault` 中。
* `decimals` 由創建者在 `Initialize` 時選擇（通常為 6）。

因為完整供應量是預先鑄造的，`base_mint.supply` 在發行的整個生命週期內保持不變。曲線購買將代幣從 `base_vault` 移動到購買者，但不調用 `mint_to`。

`Initialize` / `InitializeV2` 創建 SPL Token 發行。專用的 `InitializeWithToken2022` 指令允許基礎幣種為 Token-2022 幣種（具有可選的 `TransferFeeConfig`）；報價幣種仍然是 SPL Token。Token-2022 發行必須畢業到 CPMM 池，因為 AMM v4 僅支持 SPL Token 金庫。

## 金庫

`base_vault` 和 `quote_vault` 都是由 LaunchLab `authority` PDA 擁有的標準 SPL Token 帳戶。地址存儲在 `PoolState` 上，也可以派生：

```ts theme={null}
const [baseVault] = PublicKey.findProgramAddressSync(
  [Buffer.from("pool_vault"), poolState.toBuffer(), baseMint.toBuffer()],
  LAUNCHLAB_PROGRAM_ID,
);
const [quoteVault] = PublicKey.findProgramAddressSync(
  [Buffer.from("pool_vault"), poolState.toBuffer(), quoteMint.toBuffer()],
  LAUNCHLAB_PROGRAM_ID,
);
```

（在生產中依賴派生之前，請驗證源代碼的 `Initialize` 帳戶結構中的確切種子前綴。）

## 費用金庫

兩個 PDA 跨發行聚合費用：

* **創建者費用金庫** — PDA，種子為 `[creator, quote_mint]`。每個在同一報價幣種上賺取相同創建者費用的發行都注入到同一金庫中。創建者通過 `ClaimCreatorFee` 清空它。
* **平台費用金庫** — PDA，種子為 `[platform_config, quote_mint]`。通過同一平台路由且使用相同報價幣種的每個發行都注入到同一金庫中。平台的 `platform_fee_wallet` 通過 `ClaimPlatformFeeFromVault` 清空它。還有一個每次發行的清空變體（`ClaimPlatformFee`），它直接從發行的 `quote_vault` 中提取，無需通過聚合金庫。

聚合金庫模式允許高容量的創建者或平台在許多發行中攤銷費用累積的租金成本。

## 報價金庫 ↔ `real_quote`

`quote_vault.balance` 和 `PoolState.real_quote` 應保持同步。它們的偏差最多為三個待處理費用計數器的總和（`quote_protocol_fee`、`platform_fee`、`migrate_fee`），這些計數器位於金庫中，但屬於費用計數器而不是曲線儲備。曲線數學始終使用 `real_quote`，從不使用原始金庫餘額。

畢業前不變式：

```
quote_vault.balance ==
   real_quote
 + quote_protocol_fee
 + platform_fee
 + migrate_fee
```

## 生命週期帳戶轉換

| 事件                                      | 狀態                           | `real_base` | `real_quote`            | 畢業後池                                         |
| --------------------------------------- | ---------------------------- | ----------- | ----------------------- | -------------------------------------------- |
| `Initialize`                            | Funding                      | 0           | 0                       | —                                            |
| `BuyExactIn` / `BuyExactOut`            | Funding                      | `+base_out` | `+quote_in_after_fee`   | —                                            |
| `SellExactIn` / `SellExactOut`          | Funding                      | `−base_in`  | `−quote_out_before_fee` | —                                            |
| `MigrateToAmm` / `MigrateToCpswap`      | Funding → Migrate → Migrated | （凍結）        | （凍結）                    | 已創建，LP 按 `PlatformConfig` 分配                 |
| `ClaimCreatorFee` / `ClaimPlatformFee*` | 任意                           | —           | —                       | 清空費用金庫                                       |
| `CreateVestingAccount`                  | Funding                      | —           | —                       | 增加 `vesting_schedule.allocated_share_amount` |
| `ClaimVestedToken`                      | Migrated only                | —           | —                       | 清空 `base_vault`                              |

## 後續步驟

* [`products/launchlab/bonding-curve`](/zh-Hant/products/launchlab/bonding-curve) — `real_base` ↔ `real_quote` 背後的數學。
* [`products/launchlab/instructions`](/zh-Hant/products/launchlab/instructions) — 每條指令的帳戶列表。
* [`products/launchlab/global-config`](/zh-Hant/products/launchlab/global-config) — 協議級別綁定。
* [`products/launchlab/platform-config`](/zh-Hant/products/launchlab/platform-config) — 平台疊加層。
* [`products/launchlab/vesting`](/zh-Hant/products/launchlab/vesting) — 鎖定供應機制。
* [`products/cpmm/accounts`](/zh-Hant/products/cpmm/accounts) — 畢業後的 `cpmm_pool_state` 的樣子。

來源：

* `raydium-launch/programs/launchpad/src/states/pool.rs` — `PoolState`、`PoolStatus`、`VestingSchedule`、`AmmCreatorFeeOn`。
* `raydium-launch/programs/launchpad/src/lib.rs` — PDA 種子常數（`AUTH_SEED`、`CREATOR_FEE_VAULT_AUTH_SEED`、`PLATFORM_FEE_VAULT_AUTH_SEED`）。
* [Raydium SDK v2 `launchpad` 模組](https://github.com/raydium-io/raydium-sdk-V2)。
