通过 AIP-16 在 Main Aave 市场实施了流动性挖矿/激励,为存款和借款提供了激励。激励措施目前也在 Polygon 市场和 Avalanche 市场上实施。实施细节与本页描述的相同。

Integration Guide(集成指南)

先决条件

我们的用户应该已经在协议中有了一定的占比。根据用户的市场和激励措施,它们应该已经在其中一个激励资产中存入、借款或二者兼有。

要检查资产是否当前处于激励状态,请使用 getAssetData()方法,传入激励资产的关联 aTokendebtToken 地址。要获取每个资产的管理代币列表,另请参阅 Protocol Data Provider 中的 getReserveTokensAddresses()

查看用户奖励余额

调用 getRewardsBalance()方法,以数组形式传入相关 token 地址(aTokens 和/或 debt Tokens )

领取累积奖励

用户领取奖励

调用 claimRewards() 方法,将相关 token 地址(aToken 和/或 debtTokens)作为数组传入。msg.sender必须与以获得奖励的用户地址匹配。

代替 User 领取奖励

必须通过 setClaimer()方法设置申领者,使调用方能够代替用户申领。

调用 claimRewardsOnBehalf()方阿飞,相关 token 地址(aToken 和/或 debt tokens)用一个数组传入。msg.sender必须事先通过 setClaimer()设置。

考虑奖励的代币

对于主网市场,stkAAVE 将获得奖励,停在领取后根据 Staking AAVE 参数自动计算利息。将 stkAAVE 转换为 AAVE 有 10 天的相关冷却期,还有 2 天的赎回期。确保向用户显示此信息并正确处理。

对于 Polygon 市场,WMATIC 没有“锁定”期。确保我们考虑了 WMATIC 和 native WMATIC 之间的差异,特别是需要将 WMATIC 解包为 MATIC。这可以通过在 WMATIC 合约上调用 withdraw() 来完成。

计算奖励 APY

APY = normalizedEmissionPerSecond * rewardTokenPriceInEth * SECONDS_PER_YEAR / normalizedTotakTokenSupply

Note:

  • normalizedEmissionPerSecond = emissionPerSecond/RWARD_TOKEN_DECIMALS
  • 主网的奖励代币是 AAVE,Polygon 的奖励代币是 MATIC
  • normalizedTotalTokenSupply = tokenTotalSUpplyNormalized * tokenPriceInETH,其中 token 为激励 a/s/v 代币,代币价格与基础资产价格相同。
  • 可以在 AavePriceOracle 获取奖励代币和储备代币的价格

Methods

claimRewards()

function claimRewards(address[] calldata assets, uint256 amount, address to)

领取资产asset的应计奖励,累积任何待处理的奖励。

参数名称 类型 描述
assets address[] 产生奖励的资产的地址,即 aToken 或 debtTokens 要获取每个资产的关联 token 列表,另请参阅 Protocol Data Provider 中的 getReserveTokenAddresses()
amount uint256 要提取的金额,以 wei 表示
to address 领取的奖励将发送到的地址

claimRewardsOnBehalf()

function claimRewardsOnBehalf(address[] calldata assets, uint256 amount, address user, address to)

代表用户user 领取资产asset的应计奖励,累积任何待处理的奖励。

user在此之前必须调用 setClaimer()函数,将msg.sender设置为已批准的声明者

参数名称 类型 描述
assets address[] 产生奖励的资产的地址,即 aToken 或 debtTokens 要获取每个资产的关联 token 列表,另请参阅 Protocol Data Provider 中的 getReserveTokenAddresses()
amount uint256 要提取的金额,用 wei 表示
user address 有待领取奖励的用户的地址
to address 奖励将发送到的地址

setClaimer()

function setClaimer(address user, address caller)

设置授权调用方 caller代表用户 user领取所有奖励。这只能通过 Governance 设置。

参数名称 类型 描述
user address 有待领取奖励的用户地址
caller address 新授权的 claimer 地址

View Methods

getAssetData()

getAssetData()目前仅在以太坊市场上可用。

function getAssetData(address asset)

返回资产指数,每秒排放量(即当前奖励率)和上次更新的时间戳

参数名称 类型 描述
asset address 产生奖励的资产的地址,即 aToken 或 debtTokens 要获取每个资产的关联 token 列表,另请参阅 Protocol Data Provider 中的 getReserveTokenAddresses()

getClaimer()

function getClaimer(address user)

返回用户user 累计奖励的授权领取者。

Parameter Name Type Description
user address 授权领取者的地址

getRewardsBalance()

function getRewardsBalance(address[] assets, address user)

返回用户user 对于资产 assets的总奖励。

参数名称 类型 描述
assets address[] 产生奖励的资产的地址,即 aToken 或 debtTokens 要获取每个资产的关联 token 列表,另请参阅 Protocol Data Provider 中的 getReserveTokenAddresses()
user address 有待处理奖励可领取的用户地址

getUserAssetData()

function getUserAssetData(address user, address asset)

返回 用户userasset资产分配上的数据。

参数名称 类型 描述
user address 用户的地址
asset address 产生奖励的资产的地址,即 aToken 或 debtTokens 要获取每个资产的关联 token 列表,另请参阅 Protocol Data Provider 中的 getReserveTokenAddresses()

getUserUnclaimedRewards()

function getUserUnclaimedRewards(address user)

返回用户user在协议中的最后一次操作未领取的积累奖励。

参数名称 类型 描述
user address 用户的地址

getDistrilbutionEnd()

function getDistributionEnd()

返回分配期的结束时间