本文へ移動

TWAPのウィンドウをどう選ぶか

TWAPのルックバック期間は、共通の既定値ではなく、操作コスト、市場の厚み、価格の遅延、観測データ、プロトコルのリスク額を検証して選びます。

更新日

教育目的の情報であり、投資助言やセキュリティ助言ではありません。価格オラクルの設計不備は、誤清算、担保不足の借入、プロトコル損失につながります。

端的な答え

あらゆる状況で安全なTWAPウィンドウはありません。対象のプールとプロトコルで、利益の出る価格操作を現実的でなくする最短のウィンドウを選び、実際の価格変動時の遅延が許容範囲か確認します。長いウィンドウは通常、攻撃者が市場へ影響を与え続ける時間を延ばしますが、古い価格も長く平均に残します。薄い流動性、価格経路上にない集中流動性、過大なリスク額、誤った実装を補うことはできません。

5分、30分、1時間といった既定値を選ぶのではなく、リスク予算として決めます。参照プールと平均方式、許容できる最大誤差と応答遅延、抽出可能価値、攻撃コスト、観測履歴、障害時の処理を文書化します。流動性、インセンティブ、ブロック生成、担保上限、市場構造が変われば再評価が必要です。

仕組み

累積値型オラクルは価格を時間とともに記録します。算術累積値では、t1からt2までの平均は次のとおりです。

TWAP(t1,t2) = (cumulativePrice(t2) - cumulativePrice(t1)) / (t2 - t1)

Uniswap v2は各ブロックの開始時点の価格を累積し、利用側が2つの累積値を保存します。Uniswap v3は累積tickの観測値を保存するため、平均tickを価格へ変換すると時間加重幾何平均になります。平均方式、クオート方向、観測容量、丸め、更新条件はオラクル仕様の一部であり、すべてのTWAPをスポット価格標本の算術平均とみなしてはいけません。

次の手順で選定します。

  1. 利用側の損失関数を定義する。 価格が借入枠、清算、発行、償還、決済をどう変えるか記録し、上昇・下落時の最大許容遅延と誤差を定めます。
  2. 約定可能な流動性を測る。 攻撃者が通る価格経路全体の準備金、手数料、レンジ内流動性をモデル化します。TVLや直近出来高だけでは耐操作性を示せません。
  3. 攻撃者の利得を上限評価する。 担保・借入上限、清算報酬、既存ポジション、他プロトコルとの組み合わせ、停止前の利益を含めます。攻撃コストは一取引ではなく総抽出可能価値と比較します。
  4. 実行可能な攻撃をモデル化する。 1ブロック・複数ブロックの歪み、フラッシュ資金、提案者の支配や順序付け、裁定・バックラン、混雑、巻き戻しコストを検証します。強い攻撃者モデルでは、コストが期間に比例するという単純な仮定が崩れるとの研究があります。
  5. 候補期間を走査する。 各期間で過去の急変と敵対的な価格経路を再現し、利益の出る操作または許容不能な古い価格を生む候補を除外します。
  6. 独立した制御を加える。 エクスポージャー上限、独立価格との乖離・妥当性チェック、鮮度制限、保守的な担保率、検証済みの停止・フォールバックを使います。危険な価格源自体を安全にはしませんが、前提崩壊時の損失を制限できます。

結論はプール、手数料階層、チェーン、実装、通貨ペア、プロトコル状態ごとに異なります。他プロトコルの30分をコピーしても、その流動性や損失上限はコピーされません。

簡略化した算術TWAPで、市場価格が100から瞬時に70へ移り、その後70のままとします。15分後の30分ローリングウィンドウには各価格が15分ずつ含まれます。

(15 x 100 + 15 x 70) / 30 = 85

30分後に古い100がすべて抜け、TWAPは70になります。5分ウィンドウは5分後に70へ達しますが、攻撃者が歪みを維持する時間も短くなります。貸付市場で、約定可能価格が70付近なのに担保を約85で評価すると、清算遅延と不良債権を招きます。別用途なら遅い値を許容できる場合もあります。

この例は遅延だけを示し、操作コストは推計していません。また85は幾何平均オラクルには当てはまりません。実際の審査では、正確な計算式で観測値、稼働流動性、手数料、ブロック順序、ポジションを再現します。

リスクと対策

  • 短すぎる期間: 少数の歪んだブロックで攻撃が利益化します。価格源の耐性や市場を改善し、リスク額を減らすか、分散された参照値を使います。
  • 長すぎる期間: 真の急変に遅れ、下落時の清算を遅らせ、上昇時の担保を過小評価します。最悪の遅延を測り、保守的なパラメータを設定します。
  • 流動性の誤測定: TVLは非稼働、狭いレンジ、片側、または攻撃経路外かもしれません。該当tickと価格の約定可能な厚みを使います。
  • 観測障害: 履歴不足、古い観測、未初期化容量、誤時刻、誤ったプールや方向で計算が無効になります。黙って代替せず、revertまたは文書化した安全状態へ移行します。
  • 攻撃者モデルの不備: フラッシュ流動性、複数ブロックの提案者、順序付け、他プロトコル利益は純コストを下げます。「手数料×分」を証明とせずストレステストします。
  • ガバナンスと市場の変化: 流動性移動、手数料変更、新担保、上限増加、アップグレード、チェーン変更で安全性は変わります。入力を監視し再審査基準を設けます。
  • フォールバック障害: 独立フィードも市場範囲、桁数、遅延、障害要因が異なります。停止、拒否、制限、切替条件を定義しオンチェーンで試験します。

導入前に単位、クオート方向、平均方式、期間、最低履歴、プール基準、リスク上限、障害動作を公開します。稼働後は参照価格との乖離と、攻撃コストモデルの経済入力を監視します。

よくある誤解

  • 「長いほど常に安全だ。」 攻撃時間は延びても遅延が増え、薄い流動性や不完全なモデルは直りません。
  • 「30分TWAPは業界の安全保証だ。」 期間は一要素にすぎず、流動性、手数料、出塊、計算式、リスク額も重要です。
  • 「フラッシュローンはTWAPに影響しない。」 取引内の資本制約を除きます。成功可否は標本化、影響できる期間、周辺ロジックに依存します。
  • 「高いTVLは高い操作コストを意味する。」 モデル上の取引に抵抗するのは、関連する価格経路で約定可能な流動性だけです。
  • 「TWAPは現在の市場価格だ。」 特定市場の過去のオンチェーン状態の平均で、意図的に遅れ、広い市場を表すとは限りません。

関連トピック

出典

ナビゲーション

Wiki を検索...