Skip to main content
本页内容由 AI 自动翻译,所有内容以英文版本为准。查看英文版 →
LaunchLab 提供了一套精简的指令集:六个面向用户的调用加上少数管理员原语。SDK 包装了所有这些;本页为聚合器、监控工具和需要 CPI 的程序记录了原始接口。

指令清单

“ExactIn/ExactOut” 的分割镜像了 CPMM 的 SwapBaseInput / SwapBaseOutput — 在链上它们是具有略微不同舍入的单独指令判别器。 毕业路径选择。 每个新的 InitializeInitializeV2InitializeWithToken2022 调用必须设置 migrate_type = 1CPSWAP)。任何尝试初始化新的 AMM v4 绑定池都会返回 MigrateTypeNotMatchamm_creator_fee_on 仅选择生成的 CPMM 创建者费用是应用于报价代币还是两个代币;它不选择目标程序。 MigrateToAmm 对于在此限制之前使用 migrate_type = 0 初始化的现有 PoolState 仍然可调用。该版本不会重写现有池状态或删除遗留指令。

Initialize

创建新启动。 参数
账户(简化版) 前置条件
  • quote_mint ∈ launch_config.allowed_quote_mints
  • base_supply_graduation ≤ base_supply_max
  • 费用参数通过 launch_config.max_*_fee_rate 检查。
  • open_time ≥ now − slop(SDK 强制 ≥ now;程序容忍轻微回溯)。
  • curve_type 被识别。
后置条件
  • base_mintsupply = base_supply_max,全部在 base_vault 中。
  • base_mint.mint_authority = launch_authorityfreeze_authority = None
  • LaunchState 初始化为 status = Activebase_sold = 0quote_reserve_real = 0
  • quote_reserve_target 从曲线参数 + base_supply_graduation + buy_numerator 计算(大约)。
常见错误InvalidQuoteMintFeeRateTooHighInvalidCurveParamsMathOverflow

Buy(规范变体:BuyExactIn

用户提供固定的 quote_in;曲线计算 base_out 参数
账户 前置条件
  • launch_state.status == Active
  • now ≥ open_time
  • user_quote_ata.balance ≥ quote_in
  • quote_in > 0
效果
  1. quote_in 分割为 quote_in_after_fee 和费用部分。
  2. 牛顿求解曲线以获得给定后费用报价的 base_out
  3. require(base_out ≥ minimum_base_out) 否则回滚 ExceededSlippage
  4. 移动 quote_in 用户 → 金库。移动 base_out 金库 → 用户。
  5. 更新 base_sold += base_outquote_reserve_real += quote_in_after_fee × (lp_share / total_share)
  6. 更新费用计数器(protocol_fees_quotecreator_fees_quote)。
  7. state_data.num_buys += 1
  8. 如果更新后 quote_reserve_real ≥ quote_reserve_target,SDK 通常在同一交易中链接 Graduate ix。程序不会在 Buy 内自动毕业 — 需要后续的 Graduate

BuyExactOut

用户指定精确的 base_out;程序计算 quote_in 参数
BuyExactIn 相同的账户。使用闭式二次积分(或 curve_type 1 的 CPMM 逆)而不是牛顿迭代。

Sell / SellExactIn / SellExactOut

Buy 的镜像。用户将 base_in 返回给曲线并接收 quote_out。费用从 quote_out 中扣除,因此用户收到的少于原始集成收益。 前置条件
  • user_base_ata.balance ≥ base_in
  • 卖出不能将 base_sold 推低于 0(考虑到会计一致性是冗余的)。
  • 启动是 Active
效果 — 对称于 Buybase_sold 减少,quote_reserve_real 减少。费用仍然累积。

MigrateToAmm / MigrateToCpswap

一旦曲线达到 total_quote_fund_raising,将启动毕业到可交易的池。新启动仅限 CPMM。MigrateToAmm 为存储的 migrate_type0 的现有池保留。 谁签署
  • MigrateToAmm — 绑定 GlobalConfig 上记录的 migrate_to_amm_wallet
  • MigrateToCpswap — 绑定 GlobalConfig 上记录的 migrate_to_cpswap_wallet
这些钱包通常由 Raydium 运营的毕业 crank 持有;实际上毕业在阈值被跨越后的几秒内进行,无论谁触发了最后的买入。 参数 MigrateToAmm 需要三个(主要是程序转发给 AMM v4 的 OpenBook 市场参数):
MigrateToCpswap 不需要任何参数。 效果(两者共同)
  1. 验证 pool_state.status == Migrate(即 quote_reserve_target 已达到)。否则回滚 PoolMigrated(状态已是 Migrated)或 PoolFunding(仍在融资)。
  2. 验证 pool_state.migrate_type 与指令匹配(AMM 为 0,CPMM 为 1)。否则回滚 MigrateTypeNotMatch
  3. 计算毕业后的储备:
    • base_amount_out = base_vault.amount − vesting_schedule.total_locked_amount
    • quote_amount_out = quote_vault.amount − quote_protocol_fee − migrate_fee − platform_fee
  4. CPI 进入目标程序(AMM v4 Initialize2CPMM InitializeWithPermission)使用这些储备来创建毕业后的池。
  5. 对于在 2026-08-17 升级后执行的 CPMM 迁移,将 platform_scale + creator_scale 合并为一个平台拥有的锁定 LP 份额,并最多向 platform_nft_wallet 铸造一个费用密钥 NFT。销毁 burn_scale 余额。在升级之前,creator_scale 被单独锁定,其费用密钥转到代币创建者。已完成的历史迁移不被修改。对于遗留 AMM v4 毕业,LP 处置遵循该指令的现有流程。
  6. 撤销 base_mint.mint_authority(设置为 None)。
  7. 翻转 pool_state.status = Migrated,设置 vesting_schedule.start_time = block_time + cliff_period
后置条件BuyExactInBuyExactOutSellExactInSellExactOut 从此时起将以 PoolMigrated 拒绝。生成的 AMM 池是规范的,交易就像任何其他 AMM v4 / CPMM 池一样。 常见错误PoolFundingPoolMigratedMigrateTypeNotMatchInvalidCpSwapConfigMathOverflow

CPMM 迁移剩余账户

构建 MigrateToCpswap 的客户端必须使用这些固定的 remaining_accounts 索引: 该指令在升级路径上需要至少十个剩余账户。支持铸币账户是只读 CPI 输入。即使铸币没有初始化的支持记录,也要派生两个地址。仍然附加创建者锁定账户或省略索引 8–9 的旧构建器必须更新。

平台 GlobalConfig 允许列表

PlatformConfig.restrict_global_config 控制检查:
  • 0:平台接受任何其他有效的 GlobalConfig;不需要允许账户。
  • 1InitializeInitializeV2InitializeWithToken2022 必须在 remaining_accounts 中的任何地方包含匹配的 PlatformAllowConfig
平台管理员使用 CreatePlatformAllowConfigClosePlatformAllowConfig 创建或关闭 PDA。其种子是 [b"platform_allow_config", platform_config, global_config]。前管理员管理的 PlatformGlobalAccess 指令和 PDA 已停用。

CollectFee

管理员扫除单个启动上协议累积的交易费用。 参数 — 无。 账户 效果 — 将 pool_state.quote_protocol_feequote_vault 转账到 recipient_token_account,然后将计数器清零。可在第一次买入后的任何时间调用。

CollectMigrateFee

管理员扫除毕业时累积的迁移费用。与 CollectFee 相同的账户形状,但以 migrate_fee_owner 作为签署者(而不是 protocol_fee_owner)和 pool_state.migrate_fee 作为排空的计数器。

ClaimCreatorFee

每个创建者对创建者拥有的每个使用相同报价铸币的启动累积的创建者费用的扫除。排空每个创建者费用金库,而不是每个池的费用金库。 参数 — 无。 账户 效果 — 将 creator_fee_vault 的全部余额转账到 recipient_token_account。如果金库为空,则以大于零的检查回滚。

ClaimPlatformFee

每个平台的扫除,直接排空启动的报价金库。当平台想要为一个特定启动声称其份额而不通过聚合平台金库时使用。 参数 — 无。 账户 效果 — 将 pool_state.platform_feequote_vault 转账到 recipient_token_account,将计数器清零。

ClaimPlatformFeeFromVault

每个平台的聚合扫除。排空平台的每个报价铸币费用金库,该金库从通过平台路由的每个启动累积费用。 参数 — 无。 账户 效果 — 将 platform_fee_vault 的全部余额转账到 recipient_token_account。如果金库为空则回滚。

归属和平台配置指令

这些在专门页面上记录,因为每个都有自己的状态模型:

状态变化矩阵

接下来去哪里

来源: