こんにちは、よだかです。
ここ数日、DeFiの清算脆弱性について研究を続けています。
以前に、Morphoで実際に発生した清算事象を起点として、
- 担保の価格がどこで決まるのか
- その価格をどのオラクル(価格参照元)が使うのか
- 借り手がどの価格まで耐えられるのか
- 清算対象になる借入額を事前に計算できるのか
といった構造を分解し、他の市場へ横展開するところまで進めました。
この部分は過去の記事でかなり詳しく書いているので、今回は繰り返しません。
-
-
🛠️開発記録#560(2026/9/3) DeFi清算をbot開発の研究テーマに変えるまで
続きを見る
今回の更新点は、その続きです。
一言でまとめると、
「清算までの距離」と呼んでいたものが、実際には一種類ではなかった。
というところから、観測方法をかなり洗い直しました。
「あと1%で清算」の1%は、どこから見た距離なのか
借り手の担保量、借入額、清算条件、Morphoが担保評価に使う価格が分かれば、
担保評価価格があと何%下がると清算されるか
を計算できます。
これは前回までに確認していた部分です。
ただ、オラクルの経路をさらに調べていくと、一つ問題が出てきました。
Morphoが担保評価に使う価格と、実際に売買が行われて価格が形成されている市場の価格は、必ずしも同じように動くわけではありません。
間にはオラクルがあります。
さらにオラクルの中でも、
- 一定時間の価格を参照する
- 複数の価格参照元を組み合わせる
- 条件によって採用する価格が変わる
といった処理が入る場合があります。
すると、
Morphoが担保評価に使う価格があと1%下がれば清算
だったとしても、
価格が形成されている市場があと1%下がれば清算
とは限りません。
ここを同じ「清算までの距離」として扱っていたことが、今回の大きな修正点でした。

見えていたのは「Morpho側から見た清算の近さ」だった
これまで作っていた横断比較では、
Morphoが担保評価に使う価格が一定幅下がった場合、どれだけの借入が清算対象になるか
を見ることができました。
これは今でも有効な情報です。
例えば、
少し価格が下がるだけで、大きな借入が清算対象になる市場
と、
かなり価格が下がらないと清算が始まらない市場
を分けることはできます。
ただし、この比較だけでは、
実際に価格が形成されている市場から、その清算ラインまでどれくらい離れているか
は分かりません。
つまり、以前の比較は間違った数字を計算していたわけではなく、
研究で本当に知りたい「距離」の一部分だけを測っていた
という方が近いです。
ここで、横断比較の順位を増やすより先に、
そもそも自分は何の距離を比較しているのか
を整理し直す必要が出てきました。
比較方法だけでなく、観測対象そのものも洗い直した
もう一つ問題になったのが、
そもそも比較対象として拾っていた市場は十分だったのか
という点です。
以前の横断比較では、Morpho APIから取得した市場群を起点にPT担保市場を抽出していました。
しかし公式APIの仕様を確認し直すと、市場一覧には「公開レジストリへ掲載されているか」という条件があり、以前の取得方法では研究対象になり得る市場全体を見ていないことが分かりました。
そこで今回は、一度順位付けを止め、
全体を取得する
↓
PT担保か確認する
↓
今回の仮説と満期条件が合うか確認する
↓
その後に観測対象を決める
という順番からやり直しました。
ここで重要だったのは、
「数字が小さいから捨てる」
「借入が少ないから捨てる」
といった順位付けではありません。
まず、
今回調べたい構造を持つ可能性がある市場を、最初から落としていないか
を確認する作業です。
数字を取ることと、その数字の意味が分かることは別だった
今回、もう一つ明示的に追加したのが「データ辞書」です。
大げさなものではなく、
この数字はどこから取得したのか
↓
技術的には何を表しているのか
↓
今回の研究では何として使ってよいのか
↓
逆に、何として使ってはいけないのか
を整理したものです。
-
-
🛠️開発記録#559(2026/9/2) 仮説を検証する前に、観測経路を監査する――xStocks × Hyperliquidの観測設計を作るまで
続きを見る
今回のように複数のプロトコルをまたぐと、同じ「価格」「流動性」「借入額」のような言葉でも意味が少しずつ違います。
例えば、あるAPIで市場規模を表す数字が取れても、
その金額まで実際に売買できる
という意味ではありません。
また、
値が取得できていない
ことと、
値が0である
ことも別です。
実際、今回の監査ではこの区別が曖昧だったことで、一見すると異常に見えるデータが作られていた箇所も見つかりました。
数字自体を精密にする前に、
数字が何を意味するのかを固定する
必要がありました。

現在は「清算の地形」を観測している
こうした修正を入れたうえで、現在は対象を再定義して24時間の観測を行っています。
今見ているのは、主にMorpho側です。
各市場について、
- Morphoが担保評価に使う価格
- 市場全体の借入状態
- 借り手ごとの借入と担保
- 借入が一部の大口に偏っているか
- 担保評価価格が下がった場合、どの程度の借入が清算対象になるか
を継続的に記録しています。
かなり雑に言えば、
どの市場の、どの辺りに清算の崖があるのか
を地図にしているイメージです。
一方、まだ全体として見えていないものもあります。
価格が形成されている市場
↓
オラクル
↓
Morphoが担保評価に使う価格
という前半部分です。
一部ではかなり構造を追えるようになりましたが、すべての市場を同じ尺度で比較できるところまでは来ていません。
したがって現在の観測で、
「市場価格がこれだけ動けば、この規模の清算が起きる」
とまでは言いません。

24時間観測はエッジを探すためではなく、観測方法を確認するため
今回の24時間観測では、取引上の優位性(edge)そのものを検証しているわけではありません。
確認したいのは、
観測対象を修正し、数字の意味を整理した状態でも、時間が経つとデータ取得や計算が崩れないか
という部分です。
そのため、
- 対象市場を継続して取得できるか
- 借り手の状態を取りこぼしていないか
- 欠損値と0を混同していないか
- データの時刻を取り違えていないか
- 清算ラインの計算を継続できるか
- 保存量やAPI負荷に問題がないか
といった観測機そのものの状態も確認しています。
ここが安定して初めて、その先の比較へ進めます。
清算脆弱性研究としては、少しだけ問いが具体的になった
今回の研究は、新しい清算戦略を見つけたという話ではありません。
もともと考えていたのは、
清算が発生した後ではなく、その手前にある脆弱性を観測できないか
という問いでした。
そこから清算発生までの経路を分解し、価格とオラクルを掘っていく中で、
「清算まで近い」という状態にも複数の意味がある
ことが分かりました。
現在は、
Morpho側で清算が近いのか
だけではなく、
その清算条件を動かす価格はどこで決まり、そこから清算までどのような経路があるのか
まで分けて考えるようになっています。
この経路の中には、条件によってはさらに調べる価値がありそうな部分もあります。
ただし、現在研究中の市場、具体的な距離、判定条件についてはここでは扱いません。
現時点では、
edge_confirmed = false
tradeable_edge_confirmed = false
のままです。
「見えるもの」は少しずつ増えていますが、それを「取れるもの」へ変換できるかは別の問題です。
まとめ
今回の更新をまとめると、
清算ラインを横断比較する
↓
「清算までの距離」の意味を再確認する
↓
オラクルを通ることで、価格形成市場から見た距離とMorpho側から見た距離が異なることを整理する
↓
既存の横断比較をいったん止める
↓
市場の母集団と取得データの意味から監査し直す
↓
データ辞書を作る
↓
修正した観測系で24時間観測を開始する
という流れになりました。
今回改めて感じたのは、
数字を取れることと、その数字が何を意味しているか分かることは別
ということです。
AIを使えば、APIから大量のデータを取得し、比較表を作り、順位を付けるところまではかなり速く進められます。
ただ、
その順位は何を比較した結果なのか。
その数字を本当に同じ物差しで並べてよいのか。
という部分は、研究を進める側が確認する必要があります。
今回は少し遠回りしましたが、ここを曖昧にしたまま長期間の観測へ進むよりはよかったと思います。
まずは現在の24時間観測を最後まで通します。
その結果を見て、次に何を観測する価値があるのかをまた考えます。
それでは、また。
-
-
🛠️開発記録#560(2026/9/3) DeFi清算をbot開発の研究テーマに変えるまで
続きを見る
-
-
🛠️開発記録#559(2026/9/2) 仮説を検証する前に、観測経路を監査する――xStocks × Hyperliquidの観測設計を作るまで
続きを見る
-
-
🛠️開発記録#554(2026/8/27)AIと進めていたアルゴ研究を一度止めて、研究そのものを監査した話
続きを見る
今回新たに参照した一次情報
- Morpho Docs:List markets
市場一覧の取得方法と、listed条件の意味を確認するために参照。 - Morpho Docs:Morpho Blue API
市場状態・借り手のポジション・API上の各項目の意味を確認するために参照。