Skip to content

Minter Lifecycle & Management

Minters are permissioned entities that interact with the MinterGateway to issue and manage $M. Their lifecycle within the protocol is characterized by several distinct statuses:

  1. Approved: Minters are initially whitelisted by the M0 Two-Token Governance (TTG) system. At this stage, they are recognized by the protocol but cannot yet perform minting operations.
  2. Active: An approved Minter must explicitly activate their status by calling activateMinter() on the MinterGateway.
    function activateMinter(address minter_) external;
    This function can only be called by the Minter themselves and transitions them to an operational state, allowing them to propose collateral updates and mint $M. The active status is stored locally within MinterGateway for gas efficiency.
  3. Frozen: An active Minter can be temporarily restricted from minting $M by Validators (via freezeMinter()). During this state, the Minter can still burn $M to reduce their debt and update their collateral but cannot propose new mints. The freeze duration is determined by governance.
  4. Deactivated: A Minter can be deactivated if they are removed from the governance-approved list. Deactivation is a permanent state, initiated by a call to deactivateMinter().
    function deactivateMinter(address minter_) external returns (uint240 inactiveOwedM_);
    This function can be called if the Minter is no longer approved by TTG. Upon deactivation:
    • The Minter's outstanding debt, including accrued interest, is converted into a fixed inactiveOwedM amount which no longer accrues interest.
    • The Minter can no longer mint $M or propose collateral retrievals.
    • Their collateral remains to back their inactiveOwedM.
    • A deactivated Minter cannot be reactivated. This permanence optimizes gas by eliminating further status checks against the TTGRegistrar.