Boost-Locked APY and Enhanced Liquidity Mining Rewards: Technical specifications
Boost-Locked APY (blAPY) is an ERC20-like contract that will allow APY token holders to lock APY tokens for a specified duration in return for an amount of blAPY reflecting lock amount and duration.
This allows for various applications, including additional voting strength, reduction of current and future platform fees, and the first proposed application: enhancing liquidity mining (LM) rewards. Any application where using a quantified measure of user commitment makes sense may benefit.
Enhancing LM rewards will reward users who have explicitly demonstrated a long-term commitment to the vision of APY.Finance. Each user will be assigned a boost score, a weighted average between their usual deposit value and a proportion of TVL based on their blAPY share. The boost score will be used in lieu of deposit value to calculate the share of the rewards.
In the best case scenario, users who maximize their blAPY will enjoy a 2.5-times greater reward than users with the same deposit value who have no blAPY. Boosted yield amount will depend on the overall actions taken by all users, as rewards earned are proportional to the total sum of boost-locks. In order to keep their enhanced rewards, users will need to continually maintain their blAPY balance by extending the lock or increasing the amount locked.
APY.Finance will deploy an escrow contract, based on an audited VotingEscrow contract used by Curve. Slight modifications have been made by APY.Finance to allow users to withdraw in an emergency shutdown.
A user locks a specified amount of APY into the escrow for a specified lock period. This results in a blAPY balance which represents a user’s commitment to the project.
In the event the community decides to cease usage of the contract, the (protected) shutdown function can be called. When the contract is shutdown, users will not be able to create or add to their blAPY, but they will be able to withdraw their locked APY, terminating any existing lock.
A user’s blAPY balance is based on: 1. Amount locked up 2. Time until lock expiry
blAPY balance = locked APY amount * (time to lock expiry / max lock duration)
where max lock duration is 4 years.
Examples: 100 APY deposited for 1 year → 100 * (1 year / 4 years) = 25 blAPY 200 APY deposited for 6 months –> 200 * (0.5 year / 4 years) = 25 blAPY 100 APY deposited for 4 years → 100 * (4 years / 4 years) = 100 blAPY
Note that a smaller locked amount can be compensated for by a larger lock duration and a smaller lock duration can be compensated for by a larger locked amount.
Your blAPY balance will decrease over time as the lock expiry approaches:
Example: 100 APY deposited for 1 year now gives 25 blAPY. In 3 months, you will have 100 * (1 year - 3 months) / 4 years = 100 * (0.75 / 4) = 18.75 blAPY. In 6 months, you will have 100 * (1 year - 6 months) / 4 years = 100 * (1 - 0.5) / 4 = 12.5 blAPY.
In order to maintain or increase your blAPY balance, you will need to extend the lock expiry or increase the locked amount. Lock durations can be selected (and later increased) in increments of 1 week but the expiry can never be more than 4 years in the future.
For the first incentive based on blAPY, we propose to adjust the current calculation for weekly rewards generation by incorporating a user’s blAPY into their proportional share of the rewards.
Current calculation for weekly rewards :
User’s weekly rewards = (user APT value / TVL) * weekly emissions rate
Proposed, new calculation for weekly rewards:
User’s weekly rewards = (user’s boost score / total boost score) * weekly emissions rate
Lock score = min( 0.4 * user APT value + 0.6 * TVL * (blAPY Balance / blAPY Total Supply), user APT value)
Total lock score = sum of all user lock scores
A user’s relative lock score, i.e. user lock score / total lock score, is what actually determines the earned portion of the emitted rewards. However, it can’t be known at a given time without knowing the decisions of all other users at the same time.
A user’s boost is defined as:
Boost = user lock score / (0.4 * user total APT value)
Relative boost = user relative lock score / (user total APT value / TVL)
Note that the boost has a minimum value of 1 and a maximum value of 2.5. The relative boost also has a max of 2.5 but can be below 1, e.g. the situation when everyone has the max boost except you.