跳转到主要内容

Documentation Index

Fetch the complete documentation index at: https://docs.raydium.io/llms.txt

Use this file to discover all available pages before exploring further.

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

指令清单

分组指令可由以下调用
全局配置CreateConfig / UpdateConfig管理员
启动生命周期Initialize / InitializeV2任何人(创建者)—— SPL Token 启动;V2 记录 amm_creator_fee_on 用于最终的 CPMM 毕业
启动生命周期InitializeWithToken2022任何人(创建者)—— Token-2022 启动,可选的 TransferFeeConfig
交易BuyExactIn / BuyExactOut任何人 —— 精准输入/精准输出买入键合曲线
交易SellExactIn / SellExactOut任何人 —— 精准输入/精准输出卖出键合曲线
毕业MigrateToAmm迁移钱包(在 GlobalConfig 上设置)—— 毕业到 AMM v4。当 amm_creator_fee_on = BothToken 时使用,以便创建者费可以从任一侧收取。
毕业MigrateToCpswap迁移钱包 —— 毕业到 CPMM。当 amm_creator_fee_on = QuoteToken 时使用,Token-2022 启动需要此项。包装 CPMM 上的 InitializeWithPermission
费用CollectFee管理员 —— 从启动中收取协议费用
费用CollectMigrateFee管理员 —— 收取累积的迁移费用
费用ClaimCreatorFee创建者 —— 在曲线阶段声明累积的创建者费用
归属CreateVestingAccount创建者 —— 为受益人分配锁定的代币,毕业后解锁
归属CreatePlatformVestingAccount平台管理员 —— 为平台侧受益人分配锁定的代币
归属ClaimVestedToken受益人 —— 在悬崖期后声明解锁的代币
平台配置CreatePlatformConfig / UpdatePlatformConfig平台管理员
平台配置UpdatePlatformCurveParam / RemovePlatformCurveParam平台管理员 —— 管理每个平台允许的曲线形状列表
平台费用ClaimPlatformFee / ClaimPlatformFeeFromVault平台管理员
平台访问CreatePlatformGlobalAccess / ClosePlatformGlobalAccess管理员 —— 限制哪些平台可以使用给定的 GlobalConfig
“ExactIn/ExactOut” 的拆分镜像了 CPMM 的 SwapBaseInput / SwapBaseOutput —— 在链上它们是单独的指令判别器,舍入方式略有不同。 毕业路径选择。 migrate_typeInitialize{V2,WithToken2022} 时记录在 PoolState 上,决定了两个毕业指令中的哪一个可以运行。Token-2022 启动总是迁移到 CPMM。SPL Token 启动根据 amm_creator_fee_on 设置迁移到 AMM v4 或 CPMM:
  • BothTokenMigrateToAmm → AMM v4 池(创建者费可以从任一侧收取;AMM v4 没有原生创建者费字段,所以创建者费通过 LP 锁定 NFT 机制而被取走)。
  • QuoteTokenMigrateToCpswap → 具有 creator_fee_on = OnlyQuoteToken 的 CPMM 池(创建者通过 LaunchLab Fee Key NFT 继续从 CPMM 池赚取费用 —— 见 products/launchlab/creator-fees)。
关于 AmmCreatorFeeOn 枚举名的说明。 Rust 源代码称此枚举为 AmmCreatorFeeOn,变体为 QuoteTokenBothToken。该名称具有误导性:在当前的操作实践中,变体不仅控制创建者费从毕业后 CPMM 池的哪一侧收取 —— 它还选择毕业目标程序(AMM v4 与 CPMM),并与启动的 PoolState 上的 migrate_type 配对。将该字段视为”迁移目标 + 毕业后创建者费侧”合二为一。链上的枚举名尚未重构,但将其视为 MigrationTarget 更接近现实。

Initialize

创建新启动。 参数
launch_params: {
    curve_type:                 u8,
    base_supply_max:            u64,
    base_supply_graduation:     u64,
    k:                          u128,              // 或 curve_type=1 的 initial_virtual_quote_reserve
    open_time:                  u64,
    quote_mint:                 Pubkey,
    base_token_metadata: {                         // 内联 name/symbol/uri;程序 CPI 到 Metaplex
        name:   String,
        symbol: String,
        uri:    String,
    },
    fees: {
        buy_numerator:   u64,
        buy_denominator: u64,
        sell_numerator:  u64,
        sell_denominator: u64,
        lp_share:        u64,
        creator_share:   u64,
        protocol_share:  u64,
        total_share:     u64,
    },
    post_graduation_lp_policy:  u8,                // 0 = Burn, 1 = Lock, 2 = ToCreator
}
账户(简化)
#名称WS说明
1creatorWS支付租金 + base mint 创建。
2launch_config协议配置绑定。
3launch_stateW新账户。
4launch_authorityPDA。
5base_mintWS全新 Keypair(或 PDA)—— 此指令初始化它。
6base_vaultWlaunch_authoritybase_mint 上的 ATA。
7quote_mint
8quote_vaultWlaunch_authorityquote_mint 上的 ATA。
9metadataWMetaplex 元数据 PDA。
10metaplex_program
11token_program仅 SPL Token。
12system_program
13rent
前置条件
  • 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_mint 具有 supply = 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 参数
quote_in:          u64
minimum_base_out:  u64
账户
#名称WS
1userWS
2launch_stateW
3launch_authority
4base_vaultW
5quote_vaultW
6user_base_ataW
7user_quote_ataW
8base_mint
9quote_mint
10token_program
11associated_token_program
12system_program
前置条件
  • launch_state.status == Active
  • now ≥ open_time
  • user_quote_ata.balance ≥ quote_in
  • quote_in > 0
效果
  1. quote_in 拆分为 quote_in_after_fee 和费用部分。
  2. Newton 求解给定后费报价的 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 指令。程序不会在 Buy 内自动毕业 —— 需要后续的 Graduate

BuyExactOut

用户指定精准的 base_out;程序计算 quote_in 参数
base_out:      u64
maximum_quote_in: u64
BuyExactIn 相同的账户。使用闭式二次积分(或 curve_type 1 的 CPMM 反函数)而不是 Newton 迭代。

Sell / SellExactIn / SellExactOut

Buy 的镜像。用户向曲线返回 base_in 并接收 quote_out。费用从 quote_out 中扣除,所以用户收到的少于原始积分收益。 前置条件 ——
  • user_base_ata.balance ≥ base_in
  • 销售不能将 base_sold 推到 0 以下(由于会计一致性与上述冗余)。
  • 启动为 Active
效果 —— 与 Buy 对称。base_sold 减少,quote_reserve_real 减少。费用仍然累积。

MigrateToAmm / MigrateToCpswap

曲线达到 total_quote_fund_raising 后,将启动毕业到可交易的 AMM 池。这两个指令对应两个毕业目标 —— AMM v4 和 CPMM —— 并且对于任何给定的启动,只有其中一个有效,由 pool_state.migrate_type 决定(在 Initialize 时设置)。 谁签名
  • MigrateToAmm —— 绑定 GlobalConfig 上记录的 migrate_to_amm_wallet
  • MigrateToCpswap —— 绑定 GlobalConfig 上记录的 migrate_to_cpswap_wallet
这些钱包通常由 Raydium 运营的毕业 crank 持有;实际上毕业在阈值被超越后几秒内登陆,无论谁触发了最终买入。 参数 MigrateToAmm 采用三个(主要是 OpenBook 市场参数,程序转发给 AMM v4):
base_lot_size:               u64
quote_lot_size:              u64
market_vault_signer_nonce:   u8
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. 根据绑定的 PlatformConfig.{platform_scale, creator_scale, burn_scale}(仅 CPMM)拆分生成的 LP —— 一片铸造到 platform_nft_wallet,一片到由 LP-Lock 程序包装的创建者 NFT,一片通过 Burn & Earn 烧掉。对于 AMM v4 毕业,LP 处理由 AMM v4 自己的初始化参数控制。
  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

CollectFee

管理员收取单个启动上累积的协议交易费用。 参数 —— 无。 账户
#名称WS说明
1protocol_fee_ownerS必须等于 global_config.protocol_fee_owner
2authorityPDA [b"vault_auth_seed"];签署金库转账。
3pool_stateW突变为零 quote_protocol_fee
4global_config签名者的真实来源。
5quote_vaultWquote_protocol_fee 排空。
6recipient_token_accountWprotocol_fee_ownerquote_mint 上的 ATA。
7quote_mint
8token_programSPL Token(报价 mint 始终是 SPL Token)。
效果 —— 将 pool_state.quote_protocol_feequote_vault 转账到 recipient_token_account,然后将计数器置零。可在第一次买入后的任何时间调用。

CollectMigrateFee

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

ClaimCreatorFee

按创建者对使用相同报价 mint 的创建者拥有的每个启动累积的创建者费进行扫款。排空按创建者的费用金库,而非按池的费用金库。 参数 —— 无。 账户
#名称WS说明
1creatorWS池创建者。
2fee_vault_authorityPDA [b"creator_fee_vault_auth_seed"]
3creator_fee_vaultWPDA,种子为 [creator, quote_mint];聚合创建者金库。
4recipient_token_accountWinit_if_neededcreatorquote_mint 上的 ATA。
5quote_mint
6token_program
7system_program用于需要时的 ATA 创建。
8associated_token_program
效果 —— 将 creator_fee_vault 的整个余额转账到 recipient_token_account。如果金库为空,会回退并返回大于零检查的 require。

ClaimPlatformFee

按平台的扫款,直接排空启动的报价金库。当平台想要为一个特定启动声明其份额而不通过聚合平台金库时使用。 参数 —— 无。 账户
#名称WS说明
1platform_fee_walletWS必须等于 platform_config.platform_fee_wallet
2authorityPDA [b"vault_auth_seed"]
3pool_stateWpool_state.platform_fee 排空。
4platform_config签名者的真实来源。
5quote_vaultW被排空。
6recipient_token_accountWinit_if_neededplatform_fee_wallet 的 ATA。
7quote_mint
8token_program
9system_program
10associated_token_program
效果 —— 将 pool_state.platform_feequote_vault 转账到 recipient_token_account,将计数器置零。

ClaimPlatformFeeFromVault

按平台的聚合扫款。排空平台的按报价 mint 的费用金库,累积来自通过平台路由的每个启动的费用。 参数 —— 无。 账户
#名称WS说明
1platform_fee_walletWS必须等于 platform_config.platform_fee_wallet
2fee_vault_authorityPDA [b"platform_fee_vault_auth_seed"]
3platform_config
4platform_fee_vaultWPDA,种子为 [platform_config, quote_mint]
5recipient_token_accountWinit_if_neededplatform_fee_wallet 的 ATA。
6quote_mint
7token_program
8system_program
9associated_token_program
效果 —— 将 platform_fee_vault 的全部余额转账到 recipient_token_account。如果金库为空,则回退。

归属和平台配置指令

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

状态变化矩阵

指令statusreal_basereal_quote费用计数器毕业后池
Initialize{V2,WithToken2022}Funding000
BuyExactIn(q_in)Funding+∆+∆q_after_feequote_protocol_fee += ∆platform_fee += ∆
SellExactIn(b_in)Funding−∆−∆q_before_fee(相同)
阈值达到→ Migrate
MigrateToAmm / MigrateToCpswap→ Migrated(冻结)(冻结)migrate_fee 设置已创建,LP 按 PlatformConfig 拆分
CollectFee / CollectMigrateFee任何计数器置零
ClaimCreatorFee / ClaimPlatformFee*任何排空金库
CreateVestingAccountFunding碰撞 allocated_share_amount
ClaimVestedTokenMigrated排空 base_vault

后续步骤

来源: