Introducing veRev — a Yield Distribution Mechanism
Below, UXD Protocol introduces “veRev”, a novel mechanism that introduces the concept of “semi-liquid” tokens and a new method for rewarding veToken stakers. Although UXD Protocol plans to apply this method specifically to its Protocol Fund, the mechanism can be applied more generally to any protocol looking to efficiently distribute profits.
The below is meant to outline the general mechanism, in the hopes that other projects may find the general idea useful. At the end, some design variations and some nuances are outlined for consideration.
Most protocols generate some sort of cashflow/yield in the form of trading fees (DEXs, NFT Platforms), management fees (Yield Vaults), minting/redeeming fees (Stablecoins), etc. Ultimately, most of these Protocols intend to distribute this cashflow to aligned governance token holders, where “aligned” often means “staked” (either in veToken form, or in a simple staking form).
The difficulty with Yield Distribution is that it is not at all obvious how to distribute yield in a manner which (i) gives the cashflow to those most aligned with the protocol (ii) does not require egregiously punitive locking/staking periods (5 years + in some cases) (iii) has tax flexibility (some users want income, some users want staking rewards because they may be taxed more favorably) and (iv) stimulates demand for the token in a natural way.
Taking some examples and issues with such examples:
- Buyback and Burn (or Buyback and Reward to Stakers): The simplest issues with Buyback and Burn are that (i) you cannot control to whom the cashflow is going (it may go to any number of unaligned parties) (ii) burning reduces flexibility for future token issuance/rewards (iii) decreasing supply is not the same as increasing demand (it may affect price in a short-term manner similarly, but longer term consistent deflation may hurt gov token liquidity and counterintuitively actually decrease demand in tandem as less participants are in the system). For buyback and rewarding to stakers, the issues are primarily that (i) cashflow goes to non-stakers, instead of stakers (ii) stakers trade a scarce asset (cash) for a plentiful asset (token) in the short term, which may be suboptimal for many participants (iii) fees are paid out to stakers in the form of the native token, which may face substantial volatility compared to stablecoin cashflow.
(Yearn has buyback and build, which is certainly a bit better, but still suffers from several of the issues above. For example, why not use fees to pay builders directly in stablecoins?)
- veToken Yield Distribution: veToken models tend to work as follows: a user locks up some principal amount, say 100 Token. The user then receives some veToken depending on the length of time for which the user chooses to lock. For example, in Curve’s model 1 CRV locked for 1 year is 0.25 veCRV, for 2 years is 0.5 veCRV, …, for 4 years is 1.0 veCRV. Here are some issues: (i) the Fee Distribution is proportional to your veCRV balance (this makes locking extremely capital inefficient if it’s for less than the max period!) (ii) the ve numbers are usually entirely arbitrary (why should double the length of locking entitle you to double the fees relative to your 1 year locking peers? Why not some other proportion?) (iii) Tokens are usually fully illiquid until the end of the vote lock (users are less likely to lock if they are forced to take a multi-year approach to an industry as new as crypto, whose protocols and companies often have lifecycles measured in months, not years. Moreover, users can’t use the capital as collateral anywhere.) (iv) tax inefficient for many, since they are forced to receive 3CRV (which is recorded as ordinary income in most jurisdictions).
- ve(3,3) Yield Distribution: Fee distribution per se in the ve(3,3) model is the same as most veToken models: ve(3,3) stakers receive rewards (in Solidly’s case, only for pools they voted on). It therefore inherits (i), (ii) and (iv) from veToken issues. Moreover, the introduction of the veNFTs, which make ve positions fully liquid is suboptimal, as it becomes unclear how to think about price dynamics of a set of liquid NFTs (which are semi-fungible) vs the underlying token. If all tokens are locked (which incentives suggest they should be), then the underlying token price is irrelevant, and the fragmented but liquid NFT market may step in to act as the token itself. Thinking about the dynamics of such a market is needlessly complicated.
The above establishes a few facts that we would like to solve for:
- Locked tokens should neither be fully illiquid nor fully liquid, as the former is too punitive and the later introduces hairy “game-theoretic” dynamics that obfuscate the mechanics.
- Fee Distribution should primarily go to those most aligned with the protocol (stakers, not non-stakers).
- Protocols should retain some flexibility regarding future token issuance (don’t burn).
- Locked Tokens economics should be less arbitrarily tied to locking periods (again, why should 1 year lock be worth 1/2 as much as a 2 year lock?).
- Stakers should be able to choose between stablecoin distribution (cash income) or staking rewards (potentially more tax-efficient, as it has been speculated that, in the US, staking rewards may receive different tax treatment).
UXD is proud to introduce a novel mechanism for Protocol Yield distribution: veRev. veRev is our shorthand for a “ve Reverse Dutch Auction”. At its heart, veRev is a buyback mechanism that attempts to solve many of the issues noted above.
In one sentence, veRev is a periodic (e.g. weekly/monthly) Reverse Dutch Auction conducted by the protocol distributing yield, in which users are rewarded periodically in additional veToken, and are able to either offer up veToken to be repurchased by the protocol (1 veToken has the same economic value as 1 Token), or users can retain their veToken rewards and let their rewards compound in Token. (Unlike normal veTokens, which are not at all transferrable, the veTokens in this model will be transferrable to the protocol treasury only, which allows for this veRev auction to take place.)
An example is probably easiest.
Suppose at time t=0, you have three stakers, Alice, Bob, and Wassie, who each have $10 worth of veToken staked in the protocol.
Suppose at t=1, the protocol generates $3 in profits that it wants to distribute to its loyal stakers. First, the protocol distributes the yield to Alice, Bob, and Wassie as increased veToken balance. In this example, since all stakers have the same veToken balance, they all receive $1 in veToken.
Now, the protocol initiates a Reverse Dutch Auction, starting at a discount to market price, and ending at the market price. Alice and Bob decide that they each want to sell their $1 in rewards from that period, and Alice decides that she wants to sell another $0.50 from her initial $10 balance. Wassie, being a Wassie, decides not to sell anything and wants to compound rewards. The auction doesn’t fill ($2.50 out of an available $3), so it gets executed at market price.
Post the auction, balances now look like this:
Note the protocol has generated $3 in profits, but has only spent $2.50 to reward Alice and Bob. So, the protocol uses this remaining $0.50 to buyback Token on the open market, thereby also creating demand for circulating Token.
Let’s do a little accounting to figure out what has happened. A Yield Distribution mechanism must satisfy “cash in = cash out”, otherwise there is an inefficiency! In this case, the protocol has received $3 in profits, and should therefore distribute $3 in value.
From the above, we can see that there has been exactly $0 in net value creation (which was the goal), as all of the cash revenues have been distributed towards tokens. That is, stakeholders have received exactly $3.00 in stablecoin, exactly the amount the protocol was looking to distribute. Moreover, there has been no net inflation or deflation of the Token: Alice and Bob both sold their inflationary rewards. Moreover, since Alice chose to sell some of her principal (she sold $0.50 of her original balance), and because the protocol purchased $0.50 on the open market, the $1 in veToken granted to Wassie is not inflationary (think of it like $0.50 came from Alice and $0.50 came from the Open Market). This is because one can think of the buying of principal and the buying on the open market as a true “buyback”, which is then rewarded to Wassie.
So that’s the basic mechanism. Note that in the next period, Wassie will receive a proportionally higher % of the rewards, because Wassie now holds $11/($11+$10+$9.5) = 36% of the total staked veToken.
If instead, Alice, Bob and Wassie had wanted to sell back more than $3 of veToken, then the Reverse Dutch Auction would execute on a standard price -time priority (lowest offered sales prices execute when the auction fills up).
Reflecting on the above, the beauty of the veRev mechanism are the following benefits:
(i) Protocol Yield distribution prioritizes stakers over non-stakers. In a traditional buyback and burn model, cashflow by definition goes to non-stakers (or if a protocol does not have staking, then to any number of unaligned parties). Given the scarcity of cash vs governance token, this is extremely suboptimal. veRev gives stakers the first priority to protocol cashflow.
(ii) Protocol Yield distribution turns traditional “fully illiquid” veTokens into “semi-liquid” veTokens. Because users can sell some amount of their veToken to the protocol prior to their veToken unlock, the token is neither fully liquid nor fully illiquid. In some sense it is a brand new token design. This partial liquidity should increase the incentive to stake for longer. In fact, veToken liquidity increases as the Protocol Yield increases, so smart governance that increases Protocol Yield not only increases economic value, but also directly increases liquidity.
(iii) “Paper hands” or “inactive governance participants” will slowly exit the governance system, and will likely be willing to sell their veToken at a discount back to the protocol, making veRev a capital efficient buyback mechanism for the protocol. Moreover, by removing less aligned governance participants from the system, it is less likely that such users will vote in some nefarious way.
(iv) Because users are receiving veToken rewards, users get to choose whether or not they want to convert this veToken yield into cash, or if they want to keep rewards in veToken and compound their rewards. This may have favorable tax implications for many, because it allows users to either receive cashflow or delay that cashflow and compound veToken rewards. (Of course, consult with your tax lawyer on this, UXD Protocol makes no reps and warrants on this).
(v) vRev replicates the stabilization effects of buybacks without many of the negative properties described above, and acts as an indirect constant source of demand for Token.
Therefore, veRev is a novel mechanism that helps solve prioritization of stakers over non-stakers, creates a new “semi-liquid” veToken to help incentivize longer vote-locking, lets paper hands exit the governance system, likely has favorable tax implications, and creates a natural demand vector for non-staked Token.
A Few Final Points/Design Variations
- You may have noticed that the assumption that 1 veToken has the same value as 1 Token is different from the usual veToken model in which some multiplier is applied to the veToken balance, which decays over time. In the veRev model, we disaggregate economic value from voting power: 1 veToken = 1 Token in economic value regardless of locking length. What changes is a “governance power” multiplier, specific to each user that controls their governance weight. For example, a user may have 1 veToken with a 25% multiplier, which would entitle them to 0.25 votes. However, the economic value of their stake available to sell back through veRev is still 1 Token. Similar to other ve models, when the governance power decays to zero (linearly, or with some other function) remaining veToken are converted back into Token.
- (Another option, depending on a protocol’s preference, is to allow users liquidity only on an amount of veToken equal to their veToken balance times their governance multiplier. For example, a user with 100 veToken and a 25% multiplier would only be able to sell back 25% of their veToken balance back to the protocol (with the rest being locked), whereas a user with a 100% multiplier would be able to sell back 100% of their veToken in the veRev auction.)
- (A third option is to require veTokens to be locked indefinitely, which would give all users the same voting power, and offer 100% governance multiplier for all veTokens. Users would then be able to exit their positions only through protocol-generated revenue.)
- In the case that ~100% of outstanding supply is staked (in which case there is no underlying market price to reference for veToken rewards), then the protocol can initiate an unbounded Reverse Dutch Auction, starting at a discount to the previous auction’s clearing price and moving upwards until the auction clears fully. This makes the Reverse Dutch Auction a tool for price discovery in this edge case.
- Protocols that want to incorporate staking rewards (that is, net inflation) can do so quite easily using the veRev mechanism. Instead of having veToken rewards = yield, consider having veToken rewards = yield + target inflation (more veToken is rewarded than bought back). Similarly, protocols wanting net deflation can have veToken rewards = yield - target deflation (less veToken is rewarded than bought back). veRev thus acts as a lever for token monetary policy that can be tailored to each protocol’s needs.
- If there is excess capacity in the Reverse Dutch Auction, then the protocol purchases from the open market. However, depending on the latency between end of auction and market execution, there may be some +/- price movement in the meantime. This would change the net zero accounting in the example above, and essentially create small inflation or small deflation. (If in practice, this discrepancy is too large then open market buys can be done away with, and a “chained” Reverse Dutch Auction can be implemented, where the Reverse Dutch Auction begins at a discount to the price at which the previous Reverse Dutch Auction cleared, and can increase to any price level, guaranteeing each auction will fill).
- In order to prevent “perpetual cannibalization”, i.e. a scenario in which a single party with a low cost basis is willing to fill every auction fully at the maximum discount, the single Reverse Dutch Auction can be split into an “interest” and a “principal” auction on the back end: users submit the number of tokens they’d like to sell and at what price; the backend then conducts two “rounds”: in the first round, a user can sell at most their pro-rata profit distribution ($1 in the earlier example); then, if the auction does not fill fully (not all users want to sell their profit distribution), the excess will be used to fill “principal” sales, i.e. sales beyond the profit distribution (Alice’s extra $0.50 in the earlier example). This gives all users the ability to sell at least their pro-rata distribution of profits if they wish to do so.
If you’ve made it this far, thanks for reading. Thanks to @ joey__santoro, @ wireless_anon, @ 0xkydo, @ itoslemmas, @ 0x__fp, @ heatdeathx, @ bigz_Pubkey, @ Alexand23684236, and @ __euler__ for their review and helpful conversations.
As always, feel free to drop by our discord and give us feedback.