mMITOs
Safe Staking Vault with 1:1 Exchange Rate
Staking Vault that accepts tMITO and issues mMITOs tokens 1:1.


Basic Info
| Field | Value |
|---|---|
| Standard | ERC20 (not ERC4626) |
| Underlying Asset | tMITO |
| Token | mMITOs |
| Exchange Rate | Fixed 1:1 |
| Withdrawal Wait | 7 days |
| Slashing Exposure | None (principal safe) |
Mechanism
Difference from mMITOc
| mMITOc | mMITOs | |
|---|---|---|
| Standard | ERC4626 | ERC20 |
| Exchange Rate | Variable | Fixed 1:1 |
| Slashing | Principal loss | Principal safe |
| Underlying Asset | WMITO | tMITO |
Staking
function stake(address validator, uint256 amount) external- User specifies validator and tMITO amount
- Vault delegates tMITO to
TMITO_STAKING - Mints equal amount of mMITOs to user
stake(validatorA, 100 tMITO)
→ validatorStake[validatorA] += 100
→ totalStaked += 100
→ mint(user, 100 mMITOs)Reward Distribution
Reward flow:
ValidatorStaking → ValidatorRewardDistributor → gmMITO Vault → gmMITO to userUsers call gmMITO.userMint(validators[], recipient) to claim rewards.
mMITOs Vault also has internal reward tracking structure:
struct RewardState {
uint256 rewardPerShareStored;
mapping(address => uint256) userRewardPerSharePaid;
mapping(address => uint256) rewards;
}Reward calculation:
earned = balanceOf(user) × (rewardPerShareStored - userRewardPerSharePaid[user])Unstaking (requestUnstake)
function requestUnstake(address validator, uint256 amount) external- User specifies validator and amount
- mMITOs burned
- WithdrawalNFT minted
- Unstaking requested to
TMITO_STAKING
Claim Withdrawals
function claimWithdrawals(uint256[] tokenIds, address validator) external- Verify 7 days passed
- Burn WithdrawalNFT
- Transfer tMITO to user
State Variables
struct Storage {
uint32 withdrawalPeriod;
uint16 maxClaimsPerTx;
StakingState stakingState;
RewardState rewardState;
}
struct StakingState {
uint256 totalStaked; // Total staked tMITO
mapping(address validator => uint256) validatorStake; // Stake per validator
}Validator Selection
Users choose validators when staking:
- Check each validator's commission rate and uptime
- Validator performance affects rewards (principal unaffected)
Integrated Contracts
| Contract | Purpose |
|---|---|
TMITO | Underlying asset (tMITO) |
WMITO | Used for reward claims |
GM_MITO | Reward token (gmMITO) |
VALIDATOR_MANAGER | Validator list |
TMITO_STAKING | Actual staking execution |
REWARD_DISTRIBUTOR | Reward distribution |
WITHDRAWAL_NFT | Withdrawal NFT |