Set up and use 1Password CLI (op). Use when installing the CLI, enabling desktop app integration, signing in (single or multi-account), or reading/injecting/running secrets via op.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Constant-product AMM bonding curve math for Pump token pricing — buy/sell quoting, fee-aware calculations, market cap computation, tiered fees, ceiling division, virtual vs real reserves, and edge-case handling.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
설치 방법 보기설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
Implement and maintain the constant-product AMM bonding curve math that powers Pump token pricing — including buy/sell quoting, fee-aware calculations, market cap computation, reserve management, and edge-case handling for new, active, and migrated curves.
Pump tokens are priced using a constant-product bonding curve ($x \times y = k$) where $x$ = virtual SOL reserves and $y$ = virtual token reserves. The bonding curve determines token prices during the pre-graduation phase. Once market cap reaches a threshold, the token "graduates" and migrates to a PumpAMM pool.
src/bondingCurve.ts — all bonding curve math functions (buy/sell quoting, market cap)src/fees.ts — fee computation (basis points, tiered fees, ceiling division)src/state.ts — BondingCurve, Global, FeeConfig, FeeTier interfaces$$x \times y = k$$
Buy (tokens out for SOL in): $$\text{tokensOut} = \frac{dx \times Y}{X + dx}$$
Where $dx$ = SOL input (after fees), $X$ = virtual SOL reserves, $Y$ = virtual token reserves.
Sell (SOL out for tokens in): $$\text{solOut} = \frac{dy \times X}{Y + dy}$$
Where $dy$ = tokens sold, $X$ = virtual SOL reserves, $Y$ = virtual token reserves.
Fees are deducted from the SOL amount before applying the bonding curve formula:
inputAmount = (amount - 1) * 10000 / (totalFeeBps + 10000)
The - 1 before fee stripping is intentional to handle rounding edge cases.
$$\text{marketCap} = \frac{\text{virtualSolReserves} \times \text{mintSupply}}{\text{virtualTokenReserves}}$$
Where mintSupply defaults to ONE_BILLION_SUPPLY ($1 \times 10^{15}$ — 1B tokens with 6 decimals).
When a FeeConfig exists, fees are market-cap-dependent. Fee tiers are iterated in reverse order — the first tier from the end whose marketCapLamportsThreshold ≤ currentMarketCap is selected.
interface FeeTier {
marketCapLamportsThreshold: BN;
fees: { lpFeeBps: BN; protocolFeeBps: BN; creatorFeeBps: BN };
}
$$\text{ceilDiv}(a, b) = \frac{a + b - 1}{b}$$
function ceilDiv(a: BN, b: BN): BN {
return a.add(b).sub(new BN(1)).div(b);
}
| Reserve Type | Includes | Used For |
|---|---|---|
virtualSolReserves | Real SOL + protocol-added virtual offset | AMM formula calculation |
virtualTokenReserves | Real tokens + virtual offset | AMM formula calculation |
realTokenReserves | Actual tokens available | Buy output cap |
realSolReserves | Actual SOL deposited | Withdrawal limit |
| Case | Behavior |
|---|---|
| Zero amount | Returns BN(0) |
Migrated curve (complete === true, zero reserves) | Returns BN(0) |
| Null bonding curve | Creates a fresh curve via newBondingCurve(global) |
| Tokens exceed real reserves | Caps at realTokenReserves |
| Creator fee | Only charged if bondingCurve.creator != PublicKey.default or it's a new curve |
interface BondingCurve {
virtualTokenReserves: BN;
virtualSolReserves: BN;
realTokenReserves: BN;
realSolReserves: BN;
tokenTotalSupply: BN;
complete: boolean; // true = graduated to AMM
creator: PublicKey;
isMayhemMode: boolean;
}
BN (bn.js) for arbitrary-precision integer arithmetic — never use JavaScript numberceilDiv) for fee computation to ensure the protocol never loses dustbondingCurve.complete before building trade instructionscomplete === true) will fail on-chainmintSupply not tokenTotalSupplygetBuySolAmountFromTokenAmountQuote adds + 1 to the result to ensure sufficient SOL아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
Set up and use 1Password CLI (op). Use when installing the CLI, enabling desktop app integration, signing in (single or multi-account), or reading/injecting/running secrets via op.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Manage Apple Notes via the `memo` CLI on macOS (create, view, edit, delete, search, move, and export notes). Use when a user asks SolanaOS to add a note, list notes, search notes, or manage note folders.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Manage Apple Reminders via remindctl CLI (list, add, edit, complete, delete). Supports lists, date filters, and JSON/plain output.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Create, search, and manage Bear notes via grizzly CLI.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Monitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
BluOS CLI (blu) for discovery, playback, grouping, and volume.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.