Note: This post was written in collaboration with Peteris Erins @peteris and Hsien-Tang Kao @htkao
Background
Vesting COMP has been brought up recently in two forum discussions:
- Compound Proposal 022: Systematically Reduce Emissions Quantity
- Faster way to real community governance
Gauntlet has been working on designing a vesting mechanism whose parameters can be controlled by the community via governance. We started by looking at the designs used in other protocols: A number of other protocols have accrued rewards vesting, with Synthetix being the most well-known vesting mechanism. The design of cTokens provides both flexibility with regard to how vesting quantities should be calculated and presents trade-offs with regards to gas and code complexity. Given that the community will likely want to incentivize COMP for participation, liquidity, and to compensate for improvements to the protocolâs security and/or feature set, we believe in adding a vesting mechanic that can handle all of these use cases.
The liquidity provisioning use-case, pioneered by Synthetix and copied by virtually all of the new yield farming protocols, is most sensitive to the form of vesting used. In particular, if COMP holders want to supply their cTokens to a Uniswap, the accrued vested COMP impacts the value of a Uniswap liquidity provider (LP) share. Letâs walk through this before going through the different models of vesting.
Liquidity Incentives donât commute with vesting
Should the COMP community decide to prioritize on-chain, non-custodial forms of liquidity, it will be necessary to use COMP to incentivize on-chain trading in the future. For provenance, recent (08/25/2020, 8pm UTC) Nansen data shows the following distribution of COMP at exchanges, which indicates that very little is kept on-chain:
Compare this to the exchange distribution for Synthetix (08/25/2020, 8pm UTC):
Letâs explicitly see why this complicates the math for traders and liquidity providers. In this example, we are assume that a COMP or cToken liquidity provider stakes their LP shares into a Synthetix-like rewards contract to earn the liquidity incentive. Suppose that one places 1 cUSDT and 1 cUSDC in the Uniswap cUSDT/cUSDC pool. Furthermore, suppose that in one day, the cUSDT earns 0.1% of interest and 1 COMP while the cUSDC earns 0.2% of interest and 2 COMP. Now consider two different vesting styles:
- COMP is vested continuously: Uniswap LP share should be valued at the price of the underlying coins (USDT, USDC) plus the accrued trading fees and interest plus the value of COMP less the 95% percentile gas costs for a withdrawal transaction
- COMP is vested discretely: Uniswap LP share should be values at the price of the underlying plus the accrued trading fees and interest plus the discounted value of the COMP less gas fees
Why do we have to discount (e.g. a la discounted cash flow) the COMP portion of the share? Since COMP is more volatile than the assets producing it (cUSDT, cUSDC), the holder of the LP share needs to discount the value of the share based on how long it takes to claim COMP. For instance, if COMP followed the weekly emission model of Synthetix and the time until the next reward claimed is T, then we would discount the COMP component of the LP share by a factor such as exp(-sqrt(volatility(COMP, USDT) * volatility(COMP, USDC))* T) [0]. In a sense, discrete vesting reduces the expected reward for LPs, even though it costs the network the same amount in terms of emissions.
Why do COMP voters have to care about this? Suppose that the community first chooses to do discrete vesting (e.g. a weekly distribution akin to Synthetix). If the community later decides to incentivize on-chain liquidity (as opposed to centralized liquidity, which dominates COMP holdings as of now), then the choice of how to distribute COMP to liquidity pools depends on the vesting structure. A vesting structure that has a number of parameters â length, vesting period, discounts â should be able to accomodate liquidity incentives. If on the other hand, liquidity incentives were given before a vesting choice was made, the protocol would have a harder time choosing what schedule is used as it would need to account for the existing implied discounting factor.
Therefore, we believe that:
- A vesting schedule should be flexible enough to provide future liquidity rewards
- No liquidity rewards should be administered until vesting has been set.
A modest proposal
Given the desire for the community to have a mechanism for vesting earned COMP, we wanted to put forth two proposals for vesting. These two proposals take two extremes:
- Have a fixed period for vesting which saves on gas, but forces LPs to have to compute discount factors
- Have continuous vesting, which is more expensive, but makes math for liquidity provisioning much easier
Weâve written two pseudo-code implementations (Vyper-esque pseudo-code) of these two proposals that can be found here. Hopefully the intentions are clear and one can clearly compare the trade-offs. We believe that the first implementation is similar to the description of a vesting period by @jared in a prior forum post
Call for feedback
We would love to hear feedback on these proposals and whether there are other features that are missing and/or if there is another application that causes these options to be malformed.
Footnotes
[0] This factor is chosen if we assume that COMP/USDT, COMP/USDC are geometric brownian motions with well-defined drift, variance. Traders will come up with their own discount factors, but a fixed vesting guarantees that the discount factor will be less than 1, provided they are rational. We note that technically you have to discount both continuous and discrete vesting, but because the discrete vesting has to account for volatility over a long time period it always will over-discount relative to continuous.