Aave v3 学习

  • Alan
  • 更新于 2024-09-29 12:26
  • 阅读 663

Aave协议架构概览Aave协议采用分层架构设计,主要分为以下几层:CoreLayer:协议核心逻辑层,包含资金池、配置、数据提供、公共库等模块PeripheryLayer:协议外围功能层,包含预言机、奖励控制、手续费管理、钱包余额提供等模块DeploymentLayer

<!--StartFragment-->

Aave 协议架构概览

Aave 协议采用分层架构设计,主要分为以下几层:

  • Core Layer: 协议核心逻辑层,包含资金池、配置、数据提供、公共库等模块
  • Periphery Layer: 协议外围功能层,包含预言机、奖励控制、手续费管理、钱包余额提供等模块
  • Deployment Layer: 协议部署相关模块,帮助实现协议前端交互和部署流程

模块介绍与关键流程分析

Pool

资金池模块,是 Aave 的核心,管理所有存借资产。关键流程:

    • supply: 存款。用户调用传入资产类型和数额,合约记录存款、增发 aToken、更新储备金等
    • withdraw: 取款。合约销毁对应 aToken、减少储备金、转移资产到用户账户
    • borrow: 借款。合约检查抵押率,为用户增发债务 token,并转移借出资产到用户账户
    • repay: 还款。合约记录还款数额,销毁对应债务 token,更新储备金
    • liquidationCall: 清算。触发条件为抵押率低于清算阈值,合约出售抵押资产偿还债务

Rewards Controller

Rewards Controller 是 Aave 协议的奖励管理模块,主要职责是记录用户的存借情况,并根据其贡献度定期发放原生代币奖励。

关键流程:

  • handleAction: 记录用户操作,如存款、借款、还款等,更新用户奖励指数
  • getRewardsBalance: 计算用户的奖励余额
  • claimRewards: 用户领取奖励,合约将奖励代币转入用户账户

Fees Collector

Fees Collector 是 Aave 协议的手续费管理模块,负责从储备金中提取一定比例的资产作为协议收入,同时还可以将收益再分配给 Aave 代币的质押者。

关键流程:

  • updateFees: 更新协议费用,从资金池的储备金中提取一定比例的资产到 Fees Collector
  • claimFees: 协议拥有者提取累积的手续费收入
  • claimStakerRewards: Aave 代币质押者领取质押奖励

Market Configurator

Market Configurator 是 Aave 协议的市场配置模块,用于管理员配置支持的资产类型、利率模型、清算阈值等系统参数。

关键流程:

  • initReserve: 初始化资产,设置资产的利率模型、清算阈值、储备因子等参数
  • setReserveFactor: 设置资产的储备因子,即收取的协议费用比例
  • enableBorrowingOnReserve: 开启或关闭资产的借款功能

Gas 优化与安全分析

  1. Gas 优化
  • 状态变量打包(Variable Packing),将多个变量打包为一个 slot 存储,减少 SLOAD 指令数
  • 常量内联(Constant Inlining),将常量硬编码到字节码中,避免 SLOAD 指令
  • 函数调用成本优化,如避免在 for 循环中调用其他函数等
  1. 安全分析
  • 整数溢出(Integer Overflow):使用 SafeMath 库进行数值计算,防止溢出和下溢
  • 权限管理:采用 AccessControl 库实现角色权限控制,避免未授权访问
  • 重入攻击(Reentrancy):遵循 checks-effects-interactions 模式,先修改状态变量再与外部交互

<!--EndFragment-->

  • 原创
  • 学分: 55
  • 分类: DeFi
  • 标签: Aave 
点赞 3
收藏 1
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Alan
Alan
0x9cAD...0097
区块链BTC、ETH、BNB