本页内容由 AI 自动翻译,所有内容以英文版本为准。查看英文版 →
LaunchLab 支持三种曲线形状,在
Initialize 时选择:constant-product(最常见,标准 x · y = k 曲线的虚拟储备形式)、linear-price 和 fixed-price。毕业阈值公式在所有三种形式中共享。本页详细讲解 constant-product 数学;linear 和 fixed 形式在末尾总结。存储在 LaunchState 上的参数
Rust 结构体中的字段名与
accounts 中描述的 PoolState 字段匹配;上面的单位是概念性的。
带虚拟储备的 constant-product 曲线(curve_type = 0)
默认且最常用的曲线。Pump 风格的启动都使用这种形式。该曲线假设从一开始就存在一个虚拟报价储备 V_q 和一个虚拟基础储备 V_b(存储在 PoolState 上的 virtual_quote 和 virtual_base),因此有效池看起来像一个具有这些储备的 CPMM。购买遵循 x · y = k 数学:
base_out:
s 处的有效价格:
x · y = k 不变量随后成为毕业后的 CPMM 曲线,因此交接在机制上是无缝的:在 base_sold = base_supply_graduation 处的边际价格等于毕业后池以 (quote_vault, base_vault_remaining) 作为其储备开放时的价格。
Fixed-price 曲线(curve_type = 1)
平价曲线。每次买卖都以恒定价格进行,在 Initialize 时可配置:
base_supply_graduation 已售出时毕业触发(线性成本关系使 quote_reserve_target 易于推导)。
Linear-price 曲线(curve_type = 2)
价格随 base_sold 线性增加:
base_sold 是二次的——早期购买者支付接近零,后期购买者支付大得多,边际价格始终以固定斜率上升。链上实现位于 curve/linear_price.rs。
曲线形状比较
毕业阈值
quote_reserve_target 在 Initialize 时计算为将 base_sold 从 0 驱动到 base_supply_graduation 所需的报价:
quote_vault.balance ≥ quote_reserve_target,启动就会毕业。由于购买以离散大小进行,毕业时的实际余额可能略微超过目标——盈余成为生成的 CPMM 池中额外的报价端流动性。
工作示例——二次启动
参数:base_supply_max = 1_000_000_000(10 亿基础代币,6 位小数)base_supply_graduation = 800_000_000(售出 80% 触发毕业)k = 40(价格标度)- 费用:1% 买入,1% 卖出,分配
lp:creator:protocol = 60:20:20。
s = 0):0(纯二次从零开始)。
售出 50% 时的价格(s = 500_000_000):
s = 800_000_000):
- 虚拟状态:
s = 0,quote_vault = 0。 - 减去费用:
quote_after_fee = 10 × 0.99 = 9.9。 - 求解
(40 / (3e18)) × s³ = 9.9⇒s ≈ 6.22e6基础代币购买。 - 1% 费用(
0.1 USDC)分配:lp0.06、creator0.02、protocol0.02。lp 份额留在quote_vault;其他两个路由到各自的应计计数器。
s₀ = 750e6 处使用 quote_in_after_fee = 9.9 的牛顿求解给出大约 ∆s ≈ 0.4e6——与首次购买相比,每 USDC 基础减少约 15 倍。
曲线阶段期间的费用机制
在每次Buy 上:
lp_share留在quote_vault。这是使有效曲线更紧(相同基础供应中更多报价储备)的原因。protocol_share增加LaunchState.state_data.protocol_fees_quote。creator_share增加LaunchState.state_data.creator_fees_quote。
Sell 上,相同的分配适用,但费用从出站 quote_out 中扣除。
两个计数器都通过 CollectFees 扫除(管理员或创建者,各自到自己的计数器)。
精度
- 基础端金额:
u64。 - 报价端金额:
u64。 - 中间立方体 / 乘积:
u128。 - “买入精确报价”和”卖出精确报价”的牛顿求解在
u128定点中迭代,最大迭代次数可配置(默认 10)。失败模式是NotConverged——在毕业边缘情况之外很少见。
交接到 CPMM
当Graduate 触发时:
cpmm_initial_price 在机制上是 price(base_sold)(它是交接时刻的边际曲线价格)。CPMM 池以完全相同的价格开放,因此从曲线 UI 切换到 CPMM UI 的观察者看不到跳跃。
接下来去哪里
products/launchlab/accounts——存储这些参数的LaunchState字段。products/launchlab/instructions——Buy、Sell、Graduate账户列表。algorithms/constant-product——毕业后池使用的 CPMM 数学。
- Raydium SDK v2
LaunchLab模块 - Raydium LaunchLab 程序源代码

