Gaining Earner Approval
For your M0 Extension to accrue yield from the underlying $M
tokens it holds, its deployed contract address must be approved as an M0 Earner. This is a fundamental security and economic feature of the M0 protocol, ensuring that yield is distributed only to recognized and approved participants.
This approval is not automatic; it is granted through a formal, on-chain M0 Governance process. This guide will walk you through the necessary steps to prepare and submit a governance proposal to get your extension approved.
The Governance Mechanism
Earner approval is managed by the M0 Two-Token Governance (TTG) system. Specifically:
- The Source of Truth: The
TTGRegistrar
contract maintains an on-chain list of all approved earner addresses. This list is identified by thebytes32
key for the string"earners"
. - The Gatekeeper: The
StandardGovernor
contract is the only entity that can add an address to this list. - The Process: To get your address added, a
Standard Proposal
must be created, voted on byPOWER
token holders, and successfully executed.
The MToken
and M0 Extension contracts check this on-chain list whenever an earning-related function (like enableEarning()
or startEarning()
) is called.
The Process: Step-by-Step
Follow these steps to successfully gain earner approval for your extension.
Deploy Your Contract
You cannot submit a proposal for an address that doesn't exist yet. Before you can request earner approval, you must deploy your final, audited M0 Extension contract to the target network (e.g., Ethereum Mainnet, Arbitrum, etc.).
Once deployed, you will have the static contract address that needs to be whitelisted.
Prepare Your Proposal
A strong proposal is crucial for gaining the support of POWER
token holders. Gather the following information:
- Your Extension's Deployed Address: The address you want to add to the earner list.
- A Clear Title: e.g., "Add [Your Stablecoin Name] Extension to Earner List".
- A Detailed Description: This is your chance to make your case to the community. Include:
- A brief description of your project and the purpose of your stablecoin extension.
- A link to your project's website and social media.
- A link to the independent security audit report for your extension contract. This is extremely important for building trust.
- The specific benefits your extension brings to the M0 ecosystem.
Create the Governance Proposal
You can create a proposal using the M0 Governance Portal.
-
Connect Your Wallet: Navigate to the Create Proposal page and connect your wallet.
-
Define the Action to be Executed: This is the first step in the proposal creation process.
- Action Type: Select "Add actor"
- Role: Choose "Earner" from the dropdown
- Address: Enter the deployed address of your extension contract from Step 1
-
Name Your Proposal and Add Description:
- Title: Use the clear title you prepared (e.g., "Add [Your Stablecoin Name] Extension to Earner List")
- Description: Include your detailed description with:
- A brief description of your project and the purpose of your stablecoin extension
- A link to your project's website and social media
- A link to the independent security audit report for your extension contract
- The specific benefits your extension brings to the M0 ecosystem
-
Submit the Proposal: Submitting a
Standard Proposal
requires paying aproposalFee
in the system's activeCashToken
(e.g., WETH). This fee is refunded if your proposal is successfully executed. Refer to the governance page.
Socialize and Campaign for Your Proposal
A proposal does not pass on its own. You need to secure votes from POWER
token holders.
- Announce Your Proposal: Share your proposal to the M0 team.
- Engage with the Community: Be prepared to answer questions from
POWER
holders about your project's security, utility, and vision.
Voting and Execution
- Voting Epoch: Your proposal will become active for voting during the next Voting Epoch (an odd-numbered 15-day period).
- Passing Criteria: A
Standard Proposal
passes if it receives more "Yes" votes than "No" votes from participatingPOWER
holders. - Execution: If the proposal passes, it can be executed by anyone during the subsequent Transfer Epoch. Upon execution, your extension's address will be officially added to the earner list.
Enable Earning on Your Contract
Once your governance proposal has been successfully executed, you must perform one final action. Call the enableEarning()
function on your own deployed extension contract.
This function will check the TTGRegistrar
to confirm your address is now on the earners
list and will then activate the yield accrual mechanism within your contract.
Congratulations! Your M0 Extension is now a yield-bearing asset.