Liquidity-mining
通过 AIP-16 在 Main Aave 市场实施了流动性挖矿/激励,为存款和借款提供了激励。激励措施目前也在 Polygon 市场和 Avalanche 市场上实施。实施细节与本页描述的相同。
Market | Code | Address |
---|---|---|
Main Market | Github | 0xd784927Ff2f95ba542BfC824c8a8a98F3495f6b5 |
Polygon Market | Github | 0x357D51124f59836DeD84c8a1730D72B749d8BC23 |
Avalanche | Code | 0x01D83Fe6A10D2f2B7AF17034343746188272cAc |
Integration Guide(集成指南)
先决条件
我们的用户应该已经在协议中有了一定的占比。根据用户的市场和激励措施,它们应该已经在其中一个激励资产中存入、借款或二者兼有。
要检查资产是否当前处于激励状态,请使用 getAssetData()
方法,传入激励资产的关联 aToken 或 debtToken 地址。要获取每个资产的管理代币列表,另请参阅 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)
返回 用户user
在asset
资产分配上的数据。
参数名称 | 类型 | 描述 |
---|---|---|
user |
address | 用户的地址 |
asset |
address | 产生奖励的资产的地址,即 aToken 或 debtTokens 要获取每个资产的关联 token 列表,另请参阅 Protocol Data Provider 中的 getReserveTokenAddresses() |
getUserUnclaimedRewards()
function getUserUnclaimedRewards(address user)
返回用户user
在协议中的最后一次操作未领取的积累奖励。
参数名称 | 类型 | 描述 |
---|---|---|
user |
address | 用户的地址 |
getDistrilbutionEnd()
function getDistributionEnd()
返回分配期的结束时间