意見: 価格オラクルはなぜ DeFi にとってそれほど重要なのか?

意見: 価格オラクルはなぜ DeFi にとってそれほど重要なのか?

2019年末に「楽しみと利益のために低担保ローンを利用する」という記事を公開しました。その中で、私は 1 つ以上のトークンの正確な価格データに依存する Ethereum DApps に対する経済的攻撃について説明しました。今は2020年の終わりですが、残念ながらそれ以来多くのプロジェクトが非常に似たようなミスを犯しています。最も最近の例はHarvest Financeのハッキングで、プロトコルのユーザーに総額2,400万ドルの損失をもたらしました。

開発者は再入可能性などの脆弱性についてはよく知っていますが、オラクルによる価格操作は明らかに人々があまり考慮するものではありません。逆に、再入性に基づく脆弱性は長年にわたって減少している一方で、価格オラクル操作に基づく脆弱性は現在増加しています。したがって、価格オラクル操作に関する決定的なリソースを誰かが公開する時期が来たと判断しました。

この記事は3つの部分に分かれています。このテーマに詳しくない人のために、オラクルおよびオラクル操作の概要を説明します。自分の知識をテストしたい人は、ケーススタディに進んで、過去の Oracle 関連の脆弱性とエクスプロイトを確認してください。最後に、開発者がプロ​​ジェクトを Oracle による操作から保護するために使用できるいくつかの手法をまとめます。

実生活におけるオラクル操作

2015 年 12 月 1 日水曜日。あなたの名前は David Spago です。オーストラリアのメルボルンで Duke of Peking コンサートにいらっしゃいます。バンドに直接会いたいのに、舞台裏の通路との間に警備員が 2 人いて、普通の人が勝手に入場できるはずがありません。

普通の人のように行動したら、警備員はどう反応するだろうかと疑問に思います。バンドの家族は間違いなく舞台裏に入ることが許可されるので、あなたがしなければならないことは、警備員に自分が彼らの家族であることを納得させることだけです。あなたはしばらく考えた後、天才的か狂気としか言いようのない計画を思いつきました。

すべてを素早く準備した後、あなたは自信を持って警備員のところへ歩いて行きました。あなたは自分自身をペキン・ドク家の一員、デイビッド・スパゴと紹介しました。警備員が証拠を求めたとき、あなたは反駁できない証拠を見せました - Wikipedia。

警備員があなたに手を振って、しばらく待つように言います。 5分が経過し、警察が到着する前に逃げるべきかどうか迷います。あなたが帰ろうとしたとき、ルーベン・スタイルズがやって来て自己紹介をしました。あなたは彼と一緒に楽屋まで歩き、バンドのメンバーはあなたの賢さに感心し、結局一緒にビールを何杯か飲むことになった。彼らは後に、何が起こったかをFacebookのページで共有した。

価格オラクルとは何ですか?

価格オラクルとは、基本的に価格情報を調べることができるものすべてを指します。パムがドワイトにシュルート・バックの金銭的価値について尋ねると、ドワイトは価格予言者のように振る舞います。

Ethereum では、価格オラクルを含めすべてがスマート コントラクトです。したがって、価格オラクルが価格情報を取得する方法を理解することがより有用です。 1 つのアプローチは、価格 API または取引所から既存のオフチェーン価格データを取得し、それをオンチェーンに持ち込むことです。あるいは、オンチェーンの分散型取引所を参照してリアルタイムの価格を計算することもできます。

どちらの選択肢にもそれぞれ長所と短所があります。オフチェーン データは一般に変動に対する反応が遅くなりますが、これは使用目的に応じて良い特徴にも悪い特徴にもなり得ます。ただし、通常、データをチェーン上にプッシュするには少数の特権ユーザーが必要であるため、それらのユーザーが悪意を持ったり、不正な更新をプッシュするよう強制されたりしないことを信頼する必要があります。オンチェーンデータは特権アクセスを必要とせず、常に最新の状態に保たれますが、これは攻撃者によって簡単に操作される可能性があり、壊滅的な結果につながる可能性があることを意味します。

一体何が問題になるのでしょうか?

適切に統合されていない価格オラクルによって DeFi プロジェクトに重大な経済的損失が発生した事例をいくつか見てみましょう。

Synthetix sKRW Oracle 障害

Synthetix は、ユーザーが他の通貨などの資産にエクスポージャーを得ることができるデリバティブ プラットフォームです。これを実現するために、Synthetix は(当時)カスタムのオフチェーン価格フィード実装に依存していました。この実装では、一連の秘密価格フィードから計算された集計価格が一定の間隔でオンチェーンに公開されていました。これらの価格により、ユーザーはサポートされている資産に対してロングまたはショート取引を行うことができます。

2019年6月25日、Synthetixが頼りにしていた価格フィードの一つが、韓国ウォンの価格を実際の為替レートの1,000倍と誤って報告した。価格オラクルシステムの他の場所でのエラーにより、この価格はシステムによって受け入れられ、オンチェーンに投稿され、トレーディングボットがsKRW市場ですぐに売買を行いました。

合計すると、このボットは理論上10億ドル以上の利益を上げることが可能だったが、Synthetixチームはバグ報奨金と引き換えに資金を返還するようトレーダーと交渉することができた。

Synthetix はオラクル契約を正しく実装し、複数のソースから価格を取得して、トレーダーがチェーン上で公開される前に価格の変化を予測できないようにします。しかし、上流の価格情報源に障害が発生したという孤立したケースが、壊滅的な攻撃を引き起こしました。これは、オフチェーン データで価格オラクルを使用するリスクを示しています。価格がどのように計算されたかはわからないため、潜在的な障害モードがすべて適切に処理されるようにシステムを慎重に設計する必要があります。

モーゲージ

前述したように、私は2019年9月に、オンチェーンデータに依存する価格オラクルの使用に伴うリスクを概説した記事を公開しました。元の投稿を読むことを強くお勧めしますが、かなり長く、多くの技術的な詳細が含まれているため、少し圧倒される可能性があります。したがって、ここでは簡略化した説明をさせていただきます。

分散型融資をブロックチェーンに導入したいと想像してください。ユーザーは資産を担保として預け入れ、預け入れた資産の価値によって決まる金額まで他の資産を借り入れることができます。ユーザーが ETH を担保にして USD を借りたいとします。 ETHの現在の価格は400ドルで、担保比率は150%です。

ユーザーが 375 ETH を預けた場合、それは 150,000 ドルの担保を預けることに相当します。担保1.50ドルごとに1ドル借りることができるので、システムから最大10万ドルを借りることができます。

しかしもちろん、ブロックチェーンでは、1 ETH の価値が 400 ドルであると宣言するだけでは十分ではありません。悪意のあるユーザーが 1 ETH の価値が 1,000 ドルであると宣言し、システムからすべてのお金を持ち出すことができるからです。そのため、開発者にとっては、Uniswap、Kyber、その他の分散型取引所の現在のスポット価格など、オラクルによって読み取られた最新の価格を取得したいという誘惑に駆られます。

一見すると、これは正しいことのように思えます。結局のところ、ETH を購入または販売したいときはいつでも、Uniswap の価格は常にほぼ正確であり、偏差があれば裁定業者によってすぐに修正されます。しかし、以下の例に示すように、取引中に分散型取引所のスポット価格に大きな誤差が生じる可能性があることが判明しました。

Uniswap の準備金がどのように機能するかを考えてみましょう。価格は準備金に保有されている資産の量に基づいて計算されますが、ユーザーが ETH と USD 間で取引すると、準備金に保有されている資産は変化します。悪意のあるユーザーが、プラットフォームからローンを借りる前または借りた後に取引を行った場合はどうなりますか?

ユーザーはローンを組む前に、200万ドルで5,000 ETHを購入しました。現在、Uniswap取引所で計算された価格は、1 ETH = 1,733.33米ドルです。現在、彼らの 375 ETH は、借り入れた 433,333.33 ドル相当の資産の担保として使用できます。最後に、5,000 ETH を元の 2,000,000 ドルと交換し、価格をリセットします。最終結果は、あなたの貸付プラットフォームが、ユーザーが担保を差し出すことなく、さらに 333,333.33 ドルを借りることを許可したということになります。

このケーススタディは、分散型取引所を価格オラクルとして使用する場合に最もよくある間違いを示しています。つまり、攻撃者は取引中に価格をほぼ完全に制御でき、その価格を正確に読み取ろうとすることは、価格が落ち着く前に秤でその重さを読み取ろうとするようなものです。間違った番号を受け取ってしまう可能性が高く、状況によっては多額の費用がかかる可能性があります。

Synthetix MKR 操作

2019年12月、Synthetixは価格オラクル操作により再び攻撃を受けました。注目すべき点は、オンチェーンとオフチェーンの価格データの間の障壁を越えることです。

Reddit ユーザーの u/MusaTheRedGuard は、攻撃者が sMKR と iMKR (リバース MKR) をターゲットにした非常に疑わしいトランザクションをいくつか実行したことに気づきました。攻撃者はまずsMKRを購入してMKRのロングポジションを取得し、次にUniswap ETH/MKR取引ペアから大量のMKRを購入しました。しばらく待った後、攻撃者は sMKR を iMKR に売却し、MKR を Uniswap に売却します。その後、彼らはそのプロセスを繰り返しました。

舞台裏では、攻撃者は Uniswap 経由でトランザクションを実行し、Synthetix 上の MKR の価格を自由に変更することができました。これは、Synthetix が依存しているオフチェーン価格フィードが実際には MKR のオンチェーン価格に依存しており、裁定取引業者が市場を最適な状態に戻すための流動性が十分ではないためと考えられます。

この事件は、オフチェーンの価格データを使用していると思っていても、実際にはオンチェーンの価格データを使用している可能性があり、このデータの使用の複雑さにさらされる可能性があることを示しています。

bZxハック

2020年2月、bZxは数日間で2回ハッキングされ、約100万ドルの損失が発生しました。 palkeo が書いた両方のハックの優れた技術的分析はここで見つけることができますが、ここでは 2 番目のハックについてのみ見ていきます。

2 回目のハッキングでは、攻撃者はまず Kyber 上の sUSD のほぼすべてを ETH で購入しました。その後、攻撃者は Synthetix から 2 回目の sUSD を購入し、それを bZx に預けました。攻撃者は、sUSD を担保にして、許可された最大額の ETH を借り入れました。その後、sUSD を Kyber に売り戻します。

注意深く見ていれば、これは本質的に同じ担保付きローン攻撃だが、異なる担保と異なる分散型取引所を使用していることに気づくでしょう。

yVault バグ

2020 年 7 月 25 日に、新しい yVault 契約の展開に関するバグを yEarn に報告しました。以下に簡単にまとめます。 yVault システムを使用すると、ユーザーはトークンを預け入れ、自分で管理することなくトークンから利益を得ることができます。内部的には、Vault は yVault トークンの総発行数と預けられた基本トークンの総量を追跡します。 1 つの yVault トークンの価値は、発行されたトークンと預けられたトークンの比率によって決まります。金庫によって得られた利益は、発行されたすべての yVault トークン (したがって、すべての yVault トークン保有者) に分配されます。

最初の yVault では、Balancer MUSD/USDC プールに流動性を提供することで、ユーザーは USDC で利回りを得ることができます。ユーザーが Balancer プールに流動性を提供すると、その見返りとして BPT を受け取ります。この BPT はプールの一部と引き換えることができます。したがって、yVault は、BPT で償還できる MUSD/USDC の量に基づいて保有価値を計算します。

これは正しい方法のように思えますが、残念ながら、前述と同じ原則が適用されます。つまり、トランザクション中の Balancer プールの状態は安定しておらず、信頼できません。この場合、Balancer によって選択された価格曲線により、ユーザーは USDC から MUSD にスワップするときに 1:1 の交換レートを取得せず、実際にはプールにいくらかの MUSD を残すことになります。これは、BPT の価値が一時的に高騰する可能性があることを意味し、攻撃者が価格を自由に操作して、その後、国庫を枯渇させる可能性があります。

この事件は、価格オラクルが必ずしも価格データを明確に反映しているわけではないことを示し、開発者は取り込むデータの種類に注意し、権限のないユーザーによって簡単に操作される可能性があるかどうかを考慮する必要があることを示しています。

イールドファーミングのハック

2020 年 10 月 26 日、未知のユーザーが、皆さんもすでにご想像のとおりの手法を使用して流動性マイニング プールにハッキングしました。公式の事後検証はここで読むことができますが、もう一度要約します。攻撃者は取引を実行して Curve プールの USDC の価格を下げ、割引価格でファーミング プールに入り、以前の取引を元に戻すことで価格を回復し、より高い価格でファーミング プールから出ました。その結果、3,300万ドル以上の損失が発生しました。

どうすれば自分を守れるでしょうか?

ここまで読んで、共通点を認識できたと思います。価格オラクルを使うことは必ずしも安全ではないということ、そして適切な予防策を講じなければ、攻撃者がプロトコルをハッキングして、あなたのお金をすべて彼らに送ってしまう可能性があるということです。万能の解決策はありませんが、過去に他のプロジェクトで効果があった解決策をいくつか紹介します。おそらく、これらのいずれかがあなたにも当てはまるでしょう。

十分な流動性を持つプールを見つける

プールの浅い部分に飛び込むのと同じように、流動性の低い市場に飛び込むのは苦痛を伴い、人生を永遠に変える大きな出費につながる可能性があります。使用しようとしている特定の価格オラクルの複雑さを考慮する前に、トークンの流動性がプラットフォームとの統合を保証するのに十分かどうかを検討してください。

明日の百より今日の五十

Uniswap での潜在的な交換レートを見るのは興味深いことですが、実際に取引をクリックしてトークンがウォレットに入るまでは、それが最終価格であることを意味するわけではありません。同様に、2 つの資産間の為替レートを決定する最良の方法は、資産を直接交換することです。この方法は、キックバックや予期せぬ出来事が起こらないため優れています。ただし、貸付プラットフォームなどのプロトコルでは元の資産を保持することが必要となるため、これは適用できない可能性があります。

分散型オラクル

オンチェーン データに依存するオラクルの問題を要約すると、オラクルが少し新しすぎるということだ。その場合、少し人工的な遅延を導入してみてはいかがでしょうか? Uniswap のような分散型取引所の最新価格で自動的に更新される契約を作成しますが、これは少数の特権ユーザーからの要求があった場合のみ行われます。攻撃者が価格を操作できたとしても、プロトコルに実際にそれを使用させることはできません。

このアプローチは実装が非常に簡単で、すぐに解決できますが、いくつか欠点があります。リンクが混雑しているときには、希望どおりに価格を更新できない可能性があり、サンドイッチ攻撃に対して依然として脆弱です。さらに、ユーザーは価格が実際に最新の状態に保たれていることを信頼する必要があります。

遅延防御

価格オラクルの操作は時間に敏感な操作です。裁定取引業者は常に監視し、最適でない市場を最適化する機会を期待しているからです。攻撃者がリスクを最小限に抑えたい場合、価格オラクルを操作するために必要な 2 つのトランザクションを 1 回のトランザクションで完了し、裁定取引業者が間に割り込む機会を残さないようにする必要があります。プロトコル開発者として、システムがサポートしていれば、ユーザーがシステムに出入りする間に 1 ブロックほどの短い遅延を実装するだけで済む場合があります。

もちろん、これは構成可能性に影響を与える可能性があり、マイナーとトレーダー間の協力が増加しています。将来的には、悪意のある行為者が、協力するマイナーが誰も介入して利益の一部を奪うことがないようにすることを知りながら、複数の取引所にわたって価格オラクル活動を操作する可能性があります。

時間加重平均価格 (TWAP)

Uniswap V2 では、オンチェーン開発者が使用できる TWAP オラクルが導入されています。このオラクルによって提供される特定のセキュリティ保証についてはドキュメントで詳しく説明されていますが、一般的に、チェーン上の輻輳が長期間発生しない大規模なプールの場合、TWAP オラクルはオラクル操作攻撃に対して非常に耐性があります。ただし、実装の性質上、市場のボラティリティが高いときには十分に応答しない可能性があり、チェーン上にすでに流動性のあるトークンがある資産に対してのみ機能します。

M-of-N 価格フィード

何かを正しくやりたいなら、自分でやれ、と言う人が時々います。 N 人の信頼できる友人を集めて、適切なオンチェーン価格だと思うものを提出してもらい、最良の M 個の回答が現在の価格になったらどうなるでしょうか?

今日では多くの大規模プロジェクトがこのアプローチを採用しています。 Maker は信頼できる組織によって運営される一連の価格フィードを実行し、Compound は Open oracle を作成して Coinbase のようなレポーターを擁し、Chainlink は Chainlink オペレーターから価格データを集約してチェーン上で公開します。これらのソリューションのいずれかを使用することを選択した場合は、信頼を第三者に委任したことになり、ユーザーも同様に行う必要があることに注意してください。レポーターがチェーン上で手動で更新を公開することを要求するということは、市場のボラティリティやチェーンの混雑時に価格更新がタイムリーに完了しない可能性があることも意味します。

結論は

価格オラクルは DeFi セキュリティの重要な要素ですが、見落とされがちです。価格オラクルを安全に使用するのは難しく、あなたとユーザーの両方を困らせる方法が数多くあります。この記事では、過去の価格オラクル操作の例を示し、取引の途中で価格情報を読み取ることは安全ではなく、壊滅的な経済的損失につながる可能性があることを明らかにしました。また、価格オラクル操作に対抗するために過去に他のプロジェクトが使用したいくつかの手法についても議論しました。しかし、結局のところ、状況はそれぞれ異なるため、価格オラクルを正しく使用しているかどうかわからない場合があります。

<<:  トークンのエンパワーメント:暗号通貨業界におけるユーザーエクスペリエンスの最大の障害

>>:  ユーホン・ビットコイン・マイニング・カンパニーは、米国株式上場の数ヶ月前に、マイニングマシンが押収され、XMXは今後買い戻されないと発表した。

推薦する

カード凍結の復活の裏側:暗号通貨の世界におけるOTC引き出しチャネルの監視の苦痛

最近、OTC取引に参加した一部のユーザーから、市場が新たなカード凍結に遭遇し、以前のカード凍結事件と...

BitTorrentの創設者ブラム・コーエンがビットコイン業界に参入し、より優れた暗号通貨を開発

ビットコインとBitTorrent [1]は、異なる時代の2つの革新的な技術ですが、いくつかの類似点...

Sogou Translate インテリジェントオンライン翻訳ツール 正確な翻訳 多言語翻訳

中国を代表するオンライン翻訳サービスプラットフォームであるSogou Translationは、その...

NEWGからBTCへの交換の新機能が正式に発表されました!デジタルゴールドは価値の急上昇をもたらすかもしれません!

過去2年間で、デジタル通貨は非常に大きな増加を見せ、数万人の注目を集め、デジタル通貨の発展に伴い、ま...

Fuyuancoinがタイに来るという噂

最近、富源富益集団がタイで富源コインを積極的に宣伝し、新しい富源コイン取引センターを立ち上げるという...

Friend.techは引き続き人気だが、市場の熱狂は疑念で隠せない

8月10日にはFriend.tech招待ベータ版がリリースされ、初日の取引量は4,400ETH(約8...

連邦準備理事会(FRB)の理事たちがビットコインとブロックチェーンについて本当はどう考えているのかを読み解く

連邦準備制度理事会のラエル・ブレイナード総裁は最近の演説でブロックチェーン技術の可能性を称賛し、間接...

英国人男性は5億5000万ドル相当のビットコインを失い、8年間ゴミ捨て場に閉じ込められていた。

埋め立て地は汚くて乱雑な感じがするので、普通の人なら近づきたいとは思わないでしょう。しかし、何もする...

規制当局はICOに対して厳しい警告を発している。ビットコイン中国、ICOコイン取引を一時停止

[TechWeb Report] 北京時間9月3日のフォーチュンによると、ビットコインの価格は東部時...

イノシリコンの反応:イノシリコンの鉱山農場の火災に関する噂は噂に過ぎない

今朝、外国メディアは中国のイノシリコン鉱山で火災が発生したと報じ、暗号通貨投資家のドービー・ワン氏は...

グローバル仮想携帯電話番号受信プラットフォームは、複数の国でのSMS認証コード受信サービスをサポートしています。

今日のデジタル時代において、仮想携帯電話番号サービスは、多くのユーザーにとってプライバシーの保護、ア...

過去からの教訓: イーサリアムよりも古いパブリックチェーンの現状はどうなっているのでしょうか?

最初の 1CO デジタル通貨は誰ですか?イーサリアムは最も初期のパブリックチェーンではないのですか?...

Huobiは、近年のビットコインの発展を包括的に理解できる「2014-2016年グローバルビットコイン発展レポート」を共同で発表しました(全文ダウンロード)

ビットコインの生産量は10%を超える急騰を3回経験した後、7月10日に2度目の半減期を迎えました。こ...