メインコンテンツへスキップ
このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
AMM v4 は長年前から OpenBook(旧 Serum)へのリクイディティ共有を停止しており、ハイブリッド・オーダーブック・マーケットメイキング・パスは数年間休止状態にありました。このアップグレードはクリーンアップです。Serum 依存関係、すべてのオーダーブック CPI、および休止状態のマーケットメイキング命令をプログラムから削除し、AMM v4 を純粋な定数積(x·y=k)AMM として残します。ライブ取引動作は変わりません。OpenBook オーダーは既に存在しないため、停止するものはありません。

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

  • Swap / Deposit / Withdraw は変更なしで動作し続けます。 古いアカウント レイアウトで構築されたトランザクションは実行されます。削除された Serum/マーケット アカウントは単に無視されます(検証なし、CPI なし)。SwapBaseIn / SwapBaseOut は依然として 17(+1 オプション) アカウントを期待します。DepositWithdraw レイアウトは変わりません。既存フローを維持するためにクライアント アップデートを配信する必要はありません
  • V2 スワップ エントリポイントに移行してください。 SwapBaseInV2 / SwapBaseOutV2 はマーケット アカウントと amm_open_orders を持たず(合計 8 アカウント)、トランザクションはより小さく、より安価です。ルーター/アグリゲーターは V2 経由でルーティングすべきです。
  • WithdrawPnl は大きな破壊的変更です(管理者のみ)。 17(+1 オプション)→ 10 アカウントに削減され、互換性解析がありません。古いレイアウトはミスアライン(古い #5 は amm_open_orders)し、検証に失敗します。管理者ツールは更新が必要です。
  • SetParams は大きな破壊的変更です(管理者のみ)。 アカウントは [amm, admin] に縮小され、param 列挙型は番号が付け直されますFees 9 → 2、SetOpenTime 11 → 3)。AmmOwnerLastOrderDistanceUpdateOpenOrder およびグリッド パラメーターは削除されます。
  • 複数の命令は呼び出し不可になります。 InitializePreInitializeMonitorStepMigrateToOpenBookWithdrawSrmSimulateInfo、および AdminCancelOrders は現在リバートします。プールを作成するには Initialize2 を使用してください。
  • オンチェーン アカウント レイアウトはバイト安定であり、エラー コードは変わりません。 AmmInfo / StateData はレイアウトを保持します(古い OpenBook フィールドは保持されていますが非推奨/凍結)。AmmError 番号は保持され、新しい NotAllowed のみが追加されます。

これが重要な理由(トレーダー、LP、インテグレーター向け)

  • トレーダー はスワップ動作または価格設定に変化を見ません。定数積曲線は変わりません。V2 レイアウト スワップは、約 8 つ少ないアカウントを持つため、ランディングがより安価です。
  • LP は同じデポジット/ウィズドロー経済を保持します。リクイディティは長い間プール ボールトに完全に存在していたため、プール価値は完全にオンプール上にあります。このアップグレードは古いマーケット配管を削除するだけです。
  • インテグレーター はより小さく、シンプルなトランザクションと、ボールトから直接読み取るクォーティング モデルを取得します。既存のインテグレーション(管理者 WithdrawPnl / SetParams を除く)は破壊されませんが、v1 スワップ互換性シムは一時的です。都合の良い時に V2 に移行してください。

命令レベルの変更

呼び出し可能、レイアウト変更なし(後方互換)

Initialize2DepositWithdrawSwapBaseInSwapBaseOutCreateConfigAccount、および UpdateConfigAccount は既存のアカウント リストを保持します。SwapBaseIn / SwapBaseOutDeposit、および Withdraw では、OpenBook/マーケット アカウントは依然として位置的に受け入れられますが、検証または使用されなくなります。CPI は発行されず、プール リザーブはボールトのみで計算されます。アカウントは依然として一致する必要があるため、既存のトランザクションは変更なしで実行され続けます。

SwapBaseInV2 / SwapBaseOutV2 — 推奨パス

マーケット アカウントと amm_open_orders を完全に省略します(8 アカウント、タグ 16 / 17)。クォート数学は v1 と同じです。新しいインテグレーションとルーターは V2 を使用すべきです。

WithdrawPnl — 17(+1 オプション)→ 10 アカウント(⚠️ 大きな破壊的変更、互換性パスなし)

amm_open_orders とすべての 6 つのマーケット アカウントが削除されます。新しい固定 10 アカウント、管理者のみレイアウトには互換性解析がありません。古いレイアウトはミスアライン し、InvalidCoinVault などのエラーで失敗します。

SetParams[amm, admin] に削減(⚠️ 大きな破壊的変更)+ パラメーター番号付け直し

権限、オープン オーダー、ターゲット オーダー、ボールト、およびすべてのマーケット アカウントが削除されます。param 列挙型は番号が付け直され、トリミングされます:
パラメーター古い値新しい値
Status00
State11
Fees92
SetOpenTime113
すべてのオーダーブック グリッド パラメーター(OrderNumDepthAmountWaveMinPriceMultiplierMaxPriceMultiplierMinSizeVolMaxCutRatioInitOrderDepthSetSwitchTimeClearOpenTimeSeperate)および AmmOwnerLastOrderDistanceUpdateOpenOrder が削除されます。SetParamsInstruction 構造体は new_pubkeylast_order_distance を削除します。

呼び出し不可(実行時にリバート、ビルダー削除)

命令タグ置き換え
Initialize0Initialize2
MonitorStep2なし(オーダーブック クランク、廃止)
MigrateToOpenBook5なし
WithdrawSrm8なし(SRM フィー割引、廃止)
PreInitialize10Initialize2
SimulateInfo12オフチェーン / SDK クォーティング
AdminCancelOrders13なし

リザーブ / 状態の変更

  • プール資産フォーミュラ。 総プール資産は ボールト残高 − 保留中 PnL(need_take_pnl) です。OpenBook オープン オーダー項(実際には既にゼロ)は削除されます。クォーティング コードはボールト残高から直接読み取ることができます。
  • 非推奨状態フィールド。 StateData.total_pnl_pctotal_pnl_coinorderbook_to_init_timeswap_coin_in_amountswap_pc_out_amountswap_acc_pc_feeswap_pc_in_amountswap_coin_out_amount、および swap_acc_coin_fee はレイアウト互換性のために保持されていますが、更新されなくなりますswap_* ボリューム カウンターに依存するコンシューマーはトレード ログに切り替えるべきです。
  • AmmInfo 初期化。 coin_lot_sizepc_lot_size、および min_size は現在 0 に初期化されます。
  • 削除された依存関係と CPI。 serum_dex クレートは Cargo.toml から削除されます。すべての Serum DEX CPI(invoke_dex_new_order_v3invoke_dex_cancel_order_v2invoke_dex_settle_fundsinvoke_dex_init_open_orders、…)は invokers.rs から削除されます。削除されたデータ構造体:LastOrderDistanceSimulateParamsRunCrankDataGetPoolDataGetSwapBaseInDataGetSwapBaseOutData