このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
LaunchLab は厳選された命令セットを公開しています:ユーザー向けの 6 つの呼び出しと、いくつかの管理プリミティブです。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 に対して呼び出し可能なままです。リリースは既存のプール状態を書き直したり、従来の命令を削除したりしません。
クォート側トークンプログラム。 クォートミントは SPL Token プログラムまたは Token-2022 のいずれかが所有できます。それに触れるすべての命令 — CreateConfig、InitializeV2、InitializeWithToken2022、4 つのトレード命令すべて、CollectFee、CollectMigrateFee、ClaimCreatorFee、ClaimPlatformFee、および ClaimPlatformFeeFromVault — は、クォートプログラムアカウントスロットで所有プログラムを取ります。アカウント位置は変わりませんでした。渡されたのは受け入れられた値だけです。実際に GlobalConfig.quote_mint を所有するプログラムを渡してください。これは既存のローンチの場合 PoolState.token_program_flag ビット 1 から読み取ることができます(accounts を参照)、またはそれ以外の場合はミントアカウントの所有者から読み取ることができます。
非推奨の Initialize は例外です:そのクォートプログラムアカウントは依然として SPL Token に型付けされているため、クォートミントが Token-2022 である設定は InitializeV2 または InitializeWithToken2022 を通じて起動する必要があります。
MigrateToCpswap はもう一つの例外で、反対方向です — ミントごとに 1 つではなく、両方のプログラムを無条件に取ります。下記のマイグレーションアカウントを参照してください。
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から計算されます(おおよそ)。InitializeWithToken2022がTransferFeeConfigを添付している場合:transfer_fee_config_authority = launch_authority、およびwithdraw_withheld_authority = PlatformConfig.transfer_fee_extension_auth(そのフィールドが設定されている場合)、そうでなければlaunch_authority。引き出し側はミント作成時に正確に書き込まれるため、プラットフォームは卒業前に保留中の手数料をスイープできます。platform-configを参照してください。
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と手数料部分に分割します。- ポストフィークォートが与えられた場合、カーブに対して 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 は通常、同じトランザクション内でGraduateix をチェーンします。プログラムはBuy内で自動卒業しません — 後続のGraduateが必要です。
BuyExactOut
ユーザーは正確な base_out を指定します;プログラムは quote_in を計算します。
引数
BuyExactIn と同じアカウント。Newton 反復ではなく、閉じた形の二次積分(または 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 は減少します。手数料は依然として発生します。
クォート側転送手数料
クォートミントがTransferFeeConfig を持つ場合、ボルトが移動する金額と支払者が請求または貸方される金額は異なり、スリッページ境界は支払者側に対してチェックされます。転送手数料拡張なしのクォートミントでは、以下のすべてのケースは通常のレガシーミントと同じです。
見積もりの 2 つの結果:
- 手数料なしのミントであるかのように計算された境界は拒否されます。手数料なしのコストを
maximum_amount_inとして、または手数料なしの収益をminimum_amount_outとして渡すと、ExceededSlippageで戻ります。 real_quoteはボルトに到達したもののみで進みます。5% クォートミント上のamount_inのBuyExactInはreal_quoteをamount_in × 0.95で移動します。
10000 ベーシスポイント)は反転できず、正確出力パスで CalculateOverflow で戻ります。
トレード側ミントの両方も、マッチングスロットで渡されたプログラムに制限されるため、ミスマッチされた base_token_program は無視されるのではなく失敗するようになりました。algorithms/token-2022-transfer-fees を参照してください。
MigrateToAmm / MigrateToCpswap
カーブが total_quote_fund_raising に達したら、ローンチを取引可能なプールに卒業させます。新しいローンチは CPMM のみです。MigrateToAmm は、保存された migrate_type が 0 である既存のプール用に保持されます。
署名者
MigrateToAmm— バインディングGlobalConfigに記録されたmigrate_to_amm_wallet。MigrateToCpswap— バインディングGlobalConfigに記録されたmigrate_to_cpswap_wallet。
MigrateToAmm は 3 つを取ります(主に OpenBook マーケットパラメータ、プログラムが AMM v4 に転送):
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
- ターゲットプログラム(
AMM v4 Initialize2またはCPMM InitializeWithPermission)に CPI して、それらの準備金を使用して卒業後のプールを作成します。 - 2026-08-17 アップグレード後に実行された CPMM マイグレーションの場合、
platform_scale + creator_scaleを 1 つのプラットフォーム所有のロック LP シェアに結合し、最大 1 つの Fee Key NFT をplatform_nft_walletにミントします。burn_scale残りを焼却します。アップグレード前は、creator_scaleは別々にロックされ、その Fee Key は トークン作成者に行きました。完了した履歴マイグレーションは変更されません。従来の AMM v4 卒業の場合、LP 処分はその命令の既存フローに従います。 base_mint.mint_authorityを取り消します(Noneに設定)。pool_state.status = Migratedをフリップし、vesting_schedule.start_time = block_time + cliff_periodを設定します。
TransferFeeConfig を持つ Token-2022 ミント かつ PlatformConfig.transfer_fee_extension_auth がデフォルト以外の場合、マイグレーションはその拡張の権限をプラットフォームキーに再割り当てします:
transfer_fee_config_authorityは常に再割り当てされます。ローンチauthorityPDA は卒業前フェーズ全体でそれを保持するため、常に移動するものがあります。WithheldWithdrawはauthorityPDA がまだそれを保持している場合のみ 再割り当てされます。2026-08-27 以降に作成されたローンチは、ミント作成時から既にその権限にtransfer_fee_extension_authを持つため、ステップはスキップされます。ガードは、マイグレーションがそれらのミントで戻るのを防ぐものです — PDA はそれが保持していない権限を署名で放棄することはできません。
transfer_fee_extension_auth が Pubkey::default() の場合、どちらの権限も移動せず、両方は authority PDA に永続的に留まります。platform-config を参照してください。
事後条件 — BuyExactIn、BuyExactOut、SellExactIn、SellExactOut はこの時点から PoolMigrated で拒否されます。結果の AMM プールは正規であり、他の AMM v4 / CPMM プールのようにトレードします。
一般的なエラー — PoolFunding、PoolMigrated、MigrateTypeNotMatch、InvalidCpSwapConfig、MathOverflow。
CPMM マイグレーション残りアカウント
MigrateToCpswap を構築するクライアントは、これらの固定 remaining_accounts インデックスを使用する必要があります:
命令は、アップグレードされたパスで最低 10 個の残りアカウントが必要です。サポートミントアカウントは読み取り専用 CPI 入力です。ミントが初期化されたサポートレコードを持たない場合でも、両方のアドレスを派生させます。クリエーターロックアカウントを追加し続けるか、インデックス 8–9 を省略する古いビルダーは更新する必要があります。
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は、マッチングPlatformAllowConfigをremaining_accountsのどこかに含める必要があります。
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のままでも、設定は制限されなくなります。
UpdatePlatformConfig::RestrictCurveParam(0 | 1) で、プラットフォーム管理者のみが呼び出せます。
ローンチパス上。 restrict_curve_param が 1 の間、InitializeV2 と InitializeWithToken2022 は remaining_accounts にルール PDA が必要です — それが存在しない場合を含めて、それを省略することでチェックをスキップできないようにします。不足しているアカウントは NotEnoughRemainingAccounts;ルールグループを満たさないローンチは CurveParamNotMatchPlatformRule。チェックは GlobalConfig 独自の制限の前に実行され、それらのみを狭めることができます。モデルとプレイブック:products/launchlab/curve-rules。両方のエラーはクライアント側で回避可能です — SDK はこのチェックを純粋関数として反映します。送信前にチェック を参照してください。
CollectFee
単一のローンチでプロトコルの累積トレード手数料の管理者スイープ。
引数 — なし。
アカウント
効果 —
pool_state.quote_protocol_fee を quote_vault から recipient_token_account に転送し、カウンタをゼロにします。最初の買い後いつでも呼び出し可能です。
CollectMigrateFee
卒業時に累積されたマイグレーション手数料の管理者スイープ。CollectFee と同じアカウント形状で、署名者として migrate_fee_owner(protocol_fee_owner の代わり)と、排出されたカウンタとして pool_state.migrate_fee。
ClaimCreatorFee
作成者が所有する すべてのローンチ にわたって累積された作成者手数料の作成者ごとのスイープ、同じクォートミントを使用します。プール単位ではなく、作成者単位の手数料ボルトを排出します。
引数 — なし。
アカウント
効果 —
creator_fee_vault の全残高を recipient_token_account に転送します。ボルトが空の場合、ゼロより大きいチェックで戻ります。
ClaimPlatformFee
1 つのローンチのクォートボルトを直接排出するプラットフォーム単位のスイープ。プラットフォームが集約プラットフォームボルトを通さずに 1 つの特定のローンチのスライスを請求したい場合に使用します。
引数 — なし。
アカウント
効果 —
pool_state.platform_fee を quote_vault から recipient_token_account に転送し、カウンタをゼロにします。
ClaimPlatformFeeFromVault
プラットフォーム単位の集約スイープ。プラットフォームを通じてルーティングされたすべてのローンチからの手数料を累積するプラットフォームのクォートミント単位の手数料ボルトを排出します。
引数 — なし。
アカウント
効果 —
platform_fee_vault の全残高を recipient_token_account に転送します。ボルトが空の場合は戻ります。
ベスティングおよびプラットフォーム設定命令
これらは各自の状態モデルを持つため、専用ページに文書化されています:CreateVestingAccount、CreatePlatformVestingAccount、ClaimVestedTokenCreatePlatformConfig、UpdatePlatformConfig、CreatePlatformAllowConfig、ClosePlatformAllowConfigCreatePlatformCurveRule、UpdatePlatformCurveRule、RemovePlatformCurveRule、ClosePlatformCurveRuleCreateConfig、UpdateConfig
状態変更マトリックス
次のステップ
products/launchlab/code-demos— 各命令の TypeScript 例。products/launchlab/accounts— 完全な状態形状。reference/error-codes— LaunchLab エラー列挙。
- Raydium SDK v2
LaunchLabモジュール - Raydium LaunchLab プログラムソース

