本文へ移動

フラッシュローン

フラッシュローンは、1回のアトミックなトランザクション内で一時的なオンチェーン流動性を提供します。コールバック、返済チェック、裁定取引、清算、手数料、MEV、プロトコルの脆弱性が結果にどう影響するかを解説します。

更新日

教育目的の情報であり、投資助言ではありません。投資によって損失が生じる可能性があります。

要点

フラッシュローンとは、一度のアトミックなトランザクションが続く間だけ利用できるスマートコントラクト上の流動性です。典型的な仕組みでは、貸付コントラクトがトランザクションの終了前に元本と手数料の返済を求めるため、借り手は担保を差し入れません。必要な決済が行われなければ実行はリバートされ、そのトランザクションによる状態変更は保持されません。

この設計により、コントラクトは運用者が元本全額を事前に用意しなくても、一時的な資本を裁定取引、清算、担保スワップ、債務の借り換えに利用できます。ただし、無償で利益が得られるわけではありません。戦略はローン手数料、取引手数料、スリッページ、ガス代に加え、不利な約定やMEVの影響も吸収する必要があります。プロトコルによっては即時返済の代わりに通常の債務ポジションを開ける場合もありますが、その方法には担保または信用委任が必要であり、無担保のフラッシュローンと混同すべきではありません。

フラッシュローンは、有用な取引にも攻撃にも影響を増幅させることがあります。フラッシュローンが供給するのは資本であり、損失を生むエクスプロイトには、操作可能な価格入力、誤った会計処理、安全でないコールバック、ガバナンス規則の不備など、別の弱点が必要です。

仕組み

  1. リクエスト: 受取側コントラクトが流動性プールに対し、10,000,000 USDCなどの資産と数量を要求し、戦略に必要なパラメーターを渡します。
  2. 送金とコールバック: プールが資産を送金した後、受取側を呼び出します。スワップ、清算、返済、担保変更はすべて、同じトランザクション内にネストされたコントラクト呼び出しによって行われます。
  3. 戦略の実行: 受取側は一時的な資金を利用します。外部呼び出しはコントラクトへの再入を招いたり、予想外の価格をもたらしたりする可能性があるため、実装には明示的なアクセス制御、入力値の検証、スリッページ上限、安全な承認管理が必要です。
  4. 決済チェック: 受取側は支払額を送金するか、その引き落としを承認します。単純なAave型のフローでは、コールバック後にプールが元本とプレミアムを引き落とします。残高またはアローワンスが不足していればリバートします。
  5. アトミックな結果: すべての呼び出しが成功すれば、最終状態が記録されます。捕捉されないエラーが発生した場合や決済に失敗した場合、Solidityの状態を巻き戻す例外により、その呼び出しとサブコールでの変更が取り消されます。ただし、送信者は失敗したトランザクションに使われたガス代を失う可能性があります。

アトミック性は、貸し手がトランザクション内で負う信用エクスポージャーを解消しますが、借り手の戦略が収益性、秘匿性、コードの正確性を備えていることまでは保証しません。利用可能な流動性、対象資産、プレミアム、コールバックインターフェース、債務への転換オプション、停止制御はプロトコルごとに異なり、ガバナンスによって変更される可能性があります。

あるコントラクトが10,000,000 USDCを借り、あるプールで資産を購入して別のプールで売却するとします。元本をA、フラッシュローン手数料をF、ガス代と実行コストをG、スリッページとその他の取引コストをS、売却で受け取るUSDCをRとすると、単純化した損益分岐条件はR >= A + F + G + Sです。

二つのスワップで10,012,000 USDCが戻り、元本と手数料を含むローン返済額が10,009,000 USDC、ガス代とその他の実行コストが2,000 USDCだったとします。単純化した利益は10,012,000 - 10,009,000 - 2,000 = 1,000 USDCです。

この見かけ上の利幅は、トランザクションが取り込まれる前に消える可能性があります。他のサーチャーがトランザクションをコピーしたり、より高い条件を提示したりすることがあり、プールの準備金が変化する場合や、トークンに予期しない送金手数料がかかる場合、ガスを消費した後にトランザクションがリバートする場合もあります。コントラクトは最低許容出力量を強制し、実現した結果がそれを下回ればリバートすべきです。ダッシュボード上の気配値は、実行可能な利益ではありません。

リスク

  • 戦略とコントラクトのリスク: コーディングミス、安全でない承認、悪意あるトークン、再入経路、不正なコールバック認可により、受取側コントラクトがすでに保有している資金を失う可能性があります。
  • 価格・流動性・スリッページのリスク: 準備金が動けば、提示された価格差は消える可能性があります。流動性の薄いプールでは深刻な価格インパクトが生じることがあり、操作可能な現物市場に基づくオラクルでは、一時的な資本によってプロトコルの判断が歪められる可能性があります。
  • MEVと順序のリスク: 公開された保留中のトランザクションは、コピー、サンドイッチ、フロントラン、バックランの対象になり得ます。非公開での送信は一部のエクスポージャーを減らしますが、ビルダーやリレーへの依存が生じ、取り込みを保証するものでもありません。
  • 手数料とリバートのリスク: ローンのプレミアム、取引所手数料、ガス代、トークン送金手数料、優先手数料をすべて賄う必要があります。リバートした取引では状態変更が取り消されても、通常はガス代を失います。
  • プロトコルとガバナンスのリスク: 一時停止、アップグレード、プレミアムの変更、流動性の引き出し、オラクル障害、連携するいずれかのプロトコルの障害により、本来は妥当な戦略でも成立しなくなる可能性があります。
  • 運用と法的リスク: 侵害された鍵、誤ったアドレス、信頼性の低い自動化、制裁、税務、その他の法域固有の規則により、スマートコントラクト上の計算外で損失や義務が生じる可能性があります。

プロトコルのレビュー担当者にとって、インシデントのトレースにフラッシュローンが含まれることは、一時的な資金調達の証拠ではあっても、根本原因の証明ではありません。状態遷移を再現し、どの不変条件、価格情報源、権限、会計規則によって価値の流出が許されたのかを特定する必要があります。

よくある誤解

誤解 1:フラッシュローンは無料で使える資本である

フラッシュローンは厳格な決済条件を伴う一時的な流動性です。成立する戦略は、必要額を返済したうえですべての実行コストも賄わなければなりません。それができなければ、リバートするか損失を出します。

誤解 2:借り手はブロック内の後の時点まで資金を保持できる

典型的なローンは、単に同じブロックのどこかではなく、同じトランザクションのコールスタック内で決済する必要があります。資金をウォレットへ移し、後続のトランザクションで返済することはできません。

誤解 3:アトミックな実行なら損失リスクはゼロである

アトミック性は捕捉されない失敗後の状態変更を取り消しますが、すでに消費したガス代は返還しません。また、不利な価格設定、漏えいした承認、MEV、受取側が呼び出し前から保有していた資金の損失も防ぎません。

誤解 4:すべてのフラッシュローンは攻撃である

裁定取引、清算、担保スワップ、債務の借り換えは通常の用途です。エクスプロイトの原因は、破綻したオラクル、権限、会計、ガバナンス、コールバックの前提にあります。フラッシュローンは、それを悪用するのに十分な一時的資本を提供するだけの場合があります。

誤解 5:提示された価格差が大きければ利益は保証される

利益は、すべての手数料とスリッページを差し引いた後の実行可能価格とトランザクション順序によって決まります。対象ブロックの想定状態に対してシミュレーションを行い、最低出力量を設定し、失敗した取引や競り負けた取引も実際のコストとして扱う必要があります。

関連トピック

出典

ナビゲーション

Wiki を検索...