Skip to main content
このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
このエントリはLaunchLabプログラムの今後のアップデートについて説明しています。デプロイ前にローカルリリースブランチに対して検証されました。新しい命令または変更されたMigrateToAmmレイアウトに依存する前に、デプロイされたプログラムを確認してください。
これはLaunchLabがトランジション・スキャフォルディングの運用を終了するリリースです。 以前のアップグレードをスムーズに着地させるために、3つの独立した機構が存在していました:get_upgrade_timestamp(クロックと比較する複数のチェックが参照するハードコードされたカットオーバー日付)、その日付から3日間機能し続ける非推奨のInitialize、およびAMM v4が7月に独自のOpenBook依存関係を削除した後に何も通信するものがなくなったMigrateToAmmのOpenBookプラッピング。これら3つはすべて廃止されました。メインネットではカットオーバーは数ヶ月前なので、動作上の影響はありません。ただし、失敗モードは変わり、1つのアカウントリストは大きく変わりました。 同時にフレームワークも移行しました:Anchor 0.32.1から=1.0.2へ、Agave 2.3.0から3.1.10へ。また、AMM v4とCPMMと同様に、レント回収用の新しい管理者命令があります。 トレード、手数料、ベスティング、カーブルール、プラットフォーム設定は変更されていません。

インテグレーター向けTL;DR

  • トレード命令のアカウント、引数、計算は変更されていません。 BuyExactInBuyExactOutSellExactInSellExactOutはバイト単位で同一です。アカウントレイアウトは変更されていません。
  • Initialize(非推奨版)は常にNotApproved6000)で失敗します。 アカウントを読む前に失敗します。InitializeV2を使用してください。既に作成されたローンチは通常通りトレードおよび卒業します。
  • MigrateToAmmはマイグレーション・ウォレットに対して破壊的な変更です。 3つの引数(base_lot_sizequote_lot_sizemarket_vault_signer_nonce)と9つのアカウントが削除されました。以下を参照してください。
  • 3つのトレードremaining_accountsは無条件で必須になり、 system_programスロットが検証されます。これらを省略するビルダーは、カットオーバー後のみではなく常にNotEnoughRemainingAccounts6018)で失敗します。
  • 1つの命令が追加されます:CollectExcessLamports 管理者のみ。products/launchlab/instructionsを参照してください。
  • 1つのエラーコードが追加されます:6031 LamportsCalculateError コード60006030は変更されていません。
  • 3つのMigrateToCpswapアドレス制約が命令本体に移動し、 エラーがConstraintAddress2012)からRequireKeysEqViolated2502)に変わります。
  • IDLの更新が必要です。 1つの新しい命令、1つの削除された引数セット、9つの削除されたアカウント、1つの新しいエラーバリアント。

MigrateToAmmはOpenBook部分を失いました

これは何かを壊す可能性が最も高い変更です。古い命令データはディスクリミネータの後に17バイトの引数を含んでいました。新しいデータは裸のディスクリミネータです。古いアカウントリストは構造体に存在しなくなった9つのアカウントを含んでいたため、最初の削除後のすべてがミスアライメントされています。 削除された引数: base_lot_size: u64quote_lot_size: u64market_vault_signer_nonce: u8。これら3つはすべて、プログラムがCPIで初期化するために使用していたOpenBookマーケットを設定するためにのみ存在していました。そのCPI(initialize_openbook_market)は、ノンスを検証したgen_vault_signer_keyチェックとともに廃止されました。 削除されたアカウント: openbook_programrequest_queueevent_queuebidsasksmarket_vault_signermarket_base_vaultmarket_quote_vault、およびamm_open_orders。最後のものはAMM v4のInitialize2がそれを受け取らなくなったため削除されました。 marketアカウントは元の位置に残ります。 AMM v4は依然としてAmmInfoの参照フィールドとしてマーケットを記録するため、LaunchLabは依然としてそれを転送します。それについて2つのことが変わりました:プログラムはそれを初期化しなくなり、それは現在完全に検証されていません。その宣言は所有者、アドレス、またはシード制約のない裸の#[account(mut)]です。owner = openbook_program.key()openbook_programアカウントとともに削除され、何も置き換わりませんでした。マイグレーション・ウォレットがそこに渡すものは何でも、AMM v4のInitialize2 CPIに直接転送され、新しいプールに記録されます。そのフィールドの背後に本当に初期化されたマーケットを望む呼び出し元は、事前にそれを作成する必要があり、プログラムはそれ以外を通知しません。 結果として得られる23アカウントリストは、products/launchlab/instructionsに完全に記載されています。 MigrateToCpswapは影響を受けません。引数を持たず、アカウントリストは変更されていません。

非推奨のInitializeは常に失敗します

initializeは以前、ソフト非推奨を実行していました:get_upgrade_timestamp() + 3 daysまで機能し、その後NotApprovedを返しました。タイムスタンプヘルパーが削除されたため、失敗は無条件です。ハンドラーは現在msg!err!(NotApproved)のみです。 ログを読んでいる場合の1つの詳細:Accounts構造体は変更されず、依然として4つのinit制約を含んでいるため、Anchorの生成されたアカウント検証プロローグが実行され、ハンドラーが戻る前にそれらのアカウントが作成されます。いずれにしてもトランザクションは戻るため、実際には何も作成されませんが、失敗はアカウント検証の前ではなく後に表示されます。 命令は削除されるのではなく保持されるため、そのディスクリミネータは占有されたままであり、IDLは安定した形状を保ちます。その引数とアカウント定義は、歴史的なトランザクションをデコードするために文書化する価値があり、ページはそれらを警告の背後に保ちます。

get_upgrade_timestampゲートは廃止されました

ヘルパーはlocalおよびdevnetフィーチャーの下で0を返し、それ以外の場合はハードコードされたメインネット・タイムスタンプ1755522000(2025-08-18 13:00 UTC)を返しました。4つの命令がクロックと比較し、ソース内で5つの参照にわたります。各参照はカットオーバー後のブランチに無条件になります: メインネット・タイムスタンプは1年以上前なので、正しく最新のビルダーは動作の変更を見ません。変わったのは、古いビルダーが、devnetビルドに対して機能しているように見えるのではなく、決定論的に失敗するようになったことです。新しいsystem_program検証は本当に新しいものです:そのスロットは以前、任意のアカウントを受け入れていました。

CollectExcessLamports

SIMD-0437のステップ1は2026年9月3日にメインネットに着地し、レント免除最小値を9%削減し、さらに4つのステップが続きます。ステップ前に作成されたすべてのLaunchLabプール・ボルト、手数料ボルト、プログラム所有PDAsは現在、過剰に資金提供されています。 命令は4つの固定アカウント(署名者/宛先ウォレット、1つのボルト権限PDA、および両方のトークン・プログラム)を取得し、その後remaining_accounts内の任意の数のソース・アカウントを取得します。 authorityスロットは注意深く読む価値があります。LaunchLabには3つのボルト権限PDA(vault_auth_seedplatform_fee_vault_auth_seedcreator_fee_vault_auth_seed)があり、命令は渡したものを再導出してすべての3つをマッチングして解決します。キーがいずれにも一致しない場合はInvalidOwner6001)で失敗します。1つの呼び出しが1つの権限を持ち、トークン・プログラムは各アカウントの実際の所有者に署名することを要求するため、ソース・アカウントは権限でグループ化する必要があります。プール・ボルト、プラットフォーム手数料ボルト、クリエーター手数料ボルトは別々のトランザクションで掃引されます。プログラム所有PDAsは直接デビットされ、任意の権限に乗ることができます。 ラップされたSOLはCPMMおよびAMM v4が使用する同じSyncNative → デルタサイズのUnwrapLamports → 変更なしアサート・シーケンスに従い、ラウンドトリップがゼロにネットされない場合はLamportsCalculateError6031)です。SOL引用ローンチはその完全な引用リザーブを保ちます。 ベース・ミントは掃引できません。 InitializeV2InitializeWithToken2022は、供給をミントする同じ命令でMintTokensを取り消すため、ベース・ミントのWithdrawExcessLamportsに署名できるキーはありません。そのレントは設計上、取り残されています。 署名者は共有プログラム管理者または専用のラムポート収集ウォレットのいずれかです。アドレスはreference/program-addressesにあります。

MigrateToCpswap制約の再配置

3つのアカウント制約がAccounts構造体から命令本体に移動しました:
要件は同じです。すべての3つは依然としてPoolStateに保存されている値と一致する必要があります。エラー表面のみが異なります:Anchorの汎用RequireKeysEqViolated2502)、アカウント名なしで報告されるのではなく、ConstraintAddress2012)が問題のあるアカウントに名前を付けます。これら3つのアカウントの2012に一致するエラー処理を更新してください。

ツールチェーンと依存関係の変更

Anchor 1.0の2つの呼び出しサイト変更もここに適用されます:Contextは4つのライフタイム・パラメータから1つに縮小され、CpiContext::newはプログラムのAccountInfoではなくPubkeyを取得します。sdk-api/rust-cpiを参照してください。 オンチェーン効果のない2つのビルド・システムの詳細:localフィーチャーはlocalnetに置き換えられ、LAUNCHPAD_LOCALNET_ADMIN環境変数からadminとしてローカル・ウォレットをコンパイルします(yarn test:local-adminがそれを配線します)。programs/launchpad/Cargo.tomlの重複した[profile.release]ブロックは削除されました。Cargoはワークスペース・ルート外の[profile]を無視するため、ルート・ブロックは既に有効なものでした。プログラム・レベルのブロックのpanic = "abort"が適用されなかったという事実を含めて。

変更されなかったもの

  • すべてのアカウント・レイアウト。 PoolStateGlobalConfigPlatformConfigPlatformCurveRulePlatformAllowConfig、ベスティング・レコード。同じサイズ、同じオフセット。
  • エラーコード60006030 意図的に保持された6020を含む。
  • カーブ計算、手数料率、手数料発生、ベスティング・スケジュール、卒業LP分割。
  • プラットフォーム・カーブルールとGlobalConfig許可リスト。 同じ命令、同じアカウント、同じセマンティクス。カーブルール・チェックの周りのクロック・ゲートのみが廃止されました。
  • MigrateToCpswapのアカウント・リストとremaining_accountsインデックス。
  • 卒業時のToken-2022転送手数料権限の引き継ぎ。
  • プログラムID。 変更されていません。

更新されたページ

  • products/launchlab/instructionsCollectExcessLamportsがアカウント・リスト、権限解決テーブル、グループ化警告とともに追加。MigrateToAmmの引数とアカウント削除が完全な新しいリストとともに記載。Initializeが常に失敗する警告とともに前置。新しい「トレード残りアカウント」セクション。無条件の3つのアカウントとsystem_programチェックをカバー。MigrateToCpswapの許可のみパスと再配置された制約に関する注記。インベントリと状態変更マトリックス行。
  • products/launchlab/overview — リリース・バナー。「CPMMのみ」とベース・ミント不変式が修正。
  • products/launchlab/accounts — ミント権限取り消しタイミングがローンチ作成に修正(卒業時に記載されていました)。CollectExcessLamports行が追加。
  • reference/error-codes6031が記載。
  • reference/program-addresses — 新しい「余剰ラムポート収集ウォレット」セクション。
  • solana-fundamentals/rent-and-reclaimable-rent — 新しい「Raydiumプログラムが独自に掃引するもの」セクション。
  • sdk-api/rust-cpisolana-fundamentals/toolchain — Anchor 1.0ピンとCPI移行ノート。