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.
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_type 在 Initialize{V2,WithToken2022} 時記錄在 PoolState 上,決定了兩個畢業指令中的哪一個可以執行。Token-2022 啟動始終遷移到 CPMM。SPL Token 啟動根據 amm_creator_fee_on 設定遷移到 AMM v4 或 CPMM:
BothToken → MigrateToAmm → AMM v4 池(創建者費用可以從任一側收取;AMM v4 沒有原生創建者費用欄位,所以創建者費用改由 LP 鎖定 NFT 機制取得)。
QuoteToken → MigrateToCpswap → 具有 creator_fee_on = OnlyQuoteToken 的 CPMM 池(創建者繼續通過 LaunchLab Fee Key NFT 從 CPMM 池賺取費用 — 見 products/launchlab/creator-fees)。
關於 AmmCreatorFeeOn 枚舉名稱的注意。 Rust 原始碼將此枚舉稱為 AmmCreatorFeeOn,變體為 QuoteToken 和 BothToken。名稱具有誤導性:在目前的運營實踐中,變體不僅控制創建者費用在畢業後 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 時
open_time: u64,
quote_mint: Pubkey,
base_token_metadata: { // 內聯名稱/符號/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
}
帳戶(簡化版)
| # | 名稱 | W | S | 註記 |
|---|
| 1 | creator | W | S | 支付租金 + 基礎鑄幣廠建立。 |
| 2 | launch_config | | | 協議配置繫結。 |
| 3 | launch_state | W | | 新帳戶。 |
| 4 | launch_authority | | | PDA。 |
| 5 | base_mint | W | S | 新的 Keypair(或 PDA)— 此指令初始化它。 |
| 6 | base_vault | W | | launch_authority 在 base_mint 上的 ATA。 |
| 7 | quote_mint | | | |
| 8 | quote_vault | W | | launch_authority 在 quote_mint 上的 ATA。 |
| 9 | metadata | W | | Metaplex 元資料 PDA。 |
| 10 | metaplex_program | | | |
| 11 | token_program | | | 僅限 SPL Token。 |
| 12 | system_program | | | |
| 13 | rent | | | |
前置條件
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。
參數
quote_in: u64
minimum_base_out: u64
帳戶
| # | 名稱 | W | S |
|---|
| 1 | user | W | S |
| 2 | launch_state | W | |
| 3 | launch_authority | | |
| 4 | base_vault | W | |
| 5 | quote_vault | W | |
| 6 | user_base_ata | W | |
| 7 | user_quote_ata | W | |
| 8 | base_mint | | |
| 9 | quote_mint | | |
| 10 | token_program | | |
| 11 | associated_token_program | | |
| 12 | system_program | | |
前置條件
launch_state.status == Active。
now ≥ open_time。
user_quote_ata.balance ≥ quote_in。
quote_in > 0。
效果
- 將
quote_in 分割為 quote_in_after_fee 和費用部分。
- 對曲線進行 Newton 求解,給定收費後的報價找到
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 ix。程式不會在 Buy 內自動畢業 — 需要後續的 Graduate。
BuyExactOut
用戶指定確切的 base_out;程式計算 quote_in。
參數
base_out: u64
maximum_quote_in: u64
與 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。
效果 — 對稱於 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 營運的畢業人工控制持有;實踐中畢業在閾值被超越後的秒內進行,不論誰觸發了最後的買入。
參數
MigrateToAmm 需要三個(主要是 OpenBook 市場參數,程式轉發到 AMM v4):
base_lot_size: u64
quote_lot_size: u64
market_vault_signer_nonce: u8
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_amount
quote_amount_out = quote_vault.amount − quote_protocol_fee − migrate_fee − platform_fee
- CPI 進入目標程式(
AMM v4 Initialize2 或 CPMM InitializeWithPermission)使用那些儲備來建立畢業後的池。
- 根據繫結的
PlatformConfig.{platform_scale, creator_scale, burn_scale}(僅限 CPMM)分割結果 LP — 一部分鑄幣給 platform_nft_wallet,一部分給由 LP-Lock 程式包裝的創建者 NFT,一部分通過 Burn & Earn 燒毀。對於 AMM v4 畢業,LP 處置由 AMM v4 自己的初始化參數控制。
- 撤銷
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。
CollectFee
管理員對單一啟動上應計交易費用的掃除。
參數 — 無。
帳戶
| # | 名稱 | W | S | 註記 |
|---|
| 1 | protocol_fee_owner | | S | 必須等於 global_config.protocol_fee_owner。 |
| 2 | authority | | | PDA [b"vault_auth_seed"];簽署金庫轉帳。 |
| 3 | pool_state | W | | 變動以零出 quote_protocol_fee。 |
| 4 | global_config | | | 簽署者的真實來源。 |
| 5 | quote_vault | W | | 由 quote_protocol_fee 抽乾。 |
| 6 | recipient_token_account | W | | protocol_fee_owner 在 quote_mint 上的 ATA。 |
| 7 | quote_mint | | | |
| 8 | token_program | | | SPL Token(報價鑄幣廠始終是 SPL Token)。 |
效果 — 從 quote_vault 轉帳 pool_state.quote_protocol_fee 到 recipient_token_account,然後將計數器置零。可在首次買入後的任何時間調用。
CollectMigrateFee
管理員對畢業時應計的遷移費用的掃除。帳戶形狀與 CollectFee 相同,但使用 migrate_fee_owner 作為簽署者(而非 protocol_fee_owner)和 pool_state.migrate_fee 作為抽乾的計數器。
ClaimCreatorFee
每個創建者對創建者擁有的每個使用相同報價鑄幣廠的啟動上應計創建者費用的掃除。抽乾每個創建者的費用金庫,而非每個池的費用金庫。
參數 — 無。
帳戶
| # | 名稱 | W | S | 註記 |
|---|
| 1 | creator | W | S | 池創建者。 |
| 2 | fee_vault_authority | | | PDA [b"creator_fee_vault_auth_seed"]。 |
| 3 | creator_fee_vault | W | | PDA,種子為 [creator, quote_mint];聚合創建者金庫。 |
| 4 | recipient_token_account | W | | init_if_needed;creator 在 quote_mint 上的 ATA。 |
| 5 | quote_mint | | | |
| 6 | token_program | | | |
| 7 | system_program | | | 若需要用於 ATA 建立。 |
| 8 | associated_token_program | | | |
效果 — 轉帳 creator_fee_vault 的全部餘額到 recipient_token_account。如果金庫為空,以大於零檢查復原。
每個平台的掃除,直接抽乾啟動的報價金庫。在平台想為一個特定啟動索取其份額而不通過聚合平台金庫時使用。
參數 — 無。
帳戶
| # | 名稱 | W | S | 註記 |
|---|
| 1 | platform_fee_wallet | W | S | 必須等於 platform_config.platform_fee_wallet。 |
| 2 | authority | | | PDA [b"vault_auth_seed"]。 |
| 3 | pool_state | W | | 由 pool_state.platform_fee 抽乾。 |
| 4 | platform_config | | | 簽署者的真實來源。 |
| 5 | quote_vault | W | | 抽乾。 |
| 6 | recipient_token_account | W | | init_if_needed;platform_fee_wallet 的 ATA。 |
| 7 | quote_mint | | | |
| 8 | token_program | | | |
| 9 | system_program | | | |
| 10 | associated_token_program | | | |
效果 — 從 quote_vault 轉帳 pool_state.platform_fee 到 recipient_token_account,將計數器置零。
每個平台的聚合掃除。抽乾平台的每個報價鑄幣廠費用金庫,該金庫從每個通過平台路由的啟動累積費用。
參數 — 無。
帳戶
| # | 名稱 | W | S | 註記 |
|---|
| 1 | platform_fee_wallet | W | S | 必須等於 platform_config.platform_fee_wallet。 |
| 2 | fee_vault_authority | | | PDA [b"platform_fee_vault_auth_seed"]。 |
| 3 | platform_config | | | |
| 4 | platform_fee_vault | W | | PDA,種子為 [platform_config, quote_mint]。 |
| 5 | recipient_token_account | W | | init_if_needed;platform_fee_wallet 的 ATA。 |
| 6 | quote_mint | | | |
| 7 | token_program | | | |
| 8 | system_program | | | |
| 9 | associated_token_program | | | |
效果 — 轉帳 platform_fee_vault 的全部餘額到 recipient_token_account。如果金庫為空則復原。
解鎖和平台設定指令
這些記錄在專門的頁面上,因為每個都有其自己的狀態模型:
狀態變化矩陣
| 指令 | status | real_base | real_quote | 費用計數器 | 畢業後池 |
|---|
Initialize{V2,WithToken2022} | Funding | 0 | 0 | 0 | — |
BuyExactIn(q_in) | Funding | +∆ | +∆q_after_fee | quote_protocol_fee += ∆、platform_fee += ∆ | — |
SellExactIn(b_in) | Funding | −∆ | −∆q_before_fee | (相同) | — |
| 達到閾值 | → Migrate | — | — | — | — |
MigrateToAmm / MigrateToCpswap | → Migrated | (凍結) | (凍結) | migrate_fee 設定 | 建立,LP 根據 PlatformConfig 分割 |
CollectFee / CollectMigrateFee | 任何 | — | — | 計數器置零 | — |
ClaimCreatorFee / ClaimPlatformFee* | 任何 | — | — | 抽乾金庫 | — |
CreateVestingAccount | Funding | — | — | — | 碰撞 allocated_share_amount |
ClaimVestedToken | Migrated | — | — | — | 抽乾 base_vault |
接下來去哪裡
來源: