Skip to main content
本頁內容由 AI 自動翻譯,所有內容以英文版本為準。查看英文版 →
LaunchLab 公開了一套精簡的指令集:六個用戶面向的呼叫加上少數管理員原語。SDK 包裝了所有這些;本頁面為聚合器、監測工具和需要 CPI 的程式文檔化了原始接口。

指令清單

「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

建立新的啟動。 參數
帳戶(簡化版) 前置條件
  • 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. 對曲線進行 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 ix。程式不會在 Buy 內自動畢業 — 需要後續的 Graduate

BuyExactOut

用戶指定確切的 base_out;程式計算 quote_in 參數
BuyExactIn 相同的帳戶。使用閉式二次積分(或 CPMM 逆運算,適用於 curve_type 1)而非 Newton 迭代。

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 就畢業成可交易的 AMM 池。兩個指令對應於兩個畢業目標 — AMM v4 和 CPMM — 並且對於任何給定的啟動,其中只有一個有效,由 pool_state.migrate_type 決定(在 Initialize 時設定)。 誰簽署
  • MigrateToAmm — 記錄在繫結 GlobalConfig 上的 migrate_to_amm_wallet
  • MigrateToCpswap — 記錄在繫結 GlobalConfig 上的 migrate_to_cpswap_wallet
這些錢包通常由 Raydium 營運的畢業人工控制持有;實踐中畢業在閾值被超越後的秒內進行,不論誰觸發了最後的買入。 參數 MigrateToAmm 需要三個(主要是 OpenBook 市場參數,程式轉發到 AMM v4):
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

管理員對單一啟動上應計交易費用的掃除。 參數 — 無。 帳戶 效果 — 從 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。如果金庫為空則復原。

解鎖和平台設定指令

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

狀態變化矩陣

接下來去哪裡

來源: