Skip to main content
このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
CLMMは2026-09-09にCPMMとLaunchLabが配信したのと同じフレームワーク移行を実施します。Anchorは0.32.1から=1.0.2に、ビルドツールチェーンはAgave 2.3.0から3.1.10に移行します。2つの管理者向け変更が伴います:新しいCollectExcessLamports命令と、CreateAmmConfigでの固定フィーオーナーです。 トレーダー、LP、リミットオーダーユーザー、またはプール作成者が呼び出すすべての命令は、アカウントリスト、引数、数学を保持します。

統合者向けTL;DR

  • ユーザー向けの命令は変更されていません。 CreatePool、CreateCustomizablePool、CreatePermissionedPool、すべてのOpenPosition* / IncreaseLiquidity* / DecreaseLiquidity*パス、ClosePosition、Swap / SwapV2 / SwapRouterBaseIn、5つのリミットオーダー命令、報酬命令はワイヤ上でバイト同一です。アカウントレイアウトは変更されていません。
  • 1つの命令が追加されます:CollectExcessLamports。 これは管理者専用で、引数を取りません。呼び出しごとに1つのプールをスイープします:プール自身のPoolStateは常にスイープされ、プールPDAがremaining_accountsで渡すボルトに署名します。remaining_accounts内の他のCLMM所有アカウントもスイープされます。products/clmm/instructionsを参照してください。
  • 1つのエラーコードが追加されます:6052 LamportsCalculateError。 コード6000–6051は変更されていません。
  • CreateAmmConfigは署名者をowner / fund_ownerにコピーしなくなります。 新しい設定はハードコードされたprotocol_fee_ownerとfund_fee_ownerキーを取得します。メインネットでは、これらは既存の21個すべての設定に既に保存されている同じ2つのキーです。既存のAmmConfigアカウントは変更されませんので、フィールドをアカウントから読み取り続けてください。
  • IDLを更新してください。 1つの命令と1つのエラーバリアントが追加され、39個の命令と53個のエラーになります。
  • CPMMとCLMMを1つのクレートに入れることができるようになりました。 両方のリポジトリはchore/upgrade-anchorブランチでanchor-lang / anchor-spl =1.0.2をピンしているため、単一のプログラムが両方にCPIできます。sdk-api/rust-cpiを参照してください。
  • TypeScriptクライアントパッケージの名前が変更されました。 テストスイートは@coral-xyz/anchor 0.32.1から@anchor-lang/core 1.0.2に移行します。

CollectExcessLamports

SIMD-0437のステップ1は2026年9月3日にメインネットで有効化されました。ステップ前に作成されたすべてのCLMMアカウントは現在過剰資金化されており、CLMMプログラムのみがそれが所有するアカウントからラムポートを移動できます。これはプールボルト、報酬ボルト、PoolState、AmmConfig、ObservationState、TickArrayBitmapExtensionなどをカバーします。 命令は4つの固定アカウントを取り、その後remaining_accountsに任意の数のソースアカウントを取ります: プールは署名権限であり、プログラム全体のPDAではありません。 CPMMは1つのグローバルvault_and_lp_mint_auth_seed権限で署名します。CLMMトークンボルトはそれらのPoolStateによって所有されるため、単一の呼び出しはスロット2で渡されたプールに対してのみ署名できます。各トークンプログラムソースはそのプールを権限として持つ必要があります:token_vault_0、token_vault_1、またはプールの報酬ボルトの1つ。別のプールからのトークンアカウント、またはユーザーのトークンアカウントはトークンプログラムの所有者チェックに失敗し、命令全体を元に戻します。プログラムはそれをスキップしません。ポジションNFTミントもスイープできません。ポジションが開かれるとミント権限が取り消されるためです。プールごとにスイープしてください。 命令は2つのパスを実行し、その順序は固定されています:
  1. トークンプログラムCPIが最初。 SPLトークンまたはToken-2022によって所有されるすべてのソースについて、ネイティブ以外のアカウントはWithdrawExcessLamports(判別式38)を取得します。ネイティブwSOLボルトはSyncNative → UnwrapLamports(判別式45)ラウンドトリップを取得し、ラップされたバランスが同期前の値と等しいことを確認して終了します。そうでない場合、呼び出しはLamportsCalculateErrorで失敗します。SOL側ボルトは完全なリクイディティを保持し、スイープ全体でスワップクォートは変わりません。
  2. 直接デビットが2番目。 パス2はpool_stateを最初にデビットし、その後CLMMプログラムによって所有されるすべてのソースをrent.minimum_balance(data_len)までデビットします。
他のプログラムによって所有されるソースは静かにスキップされます。この2パス順序はCPMMが2026-09-19で採用したものです。CLMMはその最初のリリースからこれを持っています。PDAがCPIの前にデビットされた場合、ランタイムはUnbalancedInstructionで中止するため、呼び出し元は任意の順序でソースを渡すことができます。
プログラム所有パスは、アカウントがどのプールまたはユーザーに属しているかをチェックしません。 CLMMプログラムによって所有されるすべてのアカウントが対象です。ユーザーがレントを支払った一部を含む:PersonalPositionState、LimitOrderState、TickArrayState。レント免除最小値を超える余剰のみが移動します。アカウントはそのデータを保持し、レント免除のままです。ポジションまたはオーダーが後で閉じられるとき、プログラムはアカウントがその時点で保持しているバランスをリファンドします。スイープ後、そのバランスは現在のレント最小値です。
ウォレットアドレスはreference/program-addressesにリストされています。

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

このリリース前、create_amm_configは両方のフィーオーナーフィールドを呼び出し署名者から設定していました:
現在はプログラム自身の定数を書き込みます:
CreateAmmConfigは依然としてcrate::admin::IDにゲートされています。このリリース前、すべての新しいフィーティアは両方のフィールドに管理者で開始され、UpdateAmmConfigパラメータ3 / 4で回転する必要がありました。現在は運用ウォレットで開始されます。メインネットでは定数は既存の21個すべての設定に既にowner / fund_ownerとして保存されている同じキーです。プログラムは現在、運用が手動で設定するために使用した値を書き込みます。 回収署名者は変わりません。CollectProtocolFeeはamm_config.ownerまたはcrate::admin::IDを受け入れ、CollectFundFeeはamm_config.fund_ownerまたはcrate::admin::IDを受け入れます。このリリースの前後両方です。 デブネットでは、両方の定数は同じキーに解決されます。reference/program-addressesを参照してください。
これはマイグレーションではありません。 すべての既存のAmmConfigは既に持っているownerとfund_ownerを保持します。定数または管理者キーをハードコードするのではなく、フィールドを読み取ってください。

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

Anchor 1.0のCPI呼び出しサイトでの変更は、CPMMの統合者が既に処理したのと同じものです。CpiContext::newはプログラムのAccountInfoではなくPubkeyを取り、Contextは4つのライフタイムパラメータの代わりに1つを持ちます。クライアントクレートでは、RequestBuilder::instructions()はResultなしでVec<Instruction>を返すようになり、system_programはsolana-system-interfaceに移動しました。sdk-api/rust-cpiを参照してください。 オンチェーン効果のないビルドシステムの詳細:
  • ローカルネット管理者。 localnetフィーチャーはコミットされたフィクスチャによってサポートされた固定テストキーをコンパイルしなくなります。代わりに、ビルド時にCLMM_LOCALNET_ADMIN環境変数から管理者を読み取ります。これはyarn test:local-adminがローカルウォレットから設定します。フィクスチャの.gitignore例外は削除されました。
  • リリースプロファイル。 programs/amm/Cargo.tomlの重複した[profile.release]ブロックが削除されました。Cargoはワークスペースルート外の[profile]を無視するため、ルートブロックが既に有効なものであり、プログラムレベルのpanic = "abort"は適用されていませんでした。
  • Anchor.toml。 seeds = falseはresolution = trueプラスskip-lint = falseになり、古い[registry] URLが削除されます。
  • リント。 programs/amm/Cargo.tomlは、AnchorおよびSolanaマクロが出力するフィーチャcfgの[lints.rust] unexpected_cfgs許可リストを追加します。
  • README。 このブランチではREADMEはcoral-xyz/anchorからrustup default 1.86.0とavm install 0.32.1を実行するよう指示しています。代わりにAnchor.tomlとsolana-fundamentals/toolchainに従ってください。

変更されなかったもの

  • すべてのアカウントレイアウト。 PoolState、AmmConfig、TickArrayState、TickArrayBitmapExtension、PersonalPositionState、ObservationState、LimitOrderState、DynamicFeeConfig、Permission、SupportMintAssociatedは同じサイズとオフセットを保持します。
  • エラーコード6000–6051。
  • スワップ、リクイディティ、フィー、動的フィー、リミットオーダー数学。 CollectExcessLamportsはプールのリザーブの一部ではなかったラムポートを移動します。
  • 2026-08-17からのポジションNFTフリーズ。プール・フリーズ権限ルールとClosePosition解凍パスを含みます。
  • spl_memo。 DecreaseLiquidityV2のメモプログラム制約はspl_memo::id()からanchor_spl::memo::IDに移動しました。両方とも同じアドレスに名前を付けます。anchor-splはエクスポートの名前を変更しただけです。
  • プログラムID。

更新されたページ

  • products/clmm/instructions:アップグレードバナー;CollectExcessLamportsセクション(アカウントリスト、2パス配信テーブル、プールごとのスコープ付き);インベントリ、管理者ゲート、状態変更マトリックス行;CollectProtocolFee / CollectFundFeeのフィーオーナーノート。
  • products/clmm/accounts:AmmConfigオーナーコメントとCreateAmmConfigが書き込むものに関するノート。
  • products/clmm/code-demos:バージョンバナーとRust CPIスケルトンがAnchor 1.0に移動。
  • products/cpmm/code-demos:「CLMMとクレートを共有できない」ノートが削除されました。
  • reference/error-codes:6052がドキュメント化されました。
  • reference/program-addresses:新しい「CLMMフィーオーナーウォレット」セクション;CLMMが「余剰ラムポート回収ウォレット」に追加されました。
  • sdk-api/rust-cpi、sdk-api/anchor-idl、solana-fundamentals/toolchain:raydium-clmmのAnchor 1.0ピン、およびクレート分割警告が廃止されました。
  • solana-fundamentals/rent-and-reclaimable-rent:「Raydiumプログラムが自身の側でスイープするもの」にCLMMが追加されました。
  • security/admin-and-multisig:CLMM余剰ラムポート回収者ロール。
  • protocol-overview/versions-and-migration:CLMMアップグレード履歴の箇条書き。