Skip to main content
このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
LaunchLab は厳選された命令セットを公開しています:ユーザー向けの 6 つの呼び出しと、いくつかの管理プリミティブです。SDK はすべてをラップしていますが、このページは集約者、監視ツール、および CPI が必要なプログラム向けの生のサーフェスを文書化しています。

命令インベントリ

「ExactIn/ExactOut」の分割は CPMM の SwapBaseInput / SwapBaseOutput を反映しています — オンチェーンでは、わずかに異なるラウンディングを持つ別の命令ディスクリミネータです。 卒業パス選択。 すべての新しい InitializeInitializeV2、および InitializeWithToken2022 呼び出しは migrate_type = 1CPSWAP)を設定する必要があります。新しい AMM v4 バウンドプールを初期化しようとする試みは MigrateTypeNotMatch を返します。amm_creator_fee_on は、結果の CPMM 作成者手数料がクォートトークンに適用されるか両方のトークンに適用されるかのみを選択します。ターゲットプログラムを選択しません。 MigrateToAmm は、この制限の前に migrate_type = 0 で初期化された既存の PoolState に対して呼び出し可能なままです。リリースは既存のプール状態を書き直したり、従来の命令を削除したりしません。 クォート側トークンプログラム。 クォートミントは SPL Token プログラムまたは Token-2022 のいずれかが所有できます。それに触れるすべての命令 — CreateConfigInitializeV2InitializeWithToken2022、4 つのトレード命令すべて、CollectFeeCollectMigrateFeeClaimCreatorFeeClaimPlatformFee、および 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_mintsupply = base_supply_max を持ち、すべて base_vault にあります。
  • base_mint.mint_authority = launch_authorityfreeze_authority = None
  • LaunchStatestatus = Activebase_sold = 0quote_reserve_real = 0 で初期化されます。
  • quote_reserve_target はカーブパラメータ + base_supply_graduation + buy_numerator から計算されます(おおよそ)。
  • InitializeWithToken2022TransferFeeConfig を添付している場合:transfer_fee_config_authority = launch_authority、および withdraw_withheld_authority = PlatformConfig.transfer_fee_extension_auth(そのフィールドが設定されている場合)、そうでなければ launch_authority。引き出し側はミント作成時に正確に書き込まれるため、プラットフォームは卒業前に保留中の手数料をスイープできます。platform-config を参照してください。
一般的なエラー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_inquote_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 と同じアカウント。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_inBuyExactInreal_quoteamount_in × 0.95 で移動します。
100% 手数料クォートミント(10000 ベーシスポイント)は反転できず、正確出力パスで CalculateOverflow で戻ります。 トレード側ミントの両方も、マッチングスロットで渡されたプログラムに制限されるため、ミスマッチされた base_token_program は無視されるのではなく失敗するようになりました。algorithms/token-2022-transfer-fees を参照してください。

MigrateToAmm / MigrateToCpswap

カーブが total_quote_fund_raising に達したら、ローンチを取引可能なプールに卒業させます。新しいローンチは CPMM のみです。MigrateToAmm は、保存された migrate_type0 である既存のプール用に保持されます。 署名者
  • MigrateToAmm — バインディング GlobalConfig に記録された migrate_to_amm_wallet
  • MigrateToCpswap — バインディング GlobalConfig に記録された migrate_to_cpswap_wallet
これらのウォレットは通常、Raydium が運営する卒業クランクによって保持されます;実際には、卒業は閾値を超えた秒後に着地し、最終的な買いをトリガーした人に関係なく。 引数 MigrateToAmm は 3 つを取ります(主に 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. ターゲットプログラム(AMM v4 Initialize2 または CPMM InitializeWithPermission)に CPI して、それらの準備金を使用して卒業後のプールを作成します。
  5. 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 処分はその命令の既存フローに従います。
  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 は卒業前フェーズ全体でそれを保持するため、常に移動するものがあります。
  • WithheldWithdrawauthority PDA がまだそれを保持している場合のみ 再割り当てされます。2026-08-27 以降に作成されたローンチは、ミント作成時から既にその権限に transfer_fee_extension_auth を持つため、ステップはスキップされます。ガードは、マイグレーションがそれらのミントで戻るのを防ぐものです — PDA はそれが保持していない権限を署名で放棄することはできません。
マイグレーション時に transfer_fee_extension_authPubkey::default() の場合、どちらの権限も移動せず、両方は authority PDA に永続的に留まります。platform-config を参照してください。 事後条件BuyExactInBuyExactOutSellExactInSellExactOut はこの時点から PoolMigrated で拒否されます。結果の AMM プールは正規であり、他の AMM v4 / CPMM プールのようにトレードします。 一般的なエラーPoolFundingPoolMigratedMigrateTypeNotMatchInvalidCpSwapConfigMathOverflow

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 を受け入れます;アロウアカウントは必須ではありません。
  • 1InitializeInitializeV2、および InitializeWithToken2022 は、マッチング PlatformAllowConfigremaining_accounts のどこかに含める必要があります。
プラットフォーム管理者は CreatePlatformAllowConfigClosePlatformAllowConfig で 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_param1 のままでも、設定は制限されなくなります。
4 つのいずれもルールが強制されるかどうかを変更しません。それは UpdatePlatformConfig::RestrictCurveParam(0 | 1) で、プラットフォーム管理者のみが呼び出せます。 ローンチパス上。 restrict_curve_param1 の間、InitializeV2InitializeWithToken2022remaining_accounts にルール PDA が必要です — それが存在しない場合を含めて、それを省略することでチェックをスキップできないようにします。不足しているアカウントは NotEnoughRemainingAccounts;ルールグループを満たさないローンチは CurveParamNotMatchPlatformRule。チェックは GlobalConfig 独自の制限の前に実行され、それらのみを狭めることができます。モデルとプレイブック:products/launchlab/curve-rules。両方のエラーはクライアント側で回避可能です — SDK はこのチェックを純粋関数として反映します。送信前にチェック を参照してください。

CollectFee

単一のローンチでプロトコルの累積トレード手数料の管理者スイープ。 引数 — なし。 アカウント 効果pool_state.quote_protocol_feequote_vault から recipient_token_account に転送し、カウンタをゼロにします。最初の買い後いつでも呼び出し可能です。

CollectMigrateFee

卒業時に累積されたマイグレーション手数料の管理者スイープ。CollectFee と同じアカウント形状で、署名者として migrate_fee_ownerprotocol_fee_owner の代わり)と、排出されたカウンタとして pool_state.migrate_fee

ClaimCreatorFee

作成者が所有する すべてのローンチ にわたって累積された作成者手数料の作成者ごとのスイープ、同じクォートミントを使用します。プール単位ではなく、作成者単位の手数料ボルトを排出します。 引数 — なし。 アカウント 効果creator_fee_vault の全残高を recipient_token_account に転送します。ボルトが空の場合、ゼロより大きいチェックで戻ります。

ClaimPlatformFee

1 つのローンチのクォートボルトを直接排出するプラットフォーム単位のスイープ。プラットフォームが集約プラットフォームボルトを通さずに 1 つの特定のローンチのスライスを請求したい場合に使用します。 引数 — なし。 アカウント 効果pool_state.platform_feequote_vault から recipient_token_account に転送し、カウンタをゼロにします。

ClaimPlatformFeeFromVault

プラットフォーム単位の集約スイープ。プラットフォームを通じてルーティングされたすべてのローンチからの手数料を累積するプラットフォームのクォートミント単位の手数料ボルトを排出します。 引数 — なし。 アカウント 効果platform_fee_vault の全残高を recipient_token_account に転送します。ボルトが空の場合は戻ります。

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

これらは各自の状態モデルを持つため、専用ページに文書化されています:

状態変更マトリックス

次のステップ

ソース: