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.II Protocol Fees

There are two fees assessed on Minters in the M0 protocol.

PreviousII.I.I Generation of MNextII.I.III Cancel and Freeze

Last updated 3 months ago

The first is called , a governance controlled parameter, which is levied continuously on the Minter’s balance of Owed $M. This fee compounds on a continuous basis. The beneficiaries of Minter Rate are the Earn Mechanism (see ) and the holders (see ).

The second is , another governance controlled parameter, which is levied on balances that are in violation of protocol rules and has the same beneficiaries as the .

One of the primary invariants of the protocol is that the balance of a Minter’s Owed $M should not exceed the on-chain Collateral Value (sans open Retrieval IDs) multiplied by the .

is imposed upon any balance in excess of this amount. If a has not called Update Collateral within , they will incur on their entire balance of Owed $M for each that they miss – i.e. when Update Collateral is not called in the TTG-specified time the system interprets its value to be zero.

Unlike , is not continuously levied on the Minter’s balance of Owed M, but is charged discretely as a one-time percentage fee on their delinquent balance at the moment the balance is checked, and then added to the Minter’s Owed M. Collecting is contained in the Get Present Amount method, which is exclusively embedded in all other Minter methods, including Burn, and cannot be called independently. The is mechanically affected by updating a global index value which is applied to all Owed $M in the Minter’s balance, as is . is contained in the Impose Penalty method, which is exclusively embedded in the Update Collateral, Burn and Deactivate Minter methods. When Impose Penalty is called in conjunction with Update Collateral, it checks for both missed periods and the Minter’s balance of Owed $M relative to their on-chain Collateral Value discounted by the . When it is called in conjunction with Burn, it only checks for missed periods. This is done to ensure that the is not penalized on the same errant balance more than once. Impose Penalty will also account for whether it has already been called in the current period and will not charge a twice for the same missed period.

Example

A Minter calls Update Collateral; the Get Present Amount method is called along with the Impose Penalty method. The Minter’s balance of Owed $M prior to the method call is 8,000,000 M. First, Get Present Amount is used to fetch the latest index and apply the Minter Rate to the Minter’s balance of Owed M, accounting for continuous compounding. Assume that this increases the Minter’s Owed $M to 8,000,010 M. If the Minter’s on-chain Collateral Value is 8,000,000 and the Mint Ratio is 90%, then the maximum amount of Owed $M Minter 1 should have is 7,200,000 M– but the actual on-chain number is 8,000,010 M. Therefore Minter 1 will incur Penalty Rate on (8,000,010 M - 7,200,000 M) = 800,010 M. If Penalty Rate is 0.01%, then the Minter’s Owed $M is incremented to 8,000,010 M + 800,010 M* 1.0001 = 8,800,100.001 M.

The following is a diagram which demonstrates a hypothetical sequence where a incurs charges. The example below describes this hypothetical sequence.

Example (some balances are rounded)

Assume that the Mint to Collateral Ratio is 90%, Update Collateral Interval is 24 hours, Minter Rate is 5% APY (and therefore ~0.00058% per hour), and Penalty Minter Rate is 0.02%.

On Day 1, a Minter calls Update Collateral and passes in 100 as the value. Its Owed $M is 0. Later that day (Day 1.1) the Minter generates 90 M.

On Day 2 the Minter fails to call Update Collateral.

On Day 3 the Minter calls Burn and passes in 50.043 M. Assume that less than 48 hours have passed since the Mint call on Day 1. First, Get Present Amount is called and applies the latest index to the Minter’s balance of 90 M. This increases the Minter’s Owed $M to (90 * (1 + (0.0000058 * 48))) = 90.025 M. Next, Impose Penalty is called and is applied to the Minter’s updated balance. Since the Minter missed one Update Collateral Interval period (on Day 2), they are penalized one time. The Minter’s Owed $M is increased to (90.025 * (1 + (0.0002 * 1)) = 90.043 M. The amount passed into the Burn method (50.043) is now subtracted from this new balance and reduces the Minter’s Owed $M to (90.043 - 50.043) = 40 M. Recall that burn only checks for missed Update Collateral Interval periods and does not check the Minter’s current on-chain Collateral Value and therefore does not penalize any currently errant balance. The Minter then calls Burn again on Day 3 and passes in 30.0014 M. Assume 6 hours have passed since the previous Burn call. First, Get Present Amount is called and applies the latest index to the Minter’s balance of 40 M. This increases the Minter’s Owed $M to (40 * (1 + (0.0000058 * 6))) = 40.0014 M. Impose Penalty is then run but does not charge the Minter an additional Penalty Rate because it has already paid for all missed Update Collateral Interval periods. The amount passed into the Burn method (30.0014) is now subtracted from this new balance and reduces the Minter’s Owed $M to (40.0014 - 30.0014) = 10 M. Finally, also on Day 3, the Minter calls Update Collateral and passes in 0 (most likely because their Eligible Collateral has matured and is sitting in ineligible bank deposits). Assume another 6 hours have passed. Once again, Get Present Amount is run to apply the latest index to the Minter’s balance of M. This increases the Minter’s Owed $M by (10 * (1 + (0.0000058 * 6))) = 10.00035 M. Next Impose Penalty is called. There are no charges for missed periods because these were already paid when the Minter called Burn. A check for an errant balance is now run and produces 10.00035 M since the Minter’s entire balance is in excess of their maximum permitted Owed $M due to the on-chain Collateral Value being 0. The Minter’s Owed $M is increased to (10.00035 * 1.0002) = 10.00235 M.

Hypothetical sequence where a incurs charges.

II.I.V The Earn Mechanism
III. Governance
Minter
Penalty Rate
Minter Rate
ZERO
Penalty Rate
Minter Rate
Mint Ratio
Penalty Rate
Minter
Update Collateral Interval
Penalty Rate
Update Collateral Interval
Minter Rate
Penalty Rate
Minter Rate
Minter Rate
Penalty Rate
Penalty Rate
Update Collateral Interval
Mint Ratio
Update Collateral Interval
Minter
Update Collateral Interval
Minter
Minter
Penalty Rate
Hypothetical sequence where a Minter incurs Penalty Rate charges.