曲线整数定价与交易
依据:curve.move、launch.move 和 fees.move。交易预览须用整数计算;浮点数会失去原子单位精度。
储备与价格
跳转到“储备与价格”令 D = 10_000、M = meme_reserve、V = virtual_quote、Q = real_quote_reserve、T = graduation_target、fq = quote_fee_bps、fm = meme_fee_bps、s = sell_burn_bps。费率均指整数 BPS。曲线基于 (V + Q) * M 定价,输出向下取整,费用和销毁向上取整;取整可使乘积增大。V 不实际存入或提取。
spot_price_atoms = (V + Q) / Mspot_price_whole = spot_price_atoms * 10^meme_decimals / 10^quote_decimalsprogress = Q / T展示值是有理数比例,应保留分子分母或进行小数格式化,不能在小数位缩放前就截断整数除法。完整代币价格乘当前完整供应量得到当前供应量估值;乘初始十亿供应量得到初始供应量口径估值,迁移处置后两者可不同。它们都不是可执行报价。
买入
跳转到“买入”输入 q 个支付代币原子单位,先限制实际毛输入:
R = T - Qif q - ceil(q * fq / D) <= R: g = qelse: g = ceil(R * D / (D - fq))refund = q - g
quote_fee = ceil(g * fq / D)n = g - quote_feegross_meme = floor(M * n / (V + Q + n))meme_fee = ceil(gross_meme * fm / D)net_meme = gross_meme - meme_fee成功后 Q 变为 Q + n,M 变为 M - gross_meme;达标则进入 MigrationReady。该上限使净支付代币恰好补足剩余目标,虚拟储备不计入。
launch::buy(launch, package_version, runtime_config, quote_coin, min_meme_out) 返回 (Coin<Meme>, Coin<Quote>):净发行代币及超额输入退款。两者包括零币都必须消耗。仅 Live 可买入。非达标零输出买入以 EZeroTradeOutput 中止;达标零输出仅在 min_meme_out 为零时成功,正数最低值以 ESlippageExceeded 中止。
卖出
跳转到“卖出”输入 m 个发行代币原子单位:
meme_fee = ceil(m * fm / D)burn = ceil((m - meme_fee) * s / D)x = m - meme_fee - burngross_quote = floor((V + Q) * x / (M + x))quote_fee = ceil(gross_quote * fq / D)net_quote = gross_quote - quote_fee成功后 M 变为 M + x、Q 变为 Q - gross_quote,burn 加入 pending_burn。输出必须由真实支付代币余额支付,虚拟储备不能支付;余额不足则整笔回滚。
launch::sell(launch, package_version, runtime_config, meme_coin, min_quote_out) 返回一个 Coin<Quote>,要求 Live 且已设置 public_start_ms。净输出为零或低于最低值均中止。卖出销毁独立于两种手续费,只在迁移时处置。
费用分配
跳转到“费用分配”每种交易费按实时 RuntimeConfig.protocol_fee_share_bps(p)分配:
protocol = ceil(fee * p / D)creator = fee - protocol费用累积在发行对象中。fq 和 fm 是不可变快照,各最多 1,000 BPS;Blast 可即时将后续交易的 p 设为 0–10,000 BPS。指定伙伴在支付时取得 Blast 余额的一部分,不是在交易时额外收费。
例如 M=1_000_000、V=100_000、Q=0、T=100_000、fq=fm=100 时,输入 10_000 支付代币原子单位全部使用:支付代币费 100,净输入 9_900,毛发行代币 90_081,代币费 901,净到账 89_180。示例单位是原子单位,不代表实际发行配置或价格承诺。
开盘轮调用
跳转到“开盘轮调用”join_opening_round 在 public_start_ms + opening_round_ms 前接受非零 Coin<Quote>;同一发送者的多次出价在 OpeningRoundBidKey(sender) 下累计。创建者可在共享前出价。OpeningRound 期间不可普通交易或撤回。
结束时间到达后任何人可调用一次 settle_opening_round。它把状态设为 Live,以最低输出零执行集中买入。若净输出为零且未达标,则保留全部资金待退款;若达标,即使零代币输出仍可收取资金。结算可直接进入 MigrationReady。
deliver_opening_round(launch, package_version, bidder) 删除该地址出价并直接支付给它。设剩余代币余额 B_m、支付代币余额 B_q、剩余总出价 B 和本次出价 b,支付 floor(B_m*b/B) 与 floor(B_q*b/B),再扣减出价及金额。最后一次交付取得余数。除 OpeningRound 外,后续所有状态包括 Migrated 均可交付。
学习与实验
跳转到“学习与实验”定价讲解逐步推导恒定乘积公式。构建器将这些原子单位规则应用于可配置规划、交易示例和 LP 费用路由;费率为示例,不是实时策略。