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
  1. Core Documentation
  2. Whitepaper
  3. II. Protocol
  4. II.I Operation

II.I.I Generation of M

This is a detailed overview of the $M generation process within the M0 Protocol.

PreviousII.I OperationNextII.I.II Protocol Fees

Last updated 5 months ago

In order to generate $M, must have a sufficient off-chain balance of which is represented on-chain by a frequently updated and validated number, known as the on-chain Collateral Value.

call the Update Collateral method to put this number on-chain. They must pass the amount, the list of signing , a list of timestamps associated with the Validator signatures, and valid signature data (from ). Whenever timestamps and signature data is passed to a method, the contracts will take the minimum timestamp and the minimum threshold of signatures as defined by the (see ). Optionally, they can pass a hash of arbitrary metadata and any open Retrieval IDs (see ) into the method as an argument. The Metadata Hash can be used to retrieve the actual off-chain metadata, which can serve to add context to the update, while Retrieval IDs allow to remove outstanding balance subtractions (see ). Signature validation may either use standard , which allows for the to obtain the signature off-chain, or on-chain contract signatures. The collateral balance is an attestation to the value of the held in an (see for further details).

In order to post the value of their on-chain, the will need to provide the signature data (from ) in the transaction. The presence of the Validator’s signature is to reinforce that the value of the is correct and reflects the most up-to-date snapshot of the off-chain balances. must update their number on-chain and with a valid signature at least once every (see ). If a fails to call Update Collateral within of the previous time they called it, their on-chain Collateral Value is assumed to be 0. If the cannot provide valid signature data (from ), they cannot successfully call the method. Each time this method is called it will accrue the (see ) on the Minter’s current balance of Owed $M. If any rules are being violated at the time of the method being called, it will also charge on the Minter’s balance which is in violation (see ).

Example

Eligible Collateral for $M has been deemed to be 0-90 day T-bills. Minter 1 has $10,000,000 of T-bills sitting in an Eligible Custody Solution. Minter 1 calls Update Collateral and passes 10,000,000, and a valid Validator signature as arguments. The on-chain Collateral Value of the Minter is now 10,000,000. The next day, $1,000,000 of the T-bills mature and convert to bank deposits, which are not considered Eligible Collateral. The Minter calls Update Collateral and passes 9,000,000, and a valid Validator signature as arguments. The on-chain collateral balance of the Minter is updated to 9,000,000.

Once a has updated their on-chain collateral they are able to generate $M. They do so by calling the Propose Mint method and passing in the amount of $M they’d like to generate and the address which they would like to generate the $M to. Once this method is called, it will first call Get Present Amount on the Minter's current balance of Owed M. It will then check to ensure that the on-chain Collateral Value multiplied by the Mint Ratio (see II.III Governance Controlled Protocol Parameters) is greater than the amount of total Owed $M from the Minter, including the amount they are currently attempting to generate and/or Retrieve (see II.I.IV Retrieving Free Collateral). If these checks are passed the method will output a Mint ID which corresponds to the Propose Mint. A can only have one outstanding Mint ID at any given time.

If after the (see ) the Mint ID has not been canceled by the (see ), the may call the Mint method and pass the Mint ID as an argument to execute the Propose Mint. The was introduced to avoid atomic Update Collateral calls and Mint calls, and to provide the network of with sufficient opportunity to intervene in the minting process if something is seemingly wrong (see ). The Minter must call Mint before the has expired (see ).

can destroy Owed $M at any time by calling the Burn method and passing in their Minter Address and the amount of $M they’d like to burn as arguments. Any address can repay $M owed by a Minter by calling the Burn method and passing in the amount and Minter address as arguments.

III.III Governance Controlled TTG Parameters
II.I.IV Retrieving Free Collateral
II.I.IV Retrieving Free Collateral
ecrecover
EIP-1271
V.II Off-Chain Actors and Components
II.III Governance Controlled Protocol Parameters
II.I.II Protocol Fees
II.I.II Protocol Fees
II.III Governance Controlled Protocol Parameters
II.I.III Cancel and Freeze
II.I.III Cancel and Freeze
II.III Governance Controlled Protocol Parameters
Minters
Eligible Collateral
Minters
Validators
Validators
TTG
Minters
Minter
Eligible Collateral
Eligible Custody Solution
Eligible Collateral
Minters
Validators
Eligible Collateral
Minters
Eligible Collateral
Validator
Update Collateral Interval
Minter
Update Collateral Interval
Minter
Validators
Minter Rate
Penalty Rate
Minter
Minter
Mint Delay
Validator
Minter
Mint Delay
Validators
Propose Mint Time To Live
Minters
The $M generation process and its limiting factors