Skip to main content
本页内容由 AI 自动翻译,所有内容以英文版本为准。查看英文版 →
LaunchLab 支持三种曲线形状,在 Initialize 时选择:constant-product(最常见,标准 x · y = k 曲线的虚拟储备形式)、linear-pricefixed-price。毕业阈值公式在所有三种形式中共享。本页详细讲解 constant-product 数学;linear 和 fixed 形式在末尾总结。

存储在 LaunchState 上的参数

Rust 结构体中的字段名与 accounts 中描述的 PoolState 字段匹配;上面的单位是概念性的。

带虚拟储备的 constant-product 曲线(curve_type = 0

默认且最常用的曲线。Pump 风格的启动都使用这种形式。该曲线假设从一开始就存在一个虚拟报价储备 V_q 和一个虚拟基础储备 V_b(存储在 PoolState 上的 virtual_quotevirtual_base),因此有效池看起来像一个具有这些储备的 CPMM。购买遵循 x · y = k 数学:
求解 base_out
在基础售出 s 处的有效价格:
LaunchLab 在毕业前应用的相同 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_targetInitialize 时计算为将 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):
达到毕业所需的报价(集成成本):
因此约 6.827 个报价原生单位(在配置的任何 6 位小数报价铸币中,例如,如果报价是 USDC,则约 6,827 USDC)。 应用的费用
首次购买 10 USDC:
  • 虚拟状态:s = 0quote_vault = 0
  • 减去费用:quote_after_fee = 10 × 0.99 = 9.9
  • 求解 (40 / (3e18)) × s³ = 9.9s ≈ 6.22e6 基础代币购买。
  • 1% 费用(0.1 USDC)分配:lp 0.06、creator 0.02、protocol 0.02。lp 份额留在 quote_vault;其他两个路由到各自的应计计数器。
在售出 75% 时购买(接近毕业): 相同的 10 USDC 现在购买的基础要少得多,因为曲线很陡。在 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 的观察者看不到跳跃。

接下来去哪里

来源: