BendDAO 协议概述

  • mixbytes
  • 发布于 2024-01-25 23:57
  • 阅读 16

本文介绍了BendDAO,一个允许用户用其蓝筹NFT作为抵押获得即时流动性的NFT借贷协议。文章详细探讨了BendDAO的主要特性、技术细节和可能的安全风险,强调了对NFT价格供给和市场流动性的验证的重要性。

作者:Pavel Morozov, MixBytes的安全研究员

简介

在本文中,我们将描述BendDAO,这是一个NFT借贷协议,允许用户在其蓝筹NFT上获得即时流动性。文章包含三个部分:主要协议功能概述、最重要模块的技术细节,以及由这一新概念引入的可预见的安全风险。

协议描述

BendDAO是一个NFT流动性协议,使用户能够使用他们的NFT作为抵押,以获得以其价值为基础的ETH贷款,并在购买不同的NFT时进行首付款。

主要特征

1. 抵押品列表

NFT所有者可以将他们的蓝筹NFT带到协议中,并获得其ETH底价最高60%的即时流动性。此功能为卖家提供立即的流动性访问。NFT作为抵押,被创造出债务。未来,买方可以偿还债务并收到基础的NFT。

2. NFT首付款

买方可以支付至少NFT价值的40%,并成为借款人(借用NFT并有债务)。剩余的60%通过Aave闪电贷支付,并通过BendDAO的即时NFT抵押贷款偿还。因此,买方欠BendDAO 60%的NFT底价。买方必须偿还该金额才能收到基础NFT。任何人都可以在支持的市场,如BendDAO市场本身、OpenSea、LooksRare或X2Y2上购买不同的NFT。

3. 清算保护

BendDAO引入了一个24小时的贷款偿还窗口。在此期间,借款人可以偿还其未偿还的债务而没有任何损失。此功能防止用户因市场波动而遭受损失。

4. 绑定NFT

当用户将NFT存入BendDAO池时,他们会收到一个称为绑定NFT(bNFT)的NFT包装版本。在对原始NFT进行借款时,bNFT会被铸造,在贷款偿还时则被销毁。bNFT具有与原始NFT相同的元数据和tokenId。它是不可转让和不可授权的,以防止所有者被黑客攻击。bNFT可以访问空投、可索取和可铸造的资产。

5. 闪电索赔

用户可以开发自己的智能合约,以接收最初存入的NFT,以索取空投或参与第三方项目活动。这与Aave类似的闪电贷相似,应在同一交易中归还。所有索赔和交互可以在接收和归还原始NFT之间进行。

6. ETH存款

ETH存款者可以在其存入BendDAO池的ETH上赚取年化收益率(APR),奖励以BEND代币支付。这些ETH用于为NFT存款者提供即时流动性访问。

7. DAO

veBEND代币用于投票列出不同的NFT项目在BendDAO协议上。veBEND是一个投票质押的BEND代币,用户可以锁定其BEND代币最长为四年。veBEND持有者还收取NFT抵押贷款和首付款的收入。

技术细节

1. BendDAO协议代码库

BendDAO协议利用Aave最佳实践提供NFT借贷。LendPool合约是用户的主要入口点,允许他们通过存款、提取、借款和偿还、拍卖以及清算头寸与协议进行交互。

LendPoolAddressesProvider和LendPoolAddressesProviderRegistry合约用于存储有关不同市场、相应资产和价格预言机的信息,以Aave类似的方式。

BToken类似于Aave的AToken - 用户在向BendDAO存入ERC20代币时接收的带息代币。

所有活跃贷款由LendPoolLoan合约存储和跟踪。每次调用LendPool后,必要的验证由该合约跟踪。它更新贷款状态或在需要时创建贷款。

NFTOracle合约提供有关列出的NFT集合的底价数据。这些价格由具有管理权限的EOA推送到该合约。

ReserveOracle合约利用ChainLink价格源获取不同储备的价格。这些价格在计算NFT抵押时使用。

2. 抵押品列表

卖家或借款人可以通过在LendPool合约上调用借款函数列出他们的NFT。用户应指定资产和希望借入的金额。ValidationLogic库中的validateBorrow函数随后检查该特定NFT集合的当前LTV下的贷款健康因子。

BorrowLogic库使用_borrow函数检查指定的NFT ID是否已有贷款存在。如果正在创建贷款,NFT会从用户转移到BendDAO协议。作为回报,用户收到他们借入的资金和由LendPoolLoan合约在createLoan函数中铸造的bNFT代币。

卖家或借款人可以通过调用LendPool合约上的borrow函数列出他们的NFT。用户应指定资产和希望借入的金额。ValidationLogic库中的validateBorrow函数随后检查该特定NFT集合的当前LTV下的贷款健康因子。

作为回报,用户收到他们借入的资金以及由LendPoolLoan合约在createLoan函数中铸造的boundNFT代币。

如果已有贷款存在,则仅更新该贷款,用户仅收到借入的资金。

3. NFT首付款

NFT首付款的逻辑不是BendDAO协议的一部分。然而,它仍然表现为一组合约,其中包括购买NFT的主要逻辑和针对各种市场的不同适配器。

Downpayment合约有一个主要函数 - buy,一个可支付的函数,接受ether以执行购买并触发Aave闪电贷。之前提到的适配器之一接受该闪电贷,购买目标NFT,借取ETH从BendDAO池中抵押购买的NFT,并偿还Aave闪电贷。所有主要操作都在BaseAdapter合约的executeOperation函数内部执行,从中所有特定的适配器继承逻辑。

4. 不健康的位置

如果某人的位置变得不健康,那么它就成为启动该位置拍卖的目标。这样的拍卖充当保护机制,防止立即清算过程。

当位置健康因子低于1时,可以启动拍卖。在拍卖开始后,借款人有时间偿还他们的贷款,但要支付给第一个拍卖竞标者的罚款。

拍卖

任何人都可以参加拍卖。竞标者应以高于其他人的价格出价。最高竞标者在借款人未偿还债务的情况下获得抵押资产。

LendPool合约中有一个拍卖函数,然后调用LendPoolLoan中的auctionLoan。auctionLoan函数跟踪最高竞标者及其价格。在这些调用之间,LiquidationLogic库将出价保留资产从当前竞标者转移到协议,并将资金返回给先前的竞标者。这确保了竞标者能够购买抵押资产。在拍卖成功后,最高竞标者有一个赎回期,他们应索取拍卖的抵押资产。这是通过LendPool合约中的redeem函数完成的。

清算

LendPool合约中有一个清算函数。接下来是在LendPoolLoan中调用的liquidateLoan,其中在LiquidateLogic中进行检查。它检查拍卖是否发生并是否结束(对于借款人的清算保护),以及是否没有竞标覆盖借款人的债务。仅在这些检查通过后,清算者才能执行其操作并获得抵押资产作为回报。

5. 绑定NFT

绑定NFT是具有增强功能的ERC721代币 - 所有转移函数都被覆盖,并在任何调用时恢复,使绑定NFT不可转让。绑定NFT通过BNFT合约实现。主要有两个函数 - mint和burn。铸造接受用户的实际NFT并返回具有限制转让功能的绑定NFT。绑定NFT具有与原始NFT相同的元数据和tokenURI - 例如,tokenURI函数通过调用底层NFT来代理。

有一个重要的闪电贷函数,可以实现闪电索赔逻辑。它允许用户在一笔交易中使用底层NFT去索取空投或参与原NFT项目。该函数将原始NFT转移给调用者,允许接收者在其侧执行executeOperation,如果能够将原始NFT返回,则成功。

6. NFT底价预言机

BendDAO团队运行NFT价格预言机。最初,价格数据从不同市场获取并通过一个链下节点聚合。在这些价格获取时并未披露,但这些节点将价格数据推送到NFTOracle合约,该合约收集所有支持资产的TWAP价格。

还有一个maxPriceDeviation参数,它确定价格是否正确。该参数用于将当前价格与先前观察比较。如果这些价格之间的差异超过该参数,则该价格被视为无效。

节点通过setAssetData函数推送价格数据,只有合约管理员能调用此函数。

安全风险

1. NFT底价数据推送

存在一个离线服务提供不正确数据或无法工作的风险。BendDAO团队声称他们操作多个节点,并在资产当前波动性上升时尽可能频繁地推送价格。我们可以假设这一逻辑应用得很好,但我们不能100%确信它如所描述工作,特别是在高度波动性期间。

此外,对价格的有效性检查可能导致当底价过快上涨/下跌时错过价格变化。

2. 坏债/协议资不抵债

NFT市场仍未像DeFi中的其他资产那样成熟/流动。治理者决定哪种NFT资产应被列为可接受抵押品。尽管NFT集合的入场水平很高,但仍有可能任何抵押资产的价格会突然大幅下跌,以至于没有人愿意参与拍卖/清算过程以买回该抵押品。结果,BendDAO协议可能会资不抵债,欠ETH存款者的未偿还债务。

3. NFT底价操纵

协调对特定抵押资产的底价操纵是可能的,以迫使某人的头寸变得不健康。由于NFT流动性较低,这种情况发生的可能性比传统DeFi资产要高得多。

4. 协议所有者配置

拥有一位可信赖的协议所有者至关重要,他们可以暂停借贷池、访问NFT底价预言机以及绑定NFT。BendDAO引入了一个7天的时间锁定,用于任何更改,并使用3/5的多签名钱包。紧急暂停可以在不经过时间锁定的情况下执行,但仍需多重签名。

5. 潜在重入性

绑定NFT实现中有一个空投索赔功能。它用于索取所有分发给原始NFT的奖励,而无需使用闪电索赔功能。可以意图重新进入一个像claimERC20Airdrop或claimERC721Airdrop这样的函数。这样的函数具有nonReentrant修饰符,以防止重入攻击,避免能够多次索取同一空投。

6. NFT预言机强制支出费用

价格数据通过EOA帐户推送到NFT Oracle,这会触发交易。BendDAO文档表示,价格根据市场波动性获取和推送。理论上,有可能猜测获取价格的策略,并操纵必要的市场上的价格,以迫使EOA更频繁地推送价格,从而使其在不必要的更新中浪费资金。此行为可能导致服务拒绝(DoS)和过时的NFT底价在BendDAO协议上。

结论

本文演示了充分证明和测试所有新概念的重要性。在BendDAO的情况下,提供可靠且持续的NFT价格源至关重要,并在进行操纵可能导致强制清算的情况下采取适当措施。

此外,还应注意与基础NFT集合相关的风险。早期和相对不流动的市场提供了可能导致坏债状况和ETH存款者抵押品损失的投机机会。

  • MixBytes是谁?

MixBytes 是一个由区块链审计和安全研究的专家团队,专门为EVM兼容和Substrate基础的项目提供全面的智能合约审计和技术咨询服务。欢迎加入我们的X,以查看最新的行业趋势和见解。

  • 原文链接: mixbytes.io/blog/benddao...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
mixbytes
mixbytes
Empowering Web3 businesses to build hack-resistant projects.