Skip to main content
このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
このエントリは、今後の AMM v4 プログラム更新をカバーしています。デプロイ前にローカルリリースブランチに対して検証されました。新しい命令に依存する前に、デプロイされたプログラムを確認してください。
2 つの無関係な変更が 1 つの再構築で一緒に到着します。 1 つ目はハウスキーピングです。AMM v4 は 2.1 アップグレード以来 solana-program =2.1.0 にピン留めされており、このピン留めがブロッキングになっていました。システムプログラムのヘルパーは Solana 3.0 で独自の solana-system-interface クレートに移動され、spl-token は 9.0 に到達し、spl-associated-token-account は 8.0 に到達しました。このリリースはこれら 3 つすべてを採用します。 2 つ目はプロトコルが受け取るべきお金です。SIMD-0437 はレント免除最小値を 5 段階で 90% 削減しており、ステップ 1 は 2026 年 9 月 3 日にメインネットに到着しました。その前に AMM v4 が作成したすべてのアカウント(数百のプールボルト、LP ミント、AmmInfo および TargetOrders アカウント)は現在過剰資金化されており、プログラム所有アカウント内のラムポートはそのプログラムによってのみ移動できます。したがって新しい命令が必要です。

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

  • トレーダーまたは LP が呼び出すものは何も変更されていません。 Initialize2DepositWithdrawSwapBaseInSwapBaseOutSwapBaseInV2SwapBaseOutV2WithdrawPnlSetParams はアカウントリスト、引数レイアウト、数学を保持します。アカウントレイアウトは変更されていません。既存のエラーコードは移動していません。
  • 1 つの命令が追加されます:WithdrawExcessLamports、タグ 18 管理者専用、引数なし、可変長アカウントリスト。AMM v4 制御アカウントからレント免除最小値を超えるラムポートを返し、他には何も触れません。products/amm-v4/instructions を参照してください。
  • 1 つのエラーコードが追加されます:60 LamportsCalculateError AmmError は Anchor 番号付けではなく、0 から始まるため、これは custom program error: 0x3c です。コード 059 は変更されていません。
  • CreateConfigAccount(タグ 14)はレント sysvar の読み込みを停止しました。現在は 4 アカウント命令として文書化されています。このリリースの何も破損していません。これが含まれます:アカウントはリストの最後にあり、ハンドラーは長さチェックなしで位置的に読み込むため、それでも渡す管理者ツールは機能し続けます。
  • IDL リフレッシュが必要です(クライアントを生成する場合)。1 つの新しい命令、1 つの新しいエラーバリアント、1 つの変更されたアカウントリスト。

WithdrawExcessLamports

命令は唯一の署名者および宛先としてラムポート収集ウォレット、AMM v4 権限 PDA、SPL Token プログラム、その後任意の数のソースアカウントを取ります。各ソースアカウントの所有者に基づいてディスパッチします: wSOL ブランチが興味深いものです。ラップされた SOL アカウントのラムポート残高はそのトークン残高であるため、トークンプログラムはそれに対して WithdrawExcessLamports を完全に拒否します。SyncNative を通じた往復と差分サイズの UnwrapLamports は寄付された過剰分のみを抽出し、ラップされた残高をまったく同じ場所に残します。これは後で確認され、算術が一致しない場合は LamportsCalculateError が発生します。SOL 側プールボルトはスイープを通じて完全な流動性を保持し、LP は流動性の価格変更を見ません。 署名者は、既存の AMM 所有者およびプール作成手数料アドレスと同じ config_feature モジュール下でハードコードされたクラスタごとの専用キーです。CPMM および LaunchLab とは異なり、AMM v4 はそのウォレットのみを受け入れます。管理者フォールバックはありません。アドレスは reference/program-addresses にあります。

CreateConfigAccount はレント sysvar の読み込みを停止しました

Solana 3.0 は Rent::get() をレントパラメータを読み込む自然な方法にするものであるため、リリースはプログラム内のすべての 4 つの Rent::from_account_info(...) 呼び出しを置き換えました。3 つの場合(Initialize2 中にプールのトークンアカウント、LP ミント、PDA アカウントを作成するヘルパー)では、sysvar アカウントはまだ渡され、トークンプログラム CPI に転送されるため、そのアカウントリストについて何も変わりません。CreateConfigAccount では sysvar に他の目的がなく、リストの最後のアカウントであったため、文書化されたリストから削除されました: 古い 5 アカウントリストを送信することはまだ機能します。 削除されたアカウントは最後にあり、process_create_confignext_account_info を通じて 4 つのアカウントを位置的に読み込み、合計数をチェックするものがないため、末尾のレントアカウントは見られません。管理者ツールは明確性のために更新する必要がありますが、緊急ではありません。ユーザー向けビルダーはこの命令をまったく構築しません。 Initialize2 は過剰読み込みしない場合です:また Rent::from_account_info の呼び出しを停止しましたが、そのレントアカウント位置 3 に留まり、まだ本当に使用されています。プログラムはそれをプールのボルトと LP ミントを作成する spl_token::initialize_account および initialize_mint CPI に転送します。そのアカウントリストから削除するとプール作成が破損します。

依存関係の変更

プログラムが使用するシステムプログラムの部分(system_instruction::create_accounttransferallocateassign、およびプログラム ID 自体)は、solana_program::system_program および solana_program::system_instruction ではなく solana-system-interface から来るようになりました。プログラム ID はバイト同一であるため、これはオンチェーン結果を持たないコンパイル時の移動です。これに対して比較する InvalidSysProgramAddress チェックを含みます。 2 つの不要なモジュールも削除されました:srm_token および msrm_tokenOpenBook 削除から残された Serum/MSRM ミント宣言。何も参照していませんでした。

変更されなかったもの

  • すべてのアカウントレイアウト。 AmmInfoStateDataTargetOrdersAmmConfig — 同じサイズ、同じフィールドオフセット。インデクサーまたはデコーダーの変更はありません。
  • エラーコード 059 LamportsCalculateError60 で追加されるため、何もシフトしません。
  • AMM 権限 PDA。 プログラム全体で 1 つの PDA、シード ["amm authority"]、ノンス 254
  • 手数料、PnL 会計、および曲線。 変更されていません。WithdrawExcessLamports はプールの準備金の一部ではなかったラムポートを移動します。
  • Token-2022。 まだサポートされていません。新しい命令はレガシー SPL Token プログラムのみと通信します。
  • プログラム ID。 変更されていません。reference/program-addresses を参照してください。

更新されたページ

  • products/amm-v4/instructionsWithdrawExcessLamports がアカウントリストと所有者ごとのディスパッチテーブルで追加されました。レント sysvar 削除をカバーする新しい CreateConfigAccount / UpdateConfigAccount セクション。インベントリテーブルと状態変更マトリックス行が追加されました。
  • products/amm-v4/overview — リリースバナー。
  • reference/error-codes — コード 600 ベースの番号付けを文書化する新しい「AMM v4:AmmError は Anchor 番号付けではない」セクション。
  • reference/program-addresses — 新しい「過剰ラムポート収集ウォレット」セクション。
  • solana-fundamentals/rent-and-reclaimable-rent — 新しい「Raydium プログラムが自分たちの側でスイープするもの」セクション。ラップされた SOL ノートが両方のトークンプログラムが UnwrapLamports を公開することを言うように修正されました。
  • solana-fundamentals/toolchain — Agave 3.1.10、release.anza.xyz、Rust 1.91.0。