Overview of Ungovernance Phase Two

As we are approaching the second ungovernance stage, we should all take a look at what will happen in the next few months. For a refresher on RAI ungovernance, check out the official docs.

Contract Updates / Deployments

  • Deploy a gas “oracle” that is only used to feed a gas price inside the contract which recomputes the RAI debt floor amount for Safes. Given that there is no cheap and reliable oracle that offers something like an average gas price over the last 1 week or 1 month, this “oracle” simply returns a fixed value that can be changed by governance vote. The DAO can set a really conservative value (e.g 1 terra gwei) for the gas price oracle which can then be used by the protocol to recalculate the Safes’ debt floor. The contract that recalculates the debt floor does not need a precise (read: real time) value and it is actually safer to use a conservative approach
    • After deployment, set a conservative value of 1 terra gwei in this gas price oracle
    • Also, connect this gas price oracle to the contract that recalculates the debt floor for each RAI Safe
  • Redeploy the contract that periodically recalculates the protocol surplus buffer. The current version of this contract always tends to calculate a higher surplus buffer as time goes by, regardless of whether the amount of RAI in circulation increases or not
    • The contract will target a minimum of 500K RAI in the surplus buffer. The formula used by the contract will be max(500,000, 0.5% * total_rai_debt)
  • The FLX token minter described in this post
  • As discussed in this post about RAI controller ungovernance, replace the current controller logic to use percentage error instead of absolute error in order to future proof the protocol. For now, the proposal is to keep the controller governed and establish bounds for Kp and Ki later on
    • Note that this means governance will be allowed to enable/disable the P & I terms
  • Most important, deploy a Compound Governor instance that uses FLX to govern the remaining RAI components and the DAO treasury (a simple smart contract holding FLX for the DAO, with an implementation here)

Phase Two Ungoverned Contracts

The following is a list of contracts that are ungoverned in the second stage as well as governance minimization contracts that still allow for a limited array of parameters to be changed.

  • Safe Engine - governance cannot change any parameter
  • Accounting Engine - governance cannot change any parameter
  • Global Settlement - governance cannot change any parameter
  • Staking Pool (Lender of First Resort) - governance should be allowed to change four parameters: minStakedTokensToKeep (the minimum amount of FLX/ETH LP tokens that should always be kept in the staking pool, without being auctioned off for RAI), escrowPaused which allows all staking rewards to be sent to stakers without a portion being unlocked over a longer period of time, tokensToAuction which is the amount of LP tokens to offer in a single auction and systemCoinsToRequest which is the minimum amount of RAI to request for tokensToAuction LP tokens; governance should also be allowed to specify that LP token auction can be bypassed (in case of a bug related to auctions)
  • Protocol Token Authority - governance cannot change any parameter (no new address is allowed to mint FLX besides the debt auction house and the inflation minter)
  • Protocol Token Printing Permissions - governance cannot change any parameter
  • Auto Surplus Buffer Setter - governance will be able to pause surplus buffer recalculations but apart from that, nothing else
  • Staking Reward Adjuster - this contract automatically recomputes the amount of FLX that goes to the lender of first resort pool every block. It also sends FLX to the lender of first resort when a staker claims their accrued rewards. Governance can fully ungovern the contract
  • Staked Tokens to Keep Setter - this contract recalculates the amount of LP tokens to keep in the lender of first resort without auctioning them off when the protocol is underwater. It recalculates the amount of tokens to keep as 70% of the pool size
  • Redemption Price Snap - this contract maintains a local copy of the latest redemption price it fetched from the protocol. It is used by the mStable & Curve RAI pools so that they follow RAI’s latest internal price

Contracts that Remain Mostly Governed

The following is a list of contracts that, at least in the near future, will remain governed. “Governed” in this context means that governance can change core/important parameters in these contracts.

  • Rewards Relayer for the RAI Oracle - this contract offers RAI incentives to update the RAI oracle used to feed price data in the controller
  • Rewards Relayer for the ETH OSM - this contract offers RAI incentives to update the ETH OSM
  • RAI Controller - for now, governance should be allowed to change Kp, Ki and leak (alpha) values. Apart from this, all other parameters should be immutable
  • Debt Popper Rewards - this contract offers RAI rewards to addresses that “pop” liquidated RAI debt from the debt queue in the Accounting Engine
  • Stability Fee Treasury - this contract is in charge with storing a portion of RAI coming from stability fees and offering that RAI to addresses that update different protocol components (e.g oracles)
  • Merkle Distributor Factory - this contract can be used to create monthly incentive distributions
  • Any Saviour or Saviour related contract
  • DS Pause and the DS Pause Authority which are part of the governance module and are by definition, governed
  • RAI, FLX, gas price & ETH oracles

These contracts that are mostly governed can be split in four categories:

  1. Contracts that interact with or receive data from the outside world (oracles, ETH OSM, saviours)
  2. Contracts that manage internal resources that are used to incentivize outside behaviour (SF treasury, debt popper rewards, rewards relayers for oracles)
  3. RAI controller contract/s
  4. Contracts that are part of the governance module (e.g DS Pause)
5 Likes

Also wanted to post the proposed parameters for the Compound Governor used in the Reflexer DAO.

  • votingDelay: 1 block. The delay before voting on a proposal may take place, once proposed, in blocks
  • votingPeriod: 19,938 blocks (about 3 days). The duration of voting on a proposal, in blocks
  • quorumVotes: 20,000 FLX. The number of votes for a proposal required in order for a quorum to be reached and for a vote to succeed
  • proposalThreshold: 3000 FLX. The number of votes required in order for a voter to become a proposer
  • MIN_PROPOSAL_THRESHOLD: 1000 FLX. The minimum setable proposal threshold
  • MAX_PROPOSAL_THRESHOLD: 15,000 FLX. The maximum setable proposal threshold
  • MIN_VOTING_PERIOD: 6600 blocks (approx 24 hours). The minimum setable voting period
  • MAX_VOTING_PERIOD: 46,500 blocks (about 7 days). The max setable voting period
  • MIN_VOTING_DELAY: 1 block. The min setable voting delay
  • MAX_VOTING_DELAY: 6600 blocks (about 24 hours). The max setable voting delay
  • MIN_QUORUM_VOTES: 10,000 FLX. The minimum setable proposal threshold
  • MAX_QUORUM_VOTES: 100,000 FLX. The maximum setable proposal threshold

Notes from 6/8 ungovernance meeting:

Contract Updates / Deployments

Gas Oracle

  • determines the “Safe Debt Floor” (minimum amount of RAI that you can draw from a Safe
  • the safe debt floor must be high enough that liquidating safes are always profitable
  • currently set by governance, will continue to be set by governance
  • no easy oracle that we found today
  • for comparison, maker has ~10K minimum DAI debt value
  • want to run a separate gas price oracle for the Safe Debt Floor, because the gas price oracle is also used for pinger compensation - we don’t want to overpay pinger bots, but we also don’t want to make the debt floor too low (bc then liquidations are unprofitable)
  • the Rewards Relayer will still be governed and can be used to change how pingers are paid

Surplus Buffer

  • always need to keep minimum amount of RAI in the surplus buffer
  • the contract will target a minimum of 500K RAI in the surplus buffer. The formula used by the contract will be max(500,000, 0.5% * total_rai_debt)
  • there is risk of surplus buffer getting so big that in a global settlement case RAI holders would get >1 RAI, and bc we don’t want to incentivize global settlement…
  • Q - when we wipe out RAI treasury do we also wipe out pinger budget? A - no, pinger treasury is separate.

Controller Ungovernance

Compound Governor

FLX minter

  • DAO Funding & Treasury
  • pushback on terminal FLX inflation (e.g. 2%/y)
  • response - could be governed by DAO
  • decisions to make (in the future):
    • should the DAO be able to mint FLX?
    • if so, should there be a hard upper limit to DAO FLX inflation?
    • if so, what should be the hard upper limit?

Phase Two Ungoverned Contracts

  • note - we will be going more granular on these at a later date…

Safe Engine

  • collateral ratio → 135%
  • debt floor → set by contract that ingests gas price oracle
  • ETH as only collateral type

Accounting Engine

  • tracks RAI surplus and deficit
  • allows triggering of RAI surplus auctions, once RAI in treasury is over some threshold
  • allows triggering of RAI debt auctions (to sell off FLX for RAI to cover bad debt)

Global Settlement

  • cooldown period
  • min FLX to burn to trigger (10%)

Staking Pool

  • agree on keeping the staking params governed as it is still a new feature

Protocol Token Authority

  • governance cannot change any parameter (no new address is allowed to mint FLX besides the debt auction house and the inflation minter)
  • we can probably remove the Protocol Token Printing Permissions bc only the two contracts above need to mint

Staking Reward Adjuster

  • this contract automatically recomputes the amount of FLX that goes to the lender of first resort pool every block. It also sends FLX to the lender of first resort when a staker claims their accrued rewards
  • this is fine to ungovern, it receives a fixed daily amount of FLX and spreads it out over 28 days to keep the FLX distro the smae