以太坊上的借贷架构演变:MakerDAO、Yield、Aave、Compound 和 Euler 之间的比较

中级12/31/2023, 1:08:16 PM
本文分析了不同协议的借贷机制和架构设计,并探讨了它们的优缺点以及此行业面临的挑战。

借贷是基于以太坊的区块链应用的基石。由于有数十亿资产被借出,了解借贷的运作方式对于开发商、建筑师或研究人员来说至关重要。

就像编程范式的演变一样,这些 DeFi 应用程序也发展演变了不同的架构设计,反映了它们的注重点从安全性到效率和用户体验等不断变化。

本文的分析着眼于 MakerDAO、Compound、Aave、Euler 和 Yield 等应用程序的架构。我们将重点介绍重要的创新和设计模式,它们将为未来贷款应用程序开发提供重要的经验。

如果您是开发人员、架构师或安全研究人员,那么您适合阅读本文内容。通过本文,您将轻松了解以太坊上的新借贷应用程序,快速而全面地掌握其架构,并深入了解这些 DeFi 巨头是如何从头开始构建的。

DeFi中的借贷

大多数 DeFi 借贷都是超额抵押的。如果用户提供的抵押品价值高于借款的价值,则用户可以借入特定资产。与传统贷款不同,许多此类借款没有定期还款或固定结束日期。从本质上讲,你可以借,并一直不还。

但是,有一个不明显的问题。

抵押品的价值必须始终超过借款价值预定的幅度。

如果抵押品价值低于此值,借款将被清算。

在清算期间,其他人偿还您的部分或全部借款,并且他们会收到您的部分或全部抵押品作为回报。

遵循这种财务结构的所有借款申请都需要相同的构建块,然后可以通过多种方式得到安排:

  • 存储用户抵押品和借入资产的金库
  • 跟踪每个用户的抵押品和债务的会计系统
  • 决定借款人利率的函数
  • 验证借款是否有足够抵押的机制,通常涉及外部价格预言机
  • 抵押不足借款的清算路径
  • 记录借贷总额和其他安全指标的风险管理系统,例如全球和每个用户的借贷限额、最低抵押品和特定的超额抵押率
  • 供用户添加和删除抵押品、借贷和偿还标的物的界面

MakerDAO 中的借贷流程。所有应用程序都有相同的步骤和功能。

借贷可以被视为是独立的功能。在 DeFi 中,我们在大多数借贷应用程序中都发现了这两种功能,但它们并不总是能够很好地集成。

在Compound中,Aave和Euler就是这样。借款人和贷款人的利率是内部相关的;事实上,这就是使这些应用程序以最少的干预运行的原因。

相反,MakerDAO 和 Yield 是他们借给借款人的资产的发起者。

他们不要求用户提供资产以便其他用户可以借用。

本文将重点讨论链上借贷,并在很大程度上不会讨论出借服务。由于抵押要求,借贷要复杂得多,并且了解借贷模式通常有助于更好地理解整个协议。

MakerDAO的架构演变

MakerDAO Logo

在以太坊中,MakerDAO 是历史悠久的名称了。 它于2019年11月以当前形式推出,持有$49.5亿的抵押品。尽管其模块化架构具有针对每个功能的不同合同和独特的术语,但它仍然很容易理解和验证。

MakerDAO 中的金库功能由Join合约管理。

每个被批准作为抵押资产的代币都有一个单独的合约。

相反,MakerDAO 不拥有任何借贷资产 DAI。

而它只是根据需要来铸造和销毁 DAI。

会计在 vat.sol 合约内处理。当抵押品进入或退出系统时,连接会更新此合约。如果用户借款,他们会直接与 vat.sol 合约进行交互。

此操作会更新用户的债务余额,并允许他们在 DAI Join 中铸造 DAI。

为了偿还,用户在 DAI Join 中销毁 DAI。然后,此过程会更新增值税,让用户得以结清贷款。

此外,vat.sol 合约还充当风险管理引擎。它维持全球借贷限额,设定每个用户的最低阈值,并监督抵押比率。

当用户的债务或抵押品余额发生变化时,vat.sol 合约会评估利率和现货。

这些是指基于所使用的抵押品和现行 DAI 与抵押品价格比率的利率。值得注意的是,这些值由其他 MakerDAO 合约输入到 vat.sol 合约中,这种方法与大多数其他应用程序不同。

MakerDAO 在设计阶段就以安全性为首要考虑因素——当时Gas成本等因素是次要的,用户体验是次要问题,竞争也可以忽略不计。

因此,它可能会显得格格不入、使用成本高昂且难以驾驭。

然而,它管理这庞大资产并为没有重大违规行为的运营记录,这些凸显了其稳健的设计和执行。

其要点有:

  • 每个资产在最大利差金库功能中都有自己的合约
  • 会计功能集中在单个合同中,该合同还记录和执行风险参数,包括抵押核对
  • 与其他应用程序不同,它由预言机更新合约,监督抵押
  • 价格和利率预言机利用不同的接口
  • 利率源自外部
  • 要借款,用户必须与多个合约交互

ProtocolYield协议的架构演变

Yield v1 是使用 YieldSpace 的固定利率的概念证明。该版本在 MakerDAO 之上构建了其抵押债务引擎。然而,Yield v1 使用起来费用既高昂又难以通过新功能进行增强。

认识到 YieldSpace 的潜力后,我们迅速转向开发 Yield v2。 Yield v2 仍源自于MakerDAO 的灵感,但现已完全独立,于2021年10月推出; Yield v2 优先考虑降低 Gas 成本并增强用户体验。

Yield v2 中的借贷流程深受 MakerDAO 影响

所有会计、风险管理和抵押核对都合并到The Cauldron这一份合约中。效仿 MakerDAO 的方法,我们将财务功能分布在 Join 合约中,每个合约专用于一项特定资产。

我们改进了预言机集成,将价格和利率预言机合并到一个通用界面中。我们反转了 MakerDAO 的预言机流程,以便 Cauldron 根据抵押核对的需求查阅预言机。据我所知,这是除 MakerDAO 之外的所有地方的首选流程。

与 MakerDAO 方法的很不相同的另一方面是我们引入了 Ladle。该合约用作用户和 Yield 之间的唯一中介。它对财务和会计拥有广泛的控制权,但反过来,它让功能开发更加灵活。

总的来说,Yield v2 中的借贷工作原理如下:

  • 每项资产都有自己专用的金库合约,确保金库功能的最大分配。
  • 单一合约集中了会计职能。该合同还监督风险管理措施并执行抵押核对。
  • 抵押功能咨询预言机来确定价格和利率。
  • 价格和利率预言机共享统一的界面。
  • 利率是外部产生的。
  • 用户可以通过向一份合约发出单个请求来借款。

Compound Finance的架构演变

Compound 的第一个版本是概念验证(Proof-of-Concept),表明可以在以太坊上建立货币市场。因此,其设计优先考虑简单性。MoneyMarket.sol 合约包含所有功能,包括借贷。

Compound v1 中的借用过程简单而有效

  • 金库、会计和风险管理任务(例如抵押核对)被合并到一份合约中。
  • 该合约从预言机检索价格,但根据资产利用率确定利率。
  • 尽管他们必须单独调用来提供抵押品和借入资产,但用户仅与该合约交互。

Compound v2

2019年5月,Compound v2 上线,推动流动性挖矿时代蓬勃发展,激发了无数分叉。它也起到货币市场的作用,允许用户借出和借入资产。

根据其白皮书和结构,显然,Compound v2 的主要目标是使用 ERC20 标准来表示借贷头寸。这确保了可组合性,允许用户借给Compound,然后在其他区块链应用程序中使用这些计息头寸。

值得注意的是,白皮书并没有强调 Compound v2 将奖励纳入其智能合约中。鉴于这一遗漏,可能无法预见该功能的巨大影响。

Compound v2 中的借用过程。首次涉足代币化借贷头寸。

  • 每项资产都有自己的资金合约,最大化资金功能的分配。
  • 记账功能也是分布式的,每个 cToken 都会记录用户的抵押品和债务。
  • 单一合约(审计员)记录并执行风险管理参数,包括抵押核对。
  • 负责抵押核对的合约参考价格的预言机和利率的 cToken。
  • 价格和利率预言机通过不同的接口运行。
  • 利率源自内部资产利用率。
  • 用户必须与多个合约交互才能借款。

Compound v3

Compound v3 于2022年发布,采用了更为保守的风险管理策略,将流动性隔离到每个可借资产的池中。该设计还展现了对人性化和Gas成本的担忧。

Compound v3 (Comet) 中的借贷过程。回归到基础,回归到安全性。不过,有了更好的用户体验。

由于所需调用次数的减少,该系统对于开发人员和用户来说都更加直观。此外,单一合约设计通过最大限度地减少合约之间的调用来降低Gas成本。隔离的货币市场是对基于预言机的攻击的防御,这现在是一个主要的安全问题。

发行说明中提到的其他相关功能包括:

  • 彻底改造的风险管理和清算引擎。这种设计增强了资金安全性,同时对借款人更加友好。
  • 在整个市场上对个人抵押资产设置限制,以降低风险。
  • 收入和借款的利率模型现在是分开的,治理对经济政策具有完全控制权。

有趣的是,Compound v3 镜像了Compound v1 的架构,让单个合约处理每个可借资产的所有功能。其他值得注意的功能有:

  • 只能借出资产;不能抵押资产。
  • 在Compound v3 中,抵押品不会产生回报。

禁止借贷抵押品提高了抵押品存入者的安全性。这降低了治理错误或故意攻击危及抵押品的可能性。

Compound 设法在 v2 中积累了大量流动性,消除所提供抵押品的回报可能就是由此造成的结果。我的直觉是,在Compound v2 中,借贷限额要么低于或不高于用户借给应用程序的资产。

假设他们将管理 v3 类似水平的流动性,禁止借出抵押品可以使应用程序安全,这是 v3 的核心目标之一。

从架构的角度来看:

  • 每个货币市场都是一份包含金库、会计和风险管理的单独合约
  • 每个货币市场都保留可借资产及其所有批准的抵押资产代币,从而导致资产分散在整个应用程序中
  • 价格馈送是唯一的外部输入;借贷利率从内部产生
  • 供给/提现/借用/还款等传统功能得到巧妙整合。现在,从货币市场提取可借资产意味着借款,而提供可借资产则意味着根据用户的债务进行偿还或贷款
  • 集成了传输合约,允许在一次调用中执行多个操作

Aave的架构演变

2019年10月,Aave v1 得以推出,接替了 ETHLend。Aave v1 引入了共享流动性池,而不是 ETHLend 的点对点方法。

Aave v1 中的借用过程。汇集流动性意味着财务和计算效率。

与 Yield v2 一样,传输合约也包含业务逻辑。LendingPoolCore 实现了会计、风险管理和金库功能。与Compound v2的不同之一是,它将资金集中在一个合约中。

将抵押核对留在自己的合约中(从传输而不是会计合约调用)的决定似乎容易受到影响,但它可能适合预期使用,因为 Aave v2 在 v1 发布两年后才发布。

  • LendingPoolCore 合约处理金库和会计
  • LendingPoolDataProvider 管理抵押核对并与预言机交互
  • LendingPool作为用户入口并实现业务逻辑
  • 借贷利率由内部决定,仅依赖于价格馈送

Aave v2

Aave v2 于2021年12月发布。虽然它保留了与 Aave v1 类似的功能,但与 Aave v1 和 Compound v2 相比,它引入了改进且更简单的架构。在此版本中,Aave 还引入了 aToken(类似于Compound 的 cToken)和 vToken,它们代表代币化债务。

Aave v2 具有非常干净的架构,是完全代币化的。

为了简单起见,本文省略了 Aave v1 中具有有限使用的某些功能。Aave v1 中的问题(例如应计利息的复杂表示)已在 Aave v2 中得到解决。

  • LendingPool 合约整合了全球会计和风险管理功能,例如抵押核对。它用作用户的主要访问点。
  • aToken 表示抵押品,类似于借贷头寸。用户的抵押品通过其持有的 aToken 体现,金库功能分布在所有 aToken 上。
  • vToken 用于表示债务头寸。用户的债务由他们持有的 vToken 表示。

Aave v3

2023年1月,Aave v3 得以发布。它具有多链支持和其他功能。这些新增功能不会改变核心架构。此次更新还改进了风险管理并提高了Gas效率。

尽管更新带来了许多进步,但就本研究而言,Aave v3 与 Aave v2 并没有本质上的不同。事实上,这可能表明 Aave v2 的架构在2023年仍然保持稳健。

Euler的架构演变

2022年12月,Euler 得以推出,旨在为货币市场提供非许可的功能和最少的治理干预。

其设计标识为一个钻石形图案。单个合约拥有应用程序的所有存储空间。该存储可以通过不同的代理进行访问,每个代理管理系统的不同概念元素。

尽管一份合约存储了所有资产、会计和风险管理数据,但仍然有用于抵押品和借贷的 eToken,以及用于债务的 dToken,类似于 Aave v2。然而,这些代币合约仅仅是中央存储合约的视图。

  • 存储合约管理会计变量。
  • BaseLogic 合约充当金库。
  • RiskManager 合约监督风险管理变量和功能,包括抵押核对。

对代码的分析表明,其首要任务为最小的Gas成本,从而导致整体设计无需合约间调用。严格的测试和审核确保了安全性。只有逻辑分布在各个模块中,作为存储合约的实现,存储合约主要充当代理合约。

这种统一的设计还支持轻松升级。如果不需要更改存储,则可以快速更换模块以修改或引入功能。

在发布15个月后以及在升级引入该漏洞后的6个月后,Euler 遭到了黑客攻击。

我不认为单一架构在资产流失中发挥了作用;相反,这是由于对代码更新的监督不够造成的。

结语

完成了辛苦的工作后,让我们回顾一下我们学到的东西

MakerDAO、Compound 和 Aave 等早期以太坊应用程序展现了以太坊超额抵押借贷方面的潜力。一旦这些概念验证被证明是成功的,重点就转移到引入一系列新功能以占领市场份额的方向上。Compound 和 Aave 的后续版本引入了流动性挖矿、可组合性和集合流动性,这些技术在牛市条件下发展尤其强劲。

产生的一个重大发展是,Compound v2 引入了代币化借贷头寸,这使得这些头寸能够被其他应用程序识别为标准资产。Aave v2 和 Euler 通过实施代币化债务头寸取得了更大的进步,其更广泛的效用仍然是一个受到争论的话题。

高 Gas 成本成为牛市期间的主要问题,促使用户体验发生变化,如 Yield v2、Aave v2 和 Euler 所示。传输合约和单一实施有助于降低用户的交易成本。然而,这是以更复杂、由此而具有更大风险的代码为代价的。

Compound v3 似乎开创了先例,将安全性置于财务效率之上。它偏离了传统的流动性池模型,以更好地防范潜在的黑客攻击。第2层网络的兴起(其中越来越可以忽略不计 Gas 成本)可能会对未来抵押借贷应用程序的设计造成影响。

在本文中,我全面概述了以太坊上的重要抵押借贷应用程序。我用来分析每个借贷申请的方法也可以用于快速破解其他抵押借款申请的复杂性。

在开发区块链借贷应用程序时,请始终将资产的存储、会计记录的放置以及风险和抵押品评估的方法纳入考虑。当您考虑这些注意事项时,您可使用以前应用程序的历史记录以及本概述中的见解来为助力您做出明智的决策。

感谢您的阅读,祝您好运。

感谢 Calnix 帮助审阅和编辑本文。

声明:

  1. 本文转载自[hackernoon],著作权归属原作者[alcueca],如对转载有异议,请联系Gate Learn团队,团队会根据相关流程尽速处理。
  2. 免责声明:本文所表达的观点和意见仅代表作者个人观点,不构成任何投资建议。
  3. 文章其他语言版本由Gate Learn团队翻译, 在未提及Gate.io的情况下不得复制、传播或抄袭经翻译文章。

以太坊上的借贷架构演变:MakerDAO、Yield、Aave、Compound 和 Euler 之间的比较

中级12/31/2023, 1:08:16 PM
本文分析了不同协议的借贷机制和架构设计,并探讨了它们的优缺点以及此行业面临的挑战。

借贷是基于以太坊的区块链应用的基石。由于有数十亿资产被借出,了解借贷的运作方式对于开发商、建筑师或研究人员来说至关重要。

就像编程范式的演变一样,这些 DeFi 应用程序也发展演变了不同的架构设计,反映了它们的注重点从安全性到效率和用户体验等不断变化。

本文的分析着眼于 MakerDAO、Compound、Aave、Euler 和 Yield 等应用程序的架构。我们将重点介绍重要的创新和设计模式,它们将为未来贷款应用程序开发提供重要的经验。

如果您是开发人员、架构师或安全研究人员,那么您适合阅读本文内容。通过本文,您将轻松了解以太坊上的新借贷应用程序,快速而全面地掌握其架构,并深入了解这些 DeFi 巨头是如何从头开始构建的。

DeFi中的借贷

大多数 DeFi 借贷都是超额抵押的。如果用户提供的抵押品价值高于借款的价值,则用户可以借入特定资产。与传统贷款不同,许多此类借款没有定期还款或固定结束日期。从本质上讲,你可以借,并一直不还。

但是,有一个不明显的问题。

抵押品的价值必须始终超过借款价值预定的幅度。

如果抵押品价值低于此值,借款将被清算。

在清算期间,其他人偿还您的部分或全部借款,并且他们会收到您的部分或全部抵押品作为回报。

遵循这种财务结构的所有借款申请都需要相同的构建块,然后可以通过多种方式得到安排:

  • 存储用户抵押品和借入资产的金库
  • 跟踪每个用户的抵押品和债务的会计系统
  • 决定借款人利率的函数
  • 验证借款是否有足够抵押的机制,通常涉及外部价格预言机
  • 抵押不足借款的清算路径
  • 记录借贷总额和其他安全指标的风险管理系统,例如全球和每个用户的借贷限额、最低抵押品和特定的超额抵押率
  • 供用户添加和删除抵押品、借贷和偿还标的物的界面

MakerDAO 中的借贷流程。所有应用程序都有相同的步骤和功能。

借贷可以被视为是独立的功能。在 DeFi 中,我们在大多数借贷应用程序中都发现了这两种功能,但它们并不总是能够很好地集成。

在Compound中,Aave和Euler就是这样。借款人和贷款人的利率是内部相关的;事实上,这就是使这些应用程序以最少的干预运行的原因。

相反,MakerDAO 和 Yield 是他们借给借款人的资产的发起者。

他们不要求用户提供资产以便其他用户可以借用。

本文将重点讨论链上借贷,并在很大程度上不会讨论出借服务。由于抵押要求,借贷要复杂得多,并且了解借贷模式通常有助于更好地理解整个协议。

MakerDAO的架构演变

MakerDAO Logo

在以太坊中,MakerDAO 是历史悠久的名称了。 它于2019年11月以当前形式推出,持有$49.5亿的抵押品。尽管其模块化架构具有针对每个功能的不同合同和独特的术语,但它仍然很容易理解和验证。

MakerDAO 中的金库功能由Join合约管理。

每个被批准作为抵押资产的代币都有一个单独的合约。

相反,MakerDAO 不拥有任何借贷资产 DAI。

而它只是根据需要来铸造和销毁 DAI。

会计在 vat.sol 合约内处理。当抵押品进入或退出系统时,连接会更新此合约。如果用户借款,他们会直接与 vat.sol 合约进行交互。

此操作会更新用户的债务余额,并允许他们在 DAI Join 中铸造 DAI。

为了偿还,用户在 DAI Join 中销毁 DAI。然后,此过程会更新增值税,让用户得以结清贷款。

此外,vat.sol 合约还充当风险管理引擎。它维持全球借贷限额,设定每个用户的最低阈值,并监督抵押比率。

当用户的债务或抵押品余额发生变化时,vat.sol 合约会评估利率和现货。

这些是指基于所使用的抵押品和现行 DAI 与抵押品价格比率的利率。值得注意的是,这些值由其他 MakerDAO 合约输入到 vat.sol 合约中,这种方法与大多数其他应用程序不同。

MakerDAO 在设计阶段就以安全性为首要考虑因素——当时Gas成本等因素是次要的,用户体验是次要问题,竞争也可以忽略不计。

因此,它可能会显得格格不入、使用成本高昂且难以驾驭。

然而,它管理这庞大资产并为没有重大违规行为的运营记录,这些凸显了其稳健的设计和执行。

其要点有:

  • 每个资产在最大利差金库功能中都有自己的合约
  • 会计功能集中在单个合同中,该合同还记录和执行风险参数,包括抵押核对
  • 与其他应用程序不同,它由预言机更新合约,监督抵押
  • 价格和利率预言机利用不同的接口
  • 利率源自外部
  • 要借款,用户必须与多个合约交互

ProtocolYield协议的架构演变

Yield v1 是使用 YieldSpace 的固定利率的概念证明。该版本在 MakerDAO 之上构建了其抵押债务引擎。然而,Yield v1 使用起来费用既高昂又难以通过新功能进行增强。

认识到 YieldSpace 的潜力后,我们迅速转向开发 Yield v2。 Yield v2 仍源自于MakerDAO 的灵感,但现已完全独立,于2021年10月推出; Yield v2 优先考虑降低 Gas 成本并增强用户体验。

Yield v2 中的借贷流程深受 MakerDAO 影响

所有会计、风险管理和抵押核对都合并到The Cauldron这一份合约中。效仿 MakerDAO 的方法,我们将财务功能分布在 Join 合约中,每个合约专用于一项特定资产。

我们改进了预言机集成,将价格和利率预言机合并到一个通用界面中。我们反转了 MakerDAO 的预言机流程,以便 Cauldron 根据抵押核对的需求查阅预言机。据我所知,这是除 MakerDAO 之外的所有地方的首选流程。

与 MakerDAO 方法的很不相同的另一方面是我们引入了 Ladle。该合约用作用户和 Yield 之间的唯一中介。它对财务和会计拥有广泛的控制权,但反过来,它让功能开发更加灵活。

总的来说,Yield v2 中的借贷工作原理如下:

  • 每项资产都有自己专用的金库合约,确保金库功能的最大分配。
  • 单一合约集中了会计职能。该合同还监督风险管理措施并执行抵押核对。
  • 抵押功能咨询预言机来确定价格和利率。
  • 价格和利率预言机共享统一的界面。
  • 利率是外部产生的。
  • 用户可以通过向一份合约发出单个请求来借款。

Compound Finance的架构演变

Compound 的第一个版本是概念验证(Proof-of-Concept),表明可以在以太坊上建立货币市场。因此,其设计优先考虑简单性。MoneyMarket.sol 合约包含所有功能,包括借贷。

Compound v1 中的借用过程简单而有效

  • 金库、会计和风险管理任务(例如抵押核对)被合并到一份合约中。
  • 该合约从预言机检索价格,但根据资产利用率确定利率。
  • 尽管他们必须单独调用来提供抵押品和借入资产,但用户仅与该合约交互。

Compound v2

2019年5月,Compound v2 上线,推动流动性挖矿时代蓬勃发展,激发了无数分叉。它也起到货币市场的作用,允许用户借出和借入资产。

根据其白皮书和结构,显然,Compound v2 的主要目标是使用 ERC20 标准来表示借贷头寸。这确保了可组合性,允许用户借给Compound,然后在其他区块链应用程序中使用这些计息头寸。

值得注意的是,白皮书并没有强调 Compound v2 将奖励纳入其智能合约中。鉴于这一遗漏,可能无法预见该功能的巨大影响。

Compound v2 中的借用过程。首次涉足代币化借贷头寸。

  • 每项资产都有自己的资金合约,最大化资金功能的分配。
  • 记账功能也是分布式的,每个 cToken 都会记录用户的抵押品和债务。
  • 单一合约(审计员)记录并执行风险管理参数,包括抵押核对。
  • 负责抵押核对的合约参考价格的预言机和利率的 cToken。
  • 价格和利率预言机通过不同的接口运行。
  • 利率源自内部资产利用率。
  • 用户必须与多个合约交互才能借款。

Compound v3

Compound v3 于2022年发布,采用了更为保守的风险管理策略,将流动性隔离到每个可借资产的池中。该设计还展现了对人性化和Gas成本的担忧。

Compound v3 (Comet) 中的借贷过程。回归到基础,回归到安全性。不过,有了更好的用户体验。

由于所需调用次数的减少,该系统对于开发人员和用户来说都更加直观。此外,单一合约设计通过最大限度地减少合约之间的调用来降低Gas成本。隔离的货币市场是对基于预言机的攻击的防御,这现在是一个主要的安全问题。

发行说明中提到的其他相关功能包括:

  • 彻底改造的风险管理和清算引擎。这种设计增强了资金安全性,同时对借款人更加友好。
  • 在整个市场上对个人抵押资产设置限制,以降低风险。
  • 收入和借款的利率模型现在是分开的,治理对经济政策具有完全控制权。

有趣的是,Compound v3 镜像了Compound v1 的架构,让单个合约处理每个可借资产的所有功能。其他值得注意的功能有:

  • 只能借出资产;不能抵押资产。
  • 在Compound v3 中,抵押品不会产生回报。

禁止借贷抵押品提高了抵押品存入者的安全性。这降低了治理错误或故意攻击危及抵押品的可能性。

Compound 设法在 v2 中积累了大量流动性,消除所提供抵押品的回报可能就是由此造成的结果。我的直觉是,在Compound v2 中,借贷限额要么低于或不高于用户借给应用程序的资产。

假设他们将管理 v3 类似水平的流动性,禁止借出抵押品可以使应用程序安全,这是 v3 的核心目标之一。

从架构的角度来看:

  • 每个货币市场都是一份包含金库、会计和风险管理的单独合约
  • 每个货币市场都保留可借资产及其所有批准的抵押资产代币,从而导致资产分散在整个应用程序中
  • 价格馈送是唯一的外部输入;借贷利率从内部产生
  • 供给/提现/借用/还款等传统功能得到巧妙整合。现在,从货币市场提取可借资产意味着借款,而提供可借资产则意味着根据用户的债务进行偿还或贷款
  • 集成了传输合约,允许在一次调用中执行多个操作

Aave的架构演变

2019年10月,Aave v1 得以推出,接替了 ETHLend。Aave v1 引入了共享流动性池,而不是 ETHLend 的点对点方法。

Aave v1 中的借用过程。汇集流动性意味着财务和计算效率。

与 Yield v2 一样,传输合约也包含业务逻辑。LendingPoolCore 实现了会计、风险管理和金库功能。与Compound v2的不同之一是,它将资金集中在一个合约中。

将抵押核对留在自己的合约中(从传输而不是会计合约调用)的决定似乎容易受到影响,但它可能适合预期使用,因为 Aave v2 在 v1 发布两年后才发布。

  • LendingPoolCore 合约处理金库和会计
  • LendingPoolDataProvider 管理抵押核对并与预言机交互
  • LendingPool作为用户入口并实现业务逻辑
  • 借贷利率由内部决定,仅依赖于价格馈送

Aave v2

Aave v2 于2021年12月发布。虽然它保留了与 Aave v1 类似的功能,但与 Aave v1 和 Compound v2 相比,它引入了改进且更简单的架构。在此版本中,Aave 还引入了 aToken(类似于Compound 的 cToken)和 vToken,它们代表代币化债务。

Aave v2 具有非常干净的架构,是完全代币化的。

为了简单起见,本文省略了 Aave v1 中具有有限使用的某些功能。Aave v1 中的问题(例如应计利息的复杂表示)已在 Aave v2 中得到解决。

  • LendingPool 合约整合了全球会计和风险管理功能,例如抵押核对。它用作用户的主要访问点。
  • aToken 表示抵押品,类似于借贷头寸。用户的抵押品通过其持有的 aToken 体现,金库功能分布在所有 aToken 上。
  • vToken 用于表示债务头寸。用户的债务由他们持有的 vToken 表示。

Aave v3

2023年1月,Aave v3 得以发布。它具有多链支持和其他功能。这些新增功能不会改变核心架构。此次更新还改进了风险管理并提高了Gas效率。

尽管更新带来了许多进步,但就本研究而言,Aave v3 与 Aave v2 并没有本质上的不同。事实上,这可能表明 Aave v2 的架构在2023年仍然保持稳健。

Euler的架构演变

2022年12月,Euler 得以推出,旨在为货币市场提供非许可的功能和最少的治理干预。

其设计标识为一个钻石形图案。单个合约拥有应用程序的所有存储空间。该存储可以通过不同的代理进行访问,每个代理管理系统的不同概念元素。

尽管一份合约存储了所有资产、会计和风险管理数据,但仍然有用于抵押品和借贷的 eToken,以及用于债务的 dToken,类似于 Aave v2。然而,这些代币合约仅仅是中央存储合约的视图。

  • 存储合约管理会计变量。
  • BaseLogic 合约充当金库。
  • RiskManager 合约监督风险管理变量和功能,包括抵押核对。

对代码的分析表明,其首要任务为最小的Gas成本,从而导致整体设计无需合约间调用。严格的测试和审核确保了安全性。只有逻辑分布在各个模块中,作为存储合约的实现,存储合约主要充当代理合约。

这种统一的设计还支持轻松升级。如果不需要更改存储,则可以快速更换模块以修改或引入功能。

在发布15个月后以及在升级引入该漏洞后的6个月后,Euler 遭到了黑客攻击。

我不认为单一架构在资产流失中发挥了作用;相反,这是由于对代码更新的监督不够造成的。

结语

完成了辛苦的工作后,让我们回顾一下我们学到的东西

MakerDAO、Compound 和 Aave 等早期以太坊应用程序展现了以太坊超额抵押借贷方面的潜力。一旦这些概念验证被证明是成功的,重点就转移到引入一系列新功能以占领市场份额的方向上。Compound 和 Aave 的后续版本引入了流动性挖矿、可组合性和集合流动性,这些技术在牛市条件下发展尤其强劲。

产生的一个重大发展是,Compound v2 引入了代币化借贷头寸,这使得这些头寸能够被其他应用程序识别为标准资产。Aave v2 和 Euler 通过实施代币化债务头寸取得了更大的进步,其更广泛的效用仍然是一个受到争论的话题。

高 Gas 成本成为牛市期间的主要问题,促使用户体验发生变化,如 Yield v2、Aave v2 和 Euler 所示。传输合约和单一实施有助于降低用户的交易成本。然而,这是以更复杂、由此而具有更大风险的代码为代价的。

Compound v3 似乎开创了先例,将安全性置于财务效率之上。它偏离了传统的流动性池模型,以更好地防范潜在的黑客攻击。第2层网络的兴起(其中越来越可以忽略不计 Gas 成本)可能会对未来抵押借贷应用程序的设计造成影响。

在本文中,我全面概述了以太坊上的重要抵押借贷应用程序。我用来分析每个借贷申请的方法也可以用于快速破解其他抵押借款申请的复杂性。

在开发区块链借贷应用程序时,请始终将资产的存储、会计记录的放置以及风险和抵押品评估的方法纳入考虑。当您考虑这些注意事项时,您可使用以前应用程序的历史记录以及本概述中的见解来为助力您做出明智的决策。

感谢您的阅读,祝您好运。

感谢 Calnix 帮助审阅和编辑本文。

声明:

  1. 本文转载自[hackernoon],著作权归属原作者[alcueca],如对转载有异议,请联系Gate Learn团队,团队会根据相关流程尽速处理。
  2. 免责声明:本文所表达的观点和意见仅代表作者个人观点,不构成任何投资建议。
  3. 文章其他语言版本由Gate Learn团队翻译, 在未提及Gate.io的情况下不得复制、传播或抄袭经翻译文章。
即刻开始交易
注册并交易即可获得
$100
和价值
$5500
理财体验金奖励!