SuperAPI AI 工具集

pump-bonding-curve

智能体与模型

查看项目

更新于 10-16 02:31

技能介绍

用途:实现并维护驱动 Pump 代币定价的恒定乘积 AMM 联合曲线数学,覆盖买入/卖出报价、含手续费计算、市值计算、储备管理与新曲线、活跃曲线、已迁移曲线的边界处理。

主要能力:基于 xy=k 的恒定乘积公式,x 为虚拟 SOL 储备,y 为虚拟代币储备。买入代币输出为 tokensOut = dxY/(X+dx),卖出 SOL 输出为 solOut = dy*X/(Y+dy)。手续费在应用曲线公式前从 SOL 金额中扣除,公式为 inputAmount = (amount - 1) * 10000 / (totalFeeBps + 10000),其中减 1 用于处理舍入边界。市值计算为 virtualSolReserves * mintSupply / virtualTokenReserves,mintSupply 默认 ONE_BILLION_SUPPLY(1×10^15,即 10 亿代币、6 位小数)。存在 FeeConfig 时按市值分层收费,费率层级逆序迭代,选取 marketCapLamportsThreshold ≤ 当前市值的最后一个层级。手续费向上取整使用 ceilDiv(a,b)=(a+b-1)/b。

关键文件:src/bondingCurve.ts 包含全部曲线数学函数;src/fees.ts 负责手续费计算(基点、分层费率、向上取整);src/state.ts 定义 BondingCurve、Global、FeeConfig、FeeTier 接口。

使用方式:报价函数为纯函数,无网络调用、无副作用、无可变状态。所有金额使用 BN(bn.js)进行任意精度整数运算,禁止使用 JavaScript number。费率以基点表示(1 bps = 0.01%,10000 bps = 100%)。构建交易指令前必须检查 bondingCurve.complete。

适用场景:Pump 代币毕业前的定价与报价、市值阈值判断、迁移到 PumpAMM 池前的状态处理。

限制与注意:零金额返回 BN(0);已迁移曲线(complete === true 且储备为零)返回 BN(0);空曲线通过 newBondingCurve(global) 创建;代币数量超过真实储备时以 realTokenReserves 封顶;创建者费用仅在 bondingCurve.creator != PublicKey.default 或为新曲线时收取。常见错误包括混淆虚拟储备与真实储备、报价时未计入手续费、在已毕业曲线上交易(链上会失败)、费率层级正序迭代、市值计算误用 tokenTotalSupply 而非 mintSupply。getBuySolAmountFromTokenAmountQuote 会在结果上加 1 以确保 SOL 充足。