本頁內容由 AI 自動翻譯,所有內容以英文版本為準。查看英文版 →
LaunchLab 提供一套精簡的指令集:六個面向使用者的呼叫加上少數管理員原語。SDK 包裝了所有指令;本頁面為聚合器、監控工具及需要 CPI 的程式記錄原始介面。
指令清單
「ExactIn/ExactOut」分割鏡像 CPMM 的
SwapBaseInput / SwapBaseOutput — 在鏈上它們是具有略微不同舍入的獨立指令判別器。
畢業路徑選擇。 每個新的 Initialize、InitializeV2 及 InitializeWithToken2022 呼叫必須設定 migrate_type = 1(CPSWAP)。任何嘗試初始化新的 AMM v4 綁定資金池都會返回 MigrateTypeNotMatch。amm_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_mint有supply = base_supply_max,全部在base_vault中。base_mint.mint_authority = launch_authority,freeze_authority = None。LaunchState初始化為status = Active、base_sold = 0、quote_reserve_real = 0。quote_reserve_target從曲線參數 +base_supply_graduation+buy_numerator計算(約略)。
InvalidQuoteMint、FeeRateTooHigh、InvalidCurveParams、MathOverflow。
Buy(標準變體:BuyExactIn)
使用者提供固定 quote_in;曲線計算 base_out。
參數
前置條件
launch_state.status == Active。now ≥ open_time。user_quote_ata.balance ≥ quote_in。quote_in > 0。
- 將
quote_in分割為quote_in_after_fee及費用部分。 - 牛頓法求解曲線,給定扣費後報價的
base_out。 require(base_out ≥ minimum_base_out)否則回復ExceededSlippage。- 移動
quote_in使用者 → 金庫。移動base_out金庫 → 使用者。 - 更新
base_sold += base_out、quote_reserve_real += quote_in_after_fee × (lp_share / total_share)。 - 更新費用計數器(
protocol_fees_quote、creator_fees_quote)。 state_data.num_buys += 1。- 如果更新後
quote_reserve_real ≥ quote_reserve_target,SDK 通常在同一交易中鏈接Graduate指令。程式不在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。
Buy。base_sold 減少,quote_reserve_real 減少。費用仍累積。
MigrateToAmm / MigrateToCpswap
一旦曲線達到 total_quote_fund_raising,將啟動畢業至可交易資金池。新啟動為 CPMM 專用。MigrateToAmm 為存儲 migrate_type 為 0 的現有資金池保留。
誰簽署
MigrateToAmm— 綁定GlobalConfig上記錄的migrate_to_amm_wallet。MigrateToCpswap— 綁定GlobalConfig上記錄的migrate_to_cpswap_wallet。
MigrateToAmm 接受三個(主要是程式轉發至 AMM v4 的 OpenBook 市場參數):
MigrateToCpswap 不接受任何參數。
效果(兩者共同)
- 驗證
pool_state.status == Migrate(即quote_reserve_target已達到)。否則以PoolMigrated(狀態已為Migrated)或PoolFunding(仍在籌資)回復。 - 驗證
pool_state.migrate_type匹配指令(AMM 為0,CPMM 為1)。否則以MigrateTypeNotMatch回復。 - 計算畢業後準備金:
base_amount_out = base_vault.amount − vesting_schedule.total_locked_amountquote_amount_out = quote_vault.amount − quote_protocol_fee − migrate_fee − platform_fee
- CPI 至目標程式(
AMM v4 Initialize2或CPMM InitializeWithPermission)使用這些準備金建立畢業後資金池。 - 對於 2026-08-17 升級後執行的 CPMM 遷移,將
platform_scale + creator_scale合併為一個平台擁有的鎖定 LP 份額,並最多向platform_nft_wallet鑄造一個費用金鑰 NFT。燒毀burn_scale餘額。升級前,creator_scale單獨鎖定,其費用金鑰轉至代幣建立者。已完成的歷史遷移不被修改。對於舊版 AMM v4 畢業,LP 配置遵循該指令的現有流程。 - 撤銷
base_mint.mint_authority(設為None)。 - 翻轉
pool_state.status = Migrated,設定vesting_schedule.start_time = block_time + cliff_period。
BuyExactIn、BuyExactOut、SellExactIn、SellExactOut 從此點起將以 PoolMigrated 拒絕。結果 AMM 資金池是標準的,交易如同任何其他 AMM v4 / CPMM 資金池。
常見錯誤 — PoolFunding、PoolMigrated、MigrateTypeNotMatch、InvalidCpSwapConfig、MathOverflow。
CPMM 遷移剩餘帳戶
建立MigrateToCpswap 的客戶端必須使用這些固定 remaining_accounts 索引:
升級路徑上的指令至少需要十個剩餘帳戶。支援鑄幣帳戶為唯讀 CPI 輸入。即使鑄幣沒有初始化的支援記錄,也要衍生兩個地址。仍然附加建立者鎖定帳戶或省略索引 8–9 的舊版建立者必須更新。
平台 GlobalConfig 允許清單
PlatformConfig.restrict_global_config 控制檢查:
0:平台接受任何其他有效的GlobalConfig;不需要允許帳戶。1:Initialize、InitializeV2及InitializeWithToken2022必須在remaining_accounts中的任何位置包含匹配的PlatformAllowConfig。
CreatePlatformAllowConfig 及 ClosePlatformAllowConfig 建立或關閉 PDA。其種子為 [b"platform_allow_config", platform_config, global_config]。前管理員管理的 PlatformGlobalAccess 指令及 PDA 已停用。
CollectFee
管理員清掃單個啟動上協議累積交易費用。
參數 — 無。
帳戶
效果 — 從
quote_vault 轉帳 pool_state.quote_protocol_fee 至 recipient_token_account,然後將計數器歸零。可在第一次買入後任何時間呼叫。
CollectMigrateFee
管理員清掃畢業時累積的遷移費用。與 CollectFee 相同的帳戶形狀,但以 migrate_fee_owner 作為簽署者(而非 protocol_fee_owner)及 pool_state.migrate_fee 作為清空計數器。
ClaimCreatorFee
每個建立者清掃跨越建立者擁有的每個啟動使用相同報價鑄幣的累積建立者費用。清空每個建立者費用金庫,而非每個資金池的。
參數 — 無。
帳戶
效果 — 轉帳
creator_fee_vault 的全部餘額至 recipient_token_account。如果金庫為空,以大於零檢查回復。
ClaimPlatformFee
每個平台清掃直接清空啟動報價金庫。當平台想為一個特定啟動領取其份額而不經過聚合平台金庫時使用。
參數 — 無。
帳戶
效果 — 從
quote_vault 轉帳 pool_state.platform_fee 至 recipient_token_account,將計數器歸零。
ClaimPlatformFeeFromVault
每個平台聚合清掃。清空平台的每個報價鑄幣費用金庫,該金庫累積來自經平台路由的每個啟動的費用。
參數 — 無。
帳戶
效果 — 轉帳
platform_fee_vault 的全部餘額至 recipient_token_account。如果金庫為空則回復。
鎖定及平台設定指令
這些在專用頁面上記錄,因為每個都有自己的狀態模型:CreateVestingAccount、CreatePlatformVestingAccount、ClaimVestedTokenCreatePlatformConfig、UpdatePlatformConfig、UpdatePlatformCurveParam、RemovePlatformCurveParam、CreatePlatformAllowConfig、ClosePlatformAllowConfigCreateConfig、UpdateConfig
狀態變更矩陣
後續步驟
products/launchlab/code-demos— 每個指令的 TypeScript 範例。products/launchlab/accounts— 完整狀態形狀。reference/error-codes— LaunchLab 錯誤列舉。
- Raydium SDK v2
LaunchLab模組 - Raydium LaunchLab 程式原始碼

