Design Suggestions for xUSD Staking

CompX is going to go live with xUSD staking in just a few days. The staking contract will distribute rewards from G12 TDR supplied by the Algorand foundation. The contract is built on simple rules.

  • The more xUSD you stake, the higher the rewards.
  • The longer you stake xUSD (lock up period length) the greater your rewards will be with respect to other stakers, supplying a similar amount.

Current state of xUSD

xUSD currently relies heavily on its variable interest rate to incentivize peg maintenance. As the peg is lost, the interest rate rises and places pressure onto vault holders to buy back some of their debt to reduce their exposure to the added expense. This in turn pulls xUSD off the market and brings us closer to its peg. While this has provided enhanced stability over the previous flat rate interest model, distance from the peg could still be better. It seems like the problem with this mechanism is that only users who create a vault have any say in driving this adherence. Vault holders are a minority of the people who interact with xUSD on chain. Currently there are ~75 vaults while nearly 300 wallet addresses are opted into the xUSD asset. Having a mechanism that relatively few users have access to, limits the movement that can occur as the result of a depeg. Hence the desire to for a stability mechanism like staking, that anyone can participate in if they’re holding xUSD.

A look at a different kind of staking mechanism

The staking contract that will be used in the coming days is a great staking contract for things that we want to keep off the market. Staking has often been used as a method of locking up tokens and holding them until a later date to avoid flooding the market. One makes the judgement call when signing the contract, how long they want to keep their tokens locked away and is rewarded accordingly. Classic delay of gratification stuff. Our goal with xUSD is not to lock away tokens though. Our goal is to respond to market conditions quickly to allow maintain stable token value. These are similar goals but not the same. A consistent reward scheme, like we will be using initially is setting an incentive structure of holding, not participating with the xUSD community.

Lets say a person see’s that xUSD is on sale for $.97, purchases some and locks it into the contract. If the peg returns, and there’s less “need” to stake, it doesn’t matter because of the lock in, they just have to wait it out. Alternatively, what’s to stop a person from not even buying xUSD, but minting it from a vault and directly depositing it into the staking contract, contributing nothing to maintenance of the peg, but getting a portion of the rewards.

It seems to me that a successful, peg supporting staking system should encapsulate the following properties

  • Nimble – The contract needs to allow people to jump in and out at will, taking advantage of market incentives quickly to react to xUSD price changes. Time based locks work against the incentive of reacting to the market by ignoring the market the moment after the contract is locked in.
  • Tied to market performance – The contract should amplify market signals. We NEED people to stake when the peg is off and we don’t need them to stake when the peg is on. Rewards should be structured to reflect that. In the same way that variable interest incentivizes vault holders negatively, the staking contract should provide variable pay rates that positively entice holders to pick up xUSD
  • Rewards should be less than, or equal to the going vault interest rate at any given time. This would prohibit people from minting xUSD for the sole purpose of staking it. With rates equal to vault interest, they would be treading water, and the additional exposure wouldn’t be worth it. If the contract pays out less than what vault owners are being charged, they would be losing ground with this behavior. The only way to make money from this is to BUY and stake.
  • Rewards should be generous (within the bounds expressed in #3). xUSD staking could directly compete with tokens like USDC which can be deposited in lending markets for high yield.

There is discussion that should be had regarding the amount to be rewarded to stakers, but the general design described above seems necessary. Our current contract is open sourced and so will continue to provide value for the xUSD community along with the entire Algorand community going forward. The issue is that for this specific use case, something a bit more custom to its purpose will work better (it seems to me). Please feel free to correct anything I’ve misunderstood about the current contract. I look forward to a discussion below. Thanks for reading.

2 Likes