
オラクルとフロントラン取引
TechFlow厳選深潮セレクト

オラクルとフロントラン取引
Angleのオラクルソリューションについて深く考察し、フロントランニング取引を軽減するためにどのように構築されているかを検証する。
翻訳:登録コミュニティ
Angle Protocolの設計には多くの研究が注ぎ込まれています。一見するとその構造は単純に見えるかもしれませんが、背後には理解すべき複雑な概念が多数存在します。このシリーズでは、プロトコルのいくつかの要素を深く掘り下げ、なぜそのように設計されたのかを説明します。
最初の記事では、Angleのオラクルソリューションと、それがフロントラン取引を軽減するためにどのように構築されているかについて説明します。

はじめに
Angleは、ユーザーが他のトークンと引き換えにagTokens(ステーブルコイン)を発行および償還できるようにします。トレーダーは利用可能な担保/ステーブルコインペア上でロングポジションを開くこともできます。これらは従来のパーペチュアル契約ではありません。均衡は資金レートに依存するのではなく、執行価格は直接オラクルから得られます。
これらのユースケースを考慮すると、プロトコルは資産を信頼性高く評価する方法を必要とし、ユーザーに公正な価格を提示しつつ、自身をフロントラン攻撃から保護する必要があります。この記事のFAQで、samcszunはなぜこれが単に現物価格を使うだけではないかを説明しています。
フロントラン取引は市場における長年の問題です。これは一部の参加者が他よりも早く情報を得ることができ、リスクを負うことなく無リスクの利益を得られる状況に帰着します。歴史的に、オンチェーンでのこの現象への対処は非常に困難でした。イーサリアム取引の高コストと低速度により、オラクルが価格を迅速かつ頻繁に更新することが難しくなります。これにより、オフチェーン価格とオンチェーン価格の間に遅延が生じ、フロントラン取引者がこのギャップを利用して利益を得ることが可能になります。
すべてのステーブルコインプロトコルがオラクル遅延によるフロントランリスクを気にしているわけではありません。MakerのDAIの場合、オラクルの遅延は通常プロトコルにとって有利です。ある人が自分のポジションが次のオラクル更新で価格下落により清算されると知った場合、彼女は資金をリレイヤーに戻すインセンティブを持ち、結果としてプロトコルの健全性と担保比率が向上します。
合成資産(Synthetix)は、合成資産と担保の間でオラクル価値の交換を可能にしており、ステーブルコインプロトコルがフロントラン取引に直面する課題の完璧な例です。彼らのブログ記事は、このプロトコルとフロントラン取引との長い歴史、過去に受けたいくつかの攻撃を要約しています。
Synthetixと同様に、Angleも価格スリップなしのオラクル価値で資産交換を許可しています。したがって、Angleも同じフロントラン問題に直面しています。Angleコアチームはフロントラン取引を防ぐために多大な努力を払っています。この分野で実施された主な改善点は二つあります。特定のオラクル設計と動的手数料構造です。本稿では、Angleのオラクル設計とその背景にある理由を説明します。
オラクル更新のフロントラン:一例
Angleのソリューションを詳しく見る前に、まずフロントラン取引がプロトコルにどのように損害を与えるかを理解してみましょう。ETHがAngleステーブルコインの担保として受け入れられている事例を想定します。
取引手数料なし
攻撃者がオフチェーンのETH価格を監視しており、Chainlinkオラクルがより高い価格(p0からp1へ、ただしp0 < p1)でオンチェーンデータを更新しようとしていることに気づいたとします。この攻撃者は、p0の価格でxのステーブルコインを償還し、x/p0のETHを受け取り、価格がp1に更新された後にプロトコルに再販売することで利益を得ることができます:

このオラクル更新に対するフロントランにより、この利益がプロトコル準備金から奪われます。x = 100ETH、p1 = 1.01 * p0(価格上昇1%)と仮定すると、攻撃者はプロトコルの準備金から1ETHを奪うことを意味します。
取引手数料あり
幸いにも、取引手数料を導入することでこの問題を緩和できます。なぜなら、手数料はフロントラン取引者の利益を削減し、機会を減らすためです。
例えば、発行と償還の取引手数料が一定で等しいfである場合、p0でxのステーブルコインを償還し、p1でETHをプロトコルに再販売する攻撃者の利益は以下のようになります:

以前のケースと比較して、手数料により利益が削減されます:

取引手数料がf=0.3%であり、前述の例に従う場合、攻撃者の利益は現在わずか0.39ETHです。
取引手数料と二つのオラクルソリューション付き
この機会をさらに減らすために、補助的なオラクルに依存して二つの可能性のある価格源を利用できます:pC(Chainlink価格)とpU(Uniswap価格)。プロトコルは最も有利な価格(発行時には低い価格、つまりユーザーからトークンを購入、償還時には高い価格、つまりETHをユーザーに販売)を利用することで、フロントラン取引の機会をさらに魅力を失わせます。
-
上述と同じ機会から利益を得ようとするトレーダーを想像してください。pC0 < pC1と仮定します。
-
一方で、pUは定数とみなすことができ、pC0に近く、したがって次のように考えられます:

後ほど説明しますが、Uniswapの時間加重平均価格(TWAP)の設計により、pUはpCに比べて遅れる傾向があります。
-
この場合、潜在的な機会から利益を得ようとする攻撃者は、pC0でプロトコルからトークンを購入(ステーブルコインを償還)し、x(1-f)/pC0のETHを受け取り、その後pU1でより高い価格で再販売することになり、操作の損益は次のようになります:

前述の例の数字を維持すると、攻撃者はこの操作で最終的に0.6ETHの損失を被ります。
Angleのソリューション
Angleの設計は、このフロントランリスクを排除するために特別に行われています。そのため、プロトコルは上記の例と非常に類似したメカニズムを実装します。このセクションでは、潜在的な既存の選択肢をより詳細に検討し、実装予定の設計の具体的な内容に焦点を当て、TWAP時間窓の選択に関する分析を行います。
選択肢
Angleのユースケースに適している主要なオラクルソリューションは以下の通りです:
-
Chainlink
-
Uniswap V3 TWAP
-
Maker Feeds
Chainlinkは明らかな第一選択です。これは広く使用されている分散型オラクルソリューションで、複数の資産にわたる複数のデータソースを提供します。価格は複数のソースから取得され、分散化されたリレーネットワークを通じて送信されるため、信頼性が高く、アクセス可能で、改ざんが困難です。しかし、特定のデータソースは「顕著な」価格変動(例:ETH/USDの0.5%)後または一定時間経過後にのみ更新されることが多く、Chainlinkの価格は常に実際の市場価格に遅れをとります。したがって、Chainlinkの価格更新はオフチェーン価格やマイメンプールを参照することでフロントランされる可能性があります。
Uniswap V3 時間加重平均価格(TWAP)はもう一つの明白で広く使われるオラクルソリューションです。Uniswapのコントラクトから特定の期間(数秒から最大9日まで)のプール内トークンの時間加重平均価格を照会できます。価格は指定された期間内の二つのトークン間の価格平均に基づいて計算されます。これにより、TWAPを操作するには大量の資金と時間がかかり、ほとんどの場合非効率的になります。
それでも、TWAPは過去のブロック観測の平均価格であるため、リアルタイムのオフチェーン価格だけでなく、Chainlinkの価格ソースに対しても遅れる傾向があります。単独で使用する場合、プロトコルをフロントラン攻撃から完全に保護することはできません。
さらに、TWAPはオンチェーンのトークンペアの価格しか報告しないため、オンチェーン(したがってUniswapプールにもない)で表現されていない資産、例えば外貨ステーブルコインへのアクセスを提供するプロトコルの目的を満たせません。
Maker Oraclesの使用もAngleのもう一つの選択肢でした。しかし、これはMakerDAOを信頼し、ガバナンスプロセスを通じて価格データへのアクセスを申請することを意味します。また、価格ソースもMakerが使用するものに限定されるため、私たちにとっては不十分です。なぜなら、外貨為替レートへのアクセスを望んでいるからです。
Angleの設計:Chainlink + UniV3 TWAP
以上を踏まえ、Angle ProtocolのChainlinkオラクルと10分間のUni V3 TWAPを組み合わせることに決定しました。これにより、いつでも可能な限り公正な価格を取得しつつ、プロトコルをフロントラン攻撃から保護できます。
一般的に、Angleのコントラクトは二つのチャネルの価格を比較し、プロトコルにとって最も有利な価格を使用します。この設計により、プロトコルのレートを利用してフロントランする行為がより複雑になります。なぜなら、二つのオラクルを同時に操作またはフロントランする必要があるためです。
具体的には、私たちのコントラクトはすべての変動資産/ステーブルコインペアに対してChainlinkとUniswapの最良価格を取得し、Chainlinkの外貨オラクルを使って必要な法定通貨に価格を変換します。各担保/ステーブルコインペアには、専用のオラクルコントラクトと独立した価格ソースが割り当てられます。
どのように動作するか?
例えば、ユーザーがETH/agEURペアで取引したいとします。私たちのコントラクトはETH/USDとUSD/EURの価格を取得する必要があります。ETH/USDについてはChainlinkからの最良価格、ETH/USDC UniV3プールについては10分間のTWAPを保持します。その後、外貨USD/EURの価格をChainlinkから取得します。
例:Uniswap ETH/USDC TWAP:1900 USD(プロトコルは通常USDCがアンカーを維持していると仮定、つまり1 USDC = 1 USD);Chainlink ETH価格:1850 USD;Chainlink USD価格:1.16 EUR。この状況でユーザーがagEURを発行したい場合、プロトコルは入手可能な低いETH/USD価格、つまりChainlinkの1ETHあたり1850USDを使用します。逆に同じ状況でユーザーがagEURをwETHと引き換えに償還したい場合、プロトコルは高い価格、つまりUni ETH/USDC TWAPの1900を使用します。いずれの場合も、プロトコルはChainlinkのUSD/EUR 1.16の為替レートを使ってETH/USDをETH/EURに変換します。同様に、パーペチュアル契約を開設したいユーザーには最高価格を使い、契約を終了したいユーザーには最低価格を使います。
より一般的には:
-
価格を必要とするユーザーコントラクトが関連するオラクルコントラクトを呼び出します。
-
ペアの種類に応じて、オラクルコントラクトはUniV3 TWAPとChainlinkから価格を読み取るか、(例えばステーブルコイン間交換など)Chainlinkからのみ読み取り、メインコントラクトに返します。
-
実行される操作(発行、償還、開設、終了)に応じて、関連コントラクトはプロトコルにとって最適な価格を保持し、取引を実行します。
Uni V3 TWAP時間窓の選択
AngleコントラクトはTWAPに10分間の時間窓を使用します。この選択は慎重になされました。なぜなら、異なる時間窓は全く異なる価格構造につながる可能性があるためです。
異なる時間窓の違い
Angleの場合、一方で時間窓は十分に長く設定されるべきです。そうすることで、プロトコルと現物価格の間に十分な遅延が生まれます。これは確かに価格変動時に発行価格と償還価格の間でより大きなスプレッドを得ることを可能にし、Chainlinkのフロントランリスクが倍増するときに役立ちます。さらに、時間窓が長いほど、最近の観測が価格に与える影響が小さくなるため、TWAP価格を操作するのが難しくなります。
一方で、プロトコルは依然としてユーザーに公正で最新の価格を提供する必要があります。あまりに広い時間窓は現在の市場価格との間に過大な価格差を生み、あまりに狭い時間窓は望む価格差を与えません。
Chainlink価格源との比較:10分と60分のTWAP
なぜ最終的に10分間の時間窓を選んだのかを理解するために、以下にETH/USDCの10分および60分のTWAPと、Chainlink ETH/USD価格およびCoinbase終値の比較を示します。
価格遷移中に、ユーザーが発行/終了、または償還/開設を行う際にプロトコルが使用する上限・下限レートが、ChainlinkとUniswapのTWAP間の最適価格にどう移動するかがわかります。


60分のTWAPは市場価格から大きく離れる傾向があり、一方で10分のTWAPはChainlink価格源に有益なバッファを提供しつつ、価格を市場に十分近い状態に保ちます。

最初のグラフからわかるように、ボラティリティが高いほど、ChainlinkとUniswapの価格差は大きくなります。逆に、価格が一定期間安定している場合、UniswapとChainlinkの価格源は互いに接近します。
TWAPをフロントランに対する追加保護として使うことは、実質的に価格変動の大きい時期に動的により高い有効手数料を課すことと同等です。なぜなら、この時期はオンチェーンオラクルの遅延によりフロントランリスクが高まるためです。この高い有効手数料の代償として、裁定取引者がプロトコルを通じてステーブルコインを直接再価格する能力が低下します。
ほとんどの場合、UniswapとChainlinkの価格は非常に似ており、ユーザーは二つのオラクルソリューションを使っていることさえほとんど感じません。高ボラティリティ期には、現在と将来のChainlinkオンチェーン価格の間に重要な価格差があるため、プロトコルがフロントランされる可能性がありますが、そのときにはプロトコル価格が異なり、フロントラン攻撃から保護されます。
Synthetixの手数料回収/払い戻しに注目
Angleのオラクル研究は、Synthetixのフロントランに関するガバナンス議論と関連ブログ記事から大きく影響を受けています。私たちの研究では、2020年2月に実施された彼らのもう一つの選択肢である手数料回収/払い戻しにも遭遇しましたが、これは最終的に一時的なものでした。
彼らが行ったのは、取引に待機期間を設け、その間ユーザーが使用したいSynthを操作できないようにすることでした。この期間中、オラクルは取引が不整合の影響を受けていないか、つまり実行時と待機期間終了時の間に価格差があるかどうかをチェックできます。もし存在すれば、その価格差はユーザーまたはプロトコルが他方に支払うか、次回のSnythetixとの取引で支払われます。
このソリューションはフロントランを減らすのに非常に効果的でしたが、待機時間を延ばし手数料を増やす必要があり、すべてのトレーダーにとって非常に悪いユーザーエクスペリエンスをもたらしました。また、多くのユースケースにおいてSynthが他のプロトコルと組み合わされることを阻止しました。SIP-120では、彼らはこのソリューションを大型取引にTWAPオラクルを使用する案に置き換えました。
結論
Angleの特定のオラクル設計はプロトコルに二つの主要な影響を与えます:
-
攻撃者はプロトコルを騙すために二つの市場を操作する必要があり、フロントラン取引の成功リスクが大幅に低下します。
-
市場にストレスがある時期、プロトコルはユーザーに最良価格を提示しない可能性が高いです。
最後の影響はFeiのガバナンスフォーラムで議論されたトピックです。最良の取引執行を提供することがプロトコルの中核目標ではないため、プロトコルの安全性を確保する上で、フロントラン耐性の方が重要だと考えます。高ボラティリティ期間中はサブマーケットがより良い取引執行を提供します。
Angleプロジェクトでの私たちの目標は、完全に担保された効率的なステーブルコインプロトコルを設計することです。これには、プロトコルが不利な立場に騙されないようにするために多くの側面を考慮する必要があります。その一つがフロントラン耐性です。これは特に重要です。なぜなら、オラクルに依存するオンチェーン分散型ステーブルコインの安定性は、そのオラクルに依存するからです。
TWAP形式の二次価格フィードを追加することで、プロトコルは高市場ボラティリティの潜在的な悪影響と、その瞬間に現れるフロントラン機会を軽減できます。
最後に注意すべきは、このオラクルソリューションは柔軟性と拡張性を維持していることです。一方で、Angleガバナンスはいつでも投票してオラクルコントラクトを更新できます。他方で、Chainlinkがサポートする任意の価格フィードに対してオラクルを作成可能です。これは、金融資産を資本効率の良い方法でオンチェーンにもたらすというAngleのビジョンを実現するための最小限のサポートです。
TechFlow公式コミュニティへようこそ
Telegram購読グループ:https://t.me/TechFlowDaily
Twitter公式アカウント:https://x.com/TechFlowPost
Twitter英語アカウント:https://x.com/BlockFlow_News














