Skip to main content
このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
Stable AMM は独立したプログラムです。プール側のアカウント構造は AMM v4(AmmInfo、ボルト、オーソリティ)に似ており、さらにルックアップテーブルを保存する ModelDataInfo アカウントを持ちます。このページでは両方をカバーしています。

インベントリ

純粋 AMM。 Stable AMM はすべてのリクイディティを独自のボルトに保有し、OpenBook に依存しません。初期段階では OpenBook マーケットメイキングパスを持っていましたが、そのパスは長年休止状態にあり、2026-06-22 アップグレードで残存コードが削除されました。以下の serum_* マーケットアカウントと amm_open_ordersレガシーです。古いレイアウトのトランザクションでは後方互換性のため引き続き表示される可能性がありますが、プログラムはそれらを検証または読み取らず、新しいレイアウトの命令ではそれらを完全に省略します。
アクティブなインベントリは現在、完全にプール側です:

AmmInfo

ルート状態アカウント。レイアウトは AMM v4 とほぼ同一です。プールパラメータ、デシマル、フィー、ボルト/ミント参照に加えて、ルックアップテーブルを指す model_data_key フィールドが 1 つ追加されています。
インテグレーター向けの主要フィールド:
  • model_data_key — ルックアップテーブルのアドレス。すべての命令に渡す必要があります。
  • fees — AMM v4 と同じ構造。デフォルトは 0.25% トレードフィー、0.22% LP / 0.03% プロトコル分割。
  • coin_vaultpc_vault — プールのボルト。
  • status — スワップ/デポジット/ウィズドロー/クランクをゲートするビットマスク。
  • out_put.need_take_pnl_*WithdrawPnl によってスイープされます。

ModelDataInfo

ルックアップテーブル。価格/数量ポイントの大規模なスパース配列。
ライフサイクル: これらのテーブルを構築した設定命令 — InitModelData(アカウントを作成)と UpdateModelData(要素を入力し、valid_data_count を設定)— は 2026-06-22 アップグレードで削除されました。既存プール上のテーブルは現在固定されています。実行時に、呼び出し可能な残りの命令はそれらを消費します:
  • スワップ/デポジット/ウィズドローは、elements[0..valid_data_count] 内でバイナリサーチと補間を行うルックアップ関数を呼び出します。

DataElement

テーブル内のアトミックエントリ。バイナリサーチが機能するために、ソート済み(x 昇順、y 降順、価格昇順)である必要があります。
テーブルを入力する際、管理者はこれらを事前にスケーリングして指定します。プログラムはオンチェーンでソート順序を検証しません(速度のため)。そのため、ソート順序の誤りは不正な見積もりを引き起こします。

オーソリティとボルト

AMM v4 と同じです:
  • amm_authority は、シード ["amm authority"] で導出される単一のプログラム全体 PDA です。すべてのプールボルトを所有し、それらの移動に署名します。
  • ボルトは、SPL Token アカウントで、オーナーは amm_authority です。ATA ではありません。
Token-2022 はサポートされていません

ステータスビットマスク

AMM v4 と同じです。スワップ/デポジット/ウィズドロー/クランクが有効かどうかを制御します。

フィーと PnL トラッキング

out_put 構造体は以下を追跡します:
  • need_take_pnl_coinneed_take_pnl_pc — 発生したがまだスイープされていないプロトコルフィー。WithdrawPnl がこれらを移動します。
  • swap_coin_in_amountswap_pc_in_amount など — 分析カウンター。
プール資産計算(デカップリング後)。 OpenBook オープンオーダーとしてエスクロー済みの資金がなくなったため、プールの総資産はボルトから完全に計算されます:
OpenOrders 残高からプール価値を再構築したインデクサーと見積もりコードは、その項を削除する必要があります。

アカウントサイズ

ModelDataInfo は大きいです(約 1.2 MB、50,000 要素 × 要素あたり 24 バイト)。これが Stable プール作成に明示的なレント割り当てとアカウント事前割り当てが必要な理由です。Raydium SDK とツールはこれを透過的に処理します。インテグレーターが手動で割り当てる必要はほぼありません。

ゼロからアカウントを導出する

AMM v4 と同様に、Stable AMM はシード付きキー(純粋 PDA ではない)を使用します。正規のプール ID は以下を通じて導出されます:
ボルト、LP ミント、ターゲットオーダーなども同様です。実際には、SDK または API を使用して事前計算されたアドレスを取得してください。

どこで何を読むか

ソース: