跳轉到主要內容

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.

本頁內容由 AI 自動翻譯,所有內容以英文版本為準。查看英文版 →

什麼是聯合曲線

聯合曲線是一個決定性的價格函數 p(s),它將代幣的價格與目前在流通中的數量相關聯(s 代表「已售供應量」)。買家通過向合約發送抵押品來購買;合約以曲線規定的邊際價格發行新代幣單位。賣家歸還代幣單位並獲得整合退款。 與 CPMM 流動池的兩個主要差異:
  • 不需要交易對手。 發行合約是做市商;流動性存在於規則之中。
  • 單調價格。 每次淨買入時價格上升,每次淨賣出時價格下降。
當發行實體不想用抵押品預先播種 AMM 流動池時,聯合曲線是標準的啟動機制。

通用定價公式

對於任何連續價格函數 p(s) 現貨價格在供應量 s 處:
p(s) = 曲線公式
購買成本s_0s_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 是曲線的反導數。幾何上,costs_0s_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

離散實現

在鏈上,scost 都是整數(最小面額單位)。連續積分 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_graduateGraduate 指令將創建一個 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 = 40S_max = 1e9S_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) 相匹配
(單位:小數需要仔細跟蹤;該示例是說明性的。)

相關資源

資料來源:
  • Raydium LaunchLab 程式源碼(二次和虛擬儲備曲線實現)。
  • Bancor 白皮書(線性聯合曲線,歷史性)。
  • Pump.fun 公開事後分析(虛擬儲備變體)。