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 指令。程式不在 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

管理員清掃單個啟動上協議累積交易費用。 參數 — 無。 帳戶 效果 — 從 quote_vault 轉帳 pool_state.quote_protocol_feerecipient_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_feerecipient_token_account,將計數器歸零。

ClaimPlatformFeeFromVault

每個平台聚合清掃。清空平台的每個報價鑄幣費用金庫,該金庫累積來自經平台路由的每個啟動的費用。 參數 — 無。 帳戶 效果 — 轉帳 platform_fee_vault 的全部餘額至 recipient_token_account。如果金庫為空則回復。

鎖定及平台設定指令

這些在專用頁面上記錄,因為每個都有自己的狀態模型:

狀態變更矩陣

後續步驟

來源: