このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
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つのエラーコードが追加されます:
6052LamportsCalculateError。 コード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/anchor0.32.1から@anchor-lang/core1.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つのパスを実行し、その順序は固定されています:
- トークンプログラムCPIが最初。 SPLトークンまたはToken-2022によって所有されるすべてのソースについて、ネイティブ以外のアカウントは
WithdrawExcessLamports(判別式38)を取得します。ネイティブwSOLボルトはSyncNative→UnwrapLamports(判別式45)ラウンドトリップを取得し、ラップされたバランスが同期前の値と等しいことを確認して終了します。そうでない場合、呼び出しはLamportsCalculateErrorで失敗します。SOL側ボルトは完全なリクイディティを保持し、スイープ全体でスワップクォートは変わりません。 - 直接デビットが2番目。 パス2は
pool_stateを最初にデビットし、その後CLMMプログラムによって所有されるすべてのソースをrent.minimum_balance(data_len)までデビットします。
UnbalancedInstructionで中止するため、呼び出し元は任意の順序でソースを渡すことができます。
ウォレットアドレスは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を参照してください。
ツールチェーンと依存関係の変更
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アップグレード履歴の箇条書き。

