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

> 通過 LaunchLab 完整推出代幣：選擇曲線類型、初始配置、監控畢業前結合曲線活動，以及驗證已畢業的 CPMM 池。

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

  [查看英文版 →](/user-flows/launch-token-launchlab)
</Info>

<Info>
  LaunchLab 是 Raydium 的一級市場推出地點。專案將代幣供應存入結合曲線；買家使用 SOL（或其他報價代幣）與曲線交易；當達到畢業閾值時，曲線資產自動遷移至 CPMM 池，代幣變為自由交易。本頁將從專案方的角度引導你完成整個流程。
</Info>

## 你需要的東西

* **代幣鑄造地址** — 你想銷售的代幣。必須是新鑄造的，並具有：
  * 全部供應量鑄造到你的錢包（以便你可以存入曲線）。
  * 在推出前撤銷鑄造權限（否則曲線價格可能會被新鑄造的代幣操縱）。
* **中繼資料** — 名稱、符號、圖像、社交連結。Metaplex 中繼資料或類似。
* **錢包** — 約 1 SOL 用於創建租金 + 金庫資金 + 優先費用（畢業本身由畢業者支付，不是你）。
* **以下決定**：
  * 曲線類型（二次方 vs 虛擬儲備 CPMM）。
  * 畢業閾值。
  * LP 處置政策（燒毀 / 鎖定 / 轉給創建者）。
  * 初始價格和上限。

## 曲線選擇

LaunchLab 支持兩種曲線族群：

### 二次方（`curve_type = 0`）

價格隨銷售供應量呈二次方增長。經典「公平推出」的感覺 — 早期買家獲得價格優勢，後期買家支付更多，價格平滑加速。

```
price(s) = a * s^2 + b * s + c
```

其中 `s` 是銷售供應量。通常 `a > 0`（凸的）。初始價格和畢業價格之間的差異由 `a, b, c` 和上限確定性地給定。

最適合：新奇推出、模因、社區驅動的專案。

### 虛擬儲備 CPMM（`curve_type = 1`）

使用*虛擬*儲備模擬恆積 AMM — 曲線的行為就像使用 `x * y = k` 的 CPMM，但池從未提取的合成代幣開始初始化。

```
price = virtual_quote_reserve / virtual_base_reserve
```

隨著買家購買，`virtual_base_reserve` 減少，`virtual_quote_reserve` 增加 — 曲線看起來與畢業後的 CPMM 完全相同。更平滑的交接。

最適合：希望可預測的畢業後價格連續性的推出。

## UI 演練

在 [raydium.io/launchpad/create](https://raydium.io/launchpad/create)：

1. **代幣。** 貼上鑄造地址。UI 獲取中繼資料並顯示。

2. **曲線類型。** 選擇二次方或虛擬-CPMM；UI 為每一個顯示價格圖表預覽。

3. **畢業閾值。** 預設：曲線在所有 `total_base_supply` 銷售後結束。替代方案：在特定 `graduation_quote_amount` 處結束（例如 85 SOL）。

4. **報價代幣。** SOL（預設）、USDC 或任何其他代幣。SOL 是標準。

5. **LP 處置政策：**

   * **燒毀** — LP 代幣在畢業時發送到無法使用的地址。創建者無法提取流動性；使用者永遠信任池。
   * **鎖定** — LP 代幣發送到時間鎖定的托管，持續時間為 `lock_duration`。
   * **轉給創建者** — LP 代幣發送給創建者。最靈活，最不信任最小化。

   最受尊重的推出使用燒毀。

6. **檢查。** UI 總結：預期價格範圍、曲線銷售完全時的初始籌款、畢業 CPMM 配置。

7. **簽署。** 一筆交易創建推出狀態 + 基礎金庫 + 報價金庫，從你的錢包轉移 `total_base_supply` 到基礎金庫。

## 程式化演練

```ts theme={null}
import { Raydium, TxVersion } from "@raydium-io/raydium-sdk-v2";
import { PublicKey } from "@solana/web3.js";
import BN from "bn.js";

const raydium = await Raydium.load({ connection, owner, cluster: "mainnet" });

const baseMint  = new PublicKey("MyNewToken...");
const quoteMint = new PublicKey("So11111111111111111111111111111111111111112"); // SOL

const { execute, extInfo } = await raydium.launchpad.createLaunchpad({
  programId:      LAUNCHPAD_PROGRAM_ID,
  baseMint,
  quoteMint,
  curveType:      0,                           // quadratic
  totalBaseSupply:    new BN("1000000000000000000"),   // 1B tokens with 9 decimals
  graduationQuoteAmount: new BN("85000000000"),         // 85 SOL
  lpDisposalPolicy:   "Burn",
  priceCurveParams: {
    a: new BN("1"),
    b: new BN("0"),
    c: new BN("0"),
  },
  startTime: new BN(Math.floor(Date.now() / 1000) + 300),  // start in 5 min
  txVersion: TxVersion.V0,
  computeBudgetConfig: { units: 400_000, microLamports: 50_000 },
});

const { txId } = await execute({ sendAndConfirm: true });
console.log("Launch ID:", extInfo.launchId.toBase58());
console.log("Base vault:", extInfo.baseVault.toBase58());
console.log("Quote vault:", extInfo.quoteVault.toBase58());
```

## 畢業前監控

通過 API 追蹤活動：

```ts theme={null}
const status = await fetch(
  `https://api-v3.raydium.io/launchpad/status?launchId=${launchId}`
).then(r => r.json());

console.log("Sold so far:",       status.baseSold.toString());
console.log("Quote raised:",      status.quoteRaised.toString());
console.log("Current price:",     status.currentPriceUsd);
console.log("Graduation progress:", status.graduationProgress, "%");
```

或直接解碼鏈上狀態：

```ts theme={null}
const launchState = await raydium.launchpad.fetchLaunchState(launchId);
console.log({
  baseSold:   launchState.baseSold.toString(),
  quoteHeld:  launchState.quoteHeld.toString(),
  graduated:  launchState.graduated,
});
```

### 要監控的指標

* **銷售率**：基礎代幣銷售百分比。畢業閾值通常在售出 80–100% 時。
* **當前價格**：從當前 `baseSold` 的曲線衍生。
* **獨特買家**：通過索引器不同付款人的計數。
* **買賣比例**：早期推出看到大量買入壓力會減緩。

如果 24 小時後的銷售率 `<10%`，請考慮行銷是否充分。LaunchLab 不會拯救宣傳不足的推出。

## 畢業

畢業是一筆獨立交易，可由任何人呼叫（通常首先注意到閾值已達到的人賺取小額的 `graduation_bounty`）。作為創建者，除了初始設置外，無需採取任何行動。

### 畢業做什麼

1. 讀取金庫餘額。
2. 關閉曲線（不再允許對其買賣）。
3. 使用金庫餘額作為初始流動性創建新的 CPMM 池。
4. 根據金庫餘額鑄造初始 LP 代幣。
5. 根據配置的政策處置 LP 代幣（燒毀 / 鎖定 / 轉給創建者）。

畢業後，CPMM 池上線並通過正常 Raydium 路由進行交易。

### 監控畢業

```ts theme={null}
const launchState = await raydium.launchpad.fetchLaunchState(launchId);
if (launchState.graduated) {
  const cpmmPoolId = launchState.graduatedCpmmPool;
  console.log("Graduated to CPMM pool:", cpmmPoolId.toBase58());
}
```

### 手動畢業

如果沒有人領取賞金，你想強制畢業，可以自己呼叫：

```ts theme={null}
await raydium.launchpad.graduate({
  launchId,
  txVersion: TxVersion.V0,
  computeBudgetConfig: { units: 600_000, microLamports: 100_000 },
});
```

畢業使用大量 CU；預算 600k。

## 畢業後

### 驗證 CPMM 池

```ts theme={null}
const pool = await raydium.cpmm.getPoolInfoFromRpc({ poolId: cpmmPoolId });
console.log("CPMM price:", pool.poolInfo.price);
console.log("CPMM TVL:  ", pool.poolInfo.tvl);
```

CPMM 池應該有（大約）：

* 基礎代幣餘額：`total_base_supply - baseSold` + 曲線餘數。
* 報價代幣餘額：`quoteRaised - graduationFee`。
* 價格：與最後的曲線價格匹配。

### 驗證 LP 處置

* **燒毀**：LP 鑄造地址的供應量顯示發送到 1nc1nerator11111111111111111111111111111111 或類似。
* **鎖定**：LP 代幣在托管 PDA 中，帶有解鎖時間戳。
* **轉給創建者**：LP 代幣在創建者的錢包中。

### 收集創建者費用

如果你配置了創建者費用份額，請定期呼叫：

```ts theme={null}
await raydium.launchpad.collectCreatorFees({
  launchId,
  txVersion: TxVersion.V0,
});
```

費用從畢業前的曲線交易以及畢業後的已畢業 CPMM 池中累積（如果 `ToCreator` LP）。

## 公告檢查清單

畢業後的公告應包括：

* [ ] 畢業交易雜湊。
* [ ] 新 CPMM 池 ID。
* [ ] LP 處置證明（燒毀交易 / 鎖定交易 / 創建者錢包）。
* [ ] 聚合器覆蓋 ETA（錢包通常在 5 分鐘內索引）。
* [ ] 代幣合約驗證（在公告頻道匹配鑄造地址）。

## 陷阱

### 1. 鑄造權限未撤銷

如果 `baseMint.mintAuthority` 仍然是你控制的金鑰，你可以鑄造新供應並將其賣入自己的曲線。未撤銷鑄造權的推出通常被聚合器和列表網站標記為高風險或未驗證。在推出前撤銷。

### 2. 錯誤的曲線參數

`a` 過高的二次方曲線使早期代幣免費（價格 ≈ 0），後期代幣荒謬。`a` 過低的曲線使曲線幾乎是線性的（失去「結合」感覺）。先在 devnet 上測試參數。

### 3. 畢業閾值過高

如果畢業需要的資本超過實際需求，曲線永不畢業，買家被困於只能賣回曲線的代幣（以更差的價格）。選擇一個你實際上能達到的閾值。

### 4. 報價代幣詐騙

如果你的報價代幣是自定義代幣（不是 SOL/USDC），使用者不會相信它。堅持使用 SOL 或 USDC 作為報價。

### 5. 忘記資金基礎金庫

SDK 在創建時從你的錢包轉移 `totalBaseSupply`。如果你的錢包沒有它，交易會還原。簽署前確認餘額。

### 6. LP 處置 = 燒毀是不可逆的

一旦 LP 被發送到 1nc1nerator，任何人（包括你）都無法提取流動性。這就是要點 — 信任最小化。如果你不確定，不要選擇燒毀。

### 7. 畢業後 CPMM 費用等級

已畢業的池使用 LaunchLab 的預設 CPMM 配置（0.25%）。如果你想要 1% 或 0.01%，你需要在畢業後自己創建第二個 CPMM 池並遷移流動性 — 笨拙且分散。接受預設，或直接通過 CPMM 創建而不是 LaunchLab 推出。

## 指針

* [`products/launchlab/overview`](/zh-Hant/products/launchlab/overview) — LaunchLab 概念和生命週期。
* [`products/launchlab/bonding-curve`](/zh-Hant/products/launchlab/bonding-curve) — 曲線數學詳細説明。
* [`products/launchlab/instructions`](/zh-Hant/products/launchlab/instructions) — 完整指令參考。
* [`products/launchlab/vesting`](/zh-Hant/products/launchlab/vesting) — 歸屬計畫機制。
* [`algorithms/bonding-curves`](/zh-Hant/algorithms/bonding-curves) — 通用結合曲線數學。
* [`user-flows/creating-a-launchlab-token`](/zh-Hant/user-flows/creating-a-launchlab-token) — 代幣創建者的 UI 演練（JustSendit 和 LaunchLab 模式）。
* [`user-flows/how-creator-fees-work`](/zh-Hant/user-flows/how-creator-fees-work) — 遷移前後創建者費用概述。

來源：

* Raydium SDK v2 `launchpad` 模組。
* 通過 `api-v3.raydium.io` 端點推出狀態。
