跳转到内容

曲线合约接入

联合曲线位于 sui/launchpad 的 blast_fun 包。场所适配器和迁移后托管位于 sui/migrators 的 blast_fun_migrators 包。两者独立于 blast_presale,须使用各自的状态、费用策略、能力凭证、金库、取消规则和奖励期限。

生成的发行平台参考包含完整签名、类型、事件及中止码。使用与目标合约版本一致的 Blast SDK 读取状态、构建交易及精确预览。金额为原子单位,时间为毫秒,BPS 分母为 10,000。

LaunchConfig 和 RuntimeConfig 是共享单例。LaunchConfig 初始允许 6、9 位小数,不允许任何支付代币或迁移见证;费率、协议分配和创建费初始为零。使用前必须配置准入和运行策略;初始化值不是实时费率。

发布时向部署者发送不可转让的 Bootstrap。package_admin::wrap 将其与匹配且从未升级的原生 UpgradeCap 一同消耗,把能力封存在 PackageAdmin 中,并创建发行平台 PackageVersion。未激活时无法调用受保护的创建函数。迁移器有独立的包托管与版本对象。

升级后须调用当前包 ID,并传入该包的 PackageVersion;旧代次中止。类型与事件筛选仍使用原始包身份。两个包分别推进代次。

编译并修改 launch_ticket_template 的元数据、小数位数、供应模式、SELL_BURN_BPS 和创建者接收方。Address 要求非零地址;Account 使用 32 字节 Blast 账户承诺值。

发布铸造 1_000_000_000 * 10^decimals 个原子单位至 LaunchTicket<Meme>,把票据发给发布者,并把待注册 Currency<Meme> 发给 Coin Registry。票据持有供应量、财库能力、元数据能力和创建者信息;只有最终确定发行时才按规则转入下一托管阶段。即使准入允许,小数位数超过 10 仍会使 u64 供应量溢出。

从发布结果或 LaunchTicketCreated 获取完整代币类型;工具可能重命名模块与见证。发布依赖列表须包含字节码要求的全部传递依赖。消耗发布命令返回的 UpgradeCap;它不授予对已最终确定代币的增发权限。

把待注册 currency 作为 receiving 对象,调用 Sui Coin Registry 的 coin_registry::finalize_registration<Meme>。该调用创建下一笔交易所需的共享 Currency<Meme>。最终确定发行时应传入共享对象,而非注册前对象。

3. 配置、最终确定并共享

跳转到“3. 配置、最终确定并共享”

在同一个可编程交易块(PTB)中使用 <Meme, Quote> 类型参数:

  1. 经 blast_fun_migrators::cetus::new 或 bluefin::new 消耗票据,传入两个版本对象和 LaunchConfig。Cetus 还需 VenueConfig 及场所对象,在已注册 tick 间距预留交易对。Bluefin 间距为 1–400,费率为其场所单位的 1–20,000。
  2. 设置必填的 launch::set_virtual_quote(正数)、set_graduation_target、set_allocation_plan 和 set_lp_fee_split。
  3. 可选调用 set_opening_round(0 或 60,000–300,000 毫秒)及 set_partner(当前获准入伙伴和 Clock)。
  4. 向 launch::finalize 传入精确的 LaunchConfig.creation_fee 对应 Coin<SUI> 及共享 Currency<Meme>。零费用也需要零币对象。最终确定将供应模式固定为仅可销毁或固定供应,消耗财库能力,并把原生元数据能力保存在发行对象中。
  5. 未启用开盘轮时,可在公开共享前买入;启用时可向资金池出价。所有返回币对象均须消耗。
  6. 最后调用 launch::share,记录 public_start_ms。本 PTB 此后不得再使用该发行值;创建者能力凭证在后续交易领取。

LaunchInitializer 没有 ability,必须在创建它的 PTB 中最终确定。Launch 仅有 key,必须在该 PTB 中共享。Bps、接收方、分配方案、路由与费用方案须用 Move 构造函数在 PTB 内构建,而非纯结构体参数。

发行代币:曲线 + 池 + Blast + 项目接收方 = 10,000 BPS。支付代币:池 + Blast + 项目接收方 = 10,000 BPS。曲线及池的发行代币份额须大于零;目标中分给池的支付代币至少一个原子单位。方案必须为 finalize 从 LaunchConfig 写入的协议份额留出空间。

项目接收方最多 16 项,目标地址非零;份额可以为零,迁移分配地址允许重复。LP 分配另允许最多 16 个非零且不同的接收方地址;创建者、自动补充流动性、奖励、销毁及接收方合计 10,000 BPS。

供应与支付代币分配使用 u128 乘积:Blast 向上取整,其他部分向下取整,再按最大余数分配剩余原子单位,相同余数优先较早条目。发行代币顺序为曲线、池、Blast、接收方;支付代币为池、Blast、接收方。所有单位均计入。曲线未售代币不会转为接收方分配。

共享后,launch::claim_creator_caps 一次性发行 CurveFeeCap<Meme> 和 BlastMetadataCap<Meme>。地址接收方自行提交交易,无需证明。Blast 账户接收方须提供绑定账户承诺、代币类型及领取发送者的有效期内 Ed25519 证明;域与 BCS 格式以 creator_authority.move 为准。

合约检查有效凭证 ID,而不仅是类型。曲线费用经 launch::claim_creator_fees 领取,LP 费用经 vault::claim_creator_fees 领取;两者均返回两个必须消耗的币对象。元数据设置经共享 currency 修改名称、描述或图标;符号及小数位数固定。

CreatorAdmin 可重新分配任一凭证,使旧凭证失效并取消初始接收方尚未完成的领取。初次领取前只重新分配一个凭证,会使另一个保持未发行,直到单独重新分配。删除有效凭证不会移除管理员重新分配权限。

继续阅读曲线整数定价、迁移与奖励及状态与事件。权限指南说明实时策略与升级权限。