WrappedM (WM), also known by its ticker symbol wM, is an ERC-20 token that serves as a non-rebasing, wrapped representation of the M0 protocol's native yield-bearing asset, $M. Introduced by the M0 Foundation, its core function is to bridge the value and yield-generation capabilities of the $M token to the broader decentralized finance (DeFi) ecosystem, particularly on Ethereum and other EVM-compatible blockchains. WM maintains a stable 1:1 exchange rate with the underlying $M token, while converting the natively accrued yield into a separately claimable amount, thus ensuring compatibility with DeFi protocols that require static-balance assets. [1] [2]
WrappedM was officially announced on August 16, 2024, as a collaborative effort between the M0 Foundation and M0 Labs. [1] Its development was a direct response to the compatibility challenges posed by M0's native $M token within the DeFi landscape. The native $M is a "rebasing" token, meaning its balance in a user's wallet automatically increases as yield is earned. While this provides a seamless yield experience for holders, this dynamic balance mechanism is incompatible with many standard DeFi protocols, such as automated market makers (AMMs) and lending platforms, which are built to operate with tokens that have a fixed, predictable balance. [2]
The WM wrapper was designed to solve this issue by offering a "stable balance" alternative. It also aimed to improve upon existing stablecoin models. Unlike non-yield-bearing stablecoins such as USDT or USDC, WM allows holders to access the on-chain yield generated by the M0 protocol. It also differentiates itself from other yield-bearing wrapped tokens (like sDAI) that accrue value through a constantly changing exchange rate. Such models can create accounting complexities and price distortions within DeFi protocols. WM avoids this by strictly maintaining a 1:1 exchange rate with $M, where 1 WM is always redeemable for 1 $M. [1]
This design enables WM to serve as a key component of M0's B2B2C (business-to-business-to-consumer) distribution strategy. By abstracting the yield from the balance, DeFi protocols and other partners can integrate WM as a stable-priced asset and programmatically manage the distribution of the accrued yield to their end-users, such as liquidity providers or platform stakers. [1]
The WM token's functionality is defined by its smart contract, which manages the wrapping, unwrapping, and yield management processes. The on-chain name is "M (Wrapped) by M0" and it utilizes 6 decimals. [3]
The conversion between the native $M token and WM is a straightforward process managed by the WrappedMToken smart contract. [3]
To convert $M into WM, a user interacts with the wrap(recipient, amount) function. The process involves two steps: first, the user must grant an ERC-20 approval to the WM contract, allowing it to spend the desired amount of their $M tokens. Second, upon calling the wrap function, the contract transfers the specified amount of $M from the user's wallet into its own reserve and mints an equivalent number of WM tokens to the designated recipient's address. The contract also supports gasless approvals through wrapWithPermit functions, which utilize EIP-2612 signatures. [3]
To convert WM back into the native $M token, a user calls the unwrap(recipient, amount) function. This action burns the specified amount of WM tokens from the user's balance, permanently removing them from circulation. In response, the smart contract releases an equivalent amount of the underlying $M token from its reserves and transfers it to the recipient's M0 wallet address. [3]
The yield mechanism for WM is a core feature that separates a holder's principal from their earnings, a process managed through a series of smart contract functions and state conditions.
The yield itself originates from the M0 protocol's native $M token. M0 governance, through a body known as the "Two Token Governor" (TTG), maintains a global "Earner List" of addresses eligible to earn yield. The yield rate, or "Earner Rate," is also set by the TTG and was designed to track the US Federal Funds rate, reflecting the composition of the collateral backing $M. At its inception in August 2024, this rate was set at 5%. For an address on the Earner List to begin earning, it must call the startEarningFor() function on the M0 contract, after which its $M balance will begin to rebase upward. [1]
WM abstracts this complex rebasing mechanism. A WM holder's balance remains static, while the yield their underlying principal generates accrues within the contract. For yield to be generated, the WM contract must first be set to an EarningEnabled state. Individual WM holders must also be approved as "earners" by a designated earnerManager contract and then opt-in by calling startEarningFor(account). The accumulated yield does not automatically appear in the user's wallet; it must be explicitly claimed. This is done by calling the claimFor(account) function, which transfers the earned M tokens to a pre-set recipient address (by default, the holder's own address). This function is automatically triggered upon transferring WM and can also be called manually at any time. The amount of accrued, claimable yield can be checked using the accruedYieldOf(account) view function. [3]
A key feature for integrators is the ability for anyone to call startEarningFor() or claim() on behalf of a smart contract address on the Earner List, such as a liquidity pool. This permissionless activation enables DeFi protocols to manage yield accrual without requiring their users to perform extra steps. [1]
WM is designed to maintain a strict 1:1 value peg with the underlying $M token. This is enforced by the smart contract's wrapping and unwrapping functions, which always mint or burn tokens at a 1:1 ratio. [1]
To guarantee that the contract can always meet its obligations, it is built around a "solvency invariant." This principle ensures that the total balance of $M held by the WM contract is always greater than or equal to the total supply of WM in circulation plus all accrued yield owed to holders. This mathematical guarantee, expressed as M Balance(wM contract) ≥ totalNonEarningSupply + projectedEarningSupply, ensures that every WM token and its associated yield can be redeemed for the underlying $M at any time, protecting the system from insolvency. [2]
The Solidity source code for the WrappedMToken is publicly available for review in the M0-Foundation's GitHub repository. The contract architecture includes several key state variables and administrative roles critical to its operation, including:
mToken: The contract address of the underlying $M token.registrar: The address of the M0 Registrar contract, used for configuration.earnerManager: The address of the contract that manages yield-earning eligibility.migrationAdmin: A privileged address with the authority to perform contract upgrades.excessDestination: The address designated to receive excess M tokens claimed from the contract.To track user data efficiently, the contract employs a custom Account struct that stores a user's balance, earning status, and principal amount. The contract also emits a variety of events like Claimed, StartedEarning, and StoppedEarning to provide on-chain transparency for user actions. [3]
The tokenomics of WM are directly linked to its function as a wrapped token, with its supply determined by user activity rather than a fixed issuance schedule.
totalSupply (all WM in circulation), totalEarningSupply (WM held by yield-earning accounts), and totalNonEarningSupply (WM held by non-earning accounts). [4] [3]claimExcess() function and directed to a designated protocol address (excessDestination). [2]The primary utility of WM is to act as a bridge, enabling cross-chain compatibility and unlocking the value of the M0 ecosystem for the wider world of DeFi. [4]
The governance of the WM token is integrated into the broader M0 protocol's decentralized governance framework. Key decisions regarding the token's parameters and features are managed by the M0 DAO, also referred to as the "Two Token Governor" (TTG). [4] [1]
The TTG's responsibilities related to WM include:
In addition to the main DAO, WM introduces a more flexible administrative model. It allows for "trusted admins" who can manage the earner status of tokens for specific protocol integrations. This delegated administration streamlines partnerships by enabling certain adjustments without requiring a full governance vote. The smart contract also defines specific administrative roles, such as the earnerManager and migrationAdmin, which control key functions related to yield eligibility and contract upgrades. [2] [3]
Security for the WM token is addressed through a combination of contract design, external audits, and operational protocols.
WM was designed explicitly to foster integrations with a wide range of DeFi protocols. The documentation indicates that WM has been integrated with several key projects, including major DEXs and lending platforms, and that partnerships have been established with cross-chain bridges and oracle services to ensure smooth operation. While specific partner names are not detailed in all sources, the initial research paper highlighted Uniswap v3 as a prime example of a target integration, demonstrating how its yield management features could be used to reward liquidity providers. [4] [1]