发行状态、事件与错误
参阅 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。这些包不使用发行平台事件包装。
索引迁移与金库余额
跳转到“索引迁移与金库余额”- 通过
LaunchCreated.ticket_id和LaunchTicketCreated解析发行的 Meme 类型。用该类型关联同一交易中的包装Migrated和直接VaultCreated事件,保存发行、金库与池 ID。 - 按场所解释
VaultCreated.position_id。在 Cetus,它标识CetusLPBurnProof,不是已销毁的迁移头寸;后续AutoLpPositionOpened.position_id标识独立且仍存在的自动补充流动性头寸。在 Bluefin,原始头寸仍由金库持有。读取金库动态对象字段以确认托管关系。 - 初始本金为
Migrated交付金额减去VaultCreated.residual_meme和residual_quote。这些剩余代币属于协议金库余额,不是额外流动性或用户退款。 - 将
FeesCollected重放到创建者、自动补充流动性、奖励和回购支付代币余额。protocol_destination为空表示 Blast 的 LP 份额留待合作伙伴支付。指定接收方份额和销毁部分的 Meme 已离开金库,不应加入待处理余额。 - 按执行顺序应用后续事件:
AutoLiquidityAdded给出待处理的自动补充流动性余额;BuybackBurned给出剩余回购支付代币;RoundPublished将奖励资金移入轮次;RewardPaid更新轮次剩余资金及已支付索引。领取会清空对应的累计余额。按完整事件类型区分发行平台和迁移器的领取。
没有新费用的收取不会发出 FeesCollected,但仍可重新投入此前剩余资产并发出 AutoLiquidityAdded。使用事件记录的待处理余额,不要推断“没有收费事件就没有变化”。生成参考列出了完整重放字段;须与对象状态核对推演结果。
常见中止
跳转到“常见中止”| 问题 | 检查项 |
|---|---|
| 运行代次 | 当前包 ID 及其版本对象;发行平台和迁移器版本独立。 |
| 支付代币、小数位数或适配器未准入 | 创建前读取当前准入;已存在发行使用自己的快照。 |
| 份额错误或缺少必填值 | 设置全部必填值、在两种总额中预留 Blast 份额、遵守接收方限制。 |
| 创建费错误 | 精确 SUI 金额,零费用也传零币。 |
| 生命周期错误 | 出价、结算、交易、迁移分别有状态与时间门槛。 |
| 滑点或零输出 | 整数重新报价并设置有效最低值;注意最后一笔买入例外。 |
| 创建者凭证失效 | ID 与发行记录的有效 ID 匹配。 |
| 伙伴不匹配 | 仅对记录有该伙伴的发行/金库使用伙伴支付调用。 |
| 场所不匹配 | 交易对、Cetus 顺序、池 ID、档位及费用/场所对象。 |
| 奖励证明错误或已领 | 叶子使用金库 ID、正确 BCS 整数、树大小与奇偶、未领取索引。 |
中止编号及位置依包和版本而异。使用生成参考和中止模块精确解码;还可能传播 Sui 集合、余额、算术、option 和 BCS 中止。