Skip to content

III. Governance

The M0 protocol uses an onchain governance mechanism called a Two Token Governor (TTG) to manage its various inputs. With TTG, holders of the voting tokens are penalized for failing to vote.

There are two utility tokens used in the M0 TTG: POWER and ZERO.

POWER is used to vote on active proposals and can be considered the primary management token of the mechanism. POWER holders will earn ZERO in exchange for their direct participation in governance. If a POWER holder delegates their balance to an address that is not also the holder of the tokens, it is this address which receives the ZERO rewards. ZERO holders are comparatively (to POWER holders) passive in the voting process and only vote on important changes. ZERO holders at any time may Reset (see: ZERO Threshold Proposals) the POWER token supply to themselves.

The goal of the TTG mechanism is to ensure credible neutrality of governance. In any system there are two extremes that must be avoided: capture and fraud. In one case, the system is captured by actors whose primary interest is not in efficient protocol operation and it ceases to function in a way where all users are treated the same. In the other, the protocol ceases to function for anyone except the fraudulent actor. It is this dichotomy that is at the heart of the two token design. POWER holders are treated as a managerial class that is able to earn compensation through continued benevolent participation. This continued benevolence is judged by the ZERO holders who can always strip the POWER holders of their management rights, and thus their ability to earn future ownership in the protocol. If the composition and decisions of POWER holders trend towards either extreme, it is in the interest of ZERO holders to call Reset in order to restore balance.

III.I Inputs

List of protocol inputs by the M0 Two Token Governor (TTG).

The M0 TTG (hereafter TTG) is responsible for the following inputs to the M0 protocol and to itself (see (Governance Controlled TTG Parameters)[/home/getting-started/whitepaper/governance/#governance-controlled-ttg-parameters-1], Governance Controlled Protocol Actors, and Section Governance Controlled Protocol Parameters for further context on the actors and parameters listed below):

Governance Controlled TTG Parameters

  • Proposal Fee
  • POWER Threshold
  • ZERO Threshold
  • CASH Toggle

Governance Controlled Protocol Actors

Governance Controlled Protocol Parameters

III.II Operation

Protocol operational attributes.

The TTG is used to vote on proposals seeking to amend the Actors and variables.

New lists and variables may be added arbitrarily over time, however the core protocol is immutable and these additions will not directly impact its operations.

The implementation which controls the M0 protocol is deployed exclusively on the Ethereum Mainnet.

III.II.I Epochs

Protocol epochs for governance and proposal execution.

The mechanism practically operates in 30-day epochs, meaning in the standard operating procedure proposals are only passed on a 30-day cycle. In practice, this broader epoch is split into two epochs of 15 days. These numbers were chosen to align with an average calendar month.

The first epoch (the Transfer Epoch) is a non-voting period where transfers and delegation are enabled. The second 15-day epoch (the Voting Epoch) is where voting takes place on Standard Proposals and transfers and delegation are disabled. These restrictions on onchain activity only apply to POWER tokens, there are no restrictions placed on the ZERO token.

The conceptual 30-day epoch is split into these two smaller epochs to ensure correct accounting for voting and inflation. This means that proposals are collected in one 15-day epoch (whether it be the Voting Epoch or the Transfer Epoch), are voted on in the following 15-day Voting Epoch, and should be executed in the following 15-day Transfer Epoch. Proposals that passed but were not executed eventually expire. Therefore a proposal may spend as short as 15 days plus two blocks, or as long as 45 days, from submission to execution. During the 15-day Transfer Epoch, holders may transfer their balances, reassign delegations, and purchase POWER that is being auctioned.

III.II.II Proposals

Protocol change proposals for TTG governance.

The TTG has three types of proposals: (1) Standard Proposals, (2) POWER Threshold Proposals, and (3) ZERO Threshold Proposals.

The use of threshold in the terminology represents a yes threshold, meaning that the threshold percentage of yes votes must be reached in order for the proposal to pass. A proposal that requires a threshold never explicitly fails (although it will eventually expire), but cannot be executed without reaching the requisite number of yes votes.

For example, if a proposal requires a 10% yes threshold, it will pass as soon as 10% of the relevant token supply has voted yes. If this proposal never reaches 10% of the relevant token supply voting yes, it will expire without passing.

These proposal types are described next in further detail.

III.II.II.I Standard Proposals

Standard Proposals in TTG Governance.

Standard Proposals are voteable only by POWER holders and require a simple majority of participating tokens to pass. Standard proposals do not require a threshold percentage of yes votes to pass. If there are only 100 POWER tokens voting in a Standard Proposal and 51 vote yes while 49 vote no, it will pass. If 50 vote yes and 50 vote no, it will fail as it requires the yes balance to exceed the no.

Standard Proposals are the only proposal type which are “mandatory” for POWER holder participation. Lack of participation will result in POWER holders being diluted in terms of their overall voting POWER in the system and will cause them to forfeit any ZERO rewards for which they were otherwise eligible. A successful Standard Proposal will have its Proposal Fee available to be returned to the proposer.

III.II.II.II POWER Threshold Proposals

A POWER Threshold Proposal requires a set vote threshold for immediate execution, used for urgent or important changes in M0 Governance.

A POWER Threshold Proposal can be used to submit anything which would otherwise be a Standard Proposal, except it requires a POWER Threshold and is immediately votable and subsequently immediately executable rather than only being votable and executable in the future epochs.

For this reason, POWER holders are likely to use this proposal type in the case of an urgent or emergency situation. If a POWER Threshold has not been reached before the proposal expires, the proposal cannot be executed. POWER Threshold Proposals expire at the end of the next epoch.

III.II.II.III ZERO Threshold Proposals

ZERO Threshold Proposals allow major governance changes.

A ZERO Threshold Proposal is used for Reset, to toggle CASH between WETH and $M, and to set the POWER and ZERO Thresholds themselves. The Reset method is a special feature reserved for the ZERO token holders which allows a yes threshold of ZERO holders to change the current governor of the system to a new version with a new POWER token that is claimable pro rata to ZERO holders or to existing POWER holders.

They do this by creating a proposal to call the Reset method. Mechanically this is affected by replacing the current governor (POWER token address) of the system with a new instance, where the starting balance of the POWER tokens are proportional to each ZERO holder's balance in the epoch before the Reset. It is immediately executable upon achieving a yes threshold.

It is intended for ZERO holders to use this feature should they find something irreparably wrong with the composition and/or voting patterns of the current POWER holders and wish to take on voting responsibility themselves. It is anticipated that ZERO holders will only Reset the governor to the existing POWER holders if the token is nearing an overflow, which will not happen for 150+ years. There is technically no limit to how many times Reset can be called, but it is not anticipated to be frequently used if it is ever used in the first place. If a Reset is executed in the middle of a Voting Epoch, all active and/or unexecuted proposals are effectively canceled because they are using the obsolete governor.

III.II.II.IV Proposal Matrix

The Proposal Matrix provides a visual breakdown of the three TTG proposal types.

The diagram below details the three types of proposals in the TTG and highlights which actions are associated with each type.

Governance - 2
Diagram of Proposal Types with associated token responsibility, mechanics, and actions.

III.II.III Checkpoints and Voting

A checkpoint of balances is taken at the start of epochs and the balances contained in these checkpoints are used for voting throughout the epoch.

During a Transfer Epoch, only the balance a user possessed at the checkpoint will be counted towards voting on POWER Threshold Proposals, which will not include standard inflationary proposals by definition. In order to vote the POWER owner’s delegate address (hereon referred to as the POWER holder) calls the Cast Votes method on the array of proposals they wish to vote on and specifies yes/no for each proposal.

There is no abstain option in the TTG.

III.II.IV Proposing

Making protocol change proposals for TTG.

Anyone with an Ethereum address and WETH or $M may submit a proposal. The TTG is to be deployed with WETH as its internal currency (known as CASH in the mechanism), and therefore any Standard Proposal submission must pay a Proposal Fee in WETH, or at a later date M depending on the current CASH toggle setting, in addition to gas fees (see Governance Controlled TTG Parameters). A proposal that passes makes the Proposal Fee available to be returned to the proposer upon execution.

There are two primary structures of proposals that can be managed through the TTG: (1) configuring a registrar used by the protocol, i.e. adding and removing addresses from arbitrary lists/sets and setting arbitrary variables; (2) setting governance parameters. The M0 protocol looks to the registrar to use certain variables and sets of addresses in its processes.

In order to propose a change to a list, a user submits a Standard Proposal or a POWER Threshold Proposal calling the Add To List or Remove From List methods along with the address they wish to add or remove. There is also a method called Remove From And Add To List which facilitates swapping an address on a list. In order to add a new list to the TTG a proposer will create a proposal which uses Add To List and will specify a new list, which is created simultaneously to the proposal being executed. Since the M0 core protocol is immutable, any list added after deployment can only be used to manage periphery smart contracts and cannot impact core operations.

In order to propose a change to a configuration contract proposers call the Set Key method. In order to propose a configuration change at the registrar, proposers create a proposal for the governor to call the registrar's Set Key method. The update either results in the first setting or overwriting of a value for a given key (i.e. variable name).

Once a proposal passes, and assuming the requisite amount of time has passed, anyone can call the Execute method to execute the action on chain. They must pass the proposal arguments into the Execute method.

III.II.V Inflation Mechanics

Description of protocol inflation mechanics for TTG.

In each epoch the supply of POWER is inflated by 10% and the supply of ZERO is inflated by up to 5,000,000 tokens. This inflation is claimed pro rata by participating POWER holders, specifically by their delegate address. Any POWER that remains undistributed (or that could not be claimed because the holder did not fully participate in that epoch) is auctioned off to the highest bidder in a pay-as-bid Dutch auction (hereon “Dutch auction”).

When there are tokens to auction, the auction starts at the beginning of the Transfer Epoch and ends at the finish of the Transfer Epoch. Therefore if a user purchases POWER during an auction they will always be able to use those tokens to vote in the subsequent Voting Epoch. Each participating POWER holder during the Voting Epoch will also receive their pro rata (based on their percentage of total voting power) share of the 5,000,000 ZERO tokens.

Once a Standard Proposal has been submitted it can be voted on in the following Voting Epoch, unless it is a POWER Threshold Proposal or a ZERO Threshold Proposal, which can be voted on at any time. When a proposal becomes available for voting, it is mandatory for POWER holders to vote on it or else the owner of the POWER tokens will lose relative voting weight in the system. If a POWER owner’s delegate fails to vote on any proposal in an epoch, they will forfeit any POWER or ZERO inflation they would have otherwise been able to claim. POWER holders must vote on all Standard Proposals in the Voting Epoch; POWER Threshold Proposals and ZERO Threshold Proposals do not factor into POWER inflation dynamics. There is no inflation if an epoch only has POWER Threshold Proposals and / or ZERO Threshold Proposals, or no proposals at all.

III.II.VI Dutch Auction

Dutch Auction for POWER tokens.

Once the Transfer Epoch has begun the Dutch auction will begin simultaneously if any POWER holder failed to participate. The price per basis point (0.01%) of POWER token, calculated as a percentage of the total POWER supply, in the Dutch auction will start at 2^99 wei (the smallest unit of WETH) and decrement the exponent approximately every 3.6 hours. During the period between exponent decreases the price linearly declines. This means that after the first 3.6 hours of the auction the price will be 2^98 wei and linearly decrease to 2^97 wei over the following 3.6 hours.

In the implementation, bitwise shifting is used to achieve this effect. That is to say that at the midpoint between two exponents, the value is halfway between them. In order to purchase POWER in the Dutch auction, purchasers must call the Buy method.

The diagrams below illustrate the intended price curve of the Dutch auction in ETH over the 15 day period. The first demonstrates the entire price curve, while the second shows a smaller slice of the curve to demonstrate its semi-linearity.

Governance - 3
The price of 1 basis point of `POWER` in ETH at each 3.6-hour period (shown in days).
Governance - 4
A “slice” of the price curve between periods 40 and 50.

III.II.VII Delegation

Delegation of voting POWER for TTG.

Both POWER and ZERO owners may delegate their voting POWER to an arbitrary Ethereum address during the Transfer Epoch. Delegated POWER will retain its inflation in the owner address, while ZERO rewards will be claimable by the delegate address.

Owning ZERO does not earn the owner or the owner’s delegate inflation or rewards aside from $M generated by the protocol fees, and thus delegation does not have any impact on the owner outside of transferring voting power. ZERO does earn fees from Proposal Fees on failed Standard Proposals, the payments from POWER token auctions and a portion of Minter Rate and Penalty Rate charges to Minters.

Delegation snapshots are taken at the beginning of the epoch and close at the end of the epoch, and the values in the snapshots are subject to change until the epoch closes. Both POWER and ZERO follow the ERC20 standard and holders must call the Delegate method and provide the address they wish to delegate to. For holders that do not actively Delegate, the default delegation is set to the address which owns the tokens. Users do not need to alter their delegation in each epoch unless they wish to change delegates.

III.II.VIII ZERO Claiming of Residual Value

In exchange for ZERO holders' participation in protocol governance, they will receive the remainder of the protocol fees. The anticipated accumulation of tokens to the ZERO holders are Proposal Fee payments from rejected proposal submission, the payments from POWER token auctions, and a portion of Minter Rate and Penalty Rate charges to Minters (see Protocol Fees).

Proposal Fee and auction payments are collected in WETH or $M, depending on the status of the CASH toggle, and Minter Rate is collected in $M.

At any time a ZERO holder may call the Claim method in order to claim this accumulated value. The amount of claimable tokens are pro rata to each account's ZERO balance on the close of each epoch they are trying to claim for. They pass the array of epochs (or a starting epoch and ending epoch) they are seeking to claim for as arguments to the method.

III.III Governance Controlled TTG Parameters

List of Governance controlled TTG parameters.

CASH

The internal currency of the TTG. It is used to pay Proposal Fee and to purchase POWER in the Dutch auction. It can be toggled between WETH and $M.

Logic: This token must be permissionless and well distributed in order to prevent takeover of the TTG. It should also have sufficient value to its holders in order to deter spam and to increase the efficiency of the Dutch auction.

Proposal Fee

The amount paid in CASH to submit any proposal. It is alterable with a Standard Proposal.

Logic: This amount should be sufficiently high to deter spam, but not so high as to deter legitimate proposals.

POWER Threshold

The number of yes votes as a percentage of the total POWER supply required to pass proposals which require a POWER Threshold.

Logic: This percentage should be low enough to ensure that in an emergency situation, enough POWER holders can be collected to pass a proposal. It should be high enough that a malicious proposal cannot be passed instantly.

ZERO Threshold

The number of yes votes as a percentage of the total ZERO supply required to pass proposals which require a ZERO Threshold.

Logic: This percentage should be low enough that it is possible to call Reset if necessary. It should be high enough to ensure that Reset is not called without a very high level of consensus.

III.IV Immutable TTG Parameters

List of immutable TTG parameters.

Epoch Duration

The combined length of the Voting Epoch and the Transfer Epoch. Set to 30 days.

Logic: This amount of time should be short enough to permit for timely management of the protocol, but long enough for all POWER holders to both socialize and physically vote on Standard Proposals.

Voting Epoch Duration

The length of the Voting Epoch. Set to 15 days.

Logic: This amount of time should be long enough to permit POWER holders to physically exercise their vote.

Transfer Epoch Duration

The length of the Transfer Epoch. Set to 15 days.

Logic: This amount of time should be long enough to contain the Dutch auction and for any POWER holders that may wish to perform transfers or re-delegations to do so.

Auction Duration

The length of the Dutch auction for unclaimed POWER inflation. Set to 15 days and overlaps perfectly with the Transfer Epoch.

Logic: This amount of time should be long enough to cross all conceivable prices while still promoting efficient price discovery. Note that this length matches the Transfer Epoch, so that tokens acquired in the Transfer Epoch will be included in the checkpoint for the following Voting Epoch.

Dutch Auction Exponent

The exponent with a base of 2 that determines the starting auction price. Set to 99.

Logic: This number should produce a sufficiently high starting price per POWER token such that the market price of POWER in Cash is never above this price. It should not be so high as to cause the auction to exceed the Transfer Epoch before reaching 0 given the Dutch Auction Period Time setting.

Dutch Auction Periods

The number of equal periods that must fit into the Transfer Epoch. Set to 100.

Logic: This number of periods defines how often the Dutch auction will decrease the Dutch Auction Exponent. At the current setting the Dutch auction will decrement the Dutch Auction Exponent approximately every 3.6 hours.

III.V Immutable POWER Parameters

List of immutable POWER parameters.

POWER Initial Supply

The initial supply of POWER tokens before any inflation. Set to 1,000,000. Decimals are 0.

Logic: The initial supply of POWER should be sufficient to distribute to the initial holders in the network, but not so high as to cause a premature overflow error. The lack of decimals (and thus lack of subdivision of tokens) was also chosen for this reason. See the diagram under POWER Inflator for further analysis. Another factor to consider in this initial supply is the “dust level,” meaning the level at which in a Reset a ZERO holder would not receive any POWER tokens. For example, since new POWER (post-Reset) is based on existing ZERO balances, anyone who owns less than 1 / POWER Initial Supply of a ZERO token will get 0 POWER after a Reset.

POWER Inflator

The percentage inflation of the POWER supply per active epoch. This occurs only in epochs with a votable proposal, hence why they are referred to as active. If a POWER holder fails to fully participate in an epoch with at least one votable, their balance of POWER tokens will not decrease but their percentage of overall voting POWER will decrease by 1 / (1 + POWER Inflator). Set to 10%.

Logic: This percentage must sufficiently encourage POWER holder participation without occasional lapses in participation destabilizing the system. At 10% inflation, a POWER holder can expect to lose ~45% of their voting POWER if not participating for 6 epochs (note that epochs in our implementation correspond roughly to calendar months), ~70% of their voting POWER if not participating for 12 epochs, and ~90% of their voting POWER if not participating for 24 epochs. To a lesser extent this number should also take into account a realistic number of epochs with votable proposals to ensure that the operation of the protocol is not impacted by an overflow error. This would require either a Reset or a Hard Fork. The following diagrams demonstrate the intended impact of the POWER Inflator on an inactive participant, and a comparison of POWER Inflator and decimal setting as they impact overflow times assuming a 30-day total epoch time.

Governance - 5

Voting POWER as a percentage of starting voting POWER (y-axis) over missed epochs with a votable proposal (x-axis), using a 10% POWER Inflator

Governance - 6

Years to overflow assuming 12 epochs per year with votable proposals. Comparison of POWER Inflator (left column) and decimal choice for POWER token (top row). Assumes a starting POWER supply of 1,000,000.

III.VI Immutable ZERO Parameters

List of immutable ZERO parameters.

ZERO Initial Supply

The initial supply of the ZERO token before any rewards. Set to 1,000,000,000. Decimals are 6.

Logic: The initial supply of ZERO should be large enough to promote a high level of decentralization (as it pertains to the Reset method), and small enough to not break common integrations.

ZERO Reward

The maximum amount of ZERO given to POWER holders in a Voting Epoch. Each POWER holder is given their pro rata share of the reward if they fully participate and the tokens are claimed simultaneously to voting. Tokens which go unclaimed are never minted. No tokens are distributed in an epoch with no active proposals. Set to 5,000,000.

Logic: The reward amount should provide enough incentive to Standard Proposal voters to consistently vote while not destabilizing the protocol through unpredictable distribution. An additional consideration is the maximum level of decentralization that can be achieved given average gas fees – i.e. the reward must at least cover the average gas fee of participants and thus the average gas fee puts a practical boundary on the percentage of POWER one must own to justify participation.

See the diagrams below for further illustration of the potential impact of the reward on the ZERO supply over time.

Governance - 7
Maximum `ZERO` inflation per epoch over 240 epochs (20 years)
Governance - 8
Maximum `ZERO` supply over 240 epochs