跳转到主要内容

概述

ConstantProductCurveLib 实现 Geocurve 联合曲线数学。它使用虚拟恒定乘积公式——与 Uniswap 相同的 x × y = k,但有锚定起始价格的虚拟储备。 此库处理所有曲线模式结算:从曲线计算出清价格、确定成交,以及计算分发或吸收多少代币。

曲线公式

(Vt - S) × (Ve + E) = K = Vt × Ve
变量含义
Vt虚拟代币储备(不可变,≥ totalSupply)
Ve虚拟 ETH 储备(不可变)
S累积分发的代币
E累积的真实 ETH
K不变量常数

核心函数

computeLaunchSettlement()

曲线模式批量结算的主入口。替代曲线池的 ClearingPriceLib.computeClearingPrice()
function computeLaunchSettlement(
    GeodeIntent[] memory buys,
    GeodeIntent[] memory sells,
    uint256 maxBatchSize,
    LaunchState memory ls,
    uint256 settlementFeeBps,
    uint256 deployerRoyaltyBps
) internal pure returns (
    SettlementResult memory result,
    bool[] memory buyFills,
    bool[] memory sellFills
)

curvePrice()

返回曲线上的当前边际价格:
price = (Ve + E) / (Vt - S)

ethCostToBuy()

从当前状态购买 deltaTokens 代币的 ETH 成本:
ethIn = K / (Vt - S - Δs) - (Ve + E)

tokensForEth()

花费 ethIn ETH 可获得多少代币:
Δs = (Vt - S) - K / (Ve + E + ethIn)

ethReturnOnSell()

卖出 deltaTokens 代币可获得多少 ETH:
ethOut = (Ve + E) - K / (Vt - S + Δs)

价格行为

操作SE价格
买入↑ 增加↑ 增加↑ 上升
卖出↓ 减少↓ 减少↓ 下降
无操作不变不变不变
曲线完全可逆——代币可以随时买卖。曲线是永久的;没有毕业或迁移。
渐近定价:当 Vt = totalSupply 时,随着 100% 代币被分发,价格趋近无穷大。当 Vt > totalSupply 时,曲线在全部分发时有有限的最高价格。

源代码

ConstantProductCurveLib.sol

在 GitHub 上查看完整源代码(约 269 行)。