Skip to content

V3 核心概念

架构

核心合约

Pool

用户交互的主入口:

solidity
interface IPool {
    function supply(address asset, uint256 amount, address onBehalfOf, uint16 referralCode) external;
    function withdraw(address asset, uint256 amount, address to) external returns (uint256);
    function borrow(address asset, uint256 amount, uint256 interestRateMode, uint16 referralCode, address onBehalfOf) external;
    function repay(address asset, uint256 amount, uint256 interestRateMode, address onBehalfOf) external returns (uint256);
    function liquidationCall(address collateralAsset, address debtAsset, address user, uint256 debtToCover, bool receiveAToken) external;
    function flashLoan(...) external;
}

aToken

存款凭证,特点:

  • 1:1 锚定底层资产
  • 余额自动增长(反映利息)
  • ERC-20 兼容,可转让
solidity
interface IAToken is IERC20 {
    function UNDERLYING_ASSET_ADDRESS() external view returns (address);
    function scaledBalanceOf(address user) external view returns (uint256);
}

债务代币

类型用途特点
VariableDebtToken浮动利率债务利率随市场变化
StableDebtToken稳定利率债务利率短期固定

利率模型

计算公式

$$ 利用率 = \frac{总借款}{总存款} $$

$$ 存款利率 = 借款利率 \times 利用率 \times (1 - 储备因子) $$

参数示例

资产基础利率最优利用率Slope1Slope2
USDC0%90%4%60%
ETH0%80%3.8%80%
WBTC0%45%4%300%

利率曲线设计

  • 利用率 < 最优点:利率平缓上升,鼓励借贷
  • 利用率 > 最优点:利率急剧上升,激励还款和存款

风险参数

定义

参数含义示例
LTV最大可借比例80% = 100$ 抵押最多借 80$
清算阈值触发清算的比例通常比 LTV 高 2-5%
清算惩罚清算人获得的额外奖励5-10%

主要资产参数

资产LTV清算阈值清算惩罚储备因子
ETH80%82.5%5%15%
WBTC70%75%6.25%20%
USDC77%80%4.5%10%
DAI75%78%4%10%

E-Mode

工作原理

类别配置

ID名称资产LTV清算阈值
1稳定币USDC, USDT, DAI97%97.5%
2ETH 相关ETH, wstETH, rETH93%95%

使用示例

solidity
// 启用稳定币 E-Mode
pool.setUserEMode(1);

// 查询用户 E-Mode
uint256 categoryId = pool.getUserEMode(user);

限制

E-Mode 下只能借出同类别资产

隔离模式

触发条件

存入被标记为"隔离资产"的代币时自动进入。

限制

配置参数

solidity
struct ReserveConfiguration {
    uint256 debtCeiling;        // 债务上限
    bool borrowableInIsolation; // 是否可在隔离模式下借出
}

供应/借贷上限

类型作用目的
Supply Cap限制最大供应量控制单一资产风险敞口
Borrow Cap限制最大借款量防止预言机操纵攻击
solidity
function getSupplyCap(address asset) external view returns (uint256);
function getBorrowCap(address asset) external view returns (uint256);

预言机

solidity
interface IAaveOracle {
    function getAssetPrice(address asset) external view returns (uint256);
    function getAssetsPrices(address[] calldata assets) external view returns (uint256[] memory);
    function BASE_CURRENCY_UNIT() external view returns (uint256);
}

价格更新流程

合约地址

Ethereum

合约地址
Pool0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2
PoolAddressesProvider0x2f39d218133AFaB8F2B819B1066c7E434Ad94E9e
Oracle0x54586bE62E3c3580375aE3723C145253060Ca0C2

Polygon

合约地址
Pool0x794a61358D6845594F94dc1DB02A252b5b4814aD
PoolAddressesProvider0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb

Arbitrum

合约地址
Pool0x794a61358D6845594F94dc1DB02A252b5b4814aD
PoolAddressesProvider0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb

基于 MIT 许可发布