借入はイーサリアムベースのブロックチェーン アプリケーションの基礎です。と
プログラミング パラダイムの進化と同様に、これらの DeFi アプリケーションには多様なアーキテクチャ設計があり、セキュリティから効率、ユーザー エクスペリエンスに至るまでの優先順位の変化を反映しています。
この分析では、次のようなアプリケーションのアーキテクチャを調べます。
あなたが開発者、アーキテクト、またはセキュリティ研究者であれば、この記事はあなたのためのものです。最後には、イーサリアム上の新しい借入アプリケーションを簡単に理解し、そのアーキテクチャを迅速かつ包括的に把握できるようになります。これらの DeFi 巨人がゼロからどのように構築されているかを詳しく見てみましょう。
DeFiで借りる
DeFi の借入のほとんどは、
ただし、落とし穴があります。
担保の価値は常にローンの価値を所定のマージンだけ上回らなければなりません。
担保価値がこれを下回った場合、融資は行われません。
清算中、他の誰かがローンの一部または全額を返済し、その代わりに担保の一部または全額を受け取ります。
この財務構造に従ったすべての借入申し込みには同じ構成要素が必要であり、これらはさまざまな方法でアレンジできます。
- ユーザーの担保と借用資産を保管するための金庫
- 各ユーザーの担保と負債を追跡する会計システム
- 借り手の金利を決定する関数
- ローンが十分に担保されているかどうかを検証するメカニズム。通常は外部の価格オラクルが関与します。
- 過少担保ローンの清算経路
- 総借入額と、グローバルおよびユーザーごとの借入限度額、担保最低額、特定の超過担保比率などのその他の安全指標を記録するリスク管理システム
- ユーザーが担保の追加と削除、借入、および原資産の返済を行うためのインターフェース
借入と貸付は別個の機能として考えることができます。 DeFi では、ほとんどの借入アプリケーションに両方の機能が含まれていますが、必ずしも十分に統合されているわけではありません。
Compound、Aave、Euler では、それらは です。借り手と貸し手の金利は内部的に相関しています。実際、それがこれらのアプリケーションを最小限の介入で動作させる理由です。
一方、MakerDAOとYieldは、借り手に貸し出す資産のオリジネーターです。
他のユーザーが借用できるように、ユーザーがアセットを提供する必要はありません。
この記事ではオンチェーン借入に焦点を当て、融資についてはほとんど無視します。借入は担保要件によりはるかに複雑であり、通常、借入パターンを理解することでプロトコル全体をより深く理解できるようになります。
MakerDAO のアーキテクチャの進化
MakerDAO の財務機能は、
があります
それに対して、MakerDAOは借入資産であるDAIを保有していません。
代わりに、それは単に
会計は社内で処理されます。
このアクションにより、ユーザーの負債残高が更新され、DAI 参加時に DAI を鋳造できるようになります。
返済するには、ユーザーは DAI 参加で DAI を書き込みます。このプロセスにより付加価値税が更新され、ユーザーがローンを決済できるようになります。
さらに、 vat.sol
契約は、
ユーザーの負債または担保残高に変更が加えられると、vat.sol 契約ではレートとスポットの両方が評価されます。
これらは、使用された担保および一般的な DAI 対担保価格比率に基づく金利を指します。興味深いことに、これらの値は他の MakerDAO コントラクトによって vat.sol コントラクトに入力されますが、これは他のほとんどのアプリケーションとは異なる方法です。
MakerDAO は設計段階で安全性を優先しました。当時は、ガスコストなどの要素は二の次で、ユーザー エクスペリエンスはそれほど重要ではなく、競争は無視できました。
その結果、奇妙で、使用コストが高く、操作が困難に見えるかもしれません。
しかし、同社が管理する膨大な資産と重大な違反なしの運用実績は、その堅牢な設計と実行を強調しています。
ハイライト:
- 各資産には、最大限に分散された財務機能で独自の契約があります。
- 会計機能は単一の契約内に集中されており、担保チェックなどのリスクパラメータも文書化および強制されます。
- 他のアプリとは異なり、オラクルは契約を更新し、担保を監督します
- 価格と金利のオラクルは異なるインターフェイスを利用します
- 金利は外部から発生する
- 借りるには、ユーザーは複数の契約を操作する必要があります
Yield プロトコルのアーキテクチャの進化
YieldSpace の可能性を認識し、私たちはすぐに開発に移行しました。
すべての会計、リスク管理、担保チェックが 1 つの契約に統合されました。
オラクルの統合を刷新し、価格と金利のオラクルを統合しました。
MakerDAO のアプローチからのもう 1 つの大きな逸脱は、
要約すると、Yield v2 での借入は次のように機能します。
- 各資産には独自の専用の財務契約があり、財務機能の最大限の分散が保証されます。
- 単一の契約により、会計機能が集中化されます。この契約は、リスク管理措置を監督し、担保チェックも実行します。
- 担保機能はオラクルに相談して価格と金利を決定します。
- 価格オラクルと金利オラクルはどちらも統一インターフェイスを共有します。
- 金利は外部で生成されます。
- ユーザーは、1つの契約に対して1回の申し込みで借入が可能です。
複合金融のアーキテクチャの進化
の
- 財務、会計、担保チェックなどのリスク管理タスクが 1 つの契約に統合されます。
- この契約はオラクルから価格を取得しますが、資産の利用状況に基づいて金利を決定します。
- ユーザーはこの契約のみを操作しますが、担保の提供と資産の借入を行うには別の呼び出しを行う必要があります。
コンパウンド v2
それに基づいて
興味深いことに、ホワイトペーパーでは Compound v2 に組み込まれていることを強調していませんでした。
- 各資産には独自の財務契約があり、財務機能の配分が最大化されます。
- 会計機能も分散されており、各 cToken はユーザーの担保と負債を記録します。
- 単一の契約である会計監査は、担保チェックを含むリスク管理パラメーターを記録し、施行します。
- 担保チェックを担当する契約は、価格についてはオラクルを参照し、金利については cToken を参照します。
- 価格オラクルと金利オラクルは、異なるインターフェースで動作します。
- 金利は資産の利用状況から内部的に導出されます。
- ユーザーは借用するには複数の契約を操作する必要があります。
コンパウンド v3
このシステムは、必要な呼び出しの数が減るため、開発者とユーザーの両方にとってより直感的です。さらに、単一の契約設計により、契約間の通話が最小限に抑えられ、ガスコストが削減されます。分離された金融市場は、現在大きなセキュリティ上の懸念となっているオラクルベースの攻撃に対する防御手段です。
で言及されているその他の関連機能
- 完全に刷新されたリスク管理および清算エンジン。この設計により、資金の安全性が強化されると同時に、より借り手に優しいものになります。
- リスクを軽減するために、個々の担保資産に対して市場全体で制限を設定します。
- 収益と借入の金利モデルは現在分離されており、ガバナンスが経済政策を完全に制御しています。
興味深いことに、Compound v3 は、単一のコントラクトで各借入可能資産のすべての機能を処理することで、Compound v1 のアーキテクチャを反映しています。その他の注目すべき機能は次のとおりです。
- 借りられるのは貸付資産のみです。担保資産はできません。
- Compound v3 では、担保は収益をもたらしません。
担保借入の禁止により、担保を預ける者の安全性が高まります。これにより、ガバナンスのエラーや意図的な攻撃によって担保が危険にさらされる可能性が低くなります。
供給された担保の収益がなくなるのは、コンパウンドが v2 で多くの流動性を蓄積できた結果である可能性があります。 Compound v2 では、借入限度額は、ユーザーがアプリケーションに貸与した資産を下回るか、それほど高くないのではないかと直感しました。
v3 でも同様のレベルの流動性を管理すると仮定すると、担保の貸し出しを禁止することでアプリケーションを安全にし、これが v3 の中核目標の 1 つです。
アーキテクチャの観点から:
- すべての金融市場は、財務、会計、リスク管理との個別の契約です。
- 各金融市場は、承認されたすべての担保資産トークンとともに借入可能な資産を保持するため、資産がアプリケーション全体に分散されます。
- 価格フィードは唯一の外部入力です。貸付金利は社内で生成
- 供給/引き出し/借入/返済などの従来の機能がスマートに統合されています。さて、金融市場から借入可能な資産を引き出すことは借入を意味し、それを供給することはユーザーの借金に基づいた返済または貸付を意味します。
- ルーティング コントラクトが統合され、1 回の通話で複数の操作が可能になります
Aave のアーキテクチャの進化
Yield v2 と同様に、
担保小切手を残す決定
- LendingPoolCore 契約は財務と会計を処理します
- LendingPoolDataProvider は担保チェックを管理し、オラクルと対話します。
- LendingPool はユーザーのエントリ ポイントとして機能し、ビジネス ロジックを実装します。
- 貸借の金利は価格フィードのみに基づいて内部で決定されます。
Aave v2
使用が制限されていた Aave v1 の特定の機能は、簡略化のために省略されました。未収利息の複雑な表現など、Aave v1 の問題は、Aave v2 で解決されました。
- LendingPool 契約は、担保チェックなどのグローバルな会計機能とリスク管理機能を統合します。ユーザーのプライマリ アクセス ポイントとして機能します
- aトークンは担保を意味し、貸し出しポジションに似ています。ユーザーの担保は aToken の保有を通じて反映され、財務機能はすべての aToken に分散されます。
- vToken は債務ポジションを表すために使用されます。ユーザーの負債は、ユーザーが保有する vToken によって表されます
Aave v3
多くの進歩にもかかわらず、この調査の目的では、Aave v3 は Aave v2 と実質的に変わりません。実際、Aave v2 のアーキテクチャが 2023 年になっても堅牢であることを示唆している可能性があります。
オイラーのアーキテクチャの進化
そのデザインの特徴は、
1 つの契約にすべての資産、会計、リスク管理データが保存されていますが、Aave v2 と同様に、担保と融資用の eToken と債務用の dToken が依然として存在します。ただし、これらのトークン コントラクトは、中央ストレージ コントラクトの単なるビューです。
コードを分析すると、最小限のガスコストが最優先事項であり、契約間の呼び出しの必要性を排除するモノリシック設計につながっていることが明らかになりました。厳格なテストと監査を通じてセキュリティが確保されました。ロジックのみがさまざまなモジュールに分散され、主にプロキシ コントラクトとして機能するストレージ コントラクトの実装として機能しました。
この統一された設計により、簡単なアップグレードもサポートされます。ストレージの変更が必要ない場合は、モジュールを迅速に交換して機能を修正または導入できます。
Euler は、リリースから 15 か月後、アップグレードによって悪用された脆弱性が導入されてから 6 か月後にハッキングされました。
モノリシック アーキテクチャが資産の流出に関与したとは思いません。むしろ、コード更新の監視が不十分でした。
結論
MakerDAO、Compound、Aave などの初期のイーサリアム アプリケーションは、イーサリアムでの過担保借入の可能性を示しました。これらの概念実証が成功したことが証明されると、焦点は市場シェアを獲得するために新しい機能を組み合わせて導入することに移りました。 Compound と Aave のその後のバージョンでは、イールド ファーミング、コンポーザビリティ、プールされた流動性が導入され、特に強気の市況時に成功しました。
重要な進歩は、Compound v2 のトークン化された融資ポジションの導入であり、これにより、これらのポジションが他のアプリケーションによって標準資産として認識されるようになりました。 Aave v2 と Euler は、トークン化された債務ポジションを実装することでそれをさらに一歩進めましたが、その広範な有用性については依然として議論の対象となっています。
強気相場ではガスコストの高さが大きな懸念事項として浮上し、Yield v2、Aave v2、Euler に見られるようにユーザー エクスペリエンスの変更を促しました。ルーター契約とモノリシック実装により、ユーザーがトランザクションにかかるコストを削減できました。ただし、これにはコードがより複雑になり、その結果リスクが高くなります。
Compound v3 は、財務効率よりも安全性を優先する前例を作ったようです。これは、潜在的なハッキングに対する保護を強化するために、従来の流動性プール モデルから逸脱しています。ガス料金がますます無視できるレベルになりつつある L2 ネットワークの台頭は、将来の担保付き借入アプリケーションの設計を形作ることになるでしょう。
この記事では、イーサリアム上の主要な担保付き借入アプリケーションの包括的な概要を説明しました。各申請を分析するために私が採用したアプローチは、他の担保付き借入申請の複雑さを迅速に把握するためにも適用できます。
ブロックチェーン借入アプリケーションを開発するときは、資産の保管、会計記録の配置、リスクと担保の評価方法を常に考慮してください。これらの考慮事項を検討する際には、以前のアプリケーションの履歴とこの概要から得た洞察を参考にして決定を行ってください。
読んでいただきありがとうございます。ご多幸をお祈りします。
おかげで
著者は、Yield Protocol の共同創設者およびテクニカル リードです。