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
  • State Variables
  • _MAX_TOTAL_ZERO_REWARD_PER_ACTIVE_EPOCH
  • emergencyGovernorDeployer
  • powerTokenDeployer
  • standardGovernorDeployer
  • _allowedCashTokens
  • Functions
  • constructor
  • resetToPowerHolders
  • resetToZeroHolders
  • setCashToken
  • setEmergencyProposalThresholdRatio
  • setZeroProposalThresholdRatio
  • isAllowedCashToken
  • emergencyGovernor
  • standardGovernor
  • _deployEphemeralContracts
  • _resetContracts
  • _revertIfInvalidCalldata
  1. Technical Documentation
  2. Source Code Reference
  3. TTG
  4. TTG Contracts
  5. Core TTG Contracts
  6. Governors

ZeroGovernor

PreviousStandardGovernorNextTokens

Inherits: IZeroGovernor, ThresholdGovernor

Author: M^0 Labs

State Variables

_MAX_TOTAL_ZERO_REWARD_PER_ACTIVE_EPOCH

The maximum number of Zero tokens that can be rewarded per active epoch.

uint256 internal constant _MAX_TOTAL_ZERO_REWARD_PER_ACTIVE_EPOCH = 5_000_000e6;

emergencyGovernorDeployer

Returns the address of the Emergency Governor Deployer.

address public immutable emergencyGovernorDeployer;

powerTokenDeployer

Returns the address of the Power Token Deployer.

address public immutable powerTokenDeployer;

standardGovernorDeployer

Returns the address of the Standard Governor Deployer.

address public immutable standardGovernorDeployer;

_allowedCashTokens

The set of allowed cash tokens.

mapping(address token => bool allowed) internal _allowedCashTokens;

Functions

constructor

Construct a new ZeroGovernor contract.

constructor(
    address voteToken_,
    address emergencyGovernorDeployer_,
    address powerTokenDeployer_,
    address standardGovernorDeployer_,
    address bootstrapToken_,
    uint256 standardProposalFee_,
    uint16 emergencyProposalThresholdRatio_,
    uint16 zeroProposalThresholdRatio_,
    address[] memory allowedCashTokens_
) ThresholdGovernor("ZeroGovernor", voteToken_, zeroProposalThresholdRatio_);

Parameters

Name
Type
Description

voteToken_

address

The address of the token used to vote.

emergencyGovernorDeployer_

address

The address of the Emergency Governor Deployer contract.

powerTokenDeployer_

address

The address of the Power Token Deployer contract.

standardGovernorDeployer_

address

The address of the Standard Governor Deployer contract.

bootstrapToken_

address

The address of the token that bootstraps the reset.

standardProposalFee_

uint256

The proposal fee for the Standard Governor.

emergencyProposalThresholdRatio_

uint16

The threshold ratio for the Emergency Governor.

zeroProposalThresholdRatio_

uint16

The threshold ratio for the Zero Governor.

allowedCashTokens_

address[]

The set of allowed cash tokens.

resetToPowerHolders

One of the valid proposals. Reset the Standard Governor, Emergency Governor, and Power Token to the Power Token holders. This would be used by Zero Token holders in the event that inflation is soon to result in Power Token overflowing, and/or there is a loss of faith in the state of either the Standard Governor or Emergency Governor.

function resetToPowerHolders() external onlySelf;

resetToZeroHolders

One of the valid proposals. Reset the Standard Governor, Emergency Governor, and Power Token to the ZeroToken holders. This would be used by Zero Token holders if they no longer have faith in the current set of PowerToken holders and/or the state of either the Standard Governor or Emergency Governor.

function resetToZeroHolders() external onlySelf;

setCashToken

One of the valid proposals. Sets the Cash Token of the system.

function setCashToken(address newCashToken_, uint256 newProposalFee_) external onlySelf;

Parameters

Name
Type
Description

newCashToken_

address

newProposalFee_

uint256

setEmergencyProposalThresholdRatio

One of the valid proposals. Sets the threshold ratio for Emergency Governor proposals.

function setEmergencyProposalThresholdRatio(uint16 newThresholdRatio_) external onlySelf;

Parameters

Name
Type
Description

newThresholdRatio_

uint16

setZeroProposalThresholdRatio

One of the valid proposals. Sets the threshold ratio for this governor's proposals.

function setZeroProposalThresholdRatio(uint16 newThresholdRatio_) external onlySelf;

Parameters

Name
Type
Description

newThresholdRatio_

uint16

isAllowedCashToken

Returns whether token is an allowed Cash Token of the system, as a parameter in setCashToken proposal.

function isAllowedCashToken(address token_) external view returns (bool);

Parameters

Name
Type
Description

token_

address

Returns

Name
Type
Description

<none>

bool

Whether token is an allowed Cash Token.

emergencyGovernor

Returns the address of the Emergency Governor.

function emergencyGovernor() public view returns (address);

standardGovernor

Returns the address of the Standard Governor.

function standardGovernor() public view returns (address);

_deployEphemeralContracts

Deploys the ephemeral standardGovernor, emergencyGovernor, and powerToken contracts.

function _deployEphemeralContracts(
    address emergencyGovernorDeployer_,
    address powerTokenDeployer_,
    address standardGovernorDeployer_,
    address bootstrapToken_,
    address cashToken_,
    uint16 emergencyProposalThresholdRatio_,
    uint256 proposalFee_
) internal returns (address standardGovernor_, address emergencyGovernor_, address powerToken_);

Parameters

Name
Type
Description

emergencyGovernorDeployer_

address

The address of the Emergency Governor Deployer contract.

powerTokenDeployer_

address

The address of the Power Token Deployer contract.

standardGovernorDeployer_

address

The address of the Standard Governor Deployer contract.

bootstrapToken_

address

The address of a token to bootstrap the new Power Token.

cashToken_

address

The address of the Cash Token contract.

emergencyProposalThresholdRatio_

uint16

The threshold ratio for the Emergency Governor.

proposalFee_

uint256

The proposal fee for the Standard Governor.

Returns

Name
Type
Description

standardGovernor_

address

The address of the deployed Standard Governor contract.

emergencyGovernor_

address

The address of the deployed Emergency Governor contract.

powerToken_

address

The address of the deployed Power Token contract.

_resetContracts

*Redeploy the ephemeral standardGovernor, emergencyGovernor, and powerToken contracts, where:

  • the cash token is the same cash token in the existing standardGovernor

  • the emergencyGovernor threshold ratio is the same threshold ratio in the existing emergencyGovernor

  • the standardGovernor proposal fee is the same proposal fee in the existing standardGovernor*

function _resetContracts(address bootstrapToken_) internal;

Parameters

Name
Type
Description

bootstrapToken_

address

The token to bootstrap the powerToken balances and voting powers.

_revertIfInvalidCalldata

All proposals target this contract itself, and must call one of the listed functions to be valid.

function _revertIfInvalidCalldata(bytes memory callData_) internal pure override;

Parameters

Name
Type
Description

callData_

bytes

The call data to check.

Git Source