✅ [RFC] Proposed Emissions Controller

To further progress mStable’s decentralisation and to add more value to the MTA token, it is proposed the weekly MTA rewards will be moved to an on-chain governance platform that allows MTA token holders, or their delegated account, to decide where MTA rewards are directed each week. This builds on the Staking V2 contracts that were recently launched that has voting power and voter delegation. This forum post describes the Emissions Controller which is the key piece of infrastructure to enable on-chain voting on MTA rewards.

The MTA Emissions Controller will distribute weekly MTA rewards in accordance with the votes of the MTA stakers. This is similar to Curve’s GaugeController.

Dials

Dials determine the amount of the MTA rewards that are sent to a dial’s recipient contract.

A dial recipient can be any contract that can either receive MTA tokens or can be notified of the amount of received rewards so the contract can immediately action.

Types of dial recipients include

  • MTA staking contracts like MTA Staking Token and mBPT Staking Token
  • mStable vaults that stake interest-earning mAssets like imUSD and imBTC
  • mStable vaults that stake feeder pool liquidity provider tokens like fPmUSD/GUSD, fPmUSD/alUSD and fPmBTC/HBTC
  • Third-party contracts like Visor Finance
  • Polygon
    • mStable 's imUSD Vault on Polygon
    • FRAX’s farming contract for staked fPmUSD/FRAX tokens
    • An account that disperses MTA to an off-chain generated list of Balancer MTA/WMATIC/WETH Pool liquidity providers.

Dials recipients can do anything with their received MTA rewards. Some possibilities are:

  • mStable Vault for liquidity provider tokens. eg Curve or Balancer
  • A multisig wallet that allows signers to distribute at their discretion
  • An Olympus DAO bond that purchases liquidity for the protocol at a discounted MTA price.
  • A contract that sends the MTA rewards back to the emissions controller
  • A contract that burns MTA rewards so they are removed from the total supply

Emissions Schedule

The proposal is to distribute 34m MTA over 6 years from mid-December 2021. The existing MTA emissions will continue until mid-December and then be replaced by the Emissions Controller.

The 34 million MTA leaves over 6m MTA left in the TreasuryDAO.

The 34m MTA over 6 years will use a polynomial to calculate the weekly rewards. This will quickly reduce the amount of MTA being distributed each week, slow down the reduction in the middle and then accelerate the reduction of distributed rewards at the end.

The polynomial formula

f(x)=A*(x/div)^3+B*(x/div)^2+C*(x/div)+D
A 1.66E+17
B 2.02E+17
C 2.02E+17
D 1.66E+17
div 312000000

Past posts on MTA emissions schedules

Voting Power

Votes for dials come from the voting power in the recently deployed Staking V2 contracts. Voting power can be acquired by staking MTA or by another staker delegating their voting power to another account. If a user has delegated their voting power but now wants their voting power back they can remove the delegation of voting power.

Initially, all the existing contracts that receive MTA rewards will be open to voting. After a two week voting period, the old MTA reward distribution will be stopped and the new MTA distribution based on staker votes will begin.

Weighting votes across dials

Accounts with voting power can proportion their voting power across the configured dials. This can be 100% on just one dial. Or could be a little to each dial. The more dials that are voted on the more gas is required when changing voting power in the staking contracts. eg staking, withdrawing or changing delegation.

Once the voting weights across the dials are set, this will be used for each weekly distribution until the weights are changed. That is, voters don’t need to spend gas every week if their weighting of voting power across the dials remains the same every week.

The emissions controller will maintain the weighted votes for each dial. If a voter’s voting power changes, then the dial weight will be updated. This can be from staking, withdrawing or changes to delegation.

To prevent voters from just giving all the MTA to themselves, each staking contract will receive 10% of the MTA distributions each week. There are currently two staking contracts so that’s 20% of the MTA rewards going to the stakers.

To generate more value for the MTA holders, the Protocol revenue will be used to buy MTA and distribute to stakers. This incentivises the voters to maximise the protocols revenues.

There is no cap on the amount of MTA a dial that is not a staking contract can receive. So all the voting power could be put on just one dial. This is unlikely to happen as it would require over 200 stakers to collude.

Donations

The emissions controller will allow anyone to donate MTA rewards to a dial that is in addition to the weekly emissions schedule. These additional MTA rewards will be included in the weekly distribution. This can be used by mStable or third parties to incentivize dials.

In addition, third party tokens can also be donated to dials and distributed in the weekly process. These are not voted on. It’s up to the party that is donating the tokens to decide how much will be distributed to which dials.

Polygon Integration

Polygon’s Proof of Stake (PoS) Bridge will be used by the Emissions Controller to send MTA to the existing child MTA token on Polygon. This will be done indirectly using a dial recipient contract that interfaces with the PoS Bridge.

MTA rewards can be sent directly to the dial contract on Polygon. eg FRAX. Or MTA rewards can be sent via the Child Emissions Controller which will notify the recipient contract that the rewards have been transferred. eg the imUSD Vault on Polygon.

Voting can not be done on Polygon. All voting of dials is done on Ehtereum mainnet.

Weekly Distribution

The weekly distribution of the MTA rewards will be done in two transactions

  1. The amount of MTA rewards for each dial is calculated

a. calculate the amount of MTA rewards to be distributed for the week.

b. calculate the total weight votes across all dials that have not been disabled.

c. calculate the MTA rewards for each dial that has not been disabled

  1. Transfer MTA rewards to specified dials and optionally notify

This can be broken down into a smaller number of transactions depending on gas usage.

a. Transfers the previously calculated MTA rewards plus any donated MTA to the specified dial recipient contracts.

b. If the dial is configured for notifications, the dial is notified of the distributed MTA amount so it can process the received MTA.

The weekly distributions can be run after Thursday, 00:00am UTC time.

It’s possible the MTA rewards can be calculated but not transferred. Each new calculated reward will just be added to any undistributed MTA rewards so when the distribution is eventually run all MTA rewards will be distributed.

Configuration

New dials can be added or disabled by the Protocol DAO. This is the same governance control used for other protocol configurations like fees, bAssets and liquidations.

8 Likes

Thanks Nick for posting this, and excited to come up with the best strategy for each of the different groups within the wider ecosystem to vote on the best tactic forward :sunglasses:

I’m curious on this point. Currently, 90% of the protocol revenue goes back to users, and 10% goes to the Buyback & Make pool. In which way does this change affect the distribution?

I do wonder what prevents MTA stakers to just allocate 100% of the rewards to the staking contracts? Wouldn’t it be in their best interest to do so in order to reap maximum rewards? Of course, speaking only from a profit vantage point here, and not necesarily how useful it would be to the rest of the ecosystem.

Other than that, looks very solid, and looking forward to seeing this implemented!

1 Like

I’m curious on this point. Currently, 90% of the protocol revenue goes back to users, and 10% goes to the Buyback & Make pool. In which way does this change affect the distribution?

I should have been clearer on this. Yes, until recently, 90% of the Protocol Revenue when back to Savers and 10% went to the Treasury DAO. Last week this was changed for a 6 week period where 50% goes to Savers and 50% goes to mUSD Curve Pool bribes.

For the new Emissions Controller, the proposal is the Governance Fee portion of the protocol revenue would go to MTA stakers. So that’s the 10% before the Curve change.

I do wonder what prevents MTA stakers to just allocate 100% of the rewards to the staking contracts? Wouldn’t it be in their best interest to do so in order to reap maximum rewards? Of course, speaking only from a profit vantage point here, and not necessarily how useful it would be to the rest of the ecosystem.

The Emissions Controller will be coded to prevent MTA stakers allocating 100% of the rewards to the staking contracts. The Emissions Controller will instead just allow up to 10% of the rewards to be distributed to each staking contract.

1 Like

Thanks a lot for the clarification Nick, much appreciated.

I’m not sure how I feel about sunsetting the Buyback & Make pool and have these rewards instead go to the stakers, who are already receiving emission rewards. The pool has done a fine job of constantly putting pressure on the MTA price, albeit little at this stage, but prone to grow significantly in 2022.

With this proposed change, we’re giving 100% of the generated fees from the protocol away to the ecosystem, and leave 0% for the treasury.

Coupled with the 100% liquidations of all earned token rewards from other protocols for Save users, that really doesn’t leave much long-term sustainability in the system.

My argument here would be that, in theory, MTA stakers already own a percentage of the war chest, so therefore shouldn’t receive rewards on top of said ownership over the mStable treasury, and instead should help grow the treasury instead of their own pockets.

1 Like

Renamed this to an RFC.

Thanks @naddison - this is a great summary of the Emissions Controller.

I am looking forward to this being implemented and think that it has been very carefully thought through. Capping MTA to each staking contract; connecting MTA staking rewards to protocol revenue; publicly showing the forward emissions “ceiling” - this is all of great benefit to the system and dramatically increases mStable’s transparency and the power of MTA stakers.

Curious to understand whether voting on the emissions will cost gas for the MTA staker? Also curious to know whether the DAO will be a gauge? 6m MTA tokens is sufficient value in the DAO for the time being but over the next 6 years, more capital will be required by the DAO to keep the core contributor group operating.

With this proposed change, we’re giving 100% of the generated fees from the protocol away to the ecosystem, and leave 0% for the treasury.

Coupled with the 100% liquidations of all earned token rewards from other protocols for Save users, that really doesn’t leave much long-term sustainability in the system.

I’m thinking out loud here so I apologize ahead of time if this idea is idiotic - but the treasury is made up of +/- 90% MTA. Couldn’t some % of that MTA be staked in gov and then used to vote to deploy some % of the weekly MTA rewards to the treasury dial? It feels recursive on paper, but as long as the amount coming in is more than the amount going out, we’re at least creating baseline sustainability with a 6yr run rate. During that time the other MTA can be put to work to farm or in ways to accumulate other assets from the space?

1 Like

Thanks for chiming in, and now that the MIP is out, I think we can make some important observations:

1.) The Buyback & Make will be sunset and accrued LP tokens sent to the TreasuryDAO. We can start thinking how to use this small position to increase the value for the Treasury and MTA in the coming weeks.

Since we worked hard on getting this pool to this amount, we should do something meaningful with this portion, and ensure it has a lasting effect on the ecosystem (and carries sentimental value, think of your first dollar earned kind of thing).

2.) Since the TreasuryDAO has it’s own dial in the Emission Controller, I for one will make sure to delegate most of my stake back to the Treasury dial, and we could have certain “fundraiser” epochs to boost this even further.

Staking with the treasury directly feels a bit controversial to me, as we would be sort of imposing an undisclosed fee to everyone, and I’m not sure I feel good about that towards the rest of the users.

I don’t think we’re as much in need currently for such drastic measures. It’s good to think about, though, and interesting to see how powerful the new emission controller can potentially be as a nice side effect.

1 Like