Skip to main content
このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
LaunchLab は厳選された命令セットを公開しています:6 つのユーザー向けコール、および複数の管理プリミティブです。SDK はすべてをラップしていますが、このページは集約者、監視ツール、および CPI が必要なプログラム向けの生のサーフェスをドキュメント化しています。2026-09 プログラムアップグレードは LaunchLab を Anchor 1.0.2 / Solana 3.1.10 上に再構築し、3 つの遷移メカニズムをクリアしました:非推奨の Initialize は常に失敗するようになり、MigrateToAmm は 3 つの引数とすべての OpenBook アカウントを失い、複数のチェックをクロックに条件付けていた get_upgrade_timestamp ゲートは削除されました。また、1 つの管理命令 CollectExcessLamports が追加されました。2026-09-09 チェンジログエントリを参照してください。

命令インベントリ

「ExactIn/ExactOut」の分割は CPMM の SwapBaseInput / SwapBaseOutput をミラーします — オンチェーンでは、わずかに異なるラウンディングを持つ別の命令ディスクリミネータです。 卒業パス選択。 すべての新しい InitializeV2 と InitializeWithToken2022 コールは migrate_type = 1(CPSWAP)を設定する必要があります。新しい AMM v4 バウンドプールを初期化しようとする試みは MigrateTypeNotMatch を返します。amm_creator_fee_on は、結果の CPMM 作成者手数料がクォートトークンに適用されるか両方のトークンに適用されるかのみを選択します。ターゲットプログラムを選択しません。レガシー Initialize はもはやローンチを作成できません(下記を参照)。 MigrateToAmm は、この制限の前に migrate_type = 0 で初期化された既存の PoolState に対して呼び出し可能なままです。リリースは既存のプール状態を書き直したり、レガシー命令を削除したりしません。 クォート側トークンプログラム。 クォートミントは SPL Token プログラムまたは Token-2022 のいずれかが所有できます。それに触れるすべての命令 — CreateConfig、InitializeV2、InitializeWithToken2022、4 つのトレード命令すべて、CollectFee、CollectMigrateFee、ClaimCreatorFee、ClaimPlatformFee、および ClaimPlatformFeeFromVault — は、そのクォートプログラムアカウントスロットで所有プログラムを取ります。アカウント位置は変わりませんでした。受け入れられた値のみが変わりました。実際に GlobalConfig.quote_mint を所有するプログラムを渡してください。これは既存のローンチの場合 PoolState.token_program_flag bit1 から読み取ることができます(accountsを参照)、またはそれ以外の場合はミントアカウントの所有者から読み取ることができます。 非推奨の Initialize はここでは無関係です:そのクォートプログラムアカウントは依然として SPL Token に型付けされており、2026-09 アップグレード以降、命令はアカウントを読み取る前に失敗します。InitializeV2 または InitializeWithToken2022 を通じてローンチしてください。 MigrateToCpswap はもう一つの例外で、反対方向です — ミントごとに 1 つではなく、両方のプログラムを無条件に取ります。下記のマイグレーションアカウントを参照してください。

Initialize

2026-09 アップグレード以降は実質的に廃止されました — このインストラクションは常に失敗します。 initialize のハンドラーは Not supported. Please use initialize_v2 instruction というログと NotApproved(6000)を出力するだけになりました。ディスクリミネーターを占有し続けて IDL の形状を安定させるためだけに保持されています。(Accounts 構造体は変わらないため、Anchor の生成検証は最初に実行されます。トランザクションは常に失敗します。)以前は、クロック値でゲートされていました。get_upgrade_timestamp のカットオーバーから 3 日後まで機能し、その後は失敗していました。そのタイムスタンプ ヘルパーは削除されたため、失敗は無条件になりました。既存のローンチはこれを通じて作成されたものでも、migrate_type に応じて MigrateToAmm または MigrateToCpswap を通じて正常に取引・卒業します。以下の引数とアカウント リストは InitializeV2 のものです。廃止された Initialize は同じ順序で同じ 18 個のアカウントと最初の 3 つの引数のみを取ります — amm_fee_on はありません — また、その quote_token_program スロットは Interface<TokenInterface> ではなく SPL Token として型付けされています。
新しいローンチを作成します。InitializeV2 は廃止された Initialize に対して amm_fee_on 引数のみを追加します。アカウント数と順序は同じで、唯一のアカウント レベルの違いは quote_token_program が Interface<TokenInterface> として型付けされているため、Token-2022 クォート ミントが受け入れられることです。 引数 1 つの構造体ではなく、4 つの位置引数。(InitializeWithToken2022 は 5 番目の transfer_fee_extension_param: Option<TransferFeeExtensionParams> を追加します。廃止された Initialize は amm_fee_on を削除します。)
バリアントは global_config.curve_type と一致する必要があります。一致しない場合、インストラクションは InputNotMatchCurveConfig(6003)で失敗します。open_time はなく、quote_mint 引数もありません(global_config から取得)。fees 構造体や post_graduation_lp_policy もありません — LP 処分は PlatformConfig で設定され、ローンチごとではありません。 アカウント — 合計 18 個(宣言された 16 個に加えて #[event_cpi] が追加する 2 個) 前提条件
  • 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 = curve_param.supply を持ち、すべて base_vault に存在。
  • ミント権限はこのインストラクション内で失効します(set_authority(MintTokens, None))。供給がミントされた直後 — 卒業時ではなく。したがって、ベース ミントは永続的に固定供給であり、後続のインストラクションでさらにミントすることはできません。
  • PoolState は status = Fund(0)、real_a = 0、real_b = 0 で初期化。
  • total_fund_raising_b は curve_param.total_quote_fund_raising から直接取得。
  • TransferFeeConfig が付属する InitializeWithToken2022 の場合:transfer_fee_config_authority = launch_authority、withdraw_withheld_authority = PlatformConfig.transfer_fee_extension_auth(そのフィールドが設定されている場合)、それ以外は launch_authority。引き出し側はミント作成時に書き込まれるため、プラットフォームは卒業前に源泉徴収フィーをスイープできます。platform-config を参照。
一般的なエラー — NotApproved(6000、廃止された Initialize の場合は無条件)、InvalidInput(6002、GlobalConfig からの供給/レート/ファンドレイジング フロアが違反)、InputNotMatchCurveConfig(6003、curve_param バリアントが global_config.curve_type と一致しない)、MigrateTypeNotMatch(6007、migrate_type != 1)、MathOverflow(6008)、VestingRatioTooHigh(6010)、NoSupportExtension(6017)、NotEnoughRemainingAccounts(6018)、InvalidPlatformAllowConfig(6022)、CurveParamNotMatchPlatformRule(6025)。失敗した Anchor address = / constraint = チェックは、これらのいずれかではなく 2xxx コードとして表示されます — InvalidQuoteMint、FeeRateTooHigh、InvalidCurveParams はプログラムのエラー列挙型に存在しません。

Buy(正規バリアント:BuyExactIn)

ユーザーが固定入力額を提供します。カーブが出力を計算します。 引数
4 つのトレード インストラクションすべてが3 つの引数を取ります。2 つだけです。2 つの金額のみで構築されたインストラクションは 8 バイト短く、逆シリアル化に失敗します。
アカウント 残りのアカウント — フィー配管。この正確な順序で読み込まれます:
  1. share_fee_receiver — share_fee_rate > 0 の場合のみ。
  2. system_program — 常に。== System::id() をチェック。そうでない場合は InvalidInput。
  3. platform_fee_vault — PDA [platform_config, quote_token_mint]。初回使用時に作成。
  4. creator_fee_vault — PDA [creator, quote_token_mint]。初回使用時に作成。
不足している場合は NotEnoughRemainingAccounts(6018)を返します。associated_token_program スロットはなく、system_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_out、quote_reserve_real += quote_in_after_fee × (lp_share / total_share) を更新。
  6. フィー カウンター(protocol_fees_quote、creator_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 と同じアカウントと同じ残りアカウント契約。Newton 反復ではなく、閉形式の二次積分(または CPMM 逆関数、curve_type 1 の場合)を使用します。

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 が減少します。フィーは引き続き発生します。

クォート側の転送フィー

クォート・ミントが TransferFeeConfig を持つ場合、ヴォルトが移動する額と支払者が請求または貸方に記入される額が異なり、スリッページ境界は支払者側に対してチェックされます。拡張機能のないクォート・ミントでは、以下のすべてのケースは通常のレガシー・ミントと同じです。 クォーティングの 2 つの結果:
  • ミントがフィーなしであるかのように計算された境界は拒否されます。フィーなしのコストを maximum_amount_in として、またはフィーなしの収益を minimum_amount_out として渡すと、ExceededSlippage で戻ります。
  • real_quote はヴォルトに到達した額だけ進みます。5% クォート・ミント上の amount_in の BuyExactIn は amount_in × 0.95 だけ real_quote を移動させます。
100% フィーのクォート・ミント(10000 ベーシス・ポイント)は反転できず、正確な出力パスで CalculateOverflow で戻ります。 両方のトレード側ミントも、マッチングスロットで渡されたプログラムに制限されるため、一致しない base_token_program は無視されるのではなく失敗するようになりました。基礎となるフィー計算については、algorithms/token-2022-transfer-fees を参照してください。

トレード残りアカウント

4 つのトレード・インストラクションはすべて、remaining_accounts を通じてフィー配管を取得し、この順序で行われます:
2026-09 で変更:最後の 3 つは無条件になり、system_program が検証されるようになりました。 このリリース前は、プログラムは unix_timestamp >= get_upgrade_timestamp() の場合にのみこれらを読み取り、その時点の前にプラットフォーム/クリエイター・フィー分割をスキップしていました。タイムスタンプは遠い過去なので、メインネット上の動作は実際には変わっていません — しかしブランチはコードから削除され、3 つのアカウントをまだ省略するビルダーは、カットオーバー後のみではなく常に NotEnoughRemainingAccounts (6018) で失敗するようになりました。system_program スロットは追加で System::id() に対してチェックされ、他のものが含まれている場合は InvalidInput (6002) を返します。以前は任意のアカウントがその位置で受け入れられていました。

MigrateToAmm / MigrateToCpswap

カーブが total_quote_fund_raising に到達した後、ローンチを取引可能なプールに昇格させます。新しいローンチは CPMM のみです。MigrateToAmm は、保存された migrate_type が 0 である既存プール用に保持されています。 署名者
  • MigrateToAmm — バインディング GlobalConfig に記録された migrate_to_amm_wallet。
  • MigrateToCpswap — バインディング GlobalConfig に記録された migrate_to_cpswap_wallet。
これらのウォレットは通常、Raydium が運用する昇格クランクによって保持されます。実際には、最終的な購入をトリガーした人に関わらず、閾値を超えた数秒後に昇格が実行されます。 引数 どちらも引数を取りません。
破壊的変更(マイグレーションウォレットのみ、2026-09)。 MigrateToAmm は 3 つの引数 — base_lot_size、quote_lot_size、market_vault_signer_nonce — および 9 つのアカウントをすべて削除しました。命令データは現在、単なるディスクリミネータのみなので、古いビルダーは 17 バイトの予期しない引数バイトを送信し、もはや一致しないアカウントリストを提供します。これは AMM v4 自体の OpenBook 削除 に従っています。AMM v4 の Initialize2 は market_program や amm_open_orders を取らなくなったため、LaunchLab は転送するものがなくなりました。プログラムは initialize_openbook_market への CPI も停止しました。これは 3 つの引数が設定していたものです。削除されたアカウント:openbook_program、request_queue、event_queue、bids、asks、market_vault_signer、market_base_vault、market_quote_vault、および amm_open_orders。market アカウントはその位置に留まります — AMM v4 はそれを参照フィールドとして記録しています — ただし、現在は単なる #[account(mut)] として宣言されています。オーナー、アドレス、またはシード制約はありません。完全に検証されず、AMM v4 の Initialize2 CPI に直接転送され、プログラムはそれを初期化しません。マーケットアカウントが実際に初期化されたマーケットであることを望む呼び出し元は、事前にそれ自体を作成する必要があります。残りの 23 アカウントリストは、順序通り:payer、base_mint、quote_mint、market、amm_program、amm_pool、amm_authority、amm_lp_mint、amm_base_vault、amm_quote_vault、amm_target_orders、amm_config、amm_create_fee_destination、authority、pool_state、global_config、base_vault、quote_vault、pool_lp_token、spl_token_program、associated_token_program、system_program、rent_program。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. ターゲットプログラム(AMM v4 Initialize2 または CPMM InitializeWithPermission)に CPI して、これらのリザーブで昇格後のプールを作成します。
  5. 2026-08-17 アップグレード後に実行された CPMM マイグレーションの場合、platform_scale + creator_scale をプラットフォーム所有のロック LP シェアに統合し、最大 1 つの Fee Key NFT を platform_nft_wallet にミントします。burn_scale の残りを焼却します。アップグレード前は、creator_scale は別々にロックされ、その Fee Key はトークン作成者に送られました。完了した過去のマイグレーションは変更されません。レガシー AMM v4 昇格の場合、LP の配置はその命令の既存フローに従います。
  6. (ミント権限ステップなし。base_mint.mint_authority は既にローンチ作成時に None に設定されています — 以下の注記を参照してください。)
  7. pool_state.status = Migrated に切り替え、vesting_schedule.start_time = block_time + cliff_period を設定します。
Token-2022 転送手数料権限の引き継ぎ — ベースミントが TransferFeeConfig を持つ Token-2022 ミントかつ PlatformConfig.transfer_fee_extension_auth がデフォルト以外の場合、マイグレーションはその拡張機能の権限をプラットフォームキーに再割り当てします:
  • transfer_fee_config_authority は常に再割り当てされます。ローンチ authority PDA は昇格前フェーズ全体でそれを保持しているため、常に移動するものがあります。
  • WithheldWithdraw は**authority PDA がそれを保持している場合のみ**再割り当てされます。2026-08-27 以降に作成されたローンチは、ミント作成時にその権限に既に transfer_fee_extension_auth を持っているため、ステップはスキップされます。ガードは、マイグレーションがこれらのミントで戻るのを防ぐものです — PDA は保持していない権限を署名で放棄することはできません。
マイグレーション時に transfer_fee_extension_auth が Pubkey::default() の場合、どちらの権限も移動せず、両方とも authority PDA に永続的に留まります。platform-config を参照してください。
ベースミントの供給量は昇格時ではなく、作成時から固定されています。 InitializeV2 と InitializeWithToken2022 は供給量全体をベースボールトにミントし、同じ命令で直ちに MintTokens を取り消すため、base_mint.mint_authority はローンチの全期間 None です。マイグレーションはそれに触れません。(このページの以前のリビジョンは取り消しを昇格時に配置していました。それは間違っていました。)マイグレーションが移動できる唯一の権限は、以下で説明する Token-2022 転送手数料のものです。
事後条件 — BuyExactIn、BuyExactOut、SellExactIn、SellExactOut はこの時点から PoolMigrated で拒否されます。結果の AMM プールは正規であり、他の AMM v4 / CPMM プールのように取引されます。 一般的なエラー — PoolFunding、PoolMigrated、MigrateTypeNotMatch、InvalidCpSwapConfig、MathOverflow。

CPMM マイグレーション残りアカウント

MigrateToCpswap をビルドするクライアントは、これらの固定 remaining_accounts インデックスを使用する必要があります: 命令は最低 10 個の残りアカウントが必要です。サポートミントアカウントは読み取り専用 CPI 入力です。ミントが初期化されたサポートレコードを持たない場合でも、両方のアドレスを派生させます。クリエーターロックアカウントを追加し続けるか、インデックス 8–9 を省略する古いビルダーは更新する必要があります。
2026-09 で変更。 2 つのクリーンアップ。どちらも正しいビルダーを変更しません:
  • パーミッション CPMM パスが唯一のパスになりました。 MigrateToCpswap は unix_timestamp >= get_upgrade_timestamp() に基づいて InitializeCpSwap と InitializeCpSwapWithPermission の間で選択していました。タイムスタンプヘルパーとレガシー CPI の両方が削除されたため、パーミッション付きパス — したがって 10 アカウント最小 — が無条件に適用されます。
  • 3 つのアドレス制約がアカウント構造体から命令本体に移動しました。 platform_config、base_vault、および quote_vault は依然として PoolState に保存された値と一致する必要がありますが、不一致は Anchor の address = 制約ではなく require_keys_eq! によって発生します。チェックは同等です。エラーサーフェスのみが異なります — これら 3 つのアカウントに対して ConstraintAddress(2012)の代わりに Anchor の汎用 RequireKeysEqViolated(2502)を取得し、アカウント名なしで報告されます。これら 3 つのアカウントに対して 2012 にマッチするエラーハンドリングを更新します。

CPMM マイグレーショントークンプログラム

MigrateToCpswap は両方のトークンプログラムを無条件に取得し、各ミントを所有するプログラムを自身で判定します。その 2 つのトークンプログラムアカウントは相応に名前が変更されました: これらは、以前の base_token_program(ベースミントを所有していたプログラム)と quote_token_program(常にレガシー)に置き換わります。位置は変わらないため、これはレイアウト変更ではなく値の変更です — ただし、2 つの値はほぼ逆転しており、古いペアを渡し続けるビルダーは、いずれかのミントが Token-2022 ミントになるとすぐに、レガシープログラムが必要な場所に Token-2022 を提供します。 レガシープログラムは、どちらのミントも使用しない場合でも必要です。CPMM LP ミントとロック流動性 Fee Key NFT は常にそこに存在するためです。

プラットフォーム 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 は廃止されました。

プラットフォームローンチパラメータルール

4 つの命令が 1 つの PlatformCurveRule アカウントを管理します。4 つすべてが PlatformConfig.curve_rule_manager またはプラットフォーム管理者によって署名されます — プログラムは署名者から PlatformConfig PDA を再派生することで管理者を受け入れるため、それを証明する別のアカウントはありません。どちらでもない署名者は InvalidCurveRuleAuthority を返します。 platform_curve_rule は [b"platform_curve_rule", platform_config, global_config] の PDA です。
  • Create はグループを保持しないアカウントを割り当てます。その状態は何も制限しません。
  • Update はその group_id でグループをアップサート(存在する場合は全体的に置き換え)します。アカウントをサイズ変更するため、署名者は成長するレント分を補充し、縮小するレント分を返金として受け取ります。10 番目を超える新しいグループは CurveRuleGroupsExceeded を返します。25 を超える制約、未知のフィールドまたはオペレータ、または 1 つのグループ内で同じ (field, op) ペアが 2 回は InvalidCurveRuleConstraint を返します。非定数積設定の 4 つの TotalSellA 派生フィールドは CurveRuleFieldNotSupportedByCurve を返します。
  • Remove は ID でグループを削除し、アカウントを縮小して差分を払い戻します。未知の ID は CurveRuleGroupNotExist を返します。
  • Close はレント全体を署名者に返します。その後、restrict_curve_param が 1 のままでも、設定は再び制限されません。
4 つのいずれもルールが強制されるかどうかを変更しません。それは UpdatePlatformConfig::RestrictCurveParam(0 | 1) であり、プラットフォーム管理者のみが呼び出すことができます。 ローンチパス上。 restrict_curve_param が 1 の間、InitializeV2 と InitializeWithToken2022 は remaining_accounts にルール PDA を必要とします — それが存在しない場合でも、それを省略してチェックをスキップできないようにするためです。不足しているアカウントは NotEnoughRemainingAccounts です。グループを満たさないローンチは CurveParamNotMatchPlatformRule です。チェックは GlobalConfig 独自の制限の前に実行され、それらのみを狭めることができます。モデルとプレイブック:products/launchlab/curve-rules。両方のエラーはクライアント側で回避可能です — SDK はこのチェックを純粋関数として反映します。送信前にチェック を参照してください。

CollectFee

プロトコルが単一のローンチで蓄積したトレード手数料の管理者による回収。 引数 — なし。 アカウント
ここで quote_mint は recipient_token_account の前に 来ます — ClaimCreatorFee、 ClaimPlatformFee、ClaimPlatformFeeFromVault とは逆で、これらはすべて受取人を最初に配置します。2つの スロットは異なる Anchor 型(Mint vs TokenAccount)を持つため、スワップするとランタイムで デシリアライゼーションが失敗し、不正なアカウントバグのように見えます。CollectMigrateFee は CollectFee と同じ 順序を持ちます。
効果 — quote_vault から recipient_token_account に pool_state.quote_protocol_fee を転送し、カウンターをゼロにします。最初の購入後いつでも呼び出し可能です。

CollectMigrateFee

卒業時に蓄積されたマイグレーション手数料の管理者による回収。CollectFee と同じアカウント構造で、署名者として protocol_fee_owner の代わりに migrate_fee_owner を使用し、消費されるカウンターとして pool_state.migrate_fee を使用します。

ClaimCreatorFee

クリエイターが所有するすべてのローンチにわたって蓄積されたクリエイター手数料の、クリエイターごとの回収。同じクォートミントを使用します。プール単位のフィーヴォルトではなく、クリエイター単位のフィーヴォルトを消費します。 引数 — なし。 アカウント 効果 — creator_fee_vault の全残高を recipient_token_account に転送します。ヴォルトが空の場合、ゼロより大きいことを要求するチェックで戻ります。

ClaimPlatformFee

ローンチのクォートヴォルトを直接消費するプラットフォーム単位の回収。プラットフォームが集約されたプラットフォームヴォルトを経由せずに、特定の1つのローンチのスライスを要求したい場合に使用します。 引数 — なし。 アカウント 効果 — quote_vault から recipient_token_account に pool_state.platform_fee を転送し、カウンターをゼロにします。

ClaimPlatformFeeFromVault

プラットフォーム単位の集約回収。プラットフォームを経由してルーティングされたすべてのローンチからの手数料を蓄積する、プラットフォームのクォートミント単位のフィーヴォルトを消費します。 引数 — なし。 アカウント 効果 — platform_fee_vault の全残高を recipient_token_account に転送します。ヴォルトが空の場合は戻ります。

CollectExcessLamports

LaunchLab が管理するアカウント上のレント免除最小値を超えて存在するラムポートの管理者による回収。2026-09 アップグレードで追加されたもので、プロトコルが SIMD-0437 レント削減 が各ステップの前に作成されたアカウントに残す過剰資金を回収できるようにします。 余剰分のみが移動します。トークン残高、アカウントデータ、所有者、曲線状態、ベスティングは変更されず、アカウントが既に最小値にある場合、命令は何もしません — したがって各ロールアウトステップ後に再実行しても安全です。 引数 — なし。 アカウント authority の選択 アカウントはチェックなしで渡され、プログラムによって解決されます。プログラムは LaunchLab の3つの権限 PDA すべてを再導出し、マッチングします: 3つのいずれにも一致しないキーは、命令全体を InvalidOwner(6001)で失敗させます。
ソースアカウントを権限でグループ化してください。 1つの呼び出しは1つの authority を持ち、トークンプログラムはアカウントの実際の所有者に署名を要求します。渡した authority とは異なる3つの PDA のいずれかで所有されるトークンアカウントは CPI を失敗させ、トランザクション全体を巻き込みます。プールヴォルト、プラットフォームフィーヴォルト、クリエイターフィーヴォルトを別々のトランザクションで回収してください。プログラム所有の PDA は例外です — それらは直接デビットされるため、任意の権限と一緒に乗ることができます。
各ソースアカウントの処理方法 基本ミントは回収できません。 InitializeV2 と InitializeWithToken2022 は、供給をミントする同じ命令で基本ミント上の MintTokens を取り消すため、どのキーも WithdrawExcessLamports に署名することはできません — ミントのレントは永久にそこに留まります。 一般的なエラー — InvalidOwner(6001、不正な署名者または3つの PDA のいずれでもない authority)、LamportsCalculateError(6031、wSOL ラウンドトリップがゼロにならなかった)、プログラム所有パスからの InsufficientFunds(アカウントが独自のレント最小値より少ない場合)。 SDK ビルダーなし。 @raydium-io/raydium-sdk-v2 はこの命令のビルダーを提供しておらず、raydium-sdk-V2-demo リポジトリも提供していません — これは管理者パスです。手動でエンコードしてください。solana-fundamentals/rent-and-reclaimable-rent のウォレット側スイープがトークンプログラム命令に対して行うのと同じ方法で。

ベスティングおよびプラットフォーム設定命令

これらは専用ページに記載されています。各命令は独自の状態モデルを持つためです:

状態変化マトリックス

次のステップ

ソース: