Bonding Curves

下面我用比较数学 PhD/形式机制设计+经济数学的程度,把 bonding curves 的机制、形式化模型、性质、问题,以及一个近年在研究里提出的 “configuration spaces + conservation functions” 框架解释清楚,并给出主要参考文献链接。若你要,我可以再写出更严谨的定理+证明草稿。


一、Bonding Curve 的严格形式化模型

Bonding Curve 最基本的是一个连续(或至少在正实数上定义)函数,用于把 代币供给量 SS 与 当前代币单位价格 PP 联系起来;同时还有一个 储备(reserve)资产 或资产池 RR,作为买入/卖出代币时的资金流动平台。

符号设定

  • 令 S∈R>0S \in \mathbb{R}_{>0}:现存的、流通中的代币总量(供给)。

  • 令 R∈R≥0R \in \mathbb{R}_{\ge 0}:储备资产余额(例如以 ETH 或某 stablecoin)在智能合约中被锁定。

  • 令 P(S)P(S):在供应为 SS 时,购买或售出边际代币的单位价格(边际价格或 “spot price”)。

  • 还有一个参数,常叫 reserve ratioreserve weight,记为 FF,或 κ\kappa,或者在某些情况下多个参数,决定曲线的“陡峭度”(sensitivity)。

基本关系与公式

一个经典的例子是由 Bancor 协议 使用的那种 continuous token + constant reserve ratio 模型。下面是这种模型的公式(简化版本):

  1. 边际价格与储备、供应的关系

    P(S)=RF⋅SP(S) = \frac{R}{F \cdot S}

    这里 F∈(0,1]F \in (0,1] 是一个常数(储备比率)。当 F=1F = 1,价格与储备/供应线性反比;当 F<1F < 1,则价格会更加敏感于供给变化。

  2. 购买代币(“mint”)时:给定投入的储备资产 ΔR\Delta R,获得代币 ΔS\Delta S

    通过积分或幂函数可得:

    ΔS=S((1+ΔRR)F−1)\Delta S = S \left( \left(1 + \frac{\Delta R}{R} \right)^F - 1 \right)

    即如果你存入 ΔR\Delta R,代币供应由 SS 增加为新的 S+ΔSS + \Delta S,价格也随之上升。

  3. 售出代币(“burn”)时:烧掉 ΔS\Delta S,得到储备资产 ΔR\Delta R

    ΔR=R(1−(1−ΔSS)1/F)\Delta R = R \left( 1 - \left(1 - \frac{\Delta S}{S} \right)^{1/F} \right)

    这样定义确保储备足够;也保证买入、卖出操作是对称(在无滑点、手续费、前置条件等情况下)。

这些公式在各种资源中有推导。比如 yos.io 的 “Bonding Curves” 一文里有这些详细公式和例子。 (Yos Riady · Software Craftsmanarrow-up-right)


二、配置空间(Configuration Space)与守恒函数(Conservation Function)的形式化结构

在较新的研究里(Zargham, Shorish, Paruch 等人,论文 “From Curved Bonding to Configuration Spaces”),他们把 bonding curve 加以更形式化地装入机制设计/状态空间模型中,以便证明某些全局性质(invariants),以限制系统的可能状态空间(configuration space)。下面是这个框架的主要结构和数学内容:

状态空间与变量

他们定义一个系统的状态变量集,包括:

  • SS:代币供应量

  • RR:储备余额

  • PP:spot price(可由 S,RS,R 经函数关系算出)

  • 还有可能的参数 FF 或 “reserve weight / curvature parameter” κ\kappa 等。

所以状态 xx 可以表示为向量,例如:

x=(R,S,P,F)∈Xx = (R, S, P, F) \in \mathcal{X}

其中 X\mathcal{X} 是“全状态空间”。 (WU Wirtschaftsuniversität Wienarrow-up-right)

守恒函数/不变量(Conservation Function or Invariant)

他们引入一个不变量函数(conservation function) V(R,S)V(R, S),用来将状态限制在某条曲线上。一个常见形式是多项式形式:

V(R,S):=SκRV(R, S) := \frac{S^\kappa}{R}

或者等价地:

SκR−1=V0S^\kappa R^{-1} = V_0

其中 V0V_0 在系统初始化时由初始供应 S0S_0、初始储备 R0R_0 决定:

V0=S0κR0V_0 = \frac{S_0^\kappa}{R_0}

这个守恒函数意味着:在所有合法状态里,(R,S)(R,S) 必须满足

Sκ/R=V0S^\kappa / R = V_0

从而,系统的可达状态(即所有可能经过一系列“mint”或“burn”动作后可能到达的 (R,S)(R,S))构成一个子集,也就是 configuration space。 (WU Wirtschaftsuniversität Wienarrow-up-right)

spot price 由守恒函数导出的关系

因为 PP 是边际价格,通常可以由下面这个关系导出(用不变量的导数方式):

P(S)=dRdSP(S) = \frac{dR}{dS}

联合守恒函数 V(R,S)=CV(R,S)=C (常数)及其定义,可求出 RR 关于 SS 的函数形式,进而得到 P(S)P(S)。例如,如果

R=SκV0R = \frac{S^\kappa}{V_0}

那么:

P(S)=dRdS=κSκ−1V0P(S) = \frac{dR}{dS} = \frac{\kappa S^{\kappa - 1}}{V_0}

这是一个幂函数形式的 bonding curve,其中 κ\kappa 控制价格随着 supply 增长的陡峭程度。若 κ<1\kappa < 1,价格增长是 sublinear(增速减慢),若 κ>1\kappa > 1,是超线性。这个一致对应 “reserve ratio” 或 “reserve weight” 与价格敏感性之间的关系。 (WU Wirtschaftsuniversität Wienarrow-up-right)


三、性质、稳定性、问题 —— 数学/机制设计角度

在形式的模型中,有一些关键问题要分析/证明/注意:

  1. 液性/储备充足性(Liquidity / reserve adequacy)

    要能保证“卖”操作总能被合约处理(用户烧掉代币能拿回储备资产)。即:储备(reserve)必须足够支撑任意规模的赎回操作。通常在模型里假设 “即时赎回”(instant liquidation)成立,或至少赎回某个上界内成立。

    在 Bancor 风格的模型中,因为定价函数与储备与供给量的关系确定,所以可以证明在这些公式之下,只要设计得当,储备永远不会被耗尽。若某些 earn 机制或费用/滑点被引入,这个性质可能被破坏。

  2. 价格敏感性(Price Sensitivity / Slippage)

    根据 κ\kappa 或 reserve ratio 的不同,边际价格对供给的变化有高或低敏感性。敏感度高:小量买入就推动价格上升很多;敏感度低:价格平缓变化。高敏感性可能导致用户买入成本极高,或者卖出滑点大。

  3. 供给和价格的连续性与可微性

    若公式设计是幂函数或指数函数,需要确认在整个供给域内函数是连续可微,以便积分/导数操作成立。特别是在 “买入/卖出一定量代币” 时积分计算成本或赎回金额要用到这些性质。

  4. 平衡/投机行为与反馈循环

    在某些设置下,早期买入者获利,晚期买入者成本高,这可能鼓励市场里存在投机行为。除非有机制(例如烧毁、费用、税、治理权稀释、收益分配等)来抑制这种不公平或导致系统不稳定。

  5. 配置空间的约束与全局性质

    在 Zargham 等人的框架中,通过不变量(conservation function)约束系统状态,能够保证某些宏观性质(如价格弹性、储备与供给比、收益模型)在所有可能路径下成立。这是一种 机制设计中的“先声明不变性/守恒律,然后只允许动作那些保持这些不变性”的方式


四、例子与具体参数

举一个具体的例子,设定参数:

  • 初始供应 S0=1S_0 = 1

  • 初始储备 R0=1R_0 = 1

  • κ=F=0.5\kappa = F = 0.5 (reserve ratio 是 0.5)

则守恒函数:

S0.5R=V0=10.51=1\frac{S^{0.5}}{R} = V_0 = \frac{1^{0.5}}{1} = 1

所以

R=S0.5R = S^{0.5}

边际价格:

P(S)=dRdS=12S−0.5P(S) = \frac{dR}{dS} = \frac{1}{2} S^{-0.5}

这里随着 SS 增加,PP 会下降,典型是边际价格随着供给增加而下降,这里供给越大价格越低 ——但是这只是边际价格;买入新的代币需要支付的总金额是积分:

Cost(S→S+ΔS)=∫SS+ΔSP(u) du=∫SS+ΔS12u−0.5 du=[u0.5]SS+ΔS\text{Cost}(S \to S + \Delta S) = \int_{S}^{S + \Delta S} P(u) \, du = \int_{S}^{S + \Delta S} \frac{1}{2} u^{-0.5} \, du = [u^{0.5}]_{S}^{S + \Delta S}

如果你希望价格随供给 上升 而上升(通常 bonding curve 是价格随供给上升价格也上升的情形),则 κ\kappa 要大于 1,或者设计成像上面 P(S)=κSκ−1V0P(S) = \frac{\kappa S^{\kappa-1}}{V_0} 那样,当 κ>1\kappa > 1,你得到增长函数。


五、来源 /关键文献

下面是比较核心、权威,以及讲得比较形式化的文献,你若要深入读它们里边的证明、模型假设,非常有帮助。

  • “From Curved Bonding to Configuration Spaces” (Michael Zargham, Jamsheed Shorish, Krzysztof Paruch, 2019) —机制设计 + 状态空间 +守恒函数框架。PDF 文章全文在 Vienna University Research。 (arXivarrow-up-right)

  • “Token Bonding Curves” on yos.io / Medium 的解释/Bancor 风格公式,包括求 “purchase return” 与 “sale return” 的公式推导。 (Yos Riady · Software Craftsmanarrow-up-right)

  • “Bonding Curves and Bonding Curve Accessories” by Meni Rosenfeld 等博客/Medium 文本,讨论仓储比率、敏感性、初始参数设定等。 (Mediumarrow-up-right)


六、可能的严格定理/命题说明

下面我可以写一个典型的形式命题(草稿形式),说明在这些模型中可证明的性质:

命题(储备充足性与状态限制) 在一个 bonding curve 模型中,假设初始状态 (S0,R0)(S_0, R_0) 给定,且 reserve ratio F∈(0,1]F\in (0,1] 或者等价地守恒函数参数 κ>0\kappa >0 给定,并假设买入/卖出操作按照 Bancor 样式公式(上面那种 purchase-return 与 sale-return)执行,则对于任何通过一系列 buy(mint)或 sell(burn) 操作从初始状态到新的状态 (S,R)(S,R),都有:

R>0R > 0

并且状态 (S,R)(S,R) 必须落在 configuration space

{(S,R):Sκ/R=S0κ/R0}\{ (S, R) : S^\kappa / R = S_0^\kappa / R_0 \}

上。 并且 spot price P(S)=dRdS=κSκ−1V0P(S) = \frac{dR}{dS} = \frac{\kappa S^{\kappa - 1}}{V_0}。 如果再假设交易手续费/滑点为零,那么任何购入量/赎回量的资金流与代币流可以通过上述购买/赎回公式计算。

这样的命题在 Zargham et al. 的论文里已被形式化地提出并讨论。 (WU Wirtschaftsuniversität Wienarrow-up-right)


如果你愿意,我可以写一个完整的 proof sketch(带假设、命题、证明)基于 Zargham 等人的模型,或者为某个具体曲线(幂函数形式或 Bancor 形式)写出连续时间极限下的稳定性分析。你要哪个方向深入?

直观

好的,我来写一个更 直观 的版本,帮你把上面 PhD 级的推导转化成容易抓住直觉的理解。


1. Bonding Curve 是什么?

想象你开了一家“自动售卖机”,里面卖的是代币。

  • 每次有人买,机器里的价格会自动上升;

  • 每次有人卖回去,机器的价格会自动下降。 这就是 Bonding Curve:一条预先写在机器里的“价格曲线”,价格不靠买卖双方讨价还价,而是靠公式决定。


2. 为什么要这么做?

在普通市场里:

  • 如果没人挂单,你想买,就可能买不到。

  • 如果没人接盘,你想卖,就可能卖不掉。

Bonding Curve 的好处:

  • 自动流动性:永远有人接单,因为就是合约接你的单。

  • 价格透明:未来买一手要多少钱、卖一手能拿回多少,都能提前算出来。

  • 早期激励:早买的人价格更便宜,随着供给量增加,价格越来越贵 → 鼓励早期参与。


3. 数学直觉

你可以把它看作一个 积分器

  • “代币价格”是曲线的斜率(导数)。

  • “总花费”是曲线下面积(积分)。

举个最常见的幂函数例子:

P(S)=k⋅SαP(S) = k \cdot S^\alpha

  • SS:已经发行的代币数

  • k,αk, \alpha:参数,决定曲线的陡峭程度

如果 α>0\alpha > 0,每多买一点代币,价格就更贵一点(就像越来越陡的坡)。 如果 α<0\alpha < 0,则反过来,越买越便宜(通常不会这样设计)。


4. 一个买卖例子

假设曲线是 P(S)=SP(S) = S,也就是价格等于已经发行的代币数。

  • 当供给是 10 的时候,边际价格 = 10。

  • 你想再买 5 个代币,花费是多少?

花费 = 积分

∫1015S dS=12(152−102)=12(225−100)=62.5\int_{10}^{15} S \, dS = \frac{1}{2}(15^2 - 10^2) = \frac{1}{2}(225 - 100) = 62.5

所以,买 5 个代币不是 “5 × 10 = 50”,而是 更贵,因为随着你买入,价格已经被你自己推高了。


5. 跟 Uniswap 的关系

Uniswap 其实就是一种特殊的 Bonding Curve:

x⋅y=kx \cdot y = k

这条曲线保证:

  • 买多了 token A,token B 就变少,A 的价格变贵。

  • 卖多了 token A,token B 变多,A 的价格变便宜。

和上面讲的“自动售卖机”一模一样,只不过曲线换成了乘法关系。


6. 要点总结

  • Bonding Curve = 用公式写好的自动定价规则

  • 它让代币市场不需要人类挂单,价格跟着供给量自动跑。

  • 数学上:价格是曲线的导数,花费是积分。

  • 直觉上:买得越多,坡越陡;卖回去,坡往下滑。


要不要我帮你画一张 价格曲线的示意图(比如线性、幂函数、Uniswap 曲线三种对比),让你一眼看到不同 bonding curve 的感觉?

Last updated