Specification
veYFI incorporates YIP-56: Buyback and Build funds into YFI tokenomics. Users can lock YFI tokens and receive veYFI, which allows them to boost vault rewards and vote on where bought-back YFI will be sent.
veYFI Overview
- Locking is similar to the ve-style program of Curve.
- YFI can be locked into veYFI, which is non-transferable.
- Lock duration can be decided on deposit: from 1 week to 4 years.
- You can actually lock up to 10 years, but anything above 4 years doesn’t give you more veYFI. This way you don't have to relock every week. If you set it to longer than 4 years, you can always reset it to 4 years so it starts decaying.
- A user must have a veYFI lock to earn boosted rewards. No lock leads to no boosted rewards. A Maximum lock, continuously renewed, maximizes rewards.
- Just like with Curve, even without a veYFI lock, you can still deposit into a vault and stake the vault token into a gauge which will give you the base boost. With the minimum boost, you get to keep 10% of the dYFI you farm. The other 90% goes to veYFI lockers.
- It’s possible to exit the lock early, in exchange for paying a penalty that gets allocated to the other veYFI holders.
- The penalty is up to 75% locked amount and decays over time:
- The total penalty is the minimum percentage between
75% locked amount
and(time remaining / 4 years)
- So if your lock is over 3 years you will pay 75%.
- If your lock is 2 years you will pay 2/4 = 50%
- Penalty Formula:
min(75%, lock_duration_left / 4 years * 100%)
- The total penalty is the minimum percentage between
- veYFI holders are eligible to receive a share of the early exit penalties.
- veYFI holders are eligible to receive a share of gauge dYFI rewards from unused boosts.
- Now that veYFI has been implemented, only veYFI is accepted voting power in Yearn Governance.
dYFI as Gauges Reward
- dYFI is an ERC-20 token.
- Gauges emit dYFI that users can either sell for ETH or convert to YFI at a cost.
- Gives its bearer the right to redeem an equivalent amount of YFI in exchange for ETH.
- dYFI is burned upon redemption.
- The circulating supply of dYFI must not exceed the amount of YFI available to be redeemed as part of the tokenomics program.
- The amount of ETH required for redemption is at a discount to the current spot price of YFI/ETH.
- ETH received from dYFI redemption is redirected to automated YFI buybacks handled by an immutable smart contract that runs Dutch auctions.
- Discount calculation is a function of the veYFI and YFI supply with the following formula:
- discount =
c / (1 + a * e^k(s * x − 1))
, where:- c =
1
- a =
10
- k =
4.7
- s =
configurable scaling factor
(currently set to 10) - x =
veYFI_supply / YFI_supply
- c =
- discount =
Vault Gauges + Voting
- Vault gauges allow vault depositors to stake their vault tokens and earn dYFI rewards according to their veYFI weight.
- Weights decay as the remaining lock duration decreases and can be extended up to the max lock duration.
- Increased locking duration is rewarded with increased weight, so locking for 4 years gives 100% weight, locking for 2 years 50% weight, etc.
- dYFI is allocated to gauges based on bi-monthly governance votes. Each gauge can get a different amount dYFI to emit.
- Users can boost their gauge rewards by up to 10x.
- This boost amount is proportional to the user's share of the vault and their share of total veYFI.
- A 10x boost is achieved when a user owns an equal or higher share of veYFI (
yourVeYFIBalance/veYFITotalSupply
) than they own of the gauge deposits (yourGaugeDeposit/totalDepositedInGauge
). - The greater your share of total veYFI, the more vault deposits can be boosted for the user.
- This applies across multiple gauges. You can max boost 1% of all gauges with 1% of the veYFI supply.
- A claim with boost under 100% will send the leftover tokens to veYFI holders.
- The boost mechanism math works as follows:
Boost Calc
# determine user share of veYFI
UserVeYFIShare = VeYFIBalance / VeYFITotalSupply
# Determine boostable balance above 10% of deposit
BoostableBalance = (AmountDepositedInGauge /10) + (TotalDepositedInTheGauge * UserVeYFIShare * 0.9)
# take the less of amount deposited in gauge and boostable balance
BoostedBalance = min(AmountDeposited, BoostableBalance)
# get the boost by multiplying by 10 and dividing by amount deposited in gauge.
Boost = 10 * BoostedBalance / AmountDepositedInGauge
veYFI Reward Pool
- Users who lock YFI for veYFI can claim accumulated fees from the veYFI reward pool. The reward pool gets fees two ways: YFI from the veYFI early exit fee and the non-distributed gauge rewards due to a lack of full boost.
Additional Info
- Contract Addresses
- Governance Forum Thread: https://gov.yearn.fi/t/yip-65-evolving-yfi-tokenomics