Money Market Module

Interest rate setters and collectors

Relevant smart contracts:

1. Overview

The Money Market Module contains the components that governance (or an autonomous rate setter) can use to set and collect stability fees.

2. Component Descriptions

  • The TaxCollector imposes fees on all collateral types and distributes them to various parties. Compared to MCD, the system can automatically use fees to fund its operations such as paying for oracle calls (in addition to accruing surplus in the AccountingEngine). Each collateral's stability fee is composed out of a globalStabilityFee (a base fee applied to all collateral types) and its own, unique CollateralType.stabilityFee.

3. Risks

Smart Contract Bugs

A bug in the TaxCollector would make it so that the system could no longer accrue surplus (which is used to settle bad debt and pay for other system operations) and thus components that depend on a constant stream of fees would likely stop working properly.

Improper Maintenance

The TaxCollector depends on external actors that call taxSingle or taxMany in order to collect stability fees. Protocol token holders are incentivized to call the collector as often as possible, although in the early days of the system the calls may be more infrequent. The main caveat is that any SAFE that is opened and closed between two fee collections will not be subject to taxation.

Another major risk is related to malicious governance setting extremely high or extremely low stability fees. If the fees are extremely high, SAFEs may be unjustly liquidated. On the other hand, if they are too low, the system may not be able to collect enough fees to become sustainable.

4. Governance Minimization

Depending on whether governance wants to expand the array of accepted collateral types over time, they may keep control over the TaxCollector or choose to add only a few assets and then completely remove their permissions.

Governance may also keep their power to change stability fees within certain limits. For example, the globalStabilityFee may only be changed by a certain percentage every week or every CollateralType.stabilityFee can have strict bounds over what values it can be set to.