SIP-255: Burn fees instead of distributing them

Author
StatusImplemented
TypeGovernance
NetworkEthereum & Optimism
ImplementorDaniel Beal (@dbeal-eth), MEB (@barrasso)
ReleaseTBD
ProposalLoading status...
Created2022-06-27

Simple Summary

This SIP proposes burning fees collected by the fee pool on instead of allowing them to claim the fees and have it transferred to them. This will have the effect of reducing user's debt overall, and in theory they will be able to mint more at a later date.

Abstract

As we continue to shift more stakers to L2, and to ensure the incentives are aligned for stakers to remain on L2, we need to change our current strategy for distribution of fees. To meet this, we propose burning any collected fees at the beginning of the fee period and distributing $0 in fees as rewards. This will also have the effect of equitably sharing fees equally with undercollateralized users and users who forget/do not claim, since their debt would simply decrease. This changes is appealing because (at least from the smart contract perspective) this change is easy to implement.

Motivation

With the recent surge in fees generated by atomic swaps, it is important that L2 stakers continue to receive the most benefits on L2 despite the volume being on L1. Additionally, as we continue to encourage stakers to migrate to L2, this provides additional incentive to make sure the rewards are at least even.

After we fully complete the L1 migration to L2, this method of fee distribution will already be correct and we wont have to make any additional changes to the protocol to ensure all fees are sent to L2.

Specification

Overview

The SIP will make changes to the fee pool on both networks:

  • In FeePool, in closeFeePeriod, add a call to call issuer burnSynthsWithoutDebt to burn all the sUSD in the fee address.
  • In FeePool, in closeFeePeriod, reduce feesToDistributed equal to feesToDistribute.
  • In FeePool, in claimFees, remove/update any logic corresponding to sUSD fee distribution.

Amount of excess sUSD is calculated by: _recentFeePeriodsStorage(0).feesToDistribute * SynthetixDebtShare.totalSupply() / _recentFeePeriodsStorage(0).allNetworksDebtSharesSupply.

Rationale

A previous iteration of this SIP discussed distributing a portion of the collected sUSD rewards to L2 using the new sUSD bridge. However, its difficult to send funds back to L1 so this would stop working if L2 started generating more fees than L1 proportionally. It was also discussed manually adjusting the amount transferred to L2 using SCCP, but this would add a lot of overhead on the council and ultimately what we want is the most equitable distribution of fees possible, since everyone shares the debt pool equally.

Test Cases

Unit tests

  • FeePool
    • closeFeePeriod
      • ADD check that Issuer.burnSynthsWithoutDebt is called
      • EXISTS change tests to expect fees to be already claimed (because they were burnt)

Configurable Values (Via SCCP)

None

Copyright and related rights waived via CC0.