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
  • addToList
  • removeFromList
  • setKey
  • clockStartingTimestamp
  • clockPeriod
  • get
  • get
  • listContains
  • listContains
  • emergencyGovernor
  • emergencyGovernorDeployer
  • powerToken
  • powerTokenDeployer
  • standardGovernor
  • standardGovernorDeployer
  • vault
  • zeroGovernor
  • zeroToken
  • Events
  • AddressAddedToList
  • AddressRemovedFromList
  • KeySet
  • Errors
  • InvalidEmergencyGovernorDeployerAddress
  • InvalidPowerTokenDeployerAddress
  • InvalidStandardGovernorDeployerAddress
  • InvalidVaultAddress
  • InvalidVoteTokenAddress
  • InvalidZeroGovernorAddress
  • NotStandardOrEmergencyGovernor
  1. Technical Documentation
  2. Source Code Reference
  3. TTG
  4. TTG Contracts
  5. TTG Interfaces

IRegistrar

PreviousIDistributionVaultNextDeployers

Inherits: IERC6372

Author: M^0 Labs

Functions

addToList

Adds account to list.

function addToList(bytes32 list, address account) external;

Parameters

Name
Type
Description

list

bytes32

The key for some list.

account

address

The address of some account to be added.

removeFromList

Removes account from list.

function removeFromList(bytes32 list, address account) external;

Parameters

Name
Type
Description

list

bytes32

The key for some list.

account

address

The address of some account to be removed.

setKey

Sets key to value.

function setKey(bytes32 key, bytes32 value) external;

Parameters

Name
Type
Description

key

bytes32

Some key.

value

bytes32

Some value.

clockStartingTimestamp

Returns the starting timestamp of Epoch 1.

function clockStartingTimestamp() external pure returns (uint256);

clockPeriod

Returns the period/duration, in seconds, of an epoch.

function clockPeriod() external pure returns (uint256);

get

Returns the value of key.

function get(bytes32 key) external view returns (bytes32);

Parameters

Name
Type
Description

key

bytes32

Some key.

Returns

Name
Type
Description

<none>

bytes32

Some value.

get

Returns the values of keys respectively.

function get(bytes32[] calldata keys) external view returns (bytes32[] memory);

Parameters

Name
Type
Description

keys

bytes32[]

Some keys.

Returns

Name
Type
Description

<none>

bytes32[]

Some values.

listContains

Returns whether list contains account.

function listContains(bytes32 list, address account) external view returns (bool);

Parameters

Name
Type
Description

list

bytes32

The key for some list.

account

address

The address of some account.

Returns

Name
Type
Description

<none>

bool

Whether list contains account.

listContains

Returns whether list contains all specified accounts.

function listContains(bytes32 list, address[] calldata accounts) external view returns (bool);

Parameters

Name
Type
Description

list

bytes32

The key for some list.

accounts

address[]

An array of addressed of some accounts.

Returns

Name
Type
Description

<none>

bool

Whether list contains all specified accounts.

emergencyGovernor

Returns the address of the Emergency Governor.

function emergencyGovernor() external view returns (address);

emergencyGovernorDeployer

Returns the address of the Emergency Governor Deployer.

function emergencyGovernorDeployer() external view returns (address);

powerToken

Returns the address of the Power Token.

function powerToken() external view returns (address);

powerTokenDeployer

Returns the address of the Power Token Deployer.

function powerTokenDeployer() external view returns (address);

standardGovernor

Returns the address of the Standard Governor.

function standardGovernor() external view returns (address);

standardGovernorDeployer

Returns the address of the Standard Governor Deployer.

function standardGovernorDeployer() external view returns (address);

vault

Returns the address of the Vault.

function vault() external view returns (address);

zeroGovernor

Returns the address of the Zero Governor.

function zeroGovernor() external view returns (address);

zeroToken

Returns the address of the Zero Token.

function zeroToken() external view returns (address);

Events

AddressAddedToList

Emitted when account is added to list.

event AddressAddedToList(bytes32 indexed list, address indexed account);

Parameters

Name
Type
Description

list

bytes32

The key for the list.

account

address

The address of the added account.

AddressRemovedFromList

Emitted when account is removed from list.

event AddressRemovedFromList(bytes32 indexed list, address indexed account);

Parameters

Name
Type
Description

list

bytes32

The key for the list.

account

address

The address of the removed account.

KeySet

Emitted when key is set to value.

event KeySet(bytes32 indexed key, bytes32 indexed value);

Parameters

Name
Type
Description

key

bytes32

The key.

value

bytes32

The value.

Errors

InvalidEmergencyGovernorDeployerAddress

Revert message when the Emergency Governor Deployer retrieved in the constructor is address(0).

error InvalidEmergencyGovernorDeployerAddress();

InvalidPowerTokenDeployerAddress

Revert message when the Power Token Deployer retrieved in the constructor is address(0).

error InvalidPowerTokenDeployerAddress();

InvalidStandardGovernorDeployerAddress

Revert message when the Standard Governor Deployer retrieved in the constructor is address(0).

error InvalidStandardGovernorDeployerAddress();

InvalidVaultAddress

Revert message when the Vault retrieved in the constructor is address(0).

error InvalidVaultAddress();

InvalidVoteTokenAddress

Revert message when the Vote Token retrieved in the constructor is address(0).

error InvalidVoteTokenAddress();

InvalidZeroGovernorAddress

Revert message when the Zero Governor specified in the constructor is address(0).

error InvalidZeroGovernorAddress();

NotStandardOrEmergencyGovernor

Revert message when the caller is not the Standard Governor nor the Emergency Governor.

error NotStandardOrEmergencyGovernor();
Git Source