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 contract will target a minimum of 500K RAI in the surplus buffer. The formula used by the contract will be
- 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
andKi
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 andsystemCoinsToRequest
which is the minimum amount of RAI to request fortokensToAuction
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:
- Contracts that interact with or receive data from the outside world (oracles, ETH OSM, saviours)
- Contracts that manage internal resources that are used to incentivize outside behaviour (SF treasury, debt popper rewards, rewards relayers for oracles)
- RAI controller contract/s
- Contracts that are part of the governance module (e.g DS Pause)