Aave V4 协议系统梳理

Aave V4 是 Aave 协议的下一代版本,采用 Hub-Spoke 模块化架构, 实现了统一的流动性层与用户操作层的分离。核心创新包括: 按用户抵押品质量的风险溢价定价、 动态风险配置(多版本共存)、 荷兰拍式清算引擎、 以及 可选的再投资模块。

技术栈: Solidity (Foundry 框架) | 许可协议:BUSL 1.1 (核心), MIT (接口)
代码仓库: github.com/aave/aave-v4 | 最新版本:v0.5.11 (2026-03-20)
审计机构: Blackthorn, Trail of Bits, ChainSecurity (2026.02)

1. 协议概述

核心改进(相对 V3)

维度V3V4
架构 单体 Pool 合约,含全部业务逻辑 Hub-Spoke 分离:Hub 管流动性,Spoke 管用户操作
升级性 Pool 不可升级,新功能靠 Governance 提案 Spoke 可升级,Hub 不可变(最小化核心风险)
利率模型 所有借款人同一利率(由利用率决定) 基础利率 + 用户风险溢价(按抵押品质量差异化定价)
风险参数 全局风险参数,修改即时影响所有仓位 动态配置:新参数仅影响新仓位,旧仓位沿用旧配置
清算机制 固定 Close Factor(50%/100%)+ 固定清算奖励 目标健康因子 + 荷兰拍式可变清算奖励
坏账处理 V3.3 引入坏账清理和 deficit 追踪 内置 deficit 报告机制 + Spoke 间互助消除 deficit
闲置资金 全部锁在流动性池中 可选再投资模块:闲置资金部署到外部策略
跨链/多资产 Portal 跨链桥 多 Spoke 可接入同一 Hub(包括 RWA、DEX LP 等任意资产类型)
设计哲学: Aave V4 的核心设计原则是关注点分离。 Hub(不可变)负责资金托管和利率计算,Spoke(可升级)负责用户交互和风险管理。 这种分离允许协议在不迁移流动性的前提下,动态添加新资产类型和借贷场景。

第一部分:行为图 —— 系统"做什么"

2. 用例图

Aave V4 的五类参与者和核心用例:

Aave V4 Use Case Diagram
图1: Aave V4 用例图

参与者说明

角色说明
Supplier(存款人)存入资产到流动性池,赚取被动利息收益
Borrower(借款人)以超额抵押方式借出资产,支付利息(含风险溢价)
Liquidator(清算人)监控不健康仓位并触发清算,获取清算奖励
Governance(治理)管理 Spoke 注册、风险参数、利率策略、紧急控制等
Reinvestor(再投资者)将闲置流动性 sweep 到外部策略或 reclaim 回 Hub

3. 供应流程 (Supply)

用户存入资产到 Spoke 的完整调用链:

Aave V4 Supply Sequence
图2: 供应流程 (Supply) 时序图

关键步骤

  1. 用户通过 Position Manager 调用 supply()
  2. Spoke 从用户地址 transferFrom ERC20 资产
  3. Spoke 调用 Hub.deposit(spokeId, assetId, amount)
  4. Hub 更新虚拟余额(virtual balance accounting)、累积利息、检查 add cap
  5. Hub mint supply shares 返回给 Spoke
  6. Spoke 记录用户 supply shares、更新抵押品记账

4. 借款流程 (Borrow)

用户以抵押品借出资产的完整调用链:

Aave V4 Borrow Sequence
图3: 借款流程 (Borrow) 时序图

关键步骤

  1. 用户通过 Position Manager 调用 borrow()
  2. Spoke 验证 reserve 状态(active && borrowable)
  3. Spoke 验证抵押品充足(HF > 1)
  4. Spoke 计算用户风险溢价 (RP_u),基于该用户的抵押品组合
  5. Spoke 调用 Hub.refreshPremium(user, newRP) 重校准 premium shares
  6. Spoke 调用 Hub.borrow(spokeId, assetId, amount)
  7. Hub 更新 drawn shares、累积利息、检查 draw cap
  8. Spoke 记录用户 drawn debt + premium debt

5. 清算流程 (Liquidation)

Aave V4 Liquidation Sequence
图4: 清算流程 (Liquidation) 时序图

清算流程步骤

  1. 检查资格:当借款人 HF 低于清算阈值,任何人可触发清算(不能自己清算自己)
  2. 确定偿还金额:基于 TargetHealthFactor 计算需要偿还的债务(不能造成粉尘残留)
  3. 处理粉尘:若剩余债务低于 DUST_LIQUIDATION_THRESHOLD,且清算人选择全额偿还,则允许覆盖全部债务
  4. 计算抵押品:转换债务金额为抵押品价值,应用荷兰拍奖励
  5. 执行转账和清算奖励:转移抵押品(含 bonus)给清算人,费用部分发给协议
  6. 可选 shares 接收:若 receiveSharesEnabled 且 reserve 未冻结,清算人可接收 Hub shares 而非底层资产
  7. 报告 deficit:若用户无剩余抵押品但仍有债务,报告 protocol deficit

6. 风险溢价计算流程

Risk Premium Flow
图5: 风险溢价计算流程图

触发时机

RP_u 在以下操作时刷新(即用户可能增加风险时):borrow、withdraw(减少抵押品)、setUsingAsCollateral(禁用抵押品)、liquidationCall。

降低风险的操作(repay、supply)不会刷新 RP_u。用户也可主动调用 updateUserRiskPremium() 刷新。Governance 有权强制刷新。

计算公式

RP_u = Sigma(CR_i x C_{u,i} x P_i) / Sigma(C_{u,i} x P_i)

其中 CR_i 为资产 i 的 Collateral Risk,C_{u,i} 为用户 u 的资产 i 抵押品数量,P_i 为资产 i 的价格。

Premium Offset 机制

风险溢价在实现上通过额外的虚拟债务份额(premium shares)来实现:


7. Spoke / 资产状态机

每个 Spoke 有全局状态,每个 Reserve 有独立状态。两种状态机正交运行:

Aave V4 State Machine
图6: Spoke / 资产状态机

Spoke 全局状态

状态说明
active正常模式,所有用户操作(supply/withdraw/borrow/repay/liquidate)均可执行
halted紧急模式,用户操作全部停止,仅 Governance 可执行管理操作

Reserve(资产)状态

参数说明
active资产是否活跃
frozen资产是否冻结(即使冻结也可被清算)
paused资产是否暂停
borrowable是否允许借款
receiveSharesEnabled清算人是否可接收 shares 而非底层资产
collateralRisk抵押品风险系数(0-100000 BPS),决定风险溢价
正交状态: Spoke 的 active/halted 与 Reserve 的 active/frozen/paused 相互独立。 例如:Spoke 可以 active 但某个 Reserve 被冻结;或 Spoke 被 halted 时所有 Reserve 无法操作。 清算在 frozen 的 reserve 上仍然允许。

第二部分:结构图 —— 系统"由什么组成"

8. Hub-Spoke 架构

Aave V4 引入 Hub-and-Spoke 模型作为流动性管理的核心架构范式。 Hub 是不可变的核心合约,协调流动性; Spoke 是可升级的模块,处理特定资产的供应和借款。 一个 Hub 可以拥有不限数量的 Spoke,每个 Spoke 都可以贡献总债务和利息。

Hub 职责

Spoke 职责

Spoke 类型


9. 系统组件架构图

Aave V4 System Architecture
图7: Aave V4 系统组件架构图

10. Hub 模块详解

Hub 是 Aave V4 的不可变核心合约,负责所有流动性会计和利率计算。核心合约:

合约路径说明
Hub.sol src/hub/Hub.sol 主合约,33KB。暴露 deposit/withdraw/borrow/repay 等核心接口
HubConfigurator.sol src/hub/HubConfigurator.sol 配置管理合约,负责 Spoke 注册、限额设置、紧急控制等
HubStorage.sol src/hub/HubStorage.sol 存储布局定义
AssetInterestRateStrategy.sol src/hub/AssetInterestRateStrategy.sol 利率策略合约,基于利用率计算资产利率

Hub 核心方法

方法调用方说明
deposit(spokeId, assetId, amount) Spoke 存入资产到 Hub,mint supply shares
withdraw(spokeId, assetId, amount) Spoke 从 Hub 提取资产
borrow(spokeId, assetId, amount) Spoke 从 Hub 借出资产,记录 drawn shares
repay(spokeId, assetId, amount) Spoke 偿还借款
refreshPremium(user, riskPremium) Spoke 刷新用户风险溢价,重校准 premium shares 和 offset
eliminateDeficit(spokeId, assetId) Spoke 使用 Spoke 的 supply shares 填补其他 Spoke 的 deficit
mintFeeShares(spokeId, assetId) 授权实体 铸造协议费用份额

Spoke 配置项

参数说明
addCapSpoke 向 Hub 存入资产的流动性上限
drawCapSpoke 从 Hub 借出资产的上限
riskPremiumThreshold限制 Spoke 上报的 premium shares 与 drawn shares 的最大比例
active / haltedSpoke 状态:active(正常)/ halted(紧急停止用户操作)

协议费用生命周期

协议从借款人利息中抽取 liquidity fee(流动性费用),但费用不直接打到某个固定账户,而是经过以下生命周期:

  1. 累积: 借款人支付的利息中,按 liquidity fee 比例扣除的部分,在 Hub 内以 supply shares 形式累积记账
  2. 铸造: 授权实体(通常是 TreasurySpoke)调用 Hub.mintFeeShares(spokeId, assetId),将累积费用铸造为对应的 supply shares,转入 TreasurySpoke
  3. 留存: 这些 shares 留在协议内,持续累积利息收益
  4. 提取: 只有经 Aave Governance(DAO 投票)批准后,才能从 TreasurySpoke 提取到授权的国库地址
关键点: 费用不会自动转给 Aave 官方。从累积到提取的每一步都需要授权调用,最终由 DAO 决定资金去向。

会计不变量


11. Spoke 模块详解

Spoke 是面向用户的可升级合约,处理供应、借款、清算等用户操作。核心合约:

合约路径大小说明
Spoke.sol src/spoke/Spoke.sol 36KB Spoke 基类,所有核心逻辑
SpokeConfigurator.sol src/spoke/SpokeConfigurator.sol 11KB Spoke 端配置管理(初始化储备、动态风险配置等)
SpokeStorage.sol src/spoke/SpokeStorage.sol 1.6KB Spoke 存储布局定义
TokenizationSpoke.sol src/spoke/TokenizationSpoke.sol 14KB 代币化 Spoke(标准加密资产)
TreasurySpoke.sol src/spoke/TreasurySpoke.sol 3.5KB 金库 Spoke(费用管理)
AaveOracle.sol src/spoke/AaveOracle.sol 3KB 预言机合约(per-Spoke 独立配置)

12. Position Manager(仓位管理器)

Position Manager 是用户与 Spoke 之间的网关合约层,提供增强的用户体验:

合约说明
NativeTokenGateway 原生代币(ETH)网关:封装/解封装原生代币以与 Spoke 交互
SignatureGateway EIP-712 元交易网关:支持 gasless 操作(supplyWithPermit 等)
ConfigPositionManager 仓位配置管理:setUsingAsCollateral、setUserEMode 等
TakerPositionManager 标准仓位管理:supply/withdraw/borrow/repay/liquidationCall
GiverPositionManager 捐赠/赠送仓位:donate、give 操作

13. 合约类图

Aave V4 Contract Class Diagram
图8: Aave V4 合约类图

第三部分:核心机制

14. 风险溢价系统 (Risk Premium)

Aave V4 的核心创新之一是按用户抵押品质量差异化定价。 每个用户的借款利率 = 基准利率 (base drawn rate) + 风险溢价 (risk premium), 其中风险溢价由该用户抵押品的质量决定。

核心理念: 使用高质量抵押品(如 ETH)的借款人获得更低利率; 使用高风险抵押品的借款人支付更高利率。这激励了高质量抵押品的供应,同时更准确地定价了风险。

抵押品风险 (Collateral Risk, CR)

每个资产被赋予一个 Collateral Risk 值(BPS,范围 0 - 100000):

CR 属于 Spoke 级别的风险参数,同一个资产在不同 Spoke 中可以有不同的 CR 值。

用户风险溢价 (User Risk Premium, RP_u)

RP_u 由用户的抵押品组合动态决定:

(计算公式见 6. 风险溢价计算流程。)


15. 利息累积模型

每个借款仓位的利息被拆分为两个并行的累积流,均按 Hub 的 drawn rate 累积:

Drawn Debt (基准债务)

Premium Debt (溢价债务)

总债务

D_{u,i} = D_{u,ibase} + D_{u,ipremium}

从用户视角看,仅看到一个综合利率:

R_{u,i} = R_{sbase,i} x (1 + RP_u)
利率策略: Hub 使用经典的利用率利率曲线: 利用率 U < 最优利用率时按 slope1 增长,U > 最优利用率时按 slope2 快速增长。 基准 drawn rate 对同一资产的所有用户相同,差异化仅体现在 risk premium 部分。

16. 动态风险配置 (Dynamic Risk Configuration)

V3 的最大风险痛点之一是:所有仓位共享同一个全局风险参数配置。 一旦 Governance 调整(如降低 Liquidation Threshold),所有现存仓位立即受影响,可能导致意外清算。

Aave V4 的解决方案:允许多个风险配置版本同时存在。

工作原理

  1. Governance 每次调整抵押参数(CF, Max LB, LF)时,协议新增一个配置版本,而非覆盖旧配置
  2. 旧配置继续治理在其下开启的仓位
  3. 新仓位绑定到最新配置
  4. 配置存储在一个上限为 ~43 亿条目的字典中,由 dynamicConfigKey(uint32)标识

快照更新时机

用户仓位的 dynamicConfigKey 快照在以下操作时刷新(对所有抵押品资产):

以下操作不刷新快照:supply、repay、liquidationCall、updateUserRiskPremium。

自动重绑定与硬性安全防护


17. 清算引擎

Aave V4 重新设计了清算机制,用目标健康因子替代了 V3 的固定 Close Factor, 并引入了荷兰拍式可变清算奖励。

V3 vs V4 清算机制对比

维度V3V4
清算额度固定的 50%(或 HF < 0.95 时为 100%)按需偿还到 TargetHealthFactor
清算奖励固定值(如 5%)荷兰拍式:HF 越低奖励越高,线性变化
粉尘处理低于阈值时 revert动态允许全额偿还以避免粉尘,除非该 reserve 完全耗尽

可配置参数

参数级别说明
TargetHealthFactorSpoke 全局清算后应恢复到的目标 HF(>= 清算阈值常量)
DUST_LIQUIDATION_THRESHOLD硬编码常量粉尘阈值,固定为 $1000 等值
maxLiquidationBonusper reserve dynamic config最大清算奖励(BPS),如 10500 = 5% bonus
healthFactorForMaxBonusSpoke 全局低于此 HF 时获得最大奖励
liquidationBonusFactorSpoke 全局HF=LIQ_THRESHOLD 时可获得的最大奖励比例
receiveSharesEnabledper reserve清算人是否可接收 shares(产生收益,更高效)

荷兰拍清算奖励公式

lb = maxLB                                          (if HF <= hfForMaxBonus)
lb = minLB + (maxLB - minLB) x (LIQ_THRESHOLD - HF) / (LIQ_THRESHOLD - hfForMaxBonus)  (if HF > hfForMaxBonus)

其中:

Deficit 消除

清算后若用户无剩余抵押品但仍有债务,系统报告 deficit。任何授权且 active 的 Spoke 可调用 Hub.eliminateDeficit() 使用自身 supply shares 来覆盖其他 Spoke 的 deficit。这在紧急情况下也可执行(Spoke halted 但 active 时)。


第四部分:扩展与对比

18. 再投资模块 (Reinvestment Module)

Aave V4 内置了可选的再投资基础设施,允许将 Hub 中的闲置流动性部署到外部投资策略中,且不影响资产利率。

重要: 再投资模块是完全可选的。是否启用、何种策略、风险参数等均由 Governance 决定。 不启用时,所有流动性保持在 Hub 中,核心功能不受影响。

关键特性

特性说明
Governance 控制所有资金分配由 Governance 独家管理
利率中性Swept 流动性仍然计入利用率分母,不影响 drawn rate
用户可选加入在 per-asset 级别启用,用户选择是否供应到启用 reinvestment 的 Hub 资产
增强收益闲置流动性投入外部策略,opt-in 用户获得增量收益
风险隔离再投资策略的亏损由 Governance 吸收(定义覆盖方式),LP 不直接暴露于策略风险

19. V3 vs V4 架构对比

V3 vs V4 Architecture Comparison
图9: Aave V3(单体)vs V4(Hub-Spoke)架构对比

总结

维度V3V4
架构模式单体 PoolHub-Spoke 模块化
核心合约1 个 Pool + 多个 Library(delegatecall)1 Hub(不可变)+ N Spoke(可升级)
利率定价统一利率基准利率 + 用户风险溢价
风险参数全局即时生效多版本共存,渐进过渡
清算固定 Close Factor + 固定奖励目标 HF + 荷兰拍可变奖励
可扩展性新功能需 Governance 提案升级新 Spoke 可独立部署,接入已有 Hub
资金效率闲置资金锁在池中可选再投资模块部署闲置资金
参考资料: