跳转到内容

发行状态、事件与错误

参阅 launch.move、events.move 和完整生成参考。链上对象和已完成事件为权威依据,SDK 推演仅为预览。

对象 关键读取
Launch<Meme, Quote> lifecycle、public_start_ms、opening_round_ms、开盘轮资金与待交付余额、meme_reserve、real_quote_reserve、virtual_quote、graduation_target、两种费率、卖出销毁、分配、池档位、LP 方案、创建者/凭证 ID、伙伴 ID、费用账本。
LaunchConfig 准入、新发行费用快照、协议分配、精确 SUI 创建费;支付代币表键使用原始类型身份。伙伴准入为 PartnerKey(ID) 动态字段,值为准入结束时间。
RuntimeConfig 实时协议交易费份额、财库、创建者账户签名者。
Currency<Meme> 元数据、小数位数、当前供应量、仅可销毁/固定供应模式。
LpVault<Meme, Quote> 池/伙伴 ID、当前 LP 方案、创建者/自动补充流动性/奖励/销毁余额、协议剩余代币、待支付伙伴协议 LP 费用、下一轮编号和 checkpoint。场所头寸为动态对象字段。
LpFeePolicy 实时默认份额、以原始类型名为键的单 Meme 覆盖值、收款地址。
Round<Meme, Quote> 金库 ID、轮次编号、奖励预算、Merkle 根、叶子数量、已领取位图。checkpoint 区间及清单摘要须读 RoundPublished。
各包 PackageVersion / PackageAdmin 当前运行代次及升级能力托管。

从发布结果和 LaunchTicketCreated 取得票据及代币类型,用 LaunchCreated.ticket_id 关联。LaunchShared 提供公开开始时间。VaultCreated 包含金库、DEX 池及代币类型,但没有发行 ID。须用已知的 Meme 类型,将它与同一交易中的 Migrated.launch_id 关联;不能假定一笔交易只包含一次迁移。先解析正式部署,不能从预售发布记录猜测曲线对象 ID。

[OpeningRound ->] Live -> MigrationReady -> Migrated

仅 Live 接受普通买入,卖出还须已公开共享。开盘轮结算可直接达标,跳过公开 Live 交易。除 OpeningRound 外后续状态均可交付。费用领取和元数据操作各自检查版本/凭证,迁移后仍可执行。没有取消状态。

价格与毕业进度使用曲线公式。开盘轮结束为 public_start_ms + opening_round_ms。未交付出价是 OpeningRoundBidKey(address) 下的 u64 动态字段,交付时删除。虚拟储备不是现金,毕业目标不是累计成交量。

发行平台事件使用包装:

<launchpad original ID>::blast_events::Event<
<launchpad original ID>::events::Name
>

须筛选完整包装类型。被调用模块未必是事件类型定义模块:适配器执行迁移时会发出发行平台事件。发送者从交易读取,不要假设事件必有该字段。按 checkpoint、交易、事件顺序重放。

事件组 用途
LaunchTicketCreated、LaunchCreated、LaunchShared 关联代币身份、设置、发行和公开开始时间。
OpeningRoundJoined、OpeningRoundSettled、OpeningRoundDelivered 追踪出价和交付。Joined 没有出价者字段,须读交易发送者。
Bought、Sold 毛/净金额、退款或待销毁、两资产协议/创建者费用、交易后储备。结算旁的 Bought 属于资金池;共享前可能为创建者买入。
CreatorCapsClaimed、凭证重新分配、MemeMetadataUpdated 追踪有效权限和元数据。CreatorCapsClaimed 标识 Meme 类型而非发行 ID。
CreatorFeesClaimed、ProtocolFeesClaimed、ProtocolFeesAccrued 区分领取和累计。
MigrationAllocationPaid、Migrated 接收方支付、池金额、处置代币和最终供应量。
配置事件 准入、费用、协议分配、伙伴准入、财库、签名者和实时协议份额。

迁移器直接发出 blast_fun_migrators::blast_events 载荷,包括 CetusPoolReserved、VaultCreated、FeesCollected、AutoLpPositionOpened、AutoLiquidityAdded、FeeSplitChanged、CreatorFeesClaimed、ProtocolLpFeesClaimed、BuybackBurned、RoundPublished 和 RewardPaid。合作伙伴支付另发出 blast_partners::blast_partners::PartnerPaid。这些包不使用发行平台事件包装。

  1. 通过 LaunchCreated.ticket_id 和 LaunchTicketCreated 解析发行的 Meme 类型。用该类型关联同一交易中的包装 Migrated 和直接 VaultCreated 事件,保存发行、金库与池 ID。
  2. 按场所解释 VaultCreated.position_id。在 Cetus,它标识 CetusLPBurnProof,不是已销毁的迁移头寸;后续 AutoLpPositionOpened.position_id 标识独立且仍存在的自动补充流动性头寸。在 Bluefin,原始头寸仍由金库持有。读取金库动态对象字段以确认托管关系。
  3. 初始本金为 Migrated 交付金额减去 VaultCreated.residual_meme 和 residual_quote。这些剩余代币属于协议金库余额,不是额外流动性或用户退款。
  4. 将 FeesCollected 重放到创建者、自动补充流动性、奖励和回购支付代币余额。protocol_destination 为空表示 Blast 的 LP 份额留待合作伙伴支付。指定接收方份额和销毁部分的 Meme 已离开金库,不应加入待处理余额。
  5. 按执行顺序应用后续事件:AutoLiquidityAdded 给出待处理的自动补充流动性余额;BuybackBurned 给出剩余回购支付代币;RoundPublished 将奖励资金移入轮次;RewardPaid 更新轮次剩余资金及已支付索引。领取会清空对应的累计余额。按完整事件类型区分发行平台和迁移器的领取。

没有新费用的收取不会发出 FeesCollected,但仍可重新投入此前剩余资产并发出 AutoLiquidityAdded。使用事件记录的待处理余额,不要推断“没有收费事件就没有变化”。生成参考列出了完整重放字段;须与对象状态核对推演结果。

问题 检查项
运行代次 当前包 ID 及其版本对象;发行平台和迁移器版本独立。
支付代币、小数位数或适配器未准入 创建前读取当前准入;已存在发行使用自己的快照。
份额错误或缺少必填值 设置全部必填值、在两种总额中预留 Blast 份额、遵守接收方限制。
创建费错误 精确 SUI 金额,零费用也传零币。
生命周期错误 出价、结算、交易、迁移分别有状态与时间门槛。
滑点或零输出 整数重新报价并设置有效最低值;注意最后一笔买入例外。
创建者凭证失效 ID 与发行记录的有效 ID 匹配。
伙伴不匹配 仅对记录有该伙伴的发行/金库使用伙伴支付调用。
场所不匹配 交易对、Cetus 顺序、池 ID、档位及费用/场所对象。
奖励证明错误或已领 叶子使用金库 ID、正确 BCS 整数、树大小与奇偶、未领取索引。

中止编号及位置依包和版本而异。使用生成参考和中止模块精确解码;还可能传播 Sui 集合、余额、算术、option 和 BCS 中止。