The expectation is that after the pools receive their YAMs, there is no longer a founding team or any team to speak of. This is a protocol that is being put out there in a decentralized way, then walk away. The writer of these contracts or those connected with its inception, are under no obligation and likely won't continue development once it is deployed.
That said, it would be helpful for governance to have a well documented set of levers inside the protocol so if the community wishes to govern, they can.
address that controls every permissioned function, or is primed to.
_setPendingGov(address)
: sets pendingGov
to new address. To complete the change of governance, the new governance contract has to call _acceptGov()
.
address that controls the rebasing functionality. This contract is one of two contracts that can mint
. It also tells how much to change yamsScalingFactor
.
_setRebaser(address)
: sets rebaser
to new address.
address that controls the incentivizer pool. This contract is one of two contracts that can mint
. It is there to promote liquidity for the rebasing functionality to work correctly.
_setIncentivizer(address)
: sets incentivzer
to new address.
Transactions that the rebaser sends after a rebase. Useful for calling sync()
like functions.
addTransaction(address destination, bytes calldata data)
adds a transaction to the list of txs to perform.
removeTransaction(uint index)
removes a transaction to the list of txs.
setTransactionEnabled(uint index, bool enabled)
enables or disables a tx in the transactions
list.
address that controls every permissioned function, or is primed to.
_setPendingGov(address)
: sets pendingGov
to new address. To complete the change of governance, the new governance contract has to call _acceptGov()
.
rebaseLag spreads out the time it takes to reach the peg. i.e. if the supply is suppose to increase 10% in a particular rebase, that 10% is divided by this rebaseLag to slow it down a bit. Since rebases happen twice daily, a value of 10, slows it down to 5 days (if no further price change).
setRebaseLag(uint256 rebaseLag_)
The peg the protocol should aim for relative to the reserveToken. i.e. 1e18
means 1:1 between the reserveToken and YAM.
setTargetRate(uint256 targetRate_)
The amount of YAM that the rebaser mints that is sold to build the protocol's treasury. Decimals: 18. i.e. 1e17 == .1, or 10% of the rebase.
setRebaseMintPerc(uint256 rebaseMintPerc_)
The percentage difference between price and peg needed to allow for a change of supply via rebase.
setDeviationThreshold(uint256 deviationThreshold_)
Amount of time between rebases.
setRebaseTimingParameters(
uint256 minRebaseTimeIntervalSec_,
uint256 rebaseWindowOffsetSec_,
uint256 rebaseWindowLengthSec_
)
The number of seconds from the beginning of the rebase interval, where the rebase window begins.
setRebaseTimingParameters(
uint256 minRebaseTimeIntervalSec_,
uint256 rebaseWindowOffsetSec_,
uint256 rebaseWindowLengthSec_
)
The length of the time window where a rebase operation is allowed to execute, in seconds.
setRebaseTimingParameters(
uint256 minRebaseTimeIntervalSec_,
uint256 rebaseWindowOffsetSec_,
uint256 rebaseWindowLengthSec_
)
Address of the protocol owned reserves (treasury) contract.
setReserveContract(address reservesContract_)
Max slippage factor when buying reserve token. Magic number based on the fact that uniswap is a constant product. Therefore, targeting a % max slippage can be achieved by using a single precomputed number. i.e. 2.5% slippage is always equal to some f(maxSlippageFactor, reserves)
setMaxSlippageFactor(uint256 maxSlippageFactor_)