Skip to main content
このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
このエントリは、今後の CPMM プログラム更新をカバーしています。デプロイ前にローカルリリースブランチに対して検証されました。新しい命令または変更された CreateAmmConfig の動作に依存する前に、デプロイされたプログラムを確認してください。
CPMM の主な変更はフレームワークの移行です:Anchor 0.32.1 から =1.0.2 へ、ビルドツールチェーンを Agave 2.3.0 から 3.1.10 へ移行します。これに伴い 4 つの動作変更があります。そのうち 3 つは管理ツールにのみ関係し、1 つ(ミントホワイトリストの削除)は新しいプール用に使用できる Token-2022 ミントを変更します。 トレーダー、LP、またはプール作成者が呼び出すすべてのものは、アカウントリスト、引数、および数学を保持します。

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

  • ユーザー向けの命令は変更されていません。 InitializeInitializeWithPermissionDepositWithdrawSwapBaseInputSwapBaseOutput、および 4 つの Collect*Fee パスはすべてバイト単位で同一です。アカウントレイアウトは変更されていません。
  • 1 つの命令が追加されます:CollectExcessLamports 管理者のみ、引数なし、渡されたアカウントは remaining_accounts として渡されます。CPMM 制御のボルト、LP ミント、および PDA からレント免除最小値を超えるラムポートを返し、他には何も触れません。products/cpmm/instructions を参照してください。
  • 1 つのエラーコードが追加されます:6015 LamportsCalculateError コード 60006014 は変更されていません。
  • CreateAmmConfig は署名者をフィーオーナーフィールドにコピーしなくなりました。 新しい設定は、ハードコードされた protocol_fee_owner および fund_fee_owner キーを取得します。既存の AmmConfig アカウントは変更されません — アカウントから protocol_owner / fund_owner を読み取り続けてください。どちらかの値を想定しないでください。
  • ハードコードされた 4 アドレスの Token-2022 MINT_WHITELIST は削除されました。 SupportMintAssociated PDA レジストリは、拡張機能許可リストのバイパスの CPMM の唯一の方法になりました。既存のプールは影響を受けません。チェックはプール作成時にのみ実行されます。
  • ClosePermissionPda は共有管理者だけでなく、専用のパーミッション PDA 作成者権限を受け入れます。
  • IDL の更新が必要です。 1 つの新しい命令、1 つの新しいエラーバリアント。
  • TypeScript クライアントパッケージの名前が変更されました。 @coral-xyz/anchor0.32.1 で固定されています。Anchor 1.x クライアントは @anchor-lang/core として公開されます。

CollectExcessLamports

SIMD-0437 のステップ 1 は 2026 年 9 月 3 日にメインネットに着陸し、レント免除最小値を 9% 削減し、さらに 4 つのステップが続きます。ステップの前に作成されたすべての CPMM プールボルト、LP ミント、PoolStateAmmConfigObservationStatePermission、および SupportMintAssociated アカウントは現在過剰に資金提供されており、プログラム所有のアカウント内のラムポートはそのプログラムによってのみ移動できます。 命令は 4 つの固定アカウント(署名者/宛先ウォレット、vault_and_lp_mint_auth_seed 権限 PDA、および両方のトークンプログラム)を取得し、その後 remaining_accounts に任意の数のソースアカウントを取得します。各ソースアカウントの所有者に基づいてディスパッチします:トークンアカウントまたはミント用のトークンプログラムの WithdrawExcessLamports(判別式 38)への CPI、CPMM 所有の PDA の直接デビット、その他はサイレントにスキップします。 ラップされた SOL は理解する価値のあるケースです。ネイティブトークンアカウントのラムポート残高はそのトークン残高であるため、両方のトークンプログラムは 1 つで WithdrawExcessLamports を拒否します。代わりに CPMM は SyncNative を CPI します(寄付されたエクセスをラップされた amount に折り込む)、金額がどれだけ増加したかを測定し、正確にその差分に対して UnwrapLamports(判別式 45)を実行し、その後ラップされた残高が事前同期値と等しいことを要求します — 等しくない場合は LamportsCalculateErrorSOL 側のプールボルトはスイープを通じて完全な流動性を保持し、LP は 1 つ全体で価格変更を見ません。 署名者は共有プログラム管理者または専用の収集ラムポートウォレットのいずれかです。アドレスは reference/program-addresses にあります。

CreateAmmConfig は固定フィーオーナーを書き込みます

このリリースの前に、create_amm_config は両方のフィーオーナーフィールドを呼び出し署名者から設定しました:
これでプログラム自身の定数を書き込みます:
CreateAmmConfigcrate::admin::ID にゲートされているため、実際の効果は、新しく作成されたフィーティアが最初から管理マルチシグの代わりに専用の運用ウォレットによってスイープされ、管理者は UpdateAmmConfig パラメータ 3 または 4 を通じてフィールドをローテーションしない限り、作成したばかりの設定から収集することはできません。 2 つの定数は、プログラムの残りのアドレスと同じ devnet/mainnet cfg パターンに従い、devnet では両方とも同じキーに解決されます。reference/program-addresses を参照してください。
これはマイグレーションではありません。 既に存在するすべての AmmConfig は、作成されたときの protocol_ownerfund_owner を保持します。新しい定数をハードコードし始める収集ツールは古い設定で失敗し、「管理者キー」を想定するツールは新しい設定で失敗します。フィールドを読み取ってください。

Token-2022 ミントホワイトリストが削除されました

is_supported_mint は、ミントの拡張機能を反復する前に、ハードコードされた 4 つのアドレスの MINT_WHITELIST でショートサーキットしていました。そのアレイ — および毎回それから構築された HashSet — は削除されました。残っているのは:
  1. レガシー SPL Token ミントは無条件でパスします。
  2. [b"support_mint", mint] で初期化された SupportMintAssociated PDA を持つミントは無条件でパスします。
  3. それ以外の場合、ミント上のすべての拡張機能は TransferFeeConfigMetadataPointerTokenMetadataInterestBearingConfigScaledUiAmount の 1 つである必要があります。
レジストリ PDA はしばらくの間プログラムに含まれており、独自の CreateSupportMintAssociated / CloseSupportMintAssociated ペアと共有管理者と並んで独自の専用権限を持ち、InitializeInitializeWithPermission の両方から参照されます。静的配列を削除することは、ミントのオンボーディングがプログラムアップグレードではなく純粋なオンチェーンアクションになったことを意味します — これが要点です。 既存のプールは影響を受けません。ミントチェックはプール作成時にのみ実行されるためです。変わるのは、以前ホワイトリストに登録されていた 4 つのミントの 1 つに対して新しい CPMM プールを作成するには、そのミントがレジストリ PDA を持つ必要があることです — 重要なものはメインネットで既に持っています。レジストリが何をするか、何をしないかを含む完全な図は、reference/token-2022-support にあります。

ClosePermissionPda 署名者の拡大

CreatePermissionPda は既に共有管理者または専用のパーミッション PDA 作成者権限のいずれかを受け入れていましたが、ClosePermissionPdaaddress = 制約で管理者に固定されていました。クローズパスは同じペアを取得するようになりました:
したがって、グラントを発行する権限はマルチシグをルーティングせずにそれを取り消すこともできます。不正な署名者のエラーは InvalidOwner6001)のいずれかです — 古い address = 制約は既にそのカスタムエラーを実行していました — 受け入れられた署名者のセットのみが拡大しました。

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

Anchor 1.0 は、すべての CPI 呼び出しサイトで 2 つのことを変更します。これは、独自のプログラムから CPMM を統合する場合に重要です:CpiContext::new はプログラムの AccountInfo ではなく Pubkey を取得し、Context は 4 つのライフタイムパラメータの代わりに 1 つを持ちます。クライアント側では RequestBuilder::instructions()Result<...> ではなく Vec<Instruction> を返し、CommitmentConfigsolana_sdk ではなく anchor_client から来ます。spl-associated-token-account 8.0 はアドレスヘルパーを ::address の下に移動し、プログラム ID を ::program::ID に移動しました。sdk-api/rust-cpi を参照してください。 2 つのビルドシステムの詳細。どちらもオンチェーン効果はありません:プログラム crate は、CPSWAP_LOCALNET_ADMIN 環境変数からローカルウォレットを admin としてコンパイルする localnet フィーチャーを宣言します(管理者ゲートテストが実際に署名できるように — yarn test:local-admin がそれを配線します)。programs/cp-swap/Cargo.toml の重複した [profile.release] ブロックは削除されました。Cargo はワークスペースルートの外の [profile] を無視するため、ルートブロックは既に有効なものでした — プログラムレベルのブロックの panic = "abort" が適用されなかったという事実を含めて。

変更されなかったもの

  • すべてのアカウントレイアウト。 PoolStateAmmConfigObservationStatePermissionSupportMintAssociated — 同じサイズ、同じオフセット。
  • エラーコード 60006014
  • 拡張機能許可リスト自体。 依然として同じ 5 つの拡張機能。
  • フィーレート、フィー発生、および曲線。 CollectExcessLamports は、プールの準備金の一部ではなかったラムポートを移動します。
  • spl_memo Withdraw のメモプログラム制約は spl_memo::id() から anchor_spl::memo::ID に移動しました — 名前が変更された anchor-spl エクスポートの下の同じアドレス。
  • プログラム ID。 変更されていません。

更新されたページ

  • products/cpmm/instructionsCollectExcessLamports がアカウントリストと所有者ごとのディスパッチテーブルで追加されました。CreateAmmConfigcreator_fee_rate 引数と固定フィーオーナーに関する注記を取得します。CollectExcessLamportsCreateSupportMintAssociatedCloseSupportMintAssociated の命令サマリー行が追加されました。ClosePermissionPda 署名者が修正されました。Initialize 前提条件がレジストリのみのバイパス用に書き直されました。状態変更マトリックス行が追加されました。
  • products/cpmm/accounts — Token-2022 セクションがレジストリ PDA の周りに書き直され、ホワイトリスト削除が呼び出されました。ClosePermissionPda 署名者が修正されました。
  • products/cpmm/overview — ホワイトリスト文が書き直されました。
  • products/cpmm/code-demos — Rust CPI スケルトンが Anchor 1.0 用に更新されました。
  • reference/token-2022-support — バイパスパスセクションがレジストリ PDA の周りに書き直され、削除された MINT_WHITELIST が「削除されたバイパス」セクションに移動されました。
  • reference/error-codes6015 が文書化されました。
  • reference/program-addresses — 新しい「CPMM サポートミントレジストリ権限」、「CPMM フィーオーナーウォレット」、および「エクセスラムポート収集ウォレット」セクション。ClosePermissionPda 注記が修正されました。
  • sdk-api/rust-cpisolana-fundamentals/toolchainintegration-guides/cpi-integration — Anchor 1.0 ピンと CPI マイグレーション注記。
  • solana-fundamentals/rent-and-reclaimable-rent — 新しい「Raydium プログラムが独自側でスイープするもの」セクション。