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

Samczsun著者

オリビア翻訳

オリビア編集


<<:  マイニング停止後もUniswapの取引量は減少していない。流動性マイニングは本当に必要ですか?

>>:  ビットコインマイニング、登録すると50元の現金と888元のクーポンがもらえる

推薦する

ビットコイン投資入門

編集者注:この記事は、Good Bitcoinの共同創設者兼COOであるWu Guanggeng氏(...

1枚の写真で、ブロックチェーンがAirbnb、株式市場、分散型発電など、私たちの生活をどのように変えるかがわかります。

2か月前、ゴールドマン・サックスは、ビットコインに加えて、ブロックチェーン技術の応用は金融サービス...

チアの「ハードドライブ詐欺」

「バリュー投資」と「ブロックチェーンのエンパワーメント」は毎年言及されてきました。今日、編集者は、...

ウォルマートのブロックチェーン計画がアップグレード、豚肉サプライチェーンは第一歩に過ぎない

1週間前、バビットニュースは、中国市場における豚肉サプライチェーンのセキュリティ確保を目指すウォルマ...

Filecoinは、人々が仕事を共有、整理、アーカイブする方法を改善するのに役立ちます

Filecoin ネットワーク上で重要なツールとサービスを構築しているユーザーと開発者を紹介する ...

分析:暗号通貨マイナーは代替手段を通じて自由になり、ビジネスを多様化できる可能性がある

CCNによると、暗号通貨マイナーはビットコインを採掘するために高価な採掘機器と数千ドル相当のGPUを...

CCTVはビットコインが5万7000ドルを突破し、時価総額が1兆ドルを超えたと報じた。

BlockBeatsによると、2月21日夜、CCTV-2(CCTV金融チャンネル)は「経済情報ネッ...

ナイキがイーサリアムベースの初のNFTスニーカーを発売

4月23日、世界で最も価値のあるスポーツブランドであるナイキと暗号ファッションブランドRTFKTは、...

イーサリアム ETF の将来的な影響をどう見るか: コンプライアンスの厳しい規制の下での「模倣ダンス」

イーサリアム ETF が承認された後の業界発展の変化をどのように見ていますか?まず結論を述べさせてく...

星雲全国ツアー杭州駅が無事終了しました!

昆明・広州での大成功に続き、「星雲全国ツアー」第3弾が4月25日にルメリディアン杭州で盛大に開幕しま...

分析:ウォール街の機関投資家がビットコイン市場に参入し、現在のビットコイン供給量の47.9%を支配している

ビットコインは過去最高値を記録し、S&P ダウ・ジョーンズ暗号通貨指数も発表されようとしてい...

古いDeFIプロジェクトから1,000万ドル以上が盗まれました。攻撃プロセスを簡単にまとめる

2023年4月13日、Beosin-Eagle Eye状況認識プラットフォームによると、Yearn ...

中央銀行のデジタル通貨DCEPとビットコインの違いは何ですか?そして現在の投資アドバイス

昨日、中国農業銀行がデジタル人民元をテストしているスクリーンショットがさまざまなグループで配布されま...

Ethereum 2.0 は DeFi をどのように変えるのでしょうか?

SECが6月にイーサリアムに対する告訴を取り下げた決定は、同プラットフォームの成熟と金融界における...

ロシアの財務副大臣、ビットコインと法定通貨の交換は禁止されると確認

ロシアの阿列克谢·莫伊谢耶夫財務副大臣は、ビットコインをルーブルなどの法定通貨と交換することに対して...