{"content":{"title":"BendDAO 协议概述","body":"作者：Pavel Morozov,  MixBytes的安全研究员\r\n\r\n![](https://img.learnblockchain.cn/2025/03/09/42.jpg)\r\n\r\n## **简介**\r\n\r\n在本文中，我们将描述BendDAO，这是一个NFT借贷协议，允许用户在其蓝筹NFT上获得即时流动性。文章包含三个部分：主要协议功能概述、最重要模块的技术细节，以及由这一新概念引入的可预见的安全风险。\r\n\r\n## **协议描述**\r\n\r\nBendDAO是一个NFT流动性协议，使用户能够使用他们的NFT作为抵押，以获得以其价值为基础的ETH贷款，并在购买不同的NFT时进行首付款。\r\n\r\n## **主要特征**\r\n\r\n1\\. **抵押品列表**\r\n\r\nNFT所有者可以将他们的蓝筹NFT带到协议中，并获得其ETH底价最高60%的即时流动性。此功能为卖家提供立即的流动性访问。NFT作为抵押，被创造出债务。未来，买方可以偿还债务并收到基础的NFT。\r\n\r\n2\\. **NFT首付款**\r\n\r\n买方可以支付至少NFT价值的40%，并成为借款人（借用NFT并有债务）。剩余的60%通过Aave闪电贷支付，并通过BendDAO的即时NFT抵押贷款偿还。因此，买方欠BendDAO 60%的NFT底价。买方必须偿还该金额才能收到基础NFT。任何人都可以在支持的市场，如BendDAO市场本身、OpenSea、LooksRare或X2Y2上购买不同的NFT。\r\n\r\n3\\. **清算保护**\r\n\r\nBendDAO引入了一个24小时的贷款偿还窗口。在此期间，借款人可以偿还其未偿还的债务而没有任何损失。此功能防止用户因市场波动而遭受损失。\r\n\r\n4\\. **绑定NFT**\r\n\r\n当用户将NFT存入BendDAO池时，他们会收到一个称为绑定NFT（bNFT）的NFT包装版本。在对原始NFT进行借款时，bNFT会被铸造，在贷款偿还时则被销毁。bNFT具有与原始NFT相同的元数据和tokenId。它是不可转让和不可授权的，以防止所有者被黑客攻击。bNFT可以访问空投、可索取和可铸造的资产。\r\n\r\n5\\. **闪电索赔**\r\n\r\n用户可以开发自己的智能合约，以接收最初存入的NFT，以索取空投或参与第三方项目活动。这与Aave类似的闪电贷相似，应在同一交易中归还。所有索赔和交互可以在接收和归还原始NFT之间进行。\r\n\r\n6\\. **ETH存款**\r\n\r\nETH存款者可以在其存入BendDAO池的ETH上赚取年化收益率（APR），奖励以BEND代币支付。这些ETH用于为NFT存款者提供即时流动性访问。\r\n\r\n7\\. **DAO**\r\n\r\nveBEND代币用于投票列出不同的NFT项目在BendDAO协议上。veBEND是一个投票质押的BEND代币，用户可以锁定其BEND代币最长为四年。veBEND持有者还收取NFT抵押贷款和首付款的收入。\r\n\r\n## **技术细节**\r\n\r\n1\\. **BendDAO协议代码库**\r\n\r\nBendDAO协议利用Aave最佳实践提供NFT借贷。LendPool合约是用户的主要入口点，允许他们通过存款、提取、借款和偿还、拍卖以及清算头寸与协议进行交互。\r\n\r\nLendPoolAddressesProvider和LendPoolAddressesProviderRegistry合约用于存储有关不同市场、相应资产和价格预言机的信息，以Aave类似的方式。\r\n\r\nBToken类似于Aave的AToken - 用户在向BendDAO存入ERC20代币时接收的带息代币。\r\n\r\n所有活跃贷款由LendPoolLoan合约存储和跟踪。每次调用LendPool后，必要的验证由该合约跟踪。它更新贷款状态或在需要时创建贷款。\r\n\r\nNFTOracle合约提供有关列出的NFT集合的底价数据。这些价格由具有管理权限的EOA推送到该合约。\r\n\r\nReserveOracle合约利用ChainLink价格源获取不同储备的价格。这些价格在计算NFT抵押时使用。\r\n\r\n2\\. **抵押品列表**\r\n\r\n卖家或借款人可以通过在LendPool合约上调用借款函数列出他们的NFT。用户应指定资产和希望借入的金额。ValidationLogic库中的validateBorrow函数随后检查该特定NFT集合的当前LTV下的贷款健康因子。\r\n\r\nBorrowLogic库使用_borrow函数检查指定的NFT ID是否已有贷款存在。如果正在创建贷款，NFT会从用户转移到BendDAO协议。作为回报，用户收到他们借入的资金和由LendPoolLoan合约在createLoan函数中铸造的bNFT代币。\r\n\r\n卖家或借款人可以通过调用LendPool合约上的borrow函数列出他们的NFT。用户应指定资产和希望借入的金额。ValidationLogic库中的validateBorrow函数随后检查该特定NFT集合的当前LTV下的贷款健康因子。\r\n\r\n作为回报，用户收到他们借入的资金以及由LendPoolLoan合约在createLoan函数中铸造的boundNFT代币。\r\n\r\n如果已有贷款存在，则仅更新该贷款，用户仅收到借入的资金。\r\n\r\n3\\. **NFT首付款**\r\n\r\nNFT首付款的逻辑不是BendDAO协议的一部分。然而，它仍然表现为一组合约，其中包括购买NFT的主要逻辑和针对各种市场的不同适配器。\r\n\r\nDownpayment合约有一个主要函数 - buy，一个可支付的函数，接受ether以执行购买并触发Aave闪电贷。之前提到的适配器之一接受该闪电贷，购买目标NFT，借取ETH从BendDAO池中抵押购买的NFT，并偿还Aave闪电贷。所有主要操作都在BaseAdapter合约的executeOperation函数内部执行，从中所有特定的适配器继承逻辑。\r\n\r\n4\\. **不健康的位置**\r\n\r\n如果某人的位置变得不健康，那么它就成为启动该位置拍卖的目标。这样的拍卖充当保护机制，防止立即清算过程。\r\n\r\n当位置健康因子低于1时，可以启动拍卖。在拍卖开始后，借款人有时间偿还他们的贷款，但要支付给第一个拍卖竞标者的罚款。\r\n\r\n**拍卖**\r\n\r\n任何人都可以参加拍卖。竞标者应以高于其他人的价格出价。最高竞标者在借款人未偿还债务的情况下获得抵押资产。\r\n\r\nLendPool合约中有一个拍卖函数，然后调用LendPoolLoan中的auctionLoan。auctionLoan函数跟踪最高竞标者及其价格。在这些调用之间，LiquidationLogic库将出价保留资产从当前竞标者转移到协议，并将资金返回给先前的竞标者。这确保了竞标者能够购买抵押资产。在拍卖成功后，最高竞标者有一个赎回期，他们应索取拍卖的抵押资产。这是通过LendPool合约中的redeem函数完成的。\r\n\r\n**清算**\r\n\r\nLendPool合约中有一个清算函数。接下来是在LendPoolLoan中调用的liquidateLoan，其中在LiquidateLogic中进行检查。它检查拍卖是否发生并是否结束（对于借款人的清算保护），以及是否没有竞标覆盖借款人的债务。仅在这些检查通过后，清算者才能执行其操作并获得抵押资产作为回报。\r\n\r\n5\\. **绑定NFT**\r\n\r\n绑定NFT是具有增强功能的ERC721代币 - 所有转移函数都被覆盖，并在任何调用时恢复，使绑定NFT不可转让。绑定NFT通过BNFT合约实现。主要有两个函数 - mint和burn。铸造接受用户的实际NFT并返回具有限制转让功能的绑定NFT。绑定NFT具有与原始NFT相同的元数据和tokenURI - 例如，tokenURI函数通过调用底层NFT来代理。\r\n\r\n有一个重要的闪电贷函数，可以实现闪电索赔逻辑。它允许用户在一笔交易中使用底层NFT去索取空投或参与原NFT项目。该函数将原始NFT转移给调用者，允许接收者在其侧执行executeOperation，如果能够将原始NFT返回，则成功。\r\n\r\n6\\. **NFT底价预言机**\r\n\r\nBendDAO团队运行NFT价格预言机。最初，价格数据从不同市场获取并通过一个链下节点聚合。在这些价格获取时并未披露，但这些节点将价格数据推送到NFTOracle合约，该合约收集所有支持资产的TWAP价格。\r\n\r\n还有一个maxPriceDeviation参数，它确定价格是否正确。该参数用于将当前价格与先前观察比较。如果这些价格之间的差异超过该参数，则该价格被视为无效。\r\n\r\n节点通过setAssetData函数推送价格数据，只有合约管理员能调用此函数。\r\n\r\n## **安全风险**\r\n\r\n1\\. **NFT底价数据推送**\r\n\r\n存在一个离线服务提供不正确数据或无法工作的风险。BendDAO团队声称他们操作多个节点，并在资产当前波动性上升时尽可能频繁地推送价格。我们可以假设这一逻辑应用得很好，但我们不能100%确信它如所描述工作，特别是在高度波动性期间。\r\n\r\n此外，对价格的有效性检查可能导致当底价过快上涨/下跌时错过价格变化。\r\n\r\n2\\. **坏债/协议资不抵债**\r\n\r\nNFT市场仍未像DeFi中的其他资产那样成熟/流动。治理者决定哪种NFT资产应被列为可接受抵押品。尽管NFT集合的入场水平很高，但仍有可能任何抵押资产的价格会突然大幅下跌，以至于没有人愿意参与拍卖/清算过程以买回该抵押品。结果，BendDAO协议可能会资不抵债，欠ETH存款者的未偿还债务。\r\n\r\n3\\. **NFT底价操纵**\r\n\r\n协调对特定抵押资产的底价操纵是可能的，以迫使某人的头寸变得不健康。由于NFT流动性较低，这种情况发生的可能性比传统DeFi资产要高得多。\r\n\r\n4\\. **协议所有者配置**\r\n\r\n拥有一位可信赖的协议所有者至关重要，他们可以暂停借贷池、访问NFT底价预言机以及绑定NFT。BendDAO引入了一个7天的时间锁定，用于任何更改，并使用3/5的多签名钱包。紧急暂停可以在不经过时间锁定的情况下执行，但仍需多重签名。\r\n\r\n5\\. **潜在重入性**\r\n\r\n绑定NFT实现中有一个空投索赔功能。它用于索取所有分发给原始NFT的奖励，而无需使用闪电索赔功能。可以意图重新进入一个像claimERC20Airdrop或claimERC721Airdrop这样的函数。这样的函数具有nonReentrant修饰符，以防止重入攻击，避免能够多次索取同一空投。\r\n\r\n6\\. **NFT预言机强制支出费用**\r\n\r\n价格数据通过EOA帐户推送到NFT Oracle，这会触发交易。BendDAO文档表示，价格根据市场波动性获取和推送。理论上，有可能猜测获取价格的策略，并操纵必要的市场上的价格，以迫使EOA更频繁地推送价格，从而使其在不必要的更新中浪费资金。此行为可能导致服务拒绝（DoS）和过时的NFT底价在BendDAO协议上。\r\n\r\n## **结论**\r\n\r\n本文演示了充分证明和测试所有新概念的重要性。在BendDAO的情况下，提供可靠且持续的NFT价格源至关重要，并在进行操纵可能导致强制清算的情况下采取适当措施。\r\n\r\n此外，还应注意与基础NFT集合相关的风险。早期和相对不流动的市场提供了可能导致坏债状况和ETH存款者抵押品损失的投机机会。\r\n\r\n- MixBytes是谁？\r\n\r\n\r\n\r\n[MixBytes](https://mixbytes.io/) 是一个由区块链审计和安全研究的专家团队，专门为EVM兼容和Substrate基础的项目提供全面的智能合约审计和技术咨询服务。欢迎加入我们的[X](https://twitter.com/MixBytes)，以查看最新的行业趋势和见解。\r\n\r\n>- 原文链接： [mixbytes.io/blog/benddao...](https://mixbytes.io/blog/benddao-protocol-overview)\r\n>- 登链社区 AI 助手，为大家转译优秀英文文章，如有翻译不通的地方，还请包涵～"},"author":{"user":"https://learnblockchain.cn/people/24680","address":null},"history":null,"timestamp":1741514133,"version":1}