Documentation Portal
Project Home
  • Core Documentation
    • Overview
    • Whitepaper
      • Abstract
      • I. Introduction
      • II. Protocol
        • II.I Operation
          • II.I.I Generation of M
          • II.I.II Protocol Fees
          • II.I.III Cancel and Freeze
          • II.I.IV Retrieving Free Collateral
          • II.I.V The Earn Mechanism
          • II.I.VI Removing a Permissioned Actor
          • II.I.VII Example Interactions and Flows
        • II.II Governance Controlled Protocol Actors
        • II.III Governance Controlled Protocol Parameters
      • III. Governance
        • III.I Inputs
        • III.II Operation
          • III.II.I Epochs
          • III.II.II Proposals
            • III.II.II.I Standard Proposals
            • III.II.II.II POWER Threshold Proposals
            • III.II.II.III ZERO Threshold Proposals
            • III.II.II.IV Proposal Matrix
          • III.II.III Checkpoints and Voting
          • III.II.IV Proposing
          • III.II.V Inflation Mechanics
          • III.II.VI Dutch Auction
          • III.II.VII Delegation
          • III.II.VIII ZERO Claiming of Residual Value
        • III.III Governance Controlled TTG Parameters
        • III.IV Immutable TTG Parameters
        • III.V Immutable POWER Parameters
        • III.VI Immutable ZERO Parameters
      • IV. The M0 Economy
        • IV.I Minters
        • IV.II Validators
        • IV.III Earners
      • V. Off-Chain Ecosystem
        • V.I Guidance
        • V.II Off-Chain Actors and Components
    • Adopted Guidance
      • Adopted Guidance v1.30
        • 1. Description of the Adopted Guidance
          • 1.1. Purpose of the Adopted Guidance
          • 1.2. Change Process for the Adopted Guidance
        • 2. Ecosystem Description
          • 2.1. Actors
          • 2.2. Mandatory Contracts
          • 2.3. Duty of Transparency
          • 2.4. Core Operational Flows
            • 2.4.1. Update Collateral Process
            • 2.4.2. Minting M
            • 2.4.3. Retrieval of Collateral
          • 2.5. High-Risk Jurisdictions
        • 3. Eligible Collateral
          • 3.1. Criteria for Eligible Collateral
          • 3.2. Valuation Policy for Eligible Collateral
          • 3.3. Collateral Storage
          • 3.4. Approved Jurisdictions
            • 3.4.1. Bankruptcy Remoteness
            • 3.4.2. Non-Petition and Non-Seizure Provisions
            • 3.4.3. Priority of Payments and Subordination
            • 3.4.4. Regulatory Compliance
            • 3.4.5. Legal and Regulatory Framework
            • 3.4.6. Political Stability
            • 3.4.7. Dispute Resolution
            • 3.4.8. Asset Segregation
            • 3.4.9. Limited Recourse
            • 3.4.10. Investor Protection
            • 3.4.11. Operational Infrastructure
            • 3.4.12. Custody Relationship
            • 3.4.13. Audit
        • 4. SPV Operators
          • 4.1. Contact Information of Currently Approved SPV Operators
          • 4.2. Eligibility Criteria for Approved SPV Operators
          • 4.3. Obligations of SPV Operators
            • 4.3.1. Obligations in the Normal Course of Business
            • 4.3.2. Obligations Outside of the Normal Course of Business
              • 4.3.2.1. Amicable Wind Down Process
              • 4.3.2.2. Non-Amicable Wind Down Process
              • 4.3.2.3. Minter Insolvency
              • 4.3.2.4. Unauthorized Termination of Minter – SPV Operator Agreement
            • 4.3.3. Operational Obligations of SPV Operators
              • 4.3.3.1. Co-signature of the SPV for significant payments
              • 4.3.3.2. Cooperation with Validators
              • 4.3.3.3. Maintenance of Administrative Buffer
              • 4.3.3.4. No Wire Back Instructions
          • 4.4. Guidelines for Submission of Approval Requests
        • 5. Validators
          • 5.1. Contact Information of Currently Permissioned Validators
          • 5.2. Eligibility Criteria for Permissioned Validators
          • 5.3. Obligations of Validators
          • 5.4. Guidelines for Submission of Permissioning Requests
        • 6. BD Minters and Minters
          • 6.1. Contact Information of Currently Permissioned Minters
          • 6.2. Eligibility Criteria for Permissioned Minters
          • 6.3. Obligations of Minters
          • 6.4. BD Minter and Minter Compliance Requirements
          • 6.5. Guidelines for Submission of Permissioning Requests
        • Adopted Guidance PDF Version
      • Adopted Guidance v1.20 (deprecated)
        • Adopted Guidance PDF Version
    • Glossary
    • Disclosures
    • Whitepaper PDF Version
  • Technical Documentation
    • Protocol Technical Specification
      • Main Invariants
      • Variables
        • Protocol Variables Controlled by TTG
        • Protocol Variables And Definitions
        • Protocol Variables Used For Interest Accruals
      • Protocol And M Token Actors And Actions
        • Protocol Core Functions
          • Minter Gateway
            • updateCollateral
            • proposeMint
            • mintM
            • cancelMint
            • freezeMinter
            • burnM
            • proposeRetrieval
            • activateMinter
            • deactivateMinter
          • M Token
            • startEarning
            • stopEarning
            • transfer
          • Interest Calculations And Indices
            • MinterGateway.updateIndex
            • MinterGateway.currentIndex
            • MToken.updateIndex
            • MToken.currentIndex
            • activeOwedM
          • Interest Rate Models
            • Stable Earner Interest Rate Model Contract
            • Minter Interest Rate Model Contract
    • TTG Technical Specification
      • Main Invariants
      • Core Architecture
        • 1. Registrar
          • Registrar Variables and Getters
          • Registrar Core Functions
        • 2. TTG Governors
          • Matrix Of TTG Proposals
          • 2.1 Standard Governor
            • Variables And Getters
            • Governor Proposal State Transitions
            • Core Functions
            • Core Governance Proposals
          • 2.2 Emergency Governor
            • Emergency Governor Variables And Getters
            • Governor Proposal State Transitions
            • Core functions
              • propose(targets[], values[], callDatas[], description): proposalId
              • castVote(proposalId, support): weight
              • castVotes(proposalIds[], supports): weight
              • execute(targets[], values[], callDatas[], description): proposalId
              • setThresholdRatio(newThresholdRatio)
              • getProposal(proposalId)
              • state(proposalId)
            • Core Governance Proposals
          • 2.3 ZERO Governor
            • Variables And Getters
            • Core Functions
            • Core Governance Proposals
        • 3. POWER Token
          • Variables And Getters
          • POWER Token Core Functions
        • 4. ZERO Token
          • ZERO Token Core Functions
        • 5. Distribution Vault
          • Variables And Getters
          • Core Functions
    • Source Code Reference
      • Protocol
        • Protocol Contracts
          • Core Protocol Contracts
            • MToken
            • MinterGateway
          • Abstract Protocol Contracts
            • ContinuousIndexing
          • Protocol Interfaces
            • IContinuousIndexing
            • IMToken
            • IMinterGateway
            • IRateModel
            • ITTGRegistrar
          • Libs
            • ContinuousIndexingMath
            • TTGRegistrarReader
          • Rate Models
            • Contracts
              • EarnerRateModel
              • MinterRateModel
            • Interfaces
              • IEarnerRateModel
              • IMinterRateModel
      • TTG
        • TTG Contracts
          • Core TTG Contracts
            • DistributionVault
            • Registrar
            • Governors
              • EmergencyGovernor
              • StandardGovernor
              • ZeroGovernor
            • Tokens
              • PowerBootstrapToken
              • PowerToken
              • ZeroToken
          • Abstract TTG Contracts
            • ERC5805
            • Governors
              • BatchGovernor
              • ThresholdGovernor
            • Tokens
              • EpochBasedInflationaryVoteToken
              • EpochBasedVoteToken
            • Interfaces
              • IBatchGovernor
              • IERC5805
              • IERC6372
              • IEpochBasedInflationaryVoteToken
              • IEpochBasedVoteToken
              • IGovernor
              • IThresholdGovernor
          • Deployers
            • EmergencyGovernorDeployer
            • PowerTokenDeployer
            • StandardGovernorDeployer
          • TTG Interfaces
            • IDistributionVault
            • IRegistrar
            • Deployers
              • IDeployer
              • IEmergencyGovernorDeployer
              • IPowerTokenDeployer
              • IStandardGovernorDeployer
            • Governors
              • IEmergencyGovernor
              • IStandardGovernor
              • IZeroGovernor
            • Tokens
              • IPowerBootstrapToken
              • IPowerToken
              • IZeroToken
          • Libs
            • PureEpochs
      • Common
        • Contracts
          • Main
            • ContractHelper
            • ERC20Extended
            • ERC3009
            • ERC712Extended
            • StatefulERC712
          • Interfaces
            • IERC1271
            • IERC20
            • IERC20Extended
            • IERC3009
            • IERC712
            • IERC712Extended
            • IStatefulERC712
          • Libs
            • SignatureChecker
            • UIntMath
    • 🏁Audits
    • 🔛Deployments
Powered by GitBook

M0 Project

  • Home
  • Research

Legal

  • Terms & Conditions
  • Privacy Policy

Copyright 2025 M0 Foundation

On this page
  • Functions
  • mint
  • burn
  • startEarning
  • stopEarning
  • stopEarning
  • minterGateway
  • ttgRegistrar
  • rateModel
  • earnerRate
  • principalBalanceOf
  • principalOfTotalEarningSupply
  • totalEarningSupply
  • totalNonEarningSupply
  • isEarning
  • Events
  • StartedEarning
  • StoppedEarning
  • Errors
  • InsufficientBalance
  • IsApprovedEarner
  • NotApprovedEarner
  • NotMinterGateway
  • OverflowsPrincipalOfTotalSupply
  • ZeroMinterGateway
  • ZeroTTGRegistrar
  1. Technical Documentation
  2. Source Code Reference
  3. Protocol
  4. Protocol Contracts
  5. Protocol Interfaces

IMToken

PreviousIContinuousIndexingNextIMinterGateway

Inherits: IContinuousIndexing, IERC20Extended

Author: M^0 Labs

Functions

mint

Mints tokens.

function mint(address account, uint256 amount) external;

Parameters

Name
Type
Description

account

address

The address of account to mint to.

amount

uint256

The amount of M Token to mint.

burn

Burns tokens.

function burn(address account, uint256 amount) external;

Parameters

Name
Type
Description

account

address

The address of account to burn from.

amount

uint256

The amount of M Token to burn.

startEarning

Starts earning for caller if allowed by TTG.

function startEarning() external;

stopEarning

Stops earning for caller.

function stopEarning() external;

stopEarning

Stops earning for account.

MUST revert if account is an approved earner in TTG Registrar.

function stopEarning(address account) external;

Parameters

Name
Type
Description

account

address

The account to stop earning for.

minterGateway

The address of the Minter Gateway contract.

function minterGateway() external view returns (address);

ttgRegistrar

The address of the TTG Registrar contract.

function ttgRegistrar() external view returns (address);

rateModel

The address of TTG approved earner rate model.

function rateModel() external view returns (address);

earnerRate

The current value of earner rate in basis points.

function earnerRate() external view returns (uint32);

principalBalanceOf

The principal of an earner M token balance.

function principalBalanceOf(address account) external view returns (uint240);

Parameters

Name
Type
Description

account

address

The account to get the principal balance of.

Returns

Name
Type
Description

<none>

uint240

The principal balance of the account.

principalOfTotalEarningSupply

The principal of the total earning supply of M Token.

function principalOfTotalEarningSupply() external view returns (uint112);

totalEarningSupply

The total earning supply of M Token.

function totalEarningSupply() external view returns (uint240);

totalNonEarningSupply

The total non-earning supply of M Token.

function totalNonEarningSupply() external view returns (uint240);

isEarning

Checks if account is an earner.

function isEarning(address account) external view returns (bool);

Parameters

Name
Type
Description

account

address

The account to check.

Returns

Name
Type
Description

<none>

bool

True if account is an earner, false otherwise.

Events

StartedEarning

Emitted when account starts being an M earner.

event StartedEarning(address indexed account);

Parameters

Name
Type
Description

account

address

The account that started earning.

StoppedEarning

Emitted when account stops being an M earner.

event StoppedEarning(address indexed account);

Parameters

Name
Type
Description

account

address

The account that stopped earning.

Errors

InsufficientBalance

Emitted when there is insufficient balance to decrement from account.

error InsufficientBalance(address account, uint256 rawBalance, uint256 amount);

Parameters

Name
Type
Description

account

address

The account with insufficient balance.

rawBalance

uint256

The raw balance of the account.

amount

uint256

The amount to decrement the rawBalance by.

IsApprovedEarner

Emitted when calling stopEarning for an account approved as earner by TTG.

error IsApprovedEarner();

NotApprovedEarner

Emitted when calling startEarning for an account not approved as earner by TTG.

error NotApprovedEarner();

NotMinterGateway

Emitted when calling mint, burn not by Minter Gateway.

error NotMinterGateway();

OverflowsPrincipalOfTotalSupply

Emitted when principal of total supply (earning and non-earning) will overflow a type(uint112).max.

error OverflowsPrincipalOfTotalSupply();

ZeroMinterGateway

Emitted in constructor if Minter Gateway is 0x0.

error ZeroMinterGateway();

ZeroTTGRegistrar

Emitted in constructor if TTG Registrar is 0x0.

error ZeroTTGRegistrar();
Git Source