介绍

Aave V3 于 2022 年 3 月部署,标志着去中心化金融 (DeFi) 借贷协议的一个重要里程碑。作为 Aave 早期版本的演进,V3 提高了资本效率,引入了先进的风险管理工具,并为跨多个区块链的用户提供了更大的灵活性。Aave V3 的总价值锁定 (TVL) 已增长到超过 650 亿美元,支持以太坊、Polygon、Arbitrum、Optimism 和 Avalanche 等网络上的 20 多种资产。最近与 Ethena Labs 的 sUSDe 和 World Liberty Financial 的定制实例等集成,突显了其在成熟的 DeFi 格局中的适应性。

本指南探讨了 Aave V3 的核心架构、其工作原理以及相对于 V2 的主要改进。我们将包括实际的代码示例、图表和一个托管流动性合约,以便在 Sepolia 测试网上进行实际操作。与 Compound V3 等协议的比较以及真实世界的用例(例如,收益率 6-10% APY 的稳定币挖矿)将突出其优势。无论你是构建 DeFi 应用程序的开发人员、优化收益的 LP,还是寻求低风险贷款的借款人,本文都将提供可操作的见解。

什么是 Aave V3?

Aave V3 是一种非托管、去中心化的流动性协议,可促进加密货币的借贷。用户可以提供资产以赚取利息或使用抵押品借款,所有这些都由智能合约管理,无需中介。与传统银行不同,Aave 在区块链网络上运行,确保透明度、不变性和全球可访问性。

在你的收件箱中获取 codebyankita 的故事

核心参与者

  • 供应商(贷方):将代币(例如 USDC、ETH)存入流动性池,以从借款人的利息中赚取收益。他们收到 aTokens(例如 aUSDC),随着时间的推移会累积价值。
  • 借款人:锁定抵押品以借入资产,支付浮动或固定利率。过度抵押(例如,波动性资产为 150%)可以防止违约。
  • 清算人:监控和关闭抵押不足的头寸,赚取奖金(例如 5-10%),以维持协议的健康。
  • 治理参与者:AAVE 代币持有者对协议升级、风险参数和资产上市进行投票。

Aave V3 在 V2 的基础上(于 2020 年推出)构建,增加了跨链支持、效率模式和高级风险工具。它支持每个市场超过 20 种资产,TVL 分布为:以太坊(约 250 亿美元)、Polygon(约 150 亿美元)和 L2(合计约 250 亿美元)。与 BlockFi 等中心化贷方(2022 年破产)相比,Aave 的非托管模型消除了交易对手风险,尽管它引入了智能合约漏洞(通过审计缓解)。

Aave V3 协议如何运作

Aave V3 充当一个自动化的货币市场,其中供需动态地设定利率。以下是详细的细分:

  1. 提供流动性
  • 用户通过 Pool 合约存入资产。
  • 该协议铸造 aTokens,代表对存款和应计利息的申索
  • 利息根据资金池利用率计算(例如,借款需求高 = 利率更高)。

2. 借入资产

  • 用户首先提供抵押品,然后根据抵押品借款。
  • 智能合约强制执行 LTV 比率(例如,ETH 为 80%)和健康因子(HF = 抵押品价值 / 债务价值,必须 >1)。
  • 利率:浮动(市场驱动)或固定(固定,但定期重新平衡)。

3. 偿还和提款

  • 借款人通过 Pool 偿还,解锁抵押品。
  • 只要没有借款利用率阻止它,供应商就可以提取 aTokens 以获取基础资产。

4. 清算

  • 如果 HF <1(例如,由于价格下跌),头寸将变得可清算。
  • 清算人偿还部分债务并以折扣价扣押抵押品。

5. 闪电贷

  • 用于套利的无抵押贷款;必须在一个 tx 中偿还 +0.09% 的费用。

详细的清算流程图

跨链门户机制(分步)

  • Aave V3 的门户功能可以使用 LayerZero 或 CCIP 等桥梁在网络之间(例如,以太坊到 Polygon)实现无缝资产转移。
  1. 发起转移:用户在源链上调用 bridgeCredit,销毁债务代币。
  2. 桥执行:协议使用桥(例如 CCIP)来发送消息和跨链资产。
  3. 目标铸造:在目标链上,铸造新的债务代币并记入用户。
  4. 结算:治理强制执行债务上限;L2 上的费用约为 0.10 美元。
  5. 风险控制:预言机同步价格;如果桥失败,则紧急暂停。

代码(简化的门户调用):

function bridgeCredit( address asset, uint256 amount, uint16 destinationChainId ) external { require(isBridgeEnabled(destinationChainId), "Invalid chain"); pool.burnCredit(asset, amount, msg.sender); bridgeAdapter.bridge(asset, amount, destinationChainId, msg.sender); }

这实现了高效的多链策略,例如在以太坊上提供并在 Optimism 上借款以获得更低的 gas 费用(0.0088 美元/tx)。

Aave V3 的主要改进

虚拟会计

V3 的虚拟层将内部跟踪与链上余额分开,防止因外部转移而导致的错误。

  • 工作原理:使用用于供应的 rebasing aTokens 和用于借款的债务代币。
  • 代码示例
     struct ReserveData { uint256 liquidityIndex; uint256 variableBorrowIndex; }

function getNormalizedIncome(address asset) external view returns (uint256) { return reserves[asset].liquidityIndex; }

- **优点**:节省 20-25% 的 gas 费用;处理空投而不影响收益。 ### E-Mode(效率模式) 适用于相关资产(例如,稳定币)。 - **类别**:最多 255 个(例如,稳定币:DAI/USDC/USDT)。 - **改进**:LTV 高达 97%(vs. 75%),清算阈值为 98%。 - **代码示例**:

struct EModeCategory { uint16 ltv; uint16 liquidationThreshold; }

function setUserEMode(uint8 categoryId) external { userConfig[msg.sender].eModeCategory = categoryId; }

- **用例**:借入 970 美元的 USDC 以对抗 1000 美元的 DAI;非常适合杠杆循环(6-8% APY)。 ### 隔离模式 适用于风险资产。 - **工作原理**:将借款限制为具有债务上限的稳定币。 - **代码示例**:

struct ReserveConfiguration { bool isIsolated; uint256 debtCeiling; }

function setReserveIsolation(address asset, bool enabled) external onlyRiskAdmin { reserves[asset].configuration.isIsolated = enabled; }

- **优点**:安全的资产**入职**;例如,新代币的上限为 100 万美元。 ### 利率改进 用于动态利率的有状态策略。 - **模型**:具有上限的基于利用率的曲线。 - **代码示例**:

function calculateInterestRates( uint256 utilizationRate ) external view returns (uint256 liquidityRate, uint256 borrowRate) { liquidityRate = baseRate + (slope1 * utilizationRate); borrowRate = liquidityRate + premium; }

- **优点**:防止 100%+ 的利率**飙升**;治理可以更新曲线。 ### 风险管理和安全 - **上限**:供应/借款限制(例如,WBTC 为 1000 万美元)。 - **清算**:如果 HF &lt;0.95 则清算全部头寸;奖金 5-10%。 - **预言机哨兵**:L2 停机期间的 30 分钟宽限期。 - **孤立借款**:限制为每个头寸一项资产。 - **代码示例**(健康因子):

function getUserAccountData(address user) external view returns ( uint256 totalCollateral, uint256 totalDebt, uint256 healthFactor ) { // Calculations based on oracles }

 ### 智能合约设计 模块化和可升级: - **Pool.sol**:核心逻辑。 - **AToken.sol**:供应商代币。 - **DebtToken.sol**:借款人债务。 - **优点**:用于升级的代理模式;高覆盖率(792% 测试)。 ### 托管流动性和透明度 - **非托管**:用户控制**密钥**;合约持有资金。 - **透明度**:通过 The Graph 子图进行链上数据。 - **托管示例**:请参阅下面的实现。 ### 治理和配置 - **AAVE 持有者**:通过论坛/Snapshot 提出 AIP。 - **角色**:PoolAdmin(暂停**池**),RiskAdmin(调整参数)。 - **跨链**:投票通过 LayerZero **桥接**。 - **2025 年示例**:sUSDe 集成的 AIP。 ## 实施:托管流动性合约 此合约管理 Sepolia 上的 USDC/ETH 借贷,目标是 6-10% 的 APY。

// SPDX-License-Identifier: MIT pragma solidity ^0.8.0;

import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@aave/core-v3/contracts/interfaces/IPool.sol"; import "@aave/core-v3/contracts/interfaces/IAToken.sol";

contract AaveV3LiquidityManager is ReentrancyGuard { address public constant USDC = 0xYOUR_USDC_ADDRESS; // Sepolia USDC address public constant WETH = 0xYOUR_WETH_ADDRESS; // Sepolia WETH IPool public immutable pool;

struct Position { address owner; uint256 amountSupplied; uint256 amountBorrowed; uint256 healthFactor; } mapping(address => Position) public positions; constructor(address _pool) { pool = IPool(_pool); } function supplyLiquidity(address asset, uint256 amount) external nonReentrant { require(amount > 0, "Invalid amount"); IERC20(asset).transferFrom(msg.sender, address(this), amount); IERC20(asset).approve(address(pool), amount); pool.supply(asset, amount, msg.sender, 0); positions[msg.sender].amountSupplied += amount; positions[msg.sender].healthFactor = pool.getUserAccountData(msg.sender).healthFactor; } function borrowAsset(address asset, uint256 amount) external nonReentrant { require(positions[msg.sender].amountSupplied > 0, "No collateral"); pool.borrow(asset, amount, 2, 0, msg.sender); // Variable rate positions[msg.sender].amountBorrowed += amount; positions[msg.sender].healthFactor = pool.getUserAccountData(msg.sender).healthFactor; } function repayLoan(address asset, uint256 amount) external nonReentrant { IERC20(asset).transferFrom(msg.sender, address(this), amount); IERC20(asset).approve(address(pool), amount); pool.repay(asset, amount, 2, msg.sender); positions[msg.sender].amountBorrowed -= amount; positions[msg.sender].healthFactor = pool.getUserAccountData(msg.sender).healthFactor; } function withdrawLiquidity(address asset, uint256 amount) external nonReentrant { require(positions[msg.sender].amountSupplied >= amount, "Insufficient balance"); pool.withdraw(asset, amount, msg.sender); positions[msg.sender].amountSupplied -= amount; positions[msg.sender].healthFactor = pool.getUserAccountData(msg.sender).healthFactor; }

}

 **在 Sepolia 上部署**: 1. 从 GitHub 导入 Aave V3 核心。 2. 使用 Pool 地址(Aave Sepolia 测试网)进行部署。 3. 测试:提供 1000 USDC,借入 800 USDC(E-Mode),监控 HF。 ## 优化策略和收益示例 - **稳定币挖矿**:供应 USDC(4% 收益率),在 E-Mode 中借入 DAI,质押以获得 6-8% APY。 - **杠杆循环**:借入提供的 ETH,重新供应以获得 8-10%(风险 IL)。 - **跨链**:在 Polygon 上供应(0.0075 gas),在 Arbitrum 上借入。 - **监控脚本**(Python):

from web3 import Web3 w3 = Web3(Web3.HTTPProvider('https://eth-sepolia.g.alchemy.com/v2/KEY')) pool = w3.eth.contract(address='POOL_ADDRESS', abi=POOL_ABI) def get_health_factor(user): data = pool.functions.getUserAccountData(user).call() return data[5] / 1e18 print(get_health_factor('USER_ADDRESS'))

 - **2025 年收益率**:稳定币 4-6%,ETH 6-10%(Fusaka gas 降低后)。 ## 安全注意事项和审计 - **重入/闪电贷**:受到保护;闪电贷费用 0.09%。 - **预言机操纵**:多个预言机(Chainlink、自定义);Sentinel 用于**停机**。 - **审计**:由 OpenZeppelin(2022 年)、PeckShield(2024 年);1000 万美元的漏洞赏金。 - **风险**:HF 因波动而下降;使用 >1.5 的缓冲来缓解。 - **工具**:使用 Slither 进行静态分析,使用 Foundry 进行测试。 ## 最新进展和未来展望(2025 年) - **Ethena Labs**:sUSDe 集成提高了稳定收益率(5-7%)。 - **World Liberty Financial**:自定义 Aave 实例与 DAO 分享 20% 的费用。 - **Fusaka 升级**:以太坊 2025 年 11 月的更新将费用降低 70%,使 Aave 受益。 - **V4 预览**:Hub-and-Spoke 统一流动性;用于自定义利率的风险**溢价**。 - **预测**:到 2026 年 TVL 将达到 1000 亿美元;专注于 RWA 和 AI 驱动的风险模型。 ## 与其他协议的比较 ![](https://www.chucklefeed.com/uploads/202510/29/7fffdd88b91c26a5.webp) Aave 在多链和风险工具方面表现出色;Compound 在简单性方面表现出色;Morpho 在自定义方面表现出色。 ## 结论 Aave V3 以其高效、安全和灵活的设计树立了 DeFi 借贷的标准。E-Mode、隔离模式和虚拟会计等改进可实现更高的收益率(6-10% APY),同时最大限度地降低风险。托管合约简化了管理,使其对所有用户都可访问。随着 DeFi 增长到 3120 亿美元的 TVL,Aave 的创新(在 2025 年的集成和以太坊升级的支持下)使其能够继续保持领先地位。开发人员:在 Sepolia 上进行测试,彻底审计。LP:分散投资并监控 HF。借贷的未来是去中心化的、高效的和以用户为中心的——通过 Aave V3 拥抱它。 >- 原文链接: medium.com/@ankitacode11... >- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~