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

# 聯合曲線

> 代幣發行曲線背後的數學——二次、線性和虛擬儲備 CPMM 變體——成本/收益/現貨價格的推導，以及 LaunchLab 使用的畢業門檻數學。

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

  [查看英文版 →](/algorithms/bonding-curves)
</Info>

## 什麼是聯合曲線

**聯合曲線**是一個決定性的價格函數 `p(s)`，它將代幣的價格與目前在流通中的數量相關聯（`s` 代表「已售供應量」）。買家通過向合約發送抵押品來購買；合約以曲線規定的邊際價格發行新代幣單位。賣家歸還代幣單位並獲得整合退款。

與 CPMM 流動池的兩個主要差異：

* **不需要交易對手。** 發行合約是做市商；流動性存在於規則之中。
* **單調價格。** 每次淨買入時價格上升，每次淨賣出時價格下降。

當發行實體不想用抵押品預先播種 AMM 流動池時，聯合曲線是標準的啟動機制。

## 通用定價公式

對於任何連續價格函數 `p(s)`：

**現貨價格**在供應量 `s` 處：

```
p(s) = 曲線公式
```

**購買成本**從 `s_0` 到 `s_1` 的供應量（其中 `s_1 > s_0`）：

```
cost(s_0, s_1) = ∫_{s_0}^{s_1} p(s) ds = P(s_1) − P(s_0)
```

其中 `P(s) = ∫ p(s) ds` 是曲線的反導數。幾何上，`cost` 是 `s_0` 和 `s_1` 之間 `p` 下方的面積。

**出售供應量從 `s_1` 回到 `s_0` 的收益**：

```
proceeds(s_1, s_0) = cost(s_0, s_1)
```

（對稱性：在同一區間內買入和賣出交換相同的抵押品——不計費用。）

**購買的平均價格**：

```
avg = cost(s_0, s_1) / (s_1 − s_0)
```

## 常見曲線類別

### 線性

```
p(s) = a + b · s
```

```
P(s)            = a·s + (b/2)·s²
cost(s_0, s_1)  = a·(s_1 − s_0) + (b/2)·(s_1² − s_0²)
```

價格隨供應量線性上升。用於「穩定」啟動，其中發行者希望在整個生命週期內有可預測的、適度的加價。

### 二次

```
p(s) = k · s²                      // 或標準化形式  k · (s / S_max)²
```

```
P(s)            = (k / 3) · s³
cost(s_0, s_1)  = (k / 3) · (s_1³ − s_0³)
```

價格二次方上升。早期買家獲得接近零的價格（平坦的起始區域）；後期買家支付更陡峭的溢價。這是 LaunchLab 預設的曲線類型（`curve_type = 0`）。

### 虛擬儲備 CPMM（Pump 風格）

曲線是一個標準 CPMM，具有假設的初始報價儲備 `V_q`：

```
effective_y = V_q + collateral_received
effective_x = S_max − s
(effective_x) · (effective_y) = V_q · S_max      // 不變量
```

現貨價格：

```
p(s) = effective_y / effective_x
     = V_q · S_max / (S_max − s)² · ... （可通過隱函數微分推導）
```

從 `s_0` 移動到 `s_1` 的成本：

```
cost(s_0, s_1) = V_q · S_max / (S_max − s_1) − V_q · S_max / (S_max − s_0)
              = V_q · (s_1 − s_0) · S_max / ((S_max − s_0) · (S_max − s_1))
```

此變體具有優雅的特性，即在畢業時（其中 `s = S_graduate`），邊際價格等於用儲備 `(S_max − S_graduate, V_q + cost(0, S_graduate))` 播種的下游 CPMM 流動池的開盤價格。交接無縫。LaunchLab 將其公開為 `curve_type = 1`。

## 離散實現

在鏈上，`s` 和 `cost` 都是整數（最小面額單位）。連續積分 `cost(s_0, s_1)` 在存在閉合形式時直接從閉合形式計算（線性、二次）。對於沒有閉合形式反函數的曲線（二次，給定 `cost`，找 `s_1`），使用牛頓迭代：

```
# 求解二次方程：(k/3)·s_1³ = (k/3)·s_0³ + cost
# 初始化 s_guess ≈ cbrt(3·cost/k + s_0³)
for i in 0..MAX_ITER:
    f    = (k/3)·s_guess³ − (k/3)·s_0³ − cost
    f'   = k·s_guess²
    step = f / f'
    s_guess -= step
    if |step| < precision_floor: break
```

LaunchLab 將迭代次數上限設為 \~10，如果殘差仍高於容差，將以 `NotConverged` 還原。在實踐中，這僅在域的邊界附近觸發；生產交換在 2–3 次迭代中收斂。

## 費用整合

費用應用於曲線成本之上，而不是在其內部。購買時：

```
cost_curve  = cost(base_sold, base_sold + base_out)
fee         = ceil(cost_curve · buy_numerator / buy_denominator)
quote_in    = cost_curve + fee
```

出售時：

```
proceeds_curve = cost(base_sold − base_in, base_sold)
fee            = ceil(proceeds_curve · sell_numerator / sell_denominator)
quote_out      = proceeds_curve − fee
```

費用的 LP 部分保留在 `quote_vault` 中，實際上使曲線對後來的買家變得更陡峭——儲備在沒有發行更多供應量的情況下增長。協議和創作者部分在單獨的計數器中跟蹤以備後續清掃。

## 畢業門檻

當曲線接收到足夠的抵押品來以與目前曲線價格相匹配的價格播種外部 AMM 流動池時，它「畢業」。對於參數為 `(k, S_max, S_graduate)` 的二次曲線：

```
quote_to_graduate = cost(0, S_graduate) · (1 + buy_fee_rate)
                  = (k / 3) · S_graduate³ · (1 + f_buy)
```

一旦 `quote_vault ≥ quote_to_graduate`，`Graduate` 指令將創建一個 CPMM 流動池，其中：

```
cpmm_base_reserve  = S_max − S_graduate        // 未售的曲線供應量
cpmm_quote_reserve = quote_vault − accrued_fee_counters
cpmm_initial_price = cpmm_quote_reserve / cpmm_base_reserve
```

對於虛擬儲備曲線，根據構造：

```
cpmm_initial_price == p(S_graduate)           // 精確相等
```

對於二次曲線，等式是近似的；「誤差」被吸收到 `S_graduate` 的舍入中（通常 `0.8 · S_max`）以及穿過最終門檻的買入的盈餘抵押品中。

## 與 CPMM 流動池相比的無常損失

純聯合曲線啟動在 Uniswap 意義上**沒有無常損失**：市場上沒有「另一方」可以與之重新平衡。曲線按需發行供應量，唯一的「LP」是合約本身。

畢業後，結果 CPMM 流動池的行為與任何其他 CPMM 流動池一樣——如果 LP 未被燒毀，它們將受到常見的無常損失動態影響。這就是為什麼在公開啟動後**燒毀** LP 政策佔主導地位：它保持流動池永久性並消除任何 LP 提款驅動的價格衝擊。

## 實例演練

曲線：二次，`k = 40`，`S_max = 1e9`，`S_graduate = 0.8 · S_max = 8e8`。買入費用 1%。

### `s = 5e8` 時的價格

```
p(5e8) = 40 · (5e8 / 1e9)² = 40 · 0.25 = 10
```

每個基礎單位 10 個報價單位。

### 第一次購買 1e6 個基礎的成本

```
cost(0, 1e6) = (40/3) · (1e6)³
             = (40/3) · 1e18
             ≈ 1.333e19     （最小報價單位）
```

含 1% 費用：

```
quote_in = 1.333e19 · 1.01 ≈ 1.347e19
```

### 畢業門檻

```
cost(0, 8e8) = (40/3) · (8e8)³
             = (40/3) · 5.12e26
             ≈ 6.827e27
quote_to_graduate ≈ 6.827e27 · 1.01 ≈ 6.895e27
```

### 畢業時的價格

```
p(8e8) = 40 · 0.64 = 25.6
```

### 畢業後的 CPMM 儲備

```
cpmm_base  = 1e9 − 8e8 = 2e8
cpmm_quote ≈ 6.827e27  （減去費用計數器扣除）
cpmm_price ≈ 3.41e19 每個基礎——在考慮單位後與 p(8e8) 相匹配
```

（單位：小數需要仔細跟蹤；該示例是說明性的。）

## 相關資源

* [`products/launchlab/bonding-curve`](/zh-Hant/products/launchlab/bonding-curve) — 這些公式的鏈上 LaunchLab 實現。
* [`products/launchlab/instructions`](/zh-Hant/products/launchlab/instructions) — `Buy`、`Sell`、`Graduate` 帳戶級規格。
* [`algorithms/constant-product`](/zh-Hant/algorithms/constant-product) — 畢業後的 CPMM 對儲備所做的工作。

資料來源：

* Raydium LaunchLab 程式源碼（二次和虛擬儲備曲線實現）。
* Bancor 白皮書（線性聯合曲線，歷史性）。
* Pump.fun 公開事後分析（虛擬儲備變體）。
